From 25f66e6490fdb74b80a4587d2bdd601c05984dc2 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Sun, 19 Jul 2020 05:03:47 -0400 Subject: [PATCH 01/94] pipeline refactoring --- driver/opae/scope.cpp | 4 +- driver/rtlsim/Makefile | 7 +- hw/rtl/VX_alu_unit.v | 180 ++---- hw/rtl/VX_back_end.v | 171 ------ hw/rtl/VX_branch_unit.v | 82 +++ hw/rtl/VX_config.vh | 6 + hw/rtl/VX_core.v | 24 +- hw/rtl/VX_csr_arb.v | 71 +-- hw/rtl/VX_csr_data.v | 5 +- hw/rtl/VX_csr_io_arb.v | 3 +- hw/rtl/VX_csr_pipe.v | 99 ++-- hw/rtl/VX_dcache_arb.v | 58 +- hw/rtl/VX_decode.v | 528 ++++++++---------- hw/rtl/VX_define.vh | 309 ++++++++-- hw/rtl/VX_exec_unit.v | 147 ----- hw/rtl/VX_execute.v | 140 +++++ hw/rtl/VX_fetch.v | 129 ++--- hw/rtl/VX_front_end.v | 116 ---- hw/rtl/VX_gpr_mux.v | 88 +++ hw/rtl/VX_gpr_ram.v | 96 ++-- hw/rtl/VX_gpr_stage.v | 342 +++++------- hw/rtl/VX_gpr_wrapper.v | 60 -- hw/rtl/VX_gpu_inst.v | 88 --- hw/rtl/VX_gpu_unit.v | 79 +++ hw/rtl/VX_icache_stage.v | 46 +- hw/rtl/VX_inst_multiplex.v | 90 --- hw/rtl/VX_issue.v | 87 +++ hw/rtl/VX_lsu_unit.v | 121 ++-- hw/rtl/VX_mem_unit.v | 24 +- hw/rtl/VX_mul_unit.v | 123 ++++ hw/rtl/VX_pipeline.v | 146 ++--- hw/rtl/VX_scheduler.v | 83 --- hw/rtl/VX_scope.vh | 28 +- hw/rtl/VX_warp.v | 4 +- hw/rtl/VX_warp_sched.v | 289 ++++------ hw/rtl/VX_writeback.v | 147 +++-- hw/rtl/cache/VX_bank.v | 20 +- hw/rtl/cache/VX_cache.v | 4 +- hw/rtl/cache/VX_cache_core_rsp_merge.v | 58 +- hw/rtl/cache/VX_snp_forwarder.v | 2 +- hw/rtl/cache/VX_tag_data_access.v | 4 +- hw/rtl/interfaces/VX_alu_req_if.v | 24 + hw/rtl/interfaces/VX_backend_req_if.v | 40 -- hw/rtl/interfaces/VX_branch_rsp_if.v | 15 - hw/rtl/interfaces/VX_csr_io_req_if.v | 10 +- hw/rtl/interfaces/VX_csr_req_if.v | 21 +- hw/rtl/interfaces/VX_decode_if.v | 33 ++ hw/rtl/interfaces/VX_exec_unit_req_if.v | 47 -- hw/rtl/interfaces/VX_execute_if.v | 33 ++ hw/rtl/interfaces/VX_gpr_read_if.v | 19 - hw/rtl/interfaces/VX_gpu_inst_req_if.v | 23 - hw/rtl/interfaces/VX_gpu_req_if.v | 21 + .../{VX_inst_meta_if.v => VX_ifetch_req_if.v} | 8 +- hw/rtl/interfaces/VX_ifetch_rsp_if.v | 16 + hw/rtl/interfaces/VX_jal_rsp_if.v | 15 - hw/rtl/interfaces/VX_join_if.v | 1 - hw/rtl/interfaces/VX_lsu_req_if.v | 14 +- hw/rtl/interfaces/VX_mul_req_if.v | 24 + hw/rtl/interfaces/VX_warp_ctl_if.v | 13 +- hw/rtl/interfaces/VX_wb_if.v | 7 +- hw/rtl/libs/VX_countones.v | 4 +- hw/rtl/libs/VX_divide.v | 26 +- hw/rtl/libs/VX_generic_register.v | 27 +- ...{VX_indexable_queue.v => VX_index_queue.v} | 2 +- hw/rtl/libs/VX_matrix_arbiter.v | 2 +- ..._encoder_onehot.v => VX_onehot_encooder.v} | 2 +- hw/simulate/Makefile | 12 +- hw/simulate/simulator.cpp | 23 +- hw/simulate/simulator.h | 1 + hw/simulate/testbench.cpp | 22 +- hw/unit_tests/VX_divide_tb.v | 8 +- 71 files changed, 2242 insertions(+), 2379 deletions(-) delete mode 100644 hw/rtl/VX_back_end.v create mode 100644 hw/rtl/VX_branch_unit.v delete mode 100644 hw/rtl/VX_exec_unit.v create mode 100644 hw/rtl/VX_execute.v delete mode 100644 hw/rtl/VX_front_end.v create mode 100644 hw/rtl/VX_gpr_mux.v delete mode 100644 hw/rtl/VX_gpr_wrapper.v delete mode 100644 hw/rtl/VX_gpu_inst.v create mode 100644 hw/rtl/VX_gpu_unit.v delete mode 100644 hw/rtl/VX_inst_multiplex.v create mode 100644 hw/rtl/VX_issue.v create mode 100644 hw/rtl/VX_mul_unit.v delete mode 100644 hw/rtl/VX_scheduler.v create mode 100644 hw/rtl/interfaces/VX_alu_req_if.v delete mode 100644 hw/rtl/interfaces/VX_backend_req_if.v delete mode 100644 hw/rtl/interfaces/VX_branch_rsp_if.v create mode 100644 hw/rtl/interfaces/VX_decode_if.v delete mode 100644 hw/rtl/interfaces/VX_exec_unit_req_if.v create mode 100644 hw/rtl/interfaces/VX_execute_if.v delete mode 100644 hw/rtl/interfaces/VX_gpr_read_if.v delete mode 100644 hw/rtl/interfaces/VX_gpu_inst_req_if.v create mode 100644 hw/rtl/interfaces/VX_gpu_req_if.v rename hw/rtl/interfaces/{VX_inst_meta_if.v => VX_ifetch_req_if.v} (57%) create mode 100644 hw/rtl/interfaces/VX_ifetch_rsp_if.v delete mode 100644 hw/rtl/interfaces/VX_jal_rsp_if.v create mode 100644 hw/rtl/interfaces/VX_mul_req_if.v rename hw/rtl/libs/{VX_indexable_queue.v => VX_index_queue.v} (98%) rename hw/rtl/libs/{VX_encoder_onehot.v => VX_onehot_encooder.v} (94%) diff --git a/driver/opae/scope.cpp b/driver/opae/scope.cpp index 6053d353..0bbe4b10 100644 --- a/driver/opae/scope.cpp +++ b/driver/opae/scope.cpp @@ -116,9 +116,9 @@ static const scope_signal_t scope_signals[] = { { NUM_THREADS, "writeback_valid" }, { 1, "schedule_delay" }, - { 1, "memory_delay" }, + { 1, "mem_delay" }, { 1, "exec_delay" }, - { 1, "gpr_stage_delay" }, + { 1, "gpr_delay" }, { 1, "busy" }, { 1, "bank_valid_st0" }, diff --git a/driver/rtlsim/Makefile b/driver/rtlsim/Makefile index d0890c4c..38fe3d60 100644 --- a/driver/rtlsim/Makefile +++ b/driver/rtlsim/Makefile @@ -13,14 +13,15 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_DRAM DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE -#DBG_FLAGS += $(DBG_PRINT_FLAGS) +DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO #CONFIGS += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 #CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=4 -DL2_ENABLE=1 -#CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=2 +#CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=2 -DL2_ENABLE=0 +CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=1 -#DEBUG=1 +DEBUG=1 #AFU=1 CFLAGS += -fPIC diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index d1b30016..51cc7c58 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -1,132 +1,66 @@ `include "VX_define.vh" -module VX_alu_unit ( - input wire clk, - input wire reset, - input wire [31:0] src_a, - input wire [31:0] src_b, - input wire src_rs2, - input wire [31:0] itype_immed, - input wire [19:0] upper_immed, - input wire [4:0] alu_op, - input wire [31:0] curr_PC, - output reg [31:0] alu_result, - output reg alu_stall -); - wire[31:0] div_result_unsigned; - wire[31:0] div_result_signed; - - wire[31:0] rem_result_unsigned; - wire[31:0] rem_result_signed; - - wire[63:0] mul_result; - - wire[31:0] alu_in1 = src_a; - wire[31:0] alu_in2 = (src_rs2 == `RS2_IMMED) ? itype_immed : src_b; - - wire[31:0] upper_immed_s = {upper_immed, {12{1'b0}}}; +module VX_alu_unit #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, - reg [7:0] inst_delay; - reg [7:0] curr_inst_delay; - - always @(*) begin - case (alu_op) - `ALU_DIV, - `ALU_DIVU, - `ALU_REM, - `ALU_REMU: inst_delay = `DIV_LATENCY; - `ALU_MUL, - `ALU_MULH, - `ALU_MULHSU, - `ALU_MULHU: inst_delay = `MUL_LATENCY; - default: inst_delay = 0; - endcase + // Inputs + VX_alu_req_if alu_req_if, + + // Outputs + VX_wb_if alu_wb_if +); + wire [`NUM_THREADS-1:0][31:0] alu_result; + wire [`NUM_THREADS-1:0][32:0] sub_result; + wire [`NUM_THREADS-1:0][32:0] shift_result; + `UNUSED_VAR (shift_result); + + wire [`ALU_BITS-1:0] alu_op = alu_req_if.alu_op; + wire [`NUM_THREADS-1:0][31:0] alu_in1 = alu_req_if.rs1_data; + wire [`NUM_THREADS-1:0][31:0] alu_in2 = alu_req_if.rs2_data; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + + wire [32:0] sub_in1 = {(alu_op != `ALU_SLTU) & alu_in1[i][31], alu_in1[i]}; + wire [32:0] sub_in2 = {(alu_op != `ALU_SLTU) & alu_in2[i][31], alu_in2[i]}; + assign sub_result[i] = $signed(sub_in1) - $signed(sub_in2); + + wire [32:0] shift_in1 = {(alu_op == `ALU_SRA) & alu_in1[i][31], alu_in1[i]}; + assign shift_result[i] = $signed(shift_in1) >>> alu_in2[i][4:0]; + + always @(*) begin + case (alu_op) + `ALU_SUB: alu_result[i] = sub_result[i][31:0]; + `ALU_SLL: alu_result[i] = alu_in1[i] << alu_in2[i][4:0]; + `ALU_SLT, + `ALU_SLTU: alu_result[i] = 32'(sub_result[i][32]); + `ALU_XOR: alu_result[i] = alu_in1[i] ^ alu_in2[i]; + `ALU_SRL, + `ALU_SRA: alu_result[i] = shift_result[i][31:0]; + `ALU_OR: alu_result[i] = alu_in1[i] | alu_in2[i]; + `ALU_AND: alu_result[i] = alu_in1[i] & alu_in2[i]; + default: alu_result[i] = alu_in1[i] + alu_in2[i]; // ADD, LUI, AUIPC + endcase + end end - wire inst_stalled = (curr_inst_delay != inst_delay); + wire stall = ~alu_wb_if.ready && (| alu_wb_if.valid); - always @(posedge clk) begin - if (reset) begin - curr_inst_delay <= 0; - end else begin - curr_inst_delay <= inst_stalled ? (curr_inst_delay + 1) : 0; - end - end + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), + ) alu_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.rd, alu_req_if.wb, alu_result}), + .out ({alu_wb_if.valid, alu_wb_if.warp_num, alu_wb_if.curr_PC, alu_wb_if.rd, alu_wb_if.wb, alu_wb_if.data}) + ); - assign alu_stall = inst_stalled; - - always @(*) begin - case (alu_op) - `ALU_ADD: alu_result = $signed(alu_in1) + $signed(alu_in2); - `ALU_SUB: alu_result = $signed(alu_in1) - $signed(alu_in2); - `ALU_SLLA: alu_result = alu_in1 << alu_in2[4:0]; - `ALU_SLT: alu_result = ($signed(alu_in1) < $signed(alu_in2)) ? 32'h1 : 32'h0; - `ALU_SLTU: alu_result = alu_in1 < alu_in2 ? 32'h1 : 32'h0; - `ALU_XOR: alu_result = alu_in1 ^ alu_in2; - `ALU_SRL: alu_result = alu_in1 >> alu_in2[4:0]; - `ALU_SRA: alu_result = $signed(alu_in1) >>> alu_in2[4:0]; - `ALU_OR: alu_result = alu_in1 | alu_in2; - `ALU_AND: alu_result = alu_in2 & alu_in1; - `ALU_SUBU: alu_result = (alu_in1 >= alu_in2) ? 32'h0 : 32'hffffffff; - `ALU_LUI: alu_result = upper_immed_s; - `ALU_AUIPC: alu_result = $signed(curr_PC) + $signed(upper_immed_s); - `ALU_MUL: alu_result = mul_result[31:0]; - `ALU_MULH: alu_result = mul_result[63:32]; - `ALU_MULHSU: alu_result = mul_result[63:32]; - `ALU_MULHU: alu_result = mul_result[63:32]; - `ALU_DIV: alu_result = (alu_in2 == 0) ? 32'hffffffff : div_result_signed; - `ALU_DIVU: alu_result = (alu_in2 == 0) ? 32'hffffffff : div_result_unsigned; - `ALU_REM: alu_result = (alu_in2 == 0) ? alu_in1 : rem_result_signed; - `ALU_REMU: alu_result = (alu_in2 == 0) ? alu_in1 : rem_result_unsigned; - default: alu_result = 32'h0; - endcase - end - - VX_divide #( - .WIDTHN(32), - .WIDTHD(32), - .NSIGNED(0), - .DSIGNED(0), - .PIPELINE(`DIV_LATENCY) - ) udiv ( - .clk(clk), - .reset(reset), - .numer(alu_in1), - .denom(alu_in2), - .quotient(div_result_unsigned), - .remainder(rem_result_unsigned) - ); - - VX_divide #( - .WIDTHN(32), - .WIDTHD(32), - .NSIGNED(1), - .DSIGNED(1), - .PIPELINE(`DIV_LATENCY) - ) sdiv ( - .clk(clk), - .reset(reset), - .numer(alu_in1), - .denom(alu_in2), - .quotient(div_result_signed), - .remainder(rem_result_signed) - ); - - wire [32:0] mul_dataa = {(alu_op == `ALU_MULHU) ? 1'b0 : alu_in1[31], alu_in1}; - wire [32:0] mul_datab = {(alu_op == `ALU_MULHU || alu_op == `ALU_MULHSU) ? 1'b0 : alu_in2[31], alu_in2}; - - VX_mult #( - .WIDTHA(33), - .WIDTHB(33), - .WIDTHP(64), - .SIGNED(1), - .PIPELINE(`MUL_LATENCY) - ) multiplier ( - .clk(clk), - .reset(reset), - .dataa(mul_dataa), - .datab(mul_datab), - .result(mul_result) - ); + assign alu_req_if.ready = ~stall; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_back_end.v b/hw/rtl/VX_back_end.v deleted file mode 100644 index 3da014ce..00000000 --- a/hw/rtl/VX_back_end.v +++ /dev/null @@ -1,171 +0,0 @@ -`include "VX_define.vh" - -module VX_back_end #( - parameter CORE_ID = 0 -) ( - `SCOPE_SIGNALS_LSU_IO - `SCOPE_SIGNALS_BE_IO - - input wire clk, - input wire reset, - - VX_csr_io_req_if csr_io_req_if, - VX_csr_io_rsp_if csr_io_rsp_if, - - input wire schedule_delay, - - VX_cache_core_req_if dcache_req_if, - VX_cache_core_rsp_if dcache_rsp_if, - VX_jal_rsp_if jal_rsp_if, - VX_branch_rsp_if branch_rsp_if, - - VX_backend_req_if bckE_req_if, - VX_wb_if writeback_if, - - VX_warp_ctl_if warp_ctl_if, - - output wire mem_delay, - output wire exec_delay, - output wire gpr_stage_delay, - - output wire ebreak -); - - wire no_slot_mem; - wire no_slot_exec; - - - // LSU input + output - VX_lsu_req_if lsu_req_if(); - VX_wb_if mem_wb_if(); - - // Exec unit input + output - VX_exec_unit_req_if exec_unit_req_if(); - VX_wb_if inst_exec_wb_if(); - - // GPU unit input - VX_gpu_inst_req_if gpu_inst_req_if(); - - // CSR unit inputs - VX_csr_req_if csr_req_if(); - VX_wb_if csr_wb_if(); - wire no_slot_csr; - wire stall_gpr_csr; - - VX_gpr_stage gpr_stage ( - .clk (clk), - .reset (reset), - .schedule_delay (schedule_delay), - .writeback_if (writeback_if), - .bckE_req_if (bckE_req_if), - // New - .exec_unit_req_if (exec_unit_req_if), - .lsu_req_if (lsu_req_if), - .gpu_inst_req_if (gpu_inst_req_if), - .csr_req_if (csr_req_if), - .stall_gpr_csr (stall_gpr_csr), - // End new - .memory_delay (mem_delay), - .exec_delay (exec_delay), - .delay (gpr_stage_delay) - ); - - assign ebreak = exec_unit_req_if.is_etype && (| exec_unit_req_if.valid); - - VX_lsu_unit #( - .CORE_ID(CORE_ID) - ) lsu_unit ( - `SCOPE_SIGNALS_LSU_BIND - - .clk (clk), - .reset (reset), - .lsu_req_if (lsu_req_if), - .mem_wb_if (mem_wb_if), - .dcache_req_if (dcache_req_if), - .dcache_rsp_if (dcache_rsp_if), - .delay (mem_delay), - .no_slot_mem (no_slot_mem) - ); - - VX_exec_unit exec_unit ( - .clk (clk), - .reset (reset), - .exec_unit_req_if(exec_unit_req_if), - .inst_exec_wb_if(inst_exec_wb_if), - .jal_rsp_if (jal_rsp_if), - .branch_rsp_if (branch_rsp_if), - .delay (exec_delay), - .no_slot_exec (no_slot_exec) - ); - - VX_gpu_inst gpu_inst ( - .gpu_inst_req_if(gpu_inst_req_if), - .warp_ctl_if (warp_ctl_if) - ); - - VX_csr_req_if issued_csr_req_if(); - - VX_wb_if csr_pipe_rsp_if(); - - VX_csr_arb csr_arb ( - .clk (clk), - .reset (reset), - - .csr_pipe_stall (stall_gpr_csr), - - .csr_core_req_if (csr_req_if), - .csr_io_req_if (csr_io_req_if), - .issued_csr_req_if(issued_csr_req_if), - - .csr_pipe_rsp_if (csr_pipe_rsp_if), - .csr_wb_if (csr_wb_if), - .csr_io_rsp_if (csr_io_rsp_if) - ); - - VX_csr_pipe #( - .CORE_ID(CORE_ID) - ) csr_pipe ( - .clk (clk), - .reset (reset), - .no_slot_csr (no_slot_csr), - .csr_req_if (issued_csr_req_if), - .writeback_if (writeback_if), - .csr_wb_if (csr_pipe_rsp_if), - .stall_gpr_csr (stall_gpr_csr) - ); - - VX_writeback writeback ( - .clk (clk), - .reset (reset), - .mem_wb_if (mem_wb_if), - .inst_exec_wb_if(inst_exec_wb_if), - .csr_wb_if (csr_wb_if), - - .writeback_if (writeback_if), - .no_slot_mem (no_slot_mem), - .no_slot_exec (no_slot_exec), - .no_slot_csr (no_slot_csr) - ); - - `SCOPE_ASSIGN(scope_decode_valid, bckE_req_if.valid); - `SCOPE_ASSIGN(scope_decode_warp_num, bckE_req_if.warp_num); - `SCOPE_ASSIGN(scope_decode_curr_PC, bckE_req_if.curr_PC); - `SCOPE_ASSIGN(scope_decode_is_jal, bckE_req_if.is_jal); - `SCOPE_ASSIGN(scope_decode_rs1, bckE_req_if.rs1); - `SCOPE_ASSIGN(scope_decode_rs2, bckE_req_if.rs2); - - `SCOPE_ASSIGN(scope_execute_valid, exec_unit_req_if.valid); - `SCOPE_ASSIGN(scope_execute_warp_num, exec_unit_req_if.warp_num); - `SCOPE_ASSIGN(scope_execute_curr_PC, exec_unit_req_if.curr_PC); - `SCOPE_ASSIGN(scope_execute_rd, exec_unit_req_if.rd); - `SCOPE_ASSIGN(scope_execute_a, exec_unit_req_if.a_reg_data); - `SCOPE_ASSIGN(scope_execute_b, exec_unit_req_if.b_reg_data); - - `SCOPE_ASSIGN(scope_writeback_valid, writeback_if.valid); - `SCOPE_ASSIGN(scope_writeback_warp_num, writeback_if.warp_num); - `SCOPE_ASSIGN(scope_writeback_curr_PC, writeback_if.curr_PC); - `SCOPE_ASSIGN(scope_writeback_wb, writeback_if.wb); - `SCOPE_ASSIGN(scope_writeback_rd, writeback_if.rd); - `SCOPE_ASSIGN(scope_writeback_data, writeback_if.data); - -endmodule diff --git a/hw/rtl/VX_branch_unit.v b/hw/rtl/VX_branch_unit.v new file mode 100644 index 00000000..d1bd8eca --- /dev/null +++ b/hw/rtl/VX_branch_unit.v @@ -0,0 +1,82 @@ +`include "VX_define.vh" + +module VX_branch_unit #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + // Inputs + VX_branch_req_if branch_req_if, + + // Outputs + VX_branch_rsp_if branch_rsp_if, + VX_wb_if branch_wb_if +); + + wire [`NT_BITS-1:0] br_result_index; + + VX_priority_encoder #( + .N(`NUM_THREADS) + ) choose_alu_result ( + .data_in (alu_req_if.valid), + .data_out (br_result_index), + `UNUSED_PIN (valid_out) + ); + + wire [`BR_BITS-1:0] br_op = branch_req_if.br_op; + wire [31:0] rs1_data = branch_req_if.rs1_data[br_result_index]; + wire [31:0] rs2_data = branch_req_if.rs2_data[br_result_index]; + + wire [32:0] sub_in1 = {(br_op != `BR_LTU) & (br_op != `BR_GEU) & rs1_data[31], rs1_data}; + wire [32:0] sub_in2 = {(br_op != `BR_LTU) & (br_op != `BR_GEU) & rs2_data[31], rs2_data}; + wire [32:0] sub_res = $signed(sub_in1) - $signed(sub_in2); + + wire sub_sign = sub_res[32]; + wire sub_nzero = (| sub_res[31:0]); + + reg br_taken; + always @(*) begin + case (br_op) + `BR_NE: br_taken = sub_nzero; + `BR_EQ: br_taken = ~sub_nzero; + `BR_LT, + `BR_LTU: br_taken = sub_sign; + `BR_GE, + `BR_GEU: br_taken = ~sub_sign; + default: br_taken = 1'b1; + endcase + end + + wire in_valid = (| branch_req_if.valid); + + wire [31:0] base_addr = (br_op == `BR_JALR) ? rs1_data : branch_req_if.curr_PC; + wire [31:0] br_dest = $signed(base_addr) + $signed(branch_req_if.offset); + + wire stall = (~branch_wb_if.ready && (| branch_wb_if.valid)); + + VX_generic_register #( + .N(1 + `NW_BITS + 1 + 32) + ) rsp_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({in_valid, branch_req_if.warp_num, br_taken, br_dest}), + .out ({branch_rsp_if.valid, branch_rsp_if.warp_num, branch_rsp_if.taken, branch_rsp_if.dest}) + ); + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), + ) wb_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({branch_req_if.valid, branch_req_if.warp_num, branch_req_if.curr_PC, branch_req_if.rd, branch_req_if.wb, {`NUM_THREADS{branch_req_if.next_PC}}}), + .out ({branch_wb_if.valid, branch_wb_if.warp_num, branch_wb_if.curr_PC, branch_wb_if.rd, branch_wb_if.wb, branch_wb_if.data}) + ); + + assign branch_req_if.ready = ~stall; + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index 6a5f7386..ef4b9e78 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -59,6 +59,10 @@ `define L3_ENABLE (`NUM_CLUSTERS > 1) `endif +`ifndef EXT_M_ENABLE +`define EXT_M_ENABLE 1 +`endif + // Configuration Values ======================================================= `define VENDOR_ID 0 @@ -85,6 +89,8 @@ `define CSR_INSTR_L 12'hC02 `define CSR_INSTR_H 12'hC82 +`define CSR_MISA 12'h301 + // Dcache Configurable Knobs ================================================== // Size of cache in bytes diff --git a/hw/rtl/VX_core.v b/hw/rtl/VX_core.v index c437c398..9695526b 100644 --- a/hw/rtl/VX_core.v +++ b/hw/rtl/VX_core.v @@ -250,7 +250,7 @@ module VX_core #( assign dcache_snp_req_if.addr = snp_req_addr; assign dcache_snp_req_if.invalidate = snp_req_invalidate; assign dcache_snp_req_if.tag = snp_req_tag; - assign snp_req_ready = dcache_snp_req_if.ready; + assign snp_req_ready = dcache_snp_req_if.ready; assign snp_rsp_valid = dcache_snp_rsp_if.valid; assign snp_rsp_tag = dcache_snp_rsp_if.tag; @@ -283,18 +283,20 @@ module VX_core #( .icache_dram_rsp_if (icache_dram_rsp_if) ); - // select io address + // select io bus wire is_io_addr = ({core_dcache_req_if.addr[0], 2'b0} >= `IO_BUS_BASE_ADDR); - wire io_select = (| core_dcache_req_if.valid) ? is_io_addr : 0; + wire io_req_select = (| core_dcache_req_if.valid) ? is_io_addr : 0; + wire io_rsp_select = (| arb_io_rsp_if.valid); - VX_dcache_arb dcache_io_arb ( - .req_select (io_select), - .in_core_req_if (core_dcache_req_if), - .out0_core_req_if (arb_dcache_req_if), - .out1_core_req_if (arb_io_req_if), - .in0_core_rsp_if (arb_dcache_rsp_if), - .in1_core_rsp_if (arb_io_rsp_if), - .out_core_rsp_if (core_dcache_rsp_if) + VX_dcache_arb dcache_io_arb ( + .core_req_in_if (core_dcache_req_if), + .core_req_out0_if (arb_dcache_req_if), + .core_req_out1_if (arb_io_req_if), + .core_rsp_in0_if (arb_dcache_rsp_if), + .core_rsp_in1_if (arb_io_rsp_if), + .core_rsp_out_if (core_dcache_rsp_if), + .select_req (io_req_select), + .select_rsp (io_rsp_select) ); endmodule diff --git a/hw/rtl/VX_csr_arb.v b/hw/rtl/VX_csr_arb.v index 58327ee3..2db5c7a8 100644 --- a/hw/rtl/VX_csr_arb.v +++ b/hw/rtl/VX_csr_arb.v @@ -1,51 +1,54 @@ `include "VX_define.vh" module VX_csr_arb ( - input wire clk, - input wire reset, - - input wire csr_pipe_stall, + input wire clk, + input wire reset, + // inputs VX_csr_req_if csr_core_req_if, VX_csr_io_req_if csr_io_req_if, - VX_csr_req_if issued_csr_req_if, - VX_wb_if csr_pipe_rsp_if, - VX_wb_if csr_wb_if, - VX_csr_io_rsp_if csr_io_rsp_if + // output + VX_csr_req_if csr_req_if, + + // input + VX_wb_if csr_rsp_if, + + // outputs + VX_csr_io_rsp_if csr_io_rsp_if, + VX_wb_if csr_wb_if ); `UNUSED_VAR (clk) `UNUSED_VAR (reset) - wire pick_core = (| csr_core_req_if.valid); + wire core_select = ~(| csr_io_req_if.valid); - // Mux between core and io - assign issued_csr_req_if.valid = pick_core ? csr_core_req_if.valid : {`NUM_THREADS{csr_io_req_if.valid}}; - assign issued_csr_req_if.is_csr = pick_core ? csr_core_req_if.is_csr : 1'b1; - assign issued_csr_req_if.alu_op = pick_core ? csr_core_req_if.alu_op : (csr_io_req_if.rw ? `ALU_CSR_RW : `ALU_CSR_RS); - assign issued_csr_req_if.csr_addr = pick_core ? csr_core_req_if.csr_addr : csr_io_req_if.addr; - assign issued_csr_req_if.csr_immed = pick_core ? csr_core_req_if.csr_immed : 0; - assign issued_csr_req_if.csr_mask = pick_core ? csr_core_req_if.csr_mask : (csr_io_req_if.rw ? csr_io_req_if.data : 32'b0); - assign issued_csr_req_if.is_io = !pick_core; - assign issued_csr_req_if.warp_num = csr_core_req_if.warp_num; - assign issued_csr_req_if.rd = csr_core_req_if.rd; - assign issued_csr_req_if.wb = csr_core_req_if.wb; + // requests + assign csr_req_if.valid = core_select ? csr_core_req_if.valid : {`NUM_THREADS{csr_io_req_if.valid}}; + assign csr_req_if.warp_num = core_select ? csr_core_req_if.warp_num : 0; + assign csr_req_if.curr_PC = core_select ? csr_core_req_if.curr_PC : 0; + assign csr_req_if.csr_op = core_select ? csr_core_req_if.csr_op : (csr_io_req_if.rw ? `CSR_RW : `CSR_RS); + assign csr_req_if.csr_addr = core_select ? csr_core_req_if.csr_addr : csr_io_req_if.addr; + assign csr_req_if.csr_mask = core_select ? csr_core_req_if.csr_mask : (csr_io_req_if.rw ? csr_io_req_if.data : 32'b0); + assign csr_req_if.rd = core_select ? csr_core_req_if.rd : 0; + assign csr_req_if.wb = core_select ? csr_core_req_if.wb : 0; + assign csr_req_if.is_io = ~core_select; - assign csr_io_req_if.ready = !(csr_pipe_stall || pick_core); - - // Core Writeback - assign csr_wb_if.valid = csr_pipe_rsp_if.valid & {`NUM_THREADS{~csr_pipe_rsp_if.is_io}}; - assign csr_wb_if.data = csr_pipe_rsp_if.data; - assign csr_wb_if.warp_num = csr_pipe_rsp_if.warp_num; - assign csr_wb_if.rd = csr_pipe_rsp_if.rd; - assign csr_wb_if.wb = csr_pipe_rsp_if.wb; - assign csr_wb_if.curr_PC = csr_pipe_rsp_if.curr_PC; + assign csr_core_req_if.ready = csr_req_if.ready && core_select; + assign csr_io_req_if.ready = csr_req_if.ready && ~core_select; - // CSR I/O response - assign csr_io_rsp_if.valid = csr_pipe_rsp_if.valid[0] & csr_pipe_rsp_if.is_io; - assign csr_io_rsp_if.data = csr_pipe_rsp_if.data[0]; - wire x = csr_io_rsp_if.ready; - `UNUSED_VAR(x) + // responses + assign csr_io_rsp_if.valid = csr_rsp_if.valid[0] & csr_rsp_if.is_io; + assign csr_io_rsp_if.data = csr_rsp_if.data[0]; + + assign csr_wb_if.valid = csr_rsp_if.valid & {`NUM_THREADS{~csr_rsp_if.is_io}}; + assign csr_wb_if.warp_num = csr_rsp_if.warp_num; + assign csr_wb_if.curr_PC = csr_rsp_if.curr_PC; + assign csr_wb_if.data = csr_rsp_if.data; + assign csr_wb_if.rd = csr_rsp_if.rd; + assign csr_wb_if.wb = csr_rsp_if.wb; + + assign csr_rsp_if.ready = csr_rsp_if.is_io ? csr_io_rsp_if.ready : csr_wb_if.ready; endmodule diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index 7488129e..cace905f 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -15,7 +15,7 @@ module VX_csr_data #( `IGNORE_WARNINGS_END input wire[`CSR_WIDTH-1:0] write_data, input wire[`NW_BITS-1:0] warp_num, - input wire wb_valid + input wire notify_commit ); reg [`CSR_WIDTH-1:0] csr_table[`NUM_CSRS-1:0]; @@ -35,7 +35,7 @@ module VX_csr_data #( csr_table[wr_addr] <= write_data; end num_cycles <= num_cycles + 1; - if (wb_valid) begin + if (notify_commit) begin num_instrs <= num_instrs + 1; end end @@ -57,6 +57,7 @@ module VX_csr_data #( `CSR_VEND_ID : read_data = `VENDOR_ID; `CSR_ARCH_ID : read_data = `ARCHITECTURE_ID; `CSR_IMPL_ID : read_data = `IMPLEMENTATION_ID; + `CSR_MISA : read_data = `ISA_CODE; default : read_data = 32'(csr_table[rd_addr]); endcase end diff --git a/hw/rtl/VX_csr_io_arb.v b/hw/rtl/VX_csr_io_arb.v index bf0d7041..5e6782da 100644 --- a/hw/rtl/VX_csr_io_arb.v +++ b/hw/rtl/VX_csr_io_arb.v @@ -2,7 +2,7 @@ module VX_csr_io_arb #( parameter NUM_REQUESTS = 1, - parameter REQS_BITS = `CLOG2(NUM_REQUESTS) + parameter REQS_BITS = `LOG2UP(NUM_REQUESTS) ) ( input wire clk, input wire reset, @@ -37,6 +37,7 @@ module VX_csr_io_arb #( `UNUSED_VAR (clk) `UNUSED_VAR (reset) + `UNUSED_VAR (request_id) assign out_csr_io_req_valid = in_csr_io_req_valid; assign out_csr_io_req_rw = in_csr_io_req_rw; diff --git a/hw/rtl/VX_csr_pipe.v b/hw/rtl/VX_csr_pipe.v index aa6980ab..a329d258 100644 --- a/hw/rtl/VX_csr_pipe.v +++ b/hw/rtl/VX_csr_pipe.v @@ -3,79 +3,86 @@ module VX_csr_pipe #( parameter CORE_ID = 0 ) ( - input wire clk, - input wire reset, - input wire no_slot_csr, - VX_csr_req_if csr_req_if, - VX_wb_if writeback_if, - VX_wb_if csr_wb_if, - output wire stall_gpr_csr + input wire clk, + input wire reset, + VX_csr_req_if csr_req_if, + VX_csr_io_req_if csr_io_req_if, + VX_wb_if csr_wb_if, + VX_csr_io_rsp_if csr_io_rsp_if, + input wire notify_commit ); + VX_csr_req_if csr_pipe_req_if(); + VX_wb_if csr_pipe_wb_if(); - wire[`NUM_THREADS-1:0] valid_s2; - wire[`NW_BITS-1:0] warp_num_s2; - wire[4:0] rd_s2; - wire[1:0] wb_s2; - wire is_csr_s2; - wire[`CSR_ADDR_SIZE-1:0] csr_addr_s2; - wire[31:0] csr_read_data_s2; - wire[31:0] csr_updated_data_s2; + VX_csr_arb csr_arb ( + .clk (clk), + .reset (reset), + .csr_core_req_if (csr_req_if), + .csr_io_req_if (csr_io_req_if), + .csr_req_if (csr_pipe_req_if), + .csr_rsp_if (csr_pipe_wb_if), + .csr_io_rsp_if (csr_io_rsp_if), + .csr_wb_if (csr_wb_if) + ); - wire[31:0] csr_read_data_unqual; - wire[31:0] csr_read_data; + wire [`CSR_ADDR_SIZE-1:0] csr_addr_s2; + wire [31:0] csr_read_data_s2; + wire [31:0] csr_updated_data_s2; + wire [31:0] csr_read_data_unqual; + + wire is_csr_s2 = (| csr_pipe_wb_if.valid); VX_csr_data #( .CORE_ID(CORE_ID) ) csr_data ( .clk (clk), .reset (reset), - .read_addr (csr_req_if.csr_addr), + .read_addr (csr_pipe_req_if.csr_addr), .read_data (csr_read_data_unqual), .write_enable (is_csr_s2), .write_data (csr_updated_data_s2[`CSR_WIDTH-1:0]), .write_addr (csr_addr_s2), - .warp_num (csr_req_if.warp_num), - .wb_valid (| writeback_if.valid) + .warp_num (csr_pipe_req_if.warp_num), + .notify_commit (notify_commit) ); - wire car_hazard = (csr_addr_s2 == csr_req_if.csr_addr) & (warp_num_s2 == csr_req_if.warp_num) & |(valid_s2) & is_csr_s2; + wire csr_hazard = (csr_addr_s2 == csr_pipe_req_if.csr_addr) + && (csr_pipe_wb_if.warp_num == csr_pipe_req_if.warp_num) + && is_csr_s2; - assign csr_read_data = car_hazard ? csr_updated_data_s2 : csr_read_data_unqual; + wire [31:0] csr_read_data = csr_hazard ? csr_updated_data_s2 : csr_read_data_unqual; reg [31:0] csr_updated_data; always @(*) begin - case (csr_req_if.alu_op) - `ALU_CSR_RW: csr_updated_data = csr_req_if.csr_mask; - `ALU_CSR_RS: csr_updated_data = csr_read_data | csr_req_if.csr_mask; - `ALU_CSR_RC: csr_updated_data = csr_read_data & (32'hFFFFFFFF - csr_req_if.csr_mask); - default: csr_updated_data = 32'hdeadbeef; + case (csr_pipe_req_if.csr_op) + `CSR_RW: csr_updated_data = csr_pipe_req_if.csr_mask; + `CSR_RS: csr_updated_data = csr_read_data | csr_pipe_req_if.csr_mask; + `CSR_RC: csr_updated_data = csr_read_data & (32'hFFFFFFFF - csr_pipe_req_if.csr_mask); + default: csr_updated_data = 32'hdeadbeef; endcase - end + end + + wire stall = ~csr_pipe_wb_if.ready && (| csr_pipe_wb_if.valid); VX_generic_register #( - .N(32 + 32 + 12 + 1 + 1 + 2 + 5 + (`NW_BITS-1+1) + `NUM_THREADS) - ) csr_reg_s2 ( - .clk (clk), - .reset(reset), - .stall(no_slot_csr), - .flush(1'b0), - .in ({csr_req_if.valid, csr_req_if.warp_num, csr_req_if.rd, csr_req_if.wb, csr_req_if.is_csr, csr_req_if.csr_addr, csr_req_if.is_io, csr_read_data , csr_updated_data }), - .out ({valid_s2 , warp_num_s2 , rd_s2 , wb_s2 , is_csr_s2 , csr_addr_s2 , csr_wb_if.is_io , csr_read_data_s2, csr_updated_data_s2}) + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + `CSR_ADDR_SIZE + 1 + 32 + 32) + ) csr_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({csr_pipe_req_if.valid, csr_pipe_req_if.warp_num, csr_pipe_req_if.curr_PC, csr_pipe_req_if.rd, csr_pipe_req_if.wb, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data, csr_updated_data}), + .out ({csr_pipe_wb_if.valid, csr_pipe_wb_if.warp_num, csr_pipe_wb_if.curr_PC, csr_pipe_wb_if.rd, csr_pipe_wb_if.wb, csr_addr_s2, csr_pipe_wb_if.is_io, csr_read_data_s2, csr_updated_data_s2}) ); - assign csr_wb_if.valid = valid_s2; - assign csr_wb_if.warp_num = warp_num_s2; - assign csr_wb_if.rd = rd_s2; - assign csr_wb_if.wb = wb_s2; - genvar i; for (i = 0; i < `NUM_THREADS; i++) begin - assign csr_wb_if.data[i] = (csr_addr_s2 == `CSR_LTID) ? i : - (csr_addr_s2 == `CSR_GTID) ? (csr_read_data_s2 * `NUM_THREADS + i) : - csr_read_data_s2; - end + assign csr_pipe_wb_if.data[i] = (csr_addr_s2 == `CSR_LTID) ? i : + (csr_addr_s2 == `CSR_GTID) ? (csr_read_data_s2 * `NUM_THREADS + i) : + csr_read_data_s2; + end - assign stall_gpr_csr = no_slot_csr && csr_req_if.is_csr && (| csr_req_if.valid); + assign csr_pipe_req_if.ready = ~stall; endmodule diff --git a/hw/rtl/VX_dcache_arb.v b/hw/rtl/VX_dcache_arb.v index 1431be60..4d493c60 100644 --- a/hw/rtl/VX_dcache_arb.v +++ b/hw/rtl/VX_dcache_arb.v @@ -1,48 +1,50 @@ `include "VX_define.vh" module VX_dcache_arb ( - input wire req_select, - // input request - VX_cache_core_req_if in_core_req_if, + VX_cache_core_req_if core_req_in_if, // output 0 request - VX_cache_core_req_if out0_core_req_if, + VX_cache_core_req_if core_req_out0_if, // output 1 request - VX_cache_core_req_if out1_core_req_if, + VX_cache_core_req_if core_req_out1_if, // input 0 response - VX_cache_core_rsp_if in0_core_rsp_if, + VX_cache_core_rsp_if core_rsp_in0_if, // input 1 response - VX_cache_core_rsp_if in1_core_rsp_if, + VX_cache_core_rsp_if core_rsp_in1_if, // output response - VX_cache_core_rsp_if out_core_rsp_if + VX_cache_core_rsp_if core_rsp_out_if, + + // bus select + input wire select_req, + input wire select_rsp ); - assign out0_core_req_if.valid = in_core_req_if.valid & {`NUM_THREADS{~req_select}}; - assign out0_core_req_if.rw = in_core_req_if.rw; - assign out0_core_req_if.byteen = in_core_req_if.byteen; - assign out0_core_req_if.addr = in_core_req_if.addr; - assign out0_core_req_if.data = in_core_req_if.data; - assign out0_core_req_if.tag = in_core_req_if.tag; + // select request + assign core_req_out0_if.valid = core_req_in_if.valid & {`NUM_THREADS{~select_req}}; + assign core_req_out0_if.rw = core_req_in_if.rw; + assign core_req_out0_if.byteen = core_req_in_if.byteen; + assign core_req_out0_if.addr = core_req_in_if.addr; + assign core_req_out0_if.data = core_req_in_if.data; + assign core_req_out0_if.tag = core_req_in_if.tag; - assign out1_core_req_if.valid = in_core_req_if.valid & {`NUM_THREADS{req_select}}; - assign out1_core_req_if.rw = in_core_req_if.rw; - assign out1_core_req_if.byteen = in_core_req_if.byteen; - assign out1_core_req_if.addr = in_core_req_if.addr; - assign out1_core_req_if.data = in_core_req_if.data; - assign out1_core_req_if.tag = in_core_req_if.tag; + assign core_req_out1_if.valid = core_req_in_if.valid & {`NUM_THREADS{select_req}}; + assign core_req_out1_if.rw = core_req_in_if.rw; + assign core_req_out1_if.byteen = core_req_in_if.byteen; + assign core_req_out1_if.addr = core_req_in_if.addr; + assign core_req_out1_if.data = core_req_in_if.data; + assign core_req_out1_if.tag = core_req_in_if.tag; - assign in_core_req_if.ready = req_select ? out1_core_req_if.ready : out0_core_req_if.ready; + assign core_req_in_if.ready = select_req ? core_req_out1_if.ready : core_req_out0_if.ready; - wire rsp_select0 = (| in0_core_rsp_if.valid); - - assign out_core_rsp_if.valid = rsp_select0 ? in0_core_rsp_if.valid : in1_core_rsp_if.valid; - assign out_core_rsp_if.data = rsp_select0 ? in0_core_rsp_if.data : in1_core_rsp_if.data; - assign out_core_rsp_if.tag = rsp_select0 ? in0_core_rsp_if.tag : in1_core_rsp_if.tag; - assign in0_core_rsp_if.ready = out_core_rsp_if.ready && rsp_select0; - assign in1_core_rsp_if.ready = out_core_rsp_if.ready && !rsp_select0; + // select response + assign core_rsp_out_if.valid = select_rsp ? core_rsp_in1_if.valid : core_rsp_in0_if.valid; + assign core_rsp_out_if.data = select_rsp ? core_rsp_in1_if.data : core_rsp_in0_if.data; + assign core_rsp_out_if.tag = select_rsp ? core_rsp_in1_if.tag : core_rsp_in0_if.tag; + assign core_rsp_in0_if.ready = core_rsp_out_if.ready && ~select_rsp; + assign core_rsp_in1_if.ready = core_rsp_out_if.ready && select_rsp; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index deb3f44b..44a84c88 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -1,321 +1,279 @@ `include "VX_define.vh" -module VX_decode( - // Fetch Inputs - VX_inst_meta_if fd_inst_meta_de, +module VX_decode #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, - // Outputs - VX_backend_req_if frE_to_bckE_req_if, - VX_wstall_if wstall_if, - VX_join_if join_if + // inputs + VX_ifetch_rsp_if ifetch_rsp_if, + + // outputs + VX_decode_if decode_if, + VX_wstall_if wstall_if, + VX_join_if join_if ); - wire in_valid = (| fd_inst_meta_de.valid); - wire[31:0] in_instruction = fd_inst_meta_de.instruction; - wire[31:0] in_curr_PC = fd_inst_meta_de.curr_PC; - wire[`NW_BITS-1:0] in_warp_num = fd_inst_meta_de.warp_num; + wire in_valid = (| ifetch_rsp_if.valid); + wire [31:0] instr = ifetch_rsp_if.instr; - assign frE_to_bckE_req_if.curr_PC = in_curr_PC; + reg [`ALU_BITS-1:0] alu_op; + reg [`BR_BITS-1:0] br_op; + reg [`MUL_BITS-1:0] mul_op; + wire [`LSU_BITS-1:0] lsu_op; + reg [`CSR_BITS-1:0] csr_op; + reg [`GPU_BITS-1:0] gpu_op; - wire[6:0] curr_opcode; + reg [19:0] upper_imm; + reg [31:0] jalx_offset; + reg [31:0] src2_imm; - wire is_itype; - wire is_rtype; - wire is_stype; - wire is_btype; - wire is_linst; - wire is_jal; - wire is_jalr; - wire is_lui; - wire is_auipc; - wire is_csr; - wire is_csr_immed; - wire is_etype; + wire [6:0] opcode = instr[6:0]; + wire [2:0] func3 = instr[14:12]; + wire [6:0] func7 = instr[31:25]; + wire [11:0] u_12 = instr[31:20]; - wire is_gpgpu; - wire is_wspawn; - wire is_tmc; - wire is_split; - wire is_join; - wire is_barrier; + wire [`NR_BITS-1:0] rd = instr[11:7]; + wire [`NR_BITS-1:0] rs1 = instr[19:15]; + wire [`NR_BITS-1:0] rs2 = instr[24:20]; - wire[2:0] func3; - wire[6:0] func7; - wire[11:0] u_12; - - wire[7:0] jal_b_19_to_12; - wire jal_b_11; - wire[9:0] jal_b_10_to_1; - wire jal_b_20; - wire jal_b_0; - wire[20:0] jal_unsigned_offset; - wire[31:0] jal_1_offset; - - wire[11:0] jalr_immed; - wire[31:0] jal_2_offset; - - wire jal_sys_cond1; - wire jal_sys_cond2; - wire jal_sys_jal; - wire[31:0] jal_sys_off; - - wire csr_cond1; - wire csr_cond2; - - wire[11:0] alu_tempp; - wire alu_shift_i; - wire[11:0] alu_shift_i_immed; - - wire[1:0] csr_type; - - reg[4:0] csr_alu; - reg[4:0] alu_op; - reg[4:0] mul_alu; - reg[19:0] temp_upper_immed; - reg temp_jal; - reg[31:0] temp_jal_offset; - reg[31:0] temp_itype_immed; - reg[2:0] temp_branch_type; - reg temp_branch_stall; - - assign frE_to_bckE_req_if.valid = fd_inst_meta_de.valid; - - assign frE_to_bckE_req_if.warp_num = in_warp_num; - - assign curr_opcode = in_instruction[6:0]; - - assign frE_to_bckE_req_if.rd = in_instruction[11:7]; - assign frE_to_bckE_req_if.rs1 = in_instruction[19:15]; - assign frE_to_bckE_req_if.rs2 = in_instruction[24:20]; - assign func3 = in_instruction[14:12]; - assign func7 = in_instruction[31:25]; - assign u_12 = in_instruction[31:20]; - - assign frE_to_bckE_req_if.next_PC = in_curr_PC + 32'h4; - - // Write Back sigal - assign is_rtype = (curr_opcode == `INST_R); - assign is_linst = (curr_opcode == `INST_L); - assign is_itype = (curr_opcode == `INST_ALU) || is_linst; - assign is_stype = (curr_opcode == `INST_S); - assign is_btype = (curr_opcode == `INST_B); - assign is_jal = (curr_opcode == `INST_JAL); - assign is_jalr = (curr_opcode == `INST_JALR); - assign is_lui = (curr_opcode == `INST_LUI); - assign is_auipc = (curr_opcode == `INST_AUIPC); - assign is_csr = (curr_opcode == `INST_SYS) && (func3 != 0); - assign is_csr_immed = is_csr && (func3[2] == 1); - - assign is_gpgpu = (curr_opcode == `INST_GPGPU); - - assign is_tmc = is_gpgpu && (func3 == 0); // Goes to BE - assign is_wspawn = is_gpgpu && (func3 == 1); // Goes to BE - assign is_barrier = is_gpgpu && (func3 == 4); // Goes to BE - assign is_split = is_gpgpu && (func3 == 2); // Goes to BE - assign is_join = is_gpgpu && (func3 == 3); // Doesn't go to BE - - assign join_if.is_join = is_join && in_valid; - assign join_if.warp_num = in_warp_num; - - assign frE_to_bckE_req_if.is_wspawn = is_wspawn; - assign frE_to_bckE_req_if.is_tmc = is_tmc; - assign frE_to_bckE_req_if.is_split = is_split; - assign frE_to_bckE_req_if.is_barrier = is_barrier; - - assign frE_to_bckE_req_if.csr_immed = is_csr_immed; - assign frE_to_bckE_req_if.is_csr = is_csr; - - assign frE_to_bckE_req_if.wb = (is_jal || is_jalr || is_etype) ? `WB_JAL : - is_linst ? `WB_MEM : - (is_itype || is_rtype || is_lui || is_auipc || is_csr) ? `WB_ALU : - `WB_NO; - - assign frE_to_bckE_req_if.rs2_src = (is_itype || is_stype) ? `RS2_IMMED : `RS2_REG; - - // MEM signals - assign frE_to_bckE_req_if.mem_read = (is_linst) ? func3 : `BYTE_EN_NO; - assign frE_to_bckE_req_if.mem_write = (is_stype) ? func3 : `BYTE_EN_NO; - - // UPPER IMMEDIATE + // opcode types + wire is_rtype = (opcode == `INST_R); + wire is_ltype = (opcode == `INST_L); + wire is_itype = (opcode == `INST_I); + wire is_stype = (opcode == `INST_S); + wire is_btype = (opcode == `INST_B); + wire is_jal = (opcode == `INST_JAL); + wire is_jalr = (opcode == `INST_JALR); + wire is_lui = (opcode == `INST_LUI); + wire is_auipc = (opcode == `INST_AUIPC); + wire is_jals = (opcode == `INST_SYS) && (func3 == 0); + wire is_csr = (opcode == `INST_SYS) && (func3 != 0); + wire is_gpu = (opcode == `INST_GPU); + wire is_br = (is_btype || is_jal || is_jalr || is_jals); + wire is_mul = is_rtype && (func7 == 7'h1); + + // upper immediate always @(*) begin - case (curr_opcode) - `INST_LUI: temp_upper_immed = {func7, frE_to_bckE_req_if.rs2, frE_to_bckE_req_if.rs1, func3}; - `INST_AUIPC: temp_upper_immed = {func7, frE_to_bckE_req_if.rs2, frE_to_bckE_req_if.rs1, func3}; - default: temp_upper_immed = 20'h0; - endcase // curr_opcode - end - - assign frE_to_bckE_req_if.upper_immed = temp_upper_immed; - - assign jal_b_19_to_12 = in_instruction[19:12]; - assign jal_b_11 = in_instruction[20]; - assign jal_b_10_to_1 = in_instruction[30:21]; - assign jal_b_20 = in_instruction[31]; - assign jal_b_0 = 1'b0; - assign jal_unsigned_offset = {jal_b_20, jal_b_19_to_12, jal_b_11, jal_b_10_to_1, jal_b_0}; - assign jal_1_offset = {{11{jal_b_20}}, jal_unsigned_offset}; - - assign jalr_immed = {func7, frE_to_bckE_req_if.rs2}; - assign jal_2_offset = {{20{jalr_immed[11]}}, jalr_immed}; - - assign jal_sys_cond1 = (func3 == 3'h0); - assign jal_sys_cond2 = (u_12 < 12'h2); - - assign jal_sys_jal = (jal_sys_cond1 && jal_sys_cond2) ? 1'b1 : 1'b0; - assign jal_sys_off = (jal_sys_cond1 && jal_sys_cond2) ? 32'hb0000000 : 32'hdeadbeef; - - // JAL - always @(*) begin - case (curr_opcode) - `INST_JAL: - begin - temp_jal = in_valid; - temp_jal_offset = jal_1_offset; - end - `INST_JALR: - begin - temp_jal = in_valid; - temp_jal_offset = jal_2_offset; - end - `INST_SYS: - begin - // $display("SYS EBREAK %h", (jal_sys_jal && in_valid)); - temp_jal = jal_sys_jal && in_valid; - temp_jal_offset = jal_sys_off; - end - default: - begin - temp_jal = 1'b0; - temp_jal_offset = 32'hdeadbeef; - end + case (opcode) + `INST_LUI: upper_imm = {func7, rs2, rs1, func3}; + `INST_AUIPC: upper_imm = {func7, rs2, rs1, func3}; + default: upper_imm = 20'h0; endcase - end + end - assign frE_to_bckE_req_if.is_jal = is_jal; - assign frE_to_bckE_req_if.jal = temp_jal; - assign frE_to_bckE_req_if.jal_offset = temp_jal_offset; - - // ecall/ebreak - assign is_etype = (curr_opcode == `INST_SYS) && jal_sys_jal; - assign frE_to_bckE_req_if.is_etype = is_etype; - - // CSR - - assign csr_cond1 = func3 != 3'h0; - assign csr_cond2 = u_12 >= 12'h2; - - assign frE_to_bckE_req_if.csr_addr = (csr_cond1 && csr_cond2) ? u_12 : 12'h55; - - // ITYPE IMEED - assign alu_shift_i = (func3 == 3'h1) || (func3 == 3'h5); - assign alu_shift_i_immed = {{7{1'b0}}, frE_to_bckE_req_if.rs2}; - assign alu_tempp = alu_shift_i ? alu_shift_i_immed : u_12; - - always @(*) begin - case (curr_opcode) - `INST_ALU: temp_itype_immed = {{20{alu_tempp[11]}}, alu_tempp}; - `INST_S: temp_itype_immed = {{20{func7[6]}}, func7, frE_to_bckE_req_if.rd}; - `INST_L: temp_itype_immed = {{20{u_12[11]}}, u_12}; - `INST_B: temp_itype_immed = {{20{in_instruction[31]}}, in_instruction[31], in_instruction[7], in_instruction[30:25], in_instruction[11:8]}; - default: temp_itype_immed = 32'hdeadbeef; + // JAL + wire [20:0] jal_imm = {instr[31], instr[19:12], instr[20], instr[30:21], 1'b0}; + wire [31:0] jal_offset = {{11{jal_imm[20]}}, jal_imm}; + wire [11:0] jalr_imm = {func7, rs2}; + wire [31:0] jalr_offset = {{20{jalr_imm[11]}}, jalr_imm}; + always @(*) begin + case (opcode) + `INST_JAL: jalx_offset = jal_offset; + `INST_JALR: jalx_offset = jalr_offset; + default: jalx_offset = 32'd4; endcase - end - - assign frE_to_bckE_req_if.itype_immed = temp_itype_immed; + end + // I-type immediate + wire alu_shift_i = (func3 == 3'h1) || (func3 == 3'h5); + wire [11:0] alu_shift_imm = {{7{1'b0}}, rs2}; + wire [11:0] alu_imm = alu_shift_i ? alu_shift_imm : u_12; always @(*) begin - case (curr_opcode) + case (opcode) + `INST_I: src2_imm = {{20{alu_imm[11]}}, alu_imm}; + `INST_S: src2_imm = {{20{func7[6]}}, func7, rd}; + `INST_L: src2_imm = {{20{u_12[11]}}, u_12}; + `INST_B: src2_imm = {{20{instr[31]}}, instr[7], instr[30:25], instr[11:8], 1'b0}; + default: src2_imm = 32'hdeadbeef; + endcase + end + + // BRANCH + always @(*) begin + br_op = `BR_OTHER; + case (opcode) `INST_B: begin - // $display("BRANCH IN DECODE"); - temp_branch_stall = in_valid; case (func3) - 3'h0: temp_branch_type = `BR_EQ; - 3'h1: temp_branch_type = `BR_NE; - 3'h4: temp_branch_type = `BR_LT; - 3'h5: temp_branch_type = `BR_GT; - 3'h6: temp_branch_type = `BR_LTU; - 3'h7: temp_branch_type = `BR_GTU; - default: temp_branch_type = `BR_NO; + 3'h0: br_op = `BR_EQ; + 3'h1: br_op = `BR_NE; + 3'h4: br_op = `BR_LT; + 3'h5: br_op = `BR_GE; + 3'h6: br_op = `BR_LTU; + 3'h7: br_op = `BR_GEU; + default:; endcase end - `INST_JAL: begin - temp_branch_type = `BR_NO; - temp_branch_stall = in_valid; - end - `INST_JALR: begin - temp_branch_type = `BR_NO; - temp_branch_stall = in_valid; - end - default: begin - temp_branch_type = `BR_NO; - temp_branch_stall = 1'b0; + `INST_JAL: br_op = `BR_JAL; + `INST_JALR: br_op = `BR_JALR; + `INST_SYS: begin + if (is_jals && u_12 == 12'h000) br_op = `BR_ECALL; + if (is_jals && u_12 == 12'h001) br_op = `BR_EBREAK; + if (is_jals && u_12 == 12'h302) br_op = `BR_MRET; + if (is_jals && u_12 == 12'h102) br_op = `BR_SRET; + if (is_jals && u_12 == 12'h7B2) br_op = `BR_DRET; end + default:; endcase end - - assign frE_to_bckE_req_if.branch_type = temp_branch_type; - - assign wstall_if.wstall = (temp_branch_stall || is_tmc || is_split || is_barrier) && in_valid; - assign wstall_if.warp_num = in_warp_num; - + + // ALU always @(*) begin - // ALU OP + alu_op = `ALU_OTHER; + if (is_lui) begin + alu_op = `ALU_LUI; + end else if (is_auipc) begin + alu_op = `ALU_AUIPC; + end else if (is_itype || is_rtype) begin + case (func3) + 3'h0: alu_op = (is_rtype && func7 == 7'h20) ? `ALU_SUB : `ALU_ADD; + 3'h1: alu_op = `ALU_SLL; + 3'h2: alu_op = `ALU_SLT; + 3'h3: alu_op = `ALU_SLTU; + 3'h4: alu_op = `ALU_XOR; + 3'h5: alu_op = (func7 == 7'h0) ? `ALU_SRL : `ALU_SRA; + 3'h6: alu_op = `ALU_OR; + 3'h7: alu_op = `ALU_AND; + default:; + endcase + end + end + + // MUL + always @(*) begin + mul_op = `MUL_MUL; case (func3) - 3'h0: alu_op = (curr_opcode == `INST_ALU) ? `ALU_ADD : (func7 == 7'h0 ? `ALU_ADD : `ALU_SUB); - 3'h1: alu_op = `ALU_SLLA; - 3'h2: alu_op = `ALU_SLT; - 3'h3: alu_op = `ALU_SLTU; - 3'h4: alu_op = `ALU_XOR; - 3'h5: alu_op = (func7 == 7'h0) ? `ALU_SRL : `ALU_SRA; - 3'h6: alu_op = `ALU_OR; - 3'h7: alu_op = `ALU_AND; - default: alu_op = `ALU_NO; + 3'h0: mul_op = `MUL_MUL; + 3'h1: mul_op = `MUL_MULH; + 3'h2: mul_op = `MUL_MULHSU; + 3'h3: mul_op = `MUL_MULHU; + 3'h4: mul_op = `MUL_DIV; + 3'h5: mul_op = `MUL_DIVU; + 3'h6: mul_op = `MUL_REM; + 3'h7: mul_op = `MUL_REMU; + default:; endcase end + // LSU + wire is_lsu = (is_ltype || is_stype); + assign lsu_op = {is_stype, func3}; + + // CSR + wire is_csr_imm = is_csr && (func3[2] == 1); always @(*) begin - // ALU OP + csr_op = `CSR_OTHER; + case (func3[1:0]) + 2'h1: csr_op = `CSR_RW; + 2'h2: csr_op = `CSR_RS; + 2'h3: csr_op = `CSR_RC; + default:; + endcase + end + + // GPU + always @(*) begin + gpu_op = `GPU_OTHER; case (func3) - 3'h0: mul_alu = `ALU_MUL; - 3'h1: mul_alu = `ALU_MULH; - 3'h2: mul_alu = `ALU_MULHSU; - 3'h3: mul_alu = `ALU_MULHU; - 3'h4: mul_alu = `ALU_DIV; - 3'h5: mul_alu = `ALU_DIVU; - 3'h6: mul_alu = `ALU_REM; - 3'h7: mul_alu = `ALU_REMU; - default: mul_alu = `ALU_NO; + 3'h0: gpu_op = `GPU_TMC; + 3'h1: gpu_op = `GPU_WSPAWN; + 3'h2: gpu_op = `GPU_SPLIT; + 3'h3: gpu_op = `GPU_JOIN; + 3'h4: gpu_op = `GPU_BAR; + default:; endcase end - assign csr_type = func3[1:0]; + VX_decode_if decode_tmp_if(); - always @(*) begin - case (csr_type) - 2'h1: csr_alu = `ALU_CSR_RW; - 2'h2: csr_alu = `ALU_CSR_RS; - 2'h3: csr_alu = `ALU_CSR_RC; - default: csr_alu = `ALU_NO; - endcase + assign decode_tmp_if.valid = ifetch_rsp_if.valid; + assign decode_tmp_if.warp_num = ifetch_rsp_if.warp_num; + assign decode_tmp_if.curr_PC = ifetch_rsp_if.curr_PC; + assign decode_tmp_if.next_PC = ifetch_rsp_if.curr_PC + 32'h4; + + assign decode_tmp_if.ex_type = is_br ? `EX_BR : + is_lsu ? `EX_LSU : + is_csr ? `EX_CSR : + is_mul ? `EX_MUL : + is_gpu ? `EX_GPU : + (is_rtype || is_itype || is_lui || is_auipc) ? `EX_ALU : + `EX_NOP; + + assign decode_tmp_if.instr_op = is_br ? `OP_BITS'(br_op) : + is_lsu ? `OP_BITS'(lsu_op) : + is_csr ? `OP_BITS'(csr_op) : + is_mul ? `OP_BITS'(mul_op) : + is_gpu ? `OP_BITS'(gpu_op) : + (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : + 0; + + assign decode_tmp_if.rd = rd; + + assign decode_tmp_if.rs1 = is_lui ? `NR_BITS'(0) : rs1; + + assign decode_tmp_if.rs2 = rs2; + + assign decode_tmp_if.imm = (is_lui || is_auipc) ? {upper_imm, 12'(0)} : + (is_jal || is_jalr || is_jals) ? jalx_offset : + is_csr ? 32'(u_12) : + src2_imm; + + assign decode_tmp_if.rs1_is_PC = is_auipc; + + assign decode_tmp_if.rs2_is_imm = is_itype || is_lui || is_auipc || is_csr_imm; + + assign decode_tmp_if.use_rs1 = (decode_tmp_if.rs1 != 0) + && (is_jalr || is_btype || is_ltype || is_stype || is_itype || is_rtype || ~is_csr_imm || is_gpu); + + assign decode_tmp_if.use_rs2 = (decode_tmp_if.rs2 != 0) + && (is_btype || is_stype || is_rtype || (is_gpu && (gpu_op == `GPU_BAR || gpu_op == `GPU_WSPAWN))); + + assign decode_tmp_if.wb = (rd == 0) ? `WB_NO : // disable writeback to r0 + (is_itype || is_rtype || is_lui || is_auipc || is_csr) ? `WB_ALU : + (is_jal || is_jalr || is_jals) ? `WB_JAL : + is_ltype ? `WB_MEM : + `WB_NO; + + assign join_if.is_join = is_gpu && (gpu_op == `GPU_JOIN) && in_valid; + assign join_if.warp_num = ifetch_rsp_if.warp_num; + + assign wstall_if.wstall = (is_br || is_gpu) && in_valid; + assign wstall_if.warp_num = ifetch_rsp_if.warp_num; + + wire stall = ~decode_if.ready && (| decode_if.valid); + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + `WB_BITS) + ) decode_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb}), + .out ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb}) + ); + + assign ifetch_rsp_if.ready = ~stall; + +`ifdef DBG_PRINT_PIPELINE + always @(posedge clk) begin + if ((| decode_tmp_if.valid) && ~stall) begin + $write("%t: Core%0d-Decode: warp=%0d, PC=%0h, ex=", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC); + print_ex_type(decode_tmp_if.ex_type); + $write(", op="); + print_instr_op(decode_tmp_if.ex_type, decode_tmp_if.instr_op); + $write(", wb="); + print_wb(decode_tmp_if.wb); + $write(", rd=%0d, rs1=%0d, rs2=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b\n", decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2); + + // trap unsupported instructions + assert(~(~stall && (decode_tmp_if.ex_type == `EX_ALU) && `ALU_OP(decode_tmp_if.instr_op) == `ALU_OTHER)); + assert(~(~stall && (decode_tmp_if.ex_type == `EX_BR) && `BR_OP(decode_tmp_if.instr_op) == `BR_OTHER)); + assert(~(~stall && (decode_tmp_if.ex_type == `EX_CSR) && `CSR_OP(decode_tmp_if.instr_op) == `CSR_OTHER)); + assert(~(~stall && (decode_tmp_if.ex_type == `EX_GPU) && `GPU_OP(decode_tmp_if.instr_op) == `GPU_OTHER)); + end end +`endif - wire[4:0] temp_final_alu; - - assign temp_final_alu = is_btype ? ((frE_to_bckE_req_if.branch_type < `BR_LTU) ? `ALU_SUB : `ALU_SUBU) : - is_lui ? `ALU_LUI : - is_auipc ? `ALU_AUIPC : - is_csr ? csr_alu : - (is_stype || is_linst) ? `ALU_ADD : - alu_op; - - assign frE_to_bckE_req_if.alu_op = ((func7[0] == 1'b1) && is_rtype) ? mul_alu : temp_final_alu; - -endmodule - - - - - - - - +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 21da158e..2597b298 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -64,88 +64,159 @@ `define NC_BITS `LOG2UP(`NUM_CORES) +`define NB_BITS `LOG2UP(`NUM_BARRIERS) + `define REQS_BITS `LOG2UP(NUM_REQUESTS) -`define NUM_GPRS 32 +`define NUM_REGS 32 + +`define NR_BITS `LOG2UP(`NUM_REGS) `define CSR_ADDR_SIZE 12 `define CSR_WIDTH 12 -`define DIV_LATENCY 22 +`define DIV_LATENCY 2 `define MUL_LATENCY 2 /////////////////////////////////////////////////////////////////////////////// -`define BYTE_EN_NO 3'h7 -`define BYTE_EN_SB 3'h0 -`define BYTE_EN_SH 3'h1 -`define BYTE_EN_SW 3'h2 -`define BYTE_EN_UB 3'h4 -`define BYTE_EN_UH 3'h5 -`define BYTE_EN_BITS 3 +`define INST_LUI 7'b0110111 +`define INST_AUIPC 7'b0010111 +`define INST_JAL 7'b1101111 +`define INST_JALR 7'b1100111 +`define INST_B 7'b1100011 +`define INST_L 7'b0000011 +`define INST_S 7'b0100011 +`define INST_I 7'b0010011 +`define INST_R 7'b0110011 +`define INST_F 7'b0001111 +`define INST_SYS 7'b1110011 +`define INST_GPU 7'b1101011 -/////////////////////////////////////////////////////////////////////////////// +`define OP_BITS 4 -`define INST_R 7'd051 -`define INST_L 7'd003 -`define INST_ALU 7'd019 -`define INST_S 7'd035 -`define INST_B 7'd099 -`define INST_LUI 7'd055 -`define INST_AUIPC 7'd023 -`define INST_JAL 7'd111 -`define INST_JALR 7'd103 -`define INST_SYS 7'd115 -`define INST_GPGPU 7'd107 +`define ALU_ADD 4'h0 +`define ALU_SUB 4'h1 +`define ALU_SLL 4'h2 +`define ALU_SRL 4'h3 +`define ALU_SRA 4'h4 +`define ALU_SLT 4'h5 +`define ALU_SLTU 4'h6 +`define ALU_XOR 4'h7 +`define ALU_OR 4'h8 +`define ALU_AND 4'h9 +`define ALU_LUI 4'hA +`define ALU_AUIPC 4'hB +`define ALU_OTHER 4'hF +`define ALU_BITS 4 +`define ALU_OP(x) x[`ALU_BITS-1:0] -`define RS2_IMMED 1 -`define RS2_REG 0 +`define MUL_MUL 3'h0 +`define MUL_MULH 3'h1 +`define MUL_MULHSU 3'h2 +`define MUL_MULHU 3'h3 +`define MUL_DIV 3'h4 +`define MUL_DIVU 3'h5 +`define MUL_REM 3'h6 +`define MUL_REMU 3'h7 +`define MUL_BITS 3 +`define MUL_OP(x) x[`MUL_BITS-1:0] +`define IS_DIV_OP(x) x[2] -`define BR_NO 3'h0 -`define BR_EQ 3'h1 -`define BR_NE 3'h2 -`define BR_LT 3'h3 -`define BR_GT 3'h4 -`define BR_LTU 3'h5 -`define BR_GTU 3'h6 +`define BR_EQ 4'h0 +`define BR_NE 4'h1 +`define BR_LT 4'h2 +`define BR_GE 4'h3 +`define BR_LTU 4'h4 +`define BR_GEU 4'h5 +`define BR_JAL 4'h6 +`define BR_JALR 4'h7 +`define BR_ECALL 4'h8 +`define BR_EBREAK 4'h9 +`define BR_MRET 4'hA +`define BR_SRET 4'hB +`define BR_DRET 4'hC +`define BR_OTHER 4'hF +`define BR_BITS 4 +`define BR_OP(x) x[`BR_BITS-1:0] -`define ALU_NO 5'd15 -`define ALU_ADD 5'd00 -`define ALU_SUB 5'd01 -`define ALU_SLLA 5'd02 -`define ALU_SLT 5'd03 -`define ALU_SLTU 5'd04 -`define ALU_XOR 5'd05 -`define ALU_SRL 5'd06 -`define ALU_SRA 5'd07 -`define ALU_OR 5'd08 -`define ALU_AND 5'd09 -`define ALU_SUBU 5'd10 -`define ALU_LUI 5'd11 -`define ALU_AUIPC 5'd12 -`define ALU_CSR_RW 5'd13 -`define ALU_CSR_RS 5'd14 -`define ALU_CSR_RC 5'd15 -`define ALU_MUL 5'd16 -`define ALU_MULH 5'd17 -`define ALU_MULHSU 5'd18 -`define ALU_MULHU 5'd19 -`define ALU_DIV 5'd20 -`define ALU_DIVU 5'd21 -`define ALU_REM 5'd22 -`define ALU_REMU 5'd23 +`define BYTEEN_SB 3'h0 +`define BYTEEN_SH 3'h1 +`define BYTEEN_SW 3'h2 +`define BYTEEN_UB 3'h4 +`define BYTEEN_UH 3'h5 +`define BYTEEN_BITS 3 +`define LSU_BITS 4 +`define LSU_RW(x) x[3] +`define LSU_BE(x) x[2:0] + +`define CSR_RW 2'h0 +`define CSR_RS 2'h1 +`define CSR_RC 2'h2 +`define CSR_OTHER 2'h3 +`define CSR_BITS 2 +`define CSR_OP(x) x[`CSR_BITS-1:0] + +`define GPU_TMC 3'h0 +`define GPU_WSPAWN 3'h1 +`define GPU_SPLIT 3'h2 +`define GPU_JOIN 3'h3 +`define GPU_BAR 3'h4 +`define GPU_OTHER 3'h7 +`define GPU_BITS 3 +`define GPU_OP(x) x[`GPU_BITS-1:0] + +`define EX_NOP 3'h0 +`define EX_ALU 3'h1 +`define EX_BR 3'h2 +`define EX_MUL 3'h3 +`define EX_LSU 3'h4 +`define EX_FPU 3'h5 +`define EX_CSR 3'h6 +`define EX_GPU 3'h7 +`define EX_BITS 3 `define WB_NO 2'h0 `define WB_ALU 2'h1 `define WB_MEM 2'h2 `define WB_JAL 2'h3 +`define WB_BITS 2 /////////////////////////////////////////////////////////////////////////////// -`ifdef DBG_CORE_REQ_INFO // pc, wb, rd, warp_num -`define DEBUG_CORE_REQ_MDATA_WIDTH (32 + 2 + 5 + `NW_BITS) +`define ISA_CODE (0 << 0) // A - Atomic Instructions extension \ + | (0 << 1) // B - Tentatively reserved for Bit operations extension \ + | (0 << 2) // C - Compressed extension \ + | (0 << 3) // D - Double precsision floating-point extension \ + | (0 << 4) // E - RV32E base ISA \ + | (0 << 5) // F - Single precsision floating-point extension \ + | (0 << 6) // G - Additional standard extensions present \ + | (0 << 7) // H - Hypervisor mode implemented \ + | (1 << 8) // I - RV32I/64I/128I base ISA \ + | (0 << 9) // J - Reserved \ + | (0 << 10) // K - Reserved \ + | (0 << 11) // L - Tentatively reserved for Bit operations extension \ + | (1 << 12) // M - Integer Multiply/Divide extension \ + | (0 << 13) // N - User level interrupts supported \ + | (0 << 14) // O - Reserved \ + | (0 << 15) // P - Tentatively reserved for Packed-SIMD extension \ + | (0 << 16) // Q - Quad-precision floating-point extension \ + | (0 << 17) // R - Reserved \ + | (0 << 18) // S - Supervisor mode implemented \ + | (0 << 19) // T - Tentatively reserved for Transactional Memory extension \ + | (1 << 20) // U - User mode implemented \ + | (0 << 21) // V - Tentatively reserved for Vector extension \ + | (0 << 22) // W - Reserved \ + | (1 << 23) // X - Non-standard extensions present \ + | (0 << 24) // Y - Reserved \ + | (0 << 25) // Z - Reserved + +/////////////////////////////////////////////////////////////////////////////// + +`ifdef DBG_CORE_REQ_INFO // pc, wb, rd, warp_num +`define DEBUG_CORE_REQ_MDATA_WIDTH (32 + `WB_BITS + `NR_BITS + `NW_BITS) `else `define DEBUG_CORE_REQ_MDATA_WIDTH 0 `endif @@ -288,9 +359,129 @@ `define VX_DRAM_TAG_WIDTH `L3DRAM_TAG_WIDTH `define VX_SNP_TAG_WIDTH `L3SNP_TAG_WIDTH `define VX_CORE_TAG_WIDTH `L3CORE_TAG_WIDTH -`define VX_CSR_ID_WIDTH `CLOG2(`NUM_CLUSTERS * `NUM_CORES) +`define VX_CSR_ID_WIDTH `LOG2UP(`NUM_CLUSTERS * `NUM_CORES) `define DRAM_TO_BYTE_ADDR(x) {x, (32-$bits(x))'(0)} - // VX_DEFINE +/////////////////////////////////////////////////////////////////////////////// + +task print_ex_type; + input [`EX_BITS-1:0] ex; + begin + case (ex) + `EX_ALU: $write("ALU"); + `EX_BR: $write("BR"); + `EX_LSU: $write("LSU"); + `EX_CSR: $write("CSR"); + `EX_MUL: $write("MUL"); + `EX_FPU: $write("FPU"); + `EX_GPU: $write("GPU"); + default: $write("NOP"); + endcase + end +endtask + +task print_instr_op; + input [`EX_BITS-1:0] ex; + input [`OP_BITS-1:0] op; + begin + case (ex) + `EX_ALU: begin + case (`ALU_BITS'(op)) + `ALU_ADD: $write("ADD"); + `ALU_SUB: $write("SUB"); + `ALU_SLL: $write("SLL"); + `ALU_SRL: $write("SRL"); + `ALU_SRA: $write("SRA"); + `ALU_SLT: $write("SLT"); + `ALU_SLTU: $write("SLTU"); + `ALU_XOR: $write("XOR"); + `ALU_OR: $write("OR"); + `ALU_AND: $write("AND"); + `ALU_LUI: $write("LUI"); + `ALU_AUIPC: $write("AUIPC"); + default: $write("?"); + endcase + end + `EX_BR: begin + case (`BR_BITS'(op)) + `BR_EQ: $write("EQ"); + `BR_NE: $write("NE"); + `BR_LT: $write("LT"); + `BR_GE: $write("GE"); + `BR_LTU: $write("LTU"); + `BR_GEU: $write("GEU"); + `BR_JAL: $write("JAL"); + `BR_JALR: $write("JALR"); + `BR_ECALL: $write("ECALL"); + `BR_EBREAK: $write("EBREAK"); + `BR_MRET: $write("MRET"); + `BR_SRET: $write("SRET"); + `BR_DRET: $write("DRET"); + default: $write("?"); + endcase + end + `EX_MUL: begin + case (`MUL_BITS'(op)) + `MUL_MUL: $write("MUL"); + `MUL_MULH: $write("MULH"); + `MUL_MULHSU: $write("MULHSU"); + `MUL_MULHU: $write("MULHU"); + `MUL_DIV: $write("DIV"); + `MUL_DIVU: $write("DIVU"); + `MUL_REM: $write("REM"); + `MUL_REMU: $write("REMU"); + default: $write("?"); + endcase + end + `EX_LSU: begin + case (`LSU_BITS'(op)) + 4'b0000: $write("LB"); + 4'b0001: $write("LH"); + 4'b0010: $write("LW"); + 4'b0100: $write("LBU"); + 4'b0101: $write("LHU"); + 4'b1000: $write("SB"); + 4'b1001: $write("SH"); + 4'b1010: $write("SW"); + 4'b1100: $write("SBU"); + 4'b1101: $write("SHU"); + default: $write("?"); + endcase + end + `EX_CSR: begin + case (`CSR_BITS'(op)) + `CSR_RW: $write("CSRW"); + `CSR_RS: $write("CSRS"); + `CSR_RC: $write("CSRC"); + default: $write("?"); + endcase + end + `EX_GPU: begin + case (`GPU_BITS'(op)) + `GPU_TMC: $write("TMC"); + `GPU_WSPAWN: $write("WSPAWN"); + `GPU_SPLIT: $write("SPLIT"); + `GPU_JOIN: $write("JOIN"); + `GPU_BAR: $write("BAR"); + default: $write("?"); + endcase + end + default:; + endcase + end +endtask + +task print_wb; + input [`WB_BITS-1:0] wb; + begin + case (wb) + `WB_ALU: $write("ALU"); + `WB_MEM: $write("MEM"); + `WB_JAL: $write("JAL"); + default: $write("NO"); + endcase + end +endtask + `endif diff --git a/hw/rtl/VX_exec_unit.v b/hw/rtl/VX_exec_unit.v deleted file mode 100644 index 0b4259b5..00000000 --- a/hw/rtl/VX_exec_unit.v +++ /dev/null @@ -1,147 +0,0 @@ -`include "VX_define.vh" - -module VX_exec_unit ( - input wire clk, - input wire reset, - // Request - VX_exec_unit_req_if exec_unit_req_if, - - // Output - VX_wb_if inst_exec_wb_if, - VX_jal_rsp_if jal_rsp_if, - VX_branch_rsp_if branch_rsp_if, - - input wire no_slot_exec, - output wire delay -); - - wire [`NUM_THREADS-1:0][31:0] in_a_reg_data; - wire [`NUM_THREADS-1:0][31:0] in_b_reg_data; - wire [4:0] in_alu_op; - wire in_rs2_src; - wire [31:0] in_itype_immed; -`DEBUG_BEGIN - wire [2:0] in_branch_type; -`DEBUG_END - wire [19:0] in_upper_immed; - wire in_jal; - wire [31:0] in_jal_offset; - wire [31:0] in_curr_PC; - - assign in_a_reg_data = exec_unit_req_if.a_reg_data; - assign in_b_reg_data = exec_unit_req_if.b_reg_data; - assign in_alu_op = exec_unit_req_if.alu_op; - assign in_rs2_src = exec_unit_req_if.rs2_src; - assign in_itype_immed = exec_unit_req_if.itype_immed; - assign in_branch_type = exec_unit_req_if.branch_type; - assign in_upper_immed = exec_unit_req_if.upper_immed; - assign in_jal = exec_unit_req_if.jal; - assign in_jal_offset = exec_unit_req_if.jal_offset; - assign in_curr_PC = exec_unit_req_if.curr_PC; - - wire [`NUM_THREADS-1:0][31:0] alu_result; - wire [`NUM_THREADS-1:0] alu_stall; - - genvar i; - generate - for (i = 0; i < `NUM_THREADS; i++) begin - VX_alu_unit alu_unit ( - .clk (clk), - .reset (reset), - .src_a (in_a_reg_data[i]), - .src_b (in_b_reg_data[i]), - .src_rs2 (in_rs2_src), - .itype_immed (in_itype_immed), - .upper_immed (in_upper_immed), - .alu_op (in_alu_op), - .curr_PC (in_curr_PC), - .alu_result (alu_result[i]), - .alu_stall (alu_stall[i]) - ); - end - endgenerate - - wire internal_stall = (| alu_stall); - - assign delay = no_slot_exec || internal_stall; - - wire [$clog2(`NUM_THREADS)-1:0] jal_branch_use_index; - - VX_priority_encoder #( - .N(`NUM_THREADS) - ) choose_alu_result ( - .data_in (exec_unit_req_if.valid), - .data_out (jal_branch_use_index), - `UNUSED_PIN (valid_out) - ); - - wire [31:0] branch_use_alu_result = alu_result[jal_branch_use_index]; - - reg temp_branch_dir; - always @(*) - begin - case (exec_unit_req_if.branch_type) - `BR_EQ: temp_branch_dir = (branch_use_alu_result == 0); - `BR_NE: temp_branch_dir = (branch_use_alu_result != 0); - `BR_LT: temp_branch_dir = (branch_use_alu_result[31] != 0); - `BR_GT: temp_branch_dir = (branch_use_alu_result[31] == 0); - `BR_LTU: temp_branch_dir = (branch_use_alu_result[31] != 0); - `BR_GTU: temp_branch_dir = (branch_use_alu_result[31] == 0); - `BR_NO: temp_branch_dir = 0; - default: temp_branch_dir = 0; - endcase // in_branch_type - end - - wire [`NUM_THREADS-1:0][31:0] duplicate_PC_data; - - generate - for (i = 0; i < `NUM_THREADS; i++) begin - assign duplicate_PC_data[i] = exec_unit_req_if.next_PC; - end - endgenerate - - VX_jal_rsp_if jal_rsp_temp_if(); - VX_branch_rsp_if branch_rsp_temp_if(); - - // Actual Writeback - assign inst_exec_wb_if.rd = exec_unit_req_if.rd; - assign inst_exec_wb_if.wb = exec_unit_req_if.wb; - assign inst_exec_wb_if.valid = exec_unit_req_if.valid & {`NUM_THREADS{!internal_stall}}; - assign inst_exec_wb_if.warp_num = exec_unit_req_if.warp_num; - assign inst_exec_wb_if.data = exec_unit_req_if.jal ? duplicate_PC_data : alu_result; - assign inst_exec_wb_if.curr_PC = in_curr_PC; - - // Jal rsp - assign jal_rsp_temp_if.valid = in_jal; - assign jal_rsp_temp_if.dest = $signed(in_a_reg_data[jal_branch_use_index]) + $signed(in_jal_offset); - assign jal_rsp_temp_if.warp_num = exec_unit_req_if.warp_num; - - // Branch rsp - assign branch_rsp_temp_if.valid = (exec_unit_req_if.branch_type != `BR_NO) && (| exec_unit_req_if.valid); - assign branch_rsp_temp_if.dir = temp_branch_dir; - assign branch_rsp_temp_if.warp_num = exec_unit_req_if.warp_num; - assign branch_rsp_temp_if.dest = $signed(exec_unit_req_if.curr_PC) + ($signed(exec_unit_req_if.itype_immed) << 1); // itype_immed = branch_offset - - VX_generic_register #( - .N(33 + `NW_BITS-1 + 1) - ) jal_reg ( - .clk (clk), - .reset (reset), - .stall (1'b0), - .flush (1'b0), - .in ({jal_rsp_temp_if.valid, jal_rsp_temp_if.dest, jal_rsp_temp_if.warp_num}), - .out ({jal_rsp_if.valid , jal_rsp_if.dest , jal_rsp_if.warp_num}) - ); - - VX_generic_register #( - .N(34 + `NW_BITS-1 + 1) - ) branch_reg ( - .clk (clk), - .reset (reset), - .stall (1'b0), - .flush (1'b0), - .in ({branch_rsp_temp_if.valid, branch_rsp_temp_if.dir, branch_rsp_temp_if.warp_num, branch_rsp_temp_if.dest}), - .out ({branch_rsp_if.valid , branch_rsp_if.dir , branch_rsp_if.warp_num , branch_rsp_if.dest }) - ); - -endmodule : VX_exec_unit \ No newline at end of file diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v new file mode 100644 index 00000000..7b424431 --- /dev/null +++ b/hw/rtl/VX_execute.v @@ -0,0 +1,140 @@ +`include "VX_define.vh" + +module VX_execute #( + parameter CORE_ID = 0 +) ( + `SCOPE_SIGNALS_LSU_IO + `SCOPE_SIGNALS_BE_IO + + input wire clk, + input wire reset, + + // CSR io interface + VX_csr_io_req_if csr_io_req_if, + VX_csr_io_rsp_if csr_io_rsp_if, + + // Dcache interface + VX_cache_core_req_if dcache_req_if, + VX_cache_core_rsp_if dcache_rsp_if, + + // inputs + VX_execute_if execute_if, + VX_wb_if writeback_if, + + // outputs + VX_branch_rsp_if branch_rsp_if, + VX_warp_ctl_if warp_ctl_if, + VX_wb_if alu_wb_if, + VX_wb_if branch_wb_if, + VX_wb_if lsu_wb_if, + VX_wb_if csr_wb_if, + VX_wb_if mul_wb_if, + + input wire notify_commit, + output wire ebreak +); + VX_alu_req_if alu_req_if(); + VX_branch_req_if branch_req_if(); + VX_csr_req_if csr_req_if(); + VX_lsu_req_if lsu_req_if(); + VX_mul_req_if mul_req_if(); + VX_gpu_req_if gpu_req_if(); + + VX_gpr_stage #( + .CORE_ID(CORE_ID) + ) gpr_stage ( + .clk (clk), + .reset (reset), + .writeback_if (writeback_if), + .execute_if (execute_if), + .alu_req_if (alu_req_if), + .branch_req_if (branch_req_if), + .lsu_req_if (lsu_req_if), + .csr_req_if (csr_req_if), + .mul_req_if (mul_req_if), + .gpu_req_if (gpu_req_if) + ); + + VX_alu_unit #( + .CORE_ID(CORE_ID) + ) alu_unit ( + .clk (clk), + .reset (reset), + .alu_req_if (alu_req_if), + .alu_wb_if (alu_wb_if) + ); + + VX_branch_unit #( + .CORE_ID(CORE_ID) + ) branch_unit ( + .clk (clk), + .reset (reset), + .branch_req_if (branch_req_if), + .branch_rsp_if (branch_rsp_if), + .branch_wb_if (branch_wb_if) + ); + + VX_lsu_unit #( + .CORE_ID(CORE_ID) + ) lsu_unit ( + `SCOPE_SIGNALS_LSU_BIND + .clk (clk), + .reset (reset), + .dcache_req_if (dcache_req_if), + .dcache_rsp_if (dcache_rsp_if), + .lsu_req_if (lsu_req_if), + .lsu_wb_if (lsu_wb_if) + ); + + VX_csr_pipe #( + .CORE_ID(CORE_ID) + ) csr_pipe ( + .clk (clk), + .reset (reset), + .csr_req_if (csr_req_if), + .csr_io_req_if (csr_io_req_if), + .csr_wb_if (csr_wb_if), + .csr_io_rsp_if (csr_io_rsp_if), + .notify_commit (notify_commit) + ); + + VX_mul_unit #( + .CORE_ID(CORE_ID) + ) mul_unit ( + .clk (clk), + .reset (reset), + .mul_req_if (mul_req_if), + .mul_wb_if (mul_wb_if) + ); + + VX_gpu_unit #( + .CORE_ID(CORE_ID) + ) gpu_unit ( + .gpu_req_if (gpu_req_if), + .warp_ctl_if (warp_ctl_if) + ); + + assign ebreak = (| branch_req_if.valid) && (branch_req_if.br_op == `BR_EBREAK || branch_req_if.br_op == `BR_ECALL); + + `SCOPE_ASSIGN(scope_decode_valid, decode_if.valid); + `SCOPE_ASSIGN(scope_decode_warp_num, decode_if.warp_num); + `SCOPE_ASSIGN(scope_decode_curr_PC, decode_if.curr_PC); + `SCOPE_ASSIGN(scope_decode_is_jal, decode_if.is_jal); + `SCOPE_ASSIGN(scope_decode_rs1, decode_if.rs1); + `SCOPE_ASSIGN(scope_decode_rs2, decode_if.rs2); + + `SCOPE_ASSIGN(scope_execute_valid, alu_req_if.valid); + `SCOPE_ASSIGN(scope_execute_warp_num, alu_req_if.warp_num); + `SCOPE_ASSIGN(scope_execute_curr_PC, alu_req_if.curr_PC); + `SCOPE_ASSIGN(scope_execute_rd, alu_req_if.rd); + `SCOPE_ASSIGN(scope_execute_a, alu_req_if.rs1_data); + `SCOPE_ASSIGN(scope_execute_b, alu_req_if.rs2_data); + + `SCOPE_ASSIGN(scope_writeback_valid, writeback_if.valid); + `SCOPE_ASSIGN(scope_writeback_warp_num, writeback_if.warp_num); + `SCOPE_ASSIGN(scope_writeback_curr_PC, writeback_if.curr_PC); + `SCOPE_ASSIGN(scope_writeback_wb, writeback_if.wb); + `SCOPE_ASSIGN(scope_writeback_rd, writeback_if.rd); + `SCOPE_ASSIGN(scope_writeback_data, writeback_if.data); + +endmodule diff --git a/hw/rtl/VX_fetch.v b/hw/rtl/VX_fetch.v index 810f0317..2f38adac 100644 --- a/hw/rtl/VX_fetch.v +++ b/hw/rtl/VX_fetch.v @@ -1,99 +1,56 @@ `include "VX_define.vh" -module VX_fetch ( - input wire clk, - input wire reset, - VX_wstall_if wstall_if, - VX_join_if join_if, - input wire schedule_delay, - input wire icache_stage_delay, - input wire[`NW_BITS-1:0] icache_stage_wid, - input wire icache_stage_response, - output wire busy, - VX_jal_rsp_if jal_rsp_if, - VX_branch_rsp_if branch_rsp_if, - VX_inst_meta_if fe_inst_meta_fi, - VX_warp_ctl_if warp_ctl_if +module VX_fetch #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + // Icache interface + VX_cache_core_req_if icache_req_if, + VX_cache_core_rsp_if icache_rsp_if, + + // inputs + VX_wstall_if wstall_if, + VX_join_if join_if, + VX_branch_rsp_if branch_rsp_if, + VX_warp_ctl_if warp_ctl_if, + + // outputs + VX_ifetch_rsp_if ifetch_rsp_if, + + output wire busy ); - wire[`NUM_THREADS-1:0] thread_mask; - wire[`NW_BITS-1:0] warp_num; - wire[31:0] warp_pc; - wire scheduled_warp; + VX_ifetch_req_if ifetch_req_if(); - wire pipe_stall = schedule_delay || icache_stage_delay; - - VX_warp_sched warp_sched ( + VX_warp_sched #( + .CORE_ID(CORE_ID) + ) warp_sched ( .clk (clk), - .reset (reset), - .stall (pipe_stall), + .reset (reset), + .warp_ctl_if (warp_ctl_if), + .wstall_if (wstall_if), + .join_if (join_if), + .branch_rsp_if (branch_rsp_if), + .ifetch_req_if (ifetch_req_if), + .ifetch_rsp_if (ifetch_rsp_if), + .busy (busy) + ); - .is_barrier (warp_ctl_if.is_barrier), - .barrier_id (warp_ctl_if.barrier_id), - .num_warps (warp_ctl_if.num_warps), - .barrier_warp_num (warp_ctl_if.warp_num), + VX_icache_stage #( + .CORE_ID(CORE_ID) + ) icache_stage ( + `SCOPE_SIGNALS_ISTAGE_BIND - // Wspawn - .wspawn (warp_ctl_if.wspawn), - .wsapwn_pc (warp_ctl_if.wspawn_pc), - .wspawn_new_active(warp_ctl_if.wspawn_new_active), + .clk (clk), + .reset (reset), - // CTM - .ctm (warp_ctl_if.change_mask), - .ctm_mask (warp_ctl_if.thread_mask), - .ctm_warp_num (warp_ctl_if.warp_num), + .icache_rsp_if (icache_rsp_if), + .icache_req_if (icache_req_if), - // WHALT - .whalt (warp_ctl_if.whalt), - .whalt_warp_num (warp_ctl_if.warp_num), - - // Wstall - .wstall (wstall_if.wstall), - .wstall_warp_num (wstall_if.warp_num), - - // Lock/release Stuff - .icache_stage_response(icache_stage_response), - .icache_stage_wid (icache_stage_wid), - - // Join - .is_join (join_if.is_join), - .join_warp_num (join_if.warp_num), - - // Split - .is_split (warp_ctl_if.is_split), - .dont_split (warp_ctl_if.dont_split), - .split_new_mask (warp_ctl_if.split_new_mask), - .split_later_mask (warp_ctl_if.split_later_mask), - .split_save_pc (warp_ctl_if.split_save_pc), - .split_warp_num (warp_ctl_if.warp_num), - - // JAL - .jal (jal_rsp_if.valid), - .dest (jal_rsp_if.dest), - .jal_warp_num (jal_rsp_if.warp_num), - - // Branch - .branch_valid (branch_rsp_if.valid), - .branch_dir (branch_rsp_if.dir), - .branch_dest (branch_rsp_if.dest), - .branch_warp_num (branch_rsp_if.warp_num), - - // Outputs - .thread_mask (thread_mask), - .warp_num (warp_num), - .warp_pc (warp_pc), - .busy (busy), - .scheduled_warp (scheduled_warp) + .ifetch_req_if (ifetch_req_if), + .ifetch_rsp_if (ifetch_rsp_if) ); - assign fe_inst_meta_fi.warp_num = warp_num; - assign fe_inst_meta_fi.valid = thread_mask; - assign fe_inst_meta_fi.instruction = 32'h0; - assign fe_inst_meta_fi.curr_PC = warp_pc; - -`DEBUG_BEGIN - wire start_mat_add = scheduled_warp && (warp_pc == 32'h80000ed8) && (warp_num == 0); - wire end_mat_add = scheduled_warp && (warp_pc == 32'h80000fbc) && (warp_num == 0); -`DEBUG_END - endmodule \ No newline at end of file diff --git a/hw/rtl/VX_front_end.v b/hw/rtl/VX_front_end.v deleted file mode 100644 index 8ceba8df..00000000 --- a/hw/rtl/VX_front_end.v +++ /dev/null @@ -1,116 +0,0 @@ -`include "VX_define.vh" - -module VX_front_end #( - parameter CORE_ID = 0 -) ( - `SCOPE_SIGNALS_ISTAGE_IO - - input wire clk, - input wire reset, - - input wire schedule_delay, - - VX_warp_ctl_if warp_ctl_if, - - VX_cache_core_rsp_if icache_rsp_if, - VX_cache_core_req_if icache_req_if, - - VX_jal_rsp_if jal_rsp_if, - VX_branch_rsp_if branch_rsp_if, - - VX_backend_req_if bckE_req_if, - output wire busy -); - - VX_inst_meta_if fe_inst_meta_fi(); - VX_inst_meta_if fe_inst_meta_fi2(); - VX_inst_meta_if fe_inst_meta_id(); - - VX_backend_req_if frE_to_bckE_req_if(); - VX_inst_meta_if fd_inst_meta_de(); - - wire total_freeze = schedule_delay; - wire icache_stage_delay; - - wire[`NW_BITS-1:0] icache_stage_wid; - wire icache_stage_response; - - VX_wstall_if wstall_if(); - VX_join_if join_if(); - - VX_fetch fetch ( - .clk (clk), - .reset (reset), - .icache_stage_wid (icache_stage_wid), - .icache_stage_response(icache_stage_response), - .wstall_if (wstall_if), - .join_if (join_if), - .schedule_delay (schedule_delay), - .jal_rsp_if (jal_rsp_if), - .warp_ctl_if (warp_ctl_if), - .icache_stage_delay (icache_stage_delay), - .branch_rsp_if (branch_rsp_if), - .busy (busy), - .fe_inst_meta_fi (fe_inst_meta_fi) - ); - - VX_generic_register #( - .N(64+`NW_BITS-1+1+`NUM_THREADS) - ) f_d_reg ( - .clk (clk), - .reset (reset), - .stall (icache_stage_delay), - .flush (1'b0), - .in ({fe_inst_meta_fi.instruction, fe_inst_meta_fi.curr_PC, fe_inst_meta_fi.warp_num, fe_inst_meta_fi.valid}), - .out ({fe_inst_meta_fi2.instruction, fe_inst_meta_fi2.curr_PC, fe_inst_meta_fi2.warp_num, fe_inst_meta_fi2.valid}) - ); - - VX_icache_stage #( - .CORE_ID(CORE_ID) - ) icache_stage ( - `SCOPE_SIGNALS_ISTAGE_BIND - - .clk (clk), - .reset (reset), - .total_freeze (total_freeze), - .icache_stage_delay (icache_stage_delay), - .icache_stage_response(icache_stage_response), - .icache_stage_wid (icache_stage_wid), - .fe_inst_meta_fi (fe_inst_meta_fi2), - .fe_inst_meta_id (fe_inst_meta_id), - .icache_rsp_if (icache_rsp_if), - .icache_req_if (icache_req_if) - ); - - VX_generic_register #( - .N(64 + `NW_BITS-1 + 1 + `NUM_THREADS) - ) i_d_reg ( - .clk (clk), - .reset (reset), - .stall (total_freeze), - .flush (1'b0), - .in ({fe_inst_meta_id.instruction, fe_inst_meta_id.curr_PC, fe_inst_meta_id.warp_num, fe_inst_meta_id.valid}), - .out ({fd_inst_meta_de.instruction, fd_inst_meta_de.curr_PC, fd_inst_meta_de.warp_num, fd_inst_meta_de.valid}) - ); - - VX_decode decode ( - .fd_inst_meta_de (fd_inst_meta_de), - .frE_to_bckE_req_if (frE_to_bckE_req_if), - .wstall_if (wstall_if), - .join_if (join_if) - ); - - VX_generic_register #( - .N(233 + `NW_BITS-1 + 1 + `NUM_THREADS) - ) d_e_reg ( - .clk (clk), - .reset (reset), - .stall (total_freeze), - .flush (1'b0), - .in ({frE_to_bckE_req_if.csr_addr, frE_to_bckE_req_if.is_jal, frE_to_bckE_req_if.is_etype, frE_to_bckE_req_if.is_csr, frE_to_bckE_req_if.csr_immed, frE_to_bckE_req_if.csr_mask, frE_to_bckE_req_if.rd, frE_to_bckE_req_if.rs1, frE_to_bckE_req_if.rs2, frE_to_bckE_req_if.alu_op, frE_to_bckE_req_if.wb, frE_to_bckE_req_if.rs2_src, frE_to_bckE_req_if.itype_immed, frE_to_bckE_req_if.mem_read, frE_to_bckE_req_if.mem_write, frE_to_bckE_req_if.branch_type, frE_to_bckE_req_if.upper_immed, frE_to_bckE_req_if.curr_PC, frE_to_bckE_req_if.jal, frE_to_bckE_req_if.jal_offset, frE_to_bckE_req_if.next_PC, frE_to_bckE_req_if.valid, frE_to_bckE_req_if.warp_num, frE_to_bckE_req_if.is_wspawn, frE_to_bckE_req_if.is_tmc, frE_to_bckE_req_if.is_split, frE_to_bckE_req_if.is_barrier}), - .out ({bckE_req_if.csr_addr , bckE_req_if.is_jal , bckE_req_if.is_etype ,bckE_req_if.is_csr , bckE_req_if.csr_immed , bckE_req_if.csr_mask , bckE_req_if.rd , bckE_req_if.rs1 , bckE_req_if.rs2 , bckE_req_if.alu_op , bckE_req_if.wb , bckE_req_if.rs2_src , bckE_req_if.itype_immed , bckE_req_if.mem_read , bckE_req_if.mem_write , bckE_req_if.branch_type , bckE_req_if.upper_immed , bckE_req_if.curr_PC , bckE_req_if.jal , bckE_req_if.jal_offset , bckE_req_if.next_PC , bckE_req_if.valid , bckE_req_if.warp_num , bckE_req_if.is_wspawn , bckE_req_if.is_tmc , bckE_req_if.is_split , bckE_req_if.is_barrier }) - ); - -endmodule - - diff --git a/hw/rtl/VX_gpr_mux.v b/hw/rtl/VX_gpr_mux.v new file mode 100644 index 00000000..6bec71da --- /dev/null +++ b/hw/rtl/VX_gpr_mux.v @@ -0,0 +1,88 @@ +`include "VX_define.vh" + +module VX_gpr_mux ( + // inputs + VX_execute_if execute_if, + input wire [`NUM_THREADS-1:0][31:0] rs1_data, + input wire [`NUM_THREADS-1:0][31:0] rs2_data, + + // outputs + VX_alu_req_if alu_req_if, + VX_branch_req_if branch_req_if, + VX_lsu_req_if lsu_req_if, + VX_csr_req_if csr_req_if, + VX_mul_req_if mul_req_if, + VX_gpu_req_if gpu_req_if +); + + wire[`NUM_THREADS-1:0] is_alu = {`NUM_THREADS{execute_if.ex_type == `EX_ALU}}; + wire[`NUM_THREADS-1:0] is_br = {`NUM_THREADS{execute_if.ex_type == `EX_BR}}; + wire[`NUM_THREADS-1:0] is_lsu = {`NUM_THREADS{execute_if.ex_type == `EX_LSU}}; + wire[`NUM_THREADS-1:0] is_csr = {`NUM_THREADS{execute_if.ex_type == `EX_CSR}}; + wire[`NUM_THREADS-1:0] is_mul = {`NUM_THREADS{execute_if.ex_type == `EX_MUL}}; + wire[`NUM_THREADS-1:0] is_gpu = {`NUM_THREADS{execute_if.ex_type == `EX_GPU}}; + + // ALU unit + assign alu_req_if.valid = execute_if.valid & is_alu; + assign alu_req_if.warp_num = execute_if.warp_num; + assign alu_req_if.curr_PC = execute_if.curr_PC; + assign alu_req_if.alu_op = `ALU_OP(execute_if.instr_op); + assign alu_req_if.rd = execute_if.rd; + assign alu_req_if.wb = execute_if.wb; + assign alu_req_if.rs1_data = rs1_data; + assign alu_req_if.rs2_data = rs2_data; + + // BR unit + assign branch_req_if.valid = execute_if.valid & is_br; + assign branch_req_if.warp_num = execute_if.warp_num; + assign branch_req_if.curr_PC = execute_if.curr_PC; + assign branch_req_if.br_op = `BR_OP(execute_if.instr_op); + assign branch_req_if.offset = execute_if.imm; + assign branch_req_if.next_PC = execute_if.next_PC; + assign branch_req_if.rs1_data = rs1_data; + assign branch_req_if.rs2_data = rs2_data; + assign branch_req_if.rd = execute_if.rd; + assign branch_req_if.wb = execute_if.wb; + + // LSU unit + assign lsu_req_if.valid = execute_if.valid & is_lsu; + assign lsu_req_if.warp_num = execute_if.warp_num; + assign lsu_req_if.curr_PC = execute_if.curr_PC; + assign lsu_req_if.base_addr = rs1_data; + assign lsu_req_if.store_data = rs2_data; + assign lsu_req_if.offset = execute_if.imm; + assign lsu_req_if.rw = `LSU_RW(execute_if.instr_op); + assign lsu_req_if.byteen = `LSU_BE(execute_if.instr_op); + assign lsu_req_if.rd = execute_if.rd; + assign lsu_req_if.wb = execute_if.wb; + + // CSR unit + assign csr_req_if.valid = execute_if.valid & is_csr; + assign csr_req_if.warp_num = execute_if.warp_num; + assign csr_req_if.curr_PC = execute_if.curr_PC; + assign csr_req_if.csr_op = `CSR_OP(execute_if.instr_op); + assign csr_req_if.csr_addr = execute_if.imm[`CSR_ADDR_SIZE-1:0]; + assign csr_req_if.csr_mask = execute_if.rs2_is_imm ? 32'(execute_if.rs1) : rs1_data[0]; + assign csr_req_if.rd = execute_if.rd; + assign csr_req_if.wb = execute_if.wb; + assign csr_req_if.is_io = 1'b0; + + // MUL unit + assign mul_req_if.valid = execute_if.valid & is_mul; + assign mul_req_if.warp_num = execute_if.warp_num; + assign mul_req_if.curr_PC = execute_if.curr_PC; + assign mul_req_if.mul_op = `MUL_OP(execute_if.instr_op); + assign mul_req_if.rs1_data = rs1_data; + assign mul_req_if.rs2_data = rs2_data; + assign mul_req_if.rd = execute_if.rd; + assign mul_req_if.wb = execute_if.wb; + + // GPU unit + assign gpu_req_if.valid = execute_if.valid & is_gpu; + assign gpu_req_if.warp_num = execute_if.warp_num; + assign gpu_req_if.next_PC = execute_if.next_PC; + assign gpu_req_if.gpu_op = `GPU_OP(execute_if.instr_op); + assign gpu_req_if.rs1_data = rs1_data; + assign gpu_req_if.rs2_data = rs2_data[0]; + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_ram.v b/hw/rtl/VX_gpr_ram.v index d30b6a91..fa3fc004 100644 --- a/hw/rtl/VX_gpr_ram.v +++ b/hw/rtl/VX_gpr_ram.v @@ -1,81 +1,75 @@ `include "VX_define.vh" module VX_gpr_ram ( - input wire clk, - input wire reset, - input wire write_ce, - VX_gpr_read_if gpr_read_if, - VX_wb_if writeback_if, + input wire clk, + input wire [`NUM_THREADS-1:0] we, + input wire [`NR_BITS-1:0] waddr, + input wire [`NUM_THREADS-1:0][31:0] wdata, + input wire [`NR_BITS-1:0] rs1, + input wire [`NR_BITS-1:0] rs2, + output wire [`NUM_THREADS-1:0][31:0] rs1_data, + output wire [`NUM_THREADS-1:0][31:0] rs2_data +); + `ifndef ASIC - output wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] a_reg_data, - output wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] b_reg_data -); - wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] a_reg_data_unqual; - wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] b_reg_data_unqual; + reg [`NUM_THREADS-1:0][3:0][7:0] ram [31:0]; - assign a_reg_data = (gpr_read_if.rs1 != 0) ? a_reg_data_unqual : 0; - assign b_reg_data = (gpr_read_if.rs2 != 0) ? b_reg_data_unqual : 0; + integer i; - wire [`NUM_THREADS-1:0] write_enable = writeback_if.valid & {`NUM_THREADS{write_ce && (writeback_if.wb != 0)}}; - - `ifndef ASIC - `UNUSED_VAR(reset) - - reg [`NUM_THREADS-1:0][3:0][7:0] ram[31:0]; - - wire [4:0] waddr = writeback_if.rd; - wire [`NUM_THREADS-1:0][31:0] wdata = writeback_if.data; + initial begin + // initialize r0 to 0 + for (i = 0; i < `NUM_THREADS; i++) begin + ram[i][0] = 0; + ram[i][1] = 0; + ram[i][2] = 0; + ram[i][3] = 0; + end + end - genvar i; - for (i = 0; i < `NUM_THREADS; i++) begin - always @(posedge clk) begin - if (write_enable[i]) begin + always @(posedge clk) begin + for (i = 0; i < `NUM_THREADS; i++) begin + if (we[i]) begin ram[waddr][i][0] <= wdata[i][07:00]; ram[waddr][i][1] <= wdata[i][15:08]; ram[waddr][i][2] <= wdata[i][23:16]; ram[waddr][i][3] <= wdata[i][31:24]; end end + assert(~(|we) || (waddr != 0)); // ensure r0 is never written! end - assign a_reg_data_unqual = ram[gpr_read_if.rs1]; - assign b_reg_data_unqual = ram[gpr_read_if.rs2]; + assign rs1_data = ram[rs1]; + assign rs2_data = ram[rs2]; `else - wire going_to_write = write_enable & (| writeback_if.wb_valid); - wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] write_bit_mask; + wire [`NUM_THREADS-1:0][31:0] write_bit_mask; - genvar i; + integer i; for (i = 0; i < `NUM_THREADS; i++) begin - wire local_write = write_enable & writeback_if.wb_valid[i]; - assign write_bit_mask[i] = {`NUM_GPRS{~local_write}}; + assign write_bit_mask[i] = {32{~we[i]}}; end wire cenb = 0; wire cena_1 = 0; wire cena_2 = 0; - wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] tmp_a; - wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] tmp_b; + wire [`NUM_THREADS-1:0][31:0] tmp_a; + wire [`NUM_THREADS-1:0][31:0] tmp_b; `ifndef SYNTHESIS - genvar j; + integer j; for (i = 0; i < `NUM_THREADS; i++) begin - for (j = 0; j < `NUM_GPRS; j++) begin - assign a_reg_data_unqual[i][j] = ((tmp_a[i][j] === 1'dx) || cena_1) ? 1'b0 : tmp_a[i][j]; - assign b_reg_data_unqual[i][j] = ((tmp_b[i][j] === 1'dx) || cena_2) ? 1'b0 : tmp_b[i][j]; + for (j = 0; j < 32; j++) begin + assign rs1_data[i][j] = ((tmp_a[i][j] === 1'dx) || cena_1) ? 1'b0 : tmp_a[i][j]; + assign rs2_data[i][j] = ((tmp_b[i][j] === 1'dx) || cena_2) ? 1'b0 : tmp_b[i][j]; end end `else - assign a_reg_data_unqual = tmp_a; - assign b_reg_data_unqual = tmp_b; + assign rs1_data = tmp_a; + assign rs2_data = tmp_b; `endif - - wire [`NUM_THREADS-1:0][`NUM_GPRS-1:0] to_write = writeback_if.write_data; - - for (i = 0; i < 'NT; i=i+4) - begin + for (i = 0; i < 'NT; i=i+4) begin `IGNORE_WARNINGS_BEGIN rf2_32x128_wm1 first_ram ( .CENYA(), @@ -88,12 +82,12 @@ module VX_gpr_ram ( .SOB(), .CLKA(clk), .CENA(cena_1), - .AA(gpr_read_if.rs1[(i+3):(i)]), + .AA(rs1[(i+3):(i)]), .CLKB(clk), .CENB(cenb), .WENB(write_bit_mask[(i+3):(i)]), - .AB(writeback_if.rd[(i+3):(i)]), - .DB(to_write[(i+3):(i)]), + .AB(waddr[(i+3):(i)]), + .DB(wdata[(i+3):(i)]), .EMAA(3'b011), .EMASA(1'b0), .EMAB(3'b011), @@ -125,12 +119,12 @@ module VX_gpr_ram ( .SOB(), .CLKA(clk), .CENA(cena_2), - .AA(gpr_read_if.rs2[(i+3):(i)]), + .AA(rs2[(i+3):(i)]), .CLKB(clk), .CENB(cenb), .WENB(write_bit_mask[(i+3):(i)]), - .AB(writeback_if.rd[(i+3):(i)]), - .DB(to_write[(i+3):(i)]), + .AB(waddr[(i+3):(i)]), + .DB(wdata[(i+3):(i)]), .EMAA(3'b011), .EMASA(1'b0), .EMAB(3'b011), diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index e0f5f865..85c40d02 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -1,226 +1,172 @@ `include "VX_define.vh" -module VX_gpr_stage ( - input wire clk, - input wire reset, - input wire schedule_delay, +module VX_gpr_stage #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, - input wire memory_delay, - input wire exec_delay, - input wire stall_gpr_csr, - output wire delay, + // inputs + VX_execute_if execute_if, + VX_wb_if writeback_if, - // decodee inputs - VX_backend_req_if bckE_req_if, - - // WriteBack inputs - VX_wb_if writeback_if, - - // Outputs - VX_exec_unit_req_if exec_unit_req_if, - VX_lsu_req_if lsu_req_if, - VX_gpu_inst_req_if gpu_inst_req_if, - VX_csr_req_if csr_req_if + // outputs + VX_alu_req_if alu_req_if, + VX_branch_req_if branch_req_if, + VX_lsu_req_if lsu_req_if, + VX_csr_req_if csr_req_if, + VX_mul_req_if mul_req_if, + VX_gpu_req_if gpu_req_if ); -`DEBUG_BEGIN - wire[31:0] curr_PC = bckE_req_if.curr_PC; - wire[2:0] branchType = bckE_req_if.branch_type; - wire is_store = (bckE_req_if.mem_write != `BYTE_EN_NO); - wire is_load = (bckE_req_if.mem_read != `BYTE_EN_NO); - wire is_jal = bckE_req_if.is_jal; -`DEBUG_END + wire [`NUM_THREADS-1:0][31:0] rs1_data_all [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs2_data_all [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + wire [`NUM_THREADS-1:0][31:0] rs1_PC; + wire [`NUM_THREADS-1:0][31:0] rs2_imm; + wire [`NUM_THREADS-1:0] we [`NUM_WARPS-1:0]; - assign csr_req_if.is_io = 1'b0; // GPR only issues csr requests coming from core + genvar i; - VX_gpr_read_if gpr_read_if(); - assign gpr_read_if.rs1 = bckE_req_if.rs1; - assign gpr_read_if.rs2 = bckE_req_if.rs2; - assign gpr_read_if.warp_num = bckE_req_if.warp_num; + for (i = 0; i < `NUM_THREADS; i++) begin + assign rs1_PC[i] = execute_if.curr_PC; + assign rs2_imm[i] = execute_if.imm; + end -`ifndef ASIC - assign gpr_read_if.is_jal = bckE_req_if.is_jal; - assign gpr_read_if.curr_PC = bckE_req_if.curr_PC; -`else - assign gpr_read_if.is_jal = exec_unit_req_if.is_jal; - assign gpr_read_if.curr_PC = exec_unit_req_if.curr_PC; -`endif + assign rs1_data = execute_if.rs1_is_PC ? rs1_PC : rs1_data_all[execute_if.warp_num]; + assign rs2_data = execute_if.rs2_is_imm ? rs2_imm : rs2_data_all[execute_if.warp_num]; - VX_gpr_wrapper grp_wrapper ( - .clk (clk), - .reset (reset), - .writeback_if (writeback_if), - .gpr_read_if (gpr_read_if) - ); + generate + for (i = 0; i < `NUM_WARPS; i++) begin + assign we[i] = writeback_if.valid & {`NUM_THREADS{(writeback_if.wb != 0) && (i == writeback_if.warp_num)}}; + VX_gpr_ram gpr_ram ( + .clk (clk), + .we (we[i]), + .waddr (writeback_if.rd), + .wdata (writeback_if.data), + .rs1 (execute_if.rs1), + .rs2 (execute_if.rs2), + .rs1_data (rs1_data_all[i]), + .rs2_data (rs2_data_all[i]) + ); + end + endgenerate - // Outputs - VX_exec_unit_req_if exec_unit_req_temp_if(); - VX_lsu_req_if lsu_req_temp_if(); - VX_gpu_inst_req_if gpu_inst_req_temp_if(); - VX_csr_req_if csr_req_temp_if(); + VX_alu_req_if alu_req_tmp_if(); + VX_branch_req_if branch_req_tmp_if(); + VX_lsu_req_if lsu_req_tmp_if(); + VX_csr_req_if csr_req_tmp_if(); + VX_mul_req_if mul_req_tmp_if(); + VX_gpu_req_if gpu_req_tmp_if(); - VX_inst_multiplex inst_mult( - .bckE_req_if (bckE_req_if), - .gpr_read_if (gpr_read_if), - .exec_unit_req_if (exec_unit_req_temp_if), - .lsu_req_if (lsu_req_temp_if), - .gpu_inst_req_if (gpu_inst_req_temp_if), - .csr_req_if (csr_req_temp_if) - ); + VX_gpr_mux gpr_mux ( + .execute_if (execute_if), + .rs1_data (rs1_data), + .rs2_data (rs2_data), + .alu_req_if (alu_req_if), + .branch_req_if (branch_req_tmp_if), + .lsu_req_if (lsu_req_tmp_if), + .csr_req_if (csr_req_tmp_if), + .mul_req_if (mul_req_tmp_if), + .gpu_req_if (gpu_req_tmp_if) + ); -`DEBUG_BEGIN - wire is_lsu = (| lsu_req_temp_if.valid); -`DEBUG_END - wire stall_rest = 0; - wire flush_rest = schedule_delay; + wire stall_alu = ~alu_req_if.ready && (| alu_req_if.valid); + wire stall_br = ~branch_req_if.ready && (| branch_req_if.valid); + wire stall_lsu = ~lsu_req_if.ready && (| lsu_req_if.valid); + wire stall_csr = ~csr_req_if.ready && (| csr_req_if.valid); + wire stall_mul = ~mul_req_if.ready && (| mul_req_if.valid); + wire stall_gpu = ~gpu_req_if.ready && (| gpu_req_if.valid); - wire stall_lsu = memory_delay; - wire flush_lsu = schedule_delay && !stall_lsu; - - wire stall_exec = exec_delay; - wire flush_exec = schedule_delay && !stall_exec; - - wire stall_csr = stall_gpr_csr && bckE_req_if.is_csr && (| bckE_req_if.valid); - - assign delay = stall_lsu || stall_exec || stall_csr; - -`ifdef ASIC - wire delayed_lsu_last_cycle; - - VX_generic_register #( - .N(1) - ) delayed_reg ( - .clk (clk), - .reset (reset), - .stall (stall_rest), - .flush (stall_rest), - .in (stall_lsu), - .out (delayed_lsu_last_cycle), - `UNUSED_PIN (size) - ); - - wire [`NUM_THREADS-1:0][31:0] temp_store_data; - wire [`NUM_THREADS-1:0][31:0] temp_base_addr; // A reg data - - wire [`NUM_THREADS-1:0][31:0] real_store_data; - wire [`NUM_THREADS-1:0][31:0] real_base_addr; // A reg data - - wire store_curr_real = !delayed_lsu_last_cycle && stall_lsu; - - VX_generic_register #( - .N(`NUM_THREADS*32*2) - ) lsu_data ( - .clk (clk), - .reset (reset), - .stall (!store_curr_real), - .flush (stall_rest), - .in ({real_store_data, real_base_addr}), - .out ({temp_store_data, temp_base_addr}) - ); - - assign real_store_data = lsu_req_temp_if.store_data; - assign real_base_addr = lsu_req_temp_if.base_addr; - - assign lsu_req_if.store_data = (delayed_lsu_last_cycle) ? temp_store_data : real_store_data; - assign lsu_req_if.base_addr = (delayed_lsu_last_cycle) ? temp_base_addr : real_base_addr; - - VX_generic_register #( - .N(77 + `NW_BITS-1 + 1 + (`NUM_THREADS)) - ) lsu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_lsu), - .flush (flush_lsu), - .in ({lsu_req_temp_if.valid, lsu_req_temp_if.curr_PC, lsu_req_temp_if.warp_num, lsu_req_temp_if.offset, lsu_req_temp_if.mem_read, lsu_req_temp_if.mem_write, lsu_req_temp_if.rd, lsu_req_temp_if.wb}), - .out ({lsu_req_if.valid , lsu_req_if.curr_PC ,lsu_req_if.warp_num , lsu_req_if.offset , lsu_req_if.mem_read , lsu_req_if.mem_write , lsu_req_if.rd , lsu_req_if.wb }) - ); - - VX_generic_register #( - .N(224 + `NW_BITS-1 + 1 + (`NUM_THREADS)) - ) exec_unit_reg ( - .clk (clk), - .reset (reset), - .stall (stall_exec), - .flush (flush_exec), - .in ({exec_unit_req_temp_if.valid, exec_unit_req_temp_if.warp_num, exec_unit_req_temp_if.curr_PC, exec_unit_req_temp_if.next_PC, exec_unit_req_temp_if.rd, exec_unit_req_temp_if.wb, exec_unit_req_temp_if.alu_op, exec_unit_req_temp_if.rs1, exec_unit_req_temp_if.rs2, exec_unit_req_temp_if.rs2_src, exec_unit_req_temp_if.itype_immed, exec_unit_req_temp_if.upper_immed, exec_unit_req_temp_if.branch_type, exec_unit_req_temp_if.is_jal, exec_unit_req_temp_if.jal, exec_unit_req_temp_if.jal_offset, exec_unit_req_temp_if.is_etype, exec_unit_req_temp_if.wspawn, exec_unit_req_temp_if.is_csr, exec_unit_req_temp_if.csr_addr, exec_unit_req_temp_if.csr_immed, exec_unit_req_temp_if.csr_mask}), - .out ({exec_unit_req_if.valid , exec_unit_req_if.warp_num , exec_unit_req_if.curr_PC , exec_unit_req_if.next_PC , exec_unit_req_if.rd , exec_unit_req_if.wb , exec_unit_req_if.alu_op , exec_unit_req_if.rs1 , exec_unit_req_if.rs2 , exec_unit_req_if.rs2_src , exec_unit_req_if.itype_immed , exec_unit_req_if.upper_immed , exec_unit_req_if.branch_type , exec_unit_req_if.is_jal , exec_unit_req_if.jal , exec_unit_req_if.jal_offset , exec_unit_req_if.is_etype , exec_unit_req_if.wspawn , exec_unit_req_if.is_csr , exec_unit_req_if.csr_addr , exec_unit_req_if.csr_immed , exec_unit_req_if.csr_mask }) - ); - - assign exec_unit_req_if.a_reg_data = real_base_addr; - assign exec_unit_req_if.b_reg_data = real_store_data; - - VX_generic_register #( - .N(36 + `NW_BITS-1 + 1 + (`NUM_THREADS)) - ) gpu_inst_reg ( - .clk (clk), - .reset (reset), - .stall (stall_rest), - .flush (flush_rest), - .in ({gpu_inst_req_temp_if.valid, gpu_inst_req_temp_if.warp_num, gpu_inst_req_temp_if.is_wspawn, gpu_inst_req_temp_if.is_tmc, gpu_inst_req_temp_if.is_split, gpu_inst_req_temp_if.is_barrier, gpu_inst_req_temp_if.next_PC}), - .out ({gpu_inst_req_if.valid , gpu_inst_req_if.warp_num , gpu_inst_req_if.is_wspawn , gpu_inst_req_if.is_tmc , gpu_inst_req_if.is_split , gpu_inst_req_if.is_barrier , gpu_inst_req_if.next_PC }) - ); - - assign gpu_inst_req_if.a_reg_data = real_base_addr; - assign gpu_inst_req_if.rd2 = real_store_data; - - VX_generic_register #( - .N(`NW_BITS-1 + 1 + `NUM_THREADS + 58) - ) csr_reg ( - .clk (clk), - .reset (reset), - .stall (stall_gpr_csr), - .flush (flush_rest), - .in ({csr_req_temp_if.valid, csr_req_temp_if.warp_num, csr_req_temp_if.rd, csr_req_temp_if.wb, csr_req_temp_if.alu_op, csr_req_temp_if.is_csr, csr_req_temp_if.csr_addr, csr_req_temp_if.csr_immed, csr_req_temp_if.csr_mask}), - .out ({csr_req_if.valid , csr_req_if.warp_num , csr_req_if.rd , csr_req_if.wb , csr_req_if.alu_op , csr_req_if.is_csr , csr_req_if.csr_addr , csr_req_if.csr_immed , csr_req_if.csr_mask }) - ); - - -`else - - // 341 VX_generic_register #( - .N(77 + `NW_BITS-1 + 1 + 65*(`NUM_THREADS)) + .N(`NUM_THREADS +`NW_BITS + 32 + `ALU_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `NR_BITS + `WB_BITS) + ) alu_reg ( + .clk (clk), + .reset (reset), + .stall (stall_alu), + .flush (0), + .in ({alu_req_tmp_if.valid, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.alu_op, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.rd, alu_req_tmp_if.wb}), + .out ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.alu_op, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.rd, alu_req_if.wb}) + ); + + VX_generic_register #( + .N(`NUM_THREADS +`NW_BITS + 32 + 32 + `BR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + `NR_BITS + `WB_BITS) + ) br_reg ( + .clk (clk), + .reset (reset), + .stall (stall_br), + .flush (0), + .in ({branch_req_tmp_if.valid, branch_req_tmp_if.warp_num, branch_req_tmp_if.curr_PC, branch_req_tmp_if.next_PC, branch_req_tmp_if.br_op, branch_req_tmp_if.rs1_data, branch_req_tmp_if.rs2_data, branch_req_tmp_if.offset, branch_req_tmp_if.rd, branch_req_tmp_if.wb}), + .out ({branch_req_if.valid, branch_req_if.warp_num, branch_req_if.curr_PC, branch_req_if.next_PC, branch_req_if.br_op, branch_req_if.rs1_data, branch_req_if.rs2_data, branch_req_if.offset, branch_req_if.rd, branch_req_if.wb}) + ); + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 1 + `BYTEEN_BITS + `NR_BITS + `WB_BITS) ) lsu_reg ( .clk (clk), .reset (reset), .stall (stall_lsu), - .flush (flush_lsu), - .in ({lsu_req_temp_if.valid, lsu_req_temp_if.curr_PC, lsu_req_temp_if.warp_num, lsu_req_temp_if.store_data, lsu_req_temp_if.base_addr, lsu_req_temp_if.offset, lsu_req_temp_if.mem_read, lsu_req_temp_if.mem_write, lsu_req_temp_if.rd, lsu_req_temp_if.wb}), - .out ({lsu_req_if.valid , lsu_req_if.curr_PC , lsu_req_if.warp_num , lsu_req_if.store_data , lsu_req_if.base_addr , lsu_req_if.offset , lsu_req_if.mem_read , lsu_req_if.mem_write , lsu_req_if.rd , lsu_req_if.wb }) + .flush (0), + .in ({lsu_req_tmp_if.valid, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.store_data, lsu_req_tmp_if.offset, lsu_req_tmp_if.rw, lsu_req_tmp_if.byteen, lsu_req_tmp_if.rd, lsu_req_tmp_if.wb}), + .out ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.base_addr, lsu_req_if.store_data, lsu_req_if.offset, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.rd, lsu_req_if.wb}) ); VX_generic_register #( - .N(224 + `NW_BITS-1 + 1 + 65*(`NUM_THREADS)) - ) exec_unit_reg ( - .clk (clk), - .reset (reset), - .stall (stall_exec), - .flush (flush_exec), - .in ({exec_unit_req_temp_if.valid, exec_unit_req_temp_if.warp_num, exec_unit_req_temp_if.curr_PC, exec_unit_req_temp_if.next_PC, exec_unit_req_temp_if.rd, exec_unit_req_temp_if.wb, exec_unit_req_temp_if.a_reg_data, exec_unit_req_temp_if.b_reg_data, exec_unit_req_temp_if.alu_op, exec_unit_req_temp_if.rs1, exec_unit_req_temp_if.rs2, exec_unit_req_temp_if.rs2_src, exec_unit_req_temp_if.itype_immed, exec_unit_req_temp_if.upper_immed, exec_unit_req_temp_if.branch_type, exec_unit_req_temp_if.is_jal, exec_unit_req_temp_if.jal, exec_unit_req_temp_if.jal_offset, exec_unit_req_temp_if.is_etype, exec_unit_req_temp_if.wspawn, exec_unit_req_temp_if.is_csr, exec_unit_req_temp_if.csr_addr, exec_unit_req_temp_if.csr_immed, exec_unit_req_temp_if.csr_mask}), - .out ({exec_unit_req_if.valid , exec_unit_req_if.warp_num , exec_unit_req_if.curr_PC , exec_unit_req_if.next_PC , exec_unit_req_if.rd , exec_unit_req_if.wb , exec_unit_req_if.a_reg_data , exec_unit_req_if.b_reg_data , exec_unit_req_if.alu_op , exec_unit_req_if.rs1 , exec_unit_req_if.rs2 , exec_unit_req_if.rs2_src , exec_unit_req_if.itype_immed , exec_unit_req_if.upper_immed , exec_unit_req_if.branch_type , exec_unit_req_if.is_jal , exec_unit_req_if.jal , exec_unit_req_if.jal_offset , exec_unit_req_if.is_etype , exec_unit_req_if.wspawn , exec_unit_req_if.is_csr , exec_unit_req_if.csr_addr , exec_unit_req_if.csr_immed , exec_unit_req_if.csr_mask }) - ); - - VX_generic_register #( - .N(68 + `NW_BITS-1 + 1 + 33*(`NUM_THREADS)) - ) gpu_inst_reg ( - .clk (clk), - .reset (reset), - .stall (stall_rest), - .flush (flush_rest), - .in ({gpu_inst_req_temp_if.valid, gpu_inst_req_temp_if.warp_num, gpu_inst_req_temp_if.is_wspawn, gpu_inst_req_temp_if.is_tmc, gpu_inst_req_temp_if.is_split, gpu_inst_req_temp_if.is_barrier, gpu_inst_req_temp_if.next_PC, gpu_inst_req_temp_if.a_reg_data, gpu_inst_req_temp_if.rd2}), - .out ({gpu_inst_req_if.valid , gpu_inst_req_if.warp_num , gpu_inst_req_if.is_wspawn , gpu_inst_req_if.is_tmc , gpu_inst_req_if.is_split , gpu_inst_req_if.is_barrier , gpu_inst_req_if.next_PC , gpu_inst_req_if.a_reg_data , gpu_inst_req_if.rd2 }) - ); - - VX_generic_register #( - .N(`NW_BITS-1 + 1 + `NUM_THREADS + 58) + .N(`NUM_THREADS + `NW_BITS + 32 + `CSR_BITS + `CSR_ADDR_SIZE + 32 + 1 + `NR_BITS + `WB_BITS) ) csr_reg ( .clk (clk), .reset (reset), - .stall (stall_gpr_csr), - .flush (flush_rest), - .in ({csr_req_temp_if.valid, csr_req_temp_if.warp_num, csr_req_temp_if.rd, csr_req_temp_if.wb, csr_req_temp_if.alu_op, csr_req_temp_if.is_csr, csr_req_temp_if.csr_addr, csr_req_temp_if.csr_immed, csr_req_temp_if.csr_mask}), - .out ({csr_req_if.valid , csr_req_if.warp_num , csr_req_if.rd , csr_req_if.wb , csr_req_if.alu_op , csr_req_if.is_csr , csr_req_if.csr_addr , csr_req_if.csr_immed , csr_req_if.csr_mask }) + .stall (stall_csr), + .flush (0), + .in ({csr_req_tmp_if.valid, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.csr_op, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask, csr_req_tmp_if.is_io, csr_req_tmp_if.rd, csr_req_tmp_if.wb}), + .out ({csr_req_if.valid, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.csr_op, csr_req_if.csr_addr, csr_req_if.csr_mask, csr_req_if.is_io, csr_req_if.rd, csr_req_if.wb}) ); + VX_generic_register #( + .N(`NUM_THREADS +`NW_BITS + 32 + `MUL_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `NR_BITS + `WB_BITS) + ) mul_reg ( + .clk (clk), + .reset (reset), + .stall (stall_mul), + .flush (0), + .in ({mul_req_tmp_if.valid, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.mul_op, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data, mul_req_tmp_if.rd, mul_req_tmp_if.wb}), + .out ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.mul_op, mul_req_if.rs1_data, mul_req_if.rs2_data, mul_req_if.rd, mul_req_if.wb}) + ); + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + `GPU_BITS + (`NUM_THREADS * 32) + 32) + ) gpu_reg ( + .clk (clk), + .reset (reset), + .stall (stall_gpu), + .flush (0), + .in ({gpu_req_tmp_if.valid, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.next_PC, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data}), + .out ({gpu_req_if.valid, gpu_req_if.warp_num, gpu_req_if.next_PC, gpu_req_if.gpu_op, gpu_req_if.rs1_data, gpu_req_if.rs2_data}) + ); + + assign execute_if.alu_ready = ~stall_alu; + assign execute_if.br_ready = ~stall_br; + assign execute_if.lsu_ready = ~stall_lsu; + assign execute_if.csr_ready = ~stall_csr; + assign execute_if.mul_ready = ~stall_mul; + assign execute_if.gpu_ready = ~stall_gpu; + + assign writeback_if.ready = 1'b1; + +`ifdef DBG_PRINT_PIPELINE + always @(posedge clk) begin + if ((| execute_if.valid)) begin + $display("%t: Core%0d-GPR: warp=%0d, PC=%0h, a=%0h, b=%0h", $time, CORE_ID, execute_if.warp_num, execute_if.curr_PC, rs1_data, rs2_data); + + // scheduler ensures the destination execute unit is ready (garanteed by the scheduler) + assert((execute_if.ex_type != `EX_ALU) || alu_req_if.ready); + assert((execute_if.ex_type != `EX_BR) || branch_req_if.ready); + assert((execute_if.ex_type != `EX_LSU) || lsu_req_if.ready); + assert((execute_if.ex_type != `EX_CSR) || csr_req_if.ready); + assert((execute_if.ex_type != `EX_MUL) || mul_req_if.ready); + assert((execute_if.ex_type != `EX_GPU) || gpu_req_if.ready); + end + end `endif -endmodule : VX_gpr_stage +endmodule diff --git a/hw/rtl/VX_gpr_wrapper.v b/hw/rtl/VX_gpr_wrapper.v deleted file mode 100644 index fe71f064..00000000 --- a/hw/rtl/VX_gpr_wrapper.v +++ /dev/null @@ -1,60 +0,0 @@ -`include "VX_define.vh" - -module VX_gpr_wrapper ( - input wire clk, - input wire reset, - VX_wb_if writeback_if, - VX_gpr_read_if gpr_read_if -); - wire [`NUM_WARPS-1:0][`NUM_THREADS-1:0][31:0] tmp_a_reg_data; - wire [`NUM_WARPS-1:0][`NUM_THREADS-1:0][31:0] tmp_b_reg_data; - wire [`NUM_THREADS-1:0][31:0] jal_data; - - genvar i; - generate - for (i = 0; i < `NUM_THREADS; i++) begin : jal_data_assign - assign jal_data[i] = gpr_read_if.curr_PC; - end - endgenerate - - `ifndef ASIC - assign gpr_read_if.a_reg_data = gpr_read_if.is_jal ? jal_data : tmp_a_reg_data[gpr_read_if.warp_num]; - assign gpr_read_if.b_reg_data = tmp_b_reg_data[gpr_read_if.warp_num]; - `else - - wire [`NW_BITS-1:0] old_warp_num; - - VX_generic_register #( - .N(`NW_BITS-1+1) - ) store_wn ( - .clk (clk), - .reset (reset), - .stall (1'b0), - .flush (1'b0), - .in (gpr_read_if.warp_num), - .out (old_warp_num) - ); - - assign gpr_read_if.a_reg_data = gpr_jal_if.is_jal ? jal_data : tmp_a_reg_data[old_warp_num]; - assign gpr_read_if.b_reg_data = tmp_b_reg_data[old_warp_num]; - - `endif - - generate - for (i = 0; i < `NUM_WARPS; i++) begin : warp_gprs - wire write_ce = (i == writeback_if.warp_num); - VX_gpr_ram gpr_ram( - .clk (clk), - .reset (reset), - .write_ce (write_ce), - .gpr_read_if (gpr_read_if), - .writeback_if (writeback_if), - .a_reg_data (tmp_a_reg_data[i]), - .b_reg_data (tmp_b_reg_data[i]) - ); - end - endgenerate - -endmodule - - diff --git a/hw/rtl/VX_gpu_inst.v b/hw/rtl/VX_gpu_inst.v deleted file mode 100644 index 5dbf3e57..00000000 --- a/hw/rtl/VX_gpu_inst.v +++ /dev/null @@ -1,88 +0,0 @@ -`include "VX_define.vh" - -module VX_gpu_inst ( - // Input - VX_gpu_inst_req_if gpu_inst_req_if, - - // Output - VX_warp_ctl_if warp_ctl_if -); - wire[`NUM_THREADS-1:0] curr_valids = gpu_inst_req_if.valid; - wire is_split = gpu_inst_req_if.is_split; - - wire[`NUM_THREADS-1:0] tmc_new_mask; - wire all_threads = `NUM_THREADS < gpu_inst_req_if.a_reg_data[0]; - - genvar i; - generate - for (i = 0; i < `NUM_THREADS; i++) begin : tmc_new_mask_init - assign tmc_new_mask[i] = all_threads ? 1 : i < gpu_inst_req_if.a_reg_data[0]; - end - endgenerate - - wire valid_inst = (| curr_valids); - - assign warp_ctl_if.warp_num = gpu_inst_req_if.warp_num; - assign warp_ctl_if.change_mask = gpu_inst_req_if.is_tmc && valid_inst; - assign warp_ctl_if.thread_mask = gpu_inst_req_if.is_tmc ? tmc_new_mask : 0; - - assign warp_ctl_if.whalt = warp_ctl_if.change_mask && (0 == warp_ctl_if.thread_mask); - - wire wspawn = gpu_inst_req_if.is_wspawn && valid_inst; - wire[31:0] wspawn_pc = gpu_inst_req_if.rd2; - wire all_active = `NUM_WARPS < gpu_inst_req_if.a_reg_data[0]; - wire[`NUM_WARPS-1:0] wspawn_new_active; - - generate - for (i = 0; i < `NUM_WARPS; i++) begin : wspawn_new_active_init - assign wspawn_new_active[i] = all_active ? 1 : i < gpu_inst_req_if.a_reg_data[0]; - end - endgenerate - - assign warp_ctl_if.is_barrier = gpu_inst_req_if.is_barrier && valid_inst; - assign warp_ctl_if.barrier_id = gpu_inst_req_if.a_reg_data[0]; - -`DEBUG_BEGIN - wire[31:0] num_warps_m1 = gpu_inst_req_if.rd2 - 1; -`DEBUG_END - - assign warp_ctl_if.num_warps = num_warps_m1[$clog2(`NUM_WARPS):0]; - - assign warp_ctl_if.wspawn = wspawn; - assign warp_ctl_if.wspawn_pc = wspawn_pc; - assign warp_ctl_if.wspawn_new_active = wspawn_new_active; - - wire[`NUM_THREADS-1:0] split_new_use_mask; - wire[`NUM_THREADS-1:0] split_new_later_mask; - - generate - for (i = 0; i < `NUM_THREADS; i++) begin : masks_init - wire curr_bool = (gpu_inst_req_if.a_reg_data[i] == 32'b1); - assign split_new_use_mask[i] = curr_valids[i] & (curr_bool); - assign split_new_later_mask[i] = curr_valids[i] & (!curr_bool); - end - endgenerate - - wire[$clog2(`NUM_THREADS):0] num_valids; - - VX_countones #( - .N(`NUM_THREADS) - ) valids_counter ( - .valids(curr_valids), - .count (num_valids) - ); - - // wire[`NW_BITS-1:0] num_valids = $countones(curr_valids); - - assign warp_ctl_if.is_split = is_split && (num_valids > 1); - assign warp_ctl_if.dont_split = warp_ctl_if.is_split && ((split_new_use_mask == 0) || (split_new_use_mask == {`NUM_THREADS{1'b1}})); - assign warp_ctl_if.split_new_mask = split_new_use_mask; - assign warp_ctl_if.split_later_mask = split_new_later_mask; - assign warp_ctl_if.split_save_pc = gpu_inst_req_if.next_PC; - assign warp_ctl_if.split_warp_num = gpu_inst_req_if.warp_num; - - // gpu_inst_req_if.is_wspawn - // gpu_inst_req_if.is_split - // gpu_inst_req_if.is_barrier - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v new file mode 100644 index 00000000..292b1f23 --- /dev/null +++ b/hw/rtl/VX_gpu_unit.v @@ -0,0 +1,79 @@ +`include "VX_define.vh" + +module VX_gpu_unit #( + parameter CORE_ID = 0 +) ( + // Input + VX_gpu_req_if gpu_req_if, + + // Output + VX_warp_ctl_if warp_ctl_if +); + wire [`NUM_THREADS-1:0] curr_valids = gpu_req_if.valid; + wire is_wspawn = (gpu_req_if.gpu_op == `GPU_WSPAWN); + wire is_tmc = (gpu_req_if.gpu_op == `GPU_TMC); + wire is_split = (gpu_req_if.gpu_op == `GPU_SPLIT); + wire is_bar = (gpu_req_if.gpu_op == `GPU_BAR); + + wire [`NUM_THREADS-1:0] tmc_new_mask; + wire all_threads = `NUM_THREADS < gpu_req_if.rs1_data[0]; + + genvar i; + for (i = 0; i < `NUM_THREADS; i++) begin : tmc_new_mask_init + assign tmc_new_mask[i] = all_threads ? 1 : i < gpu_req_if.rs1_data[0]; + end + + wire valid_inst = (| curr_valids); + + assign warp_ctl_if.warp_num = gpu_req_if.warp_num; + + assign warp_ctl_if.change_mask = is_tmc && valid_inst; + assign warp_ctl_if.thread_mask = is_tmc ? tmc_new_mask : 0; + + assign warp_ctl_if.whalt = warp_ctl_if.change_mask && (0 == warp_ctl_if.thread_mask); + + wire wspawn = is_wspawn && valid_inst; + wire [31:0] wspawn_pc = gpu_req_if.rs2_data; + wire all_active = `NUM_WARPS < gpu_req_if.rs1_data[0]; + wire [`NUM_WARPS-1:0] wspawn_new_active; + + for (i = 0; i < `NUM_WARPS; i++) begin : wspawn_new_active_init + assign wspawn_new_active[i] = all_active ? 1 : i < gpu_req_if.rs1_data[0]; + end + + assign warp_ctl_if.is_barrier = is_bar && valid_inst; + assign warp_ctl_if.barrier_id = gpu_req_if.rs1_data[0][`NB_BITS-1:0]; + + assign warp_ctl_if.num_warps = (`NW_BITS+1)'(gpu_req_if.rs2_data - 1); + + assign warp_ctl_if.wspawn = wspawn; + assign warp_ctl_if.wspawn_pc = wspawn_pc; + assign warp_ctl_if.wspawn_new_active = wspawn_new_active; + + wire[`NUM_THREADS-1:0] split_new_use_mask; + wire[`NUM_THREADS-1:0] split_new_later_mask; + + for (i = 0; i < `NUM_THREADS; i++) begin : masks_init + wire curr_bool = (gpu_req_if.rs1_data[i] == 32'b1); + assign split_new_use_mask[i] = curr_valids[i] & (curr_bool); + assign split_new_later_mask[i] = curr_valids[i] & (!curr_bool); + end + + wire [`NT_BITS:0] num_valids; + + VX_countones #( + .N(`NUM_THREADS) + ) valids_counter ( + .valids(curr_valids), + .count (num_valids) + ); + + assign warp_ctl_if.is_split = is_split && (num_valids > 1); + assign warp_ctl_if.do_split = (split_new_use_mask != 0) && (split_new_use_mask != {`NUM_THREADS{1'b1}}); + assign warp_ctl_if.split_new_mask = split_new_use_mask; + assign warp_ctl_if.split_later_mask = split_new_later_mask; + assign warp_ctl_if.split_save_pc = gpu_req_if.next_PC; + + assign gpu_req_if.ready = 1'b1; // has no stalls + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_icache_stage.v b/hw/rtl/VX_icache_stage.v index 5232f943..37eef92c 100644 --- a/hw/rtl/VX_icache_stage.v +++ b/hw/rtl/VX_icache_stage.v @@ -7,20 +7,21 @@ module VX_icache_stage #( input wire clk, input wire reset, - input wire total_freeze, - output wire icache_stage_delay, - output wire[`NW_BITS-1:0] icache_stage_wid, - output wire icache_stage_response, - VX_inst_meta_if fe_inst_meta_fi, - VX_inst_meta_if fe_inst_meta_id, + // Icache interface VX_cache_core_req_if icache_req_if, - VX_cache_core_rsp_if icache_rsp_if + VX_cache_core_rsp_if icache_rsp_if, + + // request + VX_ifetch_req_if ifetch_req_if, + + // reponse + VX_ifetch_rsp_if ifetch_rsp_if ); reg [`NUM_THREADS-1:0] valid_threads [`NUM_WARPS-1:0]; - wire valid_inst = (| fe_inst_meta_fi.valid); + wire valid_inst = (| ifetch_req_if.valid); wire [`LOG2UP(`ICREQ_SIZE)-1:0] mrq_write_addr, mrq_read_addr, dbg_mrq_write_addr; wire mrq_full; @@ -30,25 +31,25 @@ module VX_icache_stage #( assign mrq_read_addr = icache_rsp_if.tag[0][`LOG2UP(`ICREQ_SIZE)-1:0]; - VX_indexable_queue #( + VX_index_queue #( .DATAW (`LOG2UP(`ICREQ_SIZE) + 32 + `NW_BITS), .SIZE (`ICREQ_SIZE) ) mem_req_queue ( .clk (clk), .reset (reset), - .write_data ({mrq_write_addr, fe_inst_meta_fi.curr_PC, fe_inst_meta_fi.warp_num}), + .write_data ({mrq_write_addr, ifetch_req_if.curr_PC, ifetch_req_if.warp_num}), .write_addr (mrq_write_addr), .push (mrq_push), .full (mrq_full), .pop (mrq_pop), .read_addr (mrq_read_addr), - .read_data ({dbg_mrq_write_addr, fe_inst_meta_id.curr_PC, fe_inst_meta_id.warp_num}), + .read_data ({dbg_mrq_write_addr, ifetch_rsp_if.curr_PC, ifetch_rsp_if.warp_num}), `UNUSED_PIN (empty) ); always @(posedge clk) begin if (mrq_push) begin - valid_threads[fe_inst_meta_fi.warp_num] <= fe_inst_meta_fi.valid; + valid_threads[ifetch_req_if.warp_num] <= ifetch_req_if.valid; end if (mrq_pop) begin assert(mrq_read_addr == dbg_mrq_write_addr); @@ -59,29 +60,26 @@ module VX_icache_stage #( assign icache_req_if.valid = valid_inst && !mrq_full; assign icache_req_if.rw = 0; assign icache_req_if.byteen = 4'b1111; - assign icache_req_if.addr = fe_inst_meta_fi.curr_PC[31:2]; + assign icache_req_if.addr = ifetch_req_if.curr_PC[31:2]; assign icache_req_if.data = 0; // Can't accept new request - assign icache_stage_delay = mrq_full || !icache_req_if.ready; + assign ifetch_req_if.ready = !mrq_full && icache_req_if.ready; `ifdef DBG_CORE_REQ_INFO - assign icache_req_if.tag = {fe_inst_meta_fi.curr_PC, 2'b1, 5'b0, fe_inst_meta_fi.warp_num, mrq_write_addr}; + assign icache_req_if.tag = {ifetch_req_if.curr_PC, 2'b1, 5'b0, ifetch_req_if.warp_num, mrq_write_addr}; `else assign icache_req_if.tag = mrq_write_addr; `endif - assign fe_inst_meta_id.instruction = icache_rsp_if.valid ? icache_rsp_if.data[0] : 0; - assign fe_inst_meta_id.valid = icache_rsp_if.valid ? valid_threads[fe_inst_meta_id.warp_num] : 0; - - assign icache_stage_response = mrq_pop; - assign icache_stage_wid = fe_inst_meta_id.warp_num; + assign ifetch_rsp_if.valid = icache_rsp_if.valid ? valid_threads[ifetch_rsp_if.warp_num] : 0; + assign ifetch_rsp_if.instr = icache_rsp_if.data[0]; // Can't accept new response - assign icache_rsp_if.ready = !total_freeze; + assign icache_rsp_if.ready = ifetch_rsp_if.ready; `SCOPE_ASSIGN(scope_icache_req_valid, icache_req_if.valid); - `SCOPE_ASSIGN(scope_icache_req_warp_num, fe_inst_meta_fi.warp_num); + `SCOPE_ASSIGN(scope_icache_req_warp_num, ifetch_req_if.warp_num); `SCOPE_ASSIGN(scope_icache_req_addr, {icache_req_if.addr, 2'b0}); `SCOPE_ASSIGN(scope_icache_req_tag, icache_req_if.tag); `SCOPE_ASSIGN(scope_icache_req_ready, icache_req_if.ready); @@ -94,10 +92,10 @@ module VX_icache_stage #( `ifdef DBG_PRINT_CORE_ICACHE always @(posedge clk) begin if (icache_req_if.valid && icache_req_if.ready) begin - $display("%t: I%0d$ req: tag=%0h, pc=%0h, warp=%0d", $time, CORE_ID, mrq_write_addr, fe_inst_meta_fi.curr_PC, fe_inst_meta_fi.warp_num); + $display("%t: I$%0d req: tag=%0h, PC=%0h, warp=%0d", $time, CORE_ID, mrq_write_addr, ifetch_req_if.curr_PC, ifetch_req_if.warp_num); end if (icache_rsp_if.valid && icache_rsp_if.ready) begin - $display("%t: I%0d$ rsp: tag=%0h, pc=%0h, warp=%0d, instr=%0h", $time, CORE_ID, mrq_read_addr, fe_inst_meta_id.curr_PC, fe_inst_meta_id.warp_num, fe_inst_meta_id.instruction); + $display("%t: I$%0d rsp: tag=%0h, PC=%0h, warp=%0d, instr=%0h", $time, CORE_ID, mrq_read_addr, ifetch_rsp_if.curr_PC, ifetch_rsp_if.warp_num, ifetch_rsp_if.instr); end end `endif diff --git a/hw/rtl/VX_inst_multiplex.v b/hw/rtl/VX_inst_multiplex.v deleted file mode 100644 index 73225085..00000000 --- a/hw/rtl/VX_inst_multiplex.v +++ /dev/null @@ -1,90 +0,0 @@ -`include "VX_define.vh" - -module VX_inst_multiplex ( - // Inputs - VX_backend_req_if bckE_req_if, - VX_gpr_read_if gpr_read_if, - - // Outputs - VX_exec_unit_req_if exec_unit_req_if, - VX_lsu_req_if lsu_req_if, - VX_gpu_inst_req_if gpu_inst_req_if, - VX_csr_req_if csr_req_if -); - - wire[`NUM_THREADS-1:0] is_mem_mask; - wire[`NUM_THREADS-1:0] is_gpu_mask; - wire[`NUM_THREADS-1:0] is_csr_mask; - - wire is_mem = (bckE_req_if.mem_write != `BYTE_EN_NO) || (bckE_req_if.mem_read != `BYTE_EN_NO); - wire is_gpu = (bckE_req_if.is_wspawn || bckE_req_if.is_tmc || bckE_req_if.is_barrier || bckE_req_if.is_split); - wire is_csr = bckE_req_if.is_csr; - // wire is_gpu = 0; - - genvar i; - generate - for (i = 0; i < `NUM_THREADS; i++) begin : mask_init - assign is_mem_mask[i] = is_mem; - assign is_gpu_mask[i] = is_gpu; - assign is_csr_mask[i] = is_csr; - end - endgenerate - - // LSU Unit - assign lsu_req_if.valid = bckE_req_if.valid & is_mem_mask; - assign lsu_req_if.warp_num = bckE_req_if.warp_num; - assign lsu_req_if.base_addr = gpr_read_if.a_reg_data; - assign lsu_req_if.store_data = gpr_read_if.b_reg_data; - - assign lsu_req_if.offset = bckE_req_if.itype_immed; - - assign lsu_req_if.mem_read = bckE_req_if.mem_read; - assign lsu_req_if.mem_write = bckE_req_if.mem_write; - assign lsu_req_if.rd = bckE_req_if.rd; - assign lsu_req_if.wb = bckE_req_if.wb; - assign lsu_req_if.curr_PC = bckE_req_if.curr_PC; - - // Execute Unit - assign exec_unit_req_if.valid = bckE_req_if.valid & (~is_mem_mask & ~is_gpu_mask & ~is_csr_mask); - assign exec_unit_req_if.warp_num = bckE_req_if.warp_num; - assign exec_unit_req_if.curr_PC = bckE_req_if.curr_PC; - assign exec_unit_req_if.next_PC = bckE_req_if.next_PC; - assign exec_unit_req_if.rd = bckE_req_if.rd; - assign exec_unit_req_if.wb = bckE_req_if.wb; - assign exec_unit_req_if.a_reg_data = gpr_read_if.a_reg_data; - assign exec_unit_req_if.b_reg_data = gpr_read_if.b_reg_data; - assign exec_unit_req_if.alu_op = bckE_req_if.alu_op; - assign exec_unit_req_if.rs1 = bckE_req_if.rs1; - assign exec_unit_req_if.rs2 = bckE_req_if.rs2; - assign exec_unit_req_if.rs2_src = bckE_req_if.rs2_src; - assign exec_unit_req_if.itype_immed = bckE_req_if.itype_immed; - assign exec_unit_req_if.upper_immed = bckE_req_if.upper_immed; - assign exec_unit_req_if.branch_type = bckE_req_if.branch_type; - assign exec_unit_req_if.is_jal = bckE_req_if.is_jal; - assign exec_unit_req_if.jal = bckE_req_if.jal; - assign exec_unit_req_if.jal_offset = bckE_req_if.jal_offset; - assign exec_unit_req_if.is_etype = bckE_req_if.is_etype; - - // GPR Req - assign gpu_inst_req_if.valid = bckE_req_if.valid & is_gpu_mask; - assign gpu_inst_req_if.warp_num = bckE_req_if.warp_num; - assign gpu_inst_req_if.is_wspawn = bckE_req_if.is_wspawn; - assign gpu_inst_req_if.is_tmc = bckE_req_if.is_tmc; - assign gpu_inst_req_if.is_split = bckE_req_if.is_split; - assign gpu_inst_req_if.is_barrier = bckE_req_if.is_barrier; - assign gpu_inst_req_if.a_reg_data = gpr_read_if.a_reg_data; - assign gpu_inst_req_if.rd2 = gpr_read_if.b_reg_data[0]; - assign gpu_inst_req_if.next_PC = bckE_req_if.next_PC; - - // CSR Req - assign csr_req_if.valid = bckE_req_if.valid & is_csr_mask; - assign csr_req_if.warp_num = bckE_req_if.warp_num; - assign csr_req_if.rd = bckE_req_if.rd; - assign csr_req_if.wb = bckE_req_if.wb; - assign csr_req_if.alu_op = bckE_req_if.alu_op; - assign csr_req_if.is_csr = bckE_req_if.is_csr; - assign csr_req_if.csr_addr = bckE_req_if.csr_addr; - assign csr_req_if.csr_immed = bckE_req_if.csr_immed; - assign csr_req_if.csr_mask = bckE_req_if.csr_mask; - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v new file mode 100644 index 00000000..145ac917 --- /dev/null +++ b/hw/rtl/VX_issue.v @@ -0,0 +1,87 @@ +`include "VX_define.vh" + +module VX_issue #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + VX_decode_if decode_if, + VX_wb_if writeback_if, + + VX_execute_if execute_if, + + output wire is_empty +); + localparam CTVW = `CLOG2(`NUM_WARPS * 32 + 1); + + reg [31:0][`NUM_THREADS-1:0] rename_table[`NUM_WARPS-1:0]; + reg [CTVW-1:0] count_valid; + + wire rs1_rename = (rename_table[decode_if.warp_num][decode_if.rs1] != 0); + wire rs2_rename = (rename_table[decode_if.warp_num][decode_if.rs2] != 0); + wire rd_rename = (rename_table[decode_if.warp_num][decode_if.rd ] != 0); + + wire rs1_rename_qual = (rs1_rename) && (decode_if.use_rs1); + wire rs2_rename_qual = (rs2_rename) && (decode_if.use_rs2); + wire rd_rename_qual = (rd_rename) && (decode_if.wb != 0); + + wire rename_valid = (| decode_if.valid) && (rs1_rename_qual || rs2_rename_qual || rd_rename_qual); + + wire ex_stalled = (| decode_if.valid) + && ((!execute_if.alu_ready && (decode_if.ex_type == `EX_ALU)) + || (!execute_if.br_ready && (decode_if.ex_type == `EX_BR)) + || (!execute_if.lsu_ready && (decode_if.ex_type == `EX_LSU)) + || (!execute_if.csr_ready && (decode_if.ex_type == `EX_CSR)) + || (!execute_if.mul_ready && (decode_if.ex_type == `EX_MUL)) + || (!execute_if.gpu_ready && (decode_if.ex_type == `EX_GPU))); + + wire stall = rename_valid || ex_stalled; + + wire acquire_rd = (| decode_if.valid) && (decode_if.wb != 0) && (decode_if.rd != 0) && ~stall; + + wire release_rd = (| writeback_if.valid) && (writeback_if.wb != 0) && (writeback_if.rd != 0); + + wire [`NUM_THREADS-1:0] valid_wb_new_mask = rename_table[writeback_if.warp_num][writeback_if.rd] & ~writeback_if.valid; + + reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == valid_wb_new_mask))) ? (count_valid + 1) : + (~acquire_rd && (release_rd && (0 == valid_wb_new_mask))) ? (count_valid - 1) : + count_valid; + integer i, w; + + always @(posedge clk) begin + if (reset) begin + for (w = 0; w < `NUM_WARPS; w++) begin + for (i = 0; i < 32; i++) begin + rename_table[w][i] <= 0; + end + end + count_valid <= 0; + end else begin + if (acquire_rd) begin + rename_table[decode_if.warp_num][decode_if.rd] <= decode_if.valid; + end + if (release_rd) begin + assert(rename_table[writeback_if.warp_num][writeback_if.rd] != 0); + rename_table[writeback_if.warp_num][writeback_if.rd] <= valid_wb_new_mask; + end + count_valid <= count_valid_next; + end + end + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + `WB_BITS), + ) schedule_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.instr_op, decode_if.wb}), + .out ({execute_if.valid, execute_if.warp_num, execute_if.curr_PC, execute_if.next_PC, execute_if.rd, execute_if.rs1, execute_if.rs2, execute_if.imm, execute_if.rs1_is_PC, execute_if.rs2_is_imm, execute_if.ex_type, execute_if.instr_op, execute_if.wb}) + ); + + assign decode_if.ready = ~stall; + + assign is_empty = (0 == count_valid); + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index d1296680..09add222 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -5,23 +5,19 @@ module VX_lsu_unit #( ) ( `SCOPE_SIGNALS_LSU_IO - input wire clk, - input wire reset, - - input wire no_slot_mem, - VX_lsu_req_if lsu_req_if, - - // Write back to GPR - VX_wb_if mem_wb_if, + input wire clk, + input wire reset, // Dcache interface VX_cache_core_req_if dcache_req_if, VX_cache_core_rsp_if dcache_rsp_if, - output wire delay -); + // inputs + VX_lsu_req_if lsu_req_if, - VX_wb_if mem_wb_unqual_if(); + // outputs + VX_wb_if lsu_wb_if +); wire [`NUM_THREADS-1:0] use_valid; wire use_req_rw; @@ -29,28 +25,25 @@ module VX_lsu_unit #( wire [`NUM_THREADS-1:0][1:0] use_req_offset; wire [`NUM_THREADS-1:0][3:0] use_req_byteen; wire [`NUM_THREADS-1:0][31:0] use_req_data; - wire [`BYTE_EN_BITS-1:0] use_mem_read; - wire [4:0] use_rd; + wire [`BYTEEN_BITS-1:0] mem_byteen; + wire [`NR_BITS-1:0] use_rd; wire [`NW_BITS-1:0] use_warp_num; - wire [1:0] use_wb; + wire [`WB_BITS-1:0] use_wb; wire [31:0] use_pc; genvar i; - // Generate Full Addresses - wire[`NUM_THREADS-1:0][31:0] full_address; + wire [`NUM_THREADS-1:0][31:0] full_address; for (i = 0; i < `NUM_THREADS; i++) begin assign full_address[i] = lsu_req_if.base_addr[i] + lsu_req_if.offset; end - wire mem_req_rw = (lsu_req_if.mem_write != `BYTE_EN_NO); - reg [3:0] wmask; always @(*) begin - case ((mem_req_rw ? lsu_req_if.mem_write[1:0] : lsu_req_if.mem_read[1:0])) - 0: wmask = 4'b0001; - 1: wmask = 4'b0011; - default : wmask = 4'b1111; + case (lsu_req_if.byteen) + 0: wmask = 4'b0001; + 1: wmask = 4'b0011; + default: wmask = 4'b1111; endcase end @@ -64,29 +57,32 @@ module VX_lsu_unit #( assign mem_req_offset[i] = full_address[i][1:0]; assign mem_req_byteen[i] = wmask << full_address[i][1:0]; assign mem_req_data[i] = lsu_req_if.store_data[i] << {mem_req_offset[i], 3'b0}; - end + end + + // Can accept new request + wire stall = ~dcache_req_if.ready || mrq_full; + assign lsu_req_if.ready = ~stall; `IGNORE_WARNINGS_BEGIN - wire[`NUM_THREADS-1:0][31:0] use_address; + wire [`NUM_THREADS-1:0][31:0] use_address; `IGNORE_WARNINGS_END VX_generic_register #( - .N((`NUM_THREADS * 1) + (`NUM_THREADS * 32) + `BYTE_EN_BITS + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + 5 + `NW_BITS + 2 + 32) - ) lsu_buffer ( + .N(`NUM_THREADS + (`NUM_THREADS * 32) + `BYTEEN_BITS + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + `NW_BITS + `WB_BITS + 32) + ) mem_req_reg ( .clk (clk), .reset (reset), - .stall (delay), - .flush (1'b0), - .in ({lsu_req_if.valid, full_address, lsu_req_if.mem_read, mem_req_rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.warp_num, lsu_req_if.wb, lsu_req_if.curr_PC}), - .out ({use_valid , use_address, use_mem_read , use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd , use_warp_num , use_wb , use_pc}) + .stall (stall), + .flush (0), + .in ({lsu_req_if.valid, full_address, lsu_req_if.byteen, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.warp_num, lsu_req_if.wb, lsu_req_if.curr_PC}), + .out ({use_valid , use_address, mem_byteen , use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd , use_warp_num , use_wb , use_pc}) ); - wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset; - wire [`BYTE_EN_BITS-1:0] core_rsp_mem_read; - reg [`NUM_THREADS-1:0] mem_rsp_mask[`DCREQ_SIZE-1:0]; - wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_write_addr, mrq_read_addr, dbg_mrq_write_addr; + wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_write_addr, dbg_mrq_write_addr; + wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset; + wire [`BYTEEN_BITS-1:0] core_rsp_mem_read; wire mrq_full; wire mrq_push = (| dcache_req_if.valid) && dcache_req_if.ready @@ -94,25 +90,25 @@ module VX_lsu_unit #( wire mrq_pop_part = (| dcache_rsp_if.valid) && dcache_rsp_if.ready; - assign mrq_read_addr = dcache_rsp_if.tag[0][`LOG2UP(`DCREQ_SIZE)-1:0]; + wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_read_addr = dcache_rsp_if.tag[0][`LOG2UP(`DCREQ_SIZE)-1:0]; wire [`NUM_THREADS-1:0] mem_rsp_mask_upd = mem_rsp_mask[mrq_read_addr] & ~dcache_rsp_if.valid; wire mrq_pop = mrq_pop_part && (0 == mem_rsp_mask_upd); - VX_indexable_queue #( - .DATAW (`LOG2UP(`DCREQ_SIZE) + 32 + 2 + (`NUM_THREADS * 2) + `BYTE_EN_BITS + 5 + `NW_BITS), + VX_index_queue #( + .DATAW (`LOG2UP(`DCREQ_SIZE) + 32 + `WB_BITS + (`NUM_THREADS * 2) + `BYTEEN_BITS + `NR_BITS + `NW_BITS), .SIZE (`DCREQ_SIZE) ) mem_req_queue ( .clk (clk), .reset (reset), - .write_data ({mrq_write_addr, use_pc, use_wb, use_req_offset, use_mem_read, use_rd, use_warp_num}), + .write_data ({mrq_write_addr, use_pc, use_wb, use_req_offset, mem_byteen, use_rd, use_warp_num}), .write_addr (mrq_write_addr), .push (mrq_push), .full (mrq_full), .pop (mrq_pop), .read_addr (mrq_read_addr), - .read_data ({dbg_mrq_write_addr, mem_wb_unqual_if.curr_PC, mem_wb_unqual_if.wb, mem_rsp_offset, core_rsp_mem_read, mem_wb_unqual_if.rd, mem_wb_unqual_if.warp_num}), + .read_data ({dbg_mrq_write_addr, lsu_wb_if.curr_PC, lsu_wb_if.wb, mem_rsp_offset, core_rsp_mem_read, lsu_wb_if.rd, lsu_wb_if.warp_num}), `UNUSED_PIN (empty) ); @@ -127,7 +123,6 @@ module VX_lsu_unit #( end // Core Request - assign dcache_req_if.valid = use_valid & {`NUM_THREADS{~mrq_full}}; assign dcache_req_if.rw = {`NUM_THREADS{use_req_rw}}; assign dcache_req_if.byteen = use_req_byteen; @@ -140,43 +135,27 @@ module VX_lsu_unit #( assign dcache_req_if.tag = mrq_write_addr; `endif - // Can't accept new request - assign delay = mrq_full || !dcache_req_if.ready; - // Core Response - - reg [`NUM_THREADS-1:0][31:0] core_rsp_data; - wire [`NUM_THREADS-1:0][31:0] rsp_data_shifted; + reg [`NUM_THREADS-1:0][31:0] core_rsp_data; for (i = 0; i < `NUM_THREADS; i++) begin - assign rsp_data_shifted[i] = dcache_rsp_if.data[i] >> {mem_rsp_offset[i], 3'b0}; + wire [15:0] rsp_data_shifted = 16'(dcache_rsp_if.data[i] >> {mem_rsp_offset[i], 3'b0}); always @(*) begin case (core_rsp_mem_read) - `BYTE_EN_SB: core_rsp_data[i] = {{24{rsp_data_shifted[i][7]}}, rsp_data_shifted[i][7:0]}; - `BYTE_EN_SH: core_rsp_data[i] = {{16{rsp_data_shifted[i][15]}}, rsp_data_shifted[i][15:0]}; - `BYTE_EN_UB: core_rsp_data[i] = 32'(rsp_data_shifted[i][7:0]); - `BYTE_EN_UH: core_rsp_data[i] = 32'(rsp_data_shifted[i][15:0]); - default : core_rsp_data[i] = rsp_data_shifted[i]; + `BYTEEN_SB: core_rsp_data[i] = {{24{rsp_data_shifted[7]}}, rsp_data_shifted[7:0]}; + `BYTEEN_UB: core_rsp_data[i] = 32'(rsp_data_shifted[7:0]); + `BYTEEN_SH: core_rsp_data[i] = {{16{rsp_data_shifted[15]}}, rsp_data_shifted[15:0]}; + `BYTEEN_UH: core_rsp_data[i] = 32'(rsp_data_shifted[15:0]); + default: core_rsp_data[i] = dcache_rsp_if.data[i]; endcase end end - assign mem_wb_unqual_if.valid = dcache_rsp_if.valid; - assign mem_wb_unqual_if.data = core_rsp_data; + assign lsu_wb_if.valid = dcache_rsp_if.valid; + assign lsu_wb_if.data = core_rsp_data; - // Can't accept new response - assign dcache_rsp_if.ready = !(no_slot_mem & (|mem_wb_if.valid)); - - // From LSU to WB - localparam WB_REQ_SIZE = (`NUM_THREADS) + (`NUM_THREADS * 32) + (`NW_BITS) + (5) + (2) + 32; - VX_generic_register #(.N(WB_REQ_SIZE)) lsu_to_wb ( - .clk (clk), - .reset (reset), - .stall (no_slot_mem), - .flush (1'b0), - .in ({mem_wb_unqual_if.valid, mem_wb_unqual_if.data, mem_wb_unqual_if.warp_num, mem_wb_unqual_if.rd, mem_wb_unqual_if.wb, mem_wb_unqual_if.curr_PC}), - .out ({mem_wb_if.valid, mem_wb_if.data, mem_wb_if.warp_num, mem_wb_if.rd, mem_wb_if.wb, mem_wb_if.curr_PC}) - ); + // Can accept new cache response + assign dcache_rsp_if.ready = lsu_wb_if.ready; `SCOPE_ASSIGN(scope_dcache_req_valid, dcache_req_if.valid); `SCOPE_ASSIGN(scope_dcache_req_warp_num, use_warp_num); @@ -196,12 +175,12 @@ module VX_lsu_unit #( `ifdef DBG_PRINT_CORE_DCACHE always @(posedge clk) begin if ((| dcache_req_if.valid) && dcache_req_if.ready) begin - $display("%t: D%0d$ req: valid=%b, addr=%0h, tag=%0h, rw=%0b, pc=%0h, rd=%0d, warp=%0d, byteen=%0h, data=%0h", - $time, CORE_ID, use_valid, use_address, mrq_write_addr, use_req_rw, use_pc, use_rd, use_warp_num, use_req_byteen, use_req_data); + $display("%t: D$%0d req: valid=%b, warp=%0d, PC=%0h, addr=%0h, tag=%0h, rw=%0b, rd=%0d, byteen=%0h, data=%0h", + $time, CORE_ID, use_valid, use_warp_num, use_pc, use_address, mrq_write_addr, use_req_rw, use_rd, use_req_byteen, use_req_data); end if ((| dcache_rsp_if.valid) && dcache_rsp_if.ready) begin - $display("%t: D%0d$ rsp: valid=%b, tag=%0h, pc=%0h, rd=%0d, warp=%0d, data=%0h", - $time, CORE_ID, mem_wb_unqual_if.valid, mrq_read_addr, mem_wb_unqual_if.curr_PC, mem_wb_unqual_if.rd, mem_wb_unqual_if.warp_num, mem_wb_unqual_if.data); + $display("%t: D$%0d rsp: valid=%b, warp=%0d, PC=%0h, tag=%0h, rd=%0d, data=%0h", + $time, CORE_ID, lsu_wb_if.valid, lsu_wb_if.warp_num, lsu_wb_if.curr_PC, mrq_read_addr, lsu_wb_if.rd, lsu_wb_if.data); end end `endif diff --git a/hw/rtl/VX_mem_unit.v b/hw/rtl/VX_mem_unit.v index af626723..8399857a 100644 --- a/hw/rtl/VX_mem_unit.v +++ b/hw/rtl/VX_mem_unit.v @@ -40,18 +40,20 @@ module VX_mem_unit # ( .CORE_TAG_ID_BITS (`DCORE_TAG_ID_BITS) ) core_dcache_rsp_qual_if(), core_smem_rsp_if(); - // select shared memory address - wire is_smem_addr = (({core_dcache_req_if.addr[0], 2'b0} - `SHARED_MEM_BASE_ADDR) <= `SCACHE_SIZE); - wire smem_select = (| core_dcache_req_if.valid) ? is_smem_addr : 0; + // select shared memory bus + wire is_smem_addr = (({core_dcache_req_if.addr[0], 2'b0} - `SHARED_MEM_BASE_ADDR) <= `SCACHE_SIZE); + wire smem_req_select = (| core_dcache_req_if.valid) ? is_smem_addr : 0; + wire smem_rsp_select = (| core_smem_rsp_if.valid); - VX_dcache_arb dcache_smem_arb ( - .req_select (smem_select), - .in_core_req_if (core_dcache_req_if), - .out0_core_req_if (core_dcache_req_qual_if), - .out1_core_req_if (core_smem_req_if), - .in0_core_rsp_if (core_dcache_rsp_qual_if), - .in1_core_rsp_if (core_smem_rsp_if), - .out_core_rsp_if (core_dcache_rsp_if) + VX_dcache_arb dcache_smem_arb ( + .core_req_in_if (core_dcache_req_if), + .core_req_out0_if (core_dcache_req_qual_if), + .core_req_out1_if (core_smem_req_if), + .core_rsp_in0_if (core_dcache_rsp_qual_if), + .core_rsp_in1_if (core_smem_rsp_if), + .core_rsp_out_if (core_dcache_rsp_if), + .select_req (smem_req_select), + .select_rsp (smem_rsp_select) ); VX_cache #( diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v new file mode 100644 index 00000000..c0a80de1 --- /dev/null +++ b/hw/rtl/VX_mul_unit.v @@ -0,0 +1,123 @@ +`include "VX_define.vh" + +module VX_mul_unit #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + // Inputs + VX_mul_req_if mul_req_if, + + // Outputs + VX_wb_if mul_wb_if +); + wire [`NUM_THREADS-1:0][31:0] alu_result; + wire [`NUM_THREADS-1:0][63:0] mul_result; + wire [`NUM_THREADS-1:0][31:0] div_result; + wire [`NUM_THREADS-1:0][31:0] rem_result; + + wire [`MUL_BITS-1:0] alu_op = mul_req_if.mul_op; + wire [`NUM_THREADS-1:0][31:0] alu_in1 = mul_req_if.rs1_data; + wire [`NUM_THREADS-1:0][31:0] alu_in2 = mul_req_if.rs2_data; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + + wire [32:0] mul_in1 = {(alu_op != `MUL_MULHU) & alu_in1[i][31], alu_in1[i]}; + wire [32:0] mul_in2 = {(alu_op != `MUL_MULHU && alu_op != `MUL_MULHSU) & alu_in2[i][31], alu_in2[i]}; + + wire [32:0] div_in1 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in1[i][31], alu_in1[i]}; + wire [32:0] div_in2 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in2[i][31], alu_in2[i]}; + + VX_mult #( + .WIDTHA(33), + .WIDTHB(33), + .WIDTHP(64), + .SIGNED(1), + .PIPELINE(`MUL_LATENCY) + ) multiplier ( + .clk(clk), + .reset(reset), + .dataa(mul_in1), + .datab(mul_in2), + .result(mul_result[i]) + ); + + VX_divide #( + .WIDTHN(33), + .WIDTHD(33), + .WIDTHQ(32), + .WIDTHR(32), + .NSIGNED(1), + .DSIGNED(1), + .PIPELINE(`DIV_LATENCY) + ) sdiv ( + .clk(clk), + .reset(reset), + .numer(div_in1), + .denom(div_in2), + .quotient(div_result[i]), + .remainder(rem_result[i]) + ); + + always @(*) begin + case (alu_op) + `MUL_MUL: alu_result[i] = mul_result[i][31:0]; + `MUL_MULH, + `MUL_MULHSU, + `MUL_MULHU: alu_result[i] = mul_result[i][63:32]; + `MUL_DIV, + `MUL_DIVU: alu_result[i] = (alu_in2[i] == 0) ? 32'hffffffff : div_result[i]; + `MUL_REM, + `MUL_REMU: alu_result[i] = (alu_in2 == 0) ? alu_in1[i] : rem_result[i]; + default: alu_result[i] = alu_in1[i] + alu_in2[i]; // ADD, LUI, AUIPC, FENCE + endcase + end + end + + reg result_avail; + reg [4:0] pending_ctr; + wire [4:0] instr_delay = `IS_DIV_OP(alu_op) ? `DIV_LATENCY : `MUL_LATENCY; + + always @(posedge clk) begin + if (reset) begin + result_avail <= 0; + pending_ctr <= 0; + end else begin + if (result_avail && !stall) begin + result_avail <= 0; + pending_ctr <= 0; + end + if ((| mul_req_if.valid) && (pending_ctr == 0)) begin + pending_ctr <= instr_delay - 1; + if (instr_delay == 1) + result_avail <= 1; + end else if (pending_ctr != 0) begin + pending_ctr <= pending_ctr - 1; + if (pending_ctr == 1) + result_avail <= 1; + end + end + end + + wire pipeline_stall = ~result_avail && (| mul_req_if.valid); + + wire stall = (~mul_wb_if.ready && (| mul_wb_if.valid)) + || pipeline_stall; + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), + ) mul_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.rd, mul_req_if.wb, alu_result}), + .out ({mul_wb_if.valid, mul_wb_if.warp_num, mul_wb_if.curr_PC, mul_wb_if.rd, mul_wb_if.wb, mul_wb_if.data}) + ); + + assign mul_req_if.ready = ~stall; + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index 72c6ee2d..7fee578b 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -58,16 +58,6 @@ module VX_pipeline #( output wire busy, output wire ebreak ); - -`DEBUG_BEGIN - wire scheduler_empty; -`DEBUG_END - - wire memory_delay; - wire exec_delay; - wire gpr_stage_delay; - wire schedule_delay; - // Dcache VX_cache_core_req_if #( .NUM_REQUESTS(`NUM_THREADS), @@ -98,7 +88,6 @@ module VX_pipeline #( .CORE_TAG_ID_BITS(`ICORE_TAG_ID_BITS) ) core_icache_rsp_if(); - // CSR I/O VX_csr_io_req_if csr_io_req_if(); assign csr_io_req_if.valid = csr_io_req_valid; @@ -112,69 +101,95 @@ module VX_pipeline #( assign csr_io_rsp_data = csr_io_rsp_if.data; assign csr_io_rsp_if.ready = csr_io_rsp_ready; - // Front-end to Back-end - VX_backend_req_if bckE_req_if(); - - // Back-end to Front-end - VX_wb_if writeback_if(); + VX_decode_if decode_if(); + VX_execute_if execute_if(); VX_branch_rsp_if branch_rsp_if(); - VX_jal_rsp_if jal_rsp_if(); - - // Warp controls VX_warp_ctl_if warp_ctl_if(); + VX_ifetch_rsp_if ifetch_rsp_if(); + VX_wb_if writeback_if(); + VX_wstall_if wstall_if(); + VX_join_if join_if(); + VX_wb_if alu_wb_if(); + VX_wb_if branch_wb_if(); + VX_wb_if lsu_wb_if(); + VX_wb_if csr_wb_if(); + VX_wb_if mul_wb_if(); - VX_front_end #( + wire notify_commit; + + VX_fetch #( .CORE_ID(CORE_ID) - ) front_end ( - `SCOPE_SIGNALS_ISTAGE_BIND - + ) fetch ( .clk (clk), .reset (reset), - .warp_ctl_if (warp_ctl_if), - .bckE_req_if (bckE_req_if), - .schedule_delay (schedule_delay), - .icache_rsp_if (core_icache_rsp_if), .icache_req_if (core_icache_req_if), - .jal_rsp_if (jal_rsp_if), + .icache_rsp_if (core_icache_rsp_if), + .wstall_if (wstall_if), + .join_if (join_if), + .warp_ctl_if (warp_ctl_if), .branch_rsp_if (branch_rsp_if), + .ifetch_rsp_if (ifetch_rsp_if), .busy (busy) ); - VX_scheduler scheduler ( + VX_decode #( + .CORE_ID(CORE_ID) + ) decode ( + .clk (clk), + .reset (reset), + .ifetch_rsp_if (ifetch_rsp_if), + .decode_if (decode_if), + .wstall_if (wstall_if), + .join_if (join_if) + ); + + VX_issue #( + .CORE_ID(CORE_ID) + ) issue ( + .clk (clk), + .reset (reset), + .decode_if (decode_if), + .writeback_if (writeback_if), + .execute_if (execute_if), + `UNUSED_PIN (is_empty) + ); + + VX_execute #( + .CORE_ID(CORE_ID) + ) execute ( + `SCOPE_SIGNALS_LSU_BIND + .clk (clk), + .reset (reset), + .dcache_req_if (core_dcache_req_if), + .dcache_rsp_if (core_dcache_rsp_if), + .csr_io_req_if (csr_io_req_if), + .csr_io_rsp_if (csr_io_rsp_if), + .execute_if (execute_if), + .writeback_if (writeback_if), + .warp_ctl_if (warp_ctl_if), + .branch_rsp_if (branch_rsp_if), + .alu_wb_if (alu_wb_if), + .branch_wb_if (branch_wb_if), + .lsu_wb_if (lsu_wb_if), + .csr_wb_if (csr_wb_if), + .mul_wb_if (mul_wb_if), + .notify_commit (notify_commit), + .ebreak (ebreak) + ); + + VX_writeback #( + .CORE_ID(CORE_ID) + ) writeback ( .clk (clk), .reset (reset), - .memory_delay (memory_delay), - .exec_delay (exec_delay), - .gpr_stage_delay(gpr_stage_delay), - .bckE_req_if (bckE_req_if), + .alu_wb_if (alu_wb_if), + .branch_wb_if (branch_wb_if), + .lsu_wb_if (lsu_wb_if), + .csr_wb_if (csr_wb_if), + .mul_wb_if (mul_wb_if), .writeback_if (writeback_if), - .schedule_delay (schedule_delay), - .is_empty (scheduler_empty) - ); - - VX_back_end #( - .CORE_ID(CORE_ID) - ) back_end ( - `SCOPE_SIGNALS_LSU_BIND - `SCOPE_SIGNALS_BE_BIND - - .clk (clk), - .reset (reset), - .csr_io_req_if (csr_io_req_if), - .csr_io_rsp_if (csr_io_rsp_if), - .schedule_delay (schedule_delay), - .warp_ctl_if (warp_ctl_if), - .bckE_req_if (bckE_req_if), - .jal_rsp_if (jal_rsp_if), - .branch_rsp_if (branch_rsp_if), - .dcache_req_if (core_dcache_req_if), - .dcache_rsp_if (core_dcache_rsp_if), - .writeback_if (writeback_if), - .mem_delay (memory_delay), - .exec_delay (exec_delay), - .gpr_stage_delay (gpr_stage_delay), - .ebreak (ebreak) - ); + .notify_commit (notify_commit) + ); assign dcache_req_valid = core_dcache_req_if.valid; assign dcache_req_rw = core_dcache_req_if.rw; @@ -204,17 +219,14 @@ module VX_pipeline #( `SCOPE_ASSIGN(scope_busy, busy); `SCOPE_ASSIGN(scope_schedule_delay, schedule_delay); - `SCOPE_ASSIGN(scope_memory_delay, memory_delay); + `SCOPE_ASSIGN(scope_mem_delay, mem_delay); `SCOPE_ASSIGN(scope_exec_delay, exec_delay); - `SCOPE_ASSIGN(scope_gpr_stage_delay, gpr_stage_delay); + `SCOPE_ASSIGN(scope_gpr_stage_delay, gpr_delay); `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if ((| writeback_if.valid) && (writeback_if.wb != 0)) begin - $display("%t: Core%0d-WB: warp=%0d, rd=%0d, data=%0h", $time, CORE_ID, writeback_if.warp_num, writeback_if.rd, writeback_if.data); - end - if (schedule_delay || memory_delay || exec_delay || gpr_stage_delay) begin - $display("%t: Core%0d-Delay: sched=%b, mem=%b, exec=%b, gpr=%b ", $time, CORE_ID, schedule_delay, memory_delay, exec_delay, gpr_stage_delay); + if ((| execute_if.valid) && (~execute_if.alu_ready || ~execute_if.br_ready || ~execute_if.lsu_ready || ~execute_if.csr_ready || ~execute_if.mul_ready || ~execute_if.gpu_ready)) begin + $display("%t: Core%0d-stall: warp=%0d, PC=%0h, alu=%b, br=%b, lsu=%b, csr=%b, mul=%b, gpu=%b", $time, CORE_ID, execute_if.warp_num, execute_if.curr_PC, ~execute_if.alu_ready, ~execute_if.br_ready, ~execute_if.lsu_ready, ~execute_if.csr_ready, ~execute_if.mul_ready, ~execute_if.gpu_ready); end end `endif diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v deleted file mode 100644 index 52810bcc..00000000 --- a/hw/rtl/VX_scheduler.v +++ /dev/null @@ -1,83 +0,0 @@ -`include "VX_define.vh" - -module VX_scheduler ( - input wire clk, - input wire reset, - input wire memory_delay, - input wire exec_delay, - input wire gpr_stage_delay, - - VX_backend_req_if bckE_req_if, - VX_wb_if writeback_if, - - output wire schedule_delay, - output wire is_empty -); - localparam CTVW = `CLOG2(`NUM_WARPS * 32 + 1); - - reg [31:0][`NUM_THREADS-1:0] rename_table[`NUM_WARPS-1:0]; - reg [CTVW-1:0] count_valid; - - wire is_store = (bckE_req_if.mem_write != `BYTE_EN_NO); - wire is_load = (bckE_req_if.mem_read != `BYTE_EN_NO); - wire is_mem = (is_store || is_load); - wire is_gpu = (bckE_req_if.is_wspawn || bckE_req_if.is_tmc || bckE_req_if.is_barrier || bckE_req_if.is_split); - wire is_csr = bckE_req_if.is_csr; - wire is_exec = !is_mem && !is_gpu && !is_csr; - - wire using_rs2 = is_store - || (bckE_req_if.rs2_src == `RS2_REG) - || bckE_req_if.is_barrier - || bckE_req_if.is_wspawn; - - wire rs1_rename = (rename_table[bckE_req_if.warp_num][bckE_req_if.rs1] != 0); - wire rs2_rename = (rename_table[bckE_req_if.warp_num][bckE_req_if.rs2] != 0); - wire rd_rename = (rename_table[bckE_req_if.warp_num][bckE_req_if.rd ] != 0); - - wire rs1_rename_qual = (rs1_rename) && (bckE_req_if.rs1 != 0); - wire rs2_rename_qual = (rs2_rename) && (bckE_req_if.rs2 != 0 && using_rs2); - wire rd_rename_qual = (rd_rename) && (bckE_req_if.rd != 0); - - wire rename_valid = rs1_rename_qual || rs2_rename_qual || rd_rename_qual; - - assign schedule_delay = (| bckE_req_if.valid) - && ((rename_valid) - || (memory_delay && is_mem) - || (gpr_stage_delay && (is_mem || is_exec)) - || (exec_delay && is_exec)); - - assign is_empty = (count_valid == 0); - - integer i, w; - - wire acquire_rd = (| bckE_req_if.valid) && (bckE_req_if.wb != 0) && (bckE_req_if.rd != 0) && !schedule_delay; - - wire release_rd = (| writeback_if.valid) && (writeback_if.wb != 0) && (writeback_if.rd != 0); - - wire [`NUM_THREADS-1:0] valid_wb_new_mask = rename_table[writeback_if.warp_num][writeback_if.rd] & ~writeback_if.valid; - - reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == valid_wb_new_mask))) ? (count_valid + 1) : - (~acquire_rd && (release_rd && (0 == valid_wb_new_mask))) ? (count_valid - 1) : - count_valid; - - always @(posedge clk) begin - if (reset) begin - for (w = 0; w < `NUM_WARPS; w++) begin - for (i = 0; i < 32; i++) begin - rename_table[w][i] <= 0; - end - end - count_valid <= 0; - end else begin - if (acquire_rd) begin - rename_table[bckE_req_if.warp_num][bckE_req_if.rd] <= bckE_req_if.valid; - end - if (release_rd) begin - assert(rename_table[writeback_if.warp_num][writeback_if.rd] != 0); - rename_table[writeback_if.warp_num][writeback_if.rd] <= valid_wb_new_mask; - end - count_valid <= count_valid_next; - end - end - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_scope.vh b/hw/rtl/VX_scope.vh index 972286ae..4d11cd4c 100644 --- a/hw/rtl/VX_scope.vh +++ b/hw/rtl/VX_scope.vh @@ -74,7 +74,7 @@ scope_execute_valid, \ scope_writeback_valid, \ scope_schedule_delay, \ - scope_memory_delay, \ + scope_mem_delay, \ scope_exec_delay, \ scope_gpr_stage_delay, \ scope_busy, \ @@ -127,26 +127,26 @@ wire scope_busy; \ wire scope_snp_rsp_ready; \ wire scope_schedule_delay; \ - wire scope_memory_delay; \ + wire scope_mem_delay; \ wire scope_exec_delay; \ wire scope_gpr_stage_delay; \ wire [`NUM_THREADS-1:0] scope_decode_valid; \ wire [`NW_BITS-1:0] scope_decode_warp_num; \ wire [31:0] scope_decode_curr_PC; \ wire scope_decode_is_jal; \ - wire [4:0] scope_decode_rs1; \ - wire [4:0] scope_decode_rs2; \ + wire [`NR_BITS-1:0] scope_decode_rs1; \ + wire [`NR_BITS-1:0] scope_decode_rs2; \ wire [`NUM_THREADS-1:0] scope_execute_valid; \ wire [`NW_BITS-1:0] scope_execute_warp_num; \ wire [31:0] scope_execute_curr_PC; \ - wire [4:0] scope_execute_rd; \ + wire [`NR_BITS-1:0] scope_execute_rd; \ wire [63:0] scope_execute_a; \ wire [63:0] scope_execute_b; \ wire [`NUM_THREADS-1:0] scope_writeback_valid; \ wire [`NW_BITS-1:0] scope_writeback_warp_num; \ wire [31:0] scope_writeback_curr_PC; \ - wire [1:0] scope_writeback_wb; \ - wire [4:0] scope_writeback_rd; \ + wire [`WB_BITS-1:0] scope_writeback_wb; \ + wire [`NR_BITS-1:0] scope_writeback_rd; \ wire [63:0] scope_writeback_data; \ wire scope_bank_valid_st0; \ wire scope_bank_valid_st1; \ @@ -204,7 +204,7 @@ `define SCOPE_SIGNALS_PIPELINE_IO \ output wire scope_busy, \ output wire scope_schedule_delay, \ - output wire scope_memory_delay, \ + output wire scope_mem_delay, \ output wire scope_exec_delay, \ output wire scope_gpr_stage_delay, @@ -213,19 +213,19 @@ output wire [`NW_BITS-1:0] scope_decode_warp_num, \ output wire [31:0] scope_decode_curr_PC, \ output wire scope_decode_is_jal, \ - output wire [4:0] scope_decode_rs1, \ - output wire [4:0] scope_decode_rs2, \ + output wire [`NR_BITS-1:0] scope_decode_rs1, \ + output wire [`NR_BITS-1:0] scope_decode_rs2, \ output wire [`NUM_THREADS-1:0] scope_execute_valid, \ output wire [`NW_BITS-1:0] scope_execute_warp_num, \ output wire [31:0] scope_execute_curr_PC, \ - output wire [4:0] scope_execute_rd, \ + output wire [`NR_BITS-1:0] scope_execute_rd, \ output wire [63:0] scope_execute_a, \ output wire [63:0] scope_execute_b, \ output wire [`NUM_THREADS-1:0] scope_writeback_valid, \ output wire [`NW_BITS-1:0] scope_writeback_warp_num, \ output wire [31:0] scope_writeback_curr_PC, \ - output wire [1:0] scope_writeback_wb, \ - output wire [4:0] scope_writeback_rd, \ + output wire [`WB_BITS-1:0] scope_writeback_wb, \ + output wire [`NR_BITS-1:0] scope_writeback_rd, \ output wire [63:0] scope_writeback_data, `define SCOPE_SIGNALS_ISTAGE_BIND \ @@ -326,7 +326,7 @@ `define SCOPE_SIGNALS_PIPELINE_BIND \ .scope_busy (scope_busy), \ .scope_schedule_delay (scope_schedule_delay), \ - .scope_memory_delay (scope_memory_delay), \ + .scope_mem_delay (scope_mem_delay), \ .scope_exec_delay (scope_exec_delay), \ .scope_gpr_stage_delay (scope_gpr_stage_delay), diff --git a/hw/rtl/VX_warp.v b/hw/rtl/VX_warp.v index b780d760..55c2bb31 100644 --- a/hw/rtl/VX_warp.v +++ b/hw/rtl/VX_warp.v @@ -10,7 +10,7 @@ module VX_warp ( input wire change_mask, input wire jal, input wire[31:0] dest, - input wire branch_dir, + input wire branch_taken, input wire[31:0] branch_dest, input wire wspawn, input wire[31:0] wspawn_pc, @@ -44,7 +44,7 @@ module VX_warp ( always @(*) begin if (jal == 1'b1) begin temp_PC = dest; - end else if (branch_dir) begin + end else if (branch_taken) begin temp_PC = branch_dest; end else begin temp_PC = real_PC; diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index 9621d47b..09ec8564 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -1,90 +1,38 @@ `include "VX_define.vh" -module VX_warp_sched ( - input wire clk, - input wire reset, - input wire stall, +module VX_warp_sched #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, - // Wspawn - input wire wspawn, - input wire[31:0] wsapwn_pc, - input wire[`NUM_WARPS-1:0] wspawn_new_active, + VX_warp_ctl_if warp_ctl_if, + VX_wstall_if wstall_if, + VX_join_if join_if, + VX_branch_rsp_if branch_rsp_if, - // CTM - input wire ctm, - input wire[`NUM_THREADS-1:0] ctm_mask, - input wire[`NW_BITS-1:0] ctm_warp_num, + VX_ifetch_rsp_if ifetch_rsp_if, + VX_ifetch_req_if ifetch_req_if, - // WHALT - input wire whalt, - input wire[`NW_BITS-1:0] whalt_warp_num, - - input wire is_barrier, -`DEBUG_BEGIN - input wire[31:0] barrier_id, -`DEBUG_END - input wire[$clog2(`NUM_WARPS):0] num_warps, - input wire[`NW_BITS-1:0] barrier_warp_num, - - // WSTALL - input wire wstall, - input wire [`NW_BITS-1:0] wstall_warp_num, - - // Split - input wire is_split, - input wire dont_split, - input wire [`NUM_THREADS-1:0] split_new_mask, - input wire [`NUM_THREADS-1:0] split_later_mask, - input wire [31:0] split_save_pc, - input wire [`NW_BITS-1:0] split_warp_num, - - // Join - input wire is_join, - input wire [`NW_BITS-1:0] join_warp_num, - - // JAL - input wire jal, - input wire [31:0] dest, - input wire [`NW_BITS-1:0] jal_warp_num, - - // Branch - input wire branch_valid, - input wire branch_dir, - input wire [31:0] branch_dest, - input wire [`NW_BITS-1:0] branch_warp_num, - - output wire [`NUM_THREADS-1:0] thread_mask, - output wire [`NW_BITS-1:0] warp_num, - output wire [31:0] warp_pc, - output wire busy, - output wire scheduled_warp, - - input wire [`NW_BITS-1:0] icache_stage_wid, - input wire icache_stage_response + output wire busy ); wire update_use_wspawn; wire update_visible_active; + wire scheduled_warp; - wire[(1+32+`NUM_THREADS-1):0] d[`NUM_WARPS-1:0]; + wire [(1+32+`NUM_THREADS-1):0] d[`NUM_WARPS-1:0]; - wire join_fall; - wire[31:0] join_pc; - wire[`NUM_THREADS-1:0] join_tm; + wire join_fall; + wire [31:0] join_pc; + wire [`NUM_THREADS-1:0] join_tm; -`DEBUG_BEGIN - wire in_wspawn = wspawn; - wire in_ctm = ctm; - wire in_whalt = whalt; - wire in_wstall = wstall; -`DEBUG_END - - reg[`NUM_WARPS-1:0] warp_active; - reg[`NUM_WARPS-1:0] warp_stalled; + reg [`NUM_WARPS-1:0] warp_active; + reg [`NUM_WARPS-1:0] warp_stalled; reg [`NUM_WARPS-1:0] visible_active; - wire[`NUM_WARPS-1:0] use_active; + wire [`NUM_WARPS-1:0] use_active; - reg [`NUM_WARPS-1:0] warp_lock; + reg [`NUM_WARPS-1:0] warp_lock; wire wstall_this_cycle; @@ -92,17 +40,23 @@ module VX_warp_sched ( reg [31:0] warp_pcs[`NUM_WARPS-1:0]; // barriers - reg [`NUM_WARPS-1:0] barrier_stall_mask[(`NUM_BARRIERS-1):0]; - wire reached_barrier_limit; + reg [`NUM_WARPS-1:0] barrier_stall_mask[`NUM_BARRIERS-1:0]; wire [`NUM_WARPS-1:0] b_mask; - wire [$clog2(`NUM_WARPS):0] b_count; + wire [`NW_BITS:0] b_count; - // wsapwn - reg [31:0] use_wsapwn_pc; - reg [`NUM_WARPS-1:0] use_wsapwn; + wire reached_barrier_limit; - wire [`NW_BITS-1:0] warp_to_schedule; - wire schedule; + // wspawn + reg [31:0] use_wspawn_pc; + reg [`NUM_WARPS-1:0] use_wspawn; + + wire [`NW_BITS-1:0] warp_to_schedule; + wire schedule; + + wire [`NUM_THREADS-1:0] thread_mask; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] warp_pc; + wire scheduled_warp; wire hazard; wire global_stall; @@ -115,15 +69,18 @@ module VX_warp_sched ( reg didnt_split; - integer w, b; + wire stall; + + integer i; always @(posedge clk) begin if (reset) begin - for (b = 0; b < `NUM_BARRIERS; b=b+1) begin - barrier_stall_mask[b] <= 0; + for (i = 0; i < `NUM_BARRIERS; i++) begin + barrier_stall_mask[i] <= 0; end - use_wsapwn_pc <= 0; - use_wsapwn <= 0; + + use_wspawn_pc <= 0; + use_wspawn <= 0; warp_pcs[0] <= `STARTUP_ADDR; warp_active[0] <= 1; // Activating first warp visible_active[0] <= 1; // Activating first warp @@ -131,63 +88,62 @@ module VX_warp_sched ( warp_stalled <= 0; didnt_split <= 0; warp_lock <= 0; - // total_barrier_stall = 0; - for (w = 1; w < `NUM_WARPS; w=w+1) begin - warp_pcs[w] <= 0; - warp_active[w] <= 0; // Activating first warp - visible_active[w] <= 0; // Activating first warp - thread_masks[w] <= 1; // Activating first thread in first warp + + for (i = 1; i < `NUM_WARPS; i++) begin + warp_pcs[i] <= 0; + warp_active[i] <= 0; // Activating first warp + visible_active[i] <= 0; // Activating first warp + thread_masks[i] <= 1; // Activating first thread in first warp end end else begin - // Wsapwning warps - if (wspawn) begin - warp_active <= wspawn_new_active; - use_wsapwn_pc <= wsapwn_pc; - use_wsapwn <= wspawn_new_active & (~`NUM_WARPS'b1); + + if (warp_ctl_if.wspawn) begin + warp_active <= warp_ctl_if.wspawn_new_active; + use_wspawn_pc <= warp_ctl_if.wspawn_pc; + use_wspawn <= warp_ctl_if.wspawn_new_active & (~`NUM_WARPS'b1); end - if (is_barrier) begin - warp_stalled[barrier_warp_num] <= 0; + if (warp_ctl_if.is_barrier) begin + warp_stalled[warp_ctl_if.warp_num] <= 0; if (reached_barrier_limit) begin - barrier_stall_mask[barrier_id] <= 0; + barrier_stall_mask[warp_ctl_if.barrier_id] <= 0; end else begin - barrier_stall_mask[barrier_id][barrier_warp_num] <= 1; + barrier_stall_mask[warp_ctl_if.barrier_id][warp_ctl_if.warp_num] <= 1; end - end else if (ctm) begin - thread_masks[ctm_warp_num] <= ctm_mask; - warp_stalled[ctm_warp_num] <= 0; - end else if (is_join && !didnt_split) begin + end else if (warp_ctl_if.change_mask) begin + thread_masks[warp_ctl_if.warp_num] <= warp_ctl_if.thread_mask; + warp_stalled[warp_ctl_if.warp_num] <= 0; + end else if (join_if.is_join && !didnt_split) begin if (!join_fall) begin - warp_pcs[join_warp_num] <= join_pc; + warp_pcs[join_if.warp_num] <= join_pc; end - thread_masks[join_warp_num] <= join_tm; - didnt_split <= 0; - end else if (is_split) begin - warp_stalled[split_warp_num] <= 0; - if (!dont_split) begin - thread_masks[split_warp_num] <= split_new_mask; + thread_masks[join_if.warp_num] <= join_tm; + didnt_split <= 0; + end else if (warp_ctl_if.is_split) begin + warp_stalled[warp_ctl_if.warp_num] <= 0; + if (warp_ctl_if.do_split) begin + thread_masks[warp_ctl_if.warp_num] <= warp_ctl_if.split_new_mask; didnt_split <= 0; end else begin didnt_split <= 1; end end - if (whalt) begin - warp_active[whalt_warp_num] <= 0; - visible_active[whalt_warp_num] <= 0; + if (warp_ctl_if.whalt) begin + warp_active[warp_ctl_if.warp_num] <= 0; + visible_active[warp_ctl_if.warp_num] <= 0; end if (update_use_wspawn) begin - use_wsapwn[warp_to_schedule] <= 0; + use_wspawn[warp_to_schedule] <= 0; thread_masks[warp_to_schedule] <= 1; end - // Stalling the scheduling of warps - if (wstall) begin - warp_stalled[wstall_warp_num] <= 1; - visible_active[wstall_warp_num] <= 0; + if (wstall_if.wstall) begin + warp_stalled[wstall_if.warp_num] <= 1; + visible_active[wstall_if.warp_num] <= 0; end // Refilling active warps @@ -201,26 +157,20 @@ module VX_warp_sched ( warp_pcs[warp_to_schedule] <= new_pc; end - // Jal - if (jal) begin - warp_pcs[jal_warp_num] <= dest; - warp_stalled[jal_warp_num] <= 0; - end - // Branch - if (branch_valid) begin - if (branch_dir) begin - warp_pcs[branch_warp_num] <= branch_dest; + if (branch_rsp_if.valid) begin + if (branch_rsp_if.taken) begin + warp_pcs[branch_rsp_if.warp_num] <= branch_rsp_if.dest; end - warp_stalled[branch_warp_num] <= 0; + warp_stalled[branch_rsp_if.warp_num] <= 0; end // Lock/Release if (scheduled_warp && !stall) begin - warp_lock[warp_num] <= 1'b1; + warp_lock[warp_num] <= 1; end - if (icache_stage_response) begin - warp_lock[icache_stage_wid] <= 1'b0; + if ((| ifetch_rsp_if.valid) && ifetch_rsp_if.ready) begin + warp_lock[ifetch_rsp_if.warp_num] <= 0; end end @@ -233,7 +183,7 @@ module VX_warp_sched ( .count (b_count) ); - wire [$clog2(`NUM_WARPS):0] count_visible_active; + wire [`NW_BITS:0] count_visible_active; VX_countones #( .N(`NUM_WARPS) @@ -242,30 +192,29 @@ module VX_warp_sched ( .count (count_visible_active) ); - // assign b_count = $countones(b_mask); + assign b_mask = barrier_stall_mask[warp_ctl_if.barrier_id][`NUM_WARPS-1:0]; + + assign reached_barrier_limit = (b_count == warp_ctl_if.num_warps); - assign b_mask = barrier_stall_mask[barrier_id][`NUM_WARPS-1:0]; - assign reached_barrier_limit = b_count == (num_warps); - - assign wstall_this_cycle = wstall && (wstall_warp_num == warp_to_schedule); // Maybe bug + assign wstall_this_cycle = wstall_if.wstall && (wstall_if.warp_num == warp_to_schedule); // Maybe bug assign total_barrier_stall = barrier_stall_mask[0] | barrier_stall_mask[1] | barrier_stall_mask[2] | barrier_stall_mask[3]; - assign update_visible_active = (0 == count_visible_active) && !(stall || wstall_this_cycle || hazard || is_join); + assign update_visible_active = (0 == count_visible_active) && !(stall || wstall_this_cycle || hazard || join_if.is_join); - wire [(1+32+`NUM_THREADS-1):0] q1 = {1'b1, 32'b0, thread_masks[split_warp_num]}; - wire [(1+32+`NUM_THREADS-1):0] q2 = {1'b0, split_save_pc, split_later_mask}; + wire [(1+32+`NUM_THREADS-1):0] q1 = {1'b1, 32'b0, thread_masks[warp_ctl_if.warp_num]}; + wire [(1+32+`NUM_THREADS-1):0] q2 = {1'b0, warp_ctl_if.split_save_pc, warp_ctl_if.split_later_mask}; - assign {join_fall, join_pc, join_tm} = d[join_warp_num]; + assign {join_fall, join_pc, join_tm} = d[join_if.warp_num]; - genvar i; - generate - for (i = 0; i < `NUM_WARPS; i++) begin : stacks - wire correct_warp_s = (i == split_warp_num); - wire correct_warp_j = (i == join_warp_num); + genvar j; - wire push = (is_split && !dont_split) && correct_warp_s; - wire pop = is_join && correct_warp_j; + for (j = 0; j < `NUM_WARPS; j++) begin : stacks + wire correct_warp_s = (j == warp_ctl_if.warp_num); + wire correct_warp_j = (j == join_if.warp_num); + + wire push = (warp_ctl_if.is_split && warp_ctl_if.do_split) && correct_warp_s; + wire pop = join_if.is_join && correct_warp_j; VX_generic_stack #( .WIDTH(1+32+`NUM_THREADS), @@ -279,27 +228,27 @@ module VX_warp_sched ( .q1 (q1), .q2 (q2) ); - end - endgenerate + end - wire should_jal = (jal && (warp_to_schedule == jal_warp_num)); - wire should_bra = (branch_valid && branch_dir && (warp_to_schedule == branch_warp_num)); + wire should_bra = (branch_rsp_if.valid && branch_rsp_if.taken && (warp_to_schedule == branch_rsp_if.warp_num)); - assign hazard = (should_jal || should_bra) && schedule; + assign hazard = should_bra && schedule; assign real_schedule = schedule && !warp_stalled[warp_to_schedule] && !total_barrier_stall[warp_to_schedule] && !warp_lock[0]; - assign global_stall = (stall || wstall_this_cycle || hazard || !real_schedule || is_join); + assign global_stall = (stall || wstall_this_cycle || hazard || !real_schedule || join_if.is_join); - assign scheduled_warp = !(wstall_this_cycle || hazard || !real_schedule || is_join) && !reset; + assign scheduled_warp = !(wstall_this_cycle || hazard || !real_schedule || join_if.is_join) && !reset; - wire real_use_wspawn = use_wsapwn[warp_to_schedule]; + wire real_use_wspawn = use_wspawn[warp_to_schedule]; - assign warp_pc = real_use_wspawn ? use_wsapwn_pc : warp_pcs[warp_to_schedule]; + assign warp_pc = real_use_wspawn ? use_wspawn_pc : warp_pcs[warp_to_schedule]; + assign thread_mask = (global_stall) ? 0 : (real_use_wspawn ? `NUM_THREADS'b1 : thread_masks[warp_to_schedule]); + assign warp_num = warp_to_schedule; - assign update_use_wspawn = use_wsapwn[warp_to_schedule] && !global_stall; + assign update_use_wspawn = use_wspawn[warp_to_schedule] && !global_stall; assign new_pc = warp_pc + 4; @@ -315,13 +264,21 @@ module VX_warp_sched ( .grant_index (warp_to_schedule), .grant_valid (schedule), `UNUSED_PIN (grant_onehot) + ); + + assign stall = ~ifetch_req_if.ready && (| ifetch_req_if.valid); + + VX_generic_register #( + .N(`NUM_THREADS + 32 + `NW_BITS) + ) fetch_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({thread_mask, warp_pc, warp_num}), + .out ({ifetch_req_if.valid, ifetch_req_if.curr_PC, ifetch_req_if.warp_num}) ); - // always @(*) begin - // $display("WarpPC: %h",warp_pc); - // $display("real_schedule: %d, schedule: %d, warp_stalled: %d, warp_to_schedule: %d, total_barrier_stall: %d",real_schedule, schedule, warp_stalled[warp_to_schedule], warp_to_schedule, total_barrier_stall[warp_to_schedule]); - // end - - assign busy = (warp_active != 0); + assign busy = (warp_active != 0); endmodule \ No newline at end of file diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 4baddbfb..cd642c3d 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -1,89 +1,112 @@ `include "VX_define.vh" -module VX_writeback ( - input wire clk, - input wire reset, +module VX_writeback #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, - // Mem WB info - VX_wb_if mem_wb_if, + // inputs + VX_wb_if alu_wb_if, + VX_wb_if branch_wb_if, + VX_wb_if lsu_wb_if, + VX_wb_if mul_wb_if, + VX_wb_if csr_wb_if, - // EXEC Unit WB info - VX_wb_if inst_exec_wb_if, - - // CSR Unit WB info - VX_wb_if csr_wb_if, - - // Actual WB to GPR - VX_wb_if writeback_if, - output wire no_slot_mem, - output wire no_slot_exec, - output wire no_slot_csr + // outputs + VX_wb_if writeback_if, + output wire notify_commit ); - VX_wb_if writeback_tmp_if(); + wire br_valid = (| branch_wb_if.valid); + wire lsu_valid = (| lsu_wb_if.valid); + wire mul_valid = (| mul_wb_if.valid); + wire alu_valid = (| alu_wb_if.valid); + wire csr_valid = (| csr_wb_if.valid); - wire exec_wb = (inst_exec_wb_if.wb != 0) && (| inst_exec_wb_if.valid); - wire mem_wb = (mem_wb_if.wb != 0) && (| mem_wb_if.valid); - wire csr_wb = (csr_wb_if.wb != 0) && (| csr_wb_if.valid); + VX_wb_if writeback_tmp_if(); - assign no_slot_mem = mem_wb && (exec_wb || csr_wb); - assign no_slot_csr = csr_wb && exec_wb; - assign no_slot_exec = 0; + assign writeback_tmp_if.valid = br_valid ? branch_wb_if.valid : + lsu_valid ? lsu_wb_if.valid : + mul_valid ? mul_wb_if.valid : + alu_valid ? alu_wb_if.valid : + csr_valid ? csr_wb_if.valid : + 0; - assign writeback_tmp_if.data = exec_wb ? inst_exec_wb_if.data : - csr_wb ? csr_wb_if.data : - mem_wb ? mem_wb_if.data : - 0; + assign writeback_tmp_if.warp_num = br_valid ? branch_wb_if.warp_num : + lsu_valid ? lsu_wb_if.warp_num : + mul_valid ? mul_wb_if.warp_num : + alu_valid ? alu_wb_if.warp_num : + csr_valid ? csr_wb_if.warp_num : + + 0; - assign writeback_tmp_if.valid = exec_wb ? inst_exec_wb_if.valid : - csr_wb ? csr_wb_if.valid : - mem_wb ? mem_wb_if.valid : - 0; + assign writeback_tmp_if.curr_PC = br_valid ? branch_wb_if.curr_PC : + lsu_valid ? lsu_wb_if.curr_PC : + mul_valid ? mul_wb_if.curr_PC : + alu_valid ? alu_wb_if.curr_PC : + csr_valid ? csr_wb_if.curr_PC : + 0; - assign writeback_tmp_if.rd = exec_wb ? inst_exec_wb_if.rd : - csr_wb ? csr_wb_if.rd : - mem_wb ? mem_wb_if.rd : - 0; + assign writeback_tmp_if.data = br_valid ? branch_wb_if.data : + lsu_valid ? lsu_wb_if.data : + mul_valid ? mul_wb_if.data : + alu_valid ? alu_wb_if.data : + csr_valid ? csr_wb_if.data : + 0; - assign writeback_tmp_if.wb = exec_wb ? inst_exec_wb_if.wb : - csr_wb ? csr_wb_if.wb : - mem_wb ? mem_wb_if.wb : - 0; + assign writeback_tmp_if.rd = br_valid ? branch_wb_if.rd : + lsu_valid ? lsu_wb_if.rd : + mul_valid ? mul_wb_if.rd : + alu_valid ? alu_wb_if.rd : + csr_valid ? csr_wb_if.rd : + 0; - assign writeback_tmp_if.warp_num = exec_wb ? inst_exec_wb_if.warp_num : - csr_wb ? csr_wb_if.warp_num : - mem_wb ? mem_wb_if.warp_num : - 0; + assign writeback_tmp_if.wb = br_valid ? branch_wb_if.wb : + lsu_valid ? lsu_wb_if.wb : + alu_valid ? alu_wb_if.wb : + csr_valid ? csr_wb_if.wb : + mul_valid ? mul_wb_if.wb : + 0; - assign writeback_tmp_if.curr_PC = exec_wb ? inst_exec_wb_if.curr_PC : - csr_wb ? 32'hdeadbeef : - mem_wb ? mem_wb_if.curr_PC : - 32'hdeadbeef; - - wire [`NUM_THREADS-1:0][31:0] use_wb_data; + wire stall = ~writeback_if.ready && (| writeback_if.valid); VX_generic_register #( - .N(39 + `NW_BITS-1 + 1 + `NUM_THREADS*33) - ) wb_register ( - .clk (clk), - .reset(reset), - .stall(1'b0), - .flush(1'b0), - .in ({writeback_tmp_if.data, writeback_tmp_if.valid, writeback_tmp_if.rd, writeback_tmp_if.wb, writeback_tmp_if.warp_num, writeback_tmp_if.curr_PC}), - .out ({use_wb_data, writeback_if.valid, writeback_if.rd, writeback_if.wb, writeback_if.warp_num, writeback_if.curr_PC}) + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + (`NUM_THREADS * 32) + `WB_BITS) + ) wb_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.curr_PC, writeback_tmp_if.rd, writeback_tmp_if.data, writeback_tmp_if.wb}), + .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.curr_PC, writeback_if.rd, writeback_if.data, writeback_if.wb}) ); - reg [31:0] last_data_wb /* verilator public */; + assign branch_wb_if.ready = !stall; + assign lsu_wb_if.ready = !stall && !br_valid; + assign mul_wb_if.ready = !stall && !br_valid && !lsu_valid; + assign alu_wb_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid; + assign csr_wb_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid && !alu_valid; + + assign notify_commit = (| writeback_tmp_if.valid) && ~stall; + // special workaround to control RISC-V benchmarks termination on Verilator + reg [31:0] last_data_wb /* verilator public */; always @(posedge clk) begin - if ( (| writeback_if.valid) && (writeback_if.wb != 0) && (writeback_if.rd == 28)) begin - last_data_wb <= use_wb_data[0]; + if (notify_commit && (writeback_tmp_if.wb != 0) && (writeback_tmp_if.rd == 28)) begin + last_data_wb <= writeback_tmp_if.data[0]; end end - assign writeback_if.data = use_wb_data; +`ifdef DBG_PRINT_PIPELINE + always @(posedge clk) begin + if ((| writeback_tmp_if.valid) && ~stall) begin + $display("%t: Core%0d-WB: warp=%0d, PC=%0h, rd=%0d, wb=%0d, data=%0h", $time, CORE_ID, writeback_tmp_if.warp_num, writeback_tmp_if.curr_PC, writeback_tmp_if.rd, writeback_tmp_if.wb, writeback_tmp_if.data); + end + end +`endif -endmodule : VX_writeback +endmodule diff --git a/hw/rtl/cache/VX_bank.v b/hw/rtl/cache/VX_bank.v index 57b6efe5..2980274d 100644 --- a/hw/rtl/cache/VX_bank.v +++ b/hw/rtl/cache/VX_bank.v @@ -106,8 +106,8 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO /* verilator lint_off UNUSED */ wire[31:0] debug_use_pc_st0; - wire[1:0] debug_wb_st0; - wire[4:0] debug_rd_st0; + wire[`WB_BITS-1:0] debug_wb_st0; + wire[`NR_BITS-1:0] debug_rd_st0; wire[`NW_BITS-1:0] debug_warp_num_st0; wire debug_rw_st0; wire[WORD_SIZE-1:0] debug_byteen_st0; @@ -115,8 +115,8 @@ module VX_bank #( wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st0; wire[31:0] debug_use_pc_st1e; - wire[1:0] debug_wb_st1e; - wire[4:0] debug_rd_st1e; + wire[`WB_BITS-1:0] debug_wb_st1e; + wire[`NR_BITS-1:0] debug_rd_st1e; wire[`NW_BITS-1:0] debug_warp_num_st1e; wire debug_rw_st1e; wire[WORD_SIZE-1:0] debug_byteen_st1e; @@ -124,8 +124,8 @@ module VX_bank #( wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st1e; wire[31:0] debug_use_pc_st2; - wire[1:0] debug_wb_st2; - wire[4:0] debug_rd_st2; + wire[`WB_BITS-1:0] debug_wb_st2; + wire[`NR_BITS-1:0] debug_rd_st2; wire[`NW_BITS-1:0] debug_warp_num_st2; wire debug_rw_st2; wire[WORD_SIZE-1:0] debug_byteen_st2; @@ -370,7 +370,7 @@ module VX_bank #( .clk (clk), .reset (reset), .stall (stall_bank_pipe), - .flush (1'b0), + .flush (0), .in ({qual_is_mrvq_st0, qual_is_snp_st0, qual_snp_invalidate_st0, qual_going_to_write_st0, qual_valid_st0, qual_addr_st0, qual_wsel_st0, qual_writeword_st0, qual_inst_meta_st0, qual_is_fill_st0, qual_writedata_st0}), .out ({is_mrvq_st1[0] , is_snp_st1[0], snp_invalidate_st1[0], going_to_write_st1[0], valid_st1[0], addr_st1[0], wsel_st1[0], writeword_st1[0], inst_meta_st1[0], is_fill_st1[0], writedata_st1[0]}) ); @@ -383,7 +383,7 @@ module VX_bank #( .clk (clk), .reset (reset), .stall (stall_bank_pipe), - .flush (1'b0), + .flush (0), .in ({is_mrvq_st1[i-1], is_snp_st1[i-1], snp_invalidate_st1[i-1], going_to_write_st1[i-1], valid_st1[i-1], addr_st1[i-1], wsel_st1[i-1], writeword_st1[i-1], inst_meta_st1[i-1], is_fill_st1[i-1], writedata_st1[i-1]}), .out ({is_mrvq_st1[i] , is_snp_st1[i], snp_invalidate_st1[i], going_to_write_st1[i], valid_st1[i], addr_st1[i], wsel_st1[i], writeword_st1[i], inst_meta_st1[i], is_fill_st1[i], writedata_st1[i]}) ); @@ -512,7 +512,7 @@ module VX_bank #( .clk (clk), .reset (reset), .stall (stall_bank_pipe), - .flush (1'b0), + .flush (0), .in ({mrvq_recover_ready_state_st1e, is_mrvq_st1e_st2, mrvq_init_ready_state_st1e , snp_to_mrvq_st1e, is_snp_st1e, snp_invalidate_st1e, fill_saw_dirty_st1e, is_fill_st1[STAGE_1_CYCLES-1] , qual_valid_st1e_2, addr_st1e, wsel_st1[STAGE_1_CYCLES-1], writeword_st1[STAGE_1_CYCLES-1], readword_st1e, readdata_st1e, readtag_st1e, miss_st1e, dirty_st1e, dirtyb_st1e, inst_meta_st1[STAGE_1_CYCLES-1]}), .out ({mrvq_recover_ready_state_st2 , is_mrvq_st2 , mrvq_init_ready_state_unqual_st2, snp_to_mrvq_st2 , is_snp_st2 , snp_invalidate_st2, fill_saw_dirty_st2 , is_fill_st2 , valid_st2 , addr_st2 , wsel_st2, writeword_st2 , readword_st2 , readdata_st2 , readtag_st2 , miss_st2 , dirty_st2 , dirtyb_st2, inst_meta_st2 }) ); @@ -765,4 +765,4 @@ module VX_bank #( `SCOPE_ASSIGN(scope_bank_addr_st1, `LINE_TO_BYTE_ADDR(addr_st1e, BANK_ID)); `SCOPE_ASSIGN(scope_bank_addr_st2, `LINE_TO_BYTE_ADDR(addr_st2, BANK_ID)); -endmodule : VX_bank +endmodule diff --git a/hw/rtl/cache/VX_cache.v b/hw/rtl/cache/VX_cache.v index 240bd304..e76430f9 100644 --- a/hw/rtl/cache/VX_cache.v +++ b/hw/rtl/cache/VX_cache.v @@ -130,8 +130,8 @@ module VX_cache #( `ifdef DBG_CORE_REQ_INFO /* verilator lint_off UNUSED */ wire[31:0] debug_core_req_use_pc; - wire[1:0] debug_core_req_wb; - wire[4:0] debug_core_req_rd; + wire[`WB_BITS-1:0] debug_core_req_wb; + wire[`NR_BITS-1:0] debug_core_req_rd; wire[`NW_BITS-1:0] debug_core_req_warp_num; wire[`LOG2UP(CREQ_SIZE)-1:0] debug_core_req_idx; /* verilator lint_on UNUSED */ diff --git a/hw/rtl/cache/VX_cache_core_rsp_merge.v b/hw/rtl/cache/VX_cache_core_rsp_merge.v index 849d8907..24e40f91 100644 --- a/hw/rtl/cache/VX_cache_core_rsp_merge.v +++ b/hw/rtl/cache/VX_cache_core_rsp_merge.v @@ -23,9 +23,9 @@ module VX_cache_core_rsp_merge #( output wire [NUM_BANKS-1:0] per_bank_core_rsp_ready, // Core Writeback - output reg [NUM_REQUESTS-1:0] core_rsp_valid, - output reg [NUM_REQUESTS-1:0][`WORD_WIDTH-1:0] core_rsp_data, - output reg [`CORE_REQ_TAG_COUNT-1:0][CORE_TAG_WIDTH-1:0] core_rsp_tag, + output wire [NUM_REQUESTS-1:0] core_rsp_valid, + output wire [NUM_REQUESTS-1:0][`WORD_WIDTH-1:0] core_rsp_data, + output wire [`CORE_REQ_TAG_COUNT-1:0][CORE_TAG_WIDTH-1:0] core_rsp_tag, input wire core_rsp_ready ); @@ -41,47 +41,63 @@ module VX_cache_core_rsp_merge #( `UNUSED_PIN (grant_onehot) ); - reg [NUM_BANKS-1:0] per_bank_core_rsp_pop_unqual; + reg [NUM_REQUESTS-1:0] core_rsp_valid_unqual; + reg [NUM_REQUESTS-1:0][`WORD_WIDTH-1:0] core_rsp_data_unqual; + reg [`CORE_REQ_TAG_COUNT-1:0][CORE_TAG_WIDTH-1:0] core_rsp_tag_unqual; + reg [NUM_BANKS-1:0] core_rsp_bank_select; - assign per_bank_core_rsp_ready = per_bank_core_rsp_pop_unqual & {NUM_BANKS{core_rsp_ready}}; + wire stall = ~core_rsp_ready; integer i; if (CORE_TAG_ID_BITS != 0) begin - assign core_rsp_tag = per_bank_core_rsp_tag[main_bank_index]; always @(*) begin - core_rsp_valid = 0; - core_rsp_data = 0; + core_rsp_valid_unqual = 0; + core_rsp_data_unqual = 0; + core_rsp_tag_unqual = per_bank_core_rsp_tag[main_bank_index]; for (i = 0; i < NUM_BANKS; i++) begin if (per_bank_core_rsp_valid[i] && (per_bank_core_rsp_tag[i][CORE_TAG_ID_BITS-1:0] == per_bank_core_rsp_tag[main_bank_index][CORE_TAG_ID_BITS-1:0])) begin - core_rsp_valid[per_bank_core_rsp_tid[i]] = 1; - core_rsp_data[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_data[i]; - per_bank_core_rsp_pop_unqual[i] = 1; + core_rsp_valid_unqual[per_bank_core_rsp_tid[i]] = 1; + core_rsp_data_unqual[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_data[i]; + core_rsp_bank_select[i] = 1; end else begin - per_bank_core_rsp_pop_unqual[i] = 0; + core_rsp_bank_select[i] = 0; end end end end else begin always @(*) begin - core_rsp_valid = 0; - core_rsp_data = 0; - core_rsp_tag = 0; + core_rsp_valid_unqual = 0; + core_rsp_data_unqual = 0; + core_rsp_tag_unqual = 0; for (i = 0; i < NUM_BANKS; i++) begin if (per_bank_core_rsp_valid[i] - && !core_rsp_valid[per_bank_core_rsp_tid[i]] + && !core_rsp_valid_unqual[per_bank_core_rsp_tid[i]] && ((main_bank_index == `BANK_BITS'(i)) || (per_bank_core_rsp_tid[i] != per_bank_core_rsp_tid[main_bank_index]))) begin - core_rsp_valid[per_bank_core_rsp_tid[i]] = 1; - core_rsp_data[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_data[i]; - core_rsp_tag[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_tag[i]; - per_bank_core_rsp_pop_unqual[i] = 1; + core_rsp_valid_unqual[per_bank_core_rsp_tid[i]] = 1; + core_rsp_data_unqual[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_data[i]; + core_rsp_tag_unqual[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_tag[i]; + core_rsp_bank_select[i] = 1; end else begin - per_bank_core_rsp_pop_unqual[i] = 0; + core_rsp_bank_select[i] = 0; end end end end + VX_generic_register #( + .N(NUM_REQUESTS + (NUM_REQUESTS *`WORD_WIDTH) + (`CORE_REQ_TAG_COUNT * CORE_TAG_WIDTH)) + ) core_wb_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({core_rsp_valid_unqual, core_rsp_data_unqual, core_rsp_tag_unqual}), + .out ({core_rsp_valid, core_rsp_data, core_rsp_tag}) + ); + + assign per_bank_core_rsp_ready = core_rsp_bank_select & {NUM_BANKS{~stall}}; + endmodule diff --git a/hw/rtl/cache/VX_snp_forwarder.v b/hw/rtl/cache/VX_snp_forwarder.v index f54b6eba..606570fd 100644 --- a/hw/rtl/cache/VX_snp_forwarder.v +++ b/hw/rtl/cache/VX_snp_forwarder.v @@ -59,7 +59,7 @@ module VX_snp_forwarder #( assign sfq_push = snp_req_valid && !sfq_full && fwdout_ready; assign sfq_pop = snp_rsp_valid; - VX_indexable_queue #( + VX_index_queue #( .DATAW (`LOG2UP(SNRQ_SIZE) + 1 +`DRAM_ADDR_WIDTH+SNP_REQ_TAG_WIDTH), .SIZE (SNRQ_SIZE) ) snp_fwd_queue ( diff --git a/hw/rtl/cache/VX_tag_data_access.v b/hw/rtl/cache/VX_tag_data_access.v index 6dfb5b98..4009ac4e 100644 --- a/hw/rtl/cache/VX_tag_data_access.v +++ b/hw/rtl/cache/VX_tag_data_access.v @@ -116,7 +116,7 @@ module VX_tag_data_access #( .clk (clk), .reset (reset), .stall (stall), - .flush (1'b0), + .flush (0), .in ({qual_read_valid_st1, qual_read_dirty_st1, qual_read_dirtyb_st1, qual_read_tag_st1, qual_read_data_st1}), .out ({read_valid_st1c[0], read_dirty_st1c[0], read_dirtyb_st1c[0], read_tag_st1c[0], read_data_st1c[0]}) ); @@ -129,7 +129,7 @@ module VX_tag_data_access #( .clk (clk), .reset (reset), .stall (stall), - .flush (1'b0), + .flush (0), .in ({read_valid_st1c[i-1], read_dirty_st1c[i-1], read_dirtyb_st1c[i-1], read_tag_st1c[i-1], read_data_st1c[i-1]}), .out ({read_valid_st1c[i], read_dirty_st1c[i], read_dirtyb_st1c[i], read_tag_st1c[i], read_data_st1c[i]}) ); diff --git a/hw/rtl/interfaces/VX_alu_req_if.v b/hw/rtl/interfaces/VX_alu_req_if.v new file mode 100644 index 00000000..42e427d5 --- /dev/null +++ b/hw/rtl/interfaces/VX_alu_req_if.v @@ -0,0 +1,24 @@ +`ifndef VX_ALU_REQ_IF +`define VX_ALU_REQ_IF + +`include "VX_define.vh" + +interface VX_alu_req_if (); + + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + + wire [`ALU_BITS-1:0] alu_op; + + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + + wire [`NR_BITS-1:0] rd; + wire [`WB_BITS-1:0] wb; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_backend_req_if.v b/hw/rtl/interfaces/VX_backend_req_if.v deleted file mode 100644 index f153f1b6..00000000 --- a/hw/rtl/interfaces/VX_backend_req_if.v +++ /dev/null @@ -1,40 +0,0 @@ -`ifndef VX_FrE_to_BCKBE_REQ_IF -`define VX_FrE_to_BCKBE_REQ_IF - -`include "VX_define.vh" - -interface VX_backend_req_if (); - - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; - wire [11:0] csr_addr; - wire is_csr; - wire csr_immed; - wire [31:0] csr_mask; - wire [4:0] rd; - wire [4:0] rs1; - wire [4:0] rs2; - wire [4:0] alu_op; - wire [1:0] wb; - wire rs2_src; - wire [31:0] itype_immed; - wire [`BYTE_EN_BITS-1:0] mem_read; - wire [`BYTE_EN_BITS-1:0] mem_write; - wire [2:0] branch_type; - wire [19:0] upper_immed; - wire is_etype; - wire is_jal; - wire jal; - wire [31:0] jal_offset; - wire [31:0] next_PC; - - // GPGPU stuff - wire is_wspawn; - wire is_tmc; - wire is_split; - wire is_barrier; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_branch_rsp_if.v b/hw/rtl/interfaces/VX_branch_rsp_if.v deleted file mode 100644 index a8f01d44..00000000 --- a/hw/rtl/interfaces/VX_branch_rsp_if.v +++ /dev/null @@ -1,15 +0,0 @@ -`ifndef VX_BRANCH_RSP_IF -`define VX_BRANCH_RSP_IF - -`include "VX_define.vh" - -interface VX_branch_rsp_if (); - - wire valid; - wire dir; - wire [31:0] dest; - wire [`NW_BITS-1:0] warp_num; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_csr_io_req_if.v b/hw/rtl/interfaces/VX_csr_io_req_if.v index ce8d2fed..716887d3 100644 --- a/hw/rtl/interfaces/VX_csr_io_req_if.v +++ b/hw/rtl/interfaces/VX_csr_io_req_if.v @@ -5,11 +5,11 @@ interface VX_csr_io_req_if (); - wire valid; - wire rw; - wire [11:0] addr; - wire [31:0] data; - wire ready; + wire valid; + wire [`CSR_ADDR_SIZE-1:0] addr; + wire rw; + wire [31:0] data; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_csr_req_if.v b/hw/rtl/interfaces/VX_csr_req_if.v index 6eeddf74..2956416a 100644 --- a/hw/rtl/interfaces/VX_csr_req_if.v +++ b/hw/rtl/interfaces/VX_csr_req_if.v @@ -6,17 +6,20 @@ interface VX_csr_req_if (); wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [4:0] rd; - wire [1:0] wb; - wire [4:0] alu_op; - wire is_csr; - wire [11:0] csr_addr; - wire csr_immed; - wire [31:0] csr_mask; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; - wire is_io; + wire [`CSR_BITS-1:0] csr_op; + wire [`CSR_ADDR_SIZE-1:0] csr_addr; + wire [31:0] csr_mask; + + wire [`NR_BITS-1:0] rd; + wire [`WB_BITS-1:0] wb; + wire is_io; + + wire ready; + endinterface `endif diff --git a/hw/rtl/interfaces/VX_decode_if.v b/hw/rtl/interfaces/VX_decode_if.v new file mode 100644 index 00000000..e4b99dc6 --- /dev/null +++ b/hw/rtl/interfaces/VX_decode_if.v @@ -0,0 +1,33 @@ +`ifndef VX_DECODE_IF +`define VX_DECODE_IF + +`include "VX_define.vh" + +interface VX_decode_if (); + + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + wire [31:0] next_PC; + + wire [`EX_BITS-1:0] ex_type; + wire [`OP_BITS-1:0] instr_op; + + wire [`NR_BITS-1:0] rd; + wire [`NR_BITS-1:0] rs1; + wire [`NR_BITS-1:0] rs2; + wire [31:0] imm; + + wire rs1_is_PC; + wire rs2_is_imm; + + wire use_rs1; + wire use_rs2; + + wire [`WB_BITS-1:0] wb; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_exec_unit_req_if.v b/hw/rtl/interfaces/VX_exec_unit_req_if.v deleted file mode 100644 index 918cb456..00000000 --- a/hw/rtl/interfaces/VX_exec_unit_req_if.v +++ /dev/null @@ -1,47 +0,0 @@ -`ifndef VX_EXE_UNIT_REQ_IF -`define VX_EXE_UNIT_REQ_IF - -`include "VX_define.vh" - -interface VX_exec_unit_req_if (); - - // Meta - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; - wire [31:0] next_PC; - - // Write Back Info - wire [4:0] rd; - wire [1:0] wb; - - // Data and alu op - wire [`NUM_THREADS-1:0][31:0] a_reg_data; - wire [`NUM_THREADS-1:0][31:0] b_reg_data; - wire [4:0] alu_op; - wire [4:0] rs1; - wire [4:0] rs2; - wire rs2_src; - wire [31:0] itype_immed; - wire [19:0] upper_immed; - - // Branch type - wire [2:0] branch_type; - - // Jal info - wire is_jal; - wire jal; - wire [31:0] jal_offset; - - wire is_etype; - wire wspawn; - - // CSR info - wire is_csr; - wire [11:0] csr_addr; - wire csr_immed; - wire [31:0] csr_mask; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_execute_if.v b/hw/rtl/interfaces/VX_execute_if.v new file mode 100644 index 00000000..ae1fe68b --- /dev/null +++ b/hw/rtl/interfaces/VX_execute_if.v @@ -0,0 +1,33 @@ +`ifndef VX_EXECUTE_IF +`define VX_EXECUTE_IF + +`include "VX_define.vh" + +interface VX_execute_if(); + + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + wire [`EX_BITS-1:0] ex_type; + wire [`OP_BITS-1:0] instr_op; + + wire [`NR_BITS-1:0] rd; + wire [`NR_BITS-1:0] rs1; + wire [`NR_BITS-1:0] rs2; + wire [31:0] imm; + wire rs1_is_PC; + wire rs2_is_imm; + wire [31:0] next_PC; + + wire [`WB_BITS-1:0] wb; + + wire alu_ready; + wire br_ready; + wire mul_ready; + wire lsu_ready; + wire csr_ready; + wire gpu_ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_gpr_read_if.v b/hw/rtl/interfaces/VX_gpr_read_if.v deleted file mode 100644 index 5673c319..00000000 --- a/hw/rtl/interfaces/VX_gpr_read_if.v +++ /dev/null @@ -1,19 +0,0 @@ -`ifndef VX_GPR_READ_IF -`define VX_GPR_READ_IF - -`include "VX_define.vh" - -interface VX_gpr_read_if (); - - wire [4:0] rs1; - wire [4:0] rs2; - wire [`NW_BITS-1:0] warp_num; - wire is_jal; - wire[31:0] curr_PC; - - wire [`NUM_THREADS-1:0][31:0] a_reg_data; - wire [`NUM_THREADS-1:0][31:0] b_reg_data; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_gpu_inst_req_if.v b/hw/rtl/interfaces/VX_gpu_inst_req_if.v deleted file mode 100644 index a39800b0..00000000 --- a/hw/rtl/interfaces/VX_gpu_inst_req_if.v +++ /dev/null @@ -1,23 +0,0 @@ -`ifndef VX_GPGPU_INST_REQ_IF -`define VX_GPGPU_INST_REQ_IF - -`include "VX_define.vh" - -interface VX_gpu_inst_req_if(); - - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire is_wspawn; - wire is_tmc; - wire is_split; - - wire is_barrier; - - wire[31:0] next_PC; - - wire [`NUM_THREADS-1:0][31:0] a_reg_data; - wire [31:0] rd2; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_gpu_req_if.v b/hw/rtl/interfaces/VX_gpu_req_if.v new file mode 100644 index 00000000..13adb788 --- /dev/null +++ b/hw/rtl/interfaces/VX_gpu_req_if.v @@ -0,0 +1,21 @@ +`ifndef VX_GPU_REQ_IF +`define VX_GPU_REQ_IF + +`include "VX_define.vh" + +interface VX_gpu_req_if(); + + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] next_PC; + + wire [`GPU_BITS-1:0] gpu_op; + + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [31:0] rs2_data; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_inst_meta_if.v b/hw/rtl/interfaces/VX_ifetch_req_if.v similarity index 57% rename from hw/rtl/interfaces/VX_inst_meta_if.v rename to hw/rtl/interfaces/VX_ifetch_req_if.v index 8ebfa87f..ac95eaac 100644 --- a/hw/rtl/interfaces/VX_inst_meta_if.v +++ b/hw/rtl/interfaces/VX_ifetch_req_if.v @@ -1,14 +1,14 @@ -`ifndef VX_INST_META_IF -`define VX_INST_META_IF +`ifndef VX_IFETCH_REQ_IF +`define VX_IFETCH_REQ_IF `include "VX_define.vh" -interface VX_inst_meta_if (); +interface VX_ifetch_req_if (); wire [`NUM_THREADS-1:0] valid; wire [31:0] curr_PC; wire [`NW_BITS-1:0] warp_num; - wire [31:0] instruction; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_ifetch_rsp_if.v b/hw/rtl/interfaces/VX_ifetch_rsp_if.v new file mode 100644 index 00000000..c8e5e2d7 --- /dev/null +++ b/hw/rtl/interfaces/VX_ifetch_rsp_if.v @@ -0,0 +1,16 @@ +`ifndef VX_IFETCH_RSP_IF +`define VX_IFETCH_RSP_IF + +`include "VX_define.vh" + +interface VX_ifetch_rsp_if (); + + wire [`NUM_THREADS-1:0] valid; + wire [31:0] curr_PC; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] instr; + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_jal_rsp_if.v b/hw/rtl/interfaces/VX_jal_rsp_if.v deleted file mode 100644 index 3f6796a0..00000000 --- a/hw/rtl/interfaces/VX_jal_rsp_if.v +++ /dev/null @@ -1,15 +0,0 @@ - -`ifndef VX_JAL_RSP_IF -`define VX_JAL_RSP_IF - -`include "VX_define.vh" - -interface VX_jal_rsp_if (); - - wire valid; - wire [31:0] dest; - wire [`NW_BITS-1:0] warp_num; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_join_if.v b/hw/rtl/interfaces/VX_join_if.v index bc48bfee..15c1509b 100644 --- a/hw/rtl/interfaces/VX_join_if.v +++ b/hw/rtl/interfaces/VX_join_if.v @@ -1,4 +1,3 @@ - `ifndef VX_JOIN_IF `define VX_JOIN_IF diff --git a/hw/rtl/interfaces/VX_lsu_req_if.v b/hw/rtl/interfaces/VX_lsu_req_if.v index 216853cf..c333961d 100644 --- a/hw/rtl/interfaces/VX_lsu_req_if.v +++ b/hw/rtl/interfaces/VX_lsu_req_if.v @@ -1,4 +1,3 @@ - `ifndef VX_LSU_REQ_IF `define VX_LSU_REQ_IF @@ -10,12 +9,13 @@ interface VX_lsu_req_if (); wire [31:0] curr_PC; wire [`NW_BITS-1:0] warp_num; wire [`NUM_THREADS-1:0][31:0] store_data; - wire [`NUM_THREADS-1:0][31:0] base_addr; // A reg data - wire [31:0] offset; // itype_immed - wire [`BYTE_EN_BITS-1:0] mem_read; - wire [`BYTE_EN_BITS-1:0] mem_write; - wire [4:0] rd; // dest register - wire [1:0] wb; // + wire [`NUM_THREADS-1:0][31:0] base_addr; + wire [31:0] offset; + wire rw; + wire [`BYTEEN_BITS-1:0] byteen; + wire [`NR_BITS-1:0] rd; + wire [`WB_BITS-1:0] wb; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_mul_req_if.v b/hw/rtl/interfaces/VX_mul_req_if.v new file mode 100644 index 00000000..26d175fb --- /dev/null +++ b/hw/rtl/interfaces/VX_mul_req_if.v @@ -0,0 +1,24 @@ +`ifndef VX_MUL_REQ_IF +`define VX_MUL_REQ_IF + +`include "VX_define.vh" + +interface VX_mul_req_if (); + + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + + wire [`MUL_BITS-1:0] mul_op; + + wire [`NR_BITS-1:0] rd; + wire [`WB_BITS-1:0] wb; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_warp_ctl_if.v b/hw/rtl/interfaces/VX_warp_ctl_if.v index a8169d0c..7eef29f0 100644 --- a/hw/rtl/interfaces/VX_warp_ctl_if.v +++ b/hw/rtl/interfaces/VX_warp_ctl_if.v @@ -1,4 +1,3 @@ - `ifndef VX_WARP_CTL_IF `define VX_WARP_CTL_IF @@ -7,6 +6,7 @@ interface VX_warp_ctl_if (); wire [`NW_BITS-1:0] warp_num; + wire change_mask; wire [`NUM_THREADS-1:0] thread_mask; @@ -16,16 +16,13 @@ interface VX_warp_ctl_if (); wire whalt; - // barrier wire is_barrier; - wire [31:0] barrier_id; - wire [$clog2(`NUM_WARPS):0] num_warps; + wire [`NB_BITS-1:0] barrier_id; + wire [`NW_BITS:0] num_warps; wire is_split; - wire dont_split; -`IGNORE_WARNINGS_BEGIN - wire [`NW_BITS-1:0] split_warp_num; -`IGNORE_WARNINGS_END + wire do_split; + wire [`NUM_THREADS-1:0] split_new_mask; wire [`NUM_THREADS-1:0] split_later_mask; wire [31:0] split_save_pc; diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index 96b8acef..4fb23d73 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -6,12 +6,13 @@ interface VX_wb_if (); wire [`NUM_THREADS-1:0] valid; - wire [`NUM_THREADS-1:0][31:0] data; wire [`NW_BITS-1:0] warp_num; - wire [4:0] rd; - wire [1:0] wb; wire [31:0] curr_PC; + wire [`NUM_THREADS-1:0][31:0] data; + wire [`NR_BITS-1:0] rd; + wire [`WB_BITS-1:0] wb; wire is_io; + wire ready; endinterface diff --git a/hw/rtl/libs/VX_countones.v b/hw/rtl/libs/VX_countones.v index 6d77b934..625a969f 100644 --- a/hw/rtl/libs/VX_countones.v +++ b/hw/rtl/libs/VX_countones.v @@ -1,8 +1,8 @@ module VX_countones #( parameter N = 10 ) ( - input wire[N-1:0] valids, - output reg[$clog2(N):0] count + input wire [N-1:0] valids, + output reg [$clog2(N):0] count ); integer i; diff --git a/hw/rtl/libs/VX_divide.v b/hw/rtl/libs/VX_divide.v index 510abf26..d815dc39 100644 --- a/hw/rtl/libs/VX_divide.v +++ b/hw/rtl/libs/VX_divide.v @@ -3,6 +3,8 @@ module VX_divide #( parameter WIDTHN = 1, parameter WIDTHD = 1, + parameter WIDTHQ = 1, + parameter WIDTHR = 1, parameter NSIGNED = 0, parameter DSIGNED = 0, parameter PIPELINE = 0 @@ -13,18 +15,21 @@ module VX_divide #( input wire [WIDTHN-1:0] numer, input wire [WIDTHD-1:0] denom, - output wire [WIDTHN-1:0] quotient, - output wire [WIDTHD-1:0] remainder + output wire [WIDTHQ-1:0] quotient, + output wire [WIDTHR-1:0] remainder ); `ifdef QUARTUS + wire [WIDTHN-1:0] quotient_unqual; + wire [WIDTHD-1:0] remainder_unqual; + lpm_divide quartus_div ( .clock (clk), .numer (numer), .denom (denom), - .quotient (quotient), - .remain (remainder), + .quotient (quotient_unqual), + .remain (remainder_unqual), .aclr (1'b0), .clken (1'b1) ); @@ -38,6 +43,9 @@ module VX_divide #( quartus_div.lpm_hint = "MAXIMIZE_SPEED=6,LPM_REMAINDERPOSITIVE=FALSE", quartus_div.lpm_pipeline = PIPELINE; + assign quotient = quotient_unqual[WIDTHQ-1:0]; + assign remainder = remainder_unqual[WIDTHR-1:0]; + `else reg [WIDTHN-1:0] quotient_unqual; @@ -47,7 +55,7 @@ module VX_divide #( `ifndef SYNTHESIS // this edge case kills verilator in some cases by causing a division // overflow exception. INT_MIN / -1 (on x86) - if (numer == {1'b1, (WIDTHN-1)'(0)} + if (numer == {1'b1, (WIDTHN-1)'(1'b0)} && denom == {WIDTHD{1'b1}}) begin quotient_unqual = 0; remainder_unqual = 0; @@ -74,8 +82,8 @@ module VX_divide #( end if (PIPELINE == 0) begin - assign quotient = quotient_unqual; - assign remainder = remainder_unqual; + assign quotient = quotient_unqual[WIDTHQ-1:0]; + assign remainder = remainder_unqual[WIDTHR-1:0]; end else begin reg [WIDTHN-1:0] quotient_pipe [0:PIPELINE-1]; reg [WIDTHD-1:0] remainder_pipe [0:PIPELINE-1]; @@ -99,8 +107,8 @@ module VX_divide #( end end - assign quotient = quotient_pipe[PIPELINE-1]; - assign remainder = remainder_pipe[PIPELINE-1]; + assign quotient = quotient_pipe[PIPELINE-1][WIDTHQ-1:0]; + assign remainder = remainder_pipe[PIPELINE-1][WIDTHR-1:0]; end `endif diff --git a/hw/rtl/libs/VX_generic_register.v b/hw/rtl/libs/VX_generic_register.v index 7234b0a2..b0328372 100644 --- a/hw/rtl/libs/VX_generic_register.v +++ b/hw/rtl/libs/VX_generic_register.v @@ -11,18 +11,25 @@ module VX_generic_register #( input wire[N-1:0] in, output wire[N-1:0] out ); - reg [(N-1):0] value; + if (PASSTHRU) begin + `UNUSED_VAR (clk) + `UNUSED_VAR (reset) + `UNUSED_VAR (stall) + assign out = flush ? N'(0) : in; + end else begin + reg [(N-1):0] value; - always @(posedge clk) begin - if (reset) begin - value <= 0; - end else if (flush) begin - value <= 0; - end else if (~stall) begin - value <= in; + always @(posedge clk) begin + if (reset) begin + value <= N'(0); + end else if (~stall) begin + value <= in; + end else if (flush) begin + value <= N'(0); + end end - end - assign out = PASSTHRU ? in : value; + assign out = value; + end endmodule \ No newline at end of file diff --git a/hw/rtl/libs/VX_indexable_queue.v b/hw/rtl/libs/VX_index_queue.v similarity index 98% rename from hw/rtl/libs/VX_indexable_queue.v rename to hw/rtl/libs/VX_index_queue.v index 886b05f6..ce91845c 100644 --- a/hw/rtl/libs/VX_indexable_queue.v +++ b/hw/rtl/libs/VX_index_queue.v @@ -1,6 +1,6 @@ `include "VX_define.vh" -module VX_indexable_queue #( +module VX_index_queue #( parameter DATAW = 1, parameter SIZE = 1 ) ( diff --git a/hw/rtl/libs/VX_matrix_arbiter.v b/hw/rtl/libs/VX_matrix_arbiter.v index 8c467974..97b05cd7 100644 --- a/hw/rtl/libs/VX_matrix_arbiter.v +++ b/hw/rtl/libs/VX_matrix_arbiter.v @@ -56,7 +56,7 @@ module VX_matrix_arbiter #( end end - VX_encoder_onehot #( + VX_onehot_encoder #( .N(N) ) encoder ( .onehot (grant_onehot), diff --git a/hw/rtl/libs/VX_encoder_onehot.v b/hw/rtl/libs/VX_onehot_encooder.v similarity index 94% rename from hw/rtl/libs/VX_encoder_onehot.v rename to hw/rtl/libs/VX_onehot_encooder.v index a4e0e72e..06a25033 100644 --- a/hw/rtl/libs/VX_encoder_onehot.v +++ b/hw/rtl/libs/VX_onehot_encooder.v @@ -1,6 +1,6 @@ `include "VX_define.vh" -module VX_encoder_onehot #( +module VX_onehot_encoder #( parameter N = 6 ) ( input wire [N-1:0] onehot, diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index 7b665714..a3f119a4 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -1,6 +1,8 @@ +SINGLECORE += -DNUM_CLUSTERS=1 -DNUM_CORES=1 + #MULTICORE += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 #MULTICORE += -DNUM_CLUSTERS=1 -DNUM_CORES=4 -DL2_ENABLE=1 -MULTICORE += -DNUM_CLUSTERS=1 -DNUM_CORES=2 +MULTICORE += -DNUM_CLUSTERS=1 -DNUM_CORES=2 -DL2_ENABLE=0 # control RTL debug print states DBG_PRINT_FLAGS += -DDBG_PRINT_CORE_ICACHE @@ -12,7 +14,7 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_DRAM DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE -#DBG_FLAGS += $(DBG_PRINT_FLAGS) +DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO INCLUDE = -I../rtl/ -I../rtl/libs -I../rtl/interfaces -I../rtl/cache -I../rtl/simulate @@ -34,13 +36,13 @@ DBG += -DDBG_CORE_REQ_INFO THREADS ?= $(shell python3 -c 'import multiprocessing as mp; print(max(1, mp.cpu_count() // 2))') gen-s: - verilator $(VF) -DNDEBUG -cc Vortex.v -CFLAGS '$(CF) -DNDEBUG' + verilator $(VF) -DNDEBUG -cc Vortex.v $(SINGLECORE) -CFLAGS '$(CF) -DNDEBUG $(SINGLECORE)' gen-sd: - verilator $(VF) -cc Vortex.v -CFLAGS '$(CF) -g -O0 $(DBG)' --trace $(DBG) + verilator $(VF) -cc Vortex.v $(SINGLECORE) -CFLAGS '$(CF) -g -O0 $(DBG) $(SINGLECORE)' --trace $(DBG) gen-st: - verilator $(VF) -DNDEBUG -cc Vortex.v -CFLAGS '$(CF) -DNDEBUG -O2' --threads $(THREADS) + verilator $(VF) -DNDEBUG -cc Vortex.v $(SINGLECORE) -CFLAGS '$(CF) -DNDEBUG -O2 $(SINGLECORE)' --threads $(THREADS) gen-m: verilator $(VF) -DNDEBUG -cc Vortex.v $(MULTICORE) -CFLAGS '$(CF) -DNDEBUG $(MULTICORE)' diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index 2976a43c..d3c164b1 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -13,6 +13,9 @@ Simulator::Simulator() { // force random values for unitialized signals Verilated::randReset(2); + // Turn off assertion before reset + Verilated::assertOn(false); + ram_ = nullptr; vortex_ = new VVortex(); @@ -49,6 +52,9 @@ void Simulator::reset() { vortex_->reset = 0; dram_rsp_vec_.clear(); + + // Turn on assertion after reset + Verilated::assertOn(true); } void Simulator::step() { @@ -60,6 +66,7 @@ void Simulator::step() { this->eval_dram_bus(); this->eval_io_bus(); + this->eval_csr_bus(); this->eval_snp_bus(); } @@ -157,6 +164,15 @@ void Simulator::eval_io_bus() { vortex_->io_rsp_valid = 0; } +void Simulator::eval_csr_bus() { + vortex_->csr_io_req_valid = 0; + vortex_->csr_io_req_coreid = 0; + vortex_->csr_io_req_addr = 0; + vortex_->csr_io_req_rw = 0; + vortex_->csr_io_req_data = 0; + vortex_->csr_io_rsp_ready = 1; +} + void Simulator::eval_snp_bus() { if (snp_req_active_) { if (vortex_->snp_rsp_valid) { @@ -241,19 +257,18 @@ bool Simulator::run() { // check riscv-tests PASSED/FAILED status #if (NUM_CLUSTERS == 1 && NUM_CORES == 1) - int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->back_end->writeback->last_data_wb & 0xf; + int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->writeback->last_data_wb & 0xf; #else #if (NUM_CLUSTERS == 1) - int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->back_end->writeback->last_data_wb & 0xf; + int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->writeback->last_data_wb & 0xf; #else - int status = (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->back_end->writeback->last_data_wb & 0xf; + int status = (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->writeback->last_data_wb & 0xf; #endif #endif return (status == 1); } - void Simulator::load_bin(const char* program_file) { if (ram_ == nullptr) return; diff --git a/hw/simulate/simulator.h b/hw/simulate/simulator.h index 27803754..297e2121 100644 --- a/hw/simulate/simulator.h +++ b/hw/simulate/simulator.h @@ -52,6 +52,7 @@ private: void eval_dram_bus(); void eval_io_bus(); + void eval_csr_bus(); void eval_snp_bus(); std::vector dram_rsp_vec_; diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index d037fc18..8515f1fd 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -5,12 +5,12 @@ int main(int argc, char **argv) { -//#define ALL_TESTS +#define ALL_TESTS #ifdef ALL_TESTS bool passed = true; std::string tests[] = { - "../../../benchmarks/riscv_tests/rv32ui-p-add.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-add.hex", "../../../benchmarks/riscv_tests/rv32ui-p-addi.hex", "../../../benchmarks/riscv_tests/rv32ui-p-and.hex", "../../../benchmarks/riscv_tests/rv32ui-p-andi.hex", @@ -67,12 +67,14 @@ int main(int argc, char **argv) Simulator simulator; simulator.attach_ram(&ram); simulator.load_ihex(test.c_str()); - bool curr = simulator.run(); + bool status = simulator.run(); - if (curr) std::cerr << GREEN << "Test Passed: " << test << std::endl; - if (!curr) std::cerr << RED << "Test Failed: " << test << std::endl; + if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; + if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; std::cerr << DEFAULT; - passed = passed && curr; + passed = passed && status; + if (!passed) + break; } std::cerr << DEFAULT << "\n***************************************\n"; @@ -95,12 +97,12 @@ int main(int argc, char **argv) Simulator simulator; simulator.attach_ram(&ram); simulator.load_ihex(test); - bool curr = simulator.run(); + bool status = simulator.run(); - if (curr) std::cerr << GREEN << "Test Passed: " << test << std::endl; - if (!curr) std::cerr << RED << "Test Failed: " << test << std::endl; + if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; + if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; - return !curr; + return !status; #endif } \ No newline at end of file diff --git a/hw/unit_tests/VX_divide_tb.v b/hw/unit_tests/VX_divide_tb.v index 02e63e1f..1b14f526 100644 --- a/hw/unit_tests/VX_divide_tb.v +++ b/hw/unit_tests/VX_divide_tb.v @@ -2,13 +2,13 @@ module VX_tb_divide(); - `ifdef TRACE +`ifdef TRACE initial begin $dumpfile("trace.vcd"); $dumpvars(0,test); end - `endif +`endif reg clk; reg rst; @@ -23,6 +23,8 @@ module VX_tb_divide(); VX_divide#( .WIDTHN(32), .WIDTHD(32), + .WIDTHQ(32), + .WIDTHR(32), .PIPELINE(i) ) div( .clock(clk), @@ -157,4 +159,4 @@ module VX_tb_divide(); always #1 clk = !clk; -endmodule: VX_tb_divide \ No newline at end of file +endmodule \ No newline at end of file From 577a5791dc0d47c9a95bb2c3318f19d26e515a72 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Mon, 20 Jul 2020 08:04:04 -0400 Subject: [PATCH 02/94] pipeline refactoring --- hw/rtl/VX_alu_unit.v | 8 +- hw/rtl/VX_branch_unit.v | 12 +-- hw/rtl/VX_commit.v | 105 ++++++++++++++++++++++ hw/rtl/VX_csr_arb.v | 18 ++-- hw/rtl/VX_csr_data.v | 30 ++----- hw/rtl/VX_csr_pipe.v | 32 +++---- hw/rtl/VX_define.vh | 9 +- hw/rtl/VX_execute.v | 73 +++++++-------- hw/rtl/VX_fetch.v | 4 +- hw/rtl/VX_gpr_mux.v | 5 +- hw/rtl/VX_gpr_ram.v | 10 +-- hw/rtl/VX_gpr_stage.v | 6 +- hw/rtl/VX_gpu_unit.v | 9 +- hw/rtl/VX_issue.v | 104 +++++++--------------- hw/rtl/VX_lsu_unit.v | 12 +-- hw/rtl/VX_mul_unit.v | 8 +- hw/rtl/VX_pipeline.v | 93 ++++++++++++-------- hw/rtl/VX_scheduler.v | 86 ++++++++++++++++++ hw/rtl/VX_warp_sched.v | 14 +-- hw/rtl/VX_writeback.v | 117 ++++++++++--------------- hw/rtl/cache/VX_cache_core_rsp_merge.v | 2 +- hw/rtl/interfaces/VX_branch_ctl_if.v | 15 ++++ hw/rtl/interfaces/VX_commit_if.v | 19 ++++ hw/rtl/interfaces/VX_execute_if.v | 2 +- hw/rtl/interfaces/VX_gpu_req_if.v | 3 +- hw/rtl/interfaces/VX_perf_cntrs_if.v | 13 +++ hw/rtl/interfaces/VX_wb_if.v | 5 +- hw/simulate/simulator.cpp | 6 +- hw/simulate/testbench.cpp | 2 +- 29 files changed, 499 insertions(+), 323 deletions(-) create mode 100644 hw/rtl/VX_commit.v create mode 100644 hw/rtl/VX_scheduler.v create mode 100644 hw/rtl/interfaces/VX_branch_ctl_if.v create mode 100644 hw/rtl/interfaces/VX_commit_if.v create mode 100644 hw/rtl/interfaces/VX_perf_cntrs_if.v diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 51cc7c58..8848318e 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -10,7 +10,7 @@ module VX_alu_unit #( VX_alu_req_if alu_req_if, // Outputs - VX_wb_if alu_wb_if + VX_commit_if alu_commit_if ); wire [`NUM_THREADS-1:0][31:0] alu_result; wire [`NUM_THREADS-1:0][32:0] sub_result; @@ -48,7 +48,7 @@ module VX_alu_unit #( end end - wire stall = ~alu_wb_if.ready && (| alu_wb_if.valid); + wire stall = ~alu_commit_if.ready && (| alu_commit_if.valid); VX_generic_register #( .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), @@ -57,8 +57,8 @@ module VX_alu_unit #( .reset (reset), .stall (stall), .flush (0), - .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.rd, alu_req_if.wb, alu_result}), - .out ({alu_wb_if.valid, alu_wb_if.warp_num, alu_wb_if.curr_PC, alu_wb_if.rd, alu_wb_if.wb, alu_wb_if.data}) + .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.rd, alu_req_if.wb, alu_result}), + .out ({alu_commit_if.valid, alu_commit_if.warp_num, alu_commit_if.curr_PC, alu_commit_if.rd, alu_commit_if.wb, alu_commit_if.data}) ); assign alu_req_if.ready = ~stall; diff --git a/hw/rtl/VX_branch_unit.v b/hw/rtl/VX_branch_unit.v index d1bd8eca..a708e1da 100644 --- a/hw/rtl/VX_branch_unit.v +++ b/hw/rtl/VX_branch_unit.v @@ -10,8 +10,8 @@ module VX_branch_unit #( VX_branch_req_if branch_req_if, // Outputs - VX_branch_rsp_if branch_rsp_if, - VX_wb_if branch_wb_if + VX_branch_ctl_if branch_ctl_if, + VX_commit_if branch_commit_if ); wire [`NT_BITS-1:0] br_result_index; @@ -19,7 +19,7 @@ module VX_branch_unit #( VX_priority_encoder #( .N(`NUM_THREADS) ) choose_alu_result ( - .data_in (alu_req_if.valid), + .data_in (branch_req_if.valid), .data_out (br_result_index), `UNUSED_PIN (valid_out) ); @@ -53,7 +53,7 @@ module VX_branch_unit #( wire [31:0] base_addr = (br_op == `BR_JALR) ? rs1_data : branch_req_if.curr_PC; wire [31:0] br_dest = $signed(base_addr) + $signed(branch_req_if.offset); - wire stall = (~branch_wb_if.ready && (| branch_wb_if.valid)); + wire stall = (~branch_commit_if.ready && (| branch_commit_if.valid)); VX_generic_register #( .N(1 + `NW_BITS + 1 + 32) @@ -63,7 +63,7 @@ module VX_branch_unit #( .stall (stall), .flush (0), .in ({in_valid, branch_req_if.warp_num, br_taken, br_dest}), - .out ({branch_rsp_if.valid, branch_rsp_if.warp_num, branch_rsp_if.taken, branch_rsp_if.dest}) + .out ({branch_ctl_if.valid, branch_ctl_if.warp_num, branch_ctl_if.taken, branch_ctl_if.dest}) ); VX_generic_register #( @@ -74,7 +74,7 @@ module VX_branch_unit #( .stall (stall), .flush (0), .in ({branch_req_if.valid, branch_req_if.warp_num, branch_req_if.curr_PC, branch_req_if.rd, branch_req_if.wb, {`NUM_THREADS{branch_req_if.next_PC}}}), - .out ({branch_wb_if.valid, branch_wb_if.warp_num, branch_wb_if.curr_PC, branch_wb_if.rd, branch_wb_if.wb, branch_wb_if.data}) + .out ({branch_commit_if.valid, branch_commit_if.warp_num, branch_commit_if.curr_PC, branch_commit_if.rd, branch_commit_if.wb, branch_commit_if.data}) ); assign branch_req_if.ready = ~stall; diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v new file mode 100644 index 00000000..6c0b2fb2 --- /dev/null +++ b/hw/rtl/VX_commit.v @@ -0,0 +1,105 @@ +`include "VX_define.vh" + +module VX_commit #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + // inputs + VX_commit_if alu_commit_if, + VX_commit_if branch_commit_if, + VX_commit_if lsu_commit_if, + VX_commit_if mul_commit_if, + VX_commit_if csr_commit_if, + VX_commit_if gpu_commit_if, + + // outputs + VX_wb_if writeback_if, + VX_perf_cntrs_if perf_cntrs_if +); + + wire [`NUM_EXS-1:0] commited_mask; + assign commited_mask = {((| alu_commit_if.valid) && alu_commit_if.ready), + ((| branch_commit_if.valid) && branch_commit_if.ready), + ((| lsu_commit_if.valid) && lsu_commit_if.ready), + ((| mul_commit_if.valid) && mul_commit_if.ready), + ((| csr_commit_if.valid) && csr_commit_if.ready), + ((| gpu_commit_if.valid) && gpu_commit_if.ready)}; + + wire [`NE_BITS:0] num_commits; + + VX_countones #( + .N(`NUM_EXS) + ) valids_counter ( + .valids(commited_mask), + .count (num_commits) + ); + + wire has_committed = (| commited_mask); + + reg [63:0] total_cycles, total_instrs; + + always @(posedge clk) begin + if (reset) begin + total_cycles <= 0; + total_instrs <= 0; + end else begin + total_cycles <= total_cycles + 1; + if (has_committed) begin + total_instrs <= total_instrs + 64'(num_commits); + end + end + end + + assign perf_cntrs_if.total_cycles = total_cycles; + assign perf_cntrs_if.total_instrs = total_instrs; + + assign gpu_commit_if.ready = 1'b1; // doesn't writeback + + VX_writeback #( + .CORE_ID(CORE_ID) + ) writeback ( + .clk (clk), + .reset (reset), + + .alu_commit_if (alu_commit_if), + .branch_commit_if(branch_commit_if), + .lsu_commit_if (lsu_commit_if), + .csr_commit_if (csr_commit_if), + .mul_commit_if (mul_commit_if), + + .writeback_if (writeback_if) + ); + +`ifdef DBG_PRINT_PIPELINE + always @(posedge clk) begin + if ((| alu_commit_if.valid) && alu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, alu_commit_if.warp_num, alu_commit_if.curr_PC, alu_commit_if.wb, alu_commit_if.rd, alu_commit_if.data); + end + if ((| branch_commit_if.valid) && branch_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, branch_commit_if.warp_num, branch_commit_if.curr_PC, branch_commit_if.wb, branch_commit_if.rd, branch_commit_if.data); + end + if ((| lsu_commit_if.valid) && lsu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, lsu_commit_if.warp_num, lsu_commit_if.curr_PC, lsu_commit_if.wb, lsu_commit_if.rd, lsu_commit_if.data); + end + if ((| mul_commit_if.valid) && mul_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.wb, mul_commit_if.rd, mul_commit_if.data); + end + if ((| csr_commit_if.valid) && csr_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, csr_commit_if.warp_num, csr_commit_if.curr_PC, csr_commit_if.wb, csr_commit_if.rd, csr_commit_if.data); + end + if ((| gpu_commit_if.valid) && gpu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, gpu_commit_if.warp_num, gpu_commit_if.curr_PC, gpu_commit_if.wb, gpu_commit_if.rd, gpu_commit_if.data); + end + end +`endif + +endmodule + + + + + + + diff --git a/hw/rtl/VX_csr_arb.v b/hw/rtl/VX_csr_arb.v index 2db5c7a8..7ed17e52 100644 --- a/hw/rtl/VX_csr_arb.v +++ b/hw/rtl/VX_csr_arb.v @@ -12,11 +12,11 @@ module VX_csr_arb ( VX_csr_req_if csr_req_if, // input - VX_wb_if csr_rsp_if, + VX_commit_if csr_rsp_if, // outputs VX_csr_io_rsp_if csr_io_rsp_if, - VX_wb_if csr_wb_if + VX_commit_if csr_commit_if ); `UNUSED_VAR (clk) @@ -42,13 +42,13 @@ module VX_csr_arb ( assign csr_io_rsp_if.valid = csr_rsp_if.valid[0] & csr_rsp_if.is_io; assign csr_io_rsp_if.data = csr_rsp_if.data[0]; - assign csr_wb_if.valid = csr_rsp_if.valid & {`NUM_THREADS{~csr_rsp_if.is_io}}; - assign csr_wb_if.warp_num = csr_rsp_if.warp_num; - assign csr_wb_if.curr_PC = csr_rsp_if.curr_PC; - assign csr_wb_if.data = csr_rsp_if.data; - assign csr_wb_if.rd = csr_rsp_if.rd; - assign csr_wb_if.wb = csr_rsp_if.wb; + assign csr_commit_if.valid = csr_rsp_if.valid & {`NUM_THREADS{~csr_rsp_if.is_io}}; + assign csr_commit_if.warp_num = csr_rsp_if.warp_num; + assign csr_commit_if.curr_PC = csr_rsp_if.curr_PC; + assign csr_commit_if.data = csr_rsp_if.data; + assign csr_commit_if.rd = csr_rsp_if.rd; + assign csr_commit_if.wb = csr_rsp_if.wb; - assign csr_rsp_if.ready = csr_rsp_if.is_io ? csr_io_rsp_if.ready : csr_wb_if.ready; + assign csr_rsp_if.ready = csr_rsp_if.is_io ? csr_io_rsp_if.ready : csr_commit_if.ready; endmodule diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index cace905f..abe7f7e8 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -3,8 +3,7 @@ module VX_csr_data #( parameter CORE_ID = 0 ) ( - input wire clk, // Clock - input wire reset, + input wire clk, input wire[`CSR_ADDR_SIZE-1:0] read_addr, output reg[31:0] read_data, @@ -15,29 +14,18 @@ module VX_csr_data #( `IGNORE_WARNINGS_END input wire[`CSR_WIDTH-1:0] write_data, input wire[`NW_BITS-1:0] warp_num, - input wire notify_commit + VX_perf_cntrs_if perf_cntrs_if ); reg [`CSR_WIDTH-1:0] csr_table[`NUM_CSRS-1:0]; - reg [63:0] num_cycles, num_instrs; - // cast address to physical CSR range wire [$clog2(`NUM_CSRS)-1:0] rd_addr, wr_addr; assign rd_addr = $size(rd_addr)'(read_addr); - assign wr_addr = $size(wr_addr)'(write_addr); + assign wr_addr = $size(wr_addr)'(write_addr); always @(posedge clk) begin - if (reset) begin - num_cycles <= 0; - num_instrs <= 0; - end else begin - if (write_enable) begin - csr_table[wr_addr] <= write_data; - end - num_cycles <= num_cycles + 1; - if (notify_commit) begin - num_instrs <= num_instrs + 1; - end + if (write_enable) begin + csr_table[wr_addr] <= write_data; end end @@ -50,10 +38,10 @@ module VX_csr_data #( `CSR_NT : read_data = `NUM_THREADS; `CSR_NW : read_data = `NUM_WARPS; `CSR_NC : read_data = `NUM_CORES * `NUM_CLUSTERS; - `CSR_CYCLE_L : read_data = num_cycles[31:0]; - `CSR_CYCLE_H : read_data = num_cycles[63:32]; - `CSR_INSTR_L : read_data = num_instrs[31:0]; - `CSR_INSTR_H : read_data = num_instrs[63:32]; + `CSR_CYCLE_L : read_data = perf_cntrs_if.total_cycles[31:0]; + `CSR_CYCLE_H : read_data = perf_cntrs_if.total_cycles[63:32]; + `CSR_INSTR_L : read_data = perf_cntrs_if.total_instrs[31:0]; + `CSR_INSTR_H : read_data = perf_cntrs_if.total_instrs[63:32]; `CSR_VEND_ID : read_data = `VENDOR_ID; `CSR_ARCH_ID : read_data = `ARCHITECTURE_ID; `CSR_IMPL_ID : read_data = `IMPLEMENTATION_ID; diff --git a/hw/rtl/VX_csr_pipe.v b/hw/rtl/VX_csr_pipe.v index a329d258..b8f88481 100644 --- a/hw/rtl/VX_csr_pipe.v +++ b/hw/rtl/VX_csr_pipe.v @@ -5,14 +5,17 @@ module VX_csr_pipe #( ) ( input wire clk, input wire reset, - VX_csr_req_if csr_req_if, - VX_csr_io_req_if csr_io_req_if, - VX_wb_if csr_wb_if, + + VX_perf_cntrs_if perf_cntrs_if, + + VX_csr_io_req_if csr_io_req_if, VX_csr_io_rsp_if csr_io_rsp_if, - input wire notify_commit + + VX_csr_req_if csr_req_if, + VX_commit_if csr_commit_if ); - VX_csr_req_if csr_pipe_req_if(); - VX_wb_if csr_pipe_wb_if(); + VX_csr_req_if csr_pipe_req_if(); + VX_commit_if csr_pipe_commit_if(); VX_csr_arb csr_arb ( .clk (clk), @@ -20,9 +23,9 @@ module VX_csr_pipe #( .csr_core_req_if (csr_req_if), .csr_io_req_if (csr_io_req_if), .csr_req_if (csr_pipe_req_if), - .csr_rsp_if (csr_pipe_wb_if), + .csr_rsp_if (csr_pipe_commit_if), .csr_io_rsp_if (csr_io_rsp_if), - .csr_wb_if (csr_wb_if) + .csr_commit_if (csr_commit_if) ); wire [`CSR_ADDR_SIZE-1:0] csr_addr_s2; @@ -30,24 +33,23 @@ module VX_csr_pipe #( wire [31:0] csr_updated_data_s2; wire [31:0] csr_read_data_unqual; - wire is_csr_s2 = (| csr_pipe_wb_if.valid); + wire is_csr_s2 = (| csr_pipe_commit_if.valid); VX_csr_data #( .CORE_ID(CORE_ID) ) csr_data ( .clk (clk), - .reset (reset), .read_addr (csr_pipe_req_if.csr_addr), .read_data (csr_read_data_unqual), .write_enable (is_csr_s2), .write_data (csr_updated_data_s2[`CSR_WIDTH-1:0]), .write_addr (csr_addr_s2), .warp_num (csr_pipe_req_if.warp_num), - .notify_commit (notify_commit) + .perf_cntrs_if (perf_cntrs_if) ); wire csr_hazard = (csr_addr_s2 == csr_pipe_req_if.csr_addr) - && (csr_pipe_wb_if.warp_num == csr_pipe_req_if.warp_num) + && (csr_pipe_commit_if.warp_num == csr_pipe_req_if.warp_num) && is_csr_s2; wire [31:0] csr_read_data = csr_hazard ? csr_updated_data_s2 : csr_read_data_unqual; @@ -63,7 +65,7 @@ module VX_csr_pipe #( endcase end - wire stall = ~csr_pipe_wb_if.ready && (| csr_pipe_wb_if.valid); + wire stall = ~csr_pipe_commit_if.ready && (| csr_pipe_commit_if.valid); VX_generic_register #( .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + `CSR_ADDR_SIZE + 1 + 32 + 32) @@ -73,12 +75,12 @@ module VX_csr_pipe #( .stall (stall), .flush (0), .in ({csr_pipe_req_if.valid, csr_pipe_req_if.warp_num, csr_pipe_req_if.curr_PC, csr_pipe_req_if.rd, csr_pipe_req_if.wb, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data, csr_updated_data}), - .out ({csr_pipe_wb_if.valid, csr_pipe_wb_if.warp_num, csr_pipe_wb_if.curr_PC, csr_pipe_wb_if.rd, csr_pipe_wb_if.wb, csr_addr_s2, csr_pipe_wb_if.is_io, csr_read_data_s2, csr_updated_data_s2}) + .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.warp_num, csr_pipe_commit_if.curr_PC, csr_pipe_commit_if.rd, csr_pipe_commit_if.wb, csr_addr_s2, csr_pipe_commit_if.is_io, csr_read_data_s2, csr_updated_data_s2}) ); genvar i; for (i = 0; i < `NUM_THREADS; i++) begin - assign csr_pipe_wb_if.data[i] = (csr_addr_s2 == `CSR_LTID) ? i : + assign csr_pipe_commit_if.data[i] = (csr_addr_s2 == `CSR_LTID) ? i : (csr_addr_s2 == `CSR_GTID) ? (csr_read_data_s2 * `NUM_THREADS + i) : csr_read_data_s2; end diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 2597b298..775028e5 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -173,11 +173,13 @@ `define EX_BR 3'h2 `define EX_MUL 3'h3 `define EX_LSU 3'h4 -`define EX_FPU 3'h5 -`define EX_CSR 3'h6 -`define EX_GPU 3'h7 +`define EX_CSR 3'h5 +`define EX_GPU 3'h6 `define EX_BITS 3 +`define NUM_EXS 6 +`define NE_BITS `LOG2UP(`NUM_EXS) + `define WB_NO 2'h0 `define WB_ALU 2'h1 `define WB_MEM 2'h2 @@ -374,7 +376,6 @@ task print_ex_type; `EX_LSU: $write("LSU"); `EX_CSR: $write("CSR"); `EX_MUL: $write("MUL"); - `EX_FPU: $write("FPU"); `EX_GPU: $write("GPU"); default: $write("NOP"); endcase diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 7b424431..166e5c53 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -17,43 +17,29 @@ module VX_execute #( VX_cache_core_req_if dcache_req_if, VX_cache_core_rsp_if dcache_rsp_if, - // inputs - VX_execute_if execute_if, - VX_wb_if writeback_if, + // perf + VX_perf_cntrs_if perf_cntrs_if, + + // inputs + VX_alu_req_if alu_req_if, + VX_branch_req_if branch_req_if, + VX_lsu_req_if lsu_req_if, + VX_csr_req_if csr_req_if, + VX_mul_req_if mul_req_if, + VX_gpu_req_if gpu_req_if, // outputs - VX_branch_rsp_if branch_rsp_if, + VX_branch_ctl_if branch_ctl_if, VX_warp_ctl_if warp_ctl_if, - VX_wb_if alu_wb_if, - VX_wb_if branch_wb_if, - VX_wb_if lsu_wb_if, - VX_wb_if csr_wb_if, - VX_wb_if mul_wb_if, - - input wire notify_commit, + VX_commit_if alu_commit_if, + VX_commit_if branch_commit_if, + VX_commit_if lsu_commit_if, + VX_commit_if csr_commit_if, + VX_commit_if mul_commit_if, + VX_commit_if gpu_commit_if, + output wire ebreak ); - VX_alu_req_if alu_req_if(); - VX_branch_req_if branch_req_if(); - VX_csr_req_if csr_req_if(); - VX_lsu_req_if lsu_req_if(); - VX_mul_req_if mul_req_if(); - VX_gpu_req_if gpu_req_if(); - - VX_gpr_stage #( - .CORE_ID(CORE_ID) - ) gpr_stage ( - .clk (clk), - .reset (reset), - .writeback_if (writeback_if), - .execute_if (execute_if), - .alu_req_if (alu_req_if), - .branch_req_if (branch_req_if), - .lsu_req_if (lsu_req_if), - .csr_req_if (csr_req_if), - .mul_req_if (mul_req_if), - .gpu_req_if (gpu_req_if) - ); VX_alu_unit #( .CORE_ID(CORE_ID) @@ -61,7 +47,7 @@ module VX_execute #( .clk (clk), .reset (reset), .alu_req_if (alu_req_if), - .alu_wb_if (alu_wb_if) + .alu_commit_if (alu_commit_if) ); VX_branch_unit #( @@ -70,8 +56,8 @@ module VX_execute #( .clk (clk), .reset (reset), .branch_req_if (branch_req_if), - .branch_rsp_if (branch_rsp_if), - .branch_wb_if (branch_wb_if) + .branch_ctl_if (branch_ctl_if), + .branch_commit_if(branch_commit_if) ); VX_lsu_unit #( @@ -83,19 +69,19 @@ module VX_execute #( .dcache_req_if (dcache_req_if), .dcache_rsp_if (dcache_rsp_if), .lsu_req_if (lsu_req_if), - .lsu_wb_if (lsu_wb_if) + .lsu_commit_if (lsu_commit_if) ); VX_csr_pipe #( .CORE_ID(CORE_ID) ) csr_pipe ( .clk (clk), - .reset (reset), - .csr_req_if (csr_req_if), - .csr_io_req_if (csr_io_req_if), - .csr_wb_if (csr_wb_if), + .reset (reset), + .perf_cntrs_if (perf_cntrs_if), + .csr_io_req_if (csr_io_req_if), .csr_io_rsp_if (csr_io_rsp_if), - .notify_commit (notify_commit) + .csr_req_if (csr_req_if), + .csr_commit_if (csr_commit_if) ); VX_mul_unit #( @@ -104,14 +90,15 @@ module VX_execute #( .clk (clk), .reset (reset), .mul_req_if (mul_req_if), - .mul_wb_if (mul_wb_if) + .mul_commit_if (mul_commit_if) ); VX_gpu_unit #( .CORE_ID(CORE_ID) ) gpu_unit ( .gpu_req_if (gpu_req_if), - .warp_ctl_if (warp_ctl_if) + .warp_ctl_if (warp_ctl_if), + .gpu_commit_if (gpu_commit_if) ); assign ebreak = (| branch_req_if.valid) && (branch_req_if.br_op == `BR_EBREAK || branch_req_if.br_op == `BR_ECALL); diff --git a/hw/rtl/VX_fetch.v b/hw/rtl/VX_fetch.v index 2f38adac..88ac1e54 100644 --- a/hw/rtl/VX_fetch.v +++ b/hw/rtl/VX_fetch.v @@ -13,7 +13,7 @@ module VX_fetch #( // inputs VX_wstall_if wstall_if, VX_join_if join_if, - VX_branch_rsp_if branch_rsp_if, + VX_branch_ctl_if branch_ctl_if, VX_warp_ctl_if warp_ctl_if, // outputs @@ -32,7 +32,7 @@ module VX_fetch #( .warp_ctl_if (warp_ctl_if), .wstall_if (wstall_if), .join_if (join_if), - .branch_rsp_if (branch_rsp_if), + .branch_ctl_if (branch_ctl_if), .ifetch_req_if (ifetch_req_if), .ifetch_rsp_if (ifetch_rsp_if), .busy (busy) diff --git a/hw/rtl/VX_gpr_mux.v b/hw/rtl/VX_gpr_mux.v index 6bec71da..4b5d9615 100644 --- a/hw/rtl/VX_gpr_mux.v +++ b/hw/rtl/VX_gpr_mux.v @@ -2,7 +2,7 @@ module VX_gpr_mux ( // inputs - VX_execute_if execute_if, + VX_execute_if execute_if, input wire [`NUM_THREADS-1:0][31:0] rs1_data, input wire [`NUM_THREADS-1:0][31:0] rs2_data, @@ -80,9 +80,10 @@ module VX_gpr_mux ( // GPU unit assign gpu_req_if.valid = execute_if.valid & is_gpu; assign gpu_req_if.warp_num = execute_if.warp_num; - assign gpu_req_if.next_PC = execute_if.next_PC; + assign gpu_req_if.curr_PC = execute_if.curr_PC; assign gpu_req_if.gpu_op = `GPU_OP(execute_if.instr_op); assign gpu_req_if.rs1_data = rs1_data; assign gpu_req_if.rs2_data = rs2_data[0]; + assign gpu_req_if.next_PC = execute_if.next_PC; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_ram.v b/hw/rtl/VX_gpr_ram.v index fa3fc004..78e1ea90 100644 --- a/hw/rtl/VX_gpr_ram.v +++ b/hw/rtl/VX_gpr_ram.v @@ -12,17 +12,17 @@ module VX_gpr_ram ( ); `ifndef ASIC - reg [`NUM_THREADS-1:0][3:0][7:0] ram [31:0]; + reg [`NUM_THREADS-1:0][3:0][7:0] ram [`NUM_REGS-1:0]; integer i; initial begin // initialize r0 to 0 for (i = 0; i < `NUM_THREADS; i++) begin - ram[i][0] = 0; - ram[i][1] = 0; - ram[i][2] = 0; - ram[i][3] = 0; + ram[0][i][0] = 0; + ram[0][i][1] = 0; + ram[0][i][2] = 0; + ram[0][i][3] = 0; end end diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 85c40d02..bfa46e58 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -6,9 +6,9 @@ module VX_gpr_stage #( input wire clk, input wire reset, - // inputs - VX_execute_if execute_if, + // inputs VX_wb_if writeback_if, + VX_execute_if execute_if, // outputs VX_alu_req_if alu_req_if, @@ -38,7 +38,7 @@ module VX_gpr_stage #( generate for (i = 0; i < `NUM_WARPS; i++) begin - assign we[i] = writeback_if.valid & {`NUM_THREADS{(writeback_if.wb != 0) && (i == writeback_if.warp_num)}}; + assign we[i] = writeback_if.valid & {`NUM_THREADS{(i == writeback_if.warp_num)}}; VX_gpr_ram gpr_ram ( .clk (clk), .we (we[i]), diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index 292b1f23..3cab2bee 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -7,7 +7,8 @@ module VX_gpu_unit #( VX_gpu_req_if gpu_req_if, // Output - VX_warp_ctl_if warp_ctl_if + VX_warp_ctl_if warp_ctl_if, + VX_commit_if gpu_commit_if ); wire [`NUM_THREADS-1:0] curr_valids = gpu_req_if.valid; wire is_wspawn = (gpu_req_if.gpu_op == `GPU_WSPAWN); @@ -76,4 +77,10 @@ module VX_gpu_unit #( assign gpu_req_if.ready = 1'b1; // has no stalls + // commit + assign gpu_commit_if.valid = gpu_req_if.valid; + assign gpu_commit_if.warp_num = gpu_req_if.warp_num; + assign gpu_commit_if.curr_PC = gpu_req_if.curr_PC; + assign gpu_commit_if.wb = `WB_NO; + endmodule \ No newline at end of file diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 145ac917..125b070b 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -1,6 +1,6 @@ `include "VX_define.vh" -module VX_issue #( +module VX_issue #( parameter CORE_ID = 0 ) ( input wire clk, @@ -9,79 +9,41 @@ module VX_issue #( VX_decode_if decode_if, VX_wb_if writeback_if, - VX_execute_if execute_if, - - output wire is_empty + VX_alu_req_if alu_req_if, + VX_branch_req_if branch_req_if, + VX_lsu_req_if lsu_req_if, + VX_csr_req_if csr_req_if, + VX_mul_req_if mul_req_if, + VX_gpu_req_if gpu_req_if ); - localparam CTVW = `CLOG2(`NUM_WARPS * 32 + 1); + VX_execute_if execute_if(); - reg [31:0][`NUM_THREADS-1:0] rename_table[`NUM_WARPS-1:0]; - reg [CTVW-1:0] count_valid; - - wire rs1_rename = (rename_table[decode_if.warp_num][decode_if.rs1] != 0); - wire rs2_rename = (rename_table[decode_if.warp_num][decode_if.rs2] != 0); - wire rd_rename = (rename_table[decode_if.warp_num][decode_if.rd ] != 0); + VX_scheduler #( + .CORE_ID(CORE_ID) + ) scheduler ( + .clk (clk), + .reset (reset), + .decode_if (decode_if), + .writeback_if (writeback_if), + .execute_if (execute_if), + `UNUSED_PIN (is_empty) + ); - wire rs1_rename_qual = (rs1_rename) && (decode_if.use_rs1); - wire rs2_rename_qual = (rs2_rename) && (decode_if.use_rs2); - wire rd_rename_qual = (rd_rename) && (decode_if.wb != 0); + VX_gpr_stage #( + .CORE_ID(CORE_ID) + ) gpr_stage ( + .clk (clk), + .reset (reset), + + .execute_if (execute_if), + .writeback_if (writeback_if), - wire rename_valid = (| decode_if.valid) && (rs1_rename_qual || rs2_rename_qual || rd_rename_qual); - - wire ex_stalled = (| decode_if.valid) - && ((!execute_if.alu_ready && (decode_if.ex_type == `EX_ALU)) - || (!execute_if.br_ready && (decode_if.ex_type == `EX_BR)) - || (!execute_if.lsu_ready && (decode_if.ex_type == `EX_LSU)) - || (!execute_if.csr_ready && (decode_if.ex_type == `EX_CSR)) - || (!execute_if.mul_ready && (decode_if.ex_type == `EX_MUL)) - || (!execute_if.gpu_ready && (decode_if.ex_type == `EX_GPU))); - - wire stall = rename_valid || ex_stalled; - - wire acquire_rd = (| decode_if.valid) && (decode_if.wb != 0) && (decode_if.rd != 0) && ~stall; - - wire release_rd = (| writeback_if.valid) && (writeback_if.wb != 0) && (writeback_if.rd != 0); - - wire [`NUM_THREADS-1:0] valid_wb_new_mask = rename_table[writeback_if.warp_num][writeback_if.rd] & ~writeback_if.valid; - - reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == valid_wb_new_mask))) ? (count_valid + 1) : - (~acquire_rd && (release_rd && (0 == valid_wb_new_mask))) ? (count_valid - 1) : - count_valid; - integer i, w; - - always @(posedge clk) begin - if (reset) begin - for (w = 0; w < `NUM_WARPS; w++) begin - for (i = 0; i < 32; i++) begin - rename_table[w][i] <= 0; - end - end - count_valid <= 0; - end else begin - if (acquire_rd) begin - rename_table[decode_if.warp_num][decode_if.rd] <= decode_if.valid; - end - if (release_rd) begin - assert(rename_table[writeback_if.warp_num][writeback_if.rd] != 0); - rename_table[writeback_if.warp_num][writeback_if.rd] <= valid_wb_new_mask; - end - count_valid <= count_valid_next; - end - end - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + `WB_BITS), - ) schedule_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (0), - .in ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.instr_op, decode_if.wb}), - .out ({execute_if.valid, execute_if.warp_num, execute_if.curr_PC, execute_if.next_PC, execute_if.rd, execute_if.rs1, execute_if.rs2, execute_if.imm, execute_if.rs1_is_PC, execute_if.rs2_is_imm, execute_if.ex_type, execute_if.instr_op, execute_if.wb}) - ); - - assign decode_if.ready = ~stall; - - assign is_empty = (0 == count_valid); + .alu_req_if (alu_req_if), + .branch_req_if (branch_req_if), + .lsu_req_if (lsu_req_if), + .csr_req_if (csr_req_if), + .mul_req_if (mul_req_if), + .gpu_req_if (gpu_req_if) + ); endmodule \ No newline at end of file diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 09add222..fb0fe514 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -16,7 +16,7 @@ module VX_lsu_unit #( VX_lsu_req_if lsu_req_if, // outputs - VX_wb_if lsu_wb_if + VX_commit_if lsu_commit_if ); wire [`NUM_THREADS-1:0] use_valid; @@ -108,7 +108,7 @@ module VX_lsu_unit #( .full (mrq_full), .pop (mrq_pop), .read_addr (mrq_read_addr), - .read_data ({dbg_mrq_write_addr, lsu_wb_if.curr_PC, lsu_wb_if.wb, mem_rsp_offset, core_rsp_mem_read, lsu_wb_if.rd, lsu_wb_if.warp_num}), + .read_data ({dbg_mrq_write_addr, lsu_commit_if.curr_PC, lsu_commit_if.wb, mem_rsp_offset, core_rsp_mem_read, lsu_commit_if.rd, lsu_commit_if.warp_num}), `UNUSED_PIN (empty) ); @@ -151,11 +151,11 @@ module VX_lsu_unit #( end end - assign lsu_wb_if.valid = dcache_rsp_if.valid; - assign lsu_wb_if.data = core_rsp_data; + assign lsu_commit_if.valid = dcache_rsp_if.valid; + assign lsu_commit_if.data = core_rsp_data; // Can accept new cache response - assign dcache_rsp_if.ready = lsu_wb_if.ready; + assign dcache_rsp_if.ready = lsu_commit_if.ready; `SCOPE_ASSIGN(scope_dcache_req_valid, dcache_req_if.valid); `SCOPE_ASSIGN(scope_dcache_req_warp_num, use_warp_num); @@ -180,7 +180,7 @@ module VX_lsu_unit #( end if ((| dcache_rsp_if.valid) && dcache_rsp_if.ready) begin $display("%t: D$%0d rsp: valid=%b, warp=%0d, PC=%0h, tag=%0h, rd=%0d, data=%0h", - $time, CORE_ID, lsu_wb_if.valid, lsu_wb_if.warp_num, lsu_wb_if.curr_PC, mrq_read_addr, lsu_wb_if.rd, lsu_wb_if.data); + $time, CORE_ID, lsu_commit_if.valid, lsu_commit_if.warp_num, lsu_commit_if.curr_PC, mrq_read_addr, lsu_commit_if.rd, lsu_commit_if.data); end end `endif diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index c0a80de1..7f349f95 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -10,7 +10,7 @@ module VX_mul_unit #( VX_mul_req_if mul_req_if, // Outputs - VX_wb_if mul_wb_if + VX_commit_if mul_commit_if ); wire [`NUM_THREADS-1:0][31:0] alu_result; wire [`NUM_THREADS-1:0][63:0] mul_result; @@ -71,7 +71,7 @@ module VX_mul_unit #( `MUL_DIV, `MUL_DIVU: alu_result[i] = (alu_in2[i] == 0) ? 32'hffffffff : div_result[i]; `MUL_REM, - `MUL_REMU: alu_result[i] = (alu_in2 == 0) ? alu_in1[i] : rem_result[i]; + `MUL_REMU: alu_result[i] = (alu_in2[i] == 0) ? alu_in1[i] : rem_result[i]; default: alu_result[i] = alu_in1[i] + alu_in2[i]; // ADD, LUI, AUIPC, FENCE endcase end @@ -104,7 +104,7 @@ module VX_mul_unit #( wire pipeline_stall = ~result_avail && (| mul_req_if.valid); - wire stall = (~mul_wb_if.ready && (| mul_wb_if.valid)) + wire stall = (~mul_commit_if.ready && (| mul_commit_if.valid)) || pipeline_stall; VX_generic_register #( @@ -115,7 +115,7 @@ module VX_mul_unit #( .stall (stall), .flush (0), .in ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.rd, mul_req_if.wb, alu_result}), - .out ({mul_wb_if.valid, mul_wb_if.warp_num, mul_wb_if.curr_PC, mul_wb_if.rd, mul_wb_if.wb, mul_wb_if.data}) + .out ({mul_commit_if.valid, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.rd, mul_commit_if.wb, mul_commit_if.data}) ); assign mul_req_if.ready = ~stall; diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index 7fee578b..2f007b35 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -101,22 +101,27 @@ module VX_pipeline #( assign csr_io_rsp_data = csr_io_rsp_if.data; assign csr_io_rsp_if.ready = csr_io_rsp_ready; + VX_perf_cntrs_if perf_cntrs_if(); VX_decode_if decode_if(); - VX_execute_if execute_if(); - VX_branch_rsp_if branch_rsp_if(); + VX_branch_ctl_if branch_ctl_if(); VX_warp_ctl_if warp_ctl_if(); VX_ifetch_rsp_if ifetch_rsp_if(); + VX_alu_req_if alu_req_if(); + VX_branch_req_if branch_req_if(); + VX_lsu_req_if lsu_req_if(); + VX_csr_req_if csr_req_if(); + VX_mul_req_if mul_req_if(); + VX_gpu_req_if gpu_req_if(); VX_wb_if writeback_if(); VX_wstall_if wstall_if(); VX_join_if join_if(); - VX_wb_if alu_wb_if(); - VX_wb_if branch_wb_if(); - VX_wb_if lsu_wb_if(); - VX_wb_if csr_wb_if(); - VX_wb_if mul_wb_if(); + VX_commit_if alu_commit_if(); + VX_commit_if branch_commit_if(); + VX_commit_if lsu_commit_if(); + VX_commit_if csr_commit_if(); + VX_commit_if mul_commit_if(); + VX_commit_if gpu_commit_if(); - wire notify_commit; - VX_fetch #( .CORE_ID(CORE_ID) ) fetch ( @@ -127,7 +132,7 @@ module VX_pipeline #( .wstall_if (wstall_if), .join_if (join_if), .warp_ctl_if (warp_ctl_if), - .branch_rsp_if (branch_rsp_if), + .branch_ctl_if (branch_ctl_if), .ifetch_rsp_if (ifetch_rsp_if), .busy (busy) ); @@ -148,10 +153,16 @@ module VX_pipeline #( ) issue ( .clk (clk), .reset (reset), + .decode_if (decode_if), .writeback_if (writeback_if), - .execute_if (execute_if), - `UNUSED_PIN (is_empty) + + .alu_req_if (alu_req_if), + .branch_req_if (branch_req_if), + .lsu_req_if (lsu_req_if), + .csr_req_if (csr_req_if), + .mul_req_if (mul_req_if), + .gpu_req_if (gpu_req_if) ); VX_execute #( @@ -160,35 +171,49 @@ module VX_pipeline #( `SCOPE_SIGNALS_LSU_BIND .clk (clk), .reset (reset), + .dcache_req_if (core_dcache_req_if), .dcache_rsp_if (core_dcache_rsp_if), + .csr_io_req_if (csr_io_req_if), - .csr_io_rsp_if (csr_io_rsp_if), - .execute_if (execute_if), - .writeback_if (writeback_if), + .csr_io_rsp_if (csr_io_rsp_if), + + .perf_cntrs_if (perf_cntrs_if), + + .alu_req_if (alu_req_if), + .branch_req_if (branch_req_if), + .lsu_req_if (lsu_req_if), + .csr_req_if (csr_req_if), + .mul_req_if (mul_req_if), + .gpu_req_if (gpu_req_if), + .warp_ctl_if (warp_ctl_if), - .branch_rsp_if (branch_rsp_if), - .alu_wb_if (alu_wb_if), - .branch_wb_if (branch_wb_if), - .lsu_wb_if (lsu_wb_if), - .csr_wb_if (csr_wb_if), - .mul_wb_if (mul_wb_if), - .notify_commit (notify_commit), + .branch_ctl_if (branch_ctl_if), + .alu_commit_if (alu_commit_if), + .branch_commit_if(branch_commit_if), + .lsu_commit_if (lsu_commit_if), + .csr_commit_if (csr_commit_if), + .mul_commit_if (mul_commit_if), + .gpu_commit_if (gpu_commit_if), + .ebreak (ebreak) ); - VX_writeback #( + VX_commit #( .CORE_ID(CORE_ID) - ) writeback ( + ) commit ( .clk (clk), .reset (reset), - .alu_wb_if (alu_wb_if), - .branch_wb_if (branch_wb_if), - .lsu_wb_if (lsu_wb_if), - .csr_wb_if (csr_wb_if), - .mul_wb_if (mul_wb_if), + + .alu_commit_if (alu_commit_if), + .branch_commit_if(branch_commit_if), + .lsu_commit_if (lsu_commit_if), + .csr_commit_if (csr_commit_if), + .mul_commit_if (mul_commit_if), + .gpu_commit_if (gpu_commit_if), + .writeback_if (writeback_if), - .notify_commit (notify_commit) + .perf_cntrs_if (perf_cntrs_if) ); assign dcache_req_valid = core_dcache_req_if.valid; @@ -223,12 +248,4 @@ module VX_pipeline #( `SCOPE_ASSIGN(scope_exec_delay, exec_delay); `SCOPE_ASSIGN(scope_gpr_stage_delay, gpr_delay); -`ifdef DBG_PRINT_PIPELINE - always @(posedge clk) begin - if ((| execute_if.valid) && (~execute_if.alu_ready || ~execute_if.br_ready || ~execute_if.lsu_ready || ~execute_if.csr_ready || ~execute_if.mul_ready || ~execute_if.gpu_ready)) begin - $display("%t: Core%0d-stall: warp=%0d, PC=%0h, alu=%b, br=%b, lsu=%b, csr=%b, mul=%b, gpu=%b", $time, CORE_ID, execute_if.warp_num, execute_if.curr_PC, ~execute_if.alu_ready, ~execute_if.br_ready, ~execute_if.lsu_ready, ~execute_if.csr_ready, ~execute_if.mul_ready, ~execute_if.gpu_ready); - end - end -`endif - endmodule diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v new file mode 100644 index 00000000..0b90695c --- /dev/null +++ b/hw/rtl/VX_scheduler.v @@ -0,0 +1,86 @@ +`include "VX_define.vh" + +module VX_scheduler #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + VX_decode_if decode_if, + VX_wb_if writeback_if, + + VX_execute_if execute_if, + output wire is_empty +); + localparam CTVW = `CLOG2(`NUM_WARPS * 32 + 1); + + reg [31:0][`NUM_THREADS-1:0] rename_table[`NUM_WARPS-1:0]; + reg [CTVW-1:0] count_valid; + + wire rs1_rename = (rename_table[decode_if.warp_num][decode_if.rs1] != 0); + wire rs2_rename = (rename_table[decode_if.warp_num][decode_if.rs2] != 0); + wire rd_rename = (rename_table[decode_if.warp_num][decode_if.rd ] != 0); + + wire rs1_rename_qual = (rs1_rename) && (decode_if.use_rs1); + wire rs2_rename_qual = (rs2_rename) && (decode_if.use_rs2); + wire rd_rename_qual = (rd_rename) && (decode_if.wb != 0); + + wire rename_valid = (| decode_if.valid) && (rs1_rename_qual || rs2_rename_qual || rd_rename_qual); + + wire ex_stalled = (| decode_if.valid) + && ((!execute_if.alu_ready && (decode_if.ex_type == `EX_ALU)) + || (!execute_if.br_ready && (decode_if.ex_type == `EX_BR)) + || (!execute_if.lsu_ready && (decode_if.ex_type == `EX_LSU)) + || (!execute_if.csr_ready && (decode_if.ex_type == `EX_CSR)) + || (!execute_if.mul_ready && (decode_if.ex_type == `EX_MUL)) + || (!execute_if.gpu_ready && (decode_if.ex_type == `EX_GPU))); + + wire stall = rename_valid || ex_stalled; + + wire acquire_rd = (| decode_if.valid) && (decode_if.wb != 0) && ~stall; + + wire release_rd = (| writeback_if.valid); + + wire [`NUM_THREADS-1:0] valid_wb_new_mask = rename_table[writeback_if.warp_num][writeback_if.rd] & ~writeback_if.valid; + + reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == valid_wb_new_mask))) ? (count_valid + 1) : + (~acquire_rd && (release_rd && (0 == valid_wb_new_mask))) ? (count_valid - 1) : + count_valid; + integer i, w; + + always @(posedge clk) begin + if (reset) begin + for (w = 0; w < `NUM_WARPS; w++) begin + for (i = 0; i < 32; i++) begin + rename_table[w][i] <= 0; + end + end + count_valid <= 0; + end else begin + if (acquire_rd) begin + rename_table[decode_if.warp_num][decode_if.rd] <= decode_if.valid; + end + if (release_rd) begin + assert(rename_table[writeback_if.warp_num][writeback_if.rd] != 0); + rename_table[writeback_if.warp_num][writeback_if.rd] <= valid_wb_new_mask; + end + count_valid <= count_valid_next; + end + end + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + `WB_BITS), + ) schedule_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.instr_op, decode_if.wb}), + .out ({execute_if.valid, execute_if.warp_num, execute_if.curr_PC, execute_if.next_PC, execute_if.rd, execute_if.rs1, execute_if.rs2, execute_if.imm, execute_if.rs1_is_PC, execute_if.rs2_is_imm, execute_if.ex_type, execute_if.instr_op, execute_if.wb}) + ); + + assign decode_if.ready = ~stall; + + assign is_empty = (0 == count_valid); + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index 09ec8564..aa34593d 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -9,7 +9,7 @@ module VX_warp_sched #( VX_warp_ctl_if warp_ctl_if, VX_wstall_if wstall_if, VX_join_if join_if, - VX_branch_rsp_if branch_rsp_if, + VX_branch_ctl_if branch_ctl_if, VX_ifetch_rsp_if ifetch_rsp_if, VX_ifetch_req_if ifetch_req_if, @@ -158,11 +158,11 @@ module VX_warp_sched #( end // Branch - if (branch_rsp_if.valid) begin - if (branch_rsp_if.taken) begin - warp_pcs[branch_rsp_if.warp_num] <= branch_rsp_if.dest; + if (branch_ctl_if.valid) begin + if (branch_ctl_if.taken) begin + warp_pcs[branch_ctl_if.warp_num] <= branch_ctl_if.dest; end - warp_stalled[branch_rsp_if.warp_num] <= 0; + warp_stalled[branch_ctl_if.warp_num] <= 0; end // Lock/Release @@ -230,7 +230,7 @@ module VX_warp_sched #( ); end - wire should_bra = (branch_rsp_if.valid && branch_rsp_if.taken && (warp_to_schedule == branch_rsp_if.warp_num)); + wire should_bra = (branch_ctl_if.valid && branch_ctl_if.taken && (warp_to_schedule == branch_ctl_if.warp_num)); assign hazard = should_bra && schedule; @@ -244,7 +244,7 @@ module VX_warp_sched #( assign warp_pc = real_use_wspawn ? use_wspawn_pc : warp_pcs[warp_to_schedule]; - assign thread_mask = (global_stall) ? 0 : (real_use_wspawn ? `NUM_THREADS'b1 : thread_masks[warp_to_schedule]); + assign thread_mask = global_stall ? 0 : (real_use_wspawn ? `NUM_THREADS'(1) : thread_masks[warp_to_schedule]); assign warp_num = warp_to_schedule; diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index cd642c3d..0d4cef3f 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -3,109 +3,84 @@ module VX_writeback #( parameter CORE_ID = 0 ) ( - input wire clk, - input wire reset, + input wire clk, + input wire reset, // inputs - VX_wb_if alu_wb_if, - VX_wb_if branch_wb_if, - VX_wb_if lsu_wb_if, - VX_wb_if mul_wb_if, - VX_wb_if csr_wb_if, + VX_commit_if alu_commit_if, + VX_commit_if branch_commit_if, + VX_commit_if lsu_commit_if, + VX_commit_if mul_commit_if, + VX_commit_if csr_commit_if, // outputs - VX_wb_if writeback_if, - output wire notify_commit + VX_wb_if writeback_if ); - wire br_valid = (| branch_wb_if.valid); - wire lsu_valid = (| lsu_wb_if.valid); - wire mul_valid = (| mul_wb_if.valid); - wire alu_valid = (| alu_wb_if.valid); - wire csr_valid = (| csr_wb_if.valid); + wire br_valid = (| branch_commit_if.valid) && (branch_commit_if.wb != `WB_NO); + wire lsu_valid = (| lsu_commit_if.valid) && (lsu_commit_if.wb != `WB_NO); + wire mul_valid = (| mul_commit_if.valid) && (mul_commit_if.wb != `WB_NO); + wire alu_valid = (| alu_commit_if.valid) && (alu_commit_if.wb != `WB_NO); + wire csr_valid = (| csr_commit_if.valid) && (csr_commit_if.wb != `WB_NO); VX_wb_if writeback_tmp_if(); - assign writeback_tmp_if.valid = br_valid ? branch_wb_if.valid : - lsu_valid ? lsu_wb_if.valid : - mul_valid ? mul_wb_if.valid : - alu_valid ? alu_wb_if.valid : - csr_valid ? csr_wb_if.valid : + assign writeback_tmp_if.valid = br_valid ? branch_commit_if.valid : + lsu_valid ? lsu_commit_if.valid : + mul_valid ? mul_commit_if.valid : + alu_valid ? alu_commit_if.valid : + csr_valid ? csr_commit_if.valid : 0; - assign writeback_tmp_if.warp_num = br_valid ? branch_wb_if.warp_num : - lsu_valid ? lsu_wb_if.warp_num : - mul_valid ? mul_wb_if.warp_num : - alu_valid ? alu_wb_if.warp_num : - csr_valid ? csr_wb_if.warp_num : + assign writeback_tmp_if.warp_num = br_valid ? branch_commit_if.warp_num : + lsu_valid ? lsu_commit_if.warp_num : + mul_valid ? mul_commit_if.warp_num : + alu_valid ? alu_commit_if.warp_num : + csr_valid ? csr_commit_if.warp_num : - 0; - - assign writeback_tmp_if.curr_PC = br_valid ? branch_wb_if.curr_PC : - lsu_valid ? lsu_wb_if.curr_PC : - mul_valid ? mul_wb_if.curr_PC : - alu_valid ? alu_wb_if.curr_PC : - csr_valid ? csr_wb_if.curr_PC : - 0; - - assign writeback_tmp_if.data = br_valid ? branch_wb_if.data : - lsu_valid ? lsu_wb_if.data : - mul_valid ? mul_wb_if.data : - alu_valid ? alu_wb_if.data : - csr_valid ? csr_wb_if.data : - 0; - - assign writeback_tmp_if.rd = br_valid ? branch_wb_if.rd : - lsu_valid ? lsu_wb_if.rd : - mul_valid ? mul_wb_if.rd : - alu_valid ? alu_wb_if.rd : - csr_valid ? csr_wb_if.rd : - 0; - - assign writeback_tmp_if.wb = br_valid ? branch_wb_if.wb : - lsu_valid ? lsu_wb_if.wb : - alu_valid ? alu_wb_if.wb : - csr_valid ? csr_wb_if.wb : - mul_valid ? mul_wb_if.wb : 0; + assign writeback_tmp_if.data = br_valid ? branch_commit_if.data : + lsu_valid ? lsu_commit_if.data : + mul_valid ? mul_commit_if.data : + alu_valid ? alu_commit_if.data : + csr_valid ? csr_commit_if.data : + 0; + + assign writeback_tmp_if.rd = br_valid ? branch_commit_if.rd : + lsu_valid ? lsu_commit_if.rd : + mul_valid ? mul_commit_if.rd : + alu_valid ? alu_commit_if.rd : + csr_valid ? csr_commit_if.rd : + 0; + wire stall = ~writeback_if.ready && (| writeback_if.valid); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + (`NUM_THREADS * 32) + `WB_BITS) + .N(`NUM_THREADS + `NW_BITS + `NR_BITS + (`NUM_THREADS * 32)) ) wb_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.curr_PC, writeback_tmp_if.rd, writeback_tmp_if.data, writeback_tmp_if.wb}), - .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.curr_PC, writeback_if.rd, writeback_if.data, writeback_if.wb}) + .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.rd, writeback_tmp_if.data}), + .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.rd, writeback_if.data}) ); - assign branch_wb_if.ready = !stall; - assign lsu_wb_if.ready = !stall && !br_valid; - assign mul_wb_if.ready = !stall && !br_valid && !lsu_valid; - assign alu_wb_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid; - assign csr_wb_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid && !alu_valid; + assign branch_commit_if.ready = !stall; + assign lsu_commit_if.ready = !stall && !br_valid; + assign mul_commit_if.ready = !stall && !br_valid && !lsu_valid; + assign alu_commit_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid; + assign csr_commit_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid && !alu_valid; - assign notify_commit = (| writeback_tmp_if.valid) && ~stall; - // special workaround to control RISC-V benchmarks termination on Verilator reg [31:0] last_data_wb /* verilator public */; always @(posedge clk) begin - if (notify_commit && (writeback_tmp_if.wb != 0) && (writeback_tmp_if.rd == 28)) begin + if ((| writeback_tmp_if.valid) && ~stall && (writeback_tmp_if.rd == 28)) begin last_data_wb <= writeback_tmp_if.data[0]; end end -`ifdef DBG_PRINT_PIPELINE - always @(posedge clk) begin - if ((| writeback_tmp_if.valid) && ~stall) begin - $display("%t: Core%0d-WB: warp=%0d, PC=%0h, rd=%0d, wb=%0d, data=%0h", $time, CORE_ID, writeback_tmp_if.warp_num, writeback_tmp_if.curr_PC, writeback_tmp_if.rd, writeback_tmp_if.wb, writeback_tmp_if.data); - end - end -`endif - endmodule diff --git a/hw/rtl/cache/VX_cache_core_rsp_merge.v b/hw/rtl/cache/VX_cache_core_rsp_merge.v index 24e40f91..4a72e717 100644 --- a/hw/rtl/cache/VX_cache_core_rsp_merge.v +++ b/hw/rtl/cache/VX_cache_core_rsp_merge.v @@ -46,7 +46,7 @@ module VX_cache_core_rsp_merge #( reg [`CORE_REQ_TAG_COUNT-1:0][CORE_TAG_WIDTH-1:0] core_rsp_tag_unqual; reg [NUM_BANKS-1:0] core_rsp_bank_select; - wire stall = ~core_rsp_ready; + wire stall = ~core_rsp_ready && (| core_rsp_valid); integer i; diff --git a/hw/rtl/interfaces/VX_branch_ctl_if.v b/hw/rtl/interfaces/VX_branch_ctl_if.v new file mode 100644 index 00000000..325b2671 --- /dev/null +++ b/hw/rtl/interfaces/VX_branch_ctl_if.v @@ -0,0 +1,15 @@ +`ifndef VX_BRANCH_RSP_IF +`define VX_BRANCH_RSP_IF + +`include "VX_define.vh" + +interface VX_branch_ctl_if (); + + wire valid; + wire [`NW_BITS-1:0] warp_num; + wire taken; + wire [31:0] dest; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_commit_if.v b/hw/rtl/interfaces/VX_commit_if.v new file mode 100644 index 00000000..6e969c77 --- /dev/null +++ b/hw/rtl/interfaces/VX_commit_if.v @@ -0,0 +1,19 @@ +`ifndef VX_COMMIT_IF +`define VX_COMMIT_IF + +`include "VX_define.vh" + +interface VX_commit_if (); + + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + wire [`NUM_THREADS-1:0][31:0] data; + wire [`NR_BITS-1:0] rd; + wire [`WB_BITS-1:0] wb; + wire is_io; + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_execute_if.v b/hw/rtl/interfaces/VX_execute_if.v index ae1fe68b..8188c0e7 100644 --- a/hw/rtl/interfaces/VX_execute_if.v +++ b/hw/rtl/interfaces/VX_execute_if.v @@ -3,7 +3,7 @@ `include "VX_define.vh" -interface VX_execute_if(); +interface VX_execute_if (); wire [`NUM_THREADS-1:0] valid; wire [`NW_BITS-1:0] warp_num; diff --git a/hw/rtl/interfaces/VX_gpu_req_if.v b/hw/rtl/interfaces/VX_gpu_req_if.v index 13adb788..468fc073 100644 --- a/hw/rtl/interfaces/VX_gpu_req_if.v +++ b/hw/rtl/interfaces/VX_gpu_req_if.v @@ -7,12 +7,13 @@ interface VX_gpu_req_if(); wire [`NUM_THREADS-1:0] valid; wire [`NW_BITS-1:0] warp_num; - wire [31:0] next_PC; + wire [31:0] curr_PC; wire [`GPU_BITS-1:0] gpu_op; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [31:0] rs2_data; + wire [31:0] next_PC; wire ready; diff --git a/hw/rtl/interfaces/VX_perf_cntrs_if.v b/hw/rtl/interfaces/VX_perf_cntrs_if.v new file mode 100644 index 00000000..daad411f --- /dev/null +++ b/hw/rtl/interfaces/VX_perf_cntrs_if.v @@ -0,0 +1,13 @@ +`ifndef VX_PERF_CNTRS_IF +`define VX_PERF_CNTRS_IF + +`include "VX_define.vh" + +interface VX_perf_cntrs_if (); + + wire [63:0] total_cycles; + wire [63:0] total_instrs; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index 4fb23d73..ceba5506 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -6,12 +6,9 @@ interface VX_wb_if (); wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; + wire [`NW_BITS-1:0] warp_num; wire [`NUM_THREADS-1:0][31:0] data; wire [`NR_BITS-1:0] rd; - wire [`WB_BITS-1:0] wb; - wire is_io; wire ready; endinterface diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index d3c164b1..213712a0 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -257,12 +257,12 @@ bool Simulator::run() { // check riscv-tests PASSED/FAILED status #if (NUM_CLUSTERS == 1 && NUM_CORES == 1) - int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->writeback->last_data_wb & 0xf; + int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb & 0xf; #else #if (NUM_CLUSTERS == 1) - int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->writeback->last_data_wb & 0xf; + int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb & 0xf; #else - int status = (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->writeback->last_data_wb & 0xf; + int status = (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb & 0xf; #endif #endif diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index 8515f1fd..51134059 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -22,7 +22,7 @@ int main(int argc, char **argv) "../../../benchmarks/riscv_tests/rv32ui-p-bltu.hex", "../../../benchmarks/riscv_tests/rv32ui-p-bne.hex", "../../../benchmarks/riscv_tests/rv32ui-p-jal.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-jalr.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-jalr.hex", "../../../benchmarks/riscv_tests/rv32ui-p-lb.hex", "../../../benchmarks/riscv_tests/rv32ui-p-lbu.hex", "../../../benchmarks/riscv_tests/rv32ui-p-lh.hex", From e2100e9e87760c77a61030773bd03189516d6585 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Mon, 20 Jul 2020 09:38:54 -0400 Subject: [PATCH 03/94] pipeline refactoring --- hw/rtl/VX_alu_unit.v | 56 +++++++++- hw/rtl/VX_branch_unit.v | 82 --------------- hw/rtl/VX_commit.v | 16 +-- hw/rtl/VX_decode.v | 27 +++-- hw/rtl/VX_define.vh | 169 ++++++++++++++++-------------- hw/rtl/VX_execute.v | 15 +-- hw/rtl/VX_gpr_mux.v | 16 +-- hw/rtl/VX_gpr_stage.v | 19 +--- hw/rtl/VX_issue.v | 2 - hw/rtl/VX_pipeline.v | 6 -- hw/rtl/VX_scheduler.v | 1 - hw/rtl/VX_writeback.v | 35 ++----- hw/rtl/interfaces/VX_alu_req_if.v | 3 + hw/rtl/interfaces/VX_execute_if.v | 3 +- 14 files changed, 182 insertions(+), 268 deletions(-) delete mode 100644 hw/rtl/VX_branch_unit.v diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 8848318e..f47c90a6 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -10,12 +10,12 @@ module VX_alu_unit #( VX_alu_req_if alu_req_if, // Outputs + VX_branch_ctl_if branch_ctl_if, VX_commit_if alu_commit_if ); wire [`NUM_THREADS-1:0][31:0] alu_result; wire [`NUM_THREADS-1:0][32:0] sub_result; wire [`NUM_THREADS-1:0][32:0] shift_result; - `UNUSED_VAR (shift_result); wire [`ALU_BITS-1:0] alu_op = alu_req_if.alu_op; wire [`NUM_THREADS-1:0][31:0] alu_in1 = alu_req_if.rs1_data; @@ -25,8 +25,8 @@ module VX_alu_unit #( for (i = 0; i < `NUM_THREADS; i++) begin - wire [32:0] sub_in1 = {(alu_op != `ALU_SLTU) & alu_in1[i][31], alu_in1[i]}; - wire [32:0] sub_in2 = {(alu_op != `ALU_SLTU) & alu_in2[i][31], alu_in2[i]}; + wire [32:0] sub_in1 = {(alu_op != `ALU_SLTU) & (alu_op != `ALU_BLTU) & (alu_op != `ALU_BGEU) & alu_in1[i][31], alu_in1[i]}; + wire [32:0] sub_in2 = {(alu_op != `ALU_SLTU) & (alu_op != `ALU_BLTU) & (alu_op != `ALU_BGEU) & alu_in2[i][31], alu_in2[i]}; assign sub_result[i] = $signed(sub_in1) - $signed(sub_in2); wire [32:0] shift_in1 = {(alu_op == `ALU_SRA) & alu_in1[i][31], alu_in1[i]}; @@ -48,8 +48,56 @@ module VX_alu_unit #( end end + wire [`NT_BITS-1:0] br_result_index; + + VX_priority_encoder #( + .N(`NUM_THREADS) + ) choose_alu_result ( + .data_in (alu_req_if.valid), + .data_out (br_result_index), + `UNUSED_PIN (valid_out) + ); + + wire [32:0] br_result = sub_result[br_result_index]; + wire br_sign = br_result[32]; + wire br_nzero = (| br_result[31:0]); + + wire [`BR_BITS-1:0] br_op = `BR_OP(alu_req_if.alu_op); + + reg br_taken; + always @(*) begin + case (br_op) + `BR_NE: br_taken = br_nzero; + `BR_EQ: br_taken = ~br_nzero; + `BR_LT, + `BR_LTU: br_taken = br_sign; + `BR_GE, + `BR_GEU: br_taken = ~br_sign; + default: br_taken = 1'b1; + endcase + end + + wire [31:0] br_addr = (br_op == `BR_JALR) ? alu_req_if.rs1_data[br_result_index] : alu_req_if.curr_PC; + wire [31:0] br_dest = $signed(br_addr) + $signed(alu_req_if.offset); + + wire is_jal = (alu_op == `ALU_JAL || alu_op == `ALU_JALR); + wire is_br_valid = `IS_BR_OP(alu_op) && (| alu_req_if.valid); + + wire [`NUM_THREADS-1:0][31:0] alu_jal_result = is_jal ? {`NUM_THREADS{alu_req_if.next_PC}} : alu_result; + wire stall = ~alu_commit_if.ready && (| alu_commit_if.valid); + VX_generic_register #( + .N(1 + `NW_BITS + 1 + 32) + ) rsp_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({is_br_valid, alu_req_if.warp_num, br_taken, br_dest}), + .out ({branch_ctl_if.valid, branch_ctl_if.warp_num, branch_ctl_if.taken, branch_ctl_if.dest}) + ); + VX_generic_register #( .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), ) alu_reg ( @@ -57,7 +105,7 @@ module VX_alu_unit #( .reset (reset), .stall (stall), .flush (0), - .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.rd, alu_req_if.wb, alu_result}), + .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.rd, alu_req_if.wb, alu_jal_result}), .out ({alu_commit_if.valid, alu_commit_if.warp_num, alu_commit_if.curr_PC, alu_commit_if.rd, alu_commit_if.wb, alu_commit_if.data}) ); diff --git a/hw/rtl/VX_branch_unit.v b/hw/rtl/VX_branch_unit.v deleted file mode 100644 index a708e1da..00000000 --- a/hw/rtl/VX_branch_unit.v +++ /dev/null @@ -1,82 +0,0 @@ -`include "VX_define.vh" - -module VX_branch_unit #( - parameter CORE_ID = 0 -) ( - input wire clk, - input wire reset, - - // Inputs - VX_branch_req_if branch_req_if, - - // Outputs - VX_branch_ctl_if branch_ctl_if, - VX_commit_if branch_commit_if -); - - wire [`NT_BITS-1:0] br_result_index; - - VX_priority_encoder #( - .N(`NUM_THREADS) - ) choose_alu_result ( - .data_in (branch_req_if.valid), - .data_out (br_result_index), - `UNUSED_PIN (valid_out) - ); - - wire [`BR_BITS-1:0] br_op = branch_req_if.br_op; - wire [31:0] rs1_data = branch_req_if.rs1_data[br_result_index]; - wire [31:0] rs2_data = branch_req_if.rs2_data[br_result_index]; - - wire [32:0] sub_in1 = {(br_op != `BR_LTU) & (br_op != `BR_GEU) & rs1_data[31], rs1_data}; - wire [32:0] sub_in2 = {(br_op != `BR_LTU) & (br_op != `BR_GEU) & rs2_data[31], rs2_data}; - wire [32:0] sub_res = $signed(sub_in1) - $signed(sub_in2); - - wire sub_sign = sub_res[32]; - wire sub_nzero = (| sub_res[31:0]); - - reg br_taken; - always @(*) begin - case (br_op) - `BR_NE: br_taken = sub_nzero; - `BR_EQ: br_taken = ~sub_nzero; - `BR_LT, - `BR_LTU: br_taken = sub_sign; - `BR_GE, - `BR_GEU: br_taken = ~sub_sign; - default: br_taken = 1'b1; - endcase - end - - wire in_valid = (| branch_req_if.valid); - - wire [31:0] base_addr = (br_op == `BR_JALR) ? rs1_data : branch_req_if.curr_PC; - wire [31:0] br_dest = $signed(base_addr) + $signed(branch_req_if.offset); - - wire stall = (~branch_commit_if.ready && (| branch_commit_if.valid)); - - VX_generic_register #( - .N(1 + `NW_BITS + 1 + 32) - ) rsp_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (0), - .in ({in_valid, branch_req_if.warp_num, br_taken, br_dest}), - .out ({branch_ctl_if.valid, branch_ctl_if.warp_num, branch_ctl_if.taken, branch_ctl_if.dest}) - ); - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), - ) wb_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (0), - .in ({branch_req_if.valid, branch_req_if.warp_num, branch_req_if.curr_PC, branch_req_if.rd, branch_req_if.wb, {`NUM_THREADS{branch_req_if.next_PC}}}), - .out ({branch_commit_if.valid, branch_commit_if.warp_num, branch_commit_if.curr_PC, branch_commit_if.rd, branch_commit_if.wb, branch_commit_if.data}) - ); - - assign branch_req_if.ready = ~stall; - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index 6c0b2fb2..02ae7aa0 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -8,7 +8,6 @@ module VX_commit #( // inputs VX_commit_if alu_commit_if, - VX_commit_if branch_commit_if, VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, VX_commit_if csr_commit_if, @@ -21,7 +20,6 @@ module VX_commit #( wire [`NUM_EXS-1:0] commited_mask; assign commited_mask = {((| alu_commit_if.valid) && alu_commit_if.ready), - ((| branch_commit_if.valid) && branch_commit_if.ready), ((| lsu_commit_if.valid) && lsu_commit_if.ready), ((| mul_commit_if.valid) && mul_commit_if.ready), ((| csr_commit_if.valid) && csr_commit_if.ready), @@ -64,7 +62,6 @@ module VX_commit #( .reset (reset), .alu_commit_if (alu_commit_if), - .branch_commit_if(branch_commit_if), .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), @@ -75,22 +72,19 @@ module VX_commit #( `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if ((| alu_commit_if.valid) && alu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, alu_commit_if.warp_num, alu_commit_if.curr_PC, alu_commit_if.wb, alu_commit_if.rd, alu_commit_if.data); - end - if ((| branch_commit_if.valid) && branch_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, branch_commit_if.warp_num, branch_commit_if.curr_PC, branch_commit_if.wb, branch_commit_if.rd, branch_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=ALU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, alu_commit_if.warp_num, alu_commit_if.curr_PC, alu_commit_if.wb, alu_commit_if.rd, alu_commit_if.data); end if ((| lsu_commit_if.valid) && lsu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, lsu_commit_if.warp_num, lsu_commit_if.curr_PC, lsu_commit_if.wb, lsu_commit_if.rd, lsu_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=LSU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, lsu_commit_if.warp_num, lsu_commit_if.curr_PC, lsu_commit_if.wb, lsu_commit_if.rd, lsu_commit_if.data); end if ((| mul_commit_if.valid) && mul_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.wb, mul_commit_if.rd, mul_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.wb, mul_commit_if.rd, mul_commit_if.data); end if ((| csr_commit_if.valid) && csr_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, csr_commit_if.warp_num, csr_commit_if.curr_PC, csr_commit_if.wb, csr_commit_if.rd, csr_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=CSR, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, csr_commit_if.warp_num, csr_commit_if.curr_PC, csr_commit_if.wb, csr_commit_if.rd, csr_commit_if.data); end if ((| gpu_commit_if.valid) && gpu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, gpu_commit_if.warp_num, gpu_commit_if.curr_PC, gpu_commit_if.wb, gpu_commit_if.rd, gpu_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=GPU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, gpu_commit_if.warp_num, gpu_commit_if.curr_PC, gpu_commit_if.wb, gpu_commit_if.rd, gpu_commit_if.data); end end `endif diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 44a84c88..418eb70c 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -92,7 +92,7 @@ module VX_decode #( // BRANCH always @(*) begin - br_op = `BR_OTHER; + br_op = `BR_EQ; case (opcode) `INST_B: begin case (func3) @@ -192,20 +192,20 @@ module VX_decode #( assign decode_tmp_if.curr_PC = ifetch_rsp_if.curr_PC; assign decode_tmp_if.next_PC = ifetch_rsp_if.curr_PC + 32'h4; - assign decode_tmp_if.ex_type = is_br ? `EX_BR : - is_lsu ? `EX_LSU : - is_csr ? `EX_CSR : - is_mul ? `EX_MUL : - is_gpu ? `EX_GPU : + assign decode_tmp_if.ex_type = is_lsu ? `EX_LSU : + is_csr ? `EX_CSR : + is_mul ? `EX_MUL : + is_gpu ? `EX_GPU : + is_br ? `EX_ALU : (is_rtype || is_itype || is_lui || is_auipc) ? `EX_ALU : `EX_NOP; - assign decode_tmp_if.instr_op = is_br ? `OP_BITS'(br_op) : - is_lsu ? `OP_BITS'(lsu_op) : - is_csr ? `OP_BITS'(csr_op) : - is_mul ? `OP_BITS'(mul_op) : - is_gpu ? `OP_BITS'(gpu_op) : - (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : + assign decode_tmp_if.instr_op = is_lsu ? `OP_BITS'(lsu_op) : + is_csr ? `OP_BITS'(csr_op) : + is_mul ? `OP_BITS'(mul_op) : + is_gpu ? `OP_BITS'(gpu_op) : + is_br ? `OP_BITS'({1'b1, br_op}) : + (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : 0; assign decode_tmp_if.rd = rd; @@ -219,7 +219,7 @@ module VX_decode #( is_csr ? 32'(u_12) : src2_imm; - assign decode_tmp_if.rs1_is_PC = is_auipc; + assign decode_tmp_if.rs1_is_PC = is_auipc; assign decode_tmp_if.rs2_is_imm = is_itype || is_lui || is_auipc || is_csr_imm; @@ -269,7 +269,6 @@ module VX_decode #( // trap unsupported instructions assert(~(~stall && (decode_tmp_if.ex_type == `EX_ALU) && `ALU_OP(decode_tmp_if.instr_op) == `ALU_OTHER)); - assert(~(~stall && (decode_tmp_if.ex_type == `EX_BR) && `BR_OP(decode_tmp_if.instr_op) == `BR_OTHER)); assert(~(~stall && (decode_tmp_if.ex_type == `EX_CSR) && `CSR_OP(decode_tmp_if.instr_op) == `CSR_OTHER)); assert(~(~stall && (decode_tmp_if.ex_type == `EX_GPU) && `GPU_OP(decode_tmp_if.instr_op) == `GPU_OTHER)); end diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 775028e5..b1b8759d 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -95,35 +95,12 @@ `define INST_SYS 7'b1110011 `define INST_GPU 7'b1101011 -`define OP_BITS 4 - -`define ALU_ADD 4'h0 -`define ALU_SUB 4'h1 -`define ALU_SLL 4'h2 -`define ALU_SRL 4'h3 -`define ALU_SRA 4'h4 -`define ALU_SLT 4'h5 -`define ALU_SLTU 4'h6 -`define ALU_XOR 4'h7 -`define ALU_OR 4'h8 -`define ALU_AND 4'h9 -`define ALU_LUI 4'hA -`define ALU_AUIPC 4'hB -`define ALU_OTHER 4'hF -`define ALU_BITS 4 -`define ALU_OP(x) x[`ALU_BITS-1:0] - -`define MUL_MUL 3'h0 -`define MUL_MULH 3'h1 -`define MUL_MULHSU 3'h2 -`define MUL_MULHU 3'h3 -`define MUL_DIV 3'h4 -`define MUL_DIVU 3'h5 -`define MUL_REM 3'h6 -`define MUL_REMU 3'h7 -`define MUL_BITS 3 -`define MUL_OP(x) x[`MUL_BITS-1:0] -`define IS_DIV_OP(x) x[2] +`define BYTEEN_SB 3'h0 +`define BYTEEN_SH 3'h1 +`define BYTEEN_SW 3'h2 +`define BYTEEN_UB 3'h4 +`define BYTEEN_UH 3'h5 +`define BYTEEN_BITS 3 `define BR_EQ 4'h0 `define BR_NE 4'h1 @@ -138,16 +115,63 @@ `define BR_MRET 4'hA `define BR_SRET 4'hB `define BR_DRET 4'hC -`define BR_OTHER 4'hF `define BR_BITS 4 -`define BR_OP(x) x[`BR_BITS-1:0] -`define BYTEEN_SB 3'h0 -`define BYTEEN_SH 3'h1 -`define BYTEEN_SW 3'h2 -`define BYTEEN_UB 3'h4 -`define BYTEEN_UH 3'h5 -`define BYTEEN_BITS 3 +`define OP_BITS 5 + +`define ALU_ADD 5'h00 +`define ALU_SUB 5'h01 +`define ALU_SLL 5'h02 +`define ALU_SRL 5'h03 +`define ALU_SRA 5'h04 +`define ALU_SLT 5'h05 +`define ALU_SLTU 5'h06 +`define ALU_XOR 5'h07 +`define ALU_OR 5'h08 +`define ALU_AND 5'h09 +`define ALU_LUI 5'h0A +`define ALU_AUIPC 5'h0B +`define ALU_BEQ {1'b1, `BR_EQ} +`define ALU_BNE {1'b1, `BR_NE} +`define ALU_BLT {1'b1, `BR_LT} +`define ALU_BGE {1'b1, `BR_GE} +`define ALU_BLTU {1'b1, `BR_LTU} +`define ALU_BGEU {1'b1, `BR_GEU} +`define ALU_JAL {1'b1, `BR_JAL} +`define ALU_JALR {1'b1, `BR_JALR} +`define ALU_ECALL {1'b1, `BR_ECALL} +`define ALU_EBREAK {1'b1, `BR_EBREAK} +`define ALU_MRET {1'b1, `BR_MRET} +`define ALU_SRET {1'b1, `BR_SRET} +`define ALU_DRET {1'b1, `BR_DRET} +`define ALU_OTHER 5'h1F +`define ALU_BITS 5 +`define ALU_OP(x) x[`ALU_BITS-1:0] +`define BR_OP(x) x[`BR_BITS-1:0] +`define IS_BR_OP(x) x[4] + +`define MUL_MUL 3'h0 +`define MUL_MULH 3'h1 +`define MUL_MULHSU 3'h2 +`define MUL_MULHU 3'h3 +`define MUL_DIV 3'h4 +`define MUL_DIVU 3'h5 +`define MUL_REM 3'h6 +`define MUL_REMU 3'h7 +`define MUL_BITS 3 +`define MUL_OP(x) x[`MUL_BITS-1:0] +`define IS_DIV_OP(x) x[2] + +`define LSU_LB {1'b0, `BYTEEN_SB} +`define LSU_LH {1'b0, `BYTEEN_SH} +`define LSU_LW {1'b0, `BYTEEN_SW} +`define LSU_LBU {1'b0, `BYTEEN_UB} +`define LSU_LHU {1'b0, `BYTEEN_UH} +`define LSU_SB {1'b1, `BYTEEN_SB} +`define LSU_SH {1'b1, `BYTEEN_SH} +`define LSU_SW {1'b1, `BYTEEN_SW} +`define LSU_SBU {1'b1, `BYTEEN_UB} +`define LSU_SHU {1'b1, `BYTEEN_UH} `define LSU_BITS 4 `define LSU_RW(x) x[3] `define LSU_BE(x) x[2:0] @@ -170,14 +194,13 @@ `define EX_NOP 3'h0 `define EX_ALU 3'h1 -`define EX_BR 3'h2 -`define EX_MUL 3'h3 -`define EX_LSU 3'h4 -`define EX_CSR 3'h5 -`define EX_GPU 3'h6 +`define EX_MUL 3'h2 +`define EX_LSU 3'h3 +`define EX_CSR 3'h4 +`define EX_GPU 3'h5 `define EX_BITS 3 -`define NUM_EXS 6 +`define NUM_EXS 5 `define NE_BITS `LOG2UP(`NUM_EXS) `define WB_NO 2'h0 @@ -371,8 +394,7 @@ task print_ex_type; input [`EX_BITS-1:0] ex; begin case (ex) - `EX_ALU: $write("ALU"); - `EX_BR: $write("BR"); + `EX_ALU: $write("ALU"); `EX_LSU: $write("LSU"); `EX_CSR: $write("CSR"); `EX_MUL: $write("MUL"); @@ -401,32 +423,27 @@ task print_instr_op; `ALU_AND: $write("AND"); `ALU_LUI: $write("LUI"); `ALU_AUIPC: $write("AUIPC"); + `ALU_BEQ: $write("EQ"); + `ALU_BNE: $write("NE"); + `ALU_BLT: $write("LT"); + `ALU_BGE: $write("GE"); + `ALU_BLTU: $write("LTU"); + `ALU_BGEU: $write("GEU"); + `ALU_JAL: $write("JAL"); + `ALU_JALR: $write("JALR"); + `ALU_ECALL: $write("ECALL"); + `ALU_EBREAK:$write("EBREAK"); + `ALU_MRET: $write("MRET"); + `ALU_SRET: $write("SRET"); + `ALU_DRET: $write("DRET"); default: $write("?"); endcase end - `EX_BR: begin - case (`BR_BITS'(op)) - `BR_EQ: $write("EQ"); - `BR_NE: $write("NE"); - `BR_LT: $write("LT"); - `BR_GE: $write("GE"); - `BR_LTU: $write("LTU"); - `BR_GEU: $write("GEU"); - `BR_JAL: $write("JAL"); - `BR_JALR: $write("JALR"); - `BR_ECALL: $write("ECALL"); - `BR_EBREAK: $write("EBREAK"); - `BR_MRET: $write("MRET"); - `BR_SRET: $write("SRET"); - `BR_DRET: $write("DRET"); - default: $write("?"); - endcase - end `EX_MUL: begin case (`MUL_BITS'(op)) `MUL_MUL: $write("MUL"); `MUL_MULH: $write("MULH"); - `MUL_MULHSU: $write("MULHSU"); + `MUL_MULHSU:$write("MULHSU"); `MUL_MULHU: $write("MULHU"); `MUL_DIV: $write("DIV"); `MUL_DIVU: $write("DIVU"); @@ -437,17 +454,17 @@ task print_instr_op; end `EX_LSU: begin case (`LSU_BITS'(op)) - 4'b0000: $write("LB"); - 4'b0001: $write("LH"); - 4'b0010: $write("LW"); - 4'b0100: $write("LBU"); - 4'b0101: $write("LHU"); - 4'b1000: $write("SB"); - 4'b1001: $write("SH"); - 4'b1010: $write("SW"); - 4'b1100: $write("SBU"); - 4'b1101: $write("SHU"); - default: $write("?"); + `LSU_LB: $write("LB"); + `LSU_LH: $write("LH"); + `LSU_LW: $write("LW"); + `LSU_LBU: $write("LBU"); + `LSU_LHU: $write("LHU"); + `LSU_SB: $write("SB"); + `LSU_SH: $write("SH"); + `LSU_SW: $write("SW"); + `LSU_SBU: $write("SBU"); + `LSU_SHU: $write("SHU"); + default: $write("?"); endcase end `EX_CSR: begin @@ -461,7 +478,7 @@ task print_instr_op; `EX_GPU: begin case (`GPU_BITS'(op)) `GPU_TMC: $write("TMC"); - `GPU_WSPAWN: $write("WSPAWN"); + `GPU_WSPAWN:$write("WSPAWN"); `GPU_SPLIT: $write("SPLIT"); `GPU_JOIN: $write("JOIN"); `GPU_BAR: $write("BAR"); diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 166e5c53..871fcaaf 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -22,7 +22,6 @@ module VX_execute #( // inputs VX_alu_req_if alu_req_if, - VX_branch_req_if branch_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, @@ -32,7 +31,6 @@ module VX_execute #( VX_branch_ctl_if branch_ctl_if, VX_warp_ctl_if warp_ctl_if, VX_commit_if alu_commit_if, - VX_commit_if branch_commit_if, VX_commit_if lsu_commit_if, VX_commit_if csr_commit_if, VX_commit_if mul_commit_if, @@ -47,17 +45,8 @@ module VX_execute #( .clk (clk), .reset (reset), .alu_req_if (alu_req_if), - .alu_commit_if (alu_commit_if) - ); - - VX_branch_unit #( - .CORE_ID(CORE_ID) - ) branch_unit ( - .clk (clk), - .reset (reset), - .branch_req_if (branch_req_if), .branch_ctl_if (branch_ctl_if), - .branch_commit_if(branch_commit_if) + .alu_commit_if (alu_commit_if) ); VX_lsu_unit #( @@ -101,7 +90,7 @@ module VX_execute #( .gpu_commit_if (gpu_commit_if) ); - assign ebreak = (| branch_req_if.valid) && (branch_req_if.br_op == `BR_EBREAK || branch_req_if.br_op == `BR_ECALL); + assign ebreak = (| alu_req_if.valid) && (alu_req_if.alu_op == `ALU_EBREAK || alu_req_if.alu_op == `ALU_ECALL); `SCOPE_ASSIGN(scope_decode_valid, decode_if.valid); `SCOPE_ASSIGN(scope_decode_warp_num, decode_if.warp_num); diff --git a/hw/rtl/VX_gpr_mux.v b/hw/rtl/VX_gpr_mux.v index 4b5d9615..9de519bc 100644 --- a/hw/rtl/VX_gpr_mux.v +++ b/hw/rtl/VX_gpr_mux.v @@ -8,7 +8,6 @@ module VX_gpr_mux ( // outputs VX_alu_req_if alu_req_if, - VX_branch_req_if branch_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, @@ -16,7 +15,6 @@ module VX_gpr_mux ( ); wire[`NUM_THREADS-1:0] is_alu = {`NUM_THREADS{execute_if.ex_type == `EX_ALU}}; - wire[`NUM_THREADS-1:0] is_br = {`NUM_THREADS{execute_if.ex_type == `EX_BR}}; wire[`NUM_THREADS-1:0] is_lsu = {`NUM_THREADS{execute_if.ex_type == `EX_LSU}}; wire[`NUM_THREADS-1:0] is_csr = {`NUM_THREADS{execute_if.ex_type == `EX_CSR}}; wire[`NUM_THREADS-1:0] is_mul = {`NUM_THREADS{execute_if.ex_type == `EX_MUL}}; @@ -31,18 +29,8 @@ module VX_gpr_mux ( assign alu_req_if.wb = execute_if.wb; assign alu_req_if.rs1_data = rs1_data; assign alu_req_if.rs2_data = rs2_data; - - // BR unit - assign branch_req_if.valid = execute_if.valid & is_br; - assign branch_req_if.warp_num = execute_if.warp_num; - assign branch_req_if.curr_PC = execute_if.curr_PC; - assign branch_req_if.br_op = `BR_OP(execute_if.instr_op); - assign branch_req_if.offset = execute_if.imm; - assign branch_req_if.next_PC = execute_if.next_PC; - assign branch_req_if.rs1_data = rs1_data; - assign branch_req_if.rs2_data = rs2_data; - assign branch_req_if.rd = execute_if.rd; - assign branch_req_if.wb = execute_if.wb; + assign alu_req_if.offset = execute_if.imm; + assign alu_req_if.next_PC = execute_if.next_PC; // LSU unit assign lsu_req_if.valid = execute_if.valid & is_lsu; diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index bfa46e58..4f04fd75 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -12,7 +12,6 @@ module VX_gpr_stage #( // outputs VX_alu_req_if alu_req_if, - VX_branch_req_if branch_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, @@ -53,7 +52,6 @@ module VX_gpr_stage #( endgenerate VX_alu_req_if alu_req_tmp_if(); - VX_branch_req_if branch_req_tmp_if(); VX_lsu_req_if lsu_req_tmp_if(); VX_csr_req_if csr_req_tmp_if(); VX_mul_req_if mul_req_tmp_if(); @@ -64,7 +62,6 @@ module VX_gpr_stage #( .rs1_data (rs1_data), .rs2_data (rs2_data), .alu_req_if (alu_req_if), - .branch_req_if (branch_req_tmp_if), .lsu_req_if (lsu_req_tmp_if), .csr_req_if (csr_req_tmp_if), .mul_req_if (mul_req_tmp_if), @@ -72,7 +69,6 @@ module VX_gpr_stage #( ); wire stall_alu = ~alu_req_if.ready && (| alu_req_if.valid); - wire stall_br = ~branch_req_if.ready && (| branch_req_if.valid); wire stall_lsu = ~lsu_req_if.ready && (| lsu_req_if.valid); wire stall_csr = ~csr_req_if.ready && (| csr_req_if.valid); wire stall_mul = ~mul_req_if.ready && (| mul_req_if.valid); @@ -89,17 +85,6 @@ module VX_gpr_stage #( .out ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.alu_op, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.rd, alu_req_if.wb}) ); - VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + 32 + `BR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + `NR_BITS + `WB_BITS) - ) br_reg ( - .clk (clk), - .reset (reset), - .stall (stall_br), - .flush (0), - .in ({branch_req_tmp_if.valid, branch_req_tmp_if.warp_num, branch_req_tmp_if.curr_PC, branch_req_tmp_if.next_PC, branch_req_tmp_if.br_op, branch_req_tmp_if.rs1_data, branch_req_tmp_if.rs2_data, branch_req_tmp_if.offset, branch_req_tmp_if.rd, branch_req_tmp_if.wb}), - .out ({branch_req_if.valid, branch_req_if.warp_num, branch_req_if.curr_PC, branch_req_if.next_PC, branch_req_if.br_op, branch_req_if.rs1_data, branch_req_if.rs2_data, branch_req_if.offset, branch_req_if.rd, branch_req_if.wb}) - ); - VX_generic_register #( .N(`NUM_THREADS + `NW_BITS + 32 + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 1 + `BYTEEN_BITS + `NR_BITS + `WB_BITS) ) lsu_reg ( @@ -145,7 +130,6 @@ module VX_gpr_stage #( ); assign execute_if.alu_ready = ~stall_alu; - assign execute_if.br_ready = ~stall_br; assign execute_if.lsu_ready = ~stall_lsu; assign execute_if.csr_ready = ~stall_csr; assign execute_if.mul_ready = ~stall_mul; @@ -159,8 +143,7 @@ module VX_gpr_stage #( $display("%t: Core%0d-GPR: warp=%0d, PC=%0h, a=%0h, b=%0h", $time, CORE_ID, execute_if.warp_num, execute_if.curr_PC, rs1_data, rs2_data); // scheduler ensures the destination execute unit is ready (garanteed by the scheduler) - assert((execute_if.ex_type != `EX_ALU) || alu_req_if.ready); - assert((execute_if.ex_type != `EX_BR) || branch_req_if.ready); + assert((execute_if.ex_type != `EX_ALU) || alu_req_if.ready); assert((execute_if.ex_type != `EX_LSU) || lsu_req_if.ready); assert((execute_if.ex_type != `EX_CSR) || csr_req_if.ready); assert((execute_if.ex_type != `EX_MUL) || mul_req_if.ready); diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 125b070b..446453fb 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -10,7 +10,6 @@ module VX_issue #( VX_wb_if writeback_if, VX_alu_req_if alu_req_if, - VX_branch_req_if branch_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, @@ -39,7 +38,6 @@ module VX_issue #( .writeback_if (writeback_if), .alu_req_if (alu_req_if), - .branch_req_if (branch_req_if), .lsu_req_if (lsu_req_if), .csr_req_if (csr_req_if), .mul_req_if (mul_req_if), diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index 2f007b35..a548e0db 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -107,7 +107,6 @@ module VX_pipeline #( VX_warp_ctl_if warp_ctl_if(); VX_ifetch_rsp_if ifetch_rsp_if(); VX_alu_req_if alu_req_if(); - VX_branch_req_if branch_req_if(); VX_lsu_req_if lsu_req_if(); VX_csr_req_if csr_req_if(); VX_mul_req_if mul_req_if(); @@ -116,7 +115,6 @@ module VX_pipeline #( VX_wstall_if wstall_if(); VX_join_if join_if(); VX_commit_if alu_commit_if(); - VX_commit_if branch_commit_if(); VX_commit_if lsu_commit_if(); VX_commit_if csr_commit_if(); VX_commit_if mul_commit_if(); @@ -158,7 +156,6 @@ module VX_pipeline #( .writeback_if (writeback_if), .alu_req_if (alu_req_if), - .branch_req_if (branch_req_if), .lsu_req_if (lsu_req_if), .csr_req_if (csr_req_if), .mul_req_if (mul_req_if), @@ -181,7 +178,6 @@ module VX_pipeline #( .perf_cntrs_if (perf_cntrs_if), .alu_req_if (alu_req_if), - .branch_req_if (branch_req_if), .lsu_req_if (lsu_req_if), .csr_req_if (csr_req_if), .mul_req_if (mul_req_if), @@ -190,7 +186,6 @@ module VX_pipeline #( .warp_ctl_if (warp_ctl_if), .branch_ctl_if (branch_ctl_if), .alu_commit_if (alu_commit_if), - .branch_commit_if(branch_commit_if), .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), @@ -206,7 +201,6 @@ module VX_pipeline #( .reset (reset), .alu_commit_if (alu_commit_if), - .branch_commit_if(branch_commit_if), .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index 0b90695c..29c77d52 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -29,7 +29,6 @@ module VX_scheduler #( wire ex_stalled = (| decode_if.valid) && ((!execute_if.alu_ready && (decode_if.ex_type == `EX_ALU)) - || (!execute_if.br_ready && (decode_if.ex_type == `EX_BR)) || (!execute_if.lsu_ready && (decode_if.ex_type == `EX_LSU)) || (!execute_if.csr_ready && (decode_if.ex_type == `EX_CSR)) || (!execute_if.mul_ready && (decode_if.ex_type == `EX_MUL)) diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 0d4cef3f..66797e94 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -8,7 +8,6 @@ module VX_writeback #( // inputs VX_commit_if alu_commit_if, - VX_commit_if branch_commit_if, VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, VX_commit_if csr_commit_if, @@ -17,7 +16,6 @@ module VX_writeback #( VX_wb_if writeback_if ); - wire br_valid = (| branch_commit_if.valid) && (branch_commit_if.wb != `WB_NO); wire lsu_valid = (| lsu_commit_if.valid) && (lsu_commit_if.wb != `WB_NO); wire mul_valid = (| mul_commit_if.valid) && (mul_commit_if.wb != `WB_NO); wire alu_valid = (| alu_commit_if.valid) && (alu_commit_if.wb != `WB_NO); @@ -25,30 +23,25 @@ module VX_writeback #( VX_wb_if writeback_tmp_if(); - assign writeback_tmp_if.valid = br_valid ? branch_commit_if.valid : - lsu_valid ? lsu_commit_if.valid : + assign writeback_tmp_if.valid = lsu_valid ? lsu_commit_if.valid : mul_valid ? mul_commit_if.valid : alu_valid ? alu_commit_if.valid : csr_valid ? csr_commit_if.valid : 0; - assign writeback_tmp_if.warp_num = br_valid ? branch_commit_if.warp_num : - lsu_valid ? lsu_commit_if.warp_num : + assign writeback_tmp_if.warp_num = lsu_valid ? lsu_commit_if.warp_num : mul_valid ? mul_commit_if.warp_num : alu_valid ? alu_commit_if.warp_num : - csr_valid ? csr_commit_if.warp_num : - + csr_valid ? csr_commit_if.warp_num : 0; - assign writeback_tmp_if.data = br_valid ? branch_commit_if.data : - lsu_valid ? lsu_commit_if.data : + assign writeback_tmp_if.data = lsu_valid ? lsu_commit_if.data : mul_valid ? mul_commit_if.data : alu_valid ? alu_commit_if.data : csr_valid ? csr_commit_if.data : 0; - assign writeback_tmp_if.rd = br_valid ? branch_commit_if.rd : - lsu_valid ? lsu_commit_if.rd : + assign writeback_tmp_if.rd = lsu_valid ? lsu_commit_if.rd : mul_valid ? mul_commit_if.rd : alu_valid ? alu_commit_if.rd : csr_valid ? csr_commit_if.rd : @@ -67,11 +60,10 @@ module VX_writeback #( .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.rd, writeback_if.data}) ); - assign branch_commit_if.ready = !stall; - assign lsu_commit_if.ready = !stall && !br_valid; - assign mul_commit_if.ready = !stall && !br_valid && !lsu_valid; - assign alu_commit_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid; - assign csr_commit_if.ready = !stall && !br_valid && !lsu_valid && !mul_valid && !alu_valid; + assign lsu_commit_if.ready = !stall; + assign mul_commit_if.ready = !stall && !lsu_valid; + assign alu_commit_if.ready = !stall && !lsu_valid && !mul_valid; + assign csr_commit_if.ready = !stall && !lsu_valid && !mul_valid && !alu_valid; // special workaround to control RISC-V benchmarks termination on Verilator reg [31:0] last_data_wb /* verilator public */; @@ -81,11 +73,4 @@ module VX_writeback #( end end -endmodule - - - - - - - +endmodule \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_alu_req_if.v b/hw/rtl/interfaces/VX_alu_req_if.v index 42e427d5..ce90f96f 100644 --- a/hw/rtl/interfaces/VX_alu_req_if.v +++ b/hw/rtl/interfaces/VX_alu_req_if.v @@ -13,6 +13,9 @@ interface VX_alu_req_if (); wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; + + wire [31:0] offset; + wire [31:0] next_PC; wire [`NR_BITS-1:0] rd; wire [`WB_BITS-1:0] wb; diff --git a/hw/rtl/interfaces/VX_execute_if.v b/hw/rtl/interfaces/VX_execute_if.v index 8188c0e7..4f698c76 100644 --- a/hw/rtl/interfaces/VX_execute_if.v +++ b/hw/rtl/interfaces/VX_execute_if.v @@ -21,8 +21,7 @@ interface VX_execute_if (); wire [`WB_BITS-1:0] wb; - wire alu_ready; - wire br_ready; + wire alu_ready; wire mul_ready; wire lsu_ready; wire csr_ready; From dc7efbcfb4548de9dfd7d683585c23a1e7de91ee Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 21 Jul 2020 05:22:47 -0400 Subject: [PATCH 04/94] pipeline refactoring --- hw/rtl/VX_alu_unit.v | 2 +- hw/rtl/{VX_csr_pipe.v => VX_csr_unit.v} | 2 +- hw/rtl/VX_decode.v | 4 +- hw/rtl/VX_execute.v | 4 +- hw/rtl/VX_gpr_mux.v | 77 - hw/rtl/VX_gpr_ram.v | 1 + hw/rtl/VX_gpr_stage.v | 148 +- hw/rtl/VX_gpu_unit.v | 14 +- hw/rtl/VX_issue.v | 134 +- hw/rtl/VX_issue_mux.v | 76 + hw/rtl/VX_mul_unit.v | 4 +- hw/rtl/VX_scheduler.v | 41 +- hw/rtl/VX_warp.v | 69 - hw/rtl/VX_warp_sched.v | 26 +- hw/rtl/cache/VX_cache.v | 328 +- hw/rtl/cache/VX_cache_miss_resrv.v | 12 +- hw/rtl/interfaces/VX_alu_req_if.v | 8 +- hw/rtl/interfaces/VX_execute_if.v | 32 - hw/rtl/interfaces/VX_gpr_data_if.v | 13 + hw/rtl/interfaces/VX_ifetch_req_if.v | 4 +- hw/rtl/interfaces/VX_ifetch_rsp_if.v | 4 +- hw/rtl/interfaces/VX_lsu_req_if.v | 14 +- hw/rtl/interfaces/VX_mul_req_if.v | 20 +- hw/rtl/interfaces/VX_wb_if.v | 4 +- hw/rtl/libs/VX_generic_register.v | 4 +- hw/rtl/libs/VX_generic_stack.v | 4 +- hw/simulate/Makefile | 2 +- hw/simulate/ram.h | 2 +- runtime/tests/simple/vx_simple.dump | 5114 ++++------------------- runtime/tests/simple/vx_simple.elf | Bin 28756 -> 12500 bytes runtime/tests/simple/vx_simple.hex | 1308 ++---- 31 files changed, 1437 insertions(+), 6038 deletions(-) rename hw/rtl/{VX_csr_pipe.v => VX_csr_unit.v} (99%) delete mode 100644 hw/rtl/VX_gpr_mux.v create mode 100644 hw/rtl/VX_issue_mux.v delete mode 100644 hw/rtl/VX_warp.v delete mode 100644 hw/rtl/interfaces/VX_execute_if.v create mode 100644 hw/rtl/interfaces/VX_gpr_data_if.v diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index f47c90a6..ff4c2b05 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -89,7 +89,7 @@ module VX_alu_unit #( VX_generic_register #( .N(1 + `NW_BITS + 1 + 32) - ) rsp_reg ( + ) branch_reg ( .clk (clk), .reset (reset), .stall (stall), diff --git a/hw/rtl/VX_csr_pipe.v b/hw/rtl/VX_csr_unit.v similarity index 99% rename from hw/rtl/VX_csr_pipe.v rename to hw/rtl/VX_csr_unit.v index b8f88481..15c3d173 100644 --- a/hw/rtl/VX_csr_pipe.v +++ b/hw/rtl/VX_csr_unit.v @@ -1,6 +1,6 @@ `include "VX_define.vh" -module VX_csr_pipe #( +module VX_csr_unit #( parameter CORE_ID = 0 ) ( input wire clk, diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 418eb70c..7d90d21b 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -235,10 +235,10 @@ module VX_decode #( is_ltype ? `WB_MEM : `WB_NO; - assign join_if.is_join = is_gpu && (gpu_op == `GPU_JOIN) && in_valid; + assign join_if.is_join = in_valid && is_gpu && (gpu_op == `GPU_JOIN); assign join_if.warp_num = ifetch_rsp_if.warp_num; - assign wstall_if.wstall = (is_br || is_gpu) && in_valid; + assign wstall_if.wstall = in_valid && (is_btype || is_jal || is_jalr || (is_gpu && (gpu_op == `GPU_TMC || gpu_op == `GPU_SPLIT || gpu_op == `GPU_BAR))); assign wstall_if.warp_num = ifetch_rsp_if.warp_num; wire stall = ~decode_if.ready && (| decode_if.valid); diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 871fcaaf..adbd7c30 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -61,9 +61,9 @@ module VX_execute #( .lsu_commit_if (lsu_commit_if) ); - VX_csr_pipe #( + VX_csr_unit #( .CORE_ID(CORE_ID) - ) csr_pipe ( + ) csr_unit ( .clk (clk), .reset (reset), .perf_cntrs_if (perf_cntrs_if), diff --git a/hw/rtl/VX_gpr_mux.v b/hw/rtl/VX_gpr_mux.v deleted file mode 100644 index 9de519bc..00000000 --- a/hw/rtl/VX_gpr_mux.v +++ /dev/null @@ -1,77 +0,0 @@ -`include "VX_define.vh" - -module VX_gpr_mux ( - // inputs - VX_execute_if execute_if, - input wire [`NUM_THREADS-1:0][31:0] rs1_data, - input wire [`NUM_THREADS-1:0][31:0] rs2_data, - - // outputs - VX_alu_req_if alu_req_if, - VX_lsu_req_if lsu_req_if, - VX_csr_req_if csr_req_if, - VX_mul_req_if mul_req_if, - VX_gpu_req_if gpu_req_if -); - - wire[`NUM_THREADS-1:0] is_alu = {`NUM_THREADS{execute_if.ex_type == `EX_ALU}}; - wire[`NUM_THREADS-1:0] is_lsu = {`NUM_THREADS{execute_if.ex_type == `EX_LSU}}; - wire[`NUM_THREADS-1:0] is_csr = {`NUM_THREADS{execute_if.ex_type == `EX_CSR}}; - wire[`NUM_THREADS-1:0] is_mul = {`NUM_THREADS{execute_if.ex_type == `EX_MUL}}; - wire[`NUM_THREADS-1:0] is_gpu = {`NUM_THREADS{execute_if.ex_type == `EX_GPU}}; - - // ALU unit - assign alu_req_if.valid = execute_if.valid & is_alu; - assign alu_req_if.warp_num = execute_if.warp_num; - assign alu_req_if.curr_PC = execute_if.curr_PC; - assign alu_req_if.alu_op = `ALU_OP(execute_if.instr_op); - assign alu_req_if.rd = execute_if.rd; - assign alu_req_if.wb = execute_if.wb; - assign alu_req_if.rs1_data = rs1_data; - assign alu_req_if.rs2_data = rs2_data; - assign alu_req_if.offset = execute_if.imm; - assign alu_req_if.next_PC = execute_if.next_PC; - - // LSU unit - assign lsu_req_if.valid = execute_if.valid & is_lsu; - assign lsu_req_if.warp_num = execute_if.warp_num; - assign lsu_req_if.curr_PC = execute_if.curr_PC; - assign lsu_req_if.base_addr = rs1_data; - assign lsu_req_if.store_data = rs2_data; - assign lsu_req_if.offset = execute_if.imm; - assign lsu_req_if.rw = `LSU_RW(execute_if.instr_op); - assign lsu_req_if.byteen = `LSU_BE(execute_if.instr_op); - assign lsu_req_if.rd = execute_if.rd; - assign lsu_req_if.wb = execute_if.wb; - - // CSR unit - assign csr_req_if.valid = execute_if.valid & is_csr; - assign csr_req_if.warp_num = execute_if.warp_num; - assign csr_req_if.curr_PC = execute_if.curr_PC; - assign csr_req_if.csr_op = `CSR_OP(execute_if.instr_op); - assign csr_req_if.csr_addr = execute_if.imm[`CSR_ADDR_SIZE-1:0]; - assign csr_req_if.csr_mask = execute_if.rs2_is_imm ? 32'(execute_if.rs1) : rs1_data[0]; - assign csr_req_if.rd = execute_if.rd; - assign csr_req_if.wb = execute_if.wb; - assign csr_req_if.is_io = 1'b0; - - // MUL unit - assign mul_req_if.valid = execute_if.valid & is_mul; - assign mul_req_if.warp_num = execute_if.warp_num; - assign mul_req_if.curr_PC = execute_if.curr_PC; - assign mul_req_if.mul_op = `MUL_OP(execute_if.instr_op); - assign mul_req_if.rs1_data = rs1_data; - assign mul_req_if.rs2_data = rs2_data; - assign mul_req_if.rd = execute_if.rd; - assign mul_req_if.wb = execute_if.wb; - - // GPU unit - assign gpu_req_if.valid = execute_if.valid & is_gpu; - assign gpu_req_if.warp_num = execute_if.warp_num; - assign gpu_req_if.curr_PC = execute_if.curr_PC; - assign gpu_req_if.gpu_op = `GPU_OP(execute_if.instr_op); - assign gpu_req_if.rs1_data = rs1_data; - assign gpu_req_if.rs2_data = rs2_data[0]; - assign gpu_req_if.next_PC = execute_if.next_PC; - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_ram.v b/hw/rtl/VX_gpr_ram.v index 78e1ea90..8782ae7c 100644 --- a/hw/rtl/VX_gpr_ram.v +++ b/hw/rtl/VX_gpr_ram.v @@ -36,6 +36,7 @@ module VX_gpr_ram ( end end assert(~(|we) || (waddr != 0)); // ensure r0 is never written! + assert(0 == ram[0]); end assign rs1_data = ram[rs1]; diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 4f04fd75..a56e7c67 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -4,23 +4,16 @@ module VX_gpr_stage #( parameter CORE_ID = 0 ) ( input wire clk, - input wire reset, // inputs VX_wb_if writeback_if, - VX_execute_if execute_if, + VX_decode_if decode_if, // outputs - VX_alu_req_if alu_req_if, - VX_lsu_req_if lsu_req_if, - VX_csr_req_if csr_req_if, - VX_mul_req_if mul_req_if, - VX_gpu_req_if gpu_req_if + VX_gpr_data_if gpr_data_if ); wire [`NUM_THREADS-1:0][31:0] rs1_data_all [`NUM_WARPS-1:0]; wire [`NUM_THREADS-1:0][31:0] rs2_data_all [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs1_data; - wire [`NUM_THREADS-1:0][31:0] rs2_data; wire [`NUM_THREADS-1:0][31:0] rs1_PC; wire [`NUM_THREADS-1:0][31:0] rs2_imm; wire [`NUM_THREADS-1:0] we [`NUM_WARPS-1:0]; @@ -28,128 +21,27 @@ module VX_gpr_stage #( genvar i; for (i = 0; i < `NUM_THREADS; i++) begin - assign rs1_PC[i] = execute_if.curr_PC; - assign rs2_imm[i] = execute_if.imm; + assign rs1_PC[i] = decode_if.curr_PC; + assign rs2_imm[i] = decode_if.imm; end - assign rs1_data = execute_if.rs1_is_PC ? rs1_PC : rs1_data_all[execute_if.warp_num]; - assign rs2_data = execute_if.rs2_is_imm ? rs2_imm : rs2_data_all[execute_if.warp_num]; - - generate - for (i = 0; i < `NUM_WARPS; i++) begin - assign we[i] = writeback_if.valid & {`NUM_THREADS{(i == writeback_if.warp_num)}}; - VX_gpr_ram gpr_ram ( - .clk (clk), - .we (we[i]), - .waddr (writeback_if.rd), - .wdata (writeback_if.data), - .rs1 (execute_if.rs1), - .rs2 (execute_if.rs2), - .rs1_data (rs1_data_all[i]), - .rs2_data (rs2_data_all[i]) - ); - end - endgenerate - - VX_alu_req_if alu_req_tmp_if(); - VX_lsu_req_if lsu_req_tmp_if(); - VX_csr_req_if csr_req_tmp_if(); - VX_mul_req_if mul_req_tmp_if(); - VX_gpu_req_if gpu_req_tmp_if(); - - VX_gpr_mux gpr_mux ( - .execute_if (execute_if), - .rs1_data (rs1_data), - .rs2_data (rs2_data), - .alu_req_if (alu_req_if), - .lsu_req_if (lsu_req_tmp_if), - .csr_req_if (csr_req_tmp_if), - .mul_req_if (mul_req_tmp_if), - .gpu_req_if (gpu_req_tmp_if) - ); - - wire stall_alu = ~alu_req_if.ready && (| alu_req_if.valid); - wire stall_lsu = ~lsu_req_if.ready && (| lsu_req_if.valid); - wire stall_csr = ~csr_req_if.ready && (| csr_req_if.valid); - wire stall_mul = ~mul_req_if.ready && (| mul_req_if.valid); - wire stall_gpu = ~gpu_req_if.ready && (| gpu_req_if.valid); - - VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `ALU_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `NR_BITS + `WB_BITS) - ) alu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_alu), - .flush (0), - .in ({alu_req_tmp_if.valid, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.alu_op, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.rd, alu_req_tmp_if.wb}), - .out ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.alu_op, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.rd, alu_req_if.wb}) - ); - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 1 + `BYTEEN_BITS + `NR_BITS + `WB_BITS) - ) lsu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_lsu), - .flush (0), - .in ({lsu_req_tmp_if.valid, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.store_data, lsu_req_tmp_if.offset, lsu_req_tmp_if.rw, lsu_req_tmp_if.byteen, lsu_req_tmp_if.rd, lsu_req_tmp_if.wb}), - .out ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.base_addr, lsu_req_if.store_data, lsu_req_if.offset, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.rd, lsu_req_if.wb}) - ); - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `CSR_BITS + `CSR_ADDR_SIZE + 32 + 1 + `NR_BITS + `WB_BITS) - ) csr_reg ( - .clk (clk), - .reset (reset), - .stall (stall_csr), - .flush (0), - .in ({csr_req_tmp_if.valid, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.csr_op, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask, csr_req_tmp_if.is_io, csr_req_tmp_if.rd, csr_req_tmp_if.wb}), - .out ({csr_req_if.valid, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.csr_op, csr_req_if.csr_addr, csr_req_if.csr_mask, csr_req_if.is_io, csr_req_if.rd, csr_req_if.wb}) - ); - - VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `MUL_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `NR_BITS + `WB_BITS) - ) mul_reg ( - .clk (clk), - .reset (reset), - .stall (stall_mul), - .flush (0), - .in ({mul_req_tmp_if.valid, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.mul_op, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data, mul_req_tmp_if.rd, mul_req_tmp_if.wb}), - .out ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.mul_op, mul_req_if.rs1_data, mul_req_if.rs2_data, mul_req_if.rd, mul_req_if.wb}) - ); - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `GPU_BITS + (`NUM_THREADS * 32) + 32) - ) gpu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_gpu), - .flush (0), - .in ({gpu_req_tmp_if.valid, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.next_PC, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data}), - .out ({gpu_req_if.valid, gpu_req_if.warp_num, gpu_req_if.next_PC, gpu_req_if.gpu_op, gpu_req_if.rs1_data, gpu_req_if.rs2_data}) - ); - - assign execute_if.alu_ready = ~stall_alu; - assign execute_if.lsu_ready = ~stall_lsu; - assign execute_if.csr_ready = ~stall_csr; - assign execute_if.mul_ready = ~stall_mul; - assign execute_if.gpu_ready = ~stall_gpu; + assign gpr_data_if.rs1_data = decode_if.rs1_is_PC ? rs1_PC : rs1_data_all[decode_if.warp_num]; + assign gpr_data_if.rs2_data = decode_if.rs2_is_imm ? rs2_imm : rs2_data_all[decode_if.warp_num]; + + for (i = 0; i < `NUM_WARPS; i++) begin + assign we[i] = writeback_if.valid & {`NUM_THREADS{(i == writeback_if.warp_num)}}; + VX_gpr_ram gpr_ram ( + .clk (clk), + .we (we[i]), + .waddr (writeback_if.rd), + .wdata (writeback_if.data), + .rs1 (decode_if.rs1), + .rs2 (decode_if.rs2), + .rs1_data (rs1_data_all[i]), + .rs2_data (rs2_data_all[i]) + ); + end assign writeback_if.ready = 1'b1; -`ifdef DBG_PRINT_PIPELINE - always @(posedge clk) begin - if ((| execute_if.valid)) begin - $display("%t: Core%0d-GPR: warp=%0d, PC=%0h, a=%0h, b=%0h", $time, CORE_ID, execute_if.warp_num, execute_if.curr_PC, rs1_data, rs2_data); - - // scheduler ensures the destination execute unit is ready (garanteed by the scheduler) - assert((execute_if.ex_type != `EX_ALU) || alu_req_if.ready); - assert((execute_if.ex_type != `EX_LSU) || lsu_req_if.ready); - assert((execute_if.ex_type != `EX_CSR) || csr_req_if.ready); - assert((execute_if.ex_type != `EX_MUL) || mul_req_if.ready); - assert((execute_if.ex_type != `EX_GPU) || gpu_req_if.ready); - end - end -`endif - endmodule diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index 3cab2bee..f3bcb726 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -16,12 +16,11 @@ module VX_gpu_unit #( wire is_split = (gpu_req_if.gpu_op == `GPU_SPLIT); wire is_bar = (gpu_req_if.gpu_op == `GPU_BAR); - wire [`NUM_THREADS-1:0] tmc_new_mask; - wire all_threads = `NUM_THREADS < gpu_req_if.rs1_data[0]; - + wire [`NUM_THREADS-1:0] tmc_new_mask; + genvar i; for (i = 0; i < `NUM_THREADS; i++) begin : tmc_new_mask_init - assign tmc_new_mask[i] = all_threads ? 1 : i < gpu_req_if.rs1_data[0]; + assign tmc_new_mask[i] = (i < gpu_req_if.rs1_data[0]); end wire valid_inst = (| curr_valids); @@ -35,11 +34,10 @@ module VX_gpu_unit #( wire wspawn = is_wspawn && valid_inst; wire [31:0] wspawn_pc = gpu_req_if.rs2_data; - wire all_active = `NUM_WARPS < gpu_req_if.rs1_data[0]; wire [`NUM_WARPS-1:0] wspawn_new_active; for (i = 0; i < `NUM_WARPS; i++) begin : wspawn_new_active_init - assign wspawn_new_active[i] = all_active ? 1 : i < gpu_req_if.rs1_data[0]; + assign wspawn_new_active[i] = (i < gpu_req_if.rs1_data[0]); end assign warp_ctl_if.is_barrier = is_bar && valid_inst; @@ -75,12 +73,14 @@ module VX_gpu_unit #( assign warp_ctl_if.split_later_mask = split_new_later_mask; assign warp_ctl_if.split_save_pc = gpu_req_if.next_PC; - assign gpu_req_if.ready = 1'b1; // has no stalls + assign gpu_req_if.ready = gpu_commit_if.ready; // commit assign gpu_commit_if.valid = gpu_req_if.valid; assign gpu_commit_if.warp_num = gpu_req_if.warp_num; assign gpu_commit_if.curr_PC = gpu_req_if.curr_PC; assign gpu_commit_if.wb = `WB_NO; + assign gpu_commit_if.rd = 0; + assign gpu_commit_if.data = 0; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 446453fb..737e7b60 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -15,7 +15,14 @@ module VX_issue #( VX_mul_req_if mul_req_if, VX_gpu_req_if gpu_req_if ); - VX_execute_if execute_if(); + VX_gpr_data_if gpr_data_if(); + wire schedule_delay; + + wire alu_busy = ~alu_req_if.ready/* && (| alu_req_if.valid)*/; + wire lsu_busy = ~lsu_req_if.ready/* && (| lsu_req_if.valid)*/; + wire csr_busy = ~csr_req_if.ready/* && (| csr_req_if.valid)*/; + wire mul_busy = ~mul_req_if.ready/* && (| mul_req_if.valid)*/; + wire gpu_busy = ~gpu_req_if.ready/* && (| gpu_req_if.valid)*/; VX_scheduler #( .CORE_ID(CORE_ID) @@ -23,25 +30,126 @@ module VX_issue #( .clk (clk), .reset (reset), .decode_if (decode_if), - .writeback_if (writeback_if), - .execute_if (execute_if), + .writeback_if (writeback_if), + .alu_busy (alu_busy), + .lsu_busy (lsu_busy), + .csr_busy (csr_busy), + .mul_busy (mul_busy), + .gpu_busy (gpu_busy), + .schedule_delay (schedule_delay), `UNUSED_PIN (is_empty) ); VX_gpr_stage #( .CORE_ID(CORE_ID) ) gpr_stage ( - .clk (clk), - .reset (reset), - - .execute_if (execute_if), + .clk (clk), + .decode_if (decode_if), .writeback_if (writeback_if), - - .alu_req_if (alu_req_if), - .lsu_req_if (lsu_req_if), - .csr_req_if (csr_req_if), - .mul_req_if (mul_req_if), - .gpu_req_if (gpu_req_if) + .gpr_data_if (gpr_data_if) ); + VX_alu_req_if alu_req_tmp_if(); + VX_lsu_req_if lsu_req_tmp_if(); + VX_csr_req_if csr_req_tmp_if(); + VX_mul_req_if mul_req_tmp_if(); + VX_gpu_req_if gpu_req_tmp_if(); + + VX_issue_mux issue_mux ( + .decode_if (decode_if), + .gpr_data_if (gpr_data_if), + .alu_req_if (alu_req_tmp_if), + .lsu_req_if (lsu_req_tmp_if), + .csr_req_if (csr_req_tmp_if), + .mul_req_if (mul_req_tmp_if), + .gpu_req_if (gpu_req_tmp_if) + ); + + wire stall_alu = ~alu_req_if.ready || schedule_delay; + wire stall_lsu = ~lsu_req_if.ready || schedule_delay; + wire stall_csr = ~csr_req_if.ready || schedule_delay; + wire stall_mul = ~mul_req_if.ready || schedule_delay; + wire stall_gpu = ~gpu_req_if.ready || schedule_delay; + + wire flush_alu = alu_req_if.ready && schedule_delay; + wire flush_lsu = lsu_req_if.ready && schedule_delay; + wire flush_csr = csr_req_if.ready && schedule_delay; + wire flush_mul = mul_req_if.ready && schedule_delay; + wire flush_gpu = gpu_req_if.ready && schedule_delay; + + VX_generic_register #( + .N(`NUM_THREADS +`NW_BITS + 32 + `ALU_BITS + `WB_BITS + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 32) + ) alu_reg ( + .clk (clk), + .reset (reset), + .stall (stall_alu), + .flush (flush_alu), + .in ({alu_req_tmp_if.valid, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.alu_op, alu_req_tmp_if.wb, alu_req_tmp_if.rd, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.offset, alu_req_tmp_if.next_PC}), + .out ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.alu_op, alu_req_if.wb, alu_req_if.rd, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC}) + ); + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + 1 + `BYTEEN_BITS + `WB_BITS + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32) + ) lsu_reg ( + .clk (clk), + .reset (reset), + .stall (stall_lsu), + .flush (flush_lsu), + .in ({lsu_req_tmp_if.valid, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.rw, lsu_req_tmp_if.byteen, lsu_req_tmp_if.wb, lsu_req_tmp_if.rd, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.offset, lsu_req_tmp_if.store_data}), + .out ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.wb, lsu_req_if.rd, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data}) + ); + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + `CSR_BITS + `WB_BITS + `NR_BITS + `CSR_ADDR_SIZE + 32 + 1) + ) csr_reg ( + .clk (clk), + .reset (reset), + .stall (stall_csr), + .flush (flush_csr), + .in ({csr_req_tmp_if.valid, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.csr_op, csr_req_tmp_if.wb, csr_req_tmp_if.rd, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask, csr_req_tmp_if.is_io}), + .out ({csr_req_if.valid, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.csr_op, csr_req_if.wb, csr_req_if.rd, csr_req_if.csr_addr, csr_req_if.csr_mask, csr_req_if.is_io}) + ); + + VX_generic_register #( + .N(`NUM_THREADS +`NW_BITS + 32 + `MUL_BITS + `WB_BITS + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) + ) mul_reg ( + .clk (clk), + .reset (reset), + .stall (stall_mul), + .flush (flush_mul), + .in ({mul_req_tmp_if.valid, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.mul_op, mul_req_tmp_if.wb, mul_req_tmp_if.rd, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data}), + .out ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.mul_op, mul_req_if.wb, mul_req_if.rd, mul_req_if.rs1_data, mul_req_if.rs2_data}) + ); + + VX_generic_register #( + .N(`NUM_THREADS + `NW_BITS + 32 + `GPU_BITS + (`NUM_THREADS * 32) + 32 + 32) + ) gpu_reg ( + .clk (clk), + .reset (reset), + .stall (stall_gpu), + .flush (flush_gpu), + .in ({gpu_req_tmp_if.valid, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.curr_PC, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data, gpu_req_tmp_if.next_PC}), + .out ({gpu_req_if.valid, gpu_req_if.warp_num, gpu_req_if.curr_PC, gpu_req_if.gpu_op, gpu_req_if.rs1_data, gpu_req_if.rs2_data, gpu_req_if.next_PC}) + ); + +`ifdef DBG_PRINT_PIPELINE + always @(posedge clk) begin + if ((| alu_req_tmp_if.valid) && ~stall_alu) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, op=%0d, wb=%d, rd=%0d, rs1=%0h, rs2=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.alu_op, alu_req_tmp_if.wb, alu_req_tmp_if.rd, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.offset, alu_req_tmp_if.next_PC); + end + if ((| mul_req_tmp_if.valid) && ~stall_mul) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, op=%0d, wb=%d, rd=%0d, rs1=%0h, rs2=%0h", $time, CORE_ID, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.mul_op, mul_req_tmp_if.wb, mul_req_tmp_if.rd, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data); + end + if ((| lsu_req_tmp_if.valid) && ~stall_lsu) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, rw=%b, wb=%0d, rd=%0d, byteen=%b, baddr=%0h, offset=%0h", $time, CORE_ID, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.rw, lsu_req_tmp_if.rd, lsu_req_tmp_if.wb, lsu_req_tmp_if.byteen, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.offset); + end + if ((| csr_req_tmp_if.valid) && ~stall_csr) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, op=%0d, wb=%d, rd=%0d, addr=%0h, mask=%0h", $time, CORE_ID, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.csr_op, csr_req_tmp_if.wb, csr_req_tmp_if.rd, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask); + end + if ((| gpu_req_tmp_if.valid) && ~stall_gpu) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=GPU, op=%0d, rs1=%0h, rs2=%0h", $time, CORE_ID, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.curr_PC, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data); + end + end +`endif + endmodule \ No newline at end of file diff --git a/hw/rtl/VX_issue_mux.v b/hw/rtl/VX_issue_mux.v new file mode 100644 index 00000000..e55d7986 --- /dev/null +++ b/hw/rtl/VX_issue_mux.v @@ -0,0 +1,76 @@ +`include "VX_define.vh" + +module VX_issue_mux ( + // inputs + VX_decode_if decode_if, + VX_gpr_data_if gpr_data_if, + + // outputs + VX_alu_req_if alu_req_if, + VX_lsu_req_if lsu_req_if, + VX_csr_req_if csr_req_if, + VX_mul_req_if mul_req_if, + VX_gpu_req_if gpu_req_if +); + + wire[`NUM_THREADS-1:0] is_alu = {`NUM_THREADS{decode_if.ex_type == `EX_ALU}}; + wire[`NUM_THREADS-1:0] is_lsu = {`NUM_THREADS{decode_if.ex_type == `EX_LSU}}; + wire[`NUM_THREADS-1:0] is_csr = {`NUM_THREADS{decode_if.ex_type == `EX_CSR}}; + wire[`NUM_THREADS-1:0] is_mul = {`NUM_THREADS{decode_if.ex_type == `EX_MUL}}; + wire[`NUM_THREADS-1:0] is_gpu = {`NUM_THREADS{decode_if.ex_type == `EX_GPU}}; + + // ALU unit + assign alu_req_if.valid = decode_if.valid & is_alu; + assign alu_req_if.warp_num = decode_if.warp_num; + assign alu_req_if.curr_PC = decode_if.curr_PC; + assign alu_req_if.alu_op = `ALU_OP(decode_if.instr_op); + assign alu_req_if.rd = decode_if.rd; + assign alu_req_if.wb = decode_if.wb; + assign alu_req_if.rs1_data = gpr_data_if.rs1_data; + assign alu_req_if.rs2_data = gpr_data_if.rs2_data; + assign alu_req_if.offset = decode_if.imm; + assign alu_req_if.next_PC = decode_if.next_PC; + + // LSU unit + assign lsu_req_if.valid = decode_if.valid & is_lsu; + assign lsu_req_if.warp_num = decode_if.warp_num; + assign lsu_req_if.curr_PC = decode_if.curr_PC; + assign lsu_req_if.base_addr = gpr_data_if.rs1_data; + assign lsu_req_if.store_data = gpr_data_if.rs2_data; + assign lsu_req_if.offset = decode_if.imm; + assign lsu_req_if.rw = `LSU_RW(decode_if.instr_op); + assign lsu_req_if.byteen = `LSU_BE(decode_if.instr_op); + assign lsu_req_if.rd = decode_if.rd; + assign lsu_req_if.wb = decode_if.wb; + + // CSR unit + assign csr_req_if.valid = decode_if.valid & is_csr; + assign csr_req_if.warp_num = decode_if.warp_num; + assign csr_req_if.curr_PC = decode_if.curr_PC; + assign csr_req_if.csr_op = `CSR_OP(decode_if.instr_op); + assign csr_req_if.csr_addr = decode_if.imm[`CSR_ADDR_SIZE-1:0]; + assign csr_req_if.csr_mask = decode_if.rs2_is_imm ? 32'(decode_if.rs1) : gpr_data_if.rs1_data[0]; + assign csr_req_if.rd = decode_if.rd; + assign csr_req_if.wb = decode_if.wb; + assign csr_req_if.is_io = 1'b0; + + // MUL unit + assign mul_req_if.valid = decode_if.valid & is_mul; + assign mul_req_if.warp_num = decode_if.warp_num; + assign mul_req_if.curr_PC = decode_if.curr_PC; + assign mul_req_if.mul_op = `MUL_OP(decode_if.instr_op); + assign mul_req_if.rs1_data = gpr_data_if.rs1_data; + assign mul_req_if.rs2_data = gpr_data_if.rs2_data; + assign mul_req_if.rd = decode_if.rd; + assign mul_req_if.wb = decode_if.wb; + + // GPU unit + assign gpu_req_if.valid = decode_if.valid & is_gpu; + assign gpu_req_if.warp_num = decode_if.warp_num; + assign gpu_req_if.curr_PC = decode_if.curr_PC; + assign gpu_req_if.gpu_op = `GPU_OP(decode_if.instr_op); + assign gpu_req_if.rs1_data = gpr_data_if.rs1_data; + assign gpu_req_if.rs2_data = gpr_data_if.rs2_data[0]; + assign gpu_req_if.next_PC = decode_if.next_PC; + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 7f349f95..f6a6976d 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -107,13 +107,15 @@ module VX_mul_unit #( wire stall = (~mul_commit_if.ready && (| mul_commit_if.valid)) || pipeline_stall; + wire flush = mul_commit_if.ready && pipeline_stall; + VX_generic_register #( .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), ) mul_reg ( .clk (clk), .reset (reset), .stall (stall), - .flush (0), + .flush (flush), .in ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.rd, mul_req_if.wb, alu_result}), .out ({mul_commit_if.valid, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.rd, mul_commit_if.wb, mul_commit_if.data}) ); diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index 29c77d52..1d9f3149 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -8,8 +8,12 @@ module VX_scheduler #( VX_decode_if decode_if, VX_wb_if writeback_if, - - VX_execute_if execute_if, + input wire alu_busy, + input wire lsu_busy, + input wire csr_busy, + input wire mul_busy, + input wire gpu_busy, + output wire schedule_delay, output wire is_empty ); localparam CTVW = `CLOG2(`NUM_WARPS * 32 + 1); @@ -28,13 +32,13 @@ module VX_scheduler #( wire rename_valid = (| decode_if.valid) && (rs1_rename_qual || rs2_rename_qual || rd_rename_qual); wire ex_stalled = (| decode_if.valid) - && ((!execute_if.alu_ready && (decode_if.ex_type == `EX_ALU)) - || (!execute_if.lsu_ready && (decode_if.ex_type == `EX_LSU)) - || (!execute_if.csr_ready && (decode_if.ex_type == `EX_CSR)) - || (!execute_if.mul_ready && (decode_if.ex_type == `EX_MUL)) - || (!execute_if.gpu_ready && (decode_if.ex_type == `EX_GPU))); + && ((alu_busy && (decode_if.ex_type == `EX_ALU)) + || (lsu_busy && (decode_if.ex_type == `EX_LSU)) + || (csr_busy && (decode_if.ex_type == `EX_CSR)) + || (mul_busy && (decode_if.ex_type == `EX_MUL)) + || (gpu_busy && (decode_if.ex_type == `EX_GPU))); - wire stall = rename_valid || ex_stalled; + wire stall = ex_stalled || rename_valid; wire acquire_rd = (| decode_if.valid) && (decode_if.wb != 0) && ~stall; @@ -67,19 +71,18 @@ module VX_scheduler #( end end - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + `WB_BITS), - ) schedule_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (0), - .in ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.instr_op, decode_if.wb}), - .out ({execute_if.valid, execute_if.warp_num, execute_if.curr_PC, execute_if.next_PC, execute_if.rd, execute_if.rs1, execute_if.rs2, execute_if.imm, execute_if.rs1_is_PC, execute_if.rs2_is_imm, execute_if.ex_type, execute_if.instr_op, execute_if.wb}) - ); - assign decode_if.ready = ~stall; + assign schedule_delay = stall; + assign is_empty = (0 == count_valid); +`ifdef DBG_PRINT_PIPELINE + always @(posedge clk) begin + if (stall) begin + $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, rename=%b%b%b, alu=%b, lsu=%b, csr=%b, mul=%b, gpu=%b", $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, rd_rename_qual, rs1_rename_qual, rs2_rename_qual, alu_busy, lsu_busy, csr_busy, mul_busy, gpu_busy); + end + end +`endif + endmodule \ No newline at end of file diff --git a/hw/rtl/VX_warp.v b/hw/rtl/VX_warp.v deleted file mode 100644 index 55c2bb31..00000000 --- a/hw/rtl/VX_warp.v +++ /dev/null @@ -1,69 +0,0 @@ -`include "VX_define.vh" - - -module VX_warp ( - input wire clk, - input wire reset, - input wire stall, - input wire remove, - input wire[`NUM_THREADS-1:0] thread_mask, - input wire change_mask, - input wire jal, - input wire[31:0] dest, - input wire branch_taken, - input wire[31:0] branch_dest, - input wire wspawn, - input wire[31:0] wspawn_pc, - - output wire[31:0] PC, - output wire[`NUM_THREADS-1:0] valid -); - - reg [`NUM_THREADS-1:0] valid_t; - reg [31:0] real_PC; - reg [31:0] temp_PC; - reg [31:0] use_PC; - - always @(posedge clk) begin - if (reset) begin - valid_t <= {{(`NUM_THREADS-1){1'b0}},1'b1}; // Thread 1 active - end else if (remove) begin - valid_t <= 0; - end else if (change_mask) begin - valid_t <= thread_mask; - end - end - - genvar i; - generate - for (i = 0; i < `NUM_THREADS; i++) begin : valid_assign - assign valid[i] = change_mask ? thread_mask[i] : stall ? 1'b0 : valid_t[i]; - end - endgenerate - - always @(*) begin - if (jal == 1'b1) begin - temp_PC = dest; - end else if (branch_taken) begin - temp_PC = branch_dest; - end else begin - temp_PC = real_PC; - end - end - - assign use_PC = temp_PC; - assign PC = temp_PC; - - always @(posedge clk) begin - if (reset) begin - real_PC <= 0; - end else if (wspawn) begin - real_PC <= wspawn_pc; - end else if (!stall) begin - real_PC <= use_PC + 32'h4; - end else begin - real_PC <= use_PC; - end - end - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index aa34593d..a0040a5b 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -20,7 +20,7 @@ module VX_warp_sched #( wire update_visible_active; wire scheduled_warp; - wire [(1+32+`NUM_THREADS-1):0] d[`NUM_WARPS-1:0]; + wire [(1+32+`NUM_THREADS-1):0] ipdom[`NUM_WARPS-1:0]; wire join_fall; wire [31:0] join_pc; @@ -71,9 +71,8 @@ module VX_warp_sched #( wire stall; - integer i; - always @(posedge clk) begin + integer i; if (reset) begin for (i = 0; i < `NUM_BARRIERS; i++) begin barrier_stall_mask[i] <= 0; @@ -99,9 +98,9 @@ module VX_warp_sched #( end else begin if (warp_ctl_if.wspawn) begin - warp_active <= warp_ctl_if.wspawn_new_active; - use_wspawn_pc <= warp_ctl_if.wspawn_pc; - use_wspawn <= warp_ctl_if.wspawn_new_active & (~`NUM_WARPS'b1); + warp_active <= warp_ctl_if.wspawn_new_active; + use_wspawn_pc <= warp_ctl_if.wspawn_pc; + use_wspawn <= warp_ctl_if.wspawn_new_active & (~`NUM_WARPS'(1)); end if (warp_ctl_if.is_barrier) begin @@ -205,13 +204,12 @@ module VX_warp_sched #( wire [(1+32+`NUM_THREADS-1):0] q1 = {1'b1, 32'b0, thread_masks[warp_ctl_if.warp_num]}; wire [(1+32+`NUM_THREADS-1):0] q2 = {1'b0, warp_ctl_if.split_save_pc, warp_ctl_if.split_later_mask}; - assign {join_fall, join_pc, join_tm} = d[join_if.warp_num]; + assign {join_fall, join_pc, join_tm} = ipdom[join_if.warp_num]; - genvar j; - - for (j = 0; j < `NUM_WARPS; j++) begin : stacks - wire correct_warp_s = (j == warp_ctl_if.warp_num); - wire correct_warp_j = (j == join_if.warp_num); + genvar i; + for (i = 0; i < `NUM_WARPS; i++) begin : stacks + wire correct_warp_s = (i == warp_ctl_if.warp_num); + wire correct_warp_j = (i == join_if.warp_num); wire push = (warp_ctl_if.is_split && warp_ctl_if.do_split) && correct_warp_s; wire pop = join_if.is_join && correct_warp_j; @@ -224,11 +222,11 @@ module VX_warp_sched #( .reset(reset), .push (push), .pop (pop), - .d (d[i]), + .d (ipdom[i]), .q1 (q1), .q2 (q2) ); - end + end wire should_bra = (branch_ctl_if.valid && branch_ctl_if.taken && (warp_to_schedule == branch_ctl_if.warp_num)); diff --git a/hw/rtl/cache/VX_cache.v b/hw/rtl/cache/VX_cache.v index e76430f9..7184847b 100644 --- a/hw/rtl/cache/VX_cache.v +++ b/hw/rtl/cache/VX_cache.v @@ -249,187 +249,185 @@ module VX_cache #( genvar i; - generate - for (i = 0; i < NUM_BANKS; i++) begin - wire [NUM_REQUESTS-1:0] curr_bank_core_req_valid; - wire [NUM_REQUESTS-1:0] curr_bank_core_req_rw; - wire [NUM_REQUESTS-1:0][WORD_SIZE-1:0] curr_bank_core_req_byteen; - wire [NUM_REQUESTS-1:0][`WORD_ADDR_WIDTH-1:0] curr_bank_core_req_addr; - wire [`CORE_REQ_TAG_COUNT-1:0][CORE_TAG_WIDTH-1:0] curr_bank_core_req_tag; - wire [NUM_REQUESTS-1:0][`WORD_WIDTH-1:0] curr_bank_core_req_data; + for (i = 0; i < NUM_BANKS; i++) begin + wire [NUM_REQUESTS-1:0] curr_bank_core_req_valid; + wire [NUM_REQUESTS-1:0] curr_bank_core_req_rw; + wire [NUM_REQUESTS-1:0][WORD_SIZE-1:0] curr_bank_core_req_byteen; + wire [NUM_REQUESTS-1:0][`WORD_ADDR_WIDTH-1:0] curr_bank_core_req_addr; + wire [`CORE_REQ_TAG_COUNT-1:0][CORE_TAG_WIDTH-1:0] curr_bank_core_req_tag; + wire [NUM_REQUESTS-1:0][`WORD_WIDTH-1:0] curr_bank_core_req_data; - wire curr_bank_core_rsp_valid; - wire [`REQS_BITS-1:0] curr_bank_core_rsp_tid; - wire [`WORD_WIDTH-1:0] curr_bank_core_rsp_data; - wire [CORE_TAG_WIDTH-1:0] curr_bank_core_rsp_tag; - wire curr_bank_core_rsp_ready; + wire curr_bank_core_rsp_valid; + wire [`REQS_BITS-1:0] curr_bank_core_rsp_tid; + wire [`WORD_WIDTH-1:0] curr_bank_core_rsp_data; + wire [CORE_TAG_WIDTH-1:0] curr_bank_core_rsp_tag; + wire curr_bank_core_rsp_ready; - wire curr_bank_dram_fill_rsp_valid; - wire [`BANK_LINE_WIDTH-1:0] curr_bank_dram_fill_rsp_data; - wire [`LINE_ADDR_WIDTH-1:0] curr_bank_dram_fill_rsp_addr; - wire curr_bank_dram_fill_rsp_ready; + wire curr_bank_dram_fill_rsp_valid; + wire [`BANK_LINE_WIDTH-1:0] curr_bank_dram_fill_rsp_data; + wire [`LINE_ADDR_WIDTH-1:0] curr_bank_dram_fill_rsp_addr; + wire curr_bank_dram_fill_rsp_ready; - wire curr_bank_dram_fill_req_valid; - wire [`LINE_ADDR_WIDTH-1:0] curr_bank_dram_fill_req_addr; - wire curr_bank_dram_fill_req_ready; + wire curr_bank_dram_fill_req_valid; + wire [`LINE_ADDR_WIDTH-1:0] curr_bank_dram_fill_req_addr; + wire curr_bank_dram_fill_req_ready; - wire curr_bank_dram_wb_req_valid; - wire [BANK_LINE_SIZE-1:0] curr_bank_dram_wb_req_byteen; - wire [`LINE_ADDR_WIDTH-1:0] curr_bank_dram_wb_req_addr; - wire[`BANK_LINE_WIDTH-1:0] curr_bank_dram_wb_req_data; - wire curr_bank_dram_wb_req_ready; + wire curr_bank_dram_wb_req_valid; + wire [BANK_LINE_SIZE-1:0] curr_bank_dram_wb_req_byteen; + wire [`LINE_ADDR_WIDTH-1:0] curr_bank_dram_wb_req_addr; + wire[`BANK_LINE_WIDTH-1:0] curr_bank_dram_wb_req_data; + wire curr_bank_dram_wb_req_ready; - wire curr_bank_snp_req_valid; - wire [`LINE_ADDR_WIDTH-1:0] curr_bank_snp_req_addr; - wire curr_bank_snp_req_invalidate; - wire [SNP_REQ_TAG_WIDTH-1:0] curr_bank_snp_req_tag; - wire curr_bank_snp_req_ready; + wire curr_bank_snp_req_valid; + wire [`LINE_ADDR_WIDTH-1:0] curr_bank_snp_req_addr; + wire curr_bank_snp_req_invalidate; + wire [SNP_REQ_TAG_WIDTH-1:0] curr_bank_snp_req_tag; + wire curr_bank_snp_req_ready; - wire curr_bank_snp_rsp_valid; - wire [SNP_REQ_TAG_WIDTH-1:0] curr_bank_snp_rsp_tag; - wire curr_bank_snp_rsp_ready; + wire curr_bank_snp_rsp_valid; + wire [SNP_REQ_TAG_WIDTH-1:0] curr_bank_snp_rsp_tag; + wire curr_bank_snp_rsp_ready; - wire curr_bank_core_req_ready; + wire curr_bank_core_req_ready; - // Core Req - assign curr_bank_core_req_valid = (per_bank_valid[i] & {NUM_REQUESTS{core_req_ready}}); - assign curr_bank_core_req_addr = core_req_addr; - assign curr_bank_core_req_rw = core_req_rw; - assign curr_bank_core_req_byteen = core_req_byteen; - assign curr_bank_core_req_data = core_req_data; - assign curr_bank_core_req_tag = core_req_tag; - assign per_bank_core_req_ready[i] = curr_bank_core_req_ready; + // Core Req + assign curr_bank_core_req_valid = (per_bank_valid[i] & {NUM_REQUESTS{core_req_ready}}); + assign curr_bank_core_req_addr = core_req_addr; + assign curr_bank_core_req_rw = core_req_rw; + assign curr_bank_core_req_byteen = core_req_byteen; + assign curr_bank_core_req_data = core_req_data; + assign curr_bank_core_req_tag = core_req_tag; + assign per_bank_core_req_ready[i] = curr_bank_core_req_ready; - // Core WB - assign curr_bank_core_rsp_ready = per_bank_core_rsp_ready[i]; - assign per_bank_core_rsp_valid [i] = curr_bank_core_rsp_valid; - assign per_bank_core_rsp_tid [i] = curr_bank_core_rsp_tid; - assign per_bank_core_rsp_tag [i] = curr_bank_core_rsp_tag; - assign per_bank_core_rsp_data [i] = curr_bank_core_rsp_data; + // Core WB + assign curr_bank_core_rsp_ready = per_bank_core_rsp_ready[i]; + assign per_bank_core_rsp_valid [i] = curr_bank_core_rsp_valid; + assign per_bank_core_rsp_tid [i] = curr_bank_core_rsp_tid; + assign per_bank_core_rsp_tag [i] = curr_bank_core_rsp_tag; + assign per_bank_core_rsp_data [i] = curr_bank_core_rsp_data; - // Dram fill request - assign per_bank_dram_fill_req_valid[i] = curr_bank_dram_fill_req_valid; - if (NUM_BANKS == 1) begin - assign per_bank_dram_fill_req_addr[i] = curr_bank_dram_fill_req_addr; - end else begin - assign per_bank_dram_fill_req_addr[i] = `LINE_TO_DRAM_ADDR(curr_bank_dram_fill_req_addr, i); - end - assign curr_bank_dram_fill_req_ready = dram_fill_req_ready; + // Dram fill request + assign per_bank_dram_fill_req_valid[i] = curr_bank_dram_fill_req_valid; + if (NUM_BANKS == 1) begin + assign per_bank_dram_fill_req_addr[i] = curr_bank_dram_fill_req_addr; + end else begin + assign per_bank_dram_fill_req_addr[i] = `LINE_TO_DRAM_ADDR(curr_bank_dram_fill_req_addr, i); + end + assign curr_bank_dram_fill_req_ready = dram_fill_req_ready; + + // Dram fill response + if (NUM_BANKS == 1) begin + assign curr_bank_dram_fill_rsp_valid = dram_rsp_valid; + assign curr_bank_dram_fill_rsp_addr = dram_rsp_tag; + end else begin + assign curr_bank_dram_fill_rsp_valid = dram_rsp_valid && (`DRAM_ADDR_BANK(dram_rsp_tag) == i); + assign curr_bank_dram_fill_rsp_addr = `DRAM_TO_LINE_ADDR(dram_rsp_tag); + end + assign curr_bank_dram_fill_rsp_data = dram_rsp_data; + assign per_bank_dram_fill_rsp_ready[i] = curr_bank_dram_fill_rsp_ready; + + // Dram writeback request + assign per_bank_dram_wb_req_valid[i] = curr_bank_dram_wb_req_valid; + assign per_bank_dram_wb_req_byteen[i] = curr_bank_dram_wb_req_byteen; + if (NUM_BANKS == 1) begin + assign per_bank_dram_wb_req_addr[i] = curr_bank_dram_wb_req_addr; + end else begin + assign per_bank_dram_wb_req_addr[i] = `LINE_TO_DRAM_ADDR(curr_bank_dram_wb_req_addr, i); + end + assign per_bank_dram_wb_req_data[i] = curr_bank_dram_wb_req_data; + assign curr_bank_dram_wb_req_ready = per_bank_dram_wb_req_ready[i]; + + // Snoop request + if (NUM_BANKS == 1) begin + assign curr_bank_snp_req_valid = snp_req_valid_qual; + assign curr_bank_snp_req_addr = snp_req_addr_qual; + end else begin + assign curr_bank_snp_req_valid = snp_req_valid_qual && (`DRAM_ADDR_BANK(snp_req_addr_qual) == i); + assign curr_bank_snp_req_addr = `DRAM_TO_LINE_ADDR(snp_req_addr_qual); + end + assign curr_bank_snp_req_invalidate = snp_req_invalidate_qual; + assign curr_bank_snp_req_tag = snp_req_tag_qual; + assign per_bank_snp_req_ready[i] = curr_bank_snp_req_ready; + + // Snoop response + assign per_bank_snp_rsp_valid[i] = curr_bank_snp_rsp_valid; + assign per_bank_snp_rsp_tag[i] = curr_bank_snp_rsp_tag; + assign curr_bank_snp_rsp_ready = per_bank_snp_rsp_ready[i]; + + VX_bank #( + .BANK_ID (i), + .CACHE_ID (CACHE_ID), + .CACHE_SIZE (CACHE_SIZE), + .BANK_LINE_SIZE (BANK_LINE_SIZE), + .NUM_BANKS (NUM_BANKS), + .WORD_SIZE (WORD_SIZE), + .NUM_REQUESTS (NUM_REQUESTS), + .STAGE_1_CYCLES (STAGE_1_CYCLES), + .CREQ_SIZE (CREQ_SIZE), + .MRVQ_SIZE (MRVQ_SIZE), + .DFPQ_SIZE (DFPQ_SIZE), + .SNRQ_SIZE (SNRQ_SIZE), + .CWBQ_SIZE (CWBQ_SIZE), + .DWBQ_SIZE (DWBQ_SIZE), + .DFQQ_SIZE (DFQQ_SIZE), + .DRAM_ENABLE (DRAM_ENABLE), + .WRITE_ENABLE (WRITE_ENABLE), + .SNOOP_FORWARDING (SNOOP_FORWARDING), + .CORE_TAG_WIDTH (CORE_TAG_WIDTH), + .CORE_TAG_ID_BITS (CORE_TAG_ID_BITS), + .SNP_REQ_TAG_WIDTH (SNP_REQ_TAG_WIDTH) + ) bank ( + `SCOPE_SIGNALS_CACHE_BANK_BIND + + .clk (clk), + .reset (reset), + // Core request + .core_req_valid (curr_bank_core_req_valid), + .core_req_rw (curr_bank_core_req_rw), + .core_req_byteen (curr_bank_core_req_byteen), + .core_req_addr (curr_bank_core_req_addr), + .core_req_data (curr_bank_core_req_data), + .core_req_tag (curr_bank_core_req_tag), + .core_req_ready (curr_bank_core_req_ready), + + // Core response + .core_rsp_valid (curr_bank_core_rsp_valid), + .core_rsp_tid (curr_bank_core_rsp_tid), + .core_rsp_data (curr_bank_core_rsp_data), + .core_rsp_tag (curr_bank_core_rsp_tag), + .core_rsp_ready (curr_bank_core_rsp_ready), + + // Dram fill request + .dram_fill_req_valid (curr_bank_dram_fill_req_valid), + .dram_fill_req_addr (curr_bank_dram_fill_req_addr), + .dram_fill_req_ready (curr_bank_dram_fill_req_ready), // Dram fill response - if (NUM_BANKS == 1) begin - assign curr_bank_dram_fill_rsp_valid = dram_rsp_valid; - assign curr_bank_dram_fill_rsp_addr = dram_rsp_tag; - end else begin - assign curr_bank_dram_fill_rsp_valid = dram_rsp_valid && (`DRAM_ADDR_BANK(dram_rsp_tag) == i); - assign curr_bank_dram_fill_rsp_addr = `DRAM_TO_LINE_ADDR(dram_rsp_tag); - end - assign curr_bank_dram_fill_rsp_data = dram_rsp_data; - assign per_bank_dram_fill_rsp_ready[i] = curr_bank_dram_fill_rsp_ready; + .dram_fill_rsp_valid (curr_bank_dram_fill_rsp_valid), + .dram_fill_rsp_data (curr_bank_dram_fill_rsp_data), + .dram_fill_rsp_addr (curr_bank_dram_fill_rsp_addr), + .dram_fill_rsp_ready (curr_bank_dram_fill_rsp_ready), - // Dram writeback request - assign per_bank_dram_wb_req_valid[i] = curr_bank_dram_wb_req_valid; - assign per_bank_dram_wb_req_byteen[i] = curr_bank_dram_wb_req_byteen; - if (NUM_BANKS == 1) begin - assign per_bank_dram_wb_req_addr[i] = curr_bank_dram_wb_req_addr; - end else begin - assign per_bank_dram_wb_req_addr[i] = `LINE_TO_DRAM_ADDR(curr_bank_dram_wb_req_addr, i); - end - assign per_bank_dram_wb_req_data[i] = curr_bank_dram_wb_req_data; - assign curr_bank_dram_wb_req_ready = per_bank_dram_wb_req_ready[i]; + // Dram writeback request + .dram_wb_req_valid (curr_bank_dram_wb_req_valid), + .dram_wb_req_byteen (curr_bank_dram_wb_req_byteen), + .dram_wb_req_addr (curr_bank_dram_wb_req_addr), + .dram_wb_req_data (curr_bank_dram_wb_req_data), + .dram_wb_req_ready (curr_bank_dram_wb_req_ready), // Snoop request - if (NUM_BANKS == 1) begin - assign curr_bank_snp_req_valid = snp_req_valid_qual; - assign curr_bank_snp_req_addr = snp_req_addr_qual; - end else begin - assign curr_bank_snp_req_valid = snp_req_valid_qual && (`DRAM_ADDR_BANK(snp_req_addr_qual) == i); - assign curr_bank_snp_req_addr = `DRAM_TO_LINE_ADDR(snp_req_addr_qual); - end - assign curr_bank_snp_req_invalidate = snp_req_invalidate_qual; - assign curr_bank_snp_req_tag = snp_req_tag_qual; - assign per_bank_snp_req_ready[i] = curr_bank_snp_req_ready; + .snp_req_valid (curr_bank_snp_req_valid), + .snp_req_addr (curr_bank_snp_req_addr), + .snp_req_invalidate (curr_bank_snp_req_invalidate), + .snp_req_tag (curr_bank_snp_req_tag), + .snp_req_ready (curr_bank_snp_req_ready), - // Snoop response - assign per_bank_snp_rsp_valid[i] = curr_bank_snp_rsp_valid; - assign per_bank_snp_rsp_tag[i] = curr_bank_snp_rsp_tag; - assign curr_bank_snp_rsp_ready = per_bank_snp_rsp_ready[i]; - - VX_bank #( - .BANK_ID (i), - .CACHE_ID (CACHE_ID), - .CACHE_SIZE (CACHE_SIZE), - .BANK_LINE_SIZE (BANK_LINE_SIZE), - .NUM_BANKS (NUM_BANKS), - .WORD_SIZE (WORD_SIZE), - .NUM_REQUESTS (NUM_REQUESTS), - .STAGE_1_CYCLES (STAGE_1_CYCLES), - .CREQ_SIZE (CREQ_SIZE), - .MRVQ_SIZE (MRVQ_SIZE), - .DFPQ_SIZE (DFPQ_SIZE), - .SNRQ_SIZE (SNRQ_SIZE), - .CWBQ_SIZE (CWBQ_SIZE), - .DWBQ_SIZE (DWBQ_SIZE), - .DFQQ_SIZE (DFQQ_SIZE), - .DRAM_ENABLE (DRAM_ENABLE), - .WRITE_ENABLE (WRITE_ENABLE), - .SNOOP_FORWARDING (SNOOP_FORWARDING), - .CORE_TAG_WIDTH (CORE_TAG_WIDTH), - .CORE_TAG_ID_BITS (CORE_TAG_ID_BITS), - .SNP_REQ_TAG_WIDTH (SNP_REQ_TAG_WIDTH) - ) bank ( - `SCOPE_SIGNALS_CACHE_BANK_BIND - - .clk (clk), - .reset (reset), - // Core request - .core_req_valid (curr_bank_core_req_valid), - .core_req_rw (curr_bank_core_req_rw), - .core_req_byteen (curr_bank_core_req_byteen), - .core_req_addr (curr_bank_core_req_addr), - .core_req_data (curr_bank_core_req_data), - .core_req_tag (curr_bank_core_req_tag), - .core_req_ready (curr_bank_core_req_ready), - - // Core response - .core_rsp_valid (curr_bank_core_rsp_valid), - .core_rsp_tid (curr_bank_core_rsp_tid), - .core_rsp_data (curr_bank_core_rsp_data), - .core_rsp_tag (curr_bank_core_rsp_tag), - .core_rsp_ready (curr_bank_core_rsp_ready), - - // Dram fill request - .dram_fill_req_valid (curr_bank_dram_fill_req_valid), - .dram_fill_req_addr (curr_bank_dram_fill_req_addr), - .dram_fill_req_ready (curr_bank_dram_fill_req_ready), - - // Dram fill response - .dram_fill_rsp_valid (curr_bank_dram_fill_rsp_valid), - .dram_fill_rsp_data (curr_bank_dram_fill_rsp_data), - .dram_fill_rsp_addr (curr_bank_dram_fill_rsp_addr), - .dram_fill_rsp_ready (curr_bank_dram_fill_rsp_ready), - - // Dram writeback request - .dram_wb_req_valid (curr_bank_dram_wb_req_valid), - .dram_wb_req_byteen (curr_bank_dram_wb_req_byteen), - .dram_wb_req_addr (curr_bank_dram_wb_req_addr), - .dram_wb_req_data (curr_bank_dram_wb_req_data), - .dram_wb_req_ready (curr_bank_dram_wb_req_ready), - - // Snoop request - .snp_req_valid (curr_bank_snp_req_valid), - .snp_req_addr (curr_bank_snp_req_addr), - .snp_req_invalidate (curr_bank_snp_req_invalidate), - .snp_req_tag (curr_bank_snp_req_tag), - .snp_req_ready (curr_bank_snp_req_ready), - - // Snoop response - .snp_rsp_valid (curr_bank_snp_rsp_valid), - .snp_rsp_tag (curr_bank_snp_rsp_tag), - .snp_rsp_ready (curr_bank_snp_rsp_ready) - ); - end - endgenerate + // Snoop response + .snp_rsp_valid (curr_bank_snp_rsp_valid), + .snp_rsp_tag (curr_bank_snp_rsp_tag), + .snp_rsp_ready (curr_bank_snp_rsp_ready) + ); + end VX_cache_dram_req_arb #( .BANK_LINE_SIZE (BANK_LINE_SIZE), diff --git a/hw/rtl/cache/VX_cache_miss_resrv.v b/hw/rtl/cache/VX_cache_miss_resrv.v index c851629c..b1f7a7e5 100644 --- a/hw/rtl/cache/VX_cache_miss_resrv.v +++ b/hw/rtl/cache/VX_cache_miss_resrv.v @@ -78,13 +78,11 @@ module VX_cache_miss_resrv #( reg [MRVQ_SIZE-1:0] make_ready_push; reg [MRVQ_SIZE-1:0] valid_address_match; - genvar i; - generate - for (i = 0; i < MRVQ_SIZE; i++) begin - assign valid_address_match[i] = valid_table[i] ? (addr_table[i] == fill_addr_st1) : 0; - assign make_ready[i] = is_fill_st1 && valid_address_match[i]; - end - endgenerate + genvar i; + for (i = 0; i < MRVQ_SIZE; i++) begin + assign valid_address_match[i] = valid_table[i] ? (addr_table[i] == fill_addr_st1) : 0; + assign make_ready[i] = is_fill_st1 && valid_address_match[i]; + end assign pending_hazard = |(valid_address_match); diff --git a/hw/rtl/interfaces/VX_alu_req_if.v b/hw/rtl/interfaces/VX_alu_req_if.v index ce90f96f..999e0420 100644 --- a/hw/rtl/interfaces/VX_alu_req_if.v +++ b/hw/rtl/interfaces/VX_alu_req_if.v @@ -11,14 +11,14 @@ interface VX_alu_req_if (); wire [`ALU_BITS-1:0] alu_op; + wire [`WB_BITS-1:0] wb; + wire [`NR_BITS-1:0] rd; + wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; wire [31:0] offset; - wire [31:0] next_PC; - - wire [`NR_BITS-1:0] rd; - wire [`WB_BITS-1:0] wb; + wire [31:0] next_PC; wire ready; diff --git a/hw/rtl/interfaces/VX_execute_if.v b/hw/rtl/interfaces/VX_execute_if.v deleted file mode 100644 index 4f698c76..00000000 --- a/hw/rtl/interfaces/VX_execute_if.v +++ /dev/null @@ -1,32 +0,0 @@ -`ifndef VX_EXECUTE_IF -`define VX_EXECUTE_IF - -`include "VX_define.vh" - -interface VX_execute_if (); - - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; - wire [`EX_BITS-1:0] ex_type; - wire [`OP_BITS-1:0] instr_op; - - wire [`NR_BITS-1:0] rd; - wire [`NR_BITS-1:0] rs1; - wire [`NR_BITS-1:0] rs2; - wire [31:0] imm; - wire rs1_is_PC; - wire rs2_is_imm; - wire [31:0] next_PC; - - wire [`WB_BITS-1:0] wb; - - wire alu_ready; - wire mul_ready; - wire lsu_ready; - wire csr_ready; - wire gpu_ready; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_gpr_data_if.v b/hw/rtl/interfaces/VX_gpr_data_if.v new file mode 100644 index 00000000..fb58e6f7 --- /dev/null +++ b/hw/rtl/interfaces/VX_gpr_data_if.v @@ -0,0 +1,13 @@ +`ifndef VX_GPR_DATA_IF +`define VX_GPR_DATA_IF + +`include "VX_define.vh" + +interface VX_gpr_data_if (); + + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_ifetch_req_if.v b/hw/rtl/interfaces/VX_ifetch_req_if.v index ac95eaac..82b31b6c 100644 --- a/hw/rtl/interfaces/VX_ifetch_req_if.v +++ b/hw/rtl/interfaces/VX_ifetch_req_if.v @@ -5,9 +5,9 @@ interface VX_ifetch_req_if (); - wire [`NUM_THREADS-1:0] valid; - wire [31:0] curr_PC; + wire [`NUM_THREADS-1:0] valid; wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_ifetch_rsp_if.v b/hw/rtl/interfaces/VX_ifetch_rsp_if.v index c8e5e2d7..0bc482c2 100644 --- a/hw/rtl/interfaces/VX_ifetch_rsp_if.v +++ b/hw/rtl/interfaces/VX_ifetch_rsp_if.v @@ -5,9 +5,9 @@ interface VX_ifetch_rsp_if (); - wire [`NUM_THREADS-1:0] valid; - wire [31:0] curr_PC; + wire [`NUM_THREADS-1:0] valid; wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; wire [31:0] instr; wire ready; diff --git a/hw/rtl/interfaces/VX_lsu_req_if.v b/hw/rtl/interfaces/VX_lsu_req_if.v index c333961d..ce673140 100644 --- a/hw/rtl/interfaces/VX_lsu_req_if.v +++ b/hw/rtl/interfaces/VX_lsu_req_if.v @@ -6,15 +6,19 @@ interface VX_lsu_req_if (); wire [`NUM_THREADS-1:0] valid; - wire [31:0] curr_PC; wire [`NW_BITS-1:0] warp_num; - wire [`NUM_THREADS-1:0][31:0] store_data; - wire [`NUM_THREADS-1:0][31:0] base_addr; - wire [31:0] offset; + wire [31:0] curr_PC; + wire rw; wire [`BYTEEN_BITS-1:0] byteen; - wire [`NR_BITS-1:0] rd; + wire [`WB_BITS-1:0] wb; + wire [`NR_BITS-1:0] rd; + + wire [`NUM_THREADS-1:0][31:0] store_data; + wire [`NUM_THREADS-1:0][31:0] base_addr; + wire [31:0] offset; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_mul_req_if.v b/hw/rtl/interfaces/VX_mul_req_if.v index 26d175fb..01c0a621 100644 --- a/hw/rtl/interfaces/VX_mul_req_if.v +++ b/hw/rtl/interfaces/VX_mul_req_if.v @@ -5,19 +5,19 @@ interface VX_mul_req_if (); - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + + wire [`MUL_BITS-1:0] mul_op; + + wire [`WB_BITS-1:0] wb; + wire [`NR_BITS-1:0] rd; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; - - wire [`MUL_BITS-1:0] mul_op; - - wire [`NR_BITS-1:0] rd; - wire [`WB_BITS-1:0] wb; - - wire ready; + + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index ceba5506..e363c564 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -6,9 +6,9 @@ interface VX_wb_if (); wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [`NUM_THREADS-1:0][31:0] data; + wire [`NW_BITS-1:0] warp_num; wire [`NR_BITS-1:0] rd; + wire [`NUM_THREADS-1:0][31:0] data; wire ready; endinterface diff --git a/hw/rtl/libs/VX_generic_register.v b/hw/rtl/libs/VX_generic_register.v index b0328372..d3c76dff 100644 --- a/hw/rtl/libs/VX_generic_register.v +++ b/hw/rtl/libs/VX_generic_register.v @@ -20,12 +20,10 @@ module VX_generic_register #( reg [(N-1):0] value; always @(posedge clk) begin - if (reset) begin + if (reset || flush) begin value <= N'(0); end else if (~stall) begin value <= in; - end else if (flush) begin - value <= N'(0); end end diff --git a/hw/rtl/libs/VX_generic_stack.v b/hw/rtl/libs/VX_generic_stack.v index fdebbacf..d43b7816 100644 --- a/hw/rtl/libs/VX_generic_stack.v +++ b/hw/rtl/libs/VX_generic_stack.v @@ -1,7 +1,7 @@ module VX_generic_stack #( - parameter WIDTH = 40, - parameter DEPTH = 2 + parameter WIDTH = 1, + parameter DEPTH = 1 ) ( input wire clk, input wire reset, diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index a3f119a4..c755d5d2 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -1,4 +1,4 @@ -SINGLECORE += -DNUM_CLUSTERS=1 -DNUM_CORES=1 +SINGLECORE += -DNUM_CLUSTERS=1 -DNUM_CORES=1 #MULTICORE += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 #MULTICORE += -DNUM_CLUSTERS=1 -DNUM_CORES=4 -DL2_ENABLE=1 diff --git a/hw/simulate/ram.h b/hw/simulate/ram.h index 53df7e0f..0ddd3e47 100644 --- a/hw/simulate/ram.h +++ b/hw/simulate/ram.h @@ -36,7 +36,7 @@ public: void clear() { for (uint32_t i = 0; i < (1 << 12); i++) { if (mem_[i]) { - delete mem_[i]; + delete [] mem_[i]; mem_[i] = NULL; } } diff --git a/runtime/tests/simple/vx_simple.dump b/runtime/tests/simple/vx_simple.dump index 9b2c4b73..5175c11c 100644 --- a/runtime/tests/simple/vx_simple.dump +++ b/runtime/tests/simple/vx_simple.dump @@ -12,17 +12,17 @@ Disassembly of section .init: 80000010: 684000ef jal ra,80000694 80000014: 00100513 li a0,1 80000018: 0005006b 0x5006b -8000001c: 0d818513 addi a0,gp,216 # 800048e0 <__malloc_max_total_mem> -80000020: 19018613 addi a2,gp,400 # 80004998 <__BSS_END__> +8000001c: cc418513 addi a0,gp,-828 # 800014cc +80000020: d2818613 addi a2,gp,-728 # 80001530 <__BSS_END__> 80000024: 40a60633 sub a2,a2,a0 80000028: 00000593 li a1,0 -8000002c: 381000ef jal ra,80000bac +8000002c: 289000ef jal ra,80000ab4 80000030: 00001517 auipc a0,0x1 -80000034: a8450513 addi a0,a0,-1404 # 80000ab4 <__libc_fini_array> -80000038: 239000ef jal ra,80000a70 -8000003c: 2d5000ef jal ra,80000b10 <__libc_init_array> +80000034: 98c50513 addi a0,a0,-1652 # 800009bc <__libc_fini_array> +80000038: 141000ef jal ra,80000978 +8000003c: 1dd000ef jal ra,80000a18 <__libc_init_array> 80000040: 008000ef jal ra,80000048
-80000044: 2410006f j 80000a84 +80000044: 1490006f j 8000098c Disassembly of section .text: @@ -38,8 +38,8 @@ Disassembly of section .text: 80000068: 0b512a23 sw s5,180(sp) 8000006c: 0b612823 sw s6,176(sp) 80000070: 66c000ef jal ra,800006dc -80000074: 80004537 lui a0,0x80004 -80000078: be850513 addi a0,a0,-1048 # 80003be8 <__BSS_END__+0xfffff250> +80000074: 80001537 lui a0,0x80001 +80000078: d4850513 addi a0,a0,-696 # 80000d48 <__global_pointer$+0xfffff540> 8000007c: 6d0000ef jal ra,8000074c 80000080: 02010493 addi s1,sp,32 80000084: 00048713 mv a4,s1 @@ -51,11 +51,11 @@ Disassembly of section .text: 8000009c: fed79ae3 bne a5,a3,80000090 800000a0: 00000413 li s0,0 800000a4: 00100713 li a4,1 -800000a8: 800049b7 lui s3,0x80004 +800000a8: 800019b7 lui s3,0x80001 800000ac: 02400913 li s2,36 800000b0: 0004a783 lw a5,0(s1) 800000b4: 00040593 mv a1,s0 -800000b8: c1498513 addi a0,s3,-1004 # 80003c14 <__BSS_END__+0xfffff27c> +800000b8: d7498513 addi a0,s3,-652 # 80000d74 <__global_pointer$+0xfffff56c> 800000bc: 00878663 beq a5,s0,800000c8 800000c0: 76c000ef jal ra,8000082c 800000c4: 00000713 li a4,0 @@ -63,72 +63,72 @@ Disassembly of section .text: 800000cc: 00448493 addi s1,s1,4 800000d0: ff2410e3 bne s0,s2,800000b0 800000d4: 16071e63 bnez a4,80000250 -800000d8: 80004537 lui a0,0x80004 -800000dc: c4850513 addi a0,a0,-952 # 80003c48 <__BSS_END__+0xfffff2b0> +800000d8: 80001537 lui a0,0x80001 +800000dc: da850513 addi a0,a0,-600 # 80000da8 <__global_pointer$+0xfffff5a0> 800000e0: 66c000ef jal ra,8000074c 800000e4: 264000ef jal ra,80000348 -800000e8: 80004537 lui a0,0x80004 -800000ec: c5850513 addi a0,a0,-936 # 80003c58 <__BSS_END__+0xfffff2c0> +800000e8: 80001537 lui a0,0x80001 +800000ec: db850513 addi a0,a0,-584 # 80000db8 <__global_pointer$+0xfffff5b0> 800000f0: 65c000ef jal ra,8000074c 800000f4: 00400513 li a0,4 800000f8: 5e4000ef jal ra,800006dc 800000fc: 2e4000ef jal ra,800003e0 80000100: 00100513 li a0,1 80000104: 5d8000ef jal ra,800006dc -80000108: 80004537 lui a0,0x80004 -8000010c: c6c50513 addi a0,a0,-916 # 80003c6c <__BSS_END__+0xfffff2d4> +80000108: 80001537 lui a0,0x80001 +8000010c: dcc50513 addi a0,a0,-564 # 80000dcc <__global_pointer$+0xfffff5c4> 80000110: 63c000ef jal ra,8000074c 80000114: 3a8000ef jal ra,800004bc -80000118: 80004537 lui a0,0x80004 -8000011c: c7c50513 addi a0,a0,-900 # 80003c7c <__BSS_END__+0xfffff2e4> +80000118: 80001537 lui a0,0x80001 +8000011c: ddc50513 addi a0,a0,-548 # 80000ddc <__global_pointer$+0xfffff5d4> 80000120: ffff0437 lui s0,0xffff0 80000124: 628000ef jal ra,8000074c 80000128: 00000493 li s1,0 -8000012c: 80004b37 lui s6,0x80004 -80000130: 80004ab7 lui s5,0x80004 -80000134: 80004a37 lui s4,0x80004 -80000138: 800049b7 lui s3,0x80004 -8000013c: 01440913 addi s2,s0,20 # ffff0014 <__BSS_END__+0x7ffeb67c> +8000012c: 80001b37 lui s6,0x80001 +80000130: 80001ab7 lui s5,0x80001 +80000134: 80001a37 lui s4,0x80001 +80000138: 800019b7 lui s3,0x80001 +8000013c: 01440913 addi s2,s0,20 # ffff0014 <__global_pointer$+0x7ffee80c> 80000140: 00942023 sw s1,0(s0) 80000144: 00040593 mv a1,s0 -80000148: c90b0513 addi a0,s6,-880 # 80003c90 <__BSS_END__+0xfffff2f8> +80000148: df0b0513 addi a0,s6,-528 # 80000df0 <__global_pointer$+0xfffff5e8> 8000014c: 6e0000ef jal ra,8000082c 80000150: 00048593 mv a1,s1 -80000154: c98a8513 addi a0,s5,-872 # 80003c98 <__BSS_END__+0xfffff300> +80000154: df8a8513 addi a0,s5,-520 # 80000df8 <__global_pointer$+0xfffff5f0> 80000158: 6d4000ef jal ra,8000082c 8000015c: 00048593 mv a1,s1 -80000160: caca0513 addi a0,s4,-852 # 80003cac <__BSS_END__+0xfffff314> +80000160: e0ca0513 addi a0,s4,-500 # 80000e0c <__global_pointer$+0xfffff604> 80000164: 6c8000ef jal ra,8000082c -80000168: cbc98513 addi a0,s3,-836 # 80003cbc <__BSS_END__+0xfffff324> +80000168: e1c98513 addi a0,s3,-484 # 80000e1c <__global_pointer$+0xfffff614> 8000016c: 00440413 addi s0,s0,4 80000170: 5dc000ef jal ra,8000074c 80000174: 00148493 addi s1,s1,1 80000178: fd2414e3 bne s0,s2,80000140 -8000017c: 80004537 lui a0,0x80004 -80000180: cd450513 addi a0,a0,-812 # 80003cd4 <__BSS_END__+0xfffff33c> +8000017c: 80001537 lui a0,0x80001 +80000180: e3450513 addi a0,a0,-460 # 80000e34 <__global_pointer$+0xfffff62c> 80000184: 5c8000ef jal ra,8000074c -80000188: 800047b7 lui a5,0x80004 -8000018c: 00878793 addi a5,a5,8 # 80004008 <__BSS_END__+0xfffff670> +80000188: 800017b7 lui a5,0x80001 +8000018c: 00878793 addi a5,a5,8 # 80001008 <__global_pointer$+0xfffff800> 80000190: 80000637 lui a2,0x80000 80000194: 00400713 li a4,4 80000198: 04078813 addi a6,a5,64 8000019c: 00c10693 addi a3,sp,12 -800001a0: 27860613 addi a2,a2,632 # 80000278 <__BSS_END__+0xffffb8e0> +800001a0: 27860613 addi a2,a2,632 # 80000278 <__global_pointer$+0xffffea70> 800001a4: 00400593 li a1,4 800001a8: 00400513 li a0,4 -800001ac: 0e818913 addi s2,gp,232 # 800048f0 +800001ac: cc818913 addi s2,gp,-824 # 800014d0 800001b0: 00f12623 sw a5,12(sp) 800001b4: 01012823 sw a6,16(sp) 800001b8: 00e12c23 sw a4,24(sp) 800001bc: 00e12e23 sw a4,28(sp) 800001c0: 01212a23 sw s2,20(sp) -800001c4: 788000ef jal ra,8000094c -800001c8: 80004537 lui a0,0x80004 -800001cc: cf450513 addi a0,a0,-780 # 80003cf4 <__BSS_END__+0xfffff35c> +800001c4: 744000ef jal ra,80000908 +800001c8: 80001537 lui a0,0x80001 +800001cc: e5450513 addi a0,a0,-428 # 80000e54 <__global_pointer$+0xfffff64c> 800001d0: 57c000ef jal ra,8000074c 800001d4: 00000493 li s1,0 -800001d8: 80004a37 lui s4,0x80004 -800001dc: 80004ab7 lui s5,0x80004 +800001d8: 80001a37 lui s4,0x80001 +800001dc: 80001ab7 lui s5,0x80001 800001e0: 00400993 li s3,4 800001e4: 00000413 li s0,0 800001e8: 01812783 lw a5,24(sp) @@ -139,11 +139,11 @@ Disassembly of section .text: 800001fc: 0007a503 lw a0,0(a5) 80000200: 00140413 addi s0,s0,1 80000204: 588000ef jal ra,8000078c -80000208: c94a0513 addi a0,s4,-876 # 80003c94 <__BSS_END__+0xfffff2fc> +80000208: df4a0513 addi a0,s4,-524 # 80000df4 <__global_pointer$+0xfffff5ec> 8000020c: 540000ef jal ra,8000074c 80000210: fd341ce3 bne s0,s3,800001e8 80000214: 00148493 addi s1,s1,1 -80000218: c10a8513 addi a0,s5,-1008 # 80003c10 <__BSS_END__+0xfffff278> +80000218: d70a8513 addi a0,s5,-656 # 80000d70 <__global_pointer$+0xfffff568> 8000021c: 530000ef jal ra,8000074c 80000220: fc8492e3 bne s1,s0,800001e4 80000224: 0cc12083 lw ra,204(sp) @@ -157,8 +157,8 @@ Disassembly of section .text: 80000244: 00000513 li a0,0 80000248: 0d010113 addi sp,sp,208 8000024c: 00008067 ret -80000250: 80004537 lui a0,0x80004 -80000254: c2050513 addi a0,a0,-992 # 80003c20 <__BSS_END__+0xfffff288> +80000250: 80001537 lui a0,0x80001 +80000254: d8050513 addi a0,a0,-640 # 80000d80 <__global_pointer$+0xfffff578> 80000258: 4f4000ef jal ra,8000074c 8000025c: e7dff06f j 800000d8 @@ -166,8 +166,8 @@ Disassembly of section .text: 80000260: 00000793 li a5,0 80000264: 00078863 beqz a5,80000274 80000268: 80001537 lui a0,0x80001 -8000026c: ab450513 addi a0,a0,-1356 # 80000ab4 <__BSS_END__+0xffffc11c> -80000270: 0010006f j 80000a70 +8000026c: 9bc50513 addi a0,a0,-1604 # 800009bc <__global_pointer$+0xfffff1b4> +80000270: 7080006f j 80000978 80000274: 00008067 ret 80000278 : @@ -204,7 +204,7 @@ Disassembly of section .text: 800002e8: 00112623 sw ra,12(sp) 800002ec: 410000ef jal ra,800006fc 800002f0: 00251713 slli a4,a0,0x2 -800002f4: 15018793 addi a5,gp,336 # 80004958 +800002f4: d0818793 addi a5,gp,-760 # 80001510 800002f8: 00e787b3 add a5,a5,a4 800002fc: 00a7a023 sw a0,0(a5) 80000300: 00051863 bnez a0,80000310 @@ -222,16 +222,16 @@ Disassembly of section .text: 80000328: 3e4000ef jal ra,8000070c 8000032c: 00c12083 lw ra,12(sp) 80000330: 00251713 slli a4,a0,0x2 -80000334: 88018793 addi a5,gp,-1920 # 80004088 +80000334: 88018793 addi a5,gp,-1920 # 80001088 80000338: 00e787b3 add a5,a5,a4 8000033c: 00a7a023 sw a0,0(a5) 80000340: 01010113 addi sp,sp,16 80000344: 00008067 ret 80000348 : -80000348: 80004537 lui a0,0x80004 +80000348: 80001537 lui a0,0x80001 8000034c: ff010113 addi sp,sp,-16 -80000350: d3050513 addi a0,a0,-720 # 80003d30 <__BSS_END__+0xfffff398> +80000350: e9050513 addi a0,a0,-368 # 80000e90 <__global_pointer$+0xfffff688> 80000354: 00112623 sw ra,12(sp) 80000358: 00812423 sw s0,8(sp) 8000035c: 00912223 sw s1,4(sp) @@ -239,7 +239,7 @@ Disassembly of section .text: 80000364: 00400513 li a0,4 80000368: 374000ef jal ra,800006dc 8000036c: 3a0000ef jal ra,8000070c -80000370: 88018413 addi s0,gp,-1920 # 80004088 +80000370: 88018413 addi s0,gp,-1920 # 80001088 80000374: 00251713 slli a4,a0,0x2 80000378: 00050793 mv a5,a0 8000037c: 00e40733 add a4,s0,a4 @@ -247,23 +247,23 @@ Disassembly of section .text: 80000384: 00f72023 sw a5,0(a4) 80000388: 354000ef jal ra,800006dc 8000038c: 00042503 lw a0,0(s0) -80000390: 800044b7 lui s1,0x80004 +80000390: 800014b7 lui s1,0x80001 80000394: 3f8000ef jal ra,8000078c -80000398: c1048513 addi a0,s1,-1008 # 80003c10 <__BSS_END__+0xfffff278> +80000398: d7048513 addi a0,s1,-656 # 80000d70 <__global_pointer$+0xfffff568> 8000039c: 3b0000ef jal ra,8000074c 800003a0: 00442503 lw a0,4(s0) 800003a4: 3e8000ef jal ra,8000078c -800003a8: c1048513 addi a0,s1,-1008 +800003a8: d7048513 addi a0,s1,-656 800003ac: 3a0000ef jal ra,8000074c 800003b0: 00842503 lw a0,8(s0) 800003b4: 3d8000ef jal ra,8000078c -800003b8: c1048513 addi a0,s1,-1008 +800003b8: d7048513 addi a0,s1,-656 800003bc: 390000ef jal ra,8000074c 800003c0: 00c42503 lw a0,12(s0) 800003c4: 3c8000ef jal ra,8000078c 800003c8: 00812403 lw s0,8(sp) 800003cc: 00c12083 lw ra,12(sp) -800003d0: c1048513 addi a0,s1,-1008 +800003d0: d7048513 addi a0,s1,-656 800003d4: 00412483 lw s1,4(sp) 800003d8: 01010113 addi sp,sp,16 800003dc: 3700006f j 8000074c @@ -282,7 +282,7 @@ Disassembly of section .text: 80000408: 00343513 sltiu a0,s0,3 8000040c: 2e0000ef jal ra,800006ec 80000410: 00200793 li a5,2 -80000414: 16018493 addi s1,gp,352 # 80004968 +80000414: d1818493 addi s1,gp,-744 # 80001520 80000418: 06f40863 beq s0,a5,80000488 8000041c: 00241413 slli s0,s0,0x2 80000420: 00848433 add s0,s1,s0 @@ -291,21 +291,21 @@ Disassembly of section .text: 8000042c: 2c8000ef jal ra,800006f4 80000430: 2c4000ef jal ra,800006f4 80000434: 0004a503 lw a0,0(s1) -80000438: 80004437 lui s0,0x80004 +80000438: 80001437 lui s0,0x80001 8000043c: 350000ef jal ra,8000078c -80000440: c1040513 addi a0,s0,-1008 # 80003c10 <__BSS_END__+0xfffff278> +80000440: d7040513 addi a0,s0,-656 # 80000d70 <__global_pointer$+0xfffff568> 80000444: 308000ef jal ra,8000074c 80000448: 0044a503 lw a0,4(s1) 8000044c: 340000ef jal ra,8000078c -80000450: c1040513 addi a0,s0,-1008 +80000450: d7040513 addi a0,s0,-656 80000454: 2f8000ef jal ra,8000074c 80000458: 0084a503 lw a0,8(s1) 8000045c: 330000ef jal ra,8000078c -80000460: c1040513 addi a0,s0,-1008 +80000460: d7040513 addi a0,s0,-656 80000464: 2e8000ef jal ra,8000074c 80000468: 00c4a503 lw a0,12(s1) 8000046c: 320000ef jal ra,8000078c -80000470: c1040513 addi a0,s0,-1008 +80000470: d7040513 addi a0,s0,-656 80000474: 00812403 lw s0,8(sp) 80000478: 00c12083 lw ra,12(sp) 8000047c: 00412483 lw s1,4(sp) @@ -316,7 +316,7 @@ Disassembly of section .text: 80000490: f9dff06f j 8000042c 80000494: 00144513 xori a0,s0,1 80000498: 254000ef jal ra,800006ec -8000049c: 16018493 addi s1,gp,352 # 80004968 +8000049c: d1818493 addi s1,gp,-744 # 80001520 800004a0: 00041863 bnez s0,800004b0 800004a4: 00a00793 li a5,10 800004a8: 00f4a023 sw a5,0(s1) @@ -328,36 +328,36 @@ Disassembly of section .text: 800004bc : 800004bc: 800005b7 lui a1,0x80000 800004c0: ff010113 addi sp,sp,-16 -800004c4: 2e458593 addi a1,a1,740 # 800002e4 <__BSS_END__+0xffffb94c> +800004c4: 2e458593 addi a1,a1,740 # 800002e4 <__global_pointer$+0xffffeadc> 800004c8: 00400513 li a0,4 800004cc: 00112623 sw ra,12(sp) 800004d0: 00812423 sw s0,8(sp) 800004d4: 00912223 sw s1,4(sp) 800004d8: 1fc000ef jal ra,800006d4 800004dc: 220000ef jal ra,800006fc -800004e0: 15018413 addi s0,gp,336 # 80004958 +800004e0: d0818413 addi s0,gp,-760 # 80001510 800004e4: 00251793 slli a5,a0,0x2 800004e8: 00f407b3 add a5,s0,a5 800004ec: 00a7a023 sw a0,0(a5) 800004f0: 04051c63 bnez a0,80000548 800004f4: 00042503 lw a0,0(s0) -800004f8: 800044b7 lui s1,0x80004 +800004f8: 800014b7 lui s1,0x80001 800004fc: 290000ef jal ra,8000078c -80000500: c1048513 addi a0,s1,-1008 # 80003c10 <__BSS_END__+0xfffff278> +80000500: d7048513 addi a0,s1,-656 # 80000d70 <__global_pointer$+0xfffff568> 80000504: 248000ef jal ra,8000074c 80000508: 00442503 lw a0,4(s0) 8000050c: 280000ef jal ra,8000078c -80000510: c1048513 addi a0,s1,-1008 +80000510: d7048513 addi a0,s1,-656 80000514: 238000ef jal ra,8000074c 80000518: 00842503 lw a0,8(s0) 8000051c: 270000ef jal ra,8000078c -80000520: c1048513 addi a0,s1,-1008 +80000520: d7048513 addi a0,s1,-656 80000524: 228000ef jal ra,8000074c 80000528: 00c42503 lw a0,12(s0) 8000052c: 260000ef jal ra,8000078c 80000530: 00812403 lw s0,8(sp) 80000534: 00c12083 lw ra,12(sp) -80000538: c1048513 addi a0,s1,-1008 +80000538: d7048513 addi a0,s1,-656 8000053c: 00412483 lw s1,4(sp) 80000540: 01010113 addi sp,sp,16 80000544: 2080006f j 8000074c @@ -366,9 +366,9 @@ Disassembly of section .text: 80000550: fa5ff06f j 800004f4 80000554 : -80000554: 80004537 lui a0,0x80004 +80000554: 80001537 lui a0,0x80001 80000558: ff010113 addi sp,sp,-16 -8000055c: d3050513 addi a0,a0,-720 # 80003d30 <__BSS_END__+0xfffff398> +8000055c: e9050513 addi a0,a0,-368 # 80000e90 <__global_pointer$+0xfffff688> 80000560: 00112623 sw ra,12(sp) 80000564: 00812423 sw s0,8(sp) 80000568: 00912223 sw s1,4(sp) @@ -376,7 +376,7 @@ Disassembly of section .text: 80000570: 00400513 li a0,4 80000574: 168000ef jal ra,800006dc 80000578: 194000ef jal ra,8000070c -8000057c: 88018493 addi s1,gp,-1920 # 80004088 +8000057c: 88018493 addi s1,gp,-1920 # 80001088 80000580: 00251713 slli a4,a0,0x2 80000584: 00050793 mv a5,a0 80000588: 00e48733 add a4,s1,a4 @@ -384,36 +384,36 @@ Disassembly of section .text: 80000590: 00f72023 sw a5,0(a4) 80000594: 148000ef jal ra,800006dc 80000598: 0004a503 lw a0,0(s1) -8000059c: 80004437 lui s0,0x80004 +8000059c: 80001437 lui s0,0x80001 800005a0: 1ec000ef jal ra,8000078c -800005a4: c1040513 addi a0,s0,-1008 # 80003c10 <__BSS_END__+0xfffff278> +800005a4: d7040513 addi a0,s0,-656 # 80000d70 <__global_pointer$+0xfffff568> 800005a8: 1a4000ef jal ra,8000074c 800005ac: 0044a503 lw a0,4(s1) 800005b0: 1dc000ef jal ra,8000078c -800005b4: c1040513 addi a0,s0,-1008 +800005b4: d7040513 addi a0,s0,-656 800005b8: 194000ef jal ra,8000074c 800005bc: 0084a503 lw a0,8(s1) 800005c0: 1cc000ef jal ra,8000078c -800005c4: c1040513 addi a0,s0,-1008 +800005c4: d7040513 addi a0,s0,-656 800005c8: 184000ef jal ra,8000074c 800005cc: 00c4a503 lw a0,12(s1) -800005d0: 15018493 addi s1,gp,336 # 80004958 +800005d0: d0818493 addi s1,gp,-760 # 80001510 800005d4: 1b8000ef jal ra,8000078c -800005d8: c1040513 addi a0,s0,-1008 +800005d8: d7040513 addi a0,s0,-656 800005dc: 170000ef jal ra,8000074c -800005e0: 80004537 lui a0,0x80004 -800005e4: c5850513 addi a0,a0,-936 # 80003c58 <__BSS_END__+0xfffff2c0> +800005e0: 80001537 lui a0,0x80001 +800005e4: db850513 addi a0,a0,-584 # 80000db8 <__global_pointer$+0xfffff5b0> 800005e8: 164000ef jal ra,8000074c 800005ec: 00400513 li a0,4 800005f0: 0ec000ef jal ra,800006dc 800005f4: dedff0ef jal ra,800003e0 800005f8: 00100513 li a0,1 800005fc: 0e0000ef jal ra,800006dc -80000600: 80004537 lui a0,0x80004 -80000604: d4050513 addi a0,a0,-704 # 80003d40 <__BSS_END__+0xfffff3a8> +80000600: 80001537 lui a0,0x80001 +80000604: ea050513 addi a0,a0,-352 # 80000ea0 <__global_pointer$+0xfffff698> 80000608: 144000ef jal ra,8000074c 8000060c: 800005b7 lui a1,0x80000 -80000610: 2e458593 addi a1,a1,740 # 800002e4 <__BSS_END__+0xffffb94c> +80000610: 2e458593 addi a1,a1,740 # 800002e4 <__global_pointer$+0xffffeadc> 80000614: 00400513 li a0,4 80000618: 0bc000ef jal ra,800006d4 8000061c: 0e0000ef jal ra,800006fc @@ -423,19 +423,19 @@ Disassembly of section .text: 8000062c: 04051a63 bnez a0,80000680 80000630: 0004a503 lw a0,0(s1) 80000634: 158000ef jal ra,8000078c -80000638: c1040513 addi a0,s0,-1008 +80000638: d7040513 addi a0,s0,-656 8000063c: 110000ef jal ra,8000074c 80000640: 0044a503 lw a0,4(s1) 80000644: 148000ef jal ra,8000078c -80000648: c1040513 addi a0,s0,-1008 +80000648: d7040513 addi a0,s0,-656 8000064c: 100000ef jal ra,8000074c 80000650: 0084a503 lw a0,8(s1) 80000654: 138000ef jal ra,8000078c -80000658: c1040513 addi a0,s0,-1008 +80000658: d7040513 addi a0,s0,-656 8000065c: 0f0000ef jal ra,8000074c 80000660: 00c4a503 lw a0,12(s1) 80000664: 128000ef jal ra,8000078c -80000668: c1040513 addi a0,s0,-1008 +80000668: d7040513 addi a0,s0,-656 8000066c: 00812403 lw s0,8(sp) 80000670: 00c12083 lw ra,12(sp) 80000674: 00412483 lw s1,4(sp) @@ -452,8 +452,8 @@ Disassembly of section .text: 80000694 : 80000694: 02502573 csrr a0,0x25 80000698: 0005006b 0x5006b -8000069c: 00004197 auipc gp,0x4 -800006a0: 16c18193 addi gp,gp,364 # 80004808 <__global_pointer$> +8000069c: 00001197 auipc gp,0x1 +800006a0: 16c18193 addi gp,gp,364 # 80001808 <__global_pointer$> 800006a4: f14025f3 csrr a1,mhartid 800006a8: 00a59593 slli a1,a1,0xa 800006ac: 02002673 csrr a2,0x20 @@ -548,7 +548,7 @@ Disassembly of section .text: 80000778: 00008067 ret 8000077c : -8000077c: 89018293 addi t0,gp,-1904 # 80004098 +8000077c: 89018293 addi t0,gp,-1904 # 80001098 80000780: 0002a283 lw t0,0(t0) 80000784: 00b2a023 sw a1,0(t0) 80000788: 00008067 ret @@ -562,10 +562,10 @@ Disassembly of section .text: 800007a0: 00f00793 li a5,15 800007a4: 00050493 mv s1,a0 800007a8: 04a7fc63 bgeu a5,a0,80000800 -800007ac: 80004937 lui s2,0x80004 +800007ac: 80001937 lui s2,0x80001 800007b0: 00000693 li a3,0 800007b4: 02000413 li s0,32 -800007b8: d8c90913 addi s2,s2,-628 # 80003d8c <__BSS_END__+0xfffff3f4> +800007b8: eec90913 addi s2,s2,-276 # 80000eec <__global_pointer$+0xfffff6e4> 800007bc: ffc40413 addi s0,s0,-4 800007c0: 0084d7b3 srl a5,s1,s0 800007c4: 00f7f793 andi a5,a5,15 @@ -583,9 +583,9 @@ Disassembly of section .text: 800007f4: 00012903 lw s2,0(sp) 800007f8: 01010113 addi sp,sp,16 800007fc: 00008067 ret -80000800: 800047b7 lui a5,0x80004 +80000800: 800017b7 lui a5,0x80001 80000804: 00251493 slli s1,a0,0x2 -80000808: d8c78793 addi a5,a5,-628 # 80003d8c <__BSS_END__+0xfffff3f4> +80000808: eec78793 addi a5,a5,-276 # 80000eec <__global_pointer$+0xfffff6e4> 8000080c: 00812403 lw s0,8(sp) 80000810: 009784b3 add s1,a5,s1 80000814: 0004a503 lw a0,0(s1) @@ -605,10 +605,10 @@ Disassembly of section .text: 80000844: f09ff0ef jal ra,8000074c 80000848: 00f00793 li a5,15 8000084c: 0687f063 bgeu a5,s0,800008ac -80000850: 80004937 lui s2,0x80004 +80000850: 80001937 lui s2,0x80001 80000854: 00000693 li a3,0 80000858: 02000493 li s1,32 -8000085c: d8c90913 addi s2,s2,-628 # 80003d8c <__BSS_END__+0xfffff3f4> +8000085c: eec90913 addi s2,s2,-276 # 80000eec <__global_pointer$+0xfffff6e4> 80000860: ffc48493 addi s1,s1,-4 80000864: 009457b3 srl a5,s0,s1 80000868: 00f7f793 andi a5,a5,15 @@ -624,12 +624,12 @@ Disassembly of section .text: 80000890: 00c12083 lw ra,12(sp) 80000894: 00412483 lw s1,4(sp) 80000898: 00012903 lw s2,0(sp) -8000089c: 80004537 lui a0,0x80004 -800008a0: c1050513 addi a0,a0,-1008 # 80003c10 <__BSS_END__+0xfffff278> +8000089c: 80001537 lui a0,0x80001 +800008a0: d7050513 addi a0,a0,-656 # 80000d70 <__global_pointer$+0xfffff568> 800008a4: 01010113 addi sp,sp,16 800008a8: ea5ff06f j 8000074c -800008ac: 800047b7 lui a5,0x80004 -800008b0: d8c78793 addi a5,a5,-628 # 80003d8c <__BSS_END__+0xfffff3f4> +800008ac: 800017b7 lui a5,0x80001 +800008b0: eec78793 addi a5,a5,-276 # 80000eec <__global_pointer$+0xfffff6e4> 800008b4: 00241413 slli s0,s0,0x2 800008b8: 00878433 add s0,a5,s0 800008bc: 00042503 lw a0,0(s0) @@ -637,4356 +637,656 @@ Disassembly of section .text: 800008c4: fc9ff06f j 8000088c 800008c8 : -800008c8: 1881a503 lw a0,392(gp) # 80004990 -800008cc: ff010113 addi sp,sp,-16 -800008d0: 00112623 sw ra,12(sp) -800008d4: e09ff0ef jal ra,800006dc -800008d8: 1741a503 lw a0,372(gp) # 8000497c -800008dc: 1781a783 lw a5,376(gp) # 80004980 -800008e0: 000780e7 jalr a5 -800008e4: e19ff0ef jal ra,800006fc -800008e8: 00c12083 lw ra,12(sp) -800008ec: 00153513 seqz a0,a0 -800008f0: 01010113 addi sp,sp,16 -800008f4: de9ff06f j 800006dc +800008c8: ff010113 addi sp,sp,-16 +800008cc: 00812423 sw s0,8(sp) +800008d0: cc41a783 lw a5,-828(gp) # 800014cc +800008d4: 00112623 sw ra,12(sp) +800008d8: 0087a503 lw a0,8(a5) +800008dc: e01ff0ef jal ra,800006dc +800008e0: cc41a783 lw a5,-828(gp) # 800014cc +800008e4: 0047a503 lw a0,4(a5) +800008e8: 0007a783 lw a5,0(a5) +800008ec: 000780e7 jalr a5 +800008f0: e0dff0ef jal ra,800006fc +800008f4: 00812403 lw s0,8(sp) +800008f8: 00c12083 lw ra,12(sp) +800008fc: 00153513 seqz a0,a0 +80000900: 01010113 addi sp,sp,16 +80000904: dd9ff06f j 800006dc -800008f8 : -800008f8: 17c1a503 lw a0,380(gp) # 80004984 -800008fc: ff010113 addi sp,sp,-16 -80000900: 00112623 sw ra,12(sp) -80000904: 00812423 sw s0,8(sp) -80000908: dd5ff0ef jal ra,800006dc -8000090c: e01ff0ef jal ra,8000070c -80000910: 00050413 mv s0,a0 -80000914: df1ff0ef jal ra,80000704 -80000918: 1841a583 lw a1,388(gp) # 8000498c -8000091c: 00050693 mv a3,a0 -80000920: 1801a503 lw a0,384(gp) # 80004988 -80000924: 1701a783 lw a5,368(gp) # 80004978 -80000928: 00040613 mv a2,s0 -8000092c: 00000713 li a4,0 -80000930: 000780e7 jalr a5 -80000934: dc9ff0ef jal ra,800006fc -80000938: 00812403 lw s0,8(sp) -8000093c: 00c12083 lw ra,12(sp) -80000940: 00153513 seqz a0,a0 -80000944: 01010113 addi sp,sp,16 -80000948: d95ff06f j 800006dc +80000908 : +80000908: fe010113 addi sp,sp,-32 +8000090c: 00410793 addi a5,sp,4 +80000910: 00812c23 sw s0,24(sp) +80000914: ccf1a223 sw a5,-828(gp) # 800014cc +80000918: 00112e23 sw ra,28(sp) +8000091c: 00c12223 sw a2,4(sp) +80000920: 00d12423 sw a3,8(sp) +80000924: 00b12623 sw a1,12(sp) +80000928: 00100793 li a5,1 +8000092c: 00a7dc63 bge a5,a0,80000944 +80000930: 800015b7 lui a1,0x80001 +80000934: 8c858593 addi a1,a1,-1848 # 800008c8 <__global_pointer$+0xfffff0c0> +80000938: d9dff0ef jal ra,800006d4 +8000093c: cc41a783 lw a5,-828(gp) # 800014cc +80000940: 0087a583 lw a1,8(a5) +80000944: 00058513 mv a0,a1 +80000948: d95ff0ef jal ra,800006dc +8000094c: cc41a783 lw a5,-828(gp) # 800014cc +80000950: 0047a503 lw a0,4(a5) +80000954: 0007a783 lw a5,0(a5) +80000958: 000780e7 jalr a5 +8000095c: da1ff0ef jal ra,800006fc +80000960: 00153513 seqz a0,a0 +80000964: d79ff0ef jal ra,800006dc +80000968: 01c12083 lw ra,28(sp) +8000096c: 01812403 lw s0,24(sp) +80000970: 02010113 addi sp,sp,32 +80000974: 00008067 ret -8000094c : -8000094c: ff010113 addi sp,sp,-16 -80000950: 00812423 sw s0,8(sp) -80000954: 00912223 sw s1,4(sp) -80000958: 01212023 sw s2,0(sp) -8000095c: 00112623 sw ra,12(sp) -80000960: 16c1ac23 sw a2,376(gp) # 80004980 -80000964: 16d1aa23 sw a3,372(gp) # 8000497c -80000968: 18b1a423 sw a1,392(gp) # 80004990 -8000096c: 00100793 li a5,1 -80000970: 00a7da63 bge a5,a0,80000984 -80000974: 800015b7 lui a1,0x80001 -80000978: 8c858593 addi a1,a1,-1848 # 800008c8 <__BSS_END__+0xffffbf30> -8000097c: d59ff0ef jal ra,800006d4 -80000980: 1881a583 lw a1,392(gp) # 80004990 -80000984: 00058513 mv a0,a1 -80000988: d55ff0ef jal ra,800006dc -8000098c: 1741a503 lw a0,372(gp) # 8000497c -80000990: 1781a783 lw a5,376(gp) # 80004980 -80000994: 000780e7 jalr a5 -80000998: d65ff0ef jal ra,800006fc -8000099c: 00812403 lw s0,8(sp) -800009a0: 00c12083 lw ra,12(sp) -800009a4: 00412483 lw s1,4(sp) -800009a8: 00012903 lw s2,0(sp) -800009ac: 00153513 seqz a0,a0 -800009b0: 01010113 addi sp,sp,16 -800009b4: d29ff06f j 800006dc +80000978 : +80000978: 00050593 mv a1,a0 +8000097c: 00000693 li a3,0 +80000980: 00000613 li a2,0 +80000984: 00000513 li a0,0 +80000988: 2080006f j 80000b90 <__register_exitproc> -800009b8 : -800009b8: 00852683 lw a3,8(a0) -800009bc: 00100713 li a4,1 -800009c0: 0ad76263 bltu a4,a3,80000a64 -800009c4: 00050793 mv a5,a0 -800009c8: 00052503 lw a0,0(a0) -800009cc: fe010113 addi sp,sp,-32 -800009d0: 0047a683 lw a3,4(a5) -800009d4: 00812c23 sw s0,24(sp) -800009d8: 00912a23 sw s1,20(sp) -800009dc: 01212823 sw s2,16(sp) -800009e0: 01312623 sw s3,12(sp) -800009e4: 00112e23 sw ra,28(sp) -800009e8: 16a1ae23 sw a0,380(gp) # 80004984 -800009ec: 18f1a223 sw a5,388(gp) # 8000498c -800009f0: 16b1a823 sw a1,368(gp) # 80004978 -800009f4: 18c1a023 sw a2,384(gp) # 80004988 -800009f8: 04d76a63 bltu a4,a3,80000a4c -800009fc: ce1ff0ef jal ra,800006dc -80000a00: d0dff0ef jal ra,8000070c -80000a04: 00050413 mv s0,a0 -80000a08: cfdff0ef jal ra,80000704 -80000a0c: 1841a583 lw a1,388(gp) # 8000498c -80000a10: 1701a783 lw a5,368(gp) # 80004978 -80000a14: 00050693 mv a3,a0 -80000a18: 1801a503 lw a0,384(gp) # 80004988 -80000a1c: 00040613 mv a2,s0 -80000a20: 00000713 li a4,0 -80000a24: 000780e7 jalr a5 -80000a28: cd5ff0ef jal ra,800006fc -80000a2c: 01812403 lw s0,24(sp) -80000a30: 01c12083 lw ra,28(sp) -80000a34: 01412483 lw s1,20(sp) -80000a38: 01012903 lw s2,16(sp) -80000a3c: 00c12983 lw s3,12(sp) -80000a40: 00153513 seqz a0,a0 -80000a44: 02010113 addi sp,sp,32 -80000a48: c95ff06f j 800006dc -80000a4c: 800015b7 lui a1,0x80001 -80000a50: 00068513 mv a0,a3 -80000a54: 8f858593 addi a1,a1,-1800 # 800008f8 <__BSS_END__+0xffffbf60> -80000a58: c7dff0ef jal ra,800006d4 -80000a5c: 17c1a503 lw a0,380(gp) # 80004984 -80000a60: f9dff06f j 800009fc -80000a64: 80004537 lui a0,0x80004 -80000a68: dcc50513 addi a0,a0,-564 # 80003dcc <__BSS_END__+0xfffff434> -80000a6c: 2ec0006f j 80000d58 +8000098c : +8000098c: ff010113 addi sp,sp,-16 +80000990: 00000593 li a1,0 +80000994: 00812423 sw s0,8(sp) +80000998: 00112623 sw ra,12(sp) +8000099c: 00050413 mv s0,a0 +800009a0: 288000ef jal ra,80000c28 <__call_exitprocs> +800009a4: cc01a503 lw a0,-832(gp) # 800014c8 <_global_impure_ptr> +800009a8: 03c52783 lw a5,60(a0) +800009ac: 00078463 beqz a5,800009b4 +800009b0: 000780e7 jalr a5 +800009b4: 00040513 mv a0,s0 +800009b8: cd5ff0ef jal ra,8000068c <_exit> -80000a70 : -80000a70: 00050593 mv a1,a0 -80000a74: 00000693 li a3,0 -80000a78: 00000613 li a2,0 -80000a7c: 00000513 li a0,0 -80000a80: 3700006f j 80000df0 <__register_exitproc> +800009bc <__libc_fini_array>: +800009bc: ff010113 addi sp,sp,-16 +800009c0: 00812423 sw s0,8(sp) +800009c4: 800017b7 lui a5,0x80001 +800009c8: 80001437 lui s0,0x80001 +800009cc: 00440413 addi s0,s0,4 # 80001004 <__global_pointer$+0xfffff7fc> +800009d0: 00478793 addi a5,a5,4 # 80001004 <__global_pointer$+0xfffff7fc> +800009d4: 408787b3 sub a5,a5,s0 +800009d8: 00912223 sw s1,4(sp) +800009dc: 00112623 sw ra,12(sp) +800009e0: 4027d493 srai s1,a5,0x2 +800009e4: 02048063 beqz s1,80000a04 <__libc_fini_array+0x48> +800009e8: ffc78793 addi a5,a5,-4 +800009ec: 00878433 add s0,a5,s0 +800009f0: 00042783 lw a5,0(s0) +800009f4: fff48493 addi s1,s1,-1 +800009f8: ffc40413 addi s0,s0,-4 +800009fc: 000780e7 jalr a5 +80000a00: fe0498e3 bnez s1,800009f0 <__libc_fini_array+0x34> +80000a04: 00c12083 lw ra,12(sp) +80000a08: 00812403 lw s0,8(sp) +80000a0c: 00412483 lw s1,4(sp) +80000a10: 01010113 addi sp,sp,16 +80000a14: 00008067 ret -80000a84 : -80000a84: ff010113 addi sp,sp,-16 -80000a88: 00000593 li a1,0 -80000a8c: 00812423 sw s0,8(sp) -80000a90: 00112623 sw ra,12(sp) -80000a94: 00050413 mv s0,a0 -80000a98: 3f0000ef jal ra,80000e88 <__call_exitprocs> -80000a9c: 0c81a503 lw a0,200(gp) # 800048d0 <_global_impure_ptr> -80000aa0: 03c52783 lw a5,60(a0) -80000aa4: 00078463 beqz a5,80000aac -80000aa8: 000780e7 jalr a5 -80000aac: 00040513 mv a0,s0 -80000ab0: bddff0ef jal ra,8000068c <_exit> +80000a18 <__libc_init_array>: +80000a18: ff010113 addi sp,sp,-16 +80000a1c: 00812423 sw s0,8(sp) +80000a20: 01212023 sw s2,0(sp) +80000a24: 80001437 lui s0,0x80001 +80000a28: 80001937 lui s2,0x80001 +80000a2c: 00040793 mv a5,s0 +80000a30: 00090913 mv s2,s2 +80000a34: 40f90933 sub s2,s2,a5 +80000a38: 00112623 sw ra,12(sp) +80000a3c: 00912223 sw s1,4(sp) +80000a40: 40295913 srai s2,s2,0x2 +80000a44: 02090063 beqz s2,80000a64 <__libc_init_array+0x4c> +80000a48: 00040413 mv s0,s0 +80000a4c: 00000493 li s1,0 +80000a50: 00042783 lw a5,0(s0) # 80001000 <__global_pointer$+0xfffff7f8> +80000a54: 00148493 addi s1,s1,1 +80000a58: 00440413 addi s0,s0,4 +80000a5c: 000780e7 jalr a5 +80000a60: fe9918e3 bne s2,s1,80000a50 <__libc_init_array+0x38> +80000a64: 80001437 lui s0,0x80001 +80000a68: 80001937 lui s2,0x80001 +80000a6c: 00040793 mv a5,s0 +80000a70: 00490913 addi s2,s2,4 # 80001004 <__global_pointer$+0xfffff7fc> +80000a74: 40f90933 sub s2,s2,a5 +80000a78: 40295913 srai s2,s2,0x2 +80000a7c: 02090063 beqz s2,80000a9c <__libc_init_array+0x84> +80000a80: 00040413 mv s0,s0 +80000a84: 00000493 li s1,0 +80000a88: 00042783 lw a5,0(s0) # 80001000 <__global_pointer$+0xfffff7f8> +80000a8c: 00148493 addi s1,s1,1 +80000a90: 00440413 addi s0,s0,4 +80000a94: 000780e7 jalr a5 +80000a98: fe9918e3 bne s2,s1,80000a88 <__libc_init_array+0x70> +80000a9c: 00c12083 lw ra,12(sp) +80000aa0: 00812403 lw s0,8(sp) +80000aa4: 00412483 lw s1,4(sp) +80000aa8: 00012903 lw s2,0(sp) +80000aac: 01010113 addi sp,sp,16 +80000ab0: 00008067 ret -80000ab4 <__libc_fini_array>: -80000ab4: ff010113 addi sp,sp,-16 -80000ab8: 00812423 sw s0,8(sp) -80000abc: 800047b7 lui a5,0x80004 -80000ac0: 80004437 lui s0,0x80004 -80000ac4: 00440413 addi s0,s0,4 # 80004004 <__BSS_END__+0xfffff66c> -80000ac8: 00478793 addi a5,a5,4 # 80004004 <__BSS_END__+0xfffff66c> -80000acc: 408787b3 sub a5,a5,s0 -80000ad0: 00912223 sw s1,4(sp) -80000ad4: 00112623 sw ra,12(sp) -80000ad8: 4027d493 srai s1,a5,0x2 -80000adc: 02048063 beqz s1,80000afc <__libc_fini_array+0x48> -80000ae0: ffc78793 addi a5,a5,-4 -80000ae4: 00878433 add s0,a5,s0 -80000ae8: 00042783 lw a5,0(s0) -80000aec: fff48493 addi s1,s1,-1 -80000af0: ffc40413 addi s0,s0,-4 -80000af4: 000780e7 jalr a5 -80000af8: fe0498e3 bnez s1,80000ae8 <__libc_fini_array+0x34> -80000afc: 00c12083 lw ra,12(sp) -80000b00: 00812403 lw s0,8(sp) -80000b04: 00412483 lw s1,4(sp) -80000b08: 01010113 addi sp,sp,16 -80000b0c: 00008067 ret +80000ab4 : +80000ab4: 00f00313 li t1,15 +80000ab8: 00050713 mv a4,a0 +80000abc: 02c37e63 bgeu t1,a2,80000af8 +80000ac0: 00f77793 andi a5,a4,15 +80000ac4: 0a079063 bnez a5,80000b64 +80000ac8: 08059263 bnez a1,80000b4c +80000acc: ff067693 andi a3,a2,-16 +80000ad0: 00f67613 andi a2,a2,15 +80000ad4: 00e686b3 add a3,a3,a4 +80000ad8: 00b72023 sw a1,0(a4) +80000adc: 00b72223 sw a1,4(a4) +80000ae0: 00b72423 sw a1,8(a4) +80000ae4: 00b72623 sw a1,12(a4) +80000ae8: 01070713 addi a4,a4,16 +80000aec: fed766e3 bltu a4,a3,80000ad8 +80000af0: 00061463 bnez a2,80000af8 +80000af4: 00008067 ret +80000af8: 40c306b3 sub a3,t1,a2 +80000afc: 00269693 slli a3,a3,0x2 +80000b00: 00000297 auipc t0,0x0 +80000b04: 005686b3 add a3,a3,t0 +80000b08: 00c68067 jr 12(a3) +80000b0c: 00b70723 sb a1,14(a4) +80000b10: 00b706a3 sb a1,13(a4) +80000b14: 00b70623 sb a1,12(a4) +80000b18: 00b705a3 sb a1,11(a4) +80000b1c: 00b70523 sb a1,10(a4) +80000b20: 00b704a3 sb a1,9(a4) +80000b24: 00b70423 sb a1,8(a4) +80000b28: 00b703a3 sb a1,7(a4) +80000b2c: 00b70323 sb a1,6(a4) +80000b30: 00b702a3 sb a1,5(a4) +80000b34: 00b70223 sb a1,4(a4) +80000b38: 00b701a3 sb a1,3(a4) +80000b3c: 00b70123 sb a1,2(a4) +80000b40: 00b700a3 sb a1,1(a4) +80000b44: 00b70023 sb a1,0(a4) +80000b48: 00008067 ret +80000b4c: 0ff5f593 andi a1,a1,255 +80000b50: 00859693 slli a3,a1,0x8 +80000b54: 00d5e5b3 or a1,a1,a3 +80000b58: 01059693 slli a3,a1,0x10 +80000b5c: 00d5e5b3 or a1,a1,a3 +80000b60: f6dff06f j 80000acc +80000b64: 00279693 slli a3,a5,0x2 +80000b68: 00000297 auipc t0,0x0 +80000b6c: 005686b3 add a3,a3,t0 +80000b70: 00008293 mv t0,ra +80000b74: fa0680e7 jalr -96(a3) +80000b78: 00028093 mv ra,t0 +80000b7c: ff078793 addi a5,a5,-16 +80000b80: 40f70733 sub a4,a4,a5 +80000b84: 00f60633 add a2,a2,a5 +80000b88: f6c378e3 bgeu t1,a2,80000af8 +80000b8c: f3dff06f j 80000ac8 -80000b10 <__libc_init_array>: -80000b10: ff010113 addi sp,sp,-16 -80000b14: 00812423 sw s0,8(sp) -80000b18: 01212023 sw s2,0(sp) -80000b1c: 80004437 lui s0,0x80004 -80000b20: 80004937 lui s2,0x80004 -80000b24: 00040793 mv a5,s0 -80000b28: 00090913 mv s2,s2 -80000b2c: 40f90933 sub s2,s2,a5 -80000b30: 00112623 sw ra,12(sp) -80000b34: 00912223 sw s1,4(sp) -80000b38: 40295913 srai s2,s2,0x2 -80000b3c: 02090063 beqz s2,80000b5c <__libc_init_array+0x4c> -80000b40: 00040413 mv s0,s0 -80000b44: 00000493 li s1,0 -80000b48: 00042783 lw a5,0(s0) # 80004000 <__BSS_END__+0xfffff668> -80000b4c: 00148493 addi s1,s1,1 -80000b50: 00440413 addi s0,s0,4 -80000b54: 000780e7 jalr a5 -80000b58: fe9918e3 bne s2,s1,80000b48 <__libc_init_array+0x38> -80000b5c: 80004437 lui s0,0x80004 -80000b60: 80004937 lui s2,0x80004 -80000b64: 00040793 mv a5,s0 -80000b68: 00490913 addi s2,s2,4 # 80004004 <__BSS_END__+0xfffff66c> -80000b6c: 40f90933 sub s2,s2,a5 -80000b70: 40295913 srai s2,s2,0x2 -80000b74: 02090063 beqz s2,80000b94 <__libc_init_array+0x84> -80000b78: 00040413 mv s0,s0 -80000b7c: 00000493 li s1,0 -80000b80: 00042783 lw a5,0(s0) # 80004000 <__BSS_END__+0xfffff668> -80000b84: 00148493 addi s1,s1,1 -80000b88: 00440413 addi s0,s0,4 -80000b8c: 000780e7 jalr a5 -80000b90: fe9918e3 bne s2,s1,80000b80 <__libc_init_array+0x70> -80000b94: 00c12083 lw ra,12(sp) -80000b98: 00812403 lw s0,8(sp) -80000b9c: 00412483 lw s1,4(sp) -80000ba0: 00012903 lw s2,0(sp) -80000ba4: 01010113 addi sp,sp,16 -80000ba8: 00008067 ret - -80000bac : -80000bac: 00f00313 li t1,15 -80000bb0: 00050713 mv a4,a0 -80000bb4: 02c37e63 bgeu t1,a2,80000bf0 -80000bb8: 00f77793 andi a5,a4,15 -80000bbc: 0a079063 bnez a5,80000c5c -80000bc0: 08059263 bnez a1,80000c44 -80000bc4: ff067693 andi a3,a2,-16 -80000bc8: 00f67613 andi a2,a2,15 -80000bcc: 00e686b3 add a3,a3,a4 -80000bd0: 00b72023 sw a1,0(a4) -80000bd4: 00b72223 sw a1,4(a4) -80000bd8: 00b72423 sw a1,8(a4) -80000bdc: 00b72623 sw a1,12(a4) -80000be0: 01070713 addi a4,a4,16 -80000be4: fed766e3 bltu a4,a3,80000bd0 -80000be8: 00061463 bnez a2,80000bf0 +80000b90 <__register_exitproc>: +80000b90: cc01a703 lw a4,-832(gp) # 800014c8 <_global_impure_ptr> +80000b94: 14872783 lw a5,328(a4) +80000b98: 04078c63 beqz a5,80000bf0 <__register_exitproc+0x60> +80000b9c: 0047a703 lw a4,4(a5) +80000ba0: 01f00813 li a6,31 +80000ba4: 06e84e63 blt a6,a4,80000c20 <__register_exitproc+0x90> +80000ba8: 00271813 slli a6,a4,0x2 +80000bac: 02050663 beqz a0,80000bd8 <__register_exitproc+0x48> +80000bb0: 01078333 add t1,a5,a6 +80000bb4: 08c32423 sw a2,136(t1) +80000bb8: 1887a883 lw a7,392(a5) +80000bbc: 00100613 li a2,1 +80000bc0: 00e61633 sll a2,a2,a4 +80000bc4: 00c8e8b3 or a7,a7,a2 +80000bc8: 1917a423 sw a7,392(a5) +80000bcc: 10d32423 sw a3,264(t1) +80000bd0: 00200693 li a3,2 +80000bd4: 02d50463 beq a0,a3,80000bfc <__register_exitproc+0x6c> +80000bd8: 00170713 addi a4,a4,1 +80000bdc: 00e7a223 sw a4,4(a5) +80000be0: 010787b3 add a5,a5,a6 +80000be4: 00b7a423 sw a1,8(a5) +80000be8: 00000513 li a0,0 80000bec: 00008067 ret -80000bf0: 40c306b3 sub a3,t1,a2 -80000bf4: 00269693 slli a3,a3,0x2 -80000bf8: 00000297 auipc t0,0x0 -80000bfc: 005686b3 add a3,a3,t0 -80000c00: 00c68067 jr 12(a3) -80000c04: 00b70723 sb a1,14(a4) -80000c08: 00b706a3 sb a1,13(a4) -80000c0c: 00b70623 sb a1,12(a4) -80000c10: 00b705a3 sb a1,11(a4) -80000c14: 00b70523 sb a1,10(a4) -80000c18: 00b704a3 sb a1,9(a4) -80000c1c: 00b70423 sb a1,8(a4) -80000c20: 00b703a3 sb a1,7(a4) -80000c24: 00b70323 sb a1,6(a4) -80000c28: 00b702a3 sb a1,5(a4) -80000c2c: 00b70223 sb a1,4(a4) -80000c30: 00b701a3 sb a1,3(a4) -80000c34: 00b70123 sb a1,2(a4) -80000c38: 00b700a3 sb a1,1(a4) -80000c3c: 00b70023 sb a1,0(a4) -80000c40: 00008067 ret -80000c44: 0ff5f593 andi a1,a1,255 -80000c48: 00859693 slli a3,a1,0x8 -80000c4c: 00d5e5b3 or a1,a1,a3 -80000c50: 01059693 slli a3,a1,0x10 -80000c54: 00d5e5b3 or a1,a1,a3 -80000c58: f6dff06f j 80000bc4 -80000c5c: 00279693 slli a3,a5,0x2 -80000c60: 00000297 auipc t0,0x0 -80000c64: 005686b3 add a3,a3,t0 -80000c68: 00008293 mv t0,ra -80000c6c: fa0680e7 jalr -96(a3) -80000c70: 00028093 mv ra,t0 -80000c74: ff078793 addi a5,a5,-16 -80000c78: 40f70733 sub a4,a4,a5 -80000c7c: 00f60633 add a2,a2,a5 -80000c80: f6c378e3 bgeu t1,a2,80000bf0 -80000c84: f3dff06f j 80000bc0 +80000bf0: 14c70793 addi a5,a4,332 +80000bf4: 14f72423 sw a5,328(a4) +80000bf8: fa5ff06f j 80000b9c <__register_exitproc+0xc> +80000bfc: 18c7a683 lw a3,396(a5) +80000c00: 00170713 addi a4,a4,1 +80000c04: 00e7a223 sw a4,4(a5) +80000c08: 00c6e633 or a2,a3,a2 +80000c0c: 18c7a623 sw a2,396(a5) +80000c10: 010787b3 add a5,a5,a6 +80000c14: 00b7a423 sw a1,8(a5) +80000c18: 00000513 li a0,0 +80000c1c: 00008067 ret +80000c20: fff00513 li a0,-1 +80000c24: 00008067 ret -80000c88 <_puts_r>: -80000c88: fc010113 addi sp,sp,-64 -80000c8c: 02812c23 sw s0,56(sp) -80000c90: 00050413 mv s0,a0 -80000c94: 00058513 mv a0,a1 -80000c98: 02912a23 sw s1,52(sp) -80000c9c: 02112e23 sw ra,60(sp) -80000ca0: 00058493 mv s1,a1 -80000ca4: 0c0000ef jal ra,80000d64 -80000ca8: 800047b7 lui a5,0x80004 -80000cac: c1078793 addi a5,a5,-1008 # 80003c10 <__BSS_END__+0xfffff278> -80000cb0: 02f12423 sw a5,40(sp) -80000cb4: 00100793 li a5,1 -80000cb8: 02f12623 sw a5,44(sp) -80000cbc: 03842703 lw a4,56(s0) -80000cc0: 02010793 addi a5,sp,32 -80000cc4: 00150693 addi a3,a0,1 -80000cc8: 00f12a23 sw a5,20(sp) -80000ccc: 00200793 li a5,2 -80000cd0: 02912023 sw s1,32(sp) -80000cd4: 02a12223 sw a0,36(sp) -80000cd8: 00d12e23 sw a3,28(sp) -80000cdc: 00f12c23 sw a5,24(sp) -80000ce0: 00842583 lw a1,8(s0) -80000ce4: 06070063 beqz a4,80000d44 <_puts_r+0xbc> -80000ce8: 00c59783 lh a5,12(a1) -80000cec: 01279713 slli a4,a5,0x12 -80000cf0: 02074263 bltz a4,80000d14 <_puts_r+0x8c> -80000cf4: 0645a703 lw a4,100(a1) -80000cf8: 000026b7 lui a3,0x2 -80000cfc: 00d7e7b3 or a5,a5,a3 -80000d00: ffffe6b7 lui a3,0xffffe -80000d04: fff68693 addi a3,a3,-1 # ffffdfff <__BSS_END__+0x7fff9667> -80000d08: 00d77733 and a4,a4,a3 -80000d0c: 00f59623 sh a5,12(a1) -80000d10: 06e5a223 sw a4,100(a1) -80000d14: 01410613 addi a2,sp,20 -80000d18: 00040513 mv a0,s0 -80000d1c: 5e8000ef jal ra,80001304 <__sfvwrite_r> -80000d20: 03c12083 lw ra,60(sp) -80000d24: 03812403 lw s0,56(sp) -80000d28: 00a03533 snez a0,a0 -80000d2c: 40a00533 neg a0,a0 -80000d30: ff557513 andi a0,a0,-11 -80000d34: 03412483 lw s1,52(sp) -80000d38: 00a50513 addi a0,a0,10 -80000d3c: 04010113 addi sp,sp,64 -80000d40: 00008067 ret -80000d44: 00040513 mv a0,s0 -80000d48: 00b12623 sw a1,12(sp) -80000d4c: 578000ef jal ra,800012c4 <__sinit> -80000d50: 00c12583 lw a1,12(sp) -80000d54: f95ff06f j 80000ce8 <_puts_r+0x60> - -80000d58 : -80000d58: 00050593 mv a1,a0 -80000d5c: 0cc1a503 lw a0,204(gp) # 800048d4 <_impure_ptr> -80000d60: f29ff06f j 80000c88 <_puts_r> - -80000d64 : -80000d64: 00357793 andi a5,a0,3 -80000d68: 00050713 mv a4,a0 -80000d6c: 04079c63 bnez a5,80000dc4 -80000d70: 7f7f86b7 lui a3,0x7f7f8 -80000d74: f7f68693 addi a3,a3,-129 # 7f7f7f7f <_start-0x808081> -80000d78: fff00593 li a1,-1 -80000d7c: 00072603 lw a2,0(a4) -80000d80: 00470713 addi a4,a4,4 -80000d84: 00d677b3 and a5,a2,a3 -80000d88: 00d787b3 add a5,a5,a3 -80000d8c: 00c7e7b3 or a5,a5,a2 -80000d90: 00d7e7b3 or a5,a5,a3 -80000d94: feb784e3 beq a5,a1,80000d7c -80000d98: ffc74683 lbu a3,-4(a4) -80000d9c: ffd74603 lbu a2,-3(a4) -80000da0: ffe74783 lbu a5,-2(a4) -80000da4: 40a70733 sub a4,a4,a0 -80000da8: 04068063 beqz a3,80000de8 -80000dac: 02060a63 beqz a2,80000de0 -80000db0: 00f03533 snez a0,a5 -80000db4: 00e50533 add a0,a0,a4 -80000db8: ffe50513 addi a0,a0,-2 -80000dbc: 00008067 ret -80000dc0: fa0688e3 beqz a3,80000d70 -80000dc4: 00074783 lbu a5,0(a4) -80000dc8: 00170713 addi a4,a4,1 -80000dcc: 00377693 andi a3,a4,3 -80000dd0: fe0798e3 bnez a5,80000dc0 -80000dd4: 40a70733 sub a4,a4,a0 -80000dd8: fff70513 addi a0,a4,-1 -80000ddc: 00008067 ret -80000de0: ffd70513 addi a0,a4,-3 -80000de4: 00008067 ret -80000de8: ffc70513 addi a0,a4,-4 -80000dec: 00008067 ret - -80000df0 <__register_exitproc>: -80000df0: 0c81a703 lw a4,200(gp) # 800048d0 <_global_impure_ptr> -80000df4: 14872783 lw a5,328(a4) -80000df8: 04078c63 beqz a5,80000e50 <__register_exitproc+0x60> -80000dfc: 0047a703 lw a4,4(a5) -80000e00: 01f00813 li a6,31 -80000e04: 06e84e63 blt a6,a4,80000e80 <__register_exitproc+0x90> -80000e08: 00271813 slli a6,a4,0x2 -80000e0c: 02050663 beqz a0,80000e38 <__register_exitproc+0x48> -80000e10: 01078333 add t1,a5,a6 -80000e14: 08c32423 sw a2,136(t1) -80000e18: 1887a883 lw a7,392(a5) -80000e1c: 00100613 li a2,1 -80000e20: 00e61633 sll a2,a2,a4 -80000e24: 00c8e8b3 or a7,a7,a2 -80000e28: 1917a423 sw a7,392(a5) -80000e2c: 10d32423 sw a3,264(t1) -80000e30: 00200693 li a3,2 -80000e34: 02d50463 beq a0,a3,80000e5c <__register_exitproc+0x6c> -80000e38: 00170713 addi a4,a4,1 -80000e3c: 00e7a223 sw a4,4(a5) -80000e40: 010787b3 add a5,a5,a6 -80000e44: 00b7a423 sw a1,8(a5) -80000e48: 00000513 li a0,0 -80000e4c: 00008067 ret -80000e50: 14c70793 addi a5,a4,332 -80000e54: 14f72423 sw a5,328(a4) -80000e58: fa5ff06f j 80000dfc <__register_exitproc+0xc> -80000e5c: 18c7a683 lw a3,396(a5) -80000e60: 00170713 addi a4,a4,1 -80000e64: 00e7a223 sw a4,4(a5) -80000e68: 00c6e633 or a2,a3,a2 -80000e6c: 18c7a623 sw a2,396(a5) -80000e70: 010787b3 add a5,a5,a6 -80000e74: 00b7a423 sw a1,8(a5) -80000e78: 00000513 li a0,0 -80000e7c: 00008067 ret -80000e80: fff00513 li a0,-1 -80000e84: 00008067 ret - -80000e88 <__call_exitprocs>: -80000e88: fd010113 addi sp,sp,-48 -80000e8c: 01412c23 sw s4,24(sp) -80000e90: 0c81aa03 lw s4,200(gp) # 800048d0 <_global_impure_ptr> -80000e94: 03212023 sw s2,32(sp) -80000e98: 02112623 sw ra,44(sp) -80000e9c: 148a2903 lw s2,328(s4) -80000ea0: 02812423 sw s0,40(sp) -80000ea4: 02912223 sw s1,36(sp) -80000ea8: 01312e23 sw s3,28(sp) -80000eac: 01512a23 sw s5,20(sp) -80000eb0: 01612823 sw s6,16(sp) -80000eb4: 01712623 sw s7,12(sp) -80000eb8: 01812423 sw s8,8(sp) -80000ebc: 04090063 beqz s2,80000efc <__call_exitprocs+0x74> -80000ec0: 00050b13 mv s6,a0 -80000ec4: 00058b93 mv s7,a1 -80000ec8: 00100a93 li s5,1 -80000ecc: fff00993 li s3,-1 -80000ed0: 00492483 lw s1,4(s2) -80000ed4: fff48413 addi s0,s1,-1 -80000ed8: 02044263 bltz s0,80000efc <__call_exitprocs+0x74> -80000edc: 00249493 slli s1,s1,0x2 -80000ee0: 009904b3 add s1,s2,s1 -80000ee4: 040b8463 beqz s7,80000f2c <__call_exitprocs+0xa4> -80000ee8: 1044a783 lw a5,260(s1) -80000eec: 05778063 beq a5,s7,80000f2c <__call_exitprocs+0xa4> -80000ef0: fff40413 addi s0,s0,-1 -80000ef4: ffc48493 addi s1,s1,-4 -80000ef8: ff3416e3 bne s0,s3,80000ee4 <__call_exitprocs+0x5c> -80000efc: 02c12083 lw ra,44(sp) -80000f00: 02812403 lw s0,40(sp) -80000f04: 02412483 lw s1,36(sp) -80000f08: 02012903 lw s2,32(sp) -80000f0c: 01c12983 lw s3,28(sp) -80000f10: 01812a03 lw s4,24(sp) -80000f14: 01412a83 lw s5,20(sp) -80000f18: 01012b03 lw s6,16(sp) -80000f1c: 00c12b83 lw s7,12(sp) -80000f20: 00812c03 lw s8,8(sp) -80000f24: 03010113 addi sp,sp,48 -80000f28: 00008067 ret -80000f2c: 00492783 lw a5,4(s2) -80000f30: 0044a683 lw a3,4(s1) -80000f34: fff78793 addi a5,a5,-1 -80000f38: 04878e63 beq a5,s0,80000f94 <__call_exitprocs+0x10c> -80000f3c: 0004a223 sw zero,4(s1) -80000f40: fa0688e3 beqz a3,80000ef0 <__call_exitprocs+0x68> -80000f44: 18892783 lw a5,392(s2) -80000f48: 008a9733 sll a4,s5,s0 -80000f4c: 00492c03 lw s8,4(s2) -80000f50: 00f777b3 and a5,a4,a5 -80000f54: 02079263 bnez a5,80000f78 <__call_exitprocs+0xf0> -80000f58: 000680e7 jalr a3 -80000f5c: 00492703 lw a4,4(s2) -80000f60: 148a2783 lw a5,328(s4) -80000f64: 01871463 bne a4,s8,80000f6c <__call_exitprocs+0xe4> -80000f68: f8f904e3 beq s2,a5,80000ef0 <__call_exitprocs+0x68> -80000f6c: f80788e3 beqz a5,80000efc <__call_exitprocs+0x74> -80000f70: 00078913 mv s2,a5 -80000f74: f5dff06f j 80000ed0 <__call_exitprocs+0x48> -80000f78: 18c92783 lw a5,396(s2) -80000f7c: 0844a583 lw a1,132(s1) -80000f80: 00f77733 and a4,a4,a5 -80000f84: 00071c63 bnez a4,80000f9c <__call_exitprocs+0x114> -80000f88: 000b0513 mv a0,s6 -80000f8c: 000680e7 jalr a3 -80000f90: fcdff06f j 80000f5c <__call_exitprocs+0xd4> -80000f94: 00892223 sw s0,4(s2) -80000f98: fa9ff06f j 80000f40 <__call_exitprocs+0xb8> -80000f9c: 00058513 mv a0,a1 -80000fa0: 000680e7 jalr a3 -80000fa4: fb9ff06f j 80000f5c <__call_exitprocs+0xd4> - -80000fa8 <__fp_lock>: -80000fa8: 00000513 li a0,0 -80000fac: 00008067 ret - -80000fb0 <_cleanup_r>: -80000fb0: 800035b7 lui a1,0x80003 -80000fb4: d0058593 addi a1,a1,-768 # 80002d00 <__BSS_END__+0xffffe368> -80000fb8: 0990006f j 80001850 <_fwalk_reent> - -80000fbc <__sinit.part.0>: -80000fbc: fe010113 addi sp,sp,-32 -80000fc0: 800017b7 lui a5,0x80001 -80000fc4: 00112e23 sw ra,28(sp) -80000fc8: 00812c23 sw s0,24(sp) -80000fcc: 00912a23 sw s1,20(sp) -80000fd0: 01212823 sw s2,16(sp) -80000fd4: 01312623 sw s3,12(sp) -80000fd8: 01412423 sw s4,8(sp) -80000fdc: 01512223 sw s5,4(sp) -80000fe0: 01612023 sw s6,0(sp) -80000fe4: 00452403 lw s0,4(a0) -80000fe8: fb078793 addi a5,a5,-80 # 80000fb0 <__BSS_END__+0xffffc618> -80000fec: 02f52e23 sw a5,60(a0) -80000ff0: 2ec50713 addi a4,a0,748 -80000ff4: 00300793 li a5,3 -80000ff8: 2ee52423 sw a4,744(a0) -80000ffc: 2ef52223 sw a5,740(a0) -80001000: 2e052023 sw zero,736(a0) -80001004: 00400793 li a5,4 -80001008: 00050913 mv s2,a0 -8000100c: 00f42623 sw a5,12(s0) -80001010: 00800613 li a2,8 -80001014: 00000593 li a1,0 -80001018: 06042223 sw zero,100(s0) -8000101c: 00042023 sw zero,0(s0) -80001020: 00042223 sw zero,4(s0) -80001024: 00042423 sw zero,8(s0) -80001028: 00042823 sw zero,16(s0) -8000102c: 00042a23 sw zero,20(s0) -80001030: 00042c23 sw zero,24(s0) -80001034: 05c40513 addi a0,s0,92 -80001038: b75ff0ef jal ra,80000bac -8000103c: 80003b37 lui s6,0x80003 -80001040: 00892483 lw s1,8(s2) -80001044: 80003ab7 lui s5,0x80003 -80001048: 80003a37 lui s4,0x80003 -8000104c: 800039b7 lui s3,0x80003 -80001050: 984b0b13 addi s6,s6,-1660 # 80002984 <__BSS_END__+0xffffdfec> -80001054: 9e8a8a93 addi s5,s5,-1560 # 800029e8 <__BSS_END__+0xffffe050> -80001058: a70a0a13 addi s4,s4,-1424 # 80002a70 <__BSS_END__+0xffffe0d8> -8000105c: ad898993 addi s3,s3,-1320 # 80002ad8 <__BSS_END__+0xffffe140> -80001060: 000107b7 lui a5,0x10 -80001064: 03642023 sw s6,32(s0) -80001068: 03542223 sw s5,36(s0) -8000106c: 03442423 sw s4,40(s0) -80001070: 03342623 sw s3,44(s0) -80001074: 00842e23 sw s0,28(s0) -80001078: 00978793 addi a5,a5,9 # 10009 <_start-0x7ffefff7> -8000107c: 00f4a623 sw a5,12(s1) -80001080: 00800613 li a2,8 -80001084: 00000593 li a1,0 -80001088: 0604a223 sw zero,100(s1) -8000108c: 0004a023 sw zero,0(s1) -80001090: 0004a223 sw zero,4(s1) -80001094: 0004a423 sw zero,8(s1) -80001098: 0004a823 sw zero,16(s1) -8000109c: 0004aa23 sw zero,20(s1) -800010a0: 0004ac23 sw zero,24(s1) -800010a4: 05c48513 addi a0,s1,92 -800010a8: b05ff0ef jal ra,80000bac -800010ac: 00c92403 lw s0,12(s2) -800010b0: 000207b7 lui a5,0x20 -800010b4: 0364a023 sw s6,32(s1) -800010b8: 0354a223 sw s5,36(s1) -800010bc: 0344a423 sw s4,40(s1) -800010c0: 0334a623 sw s3,44(s1) -800010c4: 0094ae23 sw s1,28(s1) -800010c8: 01278793 addi a5,a5,18 # 20012 <_start-0x7ffdffee> -800010cc: 00f42623 sw a5,12(s0) -800010d0: 06042223 sw zero,100(s0) -800010d4: 00042023 sw zero,0(s0) -800010d8: 00042223 sw zero,4(s0) -800010dc: 00042423 sw zero,8(s0) -800010e0: 00042823 sw zero,16(s0) -800010e4: 00042a23 sw zero,20(s0) -800010e8: 00042c23 sw zero,24(s0) -800010ec: 05c40513 addi a0,s0,92 -800010f0: 00800613 li a2,8 -800010f4: 00000593 li a1,0 -800010f8: ab5ff0ef jal ra,80000bac -800010fc: 01c12083 lw ra,28(sp) -80001100: 03642023 sw s6,32(s0) -80001104: 03542223 sw s5,36(s0) -80001108: 03442423 sw s4,40(s0) -8000110c: 03342623 sw s3,44(s0) -80001110: 00842e23 sw s0,28(s0) -80001114: 01812403 lw s0,24(sp) -80001118: 00100793 li a5,1 -8000111c: 02f92c23 sw a5,56(s2) -80001120: 01412483 lw s1,20(sp) -80001124: 01012903 lw s2,16(sp) -80001128: 00c12983 lw s3,12(sp) -8000112c: 00812a03 lw s4,8(sp) -80001130: 00412a83 lw s5,4(sp) -80001134: 00012b03 lw s6,0(sp) -80001138: 02010113 addi sp,sp,32 -8000113c: 00008067 ret - -80001140 <__fp_unlock>: -80001140: 00000513 li a0,0 -80001144: 00008067 ret - -80001148 <__sfmoreglue>: -80001148: ff010113 addi sp,sp,-16 -8000114c: 00912223 sw s1,4(sp) -80001150: 06800613 li a2,104 -80001154: fff58493 addi s1,a1,-1 -80001158: 02c484b3 mul s1,s1,a2 -8000115c: 01212023 sw s2,0(sp) -80001160: 00058913 mv s2,a1 -80001164: 00812423 sw s0,8(sp) -80001168: 00112623 sw ra,12(sp) -8000116c: 07448593 addi a1,s1,116 -80001170: 794000ef jal ra,80001904 <_malloc_r> -80001174: 00050413 mv s0,a0 -80001178: 02050063 beqz a0,80001198 <__sfmoreglue+0x50> -8000117c: 00c50513 addi a0,a0,12 -80001180: 00042023 sw zero,0(s0) -80001184: 01242223 sw s2,4(s0) -80001188: 00a42423 sw a0,8(s0) -8000118c: 06848613 addi a2,s1,104 -80001190: 00000593 li a1,0 -80001194: a19ff0ef jal ra,80000bac -80001198: 00c12083 lw ra,12(sp) -8000119c: 00040513 mv a0,s0 -800011a0: 00812403 lw s0,8(sp) -800011a4: 00412483 lw s1,4(sp) -800011a8: 00012903 lw s2,0(sp) -800011ac: 01010113 addi sp,sp,16 -800011b0: 00008067 ret - -800011b4 <__sfp>: -800011b4: fe010113 addi sp,sp,-32 -800011b8: 01212823 sw s2,16(sp) -800011bc: 0c81a903 lw s2,200(gp) # 800048d0 <_global_impure_ptr> -800011c0: 01312623 sw s3,12(sp) -800011c4: 00112e23 sw ra,28(sp) -800011c8: 03892783 lw a5,56(s2) -800011cc: 00812c23 sw s0,24(sp) -800011d0: 00912a23 sw s1,20(sp) -800011d4: 00050993 mv s3,a0 -800011d8: 0a078663 beqz a5,80001284 <__sfp+0xd0> -800011dc: 2e090913 addi s2,s2,736 -800011e0: fff00493 li s1,-1 -800011e4: 00492783 lw a5,4(s2) -800011e8: 00892403 lw s0,8(s2) -800011ec: fff78793 addi a5,a5,-1 -800011f0: 0007d863 bgez a5,80001200 <__sfp+0x4c> -800011f4: 0800006f j 80001274 <__sfp+0xc0> -800011f8: 06840413 addi s0,s0,104 -800011fc: 06978c63 beq a5,s1,80001274 <__sfp+0xc0> -80001200: 00c41703 lh a4,12(s0) -80001204: fff78793 addi a5,a5,-1 -80001208: fe0718e3 bnez a4,800011f8 <__sfp+0x44> -8000120c: ffff07b7 lui a5,0xffff0 -80001210: 00178793 addi a5,a5,1 # ffff0001 <__BSS_END__+0x7ffeb669> -80001214: 06042223 sw zero,100(s0) -80001218: 00042023 sw zero,0(s0) -8000121c: 00042223 sw zero,4(s0) -80001220: 00042423 sw zero,8(s0) -80001224: 00f42623 sw a5,12(s0) -80001228: 00042823 sw zero,16(s0) -8000122c: 00042a23 sw zero,20(s0) -80001230: 00042c23 sw zero,24(s0) -80001234: 00800613 li a2,8 -80001238: 00000593 li a1,0 -8000123c: 05c40513 addi a0,s0,92 -80001240: 96dff0ef jal ra,80000bac -80001244: 02042823 sw zero,48(s0) -80001248: 02042a23 sw zero,52(s0) -8000124c: 04042223 sw zero,68(s0) -80001250: 04042423 sw zero,72(s0) -80001254: 01c12083 lw ra,28(sp) -80001258: 00040513 mv a0,s0 -8000125c: 01812403 lw s0,24(sp) -80001260: 01412483 lw s1,20(sp) -80001264: 01012903 lw s2,16(sp) -80001268: 00c12983 lw s3,12(sp) -8000126c: 02010113 addi sp,sp,32 -80001270: 00008067 ret -80001274: 00092403 lw s0,0(s2) -80001278: 00040c63 beqz s0,80001290 <__sfp+0xdc> -8000127c: 00040913 mv s2,s0 -80001280: f65ff06f j 800011e4 <__sfp+0x30> -80001284: 00090513 mv a0,s2 -80001288: d35ff0ef jal ra,80000fbc <__sinit.part.0> -8000128c: f51ff06f j 800011dc <__sfp+0x28> -80001290: 00400593 li a1,4 -80001294: 00098513 mv a0,s3 -80001298: eb1ff0ef jal ra,80001148 <__sfmoreglue> -8000129c: 00a92023 sw a0,0(s2) -800012a0: 00050413 mv s0,a0 -800012a4: fc051ce3 bnez a0,8000127c <__sfp+0xc8> -800012a8: 00c00793 li a5,12 -800012ac: 00f9a023 sw a5,0(s3) -800012b0: fa5ff06f j 80001254 <__sfp+0xa0> - -800012b4 <_cleanup>: -800012b4: 0c81a503 lw a0,200(gp) # 800048d0 <_global_impure_ptr> -800012b8: 800035b7 lui a1,0x80003 -800012bc: d0058593 addi a1,a1,-768 # 80002d00 <__BSS_END__+0xffffe368> -800012c0: 5900006f j 80001850 <_fwalk_reent> - -800012c4 <__sinit>: -800012c4: 03852783 lw a5,56(a0) -800012c8: 00078463 beqz a5,800012d0 <__sinit+0xc> -800012cc: 00008067 ret -800012d0: cedff06f j 80000fbc <__sinit.part.0> - -800012d4 <__sfp_lock_acquire>: -800012d4: 00008067 ret - -800012d8 <__sfp_lock_release>: -800012d8: 00008067 ret - -800012dc <__sinit_lock_acquire>: -800012dc: 00008067 ret - -800012e0 <__sinit_lock_release>: -800012e0: 00008067 ret - -800012e4 <__fp_lock_all>: -800012e4: 0cc1a503 lw a0,204(gp) # 800048d4 <_impure_ptr> -800012e8: 800015b7 lui a1,0x80001 -800012ec: fa858593 addi a1,a1,-88 # 80000fa8 <__BSS_END__+0xffffc610> -800012f0: 4bc0006f j 800017ac <_fwalk> - -800012f4 <__fp_unlock_all>: -800012f4: 0cc1a503 lw a0,204(gp) # 800048d4 <_impure_ptr> -800012f8: 800015b7 lui a1,0x80001 -800012fc: 14058593 addi a1,a1,320 # 80001140 <__BSS_END__+0xffffc7a8> -80001300: 4ac0006f j 800017ac <_fwalk> - -80001304 <__sfvwrite_r>: -80001304: 00862783 lw a5,8(a2) -80001308: 32078e63 beqz a5,80001644 <__sfvwrite_r+0x340> -8000130c: 00c5d783 lhu a5,12(a1) -80001310: fd010113 addi sp,sp,-48 -80001314: 02812423 sw s0,40(sp) -80001318: 01412c23 sw s4,24(sp) -8000131c: 01512a23 sw s5,20(sp) -80001320: 02112623 sw ra,44(sp) -80001324: 02912223 sw s1,36(sp) -80001328: 03212023 sw s2,32(sp) -8000132c: 01312e23 sw s3,28(sp) -80001330: 01612823 sw s6,16(sp) -80001334: 01712623 sw s7,12(sp) -80001338: 01812423 sw s8,8(sp) -8000133c: 01912223 sw s9,4(sp) -80001340: 01a12023 sw s10,0(sp) -80001344: 0087f713 andi a4,a5,8 -80001348: 00060a13 mv s4,a2 -8000134c: 00050a93 mv s5,a0 -80001350: 00058413 mv s0,a1 -80001354: 08070663 beqz a4,800013e0 <__sfvwrite_r+0xdc> -80001358: 0105a703 lw a4,16(a1) -8000135c: 08070263 beqz a4,800013e0 <__sfvwrite_r+0xdc> -80001360: 0027f713 andi a4,a5,2 -80001364: 000a2483 lw s1,0(s4) -80001368: 08070c63 beqz a4,80001400 <__sfvwrite_r+0xfc> -8000136c: 02442783 lw a5,36(s0) -80001370: 01c42583 lw a1,28(s0) -80001374: 80000b37 lui s6,0x80000 -80001378: 00000993 li s3,0 -8000137c: 00000913 li s2,0 -80001380: c00b4b13 xori s6,s6,-1024 -80001384: 00098613 mv a2,s3 -80001388: 000a8513 mv a0,s5 -8000138c: 04090263 beqz s2,800013d0 <__sfvwrite_r+0xcc> -80001390: 00090693 mv a3,s2 -80001394: 012b7463 bgeu s6,s2,8000139c <__sfvwrite_r+0x98> -80001398: 000b0693 mv a3,s6 -8000139c: 000780e7 jalr a5 -800013a0: 28a05863 blez a0,80001630 <__sfvwrite_r+0x32c> -800013a4: 008a2783 lw a5,8(s4) -800013a8: 00a989b3 add s3,s3,a0 -800013ac: 40a90933 sub s2,s2,a0 -800013b0: 40a78533 sub a0,a5,a0 -800013b4: 00aa2423 sw a0,8(s4) -800013b8: 20050a63 beqz a0,800015cc <__sfvwrite_r+0x2c8> -800013bc: 02442783 lw a5,36(s0) -800013c0: 01c42583 lw a1,28(s0) -800013c4: 00098613 mv a2,s3 -800013c8: 000a8513 mv a0,s5 -800013cc: fc0912e3 bnez s2,80001390 <__sfvwrite_r+0x8c> -800013d0: 0004a983 lw s3,0(s1) -800013d4: 0044a903 lw s2,4(s1) -800013d8: 00848493 addi s1,s1,8 -800013dc: fa9ff06f j 80001384 <__sfvwrite_r+0x80> -800013e0: 00040593 mv a1,s0 -800013e4: 000a8513 mv a0,s5 -800013e8: 760010ef jal ra,80002b48 <__swsetup_r> -800013ec: 3a051c63 bnez a0,800017a4 <__sfvwrite_r+0x4a0> -800013f0: 00c45783 lhu a5,12(s0) -800013f4: 000a2483 lw s1,0(s4) -800013f8: 0027f713 andi a4,a5,2 -800013fc: f60718e3 bnez a4,8000136c <__sfvwrite_r+0x68> -80001400: 0017f713 andi a4,a5,1 -80001404: 24071463 bnez a4,8000164c <__sfvwrite_r+0x348> -80001408: 00842c83 lw s9,8(s0) -8000140c: 00042503 lw a0,0(s0) -80001410: 80000b37 lui s6,0x80000 -80001414: ffeb4b93 xori s7,s6,-2 -80001418: 00000c13 li s8,0 -8000141c: 00000913 li s2,0 -80001420: fffb4b13 not s6,s6 -80001424: 0e090e63 beqz s2,80001520 <__sfvwrite_r+0x21c> -80001428: 2007f713 andi a4,a5,512 -8000142c: 24070c63 beqz a4,80001684 <__sfvwrite_r+0x380> -80001430: 000c8d13 mv s10,s9 -80001434: 2f996263 bltu s2,s9,80001718 <__sfvwrite_r+0x414> -80001438: 4807f713 andi a4,a5,1152 -8000143c: 08070a63 beqz a4,800014d0 <__sfvwrite_r+0x1cc> -80001440: 01442983 lw s3,20(s0) -80001444: 01042583 lw a1,16(s0) -80001448: 00190713 addi a4,s2,1 -8000144c: 00199693 slli a3,s3,0x1 -80001450: 013686b3 add a3,a3,s3 -80001454: 01f6d993 srli s3,a3,0x1f -80001458: 40b50d33 sub s10,a0,a1 -8000145c: 00d989b3 add s3,s3,a3 -80001460: 4019d993 srai s3,s3,0x1 -80001464: 01a70733 add a4,a4,s10 -80001468: 00098613 mv a2,s3 -8000146c: 00e9f663 bgeu s3,a4,80001478 <__sfvwrite_r+0x174> -80001470: 00070993 mv s3,a4 -80001474: 00070613 mv a2,a4 -80001478: 4007f793 andi a5,a5,1024 -8000147c: 2e078463 beqz a5,80001764 <__sfvwrite_r+0x460> -80001480: 00060593 mv a1,a2 -80001484: 000a8513 mv a0,s5 -80001488: 47c000ef jal ra,80001904 <_malloc_r> -8000148c: 00050c93 mv s9,a0 -80001490: 30050263 beqz a0,80001794 <__sfvwrite_r+0x490> -80001494: 01042583 lw a1,16(s0) -80001498: 000d0613 mv a2,s10 -8000149c: 4d5000ef jal ra,80002170 -800014a0: 00c45783 lhu a5,12(s0) -800014a4: b7f7f793 andi a5,a5,-1153 -800014a8: 0807e793 ori a5,a5,128 -800014ac: 00f41623 sh a5,12(s0) -800014b0: 01ac8533 add a0,s9,s10 -800014b4: 41a987b3 sub a5,s3,s10 -800014b8: 01942823 sw s9,16(s0) -800014bc: 00a42023 sw a0,0(s0) -800014c0: 01342a23 sw s3,20(s0) -800014c4: 00090c93 mv s9,s2 -800014c8: 00f42423 sw a5,8(s0) -800014cc: 00090d13 mv s10,s2 -800014d0: 000d0613 mv a2,s10 -800014d4: 000c0593 mv a1,s8 -800014d8: 5b5000ef jal ra,8000228c -800014dc: 00842703 lw a4,8(s0) -800014e0: 00042783 lw a5,0(s0) -800014e4: 00090993 mv s3,s2 -800014e8: 41970cb3 sub s9,a4,s9 -800014ec: 01a787b3 add a5,a5,s10 -800014f0: 01942423 sw s9,8(s0) -800014f4: 00f42023 sw a5,0(s0) -800014f8: 00000913 li s2,0 -800014fc: 008a2603 lw a2,8(s4) -80001500: 013c0c33 add s8,s8,s3 -80001504: 413609b3 sub s3,a2,s3 -80001508: 013a2423 sw s3,8(s4) -8000150c: 0c098063 beqz s3,800015cc <__sfvwrite_r+0x2c8> -80001510: 00842c83 lw s9,8(s0) -80001514: 00042503 lw a0,0(s0) -80001518: 00c45783 lhu a5,12(s0) -8000151c: f00916e3 bnez s2,80001428 <__sfvwrite_r+0x124> -80001520: 0004ac03 lw s8,0(s1) -80001524: 0044a903 lw s2,4(s1) -80001528: 00848493 addi s1,s1,8 -8000152c: ef9ff06f j 80001424 <__sfvwrite_r+0x120> -80001530: 0044a983 lw s3,4(s1) -80001534: 0004ac03 lw s8,0(s1) -80001538: 00848493 addi s1,s1,8 -8000153c: fe098ae3 beqz s3,80001530 <__sfvwrite_r+0x22c> -80001540: 00098613 mv a2,s3 -80001544: 00a00593 li a1,10 -80001548: 000c0513 mv a0,s8 -8000154c: 351000ef jal ra,8000209c -80001550: 12050463 beqz a0,80001678 <__sfvwrite_r+0x374> -80001554: 00150513 addi a0,a0,1 -80001558: 41850b33 sub s6,a0,s8 -8000155c: 000b0793 mv a5,s6 -80001560: 00098b93 mv s7,s3 -80001564: 0137f463 bgeu a5,s3,8000156c <__sfvwrite_r+0x268> -80001568: 00078b93 mv s7,a5 -8000156c: 00042503 lw a0,0(s0) -80001570: 01042783 lw a5,16(s0) -80001574: 01442683 lw a3,20(s0) -80001578: 00a7f863 bgeu a5,a0,80001588 <__sfvwrite_r+0x284> -8000157c: 00842903 lw s2,8(s0) -80001580: 01268933 add s2,a3,s2 -80001584: 09794263 blt s2,s7,80001608 <__sfvwrite_r+0x304> -80001588: 1adbc863 blt s7,a3,80001738 <__sfvwrite_r+0x434> -8000158c: 02442783 lw a5,36(s0) -80001590: 01c42583 lw a1,28(s0) -80001594: 000c0613 mv a2,s8 -80001598: 000a8513 mv a0,s5 -8000159c: 000780e7 jalr a5 -800015a0: 00050913 mv s2,a0 -800015a4: 08a05663 blez a0,80001630 <__sfvwrite_r+0x32c> -800015a8: 412b0b33 sub s6,s6,s2 -800015ac: 00100513 li a0,1 -800015b0: 160b0a63 beqz s6,80001724 <__sfvwrite_r+0x420> -800015b4: 008a2603 lw a2,8(s4) -800015b8: 012c0c33 add s8,s8,s2 -800015bc: 412989b3 sub s3,s3,s2 -800015c0: 41260933 sub s2,a2,s2 -800015c4: 012a2423 sw s2,8(s4) -800015c8: 08091a63 bnez s2,8000165c <__sfvwrite_r+0x358> -800015cc: 00000513 li a0,0 -800015d0: 02c12083 lw ra,44(sp) -800015d4: 02812403 lw s0,40(sp) -800015d8: 02412483 lw s1,36(sp) -800015dc: 02012903 lw s2,32(sp) -800015e0: 01c12983 lw s3,28(sp) -800015e4: 01812a03 lw s4,24(sp) -800015e8: 01412a83 lw s5,20(sp) -800015ec: 01012b03 lw s6,16(sp) -800015f0: 00c12b83 lw s7,12(sp) -800015f4: 00812c03 lw s8,8(sp) -800015f8: 00412c83 lw s9,4(sp) -800015fc: 00012d03 lw s10,0(sp) -80001600: 03010113 addi sp,sp,48 -80001604: 00008067 ret -80001608: 000c0593 mv a1,s8 -8000160c: 00090613 mv a2,s2 -80001610: 47d000ef jal ra,8000228c -80001614: 00042783 lw a5,0(s0) -80001618: 00040593 mv a1,s0 -8000161c: 000a8513 mv a0,s5 -80001620: 012787b3 add a5,a5,s2 -80001624: 00f42023 sw a5,0(s0) -80001628: 251010ef jal ra,80003078 <_fflush_r> -8000162c: f6050ee3 beqz a0,800015a8 <__sfvwrite_r+0x2a4> -80001630: 00c41783 lh a5,12(s0) -80001634: 0407e793 ori a5,a5,64 -80001638: 00f41623 sh a5,12(s0) -8000163c: fff00513 li a0,-1 -80001640: f91ff06f j 800015d0 <__sfvwrite_r+0x2cc> -80001644: 00000513 li a0,0 -80001648: 00008067 ret -8000164c: 00000b13 li s6,0 -80001650: 00000513 li a0,0 -80001654: 00000c13 li s8,0 -80001658: 00000993 li s3,0 -8000165c: ec098ae3 beqz s3,80001530 <__sfvwrite_r+0x22c> -80001660: ee051ee3 bnez a0,8000155c <__sfvwrite_r+0x258> -80001664: 00098613 mv a2,s3 -80001668: 00a00593 li a1,10 -8000166c: 000c0513 mv a0,s8 -80001670: 22d000ef jal ra,8000209c -80001674: ee0510e3 bnez a0,80001554 <__sfvwrite_r+0x250> -80001678: 00198793 addi a5,s3,1 -8000167c: 00078b13 mv s6,a5 -80001680: ee1ff06f j 80001560 <__sfvwrite_r+0x25c> -80001684: 01042783 lw a5,16(s0) -80001688: 04a7e263 bltu a5,a0,800016cc <__sfvwrite_r+0x3c8> -8000168c: 01442783 lw a5,20(s0) -80001690: 02f96e63 bltu s2,a5,800016cc <__sfvwrite_r+0x3c8> -80001694: 00090693 mv a3,s2 -80001698: 012bf463 bgeu s7,s2,800016a0 <__sfvwrite_r+0x39c> -8000169c: 000b0693 mv a3,s6 -800016a0: 02f6c6b3 div a3,a3,a5 -800016a4: 02442703 lw a4,36(s0) -800016a8: 01c42583 lw a1,28(s0) -800016ac: 000c0613 mv a2,s8 -800016b0: 000a8513 mv a0,s5 -800016b4: 02f686b3 mul a3,a3,a5 -800016b8: 000700e7 jalr a4 -800016bc: 00050993 mv s3,a0 -800016c0: f6a058e3 blez a0,80001630 <__sfvwrite_r+0x32c> -800016c4: 41390933 sub s2,s2,s3 -800016c8: e35ff06f j 800014fc <__sfvwrite_r+0x1f8> -800016cc: 000c8993 mv s3,s9 -800016d0: 01997463 bgeu s2,s9,800016d8 <__sfvwrite_r+0x3d4> -800016d4: 00090993 mv s3,s2 -800016d8: 00098613 mv a2,s3 -800016dc: 000c0593 mv a1,s8 -800016e0: 3ad000ef jal ra,8000228c -800016e4: 00842783 lw a5,8(s0) -800016e8: 00042703 lw a4,0(s0) -800016ec: 413787b3 sub a5,a5,s3 -800016f0: 01370733 add a4,a4,s3 -800016f4: 00f42423 sw a5,8(s0) -800016f8: 00e42023 sw a4,0(s0) -800016fc: fc0794e3 bnez a5,800016c4 <__sfvwrite_r+0x3c0> -80001700: 00040593 mv a1,s0 -80001704: 000a8513 mv a0,s5 -80001708: 171010ef jal ra,80003078 <_fflush_r> -8000170c: f20512e3 bnez a0,80001630 <__sfvwrite_r+0x32c> -80001710: 41390933 sub s2,s2,s3 -80001714: de9ff06f j 800014fc <__sfvwrite_r+0x1f8> -80001718: 00090c93 mv s9,s2 -8000171c: 00090d13 mv s10,s2 -80001720: db1ff06f j 800014d0 <__sfvwrite_r+0x1cc> -80001724: 00040593 mv a1,s0 -80001728: 000a8513 mv a0,s5 -8000172c: 14d010ef jal ra,80003078 <_fflush_r> -80001730: e80502e3 beqz a0,800015b4 <__sfvwrite_r+0x2b0> -80001734: efdff06f j 80001630 <__sfvwrite_r+0x32c> -80001738: 000b8613 mv a2,s7 -8000173c: 000c0593 mv a1,s8 -80001740: 34d000ef jal ra,8000228c -80001744: 00842783 lw a5,8(s0) -80001748: 00042603 lw a2,0(s0) -8000174c: 000b8913 mv s2,s7 -80001750: 417787b3 sub a5,a5,s7 -80001754: 01760633 add a2,a2,s7 -80001758: 00f42423 sw a5,8(s0) -8000175c: 00c42023 sw a2,0(s0) -80001760: e49ff06f j 800015a8 <__sfvwrite_r+0x2a4> -80001764: 000a8513 mv a0,s5 -80001768: 44d000ef jal ra,800023b4 <_realloc_r> -8000176c: 00050c93 mv s9,a0 -80001770: d40510e3 bnez a0,800014b0 <__sfvwrite_r+0x1ac> -80001774: 01042583 lw a1,16(s0) -80001778: 000a8513 mv a0,s5 -8000177c: 2ad010ef jal ra,80003228 <_free_r> -80001780: 00c41783 lh a5,12(s0) -80001784: 00c00713 li a4,12 -80001788: 00eaa023 sw a4,0(s5) -8000178c: f7f7f793 andi a5,a5,-129 -80001790: ea5ff06f j 80001634 <__sfvwrite_r+0x330> -80001794: 00c00713 li a4,12 -80001798: 00c41783 lh a5,12(s0) -8000179c: 00eaa023 sw a4,0(s5) -800017a0: e95ff06f j 80001634 <__sfvwrite_r+0x330> -800017a4: fff00513 li a0,-1 -800017a8: e29ff06f j 800015d0 <__sfvwrite_r+0x2cc> - -800017ac <_fwalk>: -800017ac: fe010113 addi sp,sp,-32 -800017b0: 01212823 sw s2,16(sp) -800017b4: 01312623 sw s3,12(sp) -800017b8: 01412423 sw s4,8(sp) -800017bc: 01512223 sw s5,4(sp) -800017c0: 01612023 sw s6,0(sp) -800017c4: 00112e23 sw ra,28(sp) -800017c8: 00812c23 sw s0,24(sp) -800017cc: 00912a23 sw s1,20(sp) -800017d0: 00058b13 mv s6,a1 -800017d4: 2e050a93 addi s5,a0,736 -800017d8: 00000a13 li s4,0 -800017dc: 00100993 li s3,1 -800017e0: fff00913 li s2,-1 -800017e4: 004aa483 lw s1,4(s5) -800017e8: 008aa403 lw s0,8(s5) -800017ec: fff48493 addi s1,s1,-1 -800017f0: 0204c663 bltz s1,8000181c <_fwalk+0x70> -800017f4: 00c45783 lhu a5,12(s0) -800017f8: fff48493 addi s1,s1,-1 -800017fc: 00f9fc63 bgeu s3,a5,80001814 <_fwalk+0x68> -80001800: 00e41783 lh a5,14(s0) -80001804: 00040513 mv a0,s0 -80001808: 01278663 beq a5,s2,80001814 <_fwalk+0x68> -8000180c: 000b00e7 jalr s6 # 80000000 <__BSS_END__+0xffffb668> -80001810: 00aa6a33 or s4,s4,a0 -80001814: 06840413 addi s0,s0,104 -80001818: fd249ee3 bne s1,s2,800017f4 <_fwalk+0x48> -8000181c: 000aaa83 lw s5,0(s5) -80001820: fc0a92e3 bnez s5,800017e4 <_fwalk+0x38> -80001824: 01c12083 lw ra,28(sp) -80001828: 01812403 lw s0,24(sp) -8000182c: 01412483 lw s1,20(sp) -80001830: 01012903 lw s2,16(sp) -80001834: 00c12983 lw s3,12(sp) -80001838: 00412a83 lw s5,4(sp) -8000183c: 00012b03 lw s6,0(sp) -80001840: 000a0513 mv a0,s4 -80001844: 00812a03 lw s4,8(sp) -80001848: 02010113 addi sp,sp,32 -8000184c: 00008067 ret - -80001850 <_fwalk_reent>: -80001850: fd010113 addi sp,sp,-48 -80001854: 03212023 sw s2,32(sp) -80001858: 01312e23 sw s3,28(sp) -8000185c: 01412c23 sw s4,24(sp) -80001860: 01512a23 sw s5,20(sp) -80001864: 01612823 sw s6,16(sp) -80001868: 01712623 sw s7,12(sp) -8000186c: 02112623 sw ra,44(sp) -80001870: 02812423 sw s0,40(sp) -80001874: 02912223 sw s1,36(sp) -80001878: 00050a93 mv s5,a0 -8000187c: 00058b93 mv s7,a1 -80001880: 2e050b13 addi s6,a0,736 -80001884: 00000a13 li s4,0 -80001888: 00100993 li s3,1 -8000188c: fff00913 li s2,-1 -80001890: 004b2483 lw s1,4(s6) -80001894: 008b2403 lw s0,8(s6) -80001898: fff48493 addi s1,s1,-1 -8000189c: 0204c863 bltz s1,800018cc <_fwalk_reent+0x7c> -800018a0: 00c45783 lhu a5,12(s0) -800018a4: fff48493 addi s1,s1,-1 -800018a8: 00f9fe63 bgeu s3,a5,800018c4 <_fwalk_reent+0x74> -800018ac: 00e41783 lh a5,14(s0) -800018b0: 00040593 mv a1,s0 -800018b4: 000a8513 mv a0,s5 -800018b8: 01278663 beq a5,s2,800018c4 <_fwalk_reent+0x74> -800018bc: 000b80e7 jalr s7 -800018c0: 00aa6a33 or s4,s4,a0 -800018c4: 06840413 addi s0,s0,104 -800018c8: fd249ce3 bne s1,s2,800018a0 <_fwalk_reent+0x50> -800018cc: 000b2b03 lw s6,0(s6) -800018d0: fc0b10e3 bnez s6,80001890 <_fwalk_reent+0x40> -800018d4: 02c12083 lw ra,44(sp) -800018d8: 02812403 lw s0,40(sp) -800018dc: 02412483 lw s1,36(sp) -800018e0: 02012903 lw s2,32(sp) -800018e4: 01c12983 lw s3,28(sp) -800018e8: 01412a83 lw s5,20(sp) -800018ec: 01012b03 lw s6,16(sp) -800018f0: 00c12b83 lw s7,12(sp) -800018f4: 000a0513 mv a0,s4 -800018f8: 01812a03 lw s4,24(sp) -800018fc: 03010113 addi sp,sp,48 -80001900: 00008067 ret - -80001904 <_malloc_r>: -80001904: fd010113 addi sp,sp,-48 -80001908: 01312e23 sw s3,28(sp) -8000190c: 02112623 sw ra,44(sp) -80001910: 02812423 sw s0,40(sp) -80001914: 02912223 sw s1,36(sp) -80001918: 03212023 sw s2,32(sp) -8000191c: 01412c23 sw s4,24(sp) -80001920: 01512a23 sw s5,20(sp) -80001924: 01612823 sw s6,16(sp) -80001928: 01712623 sw s7,12(sp) -8000192c: 01812423 sw s8,8(sp) -80001930: 01912223 sw s9,4(sp) -80001934: 00b58793 addi a5,a1,11 -80001938: 01600713 li a4,22 -8000193c: 00050993 mv s3,a0 -80001940: 06f76463 bltu a4,a5,800019a8 <_malloc_r+0xa4> -80001944: 01000793 li a5,16 -80001948: 1eb7e263 bltu a5,a1,80001b2c <_malloc_r+0x228> -8000194c: 261000ef jal ra,800023ac <__malloc_lock> -80001950: 01000493 li s1,16 -80001954: 00200613 li a2,2 -80001958: 01800793 li a5,24 -8000195c: cc018913 addi s2,gp,-832 # 800044c8 <__malloc_av_> -80001960: 00f907b3 add a5,s2,a5 -80001964: 0047a403 lw s0,4(a5) -80001968: ff878713 addi a4,a5,-8 -8000196c: 20e40863 beq s0,a4,80001b7c <_malloc_r+0x278> -80001970: 00442783 lw a5,4(s0) -80001974: 00c42683 lw a3,12(s0) -80001978: 00842603 lw a2,8(s0) -8000197c: ffc7f793 andi a5,a5,-4 -80001980: 00f407b3 add a5,s0,a5 -80001984: 0047a703 lw a4,4(a5) -80001988: 00d62623 sw a3,12(a2) -8000198c: 00c6a423 sw a2,8(a3) -80001990: 00176713 ori a4,a4,1 -80001994: 00098513 mv a0,s3 -80001998: 00e7a223 sw a4,4(a5) -8000199c: 215000ef jal ra,800023b0 <__malloc_unlock> -800019a0: 00840513 addi a0,s0,8 -800019a4: 1940006f j 80001b38 <_malloc_r+0x234> -800019a8: ff87f493 andi s1,a5,-8 -800019ac: 1807c063 bltz a5,80001b2c <_malloc_r+0x228> -800019b0: 16b4ee63 bltu s1,a1,80001b2c <_malloc_r+0x228> -800019b4: 1f9000ef jal ra,800023ac <__malloc_lock> -800019b8: 1f700793 li a5,503 -800019bc: 4497fa63 bgeu a5,s1,80001e10 <_malloc_r+0x50c> -800019c0: 0094d793 srli a5,s1,0x9 -800019c4: 1a078463 beqz a5,80001b6c <_malloc_r+0x268> -800019c8: 00400713 li a4,4 -800019cc: 3cf76063 bltu a4,a5,80001d8c <_malloc_r+0x488> -800019d0: 0064d793 srli a5,s1,0x6 -800019d4: 03978613 addi a2,a5,57 -800019d8: 03878513 addi a0,a5,56 -800019dc: 00361693 slli a3,a2,0x3 -800019e0: cc018913 addi s2,gp,-832 # 800044c8 <__malloc_av_> -800019e4: 00d906b3 add a3,s2,a3 -800019e8: 0046a403 lw s0,4(a3) -800019ec: ff868693 addi a3,a3,-8 -800019f0: 02868663 beq a3,s0,80001a1c <_malloc_r+0x118> -800019f4: 00f00593 li a1,15 -800019f8: 0100006f j 80001a08 <_malloc_r+0x104> -800019fc: 32075263 bgez a4,80001d20 <_malloc_r+0x41c> -80001a00: 00c42403 lw s0,12(s0) -80001a04: 00868c63 beq a3,s0,80001a1c <_malloc_r+0x118> -80001a08: 00442783 lw a5,4(s0) -80001a0c: ffc7f793 andi a5,a5,-4 -80001a10: 40978733 sub a4,a5,s1 -80001a14: fee5d4e3 bge a1,a4,800019fc <_malloc_r+0xf8> -80001a18: 00050613 mv a2,a0 -80001a1c: 01092403 lw s0,16(s2) -80001a20: 00890893 addi a7,s2,8 -80001a24: 17140863 beq s0,a7,80001b94 <_malloc_r+0x290> -80001a28: 00442503 lw a0,4(s0) -80001a2c: 00f00693 li a3,15 -80001a30: ffc57513 andi a0,a0,-4 -80001a34: 409507b3 sub a5,a0,s1 -80001a38: 40f6c263 blt a3,a5,80001e3c <_malloc_r+0x538> -80001a3c: 01192a23 sw a7,20(s2) -80001a40: 01192823 sw a7,16(s2) -80001a44: 3c07dc63 bgez a5,80001e1c <_malloc_r+0x518> -80001a48: 1ff00793 li a5,511 -80001a4c: 2ea7e063 bltu a5,a0,80001d2c <_malloc_r+0x428> -80001a50: ff857793 andi a5,a0,-8 -80001a54: 00878793 addi a5,a5,8 -80001a58: 00492583 lw a1,4(s2) -80001a5c: 00f907b3 add a5,s2,a5 -80001a60: 0007a683 lw a3,0(a5) -80001a64: 00555513 srli a0,a0,0x5 -80001a68: 00100713 li a4,1 -80001a6c: 00a71733 sll a4,a4,a0 -80001a70: 00b76733 or a4,a4,a1 -80001a74: ff878593 addi a1,a5,-8 -80001a78: 00b42623 sw a1,12(s0) -80001a7c: 00d42423 sw a3,8(s0) -80001a80: 00e92223 sw a4,4(s2) -80001a84: 0087a023 sw s0,0(a5) -80001a88: 0086a623 sw s0,12(a3) -80001a8c: 40265793 srai a5,a2,0x2 -80001a90: 00100593 li a1,1 -80001a94: 00f595b3 sll a1,a1,a5 -80001a98: 10b76863 bltu a4,a1,80001ba8 <_malloc_r+0x2a4> -80001a9c: 00e5f7b3 and a5,a1,a4 -80001aa0: 02079463 bnez a5,80001ac8 <_malloc_r+0x1c4> -80001aa4: 00159593 slli a1,a1,0x1 -80001aa8: ffc67613 andi a2,a2,-4 -80001aac: 00e5f7b3 and a5,a1,a4 -80001ab0: 00460613 addi a2,a2,4 -80001ab4: 00079a63 bnez a5,80001ac8 <_malloc_r+0x1c4> -80001ab8: 00159593 slli a1,a1,0x1 -80001abc: 00e5f7b3 and a5,a1,a4 -80001ac0: 00460613 addi a2,a2,4 -80001ac4: fe078ae3 beqz a5,80001ab8 <_malloc_r+0x1b4> -80001ac8: 00f00813 li a6,15 -80001acc: 00361313 slli t1,a2,0x3 -80001ad0: 00690333 add t1,s2,t1 -80001ad4: 00030513 mv a0,t1 -80001ad8: 00c52783 lw a5,12(a0) -80001adc: 00060e13 mv t3,a2 -80001ae0: 2cf50863 beq a0,a5,80001db0 <_malloc_r+0x4ac> -80001ae4: 0047a703 lw a4,4(a5) -80001ae8: 00078413 mv s0,a5 -80001aec: 00c7a783 lw a5,12(a5) -80001af0: ffc77713 andi a4,a4,-4 -80001af4: 409706b3 sub a3,a4,s1 -80001af8: 2cd84863 blt a6,a3,80001dc8 <_malloc_r+0x4c4> -80001afc: fe06c2e3 bltz a3,80001ae0 <_malloc_r+0x1dc> -80001b00: 00e40733 add a4,s0,a4 -80001b04: 00472683 lw a3,4(a4) -80001b08: 00842603 lw a2,8(s0) -80001b0c: 00098513 mv a0,s3 -80001b10: 0016e693 ori a3,a3,1 -80001b14: 00d72223 sw a3,4(a4) -80001b18: 00f62623 sw a5,12(a2) -80001b1c: 00c7a423 sw a2,8(a5) -80001b20: 091000ef jal ra,800023b0 <__malloc_unlock> -80001b24: 00840513 addi a0,s0,8 -80001b28: 0100006f j 80001b38 <_malloc_r+0x234> -80001b2c: 00c00793 li a5,12 -80001b30: 00f9a023 sw a5,0(s3) -80001b34: 00000513 li a0,0 -80001b38: 02c12083 lw ra,44(sp) -80001b3c: 02812403 lw s0,40(sp) -80001b40: 02412483 lw s1,36(sp) -80001b44: 02012903 lw s2,32(sp) -80001b48: 01c12983 lw s3,28(sp) -80001b4c: 01812a03 lw s4,24(sp) -80001b50: 01412a83 lw s5,20(sp) -80001b54: 01012b03 lw s6,16(sp) -80001b58: 00c12b83 lw s7,12(sp) -80001b5c: 00812c03 lw s8,8(sp) -80001b60: 00412c83 lw s9,4(sp) -80001b64: 03010113 addi sp,sp,48 -80001b68: 00008067 ret -80001b6c: 20000693 li a3,512 -80001b70: 04000613 li a2,64 -80001b74: 03f00513 li a0,63 -80001b78: e69ff06f j 800019e0 <_malloc_r+0xdc> -80001b7c: 00c7a403 lw s0,12(a5) -80001b80: 00260613 addi a2,a2,2 -80001b84: de8796e3 bne a5,s0,80001970 <_malloc_r+0x6c> -80001b88: 01092403 lw s0,16(s2) -80001b8c: 00890893 addi a7,s2,8 -80001b90: e9141ce3 bne s0,a7,80001a28 <_malloc_r+0x124> -80001b94: 00492703 lw a4,4(s2) -80001b98: 40265793 srai a5,a2,0x2 -80001b9c: 00100593 li a1,1 -80001ba0: 00f595b3 sll a1,a1,a5 -80001ba4: eeb77ce3 bgeu a4,a1,80001a9c <_malloc_r+0x198> -80001ba8: 00892403 lw s0,8(s2) -80001bac: 00442a83 lw s5,4(s0) -80001bb0: ffcafb13 andi s6,s5,-4 -80001bb4: 009b6863 bltu s6,s1,80001bc4 <_malloc_r+0x2c0> -80001bb8: 409b07b3 sub a5,s6,s1 -80001bbc: 00f00713 li a4,15 -80001bc0: 12f74c63 blt a4,a5,80001cf8 <_malloc_r+0x3f4> -80001bc4: 0e01aa83 lw s5,224(gp) # 800048e8 <__malloc_top_pad> -80001bc8: 0d01a703 lw a4,208(gp) # 800048d8 <__malloc_sbrk_base> -80001bcc: fff00793 li a5,-1 -80001bd0: 01640a33 add s4,s0,s6 -80001bd4: 01548ab3 add s5,s1,s5 -80001bd8: 34f70463 beq a4,a5,80001f20 <_malloc_r+0x61c> -80001bdc: 000017b7 lui a5,0x1 -80001be0: 00f78793 addi a5,a5,15 # 100f <_start-0x7fffeff1> -80001be4: 00fa8ab3 add s5,s5,a5 -80001be8: fffff7b7 lui a5,0xfffff -80001bec: 00fafab3 and s5,s5,a5 -80001bf0: 000a8593 mv a1,s5 -80001bf4: 00098513 mv a0,s3 -80001bf8: 531000ef jal ra,80002928 <_sbrk_r> -80001bfc: fff00793 li a5,-1 -80001c00: 00050b93 mv s7,a0 -80001c04: 28f50663 beq a0,a5,80001e90 <_malloc_r+0x58c> -80001c08: 29456263 bltu a0,s4,80001e8c <_malloc_r+0x588> -80001c0c: 12818c13 addi s8,gp,296 # 80004930 <__malloc_current_mallinfo> -80001c10: 000c2583 lw a1,0(s8) -80001c14: 00ba85b3 add a1,s5,a1 -80001c18: 00bc2023 sw a1,0(s8) -80001c1c: 00058793 mv a5,a1 -80001c20: 38aa0e63 beq s4,a0,80001fbc <_malloc_r+0x6b8> -80001c24: 0d01a683 lw a3,208(gp) # 800048d8 <__malloc_sbrk_base> -80001c28: fff00713 li a4,-1 -80001c2c: 3ae68663 beq a3,a4,80001fd8 <_malloc_r+0x6d4> -80001c30: 414b8a33 sub s4,s7,s4 -80001c34: 00fa07b3 add a5,s4,a5 -80001c38: 00fc2023 sw a5,0(s8) -80001c3c: 007bfc93 andi s9,s7,7 -80001c40: 300c8263 beqz s9,80001f44 <_malloc_r+0x640> -80001c44: 000017b7 lui a5,0x1 -80001c48: 419b8bb3 sub s7,s7,s9 -80001c4c: 00878593 addi a1,a5,8 # 1008 <_start-0x7fffeff8> -80001c50: 008b8b93 addi s7,s7,8 -80001c54: 419585b3 sub a1,a1,s9 -80001c58: 015b8ab3 add s5,s7,s5 -80001c5c: fff78793 addi a5,a5,-1 -80001c60: 415585b3 sub a1,a1,s5 -80001c64: 00f5fa33 and s4,a1,a5 -80001c68: 000a0593 mv a1,s4 -80001c6c: 00098513 mv a0,s3 -80001c70: 4b9000ef jal ra,80002928 <_sbrk_r> -80001c74: fff00793 li a5,-1 -80001c78: 3af50a63 beq a0,a5,8000202c <_malloc_r+0x728> -80001c7c: 41750533 sub a0,a0,s7 -80001c80: 01450ab3 add s5,a0,s4 -80001c84: 000c2583 lw a1,0(s8) -80001c88: 01792423 sw s7,8(s2) -80001c8c: 001aea93 ori s5,s5,1 -80001c90: 00ba05b3 add a1,s4,a1 -80001c94: 00bc2023 sw a1,0(s8) -80001c98: 015ba223 sw s5,4(s7) -80001c9c: 35240263 beq s0,s2,80001fe0 <_malloc_r+0x6dc> -80001ca0: 00f00693 li a3,15 -80001ca4: 3566f263 bgeu a3,s6,80001fe8 <_malloc_r+0x6e4> -80001ca8: 00442703 lw a4,4(s0) -80001cac: ff4b0793 addi a5,s6,-12 -80001cb0: ff87f793 andi a5,a5,-8 -80001cb4: 00177713 andi a4,a4,1 -80001cb8: 00f76733 or a4,a4,a5 -80001cbc: 00e42223 sw a4,4(s0) -80001cc0: 00500613 li a2,5 -80001cc4: 00f40733 add a4,s0,a5 -80001cc8: 00c72223 sw a2,4(a4) -80001ccc: 00c72423 sw a2,8(a4) -80001cd0: 36f6e863 bltu a3,a5,80002040 <_malloc_r+0x73c> -80001cd4: 004baa83 lw s5,4(s7) -80001cd8: 000b8413 mv s0,s7 -80001cdc: 0dc1a703 lw a4,220(gp) # 800048e4 <__malloc_max_sbrked_mem> -80001ce0: 00b77463 bgeu a4,a1,80001ce8 <_malloc_r+0x3e4> -80001ce4: 0cb1ae23 sw a1,220(gp) # 800048e4 <__malloc_max_sbrked_mem> -80001ce8: 0d81a703 lw a4,216(gp) # 800048e0 <__malloc_max_total_mem> -80001cec: 1ab77663 bgeu a4,a1,80001e98 <_malloc_r+0x594> -80001cf0: 0cb1ac23 sw a1,216(gp) # 800048e0 <__malloc_max_total_mem> -80001cf4: 1a40006f j 80001e98 <_malloc_r+0x594> -80001cf8: 0014e713 ori a4,s1,1 -80001cfc: 00e42223 sw a4,4(s0) -80001d00: 009404b3 add s1,s0,s1 -80001d04: 00992423 sw s1,8(s2) -80001d08: 0017e793 ori a5,a5,1 -80001d0c: 00098513 mv a0,s3 -80001d10: 00f4a223 sw a5,4(s1) -80001d14: 69c000ef jal ra,800023b0 <__malloc_unlock> -80001d18: 00840513 addi a0,s0,8 -80001d1c: e1dff06f j 80001b38 <_malloc_r+0x234> -80001d20: 00c42683 lw a3,12(s0) -80001d24: 00842603 lw a2,8(s0) -80001d28: c59ff06f j 80001980 <_malloc_r+0x7c> -80001d2c: 00955793 srli a5,a0,0x9 -80001d30: 00400713 li a4,4 -80001d34: 14f77263 bgeu a4,a5,80001e78 <_malloc_r+0x574> -80001d38: 01400713 li a4,20 -80001d3c: 22f76a63 bltu a4,a5,80001f70 <_malloc_r+0x66c> -80001d40: 05c78693 addi a3,a5,92 -80001d44: 05b78593 addi a1,a5,91 -80001d48: 00369693 slli a3,a3,0x3 -80001d4c: 00d906b3 add a3,s2,a3 -80001d50: 0006a783 lw a5,0(a3) -80001d54: ff868693 addi a3,a3,-8 -80001d58: 1cf68863 beq a3,a5,80001f28 <_malloc_r+0x624> -80001d5c: 0047a703 lw a4,4(a5) -80001d60: ffc77713 andi a4,a4,-4 -80001d64: 00e57663 bgeu a0,a4,80001d70 <_malloc_r+0x46c> -80001d68: 0087a783 lw a5,8(a5) -80001d6c: fef698e3 bne a3,a5,80001d5c <_malloc_r+0x458> -80001d70: 00c7a683 lw a3,12(a5) -80001d74: 00492703 lw a4,4(s2) -80001d78: 00d42623 sw a3,12(s0) -80001d7c: 00f42423 sw a5,8(s0) -80001d80: 0086a423 sw s0,8(a3) -80001d84: 0087a623 sw s0,12(a5) -80001d88: d05ff06f j 80001a8c <_malloc_r+0x188> -80001d8c: 01400713 li a4,20 -80001d90: 12f77663 bgeu a4,a5,80001ebc <_malloc_r+0x5b8> -80001d94: 05400713 li a4,84 -80001d98: 1ef76a63 bltu a4,a5,80001f8c <_malloc_r+0x688> -80001d9c: 00c4d793 srli a5,s1,0xc -80001da0: 06f78613 addi a2,a5,111 -80001da4: 06e78513 addi a0,a5,110 -80001da8: 00361693 slli a3,a2,0x3 -80001dac: c35ff06f j 800019e0 <_malloc_r+0xdc> -80001db0: 001e0e13 addi t3,t3,1 -80001db4: 003e7793 andi a5,t3,3 -80001db8: 00850513 addi a0,a0,8 -80001dbc: 10078e63 beqz a5,80001ed8 <_malloc_r+0x5d4> -80001dc0: 00c52783 lw a5,12(a0) -80001dc4: d1dff06f j 80001ae0 <_malloc_r+0x1dc> -80001dc8: 00842603 lw a2,8(s0) -80001dcc: 0014e593 ori a1,s1,1 -80001dd0: 00b42223 sw a1,4(s0) -80001dd4: 00f62623 sw a5,12(a2) -80001dd8: 00c7a423 sw a2,8(a5) -80001ddc: 009404b3 add s1,s0,s1 -80001de0: 00992a23 sw s1,20(s2) -80001de4: 00992823 sw s1,16(s2) -80001de8: 0016e793 ori a5,a3,1 -80001dec: 0114a623 sw a7,12(s1) -80001df0: 0114a423 sw a7,8(s1) -80001df4: 00f4a223 sw a5,4(s1) -80001df8: 00e40733 add a4,s0,a4 -80001dfc: 00098513 mv a0,s3 -80001e00: 00d72023 sw a3,0(a4) -80001e04: 5ac000ef jal ra,800023b0 <__malloc_unlock> -80001e08: 00840513 addi a0,s0,8 -80001e0c: d2dff06f j 80001b38 <_malloc_r+0x234> -80001e10: 0034d613 srli a2,s1,0x3 -80001e14: 00848793 addi a5,s1,8 -80001e18: b45ff06f j 8000195c <_malloc_r+0x58> -80001e1c: 00a40733 add a4,s0,a0 -80001e20: 00472783 lw a5,4(a4) -80001e24: 00098513 mv a0,s3 -80001e28: 0017e793 ori a5,a5,1 -80001e2c: 00f72223 sw a5,4(a4) -80001e30: 580000ef jal ra,800023b0 <__malloc_unlock> -80001e34: 00840513 addi a0,s0,8 -80001e38: d01ff06f j 80001b38 <_malloc_r+0x234> -80001e3c: 0014e713 ori a4,s1,1 -80001e40: 00e42223 sw a4,4(s0) -80001e44: 009404b3 add s1,s0,s1 -80001e48: 00992a23 sw s1,20(s2) -80001e4c: 00992823 sw s1,16(s2) -80001e50: 0017e713 ori a4,a5,1 -80001e54: 0114a623 sw a7,12(s1) -80001e58: 0114a423 sw a7,8(s1) -80001e5c: 00e4a223 sw a4,4(s1) -80001e60: 00a40533 add a0,s0,a0 -80001e64: 00f52023 sw a5,0(a0) -80001e68: 00098513 mv a0,s3 -80001e6c: 544000ef jal ra,800023b0 <__malloc_unlock> -80001e70: 00840513 addi a0,s0,8 -80001e74: cc5ff06f j 80001b38 <_malloc_r+0x234> -80001e78: 00655793 srli a5,a0,0x6 -80001e7c: 03978693 addi a3,a5,57 -80001e80: 03878593 addi a1,a5,56 -80001e84: 00369693 slli a3,a3,0x3 -80001e88: ec5ff06f j 80001d4c <_malloc_r+0x448> -80001e8c: 11240e63 beq s0,s2,80001fa8 <_malloc_r+0x6a4> -80001e90: 00892403 lw s0,8(s2) -80001e94: 00442a83 lw s5,4(s0) -80001e98: ffcafa93 andi s5,s5,-4 -80001e9c: 409a87b3 sub a5,s5,s1 -80001ea0: 009ae663 bltu s5,s1,80001eac <_malloc_r+0x5a8> -80001ea4: 00f00713 li a4,15 -80001ea8: e4f748e3 blt a4,a5,80001cf8 <_malloc_r+0x3f4> -80001eac: 00098513 mv a0,s3 -80001eb0: 500000ef jal ra,800023b0 <__malloc_unlock> -80001eb4: 00000513 li a0,0 -80001eb8: c81ff06f j 80001b38 <_malloc_r+0x234> -80001ebc: 05c78613 addi a2,a5,92 -80001ec0: 05b78513 addi a0,a5,91 -80001ec4: 00361693 slli a3,a2,0x3 -80001ec8: b19ff06f j 800019e0 <_malloc_r+0xdc> -80001ecc: 00832783 lw a5,8(t1) -80001ed0: fff60613 addi a2,a2,-1 -80001ed4: 1c679063 bne a5,t1,80002094 <_malloc_r+0x790> -80001ed8: 00367793 andi a5,a2,3 -80001edc: ff830313 addi t1,t1,-8 -80001ee0: fe0796e3 bnez a5,80001ecc <_malloc_r+0x5c8> -80001ee4: 00492703 lw a4,4(s2) -80001ee8: fff5c793 not a5,a1 -80001eec: 00e7f7b3 and a5,a5,a4 -80001ef0: 00f92223 sw a5,4(s2) -80001ef4: 00159593 slli a1,a1,0x1 -80001ef8: cab7e8e3 bltu a5,a1,80001ba8 <_malloc_r+0x2a4> -80001efc: ca0586e3 beqz a1,80001ba8 <_malloc_r+0x2a4> -80001f00: 00f5f733 and a4,a1,a5 -80001f04: 00071a63 bnez a4,80001f18 <_malloc_r+0x614> -80001f08: 00159593 slli a1,a1,0x1 -80001f0c: 00f5f733 and a4,a1,a5 -80001f10: 004e0e13 addi t3,t3,4 -80001f14: fe070ae3 beqz a4,80001f08 <_malloc_r+0x604> -80001f18: 000e0613 mv a2,t3 -80001f1c: bb1ff06f j 80001acc <_malloc_r+0x1c8> -80001f20: 010a8a93 addi s5,s5,16 -80001f24: ccdff06f j 80001bf0 <_malloc_r+0x2ec> -80001f28: 00492503 lw a0,4(s2) -80001f2c: 4025d593 srai a1,a1,0x2 -80001f30: 00100713 li a4,1 -80001f34: 00b71733 sll a4,a4,a1 -80001f38: 00a76733 or a4,a4,a0 -80001f3c: 00e92223 sw a4,4(s2) -80001f40: e39ff06f j 80001d78 <_malloc_r+0x474> -80001f44: 015b85b3 add a1,s7,s5 -80001f48: 40b005b3 neg a1,a1 -80001f4c: 01459593 slli a1,a1,0x14 -80001f50: 0145da13 srli s4,a1,0x14 -80001f54: 000a0593 mv a1,s4 -80001f58: 00098513 mv a0,s3 -80001f5c: 1cd000ef jal ra,80002928 <_sbrk_r> -80001f60: fff00793 li a5,-1 -80001f64: d0f51ce3 bne a0,a5,80001c7c <_malloc_r+0x378> -80001f68: 00000a13 li s4,0 -80001f6c: d19ff06f j 80001c84 <_malloc_r+0x380> -80001f70: 05400713 li a4,84 -80001f74: 08f76063 bltu a4,a5,80001ff4 <_malloc_r+0x6f0> -80001f78: 00c55793 srli a5,a0,0xc -80001f7c: 06f78693 addi a3,a5,111 -80001f80: 06e78593 addi a1,a5,110 -80001f84: 00369693 slli a3,a3,0x3 -80001f88: dc5ff06f j 80001d4c <_malloc_r+0x448> -80001f8c: 15400713 li a4,340 -80001f90: 08f76063 bltu a4,a5,80002010 <_malloc_r+0x70c> -80001f94: 00f4d793 srli a5,s1,0xf -80001f98: 07878613 addi a2,a5,120 -80001f9c: 07778513 addi a0,a5,119 -80001fa0: 00361693 slli a3,a2,0x3 -80001fa4: a3dff06f j 800019e0 <_malloc_r+0xdc> -80001fa8: 12818c13 addi s8,gp,296 # 80004930 <__malloc_current_mallinfo> -80001fac: 000c2783 lw a5,0(s8) -80001fb0: 00fa87b3 add a5,s5,a5 -80001fb4: 00fc2023 sw a5,0(s8) -80001fb8: c6dff06f j 80001c24 <_malloc_r+0x320> -80001fbc: 014a1713 slli a4,s4,0x14 -80001fc0: c60712e3 bnez a4,80001c24 <_malloc_r+0x320> -80001fc4: 00892403 lw s0,8(s2) -80001fc8: 015b0ab3 add s5,s6,s5 -80001fcc: 001aea93 ori s5,s5,1 -80001fd0: 01542223 sw s5,4(s0) -80001fd4: d09ff06f j 80001cdc <_malloc_r+0x3d8> -80001fd8: 0d71a823 sw s7,208(gp) # 800048d8 <__malloc_sbrk_base> -80001fdc: c61ff06f j 80001c3c <_malloc_r+0x338> -80001fe0: 000b8413 mv s0,s7 -80001fe4: cf9ff06f j 80001cdc <_malloc_r+0x3d8> -80001fe8: 00100793 li a5,1 -80001fec: 00fba223 sw a5,4(s7) -80001ff0: ebdff06f j 80001eac <_malloc_r+0x5a8> -80001ff4: 15400713 li a4,340 -80001ff8: 06f76263 bltu a4,a5,8000205c <_malloc_r+0x758> -80001ffc: 00f55793 srli a5,a0,0xf -80002000: 07878693 addi a3,a5,120 -80002004: 07778593 addi a1,a5,119 -80002008: 00369693 slli a3,a3,0x3 -8000200c: d41ff06f j 80001d4c <_malloc_r+0x448> -80002010: 55400713 li a4,1364 -80002014: 06f76263 bltu a4,a5,80002078 <_malloc_r+0x774> -80002018: 0124d793 srli a5,s1,0x12 -8000201c: 07d78613 addi a2,a5,125 -80002020: 07c78513 addi a0,a5,124 -80002024: 00361693 slli a3,a2,0x3 -80002028: 9b9ff06f j 800019e0 <_malloc_r+0xdc> -8000202c: ff8c8c93 addi s9,s9,-8 -80002030: 019a8ab3 add s5,s5,s9 -80002034: 417a8ab3 sub s5,s5,s7 -80002038: 00000a13 li s4,0 -8000203c: c49ff06f j 80001c84 <_malloc_r+0x380> -80002040: 00840593 addi a1,s0,8 -80002044: 00098513 mv a0,s3 -80002048: 1e0010ef jal ra,80003228 <_free_r> -8000204c: 00892403 lw s0,8(s2) -80002050: 000c2583 lw a1,0(s8) -80002054: 00442a83 lw s5,4(s0) -80002058: c85ff06f j 80001cdc <_malloc_r+0x3d8> -8000205c: 55400713 li a4,1364 -80002060: 02f76463 bltu a4,a5,80002088 <_malloc_r+0x784> -80002064: 01255793 srli a5,a0,0x12 -80002068: 07d78693 addi a3,a5,125 -8000206c: 07c78593 addi a1,a5,124 -80002070: 00369693 slli a3,a3,0x3 -80002074: cd9ff06f j 80001d4c <_malloc_r+0x448> -80002078: 3f800693 li a3,1016 -8000207c: 07f00613 li a2,127 -80002080: 07e00513 li a0,126 -80002084: 95dff06f j 800019e0 <_malloc_r+0xdc> -80002088: 3f800693 li a3,1016 -8000208c: 07e00593 li a1,126 -80002090: cbdff06f j 80001d4c <_malloc_r+0x448> -80002094: 00492783 lw a5,4(s2) -80002098: e5dff06f j 80001ef4 <_malloc_r+0x5f0> - -8000209c : -8000209c: 00357793 andi a5,a0,3 -800020a0: 0ff5f693 andi a3,a1,255 -800020a4: 02078a63 beqz a5,800020d8 -800020a8: fff60793 addi a5,a2,-1 -800020ac: 02060e63 beqz a2,800020e8 -800020b0: fff00613 li a2,-1 -800020b4: 0180006f j 800020cc -800020b8: 00150513 addi a0,a0,1 -800020bc: 00357713 andi a4,a0,3 -800020c0: 00070e63 beqz a4,800020dc -800020c4: fff78793 addi a5,a5,-1 -800020c8: 02c78063 beq a5,a2,800020e8 -800020cc: 00054703 lbu a4,0(a0) -800020d0: fed714e3 bne a4,a3,800020b8 -800020d4: 00008067 ret -800020d8: 00060793 mv a5,a2 -800020dc: 00300713 li a4,3 -800020e0: 02f76663 bltu a4,a5,8000210c -800020e4: 00079663 bnez a5,800020f0 -800020e8: 00000513 li a0,0 -800020ec: 00008067 ret -800020f0: 00f507b3 add a5,a0,a5 -800020f4: 00c0006f j 80002100 -800020f8: 00150513 addi a0,a0,1 -800020fc: fea786e3 beq a5,a0,800020e8 -80002100: 00054703 lbu a4,0(a0) -80002104: fed71ae3 bne a4,a3,800020f8 -80002108: 00008067 ret -8000210c: 00010737 lui a4,0x10 -80002110: 00859893 slli a7,a1,0x8 -80002114: fff70713 addi a4,a4,-1 # ffff <_start-0x7fff0001> -80002118: 00e8f8b3 and a7,a7,a4 -8000211c: 0ff5f593 andi a1,a1,255 -80002120: 00b8e5b3 or a1,a7,a1 -80002124: 01059893 slli a7,a1,0x10 -80002128: 00b8e8b3 or a7,a7,a1 -8000212c: feff0837 lui a6,0xfeff0 -80002130: 808085b7 lui a1,0x80808 -80002134: eff80813 addi a6,a6,-257 # fefefeff <__BSS_END__+0x7efeb567> -80002138: 08058593 addi a1,a1,128 # 80808080 <__BSS_END__+0x8036e8> -8000213c: 00300313 li t1,3 -80002140: 00052703 lw a4,0(a0) -80002144: 00e8c733 xor a4,a7,a4 -80002148: 01070633 add a2,a4,a6 -8000214c: fff74713 not a4,a4 -80002150: 00e67733 and a4,a2,a4 -80002154: 00b77733 and a4,a4,a1 -80002158: f8071ce3 bnez a4,800020f0 -8000215c: ffc78793 addi a5,a5,-4 -80002160: 00450513 addi a0,a0,4 -80002164: fcf36ee3 bltu t1,a5,80002140 -80002168: f80794e3 bnez a5,800020f0 -8000216c: f7dff06f j 800020e8 - -80002170 : -80002170: 00a5c7b3 xor a5,a1,a0 -80002174: 0037f793 andi a5,a5,3 -80002178: 00c508b3 add a7,a0,a2 -8000217c: 06079263 bnez a5,800021e0 -80002180: 00300793 li a5,3 -80002184: 04c7fe63 bgeu a5,a2,800021e0 -80002188: 00357793 andi a5,a0,3 -8000218c: 00050713 mv a4,a0 -80002190: 06079863 bnez a5,80002200 -80002194: ffc8f613 andi a2,a7,-4 -80002198: fe060793 addi a5,a2,-32 -8000219c: 08f76c63 bltu a4,a5,80002234 -800021a0: 02c77c63 bgeu a4,a2,800021d8 -800021a4: 00058693 mv a3,a1 -800021a8: 00070793 mv a5,a4 -800021ac: 0006a803 lw a6,0(a3) -800021b0: 00478793 addi a5,a5,4 -800021b4: 00468693 addi a3,a3,4 -800021b8: ff07ae23 sw a6,-4(a5) -800021bc: fec7e8e3 bltu a5,a2,800021ac -800021c0: fff60793 addi a5,a2,-1 -800021c4: 40e787b3 sub a5,a5,a4 -800021c8: ffc7f793 andi a5,a5,-4 -800021cc: 00478793 addi a5,a5,4 -800021d0: 00f70733 add a4,a4,a5 -800021d4: 00f585b3 add a1,a1,a5 -800021d8: 01176863 bltu a4,a7,800021e8 -800021dc: 00008067 ret -800021e0: 00050713 mv a4,a0 -800021e4: ff157ce3 bgeu a0,a7,800021dc -800021e8: 0005c783 lbu a5,0(a1) -800021ec: 00170713 addi a4,a4,1 -800021f0: 00158593 addi a1,a1,1 -800021f4: fef70fa3 sb a5,-1(a4) -800021f8: ff1768e3 bltu a4,a7,800021e8 -800021fc: 00008067 ret -80002200: 0005c683 lbu a3,0(a1) -80002204: 00170713 addi a4,a4,1 -80002208: 00377793 andi a5,a4,3 -8000220c: fed70fa3 sb a3,-1(a4) -80002210: 00158593 addi a1,a1,1 -80002214: f80780e3 beqz a5,80002194 -80002218: 0005c683 lbu a3,0(a1) -8000221c: 00170713 addi a4,a4,1 -80002220: 00377793 andi a5,a4,3 -80002224: fed70fa3 sb a3,-1(a4) -80002228: 00158593 addi a1,a1,1 -8000222c: fc079ae3 bnez a5,80002200 -80002230: f65ff06f j 80002194 -80002234: 0045a683 lw a3,4(a1) -80002238: 0005a283 lw t0,0(a1) -8000223c: 0085af83 lw t6,8(a1) -80002240: 00c5af03 lw t5,12(a1) -80002244: 0105ae83 lw t4,16(a1) -80002248: 0145ae03 lw t3,20(a1) -8000224c: 0185a303 lw t1,24(a1) -80002250: 01c5a803 lw a6,28(a1) -80002254: 00d72223 sw a3,4(a4) -80002258: 0205a683 lw a3,32(a1) -8000225c: 00572023 sw t0,0(a4) -80002260: 01f72423 sw t6,8(a4) -80002264: 01e72623 sw t5,12(a4) -80002268: 01d72823 sw t4,16(a4) -8000226c: 01c72a23 sw t3,20(a4) -80002270: 00672c23 sw t1,24(a4) -80002274: 01072e23 sw a6,28(a4) -80002278: 02d72023 sw a3,32(a4) -8000227c: 02470713 addi a4,a4,36 -80002280: 02458593 addi a1,a1,36 -80002284: faf768e3 bltu a4,a5,80002234 -80002288: f19ff06f j 800021a0 - -8000228c : -8000228c: 02a5f663 bgeu a1,a0,800022b8 -80002290: 00c587b3 add a5,a1,a2 -80002294: 02f57263 bgeu a0,a5,800022b8 -80002298: 00c50733 add a4,a0,a2 -8000229c: 0e060a63 beqz a2,80002390 -800022a0: fff7c683 lbu a3,-1(a5) -800022a4: fff78793 addi a5,a5,-1 -800022a8: fff70713 addi a4,a4,-1 -800022ac: 00d70023 sb a3,0(a4) -800022b0: fef598e3 bne a1,a5,800022a0 -800022b4: 00008067 ret -800022b8: 00f00793 li a5,15 -800022bc: 02c7e863 bltu a5,a2,800022ec -800022c0: 00050793 mv a5,a0 -800022c4: fff60693 addi a3,a2,-1 -800022c8: 0c060c63 beqz a2,800023a0 -800022cc: 00168693 addi a3,a3,1 -800022d0: 00d786b3 add a3,a5,a3 -800022d4: 0005c703 lbu a4,0(a1) -800022d8: 00178793 addi a5,a5,1 -800022dc: 00158593 addi a1,a1,1 -800022e0: fee78fa3 sb a4,-1(a5) -800022e4: fed798e3 bne a5,a3,800022d4 -800022e8: 00008067 ret -800022ec: 00a5e7b3 or a5,a1,a0 -800022f0: 0037f793 andi a5,a5,3 -800022f4: 0a079063 bnez a5,80002394 -800022f8: ff060893 addi a7,a2,-16 -800022fc: ff08f893 andi a7,a7,-16 -80002300: 01088893 addi a7,a7,16 -80002304: 01150833 add a6,a0,a7 -80002308: 00058713 mv a4,a1 -8000230c: 00050793 mv a5,a0 -80002310: 00072683 lw a3,0(a4) -80002314: 01070713 addi a4,a4,16 -80002318: 01078793 addi a5,a5,16 -8000231c: fed7a823 sw a3,-16(a5) -80002320: ff472683 lw a3,-12(a4) -80002324: fed7aa23 sw a3,-12(a5) -80002328: ff872683 lw a3,-8(a4) -8000232c: fed7ac23 sw a3,-8(a5) -80002330: ffc72683 lw a3,-4(a4) -80002334: fed7ae23 sw a3,-4(a5) -80002338: fcf81ce3 bne a6,a5,80002310 -8000233c: 00c67713 andi a4,a2,12 -80002340: 011585b3 add a1,a1,a7 -80002344: 00f67813 andi a6,a2,15 -80002348: 04070e63 beqz a4,800023a4 -8000234c: 00058713 mv a4,a1 -80002350: 00078893 mv a7,a5 -80002354: 00300e13 li t3,3 -80002358: 00072303 lw t1,0(a4) -8000235c: 00470713 addi a4,a4,4 -80002360: 40e806b3 sub a3,a6,a4 -80002364: 0068a023 sw t1,0(a7) -80002368: 00d586b3 add a3,a1,a3 -8000236c: 00488893 addi a7,a7,4 -80002370: fede64e3 bltu t3,a3,80002358 -80002374: ffc80713 addi a4,a6,-4 -80002378: ffc77713 andi a4,a4,-4 -8000237c: 00470713 addi a4,a4,4 -80002380: 00367613 andi a2,a2,3 -80002384: 00e787b3 add a5,a5,a4 -80002388: 00e585b3 add a1,a1,a4 -8000238c: f39ff06f j 800022c4 -80002390: 00008067 ret -80002394: fff60693 addi a3,a2,-1 -80002398: 00050793 mv a5,a0 -8000239c: f31ff06f j 800022cc -800023a0: 00008067 ret -800023a4: 00080613 mv a2,a6 -800023a8: f1dff06f j 800022c4 - -800023ac <__malloc_lock>: -800023ac: 00008067 ret - -800023b0 <__malloc_unlock>: -800023b0: 00008067 ret - -800023b4 <_realloc_r>: -800023b4: fd010113 addi sp,sp,-48 -800023b8: 03212023 sw s2,32(sp) -800023bc: 02112623 sw ra,44(sp) -800023c0: 02812423 sw s0,40(sp) -800023c4: 02912223 sw s1,36(sp) -800023c8: 01312e23 sw s3,28(sp) -800023cc: 01412c23 sw s4,24(sp) -800023d0: 01512a23 sw s5,20(sp) -800023d4: 01612823 sw s6,16(sp) -800023d8: 01712623 sw s7,12(sp) -800023dc: 01812423 sw s8,8(sp) -800023e0: 00060913 mv s2,a2 -800023e4: 22058263 beqz a1,80002608 <_realloc_r+0x254> -800023e8: 00058413 mv s0,a1 -800023ec: 00050993 mv s3,a0 -800023f0: fbdff0ef jal ra,800023ac <__malloc_lock> -800023f4: 00b90493 addi s1,s2,11 -800023f8: 01600793 li a5,22 -800023fc: 0e97fc63 bgeu a5,s1,800024f4 <_realloc_r+0x140> -80002400: ff84f493 andi s1,s1,-8 -80002404: 00048713 mv a4,s1 -80002408: 0e04cc63 bltz s1,80002500 <_realloc_r+0x14c> -8000240c: 0f24ea63 bltu s1,s2,80002500 <_realloc_r+0x14c> -80002410: ffc42783 lw a5,-4(s0) -80002414: ff840a93 addi s5,s0,-8 -80002418: ffc7fa13 andi s4,a5,-4 -8000241c: 014a8b33 add s6,s5,s4 -80002420: 18ea5a63 bge s4,a4,800025b4 <_realloc_r+0x200> -80002424: cc018b93 addi s7,gp,-832 # 800044c8 <__malloc_av_> -80002428: 008ba603 lw a2,8(s7) -8000242c: 004b2683 lw a3,4(s6) -80002430: 23660e63 beq a2,s6,8000266c <_realloc_r+0x2b8> -80002434: ffe6f613 andi a2,a3,-2 -80002438: 00cb0633 add a2,s6,a2 -8000243c: 00462603 lw a2,4(a2) -80002440: 00167613 andi a2,a2,1 -80002444: 1a061463 bnez a2,800025ec <_realloc_r+0x238> -80002448: ffc6f693 andi a3,a3,-4 -8000244c: 00da0633 add a2,s4,a3 -80002450: 32e65e63 bge a2,a4,8000278c <_realloc_r+0x3d8> -80002454: 0017f793 andi a5,a5,1 -80002458: 02079463 bnez a5,80002480 <_realloc_r+0xcc> -8000245c: ff842c03 lw s8,-8(s0) -80002460: 418a8c33 sub s8,s5,s8 -80002464: 004c2783 lw a5,4(s8) -80002468: ffc7f793 andi a5,a5,-4 -8000246c: 00d786b3 add a3,a5,a3 -80002470: 01468bb3 add s7,a3,s4 -80002474: 34ebda63 bge s7,a4,800027c8 <_realloc_r+0x414> -80002478: 00fa0bb3 add s7,s4,a5 -8000247c: 0cebd263 bge s7,a4,80002540 <_realloc_r+0x18c> -80002480: 00090593 mv a1,s2 -80002484: 00098513 mv a0,s3 -80002488: c7cff0ef jal ra,80001904 <_malloc_r> -8000248c: 00050913 mv s2,a0 -80002490: 04050c63 beqz a0,800024e8 <_realloc_r+0x134> -80002494: ffc42783 lw a5,-4(s0) -80002498: ff850713 addi a4,a0,-8 -8000249c: ffe7f793 andi a5,a5,-2 -800024a0: 00fa87b3 add a5,s5,a5 -800024a4: 30e78263 beq a5,a4,800027a8 <_realloc_r+0x3f4> -800024a8: ffca0613 addi a2,s4,-4 -800024ac: 02400793 li a5,36 -800024b0: 30c7e663 bltu a5,a2,800027bc <_realloc_r+0x408> -800024b4: 01300713 li a4,19 -800024b8: 00042683 lw a3,0(s0) -800024bc: 26c76c63 bltu a4,a2,80002734 <_realloc_r+0x380> -800024c0: 00050793 mv a5,a0 -800024c4: 00040713 mv a4,s0 -800024c8: 00d7a023 sw a3,0(a5) -800024cc: 00472683 lw a3,4(a4) -800024d0: 00d7a223 sw a3,4(a5) -800024d4: 00872703 lw a4,8(a4) -800024d8: 00e7a423 sw a4,8(a5) -800024dc: 00040593 mv a1,s0 -800024e0: 00098513 mv a0,s3 -800024e4: 545000ef jal ra,80003228 <_free_r> -800024e8: 00098513 mv a0,s3 -800024ec: ec5ff0ef jal ra,800023b0 <__malloc_unlock> -800024f0: 01c0006f j 8000250c <_realloc_r+0x158> -800024f4: 01000493 li s1,16 -800024f8: 01000713 li a4,16 -800024fc: f124fae3 bgeu s1,s2,80002410 <_realloc_r+0x5c> -80002500: 00c00793 li a5,12 -80002504: 00f9a023 sw a5,0(s3) -80002508: 00000913 li s2,0 -8000250c: 02c12083 lw ra,44(sp) -80002510: 02812403 lw s0,40(sp) -80002514: 02412483 lw s1,36(sp) -80002518: 01c12983 lw s3,28(sp) -8000251c: 01812a03 lw s4,24(sp) -80002520: 01412a83 lw s5,20(sp) -80002524: 01012b03 lw s6,16(sp) -80002528: 00c12b83 lw s7,12(sp) -8000252c: 00812c03 lw s8,8(sp) -80002530: 00090513 mv a0,s2 -80002534: 02012903 lw s2,32(sp) -80002538: 03010113 addi sp,sp,48 -8000253c: 00008067 ret -80002540: 00cc2783 lw a5,12(s8) -80002544: 008c2703 lw a4,8(s8) -80002548: ffca0613 addi a2,s4,-4 -8000254c: 02400693 li a3,36 -80002550: 00f72623 sw a5,12(a4) -80002554: 00e7a423 sw a4,8(a5) -80002558: 008c0913 addi s2,s8,8 -8000255c: 017c0b33 add s6,s8,s7 -80002560: 2ec6e463 bltu a3,a2,80002848 <_realloc_r+0x494> -80002564: 01300593 li a1,19 -80002568: 00042703 lw a4,0(s0) -8000256c: 00090793 mv a5,s2 -80002570: 02c5f263 bgeu a1,a2,80002594 <_realloc_r+0x1e0> -80002574: 00ec2423 sw a4,8(s8) -80002578: 00442703 lw a4,4(s0) -8000257c: 01b00793 li a5,27 -80002580: 00ec2623 sw a4,12(s8) -80002584: 30c7e263 bltu a5,a2,80002888 <_realloc_r+0x4d4> -80002588: 00842703 lw a4,8(s0) -8000258c: 010c0793 addi a5,s8,16 -80002590: 00840413 addi s0,s0,8 -80002594: 00e7a023 sw a4,0(a5) -80002598: 00442703 lw a4,4(s0) -8000259c: 000b8a13 mv s4,s7 -800025a0: 000c0a93 mv s5,s8 -800025a4: 00e7a223 sw a4,4(a5) -800025a8: 00842703 lw a4,8(s0) -800025ac: 00090413 mv s0,s2 -800025b0: 00e7a423 sw a4,8(a5) -800025b4: 004aa783 lw a5,4(s5) -800025b8: 409a0733 sub a4,s4,s1 -800025bc: 00f00693 li a3,15 -800025c0: 0017f793 andi a5,a5,1 -800025c4: 06e6ec63 bltu a3,a4,8000263c <_realloc_r+0x288> -800025c8: 00fa67b3 or a5,s4,a5 -800025cc: 00faa223 sw a5,4(s5) -800025d0: 004b2783 lw a5,4(s6) -800025d4: 0017e793 ori a5,a5,1 -800025d8: 00fb2223 sw a5,4(s6) -800025dc: 00098513 mv a0,s3 -800025e0: dd1ff0ef jal ra,800023b0 <__malloc_unlock> -800025e4: 00040913 mv s2,s0 -800025e8: f25ff06f j 8000250c <_realloc_r+0x158> -800025ec: 0017f793 andi a5,a5,1 -800025f0: e80798e3 bnez a5,80002480 <_realloc_r+0xcc> -800025f4: ff842c03 lw s8,-8(s0) -800025f8: 418a8c33 sub s8,s5,s8 -800025fc: 004c2783 lw a5,4(s8) -80002600: ffc7f793 andi a5,a5,-4 -80002604: e75ff06f j 80002478 <_realloc_r+0xc4> -80002608: 02812403 lw s0,40(sp) -8000260c: 02c12083 lw ra,44(sp) -80002610: 02412483 lw s1,36(sp) -80002614: 02012903 lw s2,32(sp) -80002618: 01c12983 lw s3,28(sp) -8000261c: 01812a03 lw s4,24(sp) -80002620: 01412a83 lw s5,20(sp) -80002624: 01012b03 lw s6,16(sp) -80002628: 00c12b83 lw s7,12(sp) -8000262c: 00812c03 lw s8,8(sp) -80002630: 00060593 mv a1,a2 -80002634: 03010113 addi sp,sp,48 -80002638: accff06f j 80001904 <_malloc_r> -8000263c: 0097e7b3 or a5,a5,s1 -80002640: 00faa223 sw a5,4(s5) -80002644: 009a85b3 add a1,s5,s1 -80002648: 00176713 ori a4,a4,1 -8000264c: 00e5a223 sw a4,4(a1) -80002650: 004b2783 lw a5,4(s6) -80002654: 00858593 addi a1,a1,8 -80002658: 00098513 mv a0,s3 -8000265c: 0017e793 ori a5,a5,1 -80002660: 00fb2223 sw a5,4(s6) -80002664: 3c5000ef jal ra,80003228 <_free_r> -80002668: f75ff06f j 800025dc <_realloc_r+0x228> -8000266c: ffc6f693 andi a3,a3,-4 -80002670: 00da0633 add a2,s4,a3 -80002674: 01048593 addi a1,s1,16 -80002678: 0eb65063 bge a2,a1,80002758 <_realloc_r+0x3a4> -8000267c: 0017f793 andi a5,a5,1 -80002680: e00790e3 bnez a5,80002480 <_realloc_r+0xcc> -80002684: ff842c03 lw s8,-8(s0) -80002688: 418a8c33 sub s8,s5,s8 -8000268c: 004c2783 lw a5,4(s8) -80002690: ffc7f793 andi a5,a5,-4 -80002694: 00d786b3 add a3,a5,a3 -80002698: 01468b33 add s6,a3,s4 -8000269c: dcbb4ee3 blt s6,a1,80002478 <_realloc_r+0xc4> -800026a0: 00cc2783 lw a5,12(s8) -800026a4: 008c2703 lw a4,8(s8) -800026a8: ffca0613 addi a2,s4,-4 -800026ac: 02400693 li a3,36 -800026b0: 00f72623 sw a5,12(a4) -800026b4: 00e7a423 sw a4,8(a5) -800026b8: 008c0913 addi s2,s8,8 -800026bc: 20c6ee63 bltu a3,a2,800028d8 <_realloc_r+0x524> -800026c0: 01300593 li a1,19 -800026c4: 00042703 lw a4,0(s0) -800026c8: 00090793 mv a5,s2 -800026cc: 02c5f263 bgeu a1,a2,800026f0 <_realloc_r+0x33c> -800026d0: 00ec2423 sw a4,8(s8) -800026d4: 00442703 lw a4,4(s0) -800026d8: 01b00793 li a5,27 -800026dc: 00ec2623 sw a4,12(s8) -800026e0: 20c7e463 bltu a5,a2,800028e8 <_realloc_r+0x534> -800026e4: 00842703 lw a4,8(s0) -800026e8: 010c0793 addi a5,s8,16 -800026ec: 00840413 addi s0,s0,8 -800026f0: 00e7a023 sw a4,0(a5) -800026f4: 00442703 lw a4,4(s0) -800026f8: 00e7a223 sw a4,4(a5) -800026fc: 00842703 lw a4,8(s0) -80002700: 00e7a423 sw a4,8(a5) -80002704: 009c0733 add a4,s8,s1 -80002708: 409b07b3 sub a5,s6,s1 -8000270c: 00eba423 sw a4,8(s7) -80002710: 0017e793 ori a5,a5,1 -80002714: 00f72223 sw a5,4(a4) -80002718: 004c2783 lw a5,4(s8) -8000271c: 00098513 mv a0,s3 -80002720: 0017f793 andi a5,a5,1 -80002724: 0097e4b3 or s1,a5,s1 -80002728: 009c2223 sw s1,4(s8) -8000272c: c85ff0ef jal ra,800023b0 <__malloc_unlock> -80002730: dddff06f j 8000250c <_realloc_r+0x158> -80002734: 00d52023 sw a3,0(a0) -80002738: 00442683 lw a3,4(s0) -8000273c: 01b00713 li a4,27 -80002740: 00d52223 sw a3,4(a0) -80002744: 12c76063 bltu a4,a2,80002864 <_realloc_r+0x4b0> -80002748: 00842683 lw a3,8(s0) -8000274c: 00840713 addi a4,s0,8 -80002750: 00850793 addi a5,a0,8 -80002754: d75ff06f j 800024c8 <_realloc_r+0x114> -80002758: 009a8ab3 add s5,s5,s1 -8000275c: 409607b3 sub a5,a2,s1 -80002760: 015ba423 sw s5,8(s7) -80002764: 0017e793 ori a5,a5,1 -80002768: 00faa223 sw a5,4(s5) -8000276c: ffc42783 lw a5,-4(s0) -80002770: 00098513 mv a0,s3 -80002774: 00040913 mv s2,s0 -80002778: 0017f793 andi a5,a5,1 -8000277c: 0097e4b3 or s1,a5,s1 -80002780: fe942e23 sw s1,-4(s0) -80002784: c2dff0ef jal ra,800023b0 <__malloc_unlock> -80002788: d85ff06f j 8000250c <_realloc_r+0x158> -8000278c: 00cb2783 lw a5,12(s6) -80002790: 008b2703 lw a4,8(s6) -80002794: 00060a13 mv s4,a2 -80002798: 00ca8b33 add s6,s5,a2 -8000279c: 00f72623 sw a5,12(a4) -800027a0: 00e7a423 sw a4,8(a5) -800027a4: e11ff06f j 800025b4 <_realloc_r+0x200> -800027a8: ffc52783 lw a5,-4(a0) -800027ac: ffc7f793 andi a5,a5,-4 -800027b0: 00fa0a33 add s4,s4,a5 -800027b4: 014a8b33 add s6,s5,s4 -800027b8: dfdff06f j 800025b4 <_realloc_r+0x200> -800027bc: 00040593 mv a1,s0 -800027c0: acdff0ef jal ra,8000228c -800027c4: d19ff06f j 800024dc <_realloc_r+0x128> -800027c8: 00cb2783 lw a5,12(s6) -800027cc: 008b2703 lw a4,8(s6) -800027d0: ffca0613 addi a2,s4,-4 -800027d4: 02400693 li a3,36 -800027d8: 00f72623 sw a5,12(a4) -800027dc: 00e7a423 sw a4,8(a5) -800027e0: 008c2703 lw a4,8(s8) -800027e4: 00cc2783 lw a5,12(s8) -800027e8: 008c0913 addi s2,s8,8 -800027ec: 017c0b33 add s6,s8,s7 -800027f0: 00f72623 sw a5,12(a4) -800027f4: 00e7a423 sw a4,8(a5) -800027f8: 04c6e863 bltu a3,a2,80002848 <_realloc_r+0x494> -800027fc: 01300693 li a3,19 -80002800: 00042703 lw a4,0(s0) -80002804: 00090793 mv a5,s2 -80002808: d8c6f6e3 bgeu a3,a2,80002594 <_realloc_r+0x1e0> -8000280c: 00ec2423 sw a4,8(s8) -80002810: 00442703 lw a4,4(s0) -80002814: 01b00793 li a5,27 -80002818: 00ec2623 sw a4,12(s8) -8000281c: 00842703 lw a4,8(s0) -80002820: d6c7f6e3 bgeu a5,a2,8000258c <_realloc_r+0x1d8> -80002824: 00ec2823 sw a4,16(s8) -80002828: 00c42703 lw a4,12(s0) -8000282c: 02400793 li a5,36 -80002830: 00ec2a23 sw a4,20(s8) -80002834: 01042703 lw a4,16(s0) -80002838: 06f60463 beq a2,a5,800028a0 <_realloc_r+0x4ec> -8000283c: 018c0793 addi a5,s8,24 -80002840: 01040413 addi s0,s0,16 -80002844: d51ff06f j 80002594 <_realloc_r+0x1e0> -80002848: 00040593 mv a1,s0 -8000284c: 00090513 mv a0,s2 -80002850: a3dff0ef jal ra,8000228c -80002854: 00090413 mv s0,s2 -80002858: 000b8a13 mv s4,s7 -8000285c: 000c0a93 mv s5,s8 -80002860: d55ff06f j 800025b4 <_realloc_r+0x200> -80002864: 00842703 lw a4,8(s0) -80002868: 00e52423 sw a4,8(a0) -8000286c: 00c42703 lw a4,12(s0) -80002870: 00e52623 sw a4,12(a0) -80002874: 01042683 lw a3,16(s0) -80002878: 04f60263 beq a2,a5,800028bc <_realloc_r+0x508> -8000287c: 01040713 addi a4,s0,16 -80002880: 01050793 addi a5,a0,16 -80002884: c45ff06f j 800024c8 <_realloc_r+0x114> -80002888: 00842783 lw a5,8(s0) -8000288c: 00fc2823 sw a5,16(s8) -80002890: 00c42783 lw a5,12(s0) -80002894: 00fc2a23 sw a5,20(s8) -80002898: 01042703 lw a4,16(s0) -8000289c: fad610e3 bne a2,a3,8000283c <_realloc_r+0x488> -800028a0: 00ec2c23 sw a4,24(s8) -800028a4: 01442703 lw a4,20(s0) -800028a8: 020c0793 addi a5,s8,32 -800028ac: 01840413 addi s0,s0,24 -800028b0: 00ec2e23 sw a4,28(s8) -800028b4: 00042703 lw a4,0(s0) -800028b8: cddff06f j 80002594 <_realloc_r+0x1e0> -800028bc: 00d52823 sw a3,16(a0) -800028c0: 01442683 lw a3,20(s0) -800028c4: 01840713 addi a4,s0,24 -800028c8: 01850793 addi a5,a0,24 -800028cc: 00d52a23 sw a3,20(a0) -800028d0: 01842683 lw a3,24(s0) -800028d4: bf5ff06f j 800024c8 <_realloc_r+0x114> -800028d8: 00040593 mv a1,s0 -800028dc: 00090513 mv a0,s2 -800028e0: 9adff0ef jal ra,8000228c -800028e4: e21ff06f j 80002704 <_realloc_r+0x350> -800028e8: 00842783 lw a5,8(s0) -800028ec: 00fc2823 sw a5,16(s8) -800028f0: 00c42783 lw a5,12(s0) -800028f4: 00fc2a23 sw a5,20(s8) -800028f8: 01042703 lw a4,16(s0) -800028fc: 00d60863 beq a2,a3,8000290c <_realloc_r+0x558> -80002900: 018c0793 addi a5,s8,24 -80002904: 01040413 addi s0,s0,16 -80002908: de9ff06f j 800026f0 <_realloc_r+0x33c> -8000290c: 00ec2c23 sw a4,24(s8) -80002910: 01442703 lw a4,20(s0) -80002914: 020c0793 addi a5,s8,32 -80002918: 01840413 addi s0,s0,24 -8000291c: 00ec2e23 sw a4,28(s8) -80002920: 00042703 lw a4,0(s0) -80002924: dcdff06f j 800026f0 <_realloc_r+0x33c> - -80002928 <_sbrk_r>: -80002928: ff010113 addi sp,sp,-16 -8000292c: 00812423 sw s0,8(sp) -80002930: 00912223 sw s1,4(sp) -80002934: 00050413 mv s0,a0 -80002938: 00058513 mv a0,a1 -8000293c: 00112623 sw ra,12(sp) -80002940: 1801a623 sw zero,396(gp) # 80004994 -80002944: 10c010ef jal ra,80003a50 <_sbrk> -80002948: fff00793 li a5,-1 -8000294c: 00f50c63 beq a0,a5,80002964 <_sbrk_r+0x3c> -80002950: 00c12083 lw ra,12(sp) -80002954: 00812403 lw s0,8(sp) -80002958: 00412483 lw s1,4(sp) -8000295c: 01010113 addi sp,sp,16 -80002960: 00008067 ret -80002964: 18c1a783 lw a5,396(gp) # 80004994 -80002968: fe0784e3 beqz a5,80002950 <_sbrk_r+0x28> -8000296c: 00c12083 lw ra,12(sp) -80002970: 00f42023 sw a5,0(s0) -80002974: 00812403 lw s0,8(sp) -80002978: 00412483 lw s1,4(sp) -8000297c: 01010113 addi sp,sp,16 -80002980: 00008067 ret - -80002984 <__sread>: -80002984: ff010113 addi sp,sp,-16 -80002988: 00812423 sw s0,8(sp) -8000298c: 00058413 mv s0,a1 -80002990: 00e59583 lh a1,14(a1) -80002994: 00112623 sw ra,12(sp) -80002998: 5e9000ef jal ra,80003780 <_read_r> -8000299c: 02054063 bltz a0,800029bc <__sread+0x38> -800029a0: 05042783 lw a5,80(s0) -800029a4: 00c12083 lw ra,12(sp) -800029a8: 00a787b3 add a5,a5,a0 -800029ac: 04f42823 sw a5,80(s0) -800029b0: 00812403 lw s0,8(sp) -800029b4: 01010113 addi sp,sp,16 -800029b8: 00008067 ret -800029bc: 00c45783 lhu a5,12(s0) -800029c0: fffff737 lui a4,0xfffff -800029c4: fff70713 addi a4,a4,-1 # ffffefff <__BSS_END__+0x7fffa667> -800029c8: 00e7f7b3 and a5,a5,a4 -800029cc: 00c12083 lw ra,12(sp) -800029d0: 00f41623 sh a5,12(s0) -800029d4: 00812403 lw s0,8(sp) -800029d8: 01010113 addi sp,sp,16 -800029dc: 00008067 ret - -800029e0 <__seofread>: -800029e0: 00000513 li a0,0 -800029e4: 00008067 ret - -800029e8 <__swrite>: -800029e8: 00c59783 lh a5,12(a1) -800029ec: fe010113 addi sp,sp,-32 -800029f0: 00812c23 sw s0,24(sp) -800029f4: 00912a23 sw s1,20(sp) -800029f8: 01212823 sw s2,16(sp) -800029fc: 01312623 sw s3,12(sp) -80002a00: 00112e23 sw ra,28(sp) -80002a04: 1007f713 andi a4,a5,256 -80002a08: 00058413 mv s0,a1 -80002a0c: 00050493 mv s1,a0 -80002a10: 00e59583 lh a1,14(a1) -80002a14: 00060913 mv s2,a2 -80002a18: 00068993 mv s3,a3 -80002a1c: 02071e63 bnez a4,80002a58 <__swrite+0x70> -80002a20: fffff737 lui a4,0xfffff -80002a24: fff70713 addi a4,a4,-1 # ffffefff <__BSS_END__+0x7fffa667> -80002a28: 00e7f7b3 and a5,a5,a4 -80002a2c: 00f41623 sh a5,12(s0) -80002a30: 01812403 lw s0,24(sp) -80002a34: 01c12083 lw ra,28(sp) -80002a38: 00098693 mv a3,s3 -80002a3c: 00090613 mv a2,s2 -80002a40: 00c12983 lw s3,12(sp) -80002a44: 01012903 lw s2,16(sp) -80002a48: 00048513 mv a0,s1 -80002a4c: 01412483 lw s1,20(sp) -80002a50: 02010113 addi sp,sp,32 -80002a54: 08c0006f j 80002ae0 <_write_r> -80002a58: 00200693 li a3,2 -80002a5c: 00000613 li a2,0 -80002a60: 2c9000ef jal ra,80003528 <_lseek_r> -80002a64: 00c41783 lh a5,12(s0) -80002a68: 00e41583 lh a1,14(s0) -80002a6c: fb5ff06f j 80002a20 <__swrite+0x38> - -80002a70 <__sseek>: -80002a70: ff010113 addi sp,sp,-16 -80002a74: 00812423 sw s0,8(sp) -80002a78: 00058413 mv s0,a1 -80002a7c: 00e59583 lh a1,14(a1) -80002a80: 00112623 sw ra,12(sp) -80002a84: 2a5000ef jal ra,80003528 <_lseek_r> -80002a88: fff00793 li a5,-1 -80002a8c: 02f50463 beq a0,a5,80002ab4 <__sseek+0x44> -80002a90: 00c45783 lhu a5,12(s0) -80002a94: 00001737 lui a4,0x1 -80002a98: 00c12083 lw ra,12(sp) -80002a9c: 00e7e7b3 or a5,a5,a4 -80002aa0: 04a42823 sw a0,80(s0) -80002aa4: 00f41623 sh a5,12(s0) -80002aa8: 00812403 lw s0,8(sp) -80002aac: 01010113 addi sp,sp,16 -80002ab0: 00008067 ret -80002ab4: 00c45783 lhu a5,12(s0) -80002ab8: fffff737 lui a4,0xfffff -80002abc: fff70713 addi a4,a4,-1 # ffffefff <__BSS_END__+0x7fffa667> -80002ac0: 00e7f7b3 and a5,a5,a4 -80002ac4: 00c12083 lw ra,12(sp) -80002ac8: 00f41623 sh a5,12(s0) -80002acc: 00812403 lw s0,8(sp) -80002ad0: 01010113 addi sp,sp,16 -80002ad4: 00008067 ret - -80002ad8 <__sclose>: -80002ad8: 00e59583 lh a1,14(a1) -80002adc: 1c80006f j 80002ca4 <_close_r> - -80002ae0 <_write_r>: -80002ae0: ff010113 addi sp,sp,-16 -80002ae4: 00058713 mv a4,a1 -80002ae8: 00812423 sw s0,8(sp) -80002aec: 00912223 sw s1,4(sp) -80002af0: 00060593 mv a1,a2 -80002af4: 00050413 mv s0,a0 -80002af8: 00068613 mv a2,a3 -80002afc: 00070513 mv a0,a4 -80002b00: 00112623 sw ra,12(sp) -80002b04: 1801a623 sw zero,396(gp) # 80004994 -80002b08: 7e5000ef jal ra,80003aec <_write> -80002b0c: fff00793 li a5,-1 -80002b10: 00f50c63 beq a0,a5,80002b28 <_write_r+0x48> -80002b14: 00c12083 lw ra,12(sp) -80002b18: 00812403 lw s0,8(sp) -80002b1c: 00412483 lw s1,4(sp) -80002b20: 01010113 addi sp,sp,16 -80002b24: 00008067 ret -80002b28: 18c1a783 lw a5,396(gp) # 80004994 -80002b2c: fe0784e3 beqz a5,80002b14 <_write_r+0x34> -80002b30: 00c12083 lw ra,12(sp) -80002b34: 00f42023 sw a5,0(s0) -80002b38: 00812403 lw s0,8(sp) -80002b3c: 00412483 lw s1,4(sp) -80002b40: 01010113 addi sp,sp,16 -80002b44: 00008067 ret - -80002b48 <__swsetup_r>: -80002b48: 0cc1a783 lw a5,204(gp) # 800048d4 <_impure_ptr> -80002b4c: ff010113 addi sp,sp,-16 -80002b50: 00812423 sw s0,8(sp) -80002b54: 00912223 sw s1,4(sp) -80002b58: 00112623 sw ra,12(sp) -80002b5c: 00050493 mv s1,a0 -80002b60: 00058413 mv s0,a1 -80002b64: 00078663 beqz a5,80002b70 <__swsetup_r+0x28> -80002b68: 0387a703 lw a4,56(a5) -80002b6c: 0e070063 beqz a4,80002c4c <__swsetup_r+0x104> -80002b70: 00c41703 lh a4,12(s0) -80002b74: 01071793 slli a5,a4,0x10 -80002b78: 00877693 andi a3,a4,8 -80002b7c: 0107d793 srli a5,a5,0x10 -80002b80: 04068063 beqz a3,80002bc0 <__swsetup_r+0x78> -80002b84: 01042683 lw a3,16(s0) -80002b88: 06068063 beqz a3,80002be8 <__swsetup_r+0xa0> -80002b8c: 0017f613 andi a2,a5,1 -80002b90: 08060463 beqz a2,80002c18 <__swsetup_r+0xd0> -80002b94: 01442603 lw a2,20(s0) -80002b98: 00042423 sw zero,8(s0) -80002b9c: 00000513 li a0,0 -80002ba0: 40c00633 neg a2,a2 -80002ba4: 00c42c23 sw a2,24(s0) -80002ba8: 08068663 beqz a3,80002c34 <__swsetup_r+0xec> -80002bac: 00c12083 lw ra,12(sp) -80002bb0: 00812403 lw s0,8(sp) -80002bb4: 00412483 lw s1,4(sp) -80002bb8: 01010113 addi sp,sp,16 -80002bbc: 00008067 ret -80002bc0: 0107f693 andi a3,a5,16 -80002bc4: 0c068463 beqz a3,80002c8c <__swsetup_r+0x144> -80002bc8: 0047f793 andi a5,a5,4 -80002bcc: 08079663 bnez a5,80002c58 <__swsetup_r+0x110> -80002bd0: 01042683 lw a3,16(s0) -80002bd4: 00876713 ori a4,a4,8 -80002bd8: 01071793 slli a5,a4,0x10 -80002bdc: 00e41623 sh a4,12(s0) -80002be0: 0107d793 srli a5,a5,0x10 -80002be4: fa0694e3 bnez a3,80002b8c <__swsetup_r+0x44> -80002be8: 2807f613 andi a2,a5,640 -80002bec: 20000593 li a1,512 -80002bf0: f8b60ee3 beq a2,a1,80002b8c <__swsetup_r+0x44> -80002bf4: 00040593 mv a1,s0 -80002bf8: 00048513 mv a0,s1 -80002bfc: 265000ef jal ra,80003660 <__smakebuf_r> -80002c00: 00c41703 lh a4,12(s0) -80002c04: 01042683 lw a3,16(s0) -80002c08: 01071793 slli a5,a4,0x10 -80002c0c: 0107d793 srli a5,a5,0x10 -80002c10: 0017f613 andi a2,a5,1 -80002c14: f80610e3 bnez a2,80002b94 <__swsetup_r+0x4c> -80002c18: 0027f613 andi a2,a5,2 -80002c1c: 00000593 li a1,0 -80002c20: 00061463 bnez a2,80002c28 <__swsetup_r+0xe0> -80002c24: 01442583 lw a1,20(s0) -80002c28: 00b42423 sw a1,8(s0) -80002c2c: 00000513 li a0,0 -80002c30: f6069ee3 bnez a3,80002bac <__swsetup_r+0x64> -80002c34: 0807f793 andi a5,a5,128 -80002c38: f6078ae3 beqz a5,80002bac <__swsetup_r+0x64> -80002c3c: 04076713 ori a4,a4,64 -80002c40: 00e41623 sh a4,12(s0) -80002c44: fff00513 li a0,-1 -80002c48: f65ff06f j 80002bac <__swsetup_r+0x64> -80002c4c: 00078513 mv a0,a5 -80002c50: e74fe0ef jal ra,800012c4 <__sinit> -80002c54: f1dff06f j 80002b70 <__swsetup_r+0x28> -80002c58: 03042583 lw a1,48(s0) -80002c5c: 00058e63 beqz a1,80002c78 <__swsetup_r+0x130> -80002c60: 04040793 addi a5,s0,64 -80002c64: 00f58863 beq a1,a5,80002c74 <__swsetup_r+0x12c> -80002c68: 00048513 mv a0,s1 -80002c6c: 5bc000ef jal ra,80003228 <_free_r> -80002c70: 00c41703 lh a4,12(s0) -80002c74: 02042823 sw zero,48(s0) -80002c78: 01042683 lw a3,16(s0) -80002c7c: fdb77713 andi a4,a4,-37 -80002c80: 00042223 sw zero,4(s0) -80002c84: 00d42023 sw a3,0(s0) -80002c88: f4dff06f j 80002bd4 <__swsetup_r+0x8c> -80002c8c: 00900793 li a5,9 -80002c90: 00f4a023 sw a5,0(s1) -80002c94: 04076713 ori a4,a4,64 -80002c98: 00e41623 sh a4,12(s0) -80002c9c: fff00513 li a0,-1 -80002ca0: f0dff06f j 80002bac <__swsetup_r+0x64> - -80002ca4 <_close_r>: -80002ca4: ff010113 addi sp,sp,-16 -80002ca8: 00812423 sw s0,8(sp) -80002cac: 00912223 sw s1,4(sp) -80002cb0: 00050413 mv s0,a0 -80002cb4: 00058513 mv a0,a1 -80002cb8: 00112623 sw ra,12(sp) -80002cbc: 1801a623 sw zero,396(gp) # 80004994 -80002cc0: 3e9000ef jal ra,800038a8 <_close> -80002cc4: fff00793 li a5,-1 -80002cc8: 00f50c63 beq a0,a5,80002ce0 <_close_r+0x3c> -80002ccc: 00c12083 lw ra,12(sp) -80002cd0: 00812403 lw s0,8(sp) -80002cd4: 00412483 lw s1,4(sp) -80002cd8: 01010113 addi sp,sp,16 -80002cdc: 00008067 ret -80002ce0: 18c1a783 lw a5,396(gp) # 80004994 -80002ce4: fe0784e3 beqz a5,80002ccc <_close_r+0x28> -80002ce8: 00c12083 lw ra,12(sp) -80002cec: 00f42023 sw a5,0(s0) -80002cf0: 00812403 lw s0,8(sp) -80002cf4: 00412483 lw s1,4(sp) -80002cf8: 01010113 addi sp,sp,16 -80002cfc: 00008067 ret - -80002d00 <_fclose_r>: -80002d00: ff010113 addi sp,sp,-16 -80002d04: 00112623 sw ra,12(sp) -80002d08: 00812423 sw s0,8(sp) -80002d0c: 00912223 sw s1,4(sp) -80002d10: 01212023 sw s2,0(sp) -80002d14: 02058063 beqz a1,80002d34 <_fclose_r+0x34> -80002d18: 00058413 mv s0,a1 -80002d1c: 00050493 mv s1,a0 -80002d20: 00050663 beqz a0,80002d2c <_fclose_r+0x2c> -80002d24: 03852783 lw a5,56(a0) -80002d28: 0a078c63 beqz a5,80002de0 <_fclose_r+0xe0> -80002d2c: 00c41783 lh a5,12(s0) -80002d30: 02079263 bnez a5,80002d54 <_fclose_r+0x54> -80002d34: 00c12083 lw ra,12(sp) -80002d38: 00812403 lw s0,8(sp) -80002d3c: 00000913 li s2,0 -80002d40: 00412483 lw s1,4(sp) -80002d44: 00090513 mv a0,s2 -80002d48: 00012903 lw s2,0(sp) -80002d4c: 01010113 addi sp,sp,16 -80002d50: 00008067 ret -80002d54: 00040593 mv a1,s0 -80002d58: 00048513 mv a0,s1 -80002d5c: 0c0000ef jal ra,80002e1c <__sflush_r> -80002d60: 02c42783 lw a5,44(s0) -80002d64: 00050913 mv s2,a0 -80002d68: 00078a63 beqz a5,80002d7c <_fclose_r+0x7c> -80002d6c: 01c42583 lw a1,28(s0) -80002d70: 00048513 mv a0,s1 -80002d74: 000780e7 jalr a5 -80002d78: 06054c63 bltz a0,80002df0 <_fclose_r+0xf0> -80002d7c: 00c45783 lhu a5,12(s0) -80002d80: 0807f793 andi a5,a5,128 -80002d84: 06079e63 bnez a5,80002e00 <_fclose_r+0x100> -80002d88: 03042583 lw a1,48(s0) -80002d8c: 00058c63 beqz a1,80002da4 <_fclose_r+0xa4> -80002d90: 04040793 addi a5,s0,64 -80002d94: 00f58663 beq a1,a5,80002da0 <_fclose_r+0xa0> -80002d98: 00048513 mv a0,s1 -80002d9c: 48c000ef jal ra,80003228 <_free_r> -80002da0: 02042823 sw zero,48(s0) -80002da4: 04442583 lw a1,68(s0) -80002da8: 00058863 beqz a1,80002db8 <_fclose_r+0xb8> -80002dac: 00048513 mv a0,s1 -80002db0: 478000ef jal ra,80003228 <_free_r> -80002db4: 04042223 sw zero,68(s0) -80002db8: d1cfe0ef jal ra,800012d4 <__sfp_lock_acquire> -80002dbc: 00041623 sh zero,12(s0) -80002dc0: d18fe0ef jal ra,800012d8 <__sfp_lock_release> -80002dc4: 00c12083 lw ra,12(sp) -80002dc8: 00812403 lw s0,8(sp) -80002dcc: 00412483 lw s1,4(sp) -80002dd0: 00090513 mv a0,s2 -80002dd4: 00012903 lw s2,0(sp) -80002dd8: 01010113 addi sp,sp,16 -80002ddc: 00008067 ret -80002de0: ce4fe0ef jal ra,800012c4 <__sinit> -80002de4: 00c41783 lh a5,12(s0) -80002de8: f40786e3 beqz a5,80002d34 <_fclose_r+0x34> -80002dec: f69ff06f j 80002d54 <_fclose_r+0x54> -80002df0: 00c45783 lhu a5,12(s0) -80002df4: fff00913 li s2,-1 -80002df8: 0807f793 andi a5,a5,128 -80002dfc: f80786e3 beqz a5,80002d88 <_fclose_r+0x88> -80002e00: 01042583 lw a1,16(s0) -80002e04: 00048513 mv a0,s1 -80002e08: 420000ef jal ra,80003228 <_free_r> -80002e0c: f7dff06f j 80002d88 <_fclose_r+0x88> - -80002e10 : -80002e10: 00050593 mv a1,a0 -80002e14: 0cc1a503 lw a0,204(gp) # 800048d4 <_impure_ptr> -80002e18: ee9ff06f j 80002d00 <_fclose_r> - -80002e1c <__sflush_r>: -80002e1c: 00c59783 lh a5,12(a1) -80002e20: fe010113 addi sp,sp,-32 -80002e24: 00812c23 sw s0,24(sp) -80002e28: 01312623 sw s3,12(sp) -80002e2c: 00112e23 sw ra,28(sp) -80002e30: 00912a23 sw s1,20(sp) -80002e34: 01212823 sw s2,16(sp) -80002e38: 0087f693 andi a3,a5,8 -80002e3c: 00058413 mv s0,a1 -80002e40: 00050993 mv s3,a0 -80002e44: 10069a63 bnez a3,80002f58 <__sflush_r+0x13c> -80002e48: 00001737 lui a4,0x1 -80002e4c: 80070713 addi a4,a4,-2048 # 800 <_start-0x7ffff800> -80002e50: 0045a683 lw a3,4(a1) -80002e54: 00e7e7b3 or a5,a5,a4 -80002e58: 00f59623 sh a5,12(a1) -80002e5c: 18d05463 blez a3,80002fe4 <__sflush_r+0x1c8> -80002e60: 02842703 lw a4,40(s0) -80002e64: 0c070a63 beqz a4,80002f38 <__sflush_r+0x11c> -80002e68: 0009a483 lw s1,0(s3) -80002e6c: 01079693 slli a3,a5,0x10 -80002e70: 0009a023 sw zero,0(s3) -80002e74: 01379613 slli a2,a5,0x13 -80002e78: 01c42583 lw a1,28(s0) -80002e7c: 0106d693 srli a3,a3,0x10 -80002e80: 16064863 bltz a2,80002ff0 <__sflush_r+0x1d4> -80002e84: 00100693 li a3,1 -80002e88: 00000613 li a2,0 -80002e8c: 00098513 mv a0,s3 -80002e90: 000700e7 jalr a4 -80002e94: fff00793 li a5,-1 -80002e98: 18f50c63 beq a0,a5,80003030 <__sflush_r+0x214> -80002e9c: 00c45683 lhu a3,12(s0) -80002ea0: 02842703 lw a4,40(s0) -80002ea4: 01c42583 lw a1,28(s0) -80002ea8: 0046f693 andi a3,a3,4 -80002eac: 00068e63 beqz a3,80002ec8 <__sflush_r+0xac> -80002eb0: 00442683 lw a3,4(s0) -80002eb4: 03042783 lw a5,48(s0) -80002eb8: 40d50533 sub a0,a0,a3 -80002ebc: 00078663 beqz a5,80002ec8 <__sflush_r+0xac> -80002ec0: 03c42783 lw a5,60(s0) -80002ec4: 40f50533 sub a0,a0,a5 -80002ec8: 00050613 mv a2,a0 -80002ecc: 00000693 li a3,0 -80002ed0: 00098513 mv a0,s3 -80002ed4: 000700e7 jalr a4 -80002ed8: fff00793 li a5,-1 -80002edc: 10f51e63 bne a0,a5,80002ff8 <__sflush_r+0x1dc> -80002ee0: 0009a703 lw a4,0(s3) -80002ee4: 00c41783 lh a5,12(s0) -80002ee8: 16070863 beqz a4,80003058 <__sflush_r+0x23c> -80002eec: 01d00693 li a3,29 -80002ef0: 00d70663 beq a4,a3,80002efc <__sflush_r+0xe0> -80002ef4: 01600693 li a3,22 -80002ef8: 0cd71463 bne a4,a3,80002fc0 <__sflush_r+0x1a4> -80002efc: 01042683 lw a3,16(s0) -80002f00: fffff737 lui a4,0xfffff -80002f04: 7ff70713 addi a4,a4,2047 # fffff7ff <__BSS_END__+0x7fffae67> -80002f08: 00e7f7b3 and a5,a5,a4 -80002f0c: 00f41623 sh a5,12(s0) -80002f10: 00042223 sw zero,4(s0) -80002f14: 00d42023 sw a3,0(s0) -80002f18: 03042583 lw a1,48(s0) -80002f1c: 0099a023 sw s1,0(s3) -80002f20: 00058c63 beqz a1,80002f38 <__sflush_r+0x11c> -80002f24: 04040793 addi a5,s0,64 -80002f28: 00f58663 beq a1,a5,80002f34 <__sflush_r+0x118> -80002f2c: 00098513 mv a0,s3 -80002f30: 2f8000ef jal ra,80003228 <_free_r> -80002f34: 02042823 sw zero,48(s0) -80002f38: 00000513 li a0,0 -80002f3c: 01c12083 lw ra,28(sp) -80002f40: 01812403 lw s0,24(sp) -80002f44: 01412483 lw s1,20(sp) -80002f48: 01012903 lw s2,16(sp) -80002f4c: 00c12983 lw s3,12(sp) -80002f50: 02010113 addi sp,sp,32 -80002f54: 00008067 ret -80002f58: 0105a903 lw s2,16(a1) -80002f5c: fc090ee3 beqz s2,80002f38 <__sflush_r+0x11c> -80002f60: 0005a483 lw s1,0(a1) -80002f64: 01079713 slli a4,a5,0x10 -80002f68: 01075713 srli a4,a4,0x10 -80002f6c: 00377713 andi a4,a4,3 -80002f70: 0125a023 sw s2,0(a1) -80002f74: 412484b3 sub s1,s1,s2 -80002f78: 00000793 li a5,0 -80002f7c: 00071463 bnez a4,80002f84 <__sflush_r+0x168> -80002f80: 0145a783 lw a5,20(a1) -80002f84: 00f42423 sw a5,8(s0) -80002f88: 00904863 bgtz s1,80002f98 <__sflush_r+0x17c> -80002f8c: fadff06f j 80002f38 <__sflush_r+0x11c> -80002f90: 00a90933 add s2,s2,a0 -80002f94: fa9052e3 blez s1,80002f38 <__sflush_r+0x11c> -80002f98: 02442783 lw a5,36(s0) -80002f9c: 01c42583 lw a1,28(s0) -80002fa0: 00048693 mv a3,s1 -80002fa4: 00090613 mv a2,s2 -80002fa8: 00098513 mv a0,s3 -80002fac: 000780e7 jalr a5 -80002fb0: 40a484b3 sub s1,s1,a0 -80002fb4: fca04ee3 bgtz a0,80002f90 <__sflush_r+0x174> -80002fb8: 00c45783 lhu a5,12(s0) -80002fbc: fff00513 li a0,-1 -80002fc0: 0407e793 ori a5,a5,64 -80002fc4: 01c12083 lw ra,28(sp) -80002fc8: 00f41623 sh a5,12(s0) -80002fcc: 01812403 lw s0,24(sp) -80002fd0: 01412483 lw s1,20(sp) -80002fd4: 01012903 lw s2,16(sp) -80002fd8: 00c12983 lw s3,12(sp) -80002fdc: 02010113 addi sp,sp,32 -80002fe0: 00008067 ret -80002fe4: 03c5a703 lw a4,60(a1) -80002fe8: e6e04ce3 bgtz a4,80002e60 <__sflush_r+0x44> -80002fec: f4dff06f j 80002f38 <__sflush_r+0x11c> -80002ff0: 05042503 lw a0,80(s0) -80002ff4: eb5ff06f j 80002ea8 <__sflush_r+0x8c> -80002ff8: 00c45783 lhu a5,12(s0) -80002ffc: fffff737 lui a4,0xfffff -80003000: 7ff70713 addi a4,a4,2047 # fffff7ff <__BSS_END__+0x7fffae67> -80003004: 00e7f7b3 and a5,a5,a4 -80003008: 01042683 lw a3,16(s0) -8000300c: 01079793 slli a5,a5,0x10 -80003010: 4107d793 srai a5,a5,0x10 -80003014: 00f41623 sh a5,12(s0) -80003018: 00042223 sw zero,4(s0) -8000301c: 00d42023 sw a3,0(s0) -80003020: 01379713 slli a4,a5,0x13 -80003024: ee075ae3 bgez a4,80002f18 <__sflush_r+0xfc> -80003028: 04a42823 sw a0,80(s0) -8000302c: eedff06f j 80002f18 <__sflush_r+0xfc> -80003030: 0009a783 lw a5,0(s3) -80003034: e60784e3 beqz a5,80002e9c <__sflush_r+0x80> -80003038: 01d00713 li a4,29 -8000303c: 02e78863 beq a5,a4,8000306c <__sflush_r+0x250> -80003040: 01600713 li a4,22 -80003044: 02e78463 beq a5,a4,8000306c <__sflush_r+0x250> -80003048: 00c45783 lhu a5,12(s0) -8000304c: 0407e793 ori a5,a5,64 -80003050: 00f41623 sh a5,12(s0) -80003054: ee9ff06f j 80002f3c <__sflush_r+0x120> -80003058: fffff737 lui a4,0xfffff -8000305c: 7ff70713 addi a4,a4,2047 # fffff7ff <__BSS_END__+0x7fffae67> -80003060: 01042683 lw a3,16(s0) -80003064: 00e7f7b3 and a5,a5,a4 -80003068: fadff06f j 80003014 <__sflush_r+0x1f8> -8000306c: 0099a023 sw s1,0(s3) -80003070: 00000513 li a0,0 -80003074: ec9ff06f j 80002f3c <__sflush_r+0x120> - -80003078 <_fflush_r>: -80003078: fe010113 addi sp,sp,-32 -8000307c: 00812c23 sw s0,24(sp) -80003080: 00112e23 sw ra,28(sp) -80003084: 00050413 mv s0,a0 -80003088: 00050663 beqz a0,80003094 <_fflush_r+0x1c> -8000308c: 03852783 lw a5,56(a0) -80003090: 02078063 beqz a5,800030b0 <_fflush_r+0x38> -80003094: 00c59783 lh a5,12(a1) -80003098: 02079663 bnez a5,800030c4 <_fflush_r+0x4c> -8000309c: 01c12083 lw ra,28(sp) -800030a0: 01812403 lw s0,24(sp) -800030a4: 00000513 li a0,0 -800030a8: 02010113 addi sp,sp,32 -800030ac: 00008067 ret -800030b0: 00b12623 sw a1,12(sp) -800030b4: a10fe0ef jal ra,800012c4 <__sinit> -800030b8: 00c12583 lw a1,12(sp) -800030bc: 00c59783 lh a5,12(a1) -800030c0: fc078ee3 beqz a5,8000309c <_fflush_r+0x24> -800030c4: 00040513 mv a0,s0 -800030c8: 01812403 lw s0,24(sp) -800030cc: 01c12083 lw ra,28(sp) -800030d0: 02010113 addi sp,sp,32 -800030d4: d49ff06f j 80002e1c <__sflush_r> - -800030d8 : -800030d8: 00050593 mv a1,a0 -800030dc: 00050663 beqz a0,800030e8 -800030e0: 0cc1a503 lw a0,204(gp) # 800048d4 <_impure_ptr> -800030e4: f95ff06f j 80003078 <_fflush_r> -800030e8: 0c81a503 lw a0,200(gp) # 800048d0 <_global_impure_ptr> -800030ec: 800035b7 lui a1,0x80003 -800030f0: 07858593 addi a1,a1,120 # 80003078 <__BSS_END__+0xffffe6e0> -800030f4: f5cfe06f j 80001850 <_fwalk_reent> - -800030f8 <_malloc_trim_r>: -800030f8: fe010113 addi sp,sp,-32 -800030fc: 01312623 sw s3,12(sp) -80003100: 00812c23 sw s0,24(sp) -80003104: 00912a23 sw s1,20(sp) -80003108: 01212823 sw s2,16(sp) -8000310c: 01412423 sw s4,8(sp) -80003110: 00112e23 sw ra,28(sp) -80003114: 00058a13 mv s4,a1 -80003118: 00050913 mv s2,a0 -8000311c: cc018993 addi s3,gp,-832 # 800044c8 <__malloc_av_> -80003120: a8cff0ef jal ra,800023ac <__malloc_lock> -80003124: 0089a703 lw a4,8(s3) -80003128: 000017b7 lui a5,0x1 -8000312c: fef78413 addi s0,a5,-17 # fef <_start-0x7ffff011> -80003130: 00472483 lw s1,4(a4) -80003134: 41440433 sub s0,s0,s4 -80003138: ffc4f493 andi s1,s1,-4 -8000313c: 00940433 add s0,s0,s1 -80003140: 00c45413 srli s0,s0,0xc -80003144: fff40413 addi s0,s0,-1 -80003148: 00c41413 slli s0,s0,0xc -8000314c: 00f44e63 blt s0,a5,80003168 <_malloc_trim_r+0x70> -80003150: 00000593 li a1,0 -80003154: 00090513 mv a0,s2 -80003158: fd0ff0ef jal ra,80002928 <_sbrk_r> -8000315c: 0089a783 lw a5,8(s3) -80003160: 009787b3 add a5,a5,s1 -80003164: 02f50863 beq a0,a5,80003194 <_malloc_trim_r+0x9c> -80003168: 00090513 mv a0,s2 -8000316c: a44ff0ef jal ra,800023b0 <__malloc_unlock> -80003170: 01c12083 lw ra,28(sp) -80003174: 01812403 lw s0,24(sp) -80003178: 01412483 lw s1,20(sp) -8000317c: 01012903 lw s2,16(sp) -80003180: 00c12983 lw s3,12(sp) -80003184: 00812a03 lw s4,8(sp) -80003188: 00000513 li a0,0 -8000318c: 02010113 addi sp,sp,32 -80003190: 00008067 ret -80003194: 408005b3 neg a1,s0 -80003198: 00090513 mv a0,s2 -8000319c: f8cff0ef jal ra,80002928 <_sbrk_r> -800031a0: fff00793 li a5,-1 -800031a4: 04f50863 beq a0,a5,800031f4 <_malloc_trim_r+0xfc> -800031a8: 12818793 addi a5,gp,296 # 80004930 <__malloc_current_mallinfo> -800031ac: 0007a703 lw a4,0(a5) -800031b0: 0089a683 lw a3,8(s3) -800031b4: 408484b3 sub s1,s1,s0 -800031b8: 0014e493 ori s1,s1,1 -800031bc: 40870433 sub s0,a4,s0 -800031c0: 00090513 mv a0,s2 -800031c4: 0096a223 sw s1,4(a3) -800031c8: 0087a023 sw s0,0(a5) -800031cc: 9e4ff0ef jal ra,800023b0 <__malloc_unlock> -800031d0: 01c12083 lw ra,28(sp) -800031d4: 01812403 lw s0,24(sp) -800031d8: 01412483 lw s1,20(sp) -800031dc: 01012903 lw s2,16(sp) -800031e0: 00c12983 lw s3,12(sp) -800031e4: 00812a03 lw s4,8(sp) -800031e8: 00100513 li a0,1 -800031ec: 02010113 addi sp,sp,32 -800031f0: 00008067 ret -800031f4: 00000593 li a1,0 -800031f8: 00090513 mv a0,s2 -800031fc: f2cff0ef jal ra,80002928 <_sbrk_r> -80003200: 0089a703 lw a4,8(s3) -80003204: 00f00693 li a3,15 -80003208: 40e507b3 sub a5,a0,a4 -8000320c: f4f6dee3 bge a3,a5,80003168 <_malloc_trim_r+0x70> -80003210: 0d01a683 lw a3,208(gp) # 800048d8 <__malloc_sbrk_base> -80003214: 0017e793 ori a5,a5,1 -80003218: 00f72223 sw a5,4(a4) -8000321c: 40d50533 sub a0,a0,a3 -80003220: 12a1a423 sw a0,296(gp) # 80004930 <__malloc_current_mallinfo> -80003224: f45ff06f j 80003168 <_malloc_trim_r+0x70> - -80003228 <_free_r>: -80003228: 12058463 beqz a1,80003350 <_free_r+0x128> -8000322c: ff010113 addi sp,sp,-16 -80003230: 00812423 sw s0,8(sp) -80003234: 00912223 sw s1,4(sp) -80003238: 00058413 mv s0,a1 -8000323c: 00050493 mv s1,a0 -80003240: 00112623 sw ra,12(sp) -80003244: 968ff0ef jal ra,800023ac <__malloc_lock> -80003248: ffc42803 lw a6,-4(s0) -8000324c: ff840713 addi a4,s0,-8 -80003250: ffe87793 andi a5,a6,-2 -80003254: 00f70633 add a2,a4,a5 -80003258: cc018593 addi a1,gp,-832 # 800044c8 <__malloc_av_> -8000325c: 00462683 lw a3,4(a2) -80003260: 0085a503 lw a0,8(a1) -80003264: ffc6f693 andi a3,a3,-4 -80003268: 1ac50663 beq a0,a2,80003414 <_free_r+0x1ec> -8000326c: 00d62223 sw a3,4(a2) -80003270: 00187813 andi a6,a6,1 -80003274: 00d60533 add a0,a2,a3 -80003278: 08081e63 bnez a6,80003314 <_free_r+0xec> -8000327c: ff842303 lw t1,-8(s0) -80003280: 00452803 lw a6,4(a0) -80003284: 40670733 sub a4,a4,t1 -80003288: 00872883 lw a7,8(a4) -8000328c: cc818513 addi a0,gp,-824 # 800044d0 <__malloc_av_+0x8> -80003290: 006787b3 add a5,a5,t1 -80003294: 00187813 andi a6,a6,1 -80003298: 12a88e63 beq a7,a0,800033d4 <_free_r+0x1ac> -8000329c: 00c72303 lw t1,12(a4) -800032a0: 0068a623 sw t1,12(a7) -800032a4: 01132423 sw a7,8(t1) -800032a8: 1c080e63 beqz a6,80003484 <_free_r+0x25c> -800032ac: 0017e693 ori a3,a5,1 -800032b0: 00d72223 sw a3,4(a4) -800032b4: 00f62023 sw a5,0(a2) -800032b8: 1ff00693 li a3,511 -800032bc: 0af6e663 bltu a3,a5,80003368 <_free_r+0x140> -800032c0: ff87f693 andi a3,a5,-8 -800032c4: 00868693 addi a3,a3,8 -800032c8: 0045a503 lw a0,4(a1) -800032cc: 00d586b3 add a3,a1,a3 -800032d0: 0006a603 lw a2,0(a3) -800032d4: 0057d813 srli a6,a5,0x5 -800032d8: 00100793 li a5,1 -800032dc: 010797b3 sll a5,a5,a6 -800032e0: 00a7e7b3 or a5,a5,a0 -800032e4: ff868513 addi a0,a3,-8 -800032e8: 00a72623 sw a0,12(a4) -800032ec: 00c72423 sw a2,8(a4) -800032f0: 00f5a223 sw a5,4(a1) -800032f4: 00e6a023 sw a4,0(a3) -800032f8: 00e62623 sw a4,12(a2) -800032fc: 00812403 lw s0,8(sp) -80003300: 00c12083 lw ra,12(sp) -80003304: 00048513 mv a0,s1 -80003308: 00412483 lw s1,4(sp) -8000330c: 01010113 addi sp,sp,16 -80003310: 8a0ff06f j 800023b0 <__malloc_unlock> -80003314: 00452503 lw a0,4(a0) -80003318: 00157513 andi a0,a0,1 -8000331c: 02051c63 bnez a0,80003354 <_free_r+0x12c> -80003320: 00d787b3 add a5,a5,a3 -80003324: cc818513 addi a0,gp,-824 # 800044d0 <__malloc_av_+0x8> -80003328: 00862683 lw a3,8(a2) -8000332c: 0017e893 ori a7,a5,1 -80003330: 00f70833 add a6,a4,a5 -80003334: 16a68463 beq a3,a0,8000349c <_free_r+0x274> -80003338: 00c62603 lw a2,12(a2) -8000333c: 00c6a623 sw a2,12(a3) -80003340: 00d62423 sw a3,8(a2) -80003344: 01172223 sw a7,4(a4) -80003348: 00f82023 sw a5,0(a6) -8000334c: f6dff06f j 800032b8 <_free_r+0x90> -80003350: 00008067 ret -80003354: 0017e693 ori a3,a5,1 -80003358: fed42e23 sw a3,-4(s0) -8000335c: 00f62023 sw a5,0(a2) -80003360: 1ff00693 li a3,511 -80003364: f4f6fee3 bgeu a3,a5,800032c0 <_free_r+0x98> -80003368: 0097d693 srli a3,a5,0x9 -8000336c: 00400613 li a2,4 -80003370: 0ed66863 bltu a2,a3,80003460 <_free_r+0x238> -80003374: 0067d693 srli a3,a5,0x6 -80003378: 03968813 addi a6,a3,57 -8000337c: 03868613 addi a2,a3,56 -80003380: 00381813 slli a6,a6,0x3 -80003384: 01058833 add a6,a1,a6 -80003388: 00082683 lw a3,0(a6) -8000338c: ff880813 addi a6,a6,-8 -80003390: 12d80463 beq a6,a3,800034b8 <_free_r+0x290> -80003394: 0046a603 lw a2,4(a3) -80003398: ffc67613 andi a2,a2,-4 -8000339c: 00c7f663 bgeu a5,a2,800033a8 <_free_r+0x180> -800033a0: 0086a683 lw a3,8(a3) -800033a4: fed818e3 bne a6,a3,80003394 <_free_r+0x16c> -800033a8: 00c6a803 lw a6,12(a3) -800033ac: 01072623 sw a6,12(a4) -800033b0: 00d72423 sw a3,8(a4) -800033b4: 00812403 lw s0,8(sp) -800033b8: 00c12083 lw ra,12(sp) -800033bc: 00e82423 sw a4,8(a6) -800033c0: 00048513 mv a0,s1 -800033c4: 00412483 lw s1,4(sp) -800033c8: 00e6a623 sw a4,12(a3) -800033cc: 01010113 addi sp,sp,16 -800033d0: fe1fe06f j 800023b0 <__malloc_unlock> -800033d4: 14081263 bnez a6,80003518 <_free_r+0x2f0> -800033d8: 00c62583 lw a1,12(a2) -800033dc: 00862603 lw a2,8(a2) -800033e0: 00f687b3 add a5,a3,a5 -800033e4: 00812403 lw s0,8(sp) -800033e8: 00b62623 sw a1,12(a2) -800033ec: 00c5a423 sw a2,8(a1) -800033f0: 0017e693 ori a3,a5,1 -800033f4: 00c12083 lw ra,12(sp) -800033f8: 00d72223 sw a3,4(a4) -800033fc: 00048513 mv a0,s1 -80003400: 00f70733 add a4,a4,a5 -80003404: 00412483 lw s1,4(sp) -80003408: 00f72023 sw a5,0(a4) -8000340c: 01010113 addi sp,sp,16 -80003410: fa1fe06f j 800023b0 <__malloc_unlock> -80003414: 00187813 andi a6,a6,1 -80003418: 00d787b3 add a5,a5,a3 -8000341c: 02081063 bnez a6,8000343c <_free_r+0x214> -80003420: ff842503 lw a0,-8(s0) -80003424: 40a70733 sub a4,a4,a0 -80003428: 00c72683 lw a3,12(a4) -8000342c: 00872603 lw a2,8(a4) -80003430: 00a787b3 add a5,a5,a0 -80003434: 00d62623 sw a3,12(a2) -80003438: 00c6a423 sw a2,8(a3) -8000343c: 0017e613 ori a2,a5,1 -80003440: 0d41a683 lw a3,212(gp) # 800048dc <__malloc_trim_threshold> -80003444: 00c72223 sw a2,4(a4) -80003448: 00e5a423 sw a4,8(a1) -8000344c: ead7e8e3 bltu a5,a3,800032fc <_free_r+0xd4> -80003450: 0e01a583 lw a1,224(gp) # 800048e8 <__malloc_top_pad> -80003454: 00048513 mv a0,s1 -80003458: ca1ff0ef jal ra,800030f8 <_malloc_trim_r> -8000345c: ea1ff06f j 800032fc <_free_r+0xd4> -80003460: 01400613 li a2,20 -80003464: 02d67463 bgeu a2,a3,8000348c <_free_r+0x264> -80003468: 05400613 li a2,84 -8000346c: 06d66463 bltu a2,a3,800034d4 <_free_r+0x2ac> -80003470: 00c7d693 srli a3,a5,0xc -80003474: 06f68813 addi a6,a3,111 -80003478: 06e68613 addi a2,a3,110 -8000347c: 00381813 slli a6,a6,0x3 -80003480: f05ff06f j 80003384 <_free_r+0x15c> -80003484: 00d787b3 add a5,a5,a3 -80003488: ea1ff06f j 80003328 <_free_r+0x100> -8000348c: 05c68813 addi a6,a3,92 -80003490: 05b68613 addi a2,a3,91 -80003494: 00381813 slli a6,a6,0x3 -80003498: eedff06f j 80003384 <_free_r+0x15c> -8000349c: 00e5aa23 sw a4,20(a1) -800034a0: 00e5a823 sw a4,16(a1) -800034a4: 00a72623 sw a0,12(a4) -800034a8: 00a72423 sw a0,8(a4) -800034ac: 01172223 sw a7,4(a4) -800034b0: 00f82023 sw a5,0(a6) -800034b4: e49ff06f j 800032fc <_free_r+0xd4> -800034b8: 0045a503 lw a0,4(a1) -800034bc: 40265613 srai a2,a2,0x2 -800034c0: 00100793 li a5,1 -800034c4: 00c79633 sll a2,a5,a2 -800034c8: 00a66633 or a2,a2,a0 -800034cc: 00c5a223 sw a2,4(a1) -800034d0: eddff06f j 800033ac <_free_r+0x184> -800034d4: 15400613 li a2,340 -800034d8: 00d66c63 bltu a2,a3,800034f0 <_free_r+0x2c8> -800034dc: 00f7d693 srli a3,a5,0xf -800034e0: 07868813 addi a6,a3,120 -800034e4: 07768613 addi a2,a3,119 -800034e8: 00381813 slli a6,a6,0x3 -800034ec: e99ff06f j 80003384 <_free_r+0x15c> -800034f0: 55400613 li a2,1364 -800034f4: 00d66c63 bltu a2,a3,8000350c <_free_r+0x2e4> -800034f8: 0127d693 srli a3,a5,0x12 -800034fc: 07d68813 addi a6,a3,125 -80003500: 07c68613 addi a2,a3,124 -80003504: 00381813 slli a6,a6,0x3 -80003508: e7dff06f j 80003384 <_free_r+0x15c> -8000350c: 3f800813 li a6,1016 -80003510: 07e00613 li a2,126 -80003514: e71ff06f j 80003384 <_free_r+0x15c> -80003518: 0017e693 ori a3,a5,1 -8000351c: 00d72223 sw a3,4(a4) -80003520: 00f62023 sw a5,0(a2) -80003524: dd9ff06f j 800032fc <_free_r+0xd4> - -80003528 <_lseek_r>: -80003528: ff010113 addi sp,sp,-16 -8000352c: 00058713 mv a4,a1 -80003530: 00812423 sw s0,8(sp) -80003534: 00912223 sw s1,4(sp) -80003538: 00060593 mv a1,a2 -8000353c: 00050413 mv s0,a0 -80003540: 00068613 mv a2,a3 -80003544: 00070513 mv a0,a4 -80003548: 00112623 sw ra,12(sp) -8000354c: 1801a623 sw zero,396(gp) # 80004994 -80003550: 460000ef jal ra,800039b0 <_lseek> -80003554: fff00793 li a5,-1 -80003558: 00f50c63 beq a0,a5,80003570 <_lseek_r+0x48> -8000355c: 00c12083 lw ra,12(sp) -80003560: 00812403 lw s0,8(sp) -80003564: 00412483 lw s1,4(sp) -80003568: 01010113 addi sp,sp,16 -8000356c: 00008067 ret -80003570: 18c1a783 lw a5,396(gp) # 80004994 -80003574: fe0784e3 beqz a5,8000355c <_lseek_r+0x34> -80003578: 00c12083 lw ra,12(sp) -8000357c: 00f42023 sw a5,0(s0) -80003580: 00812403 lw s0,8(sp) -80003584: 00412483 lw s1,4(sp) -80003588: 01010113 addi sp,sp,16 -8000358c: 00008067 ret - -80003590 <__swhatbuf_r>: -80003590: f9010113 addi sp,sp,-112 -80003594: 06812423 sw s0,104(sp) -80003598: 00058413 mv s0,a1 -8000359c: 00e59583 lh a1,14(a1) -800035a0: 06912223 sw s1,100(sp) -800035a4: 07212023 sw s2,96(sp) -800035a8: 06112623 sw ra,108(sp) -800035ac: 00060493 mv s1,a2 -800035b0: 00068913 mv s2,a3 -800035b4: 0405ca63 bltz a1,80003608 <__swhatbuf_r+0x78> -800035b8: 00810613 addi a2,sp,8 -800035bc: 22c000ef jal ra,800037e8 <_fstat_r> -800035c0: 04054463 bltz a0,80003608 <__swhatbuf_r+0x78> -800035c4: 00c12703 lw a4,12(sp) -800035c8: 0000f7b7 lui a5,0xf -800035cc: 06c12083 lw ra,108(sp) -800035d0: 00e7f7b3 and a5,a5,a4 -800035d4: ffffe737 lui a4,0xffffe -800035d8: 00e787b3 add a5,a5,a4 -800035dc: 06812403 lw s0,104(sp) -800035e0: 0017b793 seqz a5,a5 -800035e4: 00f92023 sw a5,0(s2) -800035e8: 40000793 li a5,1024 -800035ec: 00f4a023 sw a5,0(s1) -800035f0: 00001537 lui a0,0x1 -800035f4: 06412483 lw s1,100(sp) -800035f8: 06012903 lw s2,96(sp) -800035fc: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800> -80003600: 07010113 addi sp,sp,112 -80003604: 00008067 ret -80003608: 00c45783 lhu a5,12(s0) -8000360c: 00092023 sw zero,0(s2) -80003610: 0807f793 andi a5,a5,128 -80003614: 02078463 beqz a5,8000363c <__swhatbuf_r+0xac> -80003618: 06c12083 lw ra,108(sp) -8000361c: 06812403 lw s0,104(sp) -80003620: 04000793 li a5,64 -80003624: 00f4a023 sw a5,0(s1) -80003628: 06012903 lw s2,96(sp) -8000362c: 06412483 lw s1,100(sp) -80003630: 00000513 li a0,0 -80003634: 07010113 addi sp,sp,112 -80003638: 00008067 ret -8000363c: 06c12083 lw ra,108(sp) -80003640: 06812403 lw s0,104(sp) -80003644: 40000793 li a5,1024 -80003648: 00f4a023 sw a5,0(s1) -8000364c: 06012903 lw s2,96(sp) -80003650: 06412483 lw s1,100(sp) -80003654: 00000513 li a0,0 -80003658: 07010113 addi sp,sp,112 -8000365c: 00008067 ret - -80003660 <__smakebuf_r>: -80003660: 00c5d783 lhu a5,12(a1) -80003664: fe010113 addi sp,sp,-32 -80003668: 00812c23 sw s0,24(sp) -8000366c: 00112e23 sw ra,28(sp) -80003670: 00912a23 sw s1,20(sp) -80003674: 01212823 sw s2,16(sp) -80003678: 0027f793 andi a5,a5,2 -8000367c: 00058413 mv s0,a1 -80003680: 02078863 beqz a5,800036b0 <__smakebuf_r+0x50> -80003684: 04358793 addi a5,a1,67 -80003688: 00f5a023 sw a5,0(a1) -8000368c: 00f5a823 sw a5,16(a1) -80003690: 00100793 li a5,1 -80003694: 00f5aa23 sw a5,20(a1) -80003698: 01c12083 lw ra,28(sp) -8000369c: 01812403 lw s0,24(sp) -800036a0: 01412483 lw s1,20(sp) -800036a4: 01012903 lw s2,16(sp) -800036a8: 02010113 addi sp,sp,32 -800036ac: 00008067 ret -800036b0: 00c10693 addi a3,sp,12 -800036b4: 00810613 addi a2,sp,8 -800036b8: 00050493 mv s1,a0 -800036bc: ed5ff0ef jal ra,80003590 <__swhatbuf_r> -800036c0: 00812583 lw a1,8(sp) -800036c4: 00050913 mv s2,a0 -800036c8: 00048513 mv a0,s1 -800036cc: a38fe0ef jal ra,80001904 <_malloc_r> -800036d0: 00c41783 lh a5,12(s0) -800036d4: 04050863 beqz a0,80003724 <__smakebuf_r+0xc4> -800036d8: 80001737 lui a4,0x80001 -800036dc: fb070713 addi a4,a4,-80 # 80000fb0 <__BSS_END__+0xffffc618> -800036e0: 02e4ae23 sw a4,60(s1) -800036e4: 00812703 lw a4,8(sp) -800036e8: 00c12683 lw a3,12(sp) -800036ec: 0807e793 ori a5,a5,128 -800036f0: 00f41623 sh a5,12(s0) -800036f4: 00a42023 sw a0,0(s0) -800036f8: 00a42823 sw a0,16(s0) -800036fc: 00e42a23 sw a4,20(s0) -80003700: 04069863 bnez a3,80003750 <__smakebuf_r+0xf0> -80003704: 0127e7b3 or a5,a5,s2 -80003708: 01c12083 lw ra,28(sp) -8000370c: 00f41623 sh a5,12(s0) -80003710: 01812403 lw s0,24(sp) -80003714: 01412483 lw s1,20(sp) -80003718: 01012903 lw s2,16(sp) -8000371c: 02010113 addi sp,sp,32 -80003720: 00008067 ret -80003724: 2007f713 andi a4,a5,512 -80003728: f60718e3 bnez a4,80003698 <__smakebuf_r+0x38> -8000372c: ffc7f793 andi a5,a5,-4 -80003730: 0027e793 ori a5,a5,2 -80003734: 04340713 addi a4,s0,67 -80003738: 00f41623 sh a5,12(s0) -8000373c: 00100793 li a5,1 -80003740: 00e42023 sw a4,0(s0) -80003744: 00e42823 sw a4,16(s0) -80003748: 00f42a23 sw a5,20(s0) -8000374c: f4dff06f j 80003698 <__smakebuf_r+0x38> -80003750: 00e41583 lh a1,14(s0) -80003754: 00048513 mv a0,s1 -80003758: 0f4000ef jal ra,8000384c <_isatty_r> -8000375c: 00051663 bnez a0,80003768 <__smakebuf_r+0x108> -80003760: 00c41783 lh a5,12(s0) -80003764: fa1ff06f j 80003704 <__smakebuf_r+0xa4> -80003768: 00c45703 lhu a4,12(s0) -8000376c: ffc77713 andi a4,a4,-4 -80003770: 00176713 ori a4,a4,1 -80003774: 01071793 slli a5,a4,0x10 -80003778: 4107d793 srai a5,a5,0x10 -8000377c: f89ff06f j 80003704 <__smakebuf_r+0xa4> - -80003780 <_read_r>: -80003780: ff010113 addi sp,sp,-16 -80003784: 00058713 mv a4,a1 -80003788: 00812423 sw s0,8(sp) -8000378c: 00912223 sw s1,4(sp) -80003790: 00060593 mv a1,a2 -80003794: 00050413 mv s0,a0 -80003798: 00068613 mv a2,a3 -8000379c: 00070513 mv a0,a4 -800037a0: 00112623 sw ra,12(sp) -800037a4: 1801a623 sw zero,396(gp) # 80004994 -800037a8: 258000ef jal ra,80003a00 <_read> -800037ac: fff00793 li a5,-1 -800037b0: 00f50c63 beq a0,a5,800037c8 <_read_r+0x48> -800037b4: 00c12083 lw ra,12(sp) -800037b8: 00812403 lw s0,8(sp) -800037bc: 00412483 lw s1,4(sp) -800037c0: 01010113 addi sp,sp,16 -800037c4: 00008067 ret -800037c8: 18c1a783 lw a5,396(gp) # 80004994 -800037cc: fe0784e3 beqz a5,800037b4 <_read_r+0x34> -800037d0: 00c12083 lw ra,12(sp) -800037d4: 00f42023 sw a5,0(s0) -800037d8: 00812403 lw s0,8(sp) -800037dc: 00412483 lw s1,4(sp) -800037e0: 01010113 addi sp,sp,16 -800037e4: 00008067 ret - -800037e8 <_fstat_r>: -800037e8: ff010113 addi sp,sp,-16 -800037ec: 00058713 mv a4,a1 -800037f0: 00812423 sw s0,8(sp) -800037f4: 00912223 sw s1,4(sp) -800037f8: 00050413 mv s0,a0 -800037fc: 00060593 mv a1,a2 -80003800: 00070513 mv a0,a4 -80003804: 00112623 sw ra,12(sp) -80003808: 1801a623 sw zero,396(gp) # 80004994 -8000380c: 0f4000ef jal ra,80003900 <_fstat> -80003810: fff00793 li a5,-1 -80003814: 00f50c63 beq a0,a5,8000382c <_fstat_r+0x44> -80003818: 00c12083 lw ra,12(sp) -8000381c: 00812403 lw s0,8(sp) -80003820: 00412483 lw s1,4(sp) -80003824: 01010113 addi sp,sp,16 -80003828: 00008067 ret -8000382c: 18c1a783 lw a5,396(gp) # 80004994 -80003830: fe0784e3 beqz a5,80003818 <_fstat_r+0x30> -80003834: 00c12083 lw ra,12(sp) -80003838: 00f42023 sw a5,0(s0) -8000383c: 00812403 lw s0,8(sp) -80003840: 00412483 lw s1,4(sp) -80003844: 01010113 addi sp,sp,16 -80003848: 00008067 ret - -8000384c <_isatty_r>: -8000384c: ff010113 addi sp,sp,-16 -80003850: 00812423 sw s0,8(sp) -80003854: 00912223 sw s1,4(sp) -80003858: 00050413 mv s0,a0 -8000385c: 00058513 mv a0,a1 -80003860: 00112623 sw ra,12(sp) -80003864: 1801a623 sw zero,396(gp) # 80004994 -80003868: 108000ef jal ra,80003970 <_isatty> -8000386c: fff00793 li a5,-1 -80003870: 00f50c63 beq a0,a5,80003888 <_isatty_r+0x3c> -80003874: 00c12083 lw ra,12(sp) -80003878: 00812403 lw s0,8(sp) -8000387c: 00412483 lw s1,4(sp) -80003880: 01010113 addi sp,sp,16 -80003884: 00008067 ret -80003888: 18c1a783 lw a5,396(gp) # 80004994 -8000388c: fe0784e3 beqz a5,80003874 <_isatty_r+0x28> -80003890: 00c12083 lw ra,12(sp) -80003894: 00f42023 sw a5,0(s0) -80003898: 00812403 lw s0,8(sp) -8000389c: 00412483 lw s1,4(sp) -800038a0: 01010113 addi sp,sp,16 -800038a4: 00008067 ret - -800038a8 <_close>: -800038a8: ff010113 addi sp,sp,-16 -800038ac: 00112623 sw ra,12(sp) -800038b0: 00812423 sw s0,8(sp) -800038b4: 00000593 li a1,0 -800038b8: 00000613 li a2,0 -800038bc: 00000693 li a3,0 -800038c0: 00000713 li a4,0 -800038c4: 00000793 li a5,0 -800038c8: 03900893 li a7,57 -800038cc: 00000073 ecall -800038d0: 00050413 mv s0,a0 -800038d4: 00054c63 bltz a0,800038ec <_close+0x44> -800038d8: 00c12083 lw ra,12(sp) -800038dc: 00040513 mv a0,s0 -800038e0: 00812403 lw s0,8(sp) -800038e4: 01010113 addi sp,sp,16 -800038e8: 00008067 ret -800038ec: 40800433 neg s0,s0 -800038f0: 2f0000ef jal ra,80003be0 <__errno> -800038f4: 00852023 sw s0,0(a0) -800038f8: fff00413 li s0,-1 -800038fc: fddff06f j 800038d8 <_close+0x30> - -80003900 <_fstat>: -80003900: f7010113 addi sp,sp,-144 -80003904: 08912223 sw s1,132(sp) -80003908: 08112623 sw ra,140(sp) -8000390c: 00058493 mv s1,a1 -80003910: 08812423 sw s0,136(sp) -80003914: 00010593 mv a1,sp -80003918: 00000613 li a2,0 -8000391c: 00000693 li a3,0 -80003920: 00000713 li a4,0 -80003924: 00000793 li a5,0 -80003928: 05000893 li a7,80 -8000392c: 00000073 ecall -80003930: 00050413 mv s0,a0 -80003934: 02054463 bltz a0,8000395c <_fstat+0x5c> -80003938: 00048513 mv a0,s1 -8000393c: 00010593 mv a1,sp -80003940: 1fc000ef jal ra,80003b3c <_conv_stat> -80003944: 08c12083 lw ra,140(sp) -80003948: 00040513 mv a0,s0 -8000394c: 08812403 lw s0,136(sp) -80003950: 08412483 lw s1,132(sp) -80003954: 09010113 addi sp,sp,144 -80003958: 00008067 ret -8000395c: 40800433 neg s0,s0 -80003960: 280000ef jal ra,80003be0 <__errno> -80003964: 00852023 sw s0,0(a0) -80003968: fff00413 li s0,-1 -8000396c: fcdff06f j 80003938 <_fstat+0x38> - -80003970 <_isatty>: -80003970: f9010113 addi sp,sp,-112 -80003974: 00810593 addi a1,sp,8 -80003978: 06112623 sw ra,108(sp) -8000397c: f85ff0ef jal ra,80003900 <_fstat> -80003980: fff00793 li a5,-1 -80003984: 00f50e63 beq a0,a5,800039a0 <_isatty+0x30> -80003988: 00c12503 lw a0,12(sp) -8000398c: 06c12083 lw ra,108(sp) -80003990: 00d55513 srli a0,a0,0xd -80003994: 00157513 andi a0,a0,1 -80003998: 07010113 addi sp,sp,112 -8000399c: 00008067 ret -800039a0: 06c12083 lw ra,108(sp) -800039a4: 00000513 li a0,0 -800039a8: 07010113 addi sp,sp,112 -800039ac: 00008067 ret - -800039b0 <_lseek>: -800039b0: ff010113 addi sp,sp,-16 -800039b4: 00112623 sw ra,12(sp) -800039b8: 00812423 sw s0,8(sp) -800039bc: 00000693 li a3,0 -800039c0: 00000713 li a4,0 -800039c4: 00000793 li a5,0 -800039c8: 03e00893 li a7,62 -800039cc: 00000073 ecall -800039d0: 00050413 mv s0,a0 -800039d4: 00054c63 bltz a0,800039ec <_lseek+0x3c> -800039d8: 00c12083 lw ra,12(sp) -800039dc: 00040513 mv a0,s0 -800039e0: 00812403 lw s0,8(sp) -800039e4: 01010113 addi sp,sp,16 -800039e8: 00008067 ret -800039ec: 40800433 neg s0,s0 -800039f0: 1f0000ef jal ra,80003be0 <__errno> -800039f4: 00852023 sw s0,0(a0) -800039f8: fff00413 li s0,-1 -800039fc: fddff06f j 800039d8 <_lseek+0x28> - -80003a00 <_read>: -80003a00: ff010113 addi sp,sp,-16 -80003a04: 00112623 sw ra,12(sp) -80003a08: 00812423 sw s0,8(sp) -80003a0c: 00000693 li a3,0 -80003a10: 00000713 li a4,0 -80003a14: 00000793 li a5,0 -80003a18: 03f00893 li a7,63 -80003a1c: 00000073 ecall -80003a20: 00050413 mv s0,a0 -80003a24: 00054c63 bltz a0,80003a3c <_read+0x3c> -80003a28: 00c12083 lw ra,12(sp) -80003a2c: 00040513 mv a0,s0 -80003a30: 00812403 lw s0,8(sp) -80003a34: 01010113 addi sp,sp,16 -80003a38: 00008067 ret -80003a3c: 40800433 neg s0,s0 -80003a40: 1a0000ef jal ra,80003be0 <__errno> -80003a44: 00852023 sw s0,0(a0) -80003a48: fff00413 li s0,-1 -80003a4c: fddff06f j 80003a28 <_read+0x28> - -80003a50 <_sbrk>: -80003a50: 0e41a783 lw a5,228(gp) # 800048ec -80003a54: ff010113 addi sp,sp,-16 -80003a58: 00112623 sw ra,12(sp) -80003a5c: 00050813 mv a6,a0 -80003a60: 02079863 bnez a5,80003a90 <_sbrk+0x40> -80003a64: 00000513 li a0,0 -80003a68: 00000593 li a1,0 -80003a6c: 00000613 li a2,0 -80003a70: 00000693 li a3,0 -80003a74: 00000713 li a4,0 -80003a78: 0d600893 li a7,214 -80003a7c: 00000073 ecall -80003a80: fff00713 li a4,-1 -80003a84: 00050793 mv a5,a0 -80003a88: 04e50463 beq a0,a4,80003ad0 <_sbrk+0x80> -80003a8c: 0ea1a223 sw a0,228(gp) # 800048ec -80003a90: 00f80533 add a0,a6,a5 -80003a94: 00000593 li a1,0 -80003a98: 00000613 li a2,0 -80003a9c: 00000693 li a3,0 -80003aa0: 00000713 li a4,0 -80003aa4: 00000793 li a5,0 -80003aa8: 0d600893 li a7,214 -80003aac: 00000073 ecall -80003ab0: 0e41a783 lw a5,228(gp) # 800048ec -80003ab4: 00f80833 add a6,a6,a5 -80003ab8: 01051c63 bne a0,a6,80003ad0 <_sbrk+0x80> -80003abc: 00c12083 lw ra,12(sp) -80003ac0: 0ea1a223 sw a0,228(gp) # 800048ec -80003ac4: 00078513 mv a0,a5 -80003ac8: 01010113 addi sp,sp,16 -80003acc: 00008067 ret -80003ad0: 110000ef jal ra,80003be0 <__errno> -80003ad4: 00c12083 lw ra,12(sp) -80003ad8: 00c00793 li a5,12 -80003adc: 00f52023 sw a5,0(a0) -80003ae0: fff00513 li a0,-1 -80003ae4: 01010113 addi sp,sp,16 -80003ae8: 00008067 ret - -80003aec <_write>: -80003aec: ff010113 addi sp,sp,-16 -80003af0: 00112623 sw ra,12(sp) -80003af4: 00812423 sw s0,8(sp) -80003af8: 00000693 li a3,0 -80003afc: 00000713 li a4,0 -80003b00: 00000793 li a5,0 -80003b04: 04000893 li a7,64 -80003b08: 00000073 ecall -80003b0c: 00050413 mv s0,a0 -80003b10: 00054c63 bltz a0,80003b28 <_write+0x3c> -80003b14: 00c12083 lw ra,12(sp) -80003b18: 00040513 mv a0,s0 -80003b1c: 00812403 lw s0,8(sp) -80003b20: 01010113 addi sp,sp,16 -80003b24: 00008067 ret -80003b28: 40800433 neg s0,s0 -80003b2c: 0b4000ef jal ra,80003be0 <__errno> -80003b30: 00852023 sw s0,0(a0) -80003b34: fff00413 li s0,-1 -80003b38: fddff06f j 80003b14 <_write+0x28> - -80003b3c <_conv_stat>: -80003b3c: ff010113 addi sp,sp,-16 -80003b40: 0145a383 lw t2,20(a1) -80003b44: 0185a283 lw t0,24(a1) -80003b48: 01c5af83 lw t6,28(a1) -80003b4c: 0205af03 lw t5,32(a1) -80003b50: 0305ae83 lw t4,48(a1) -80003b54: 0405ae03 lw t3,64(a1) -80003b58: 0385a303 lw t1,56(a1) -80003b5c: 0485a803 lw a6,72(a1) -80003b60: 04c5a883 lw a7,76(a1) -80003b64: 0585a603 lw a2,88(a1) -80003b68: 00812623 sw s0,12(sp) -80003b6c: 00912423 sw s1,8(sp) -80003b70: 0105a403 lw s0,16(a1) -80003b74: 0085a483 lw s1,8(a1) -80003b78: 01212223 sw s2,4(sp) -80003b7c: 0005a903 lw s2,0(a1) -80003b80: 05c5a683 lw a3,92(a1) -80003b84: 0685a703 lw a4,104(a1) -80003b88: 06c5a783 lw a5,108(a1) -80003b8c: 01251023 sh s2,0(a0) -80003b90: 00951123 sh s1,2(a0) -80003b94: 00852223 sw s0,4(a0) -80003b98: 00751423 sh t2,8(a0) -80003b9c: 00551523 sh t0,10(a0) -80003ba0: 01f51623 sh t6,12(a0) -80003ba4: 01e51723 sh t5,14(a0) -80003ba8: 01d52823 sw t4,16(a0) -80003bac: 05c52623 sw t3,76(a0) -80003bb0: 04652423 sw t1,72(a0) -80003bb4: 01052c23 sw a6,24(a0) -80003bb8: 01152e23 sw a7,28(a0) -80003bbc: 02c52423 sw a2,40(a0) -80003bc0: 02d52623 sw a3,44(a0) -80003bc4: 00c12403 lw s0,12(sp) -80003bc8: 02e52c23 sw a4,56(a0) -80003bcc: 02f52e23 sw a5,60(a0) -80003bd0: 00812483 lw s1,8(sp) -80003bd4: 00412903 lw s2,4(sp) -80003bd8: 01010113 addi sp,sp,16 -80003bdc: 00008067 ret - -80003be0 <__errno>: -80003be0: 0cc1a503 lw a0,204(gp) # 800048d4 <_impure_ptr> -80003be4: 00008067 ret +80000c28 <__call_exitprocs>: +80000c28: fd010113 addi sp,sp,-48 +80000c2c: 01412c23 sw s4,24(sp) +80000c30: cc01aa03 lw s4,-832(gp) # 800014c8 <_global_impure_ptr> +80000c34: 03212023 sw s2,32(sp) +80000c38: 02112623 sw ra,44(sp) +80000c3c: 148a2903 lw s2,328(s4) +80000c40: 02812423 sw s0,40(sp) +80000c44: 02912223 sw s1,36(sp) +80000c48: 01312e23 sw s3,28(sp) +80000c4c: 01512a23 sw s5,20(sp) +80000c50: 01612823 sw s6,16(sp) +80000c54: 01712623 sw s7,12(sp) +80000c58: 01812423 sw s8,8(sp) +80000c5c: 04090063 beqz s2,80000c9c <__call_exitprocs+0x74> +80000c60: 00050b13 mv s6,a0 +80000c64: 00058b93 mv s7,a1 +80000c68: 00100a93 li s5,1 +80000c6c: fff00993 li s3,-1 +80000c70: 00492483 lw s1,4(s2) +80000c74: fff48413 addi s0,s1,-1 +80000c78: 02044263 bltz s0,80000c9c <__call_exitprocs+0x74> +80000c7c: 00249493 slli s1,s1,0x2 +80000c80: 009904b3 add s1,s2,s1 +80000c84: 040b8463 beqz s7,80000ccc <__call_exitprocs+0xa4> +80000c88: 1044a783 lw a5,260(s1) +80000c8c: 05778063 beq a5,s7,80000ccc <__call_exitprocs+0xa4> +80000c90: fff40413 addi s0,s0,-1 +80000c94: ffc48493 addi s1,s1,-4 +80000c98: ff3416e3 bne s0,s3,80000c84 <__call_exitprocs+0x5c> +80000c9c: 02c12083 lw ra,44(sp) +80000ca0: 02812403 lw s0,40(sp) +80000ca4: 02412483 lw s1,36(sp) +80000ca8: 02012903 lw s2,32(sp) +80000cac: 01c12983 lw s3,28(sp) +80000cb0: 01812a03 lw s4,24(sp) +80000cb4: 01412a83 lw s5,20(sp) +80000cb8: 01012b03 lw s6,16(sp) +80000cbc: 00c12b83 lw s7,12(sp) +80000cc0: 00812c03 lw s8,8(sp) +80000cc4: 03010113 addi sp,sp,48 +80000cc8: 00008067 ret +80000ccc: 00492783 lw a5,4(s2) +80000cd0: 0044a683 lw a3,4(s1) +80000cd4: fff78793 addi a5,a5,-1 +80000cd8: 04878e63 beq a5,s0,80000d34 <__call_exitprocs+0x10c> +80000cdc: 0004a223 sw zero,4(s1) +80000ce0: fa0688e3 beqz a3,80000c90 <__call_exitprocs+0x68> +80000ce4: 18892783 lw a5,392(s2) +80000ce8: 008a9733 sll a4,s5,s0 +80000cec: 00492c03 lw s8,4(s2) +80000cf0: 00f777b3 and a5,a4,a5 +80000cf4: 02079263 bnez a5,80000d18 <__call_exitprocs+0xf0> +80000cf8: 000680e7 jalr a3 +80000cfc: 00492703 lw a4,4(s2) +80000d00: 148a2783 lw a5,328(s4) +80000d04: 01871463 bne a4,s8,80000d0c <__call_exitprocs+0xe4> +80000d08: f8f904e3 beq s2,a5,80000c90 <__call_exitprocs+0x68> +80000d0c: f80788e3 beqz a5,80000c9c <__call_exitprocs+0x74> +80000d10: 00078913 mv s2,a5 +80000d14: f5dff06f j 80000c70 <__call_exitprocs+0x48> +80000d18: 18c92783 lw a5,396(s2) +80000d1c: 0844a583 lw a1,132(s1) +80000d20: 00f77733 and a4,a4,a5 +80000d24: 00071c63 bnez a4,80000d3c <__call_exitprocs+0x114> +80000d28: 000b0513 mv a0,s6 +80000d2c: 000680e7 jalr a3 +80000d30: fcdff06f j 80000cfc <__call_exitprocs+0xd4> +80000d34: 00892223 sw s0,4(s2) +80000d38: fa9ff06f j 80000ce0 <__call_exitprocs+0xb8> +80000d3c: 00058513 mv a0,a1 +80000d40: 000680e7 jalr a3 +80000d44: fb9ff06f j 80000cfc <__call_exitprocs+0xd4> Disassembly of section .rodata: -80003be8 : -80003be8: 654c flw fa1,12(a0) -80003bea: 2774 fld fa3,200(a4) -80003bec: 74732073 csrs 0x747,t1 -80003bf0: 7261 lui tp,0xffff8 -80003bf2: 2e74 fld fa3,216(a2) -80003bf4: 2e2e fld ft8,200(sp) -80003bf6: 2820 fld fs0,80(s0) -80003bf8: 6854 flw fa3,20(s0) -80003bfa: 7369 lui t1,0xffffa -80003bfc: 6d20 flw fs0,88(a0) -80003bfe: 6769 lui a4,0x1a -80003c00: 7468 flw fa0,108(s0) -80003c02: 7420 flw fs0,104(s0) -80003c04: 6b61 lui s6,0x18 -80003c06: 2065 jal 80003cae <__errno+0xce> -80003c08: 2061 jal 80003c90 <__errno+0xb0> -80003c0a: 6c696877 0x6c696877 -80003c0e: 2965 jal 800040c6 -80003c10: 000a c.slli zero,0x2 -80003c12: 0000 unimp -80003c14: 3254 fld fa3,160(a2) -80003c16: 4620 lw s0,72(a2) -80003c18: 6961 lui s2,0x18 -80003c1a: 206c fld fa1,192(s0) -80003c1c: 00206e6f jal t3,80009c1e <__BSS_END__+0x5286> -80003c20: 3e2d7257 0x3e2d7257 -80003c24: 6572 flw fa0,28(sp) -80003c26: 6461 lui s0,0x18 -80003c28: 6120 flw fs0,64(a0) -80003c2a: 646e flw fs0,216(sp) -80003c2c: 7220 flw fs0,96(a2) -80003c2e: 7065 c.lui zero,0xffff9 -80003c30: 6165 addi sp,sp,112 -80003c32: 2874 fld fa3,208(s0) -80003c34: 20297257 0x20297257 -80003c38: 6574 flw fa3,76(a0) -80003c3a: 20737473 csrrci s0,0x207,6 -80003c3e: 6170 flw fa2,68(a0) -80003c40: 64657373 csrrci t1,0x646,10 -80003c44: 0a21 addi s4,s4,8 -80003c46: 0000 unimp -80003c48: 706d6953 0x706d6953 -80003c4c: 656c flw fa1,76(a0) -80003c4e: 4d20 lw s0,88(a0) -80003c50: 6961 lui s2,0x18 -80003c52: 0a6e slli s4,s4,0x1b -80003c54: 0000 unimp -80003c56: 0000 unimp -80003c58: 6574 flw fa3,76(a0) -80003c5a: 645f7473 csrrci s0,0x645,30 -80003c5e: 7669 lui a2,0xffffa -80003c60: 7265 lui tp,0xffff9 -80003c62: 636e6567 0x636e6567 -80003c66: 0a65 addi s4,s4,25 -80003c68: 0000 unimp -80003c6a: 0000 unimp -80003c6c: 6574 flw fa3,76(a0) -80003c6e: 775f7473 csrrci s0,0x775,30 -80003c72: 77617073 csrci 0x776,2 -80003c76: 0a6e slli s4,s4,0x1b -80003c78: 0000 unimp -80003c7a: 0000 unimp -80003c7c: 72616853 0x72616853 -80003c80: 6465 lui s0,0x19 -80003c82: 4d20 lw s0,88(a0) -80003c84: 6d65 lui s10,0x19 -80003c86: 2079726f jal tp,8009b68c <__BSS_END__+0x96cf4> -80003c8a: 6574 flw fa3,76(a0) -80003c8c: 000a7473 csrrci s0,ustatus,20 -80003c90: 7470 flw fa2,108(s0) -80003c92: 3a72 fld fs4,312(sp) -80003c94: 0020 addi s0,sp,8 -80003c96: 0000 unimp -80003c98: 6769724f fnmadd.q ft4,fs2,fs6,fa2 -80003c9c: 6e69 lui t3,0x1a -80003c9e: 6c61 lui s8,0x18 -80003ca0: 5620 lw s0,104(a2) -80003ca2: 6c61 lui s8,0x18 -80003ca4: 6575 lui a0,0x1d -80003ca6: 203a fld ft0,392(sp) -80003ca8: 0000 unimp -80003caa: 0000 unimp -80003cac: 6552 flw fa0,20(sp) -80003cae: 6461 lui s0,0x18 -80003cb0: 5620 lw s0,104(a2) -80003cb2: 6c61 lui s8,0x18 -80003cb4: 6575 lui a0,0x1d -80003cb6: 203a fld ft0,392(sp) -80003cb8: 0000 unimp -80003cba: 0000 unimp -80003cbc: 2d2d jal 800042f6 -80003cbe: 2d2d jal 800042f8 -80003cc0: 2d2d jal 800042fa -80003cc2: 2d2d jal 800042fc -80003cc4: 2d2d jal 800042fe -80003cc6: 2d2d jal 80004300 -80003cc8: 2d2d jal 80004302 -80003cca: 2d2d jal 80004304 -80003ccc: 2d2d jal 80004306 -80003cce: 0a2d addi s4,s4,11 -80003cd0: 0000 unimp -80003cd2: 0000 unimp -80003cd4: 7876 flw fa6,124(sp) -80003cd6: 735f 6170 6e77 0x6e776170735f -80003cdc: 775f 7261 7370 0x73707261775f -80003ce2: 6d20 flw fs0,88(a0) -80003ce4: 7461 lui s0,0xffff8 -80003ce6: 615f 6464 6b5f 0x6b5f6464615f -80003cec: 7265 lui tp,0xffff9 -80003cee: 656e flw fa0,216(sp) -80003cf0: 0a6c addi a1,sp,284 -80003cf2: 0000 unimp -80003cf4: 74696157 0x74696157 -80003cf8: 6e69 lui t3,0x1a -80003cfa: 6f742067 0x6f742067 -80003cfe: 6520 flw fs0,72(a0) -80003d00: 736e flw ft6,248(sp) -80003d02: 7275 lui tp,0xffffd -80003d04: 2065 jal 80003dac -80003d06: 6568746f jal s0,8008b35c <__BSS_END__+0x869c4> -80003d0a: 2072 fld ft0,280(sp) -80003d0c: 70726177 0x70726177 -80003d10: 72612073 csrs 0x726,sp -80003d14: 2065 jal 80003dbc -80003d16: 6f64 flw fs1,92(a4) -80003d18: 656e flw fa0,216(sp) -80003d1a: 2e2e fld ft8,200(sp) -80003d1c: 202e fld ft0,200(sp) -80003d1e: 5428 lw a0,104(s0) -80003d20: 6b61 lui s6,0x18 -80003d22: 7365 lui t1,0xffff9 -80003d24: 6120 flw fs0,64(a0) -80003d26: 7720 flw fs0,104(a4) -80003d28: 6968 flw fa0,84(a0) -80003d2a: 656c flw fa1,76(a0) -80003d2c: 0a29 addi s4,s4,10 -80003d2e: 0000 unimp -80003d30: 6574 flw fa3,76(a0) -80003d32: 6e697473 csrrci s0,0x6e6,18 -80003d36: 6d745f67 0x6d745f67 -80003d3a: 00000a63 beqz zero,80003d4e <__errno+0x16e> -80003d3e: 0000 unimp -80003d40: 6574 flw fa3,76(a0) -80003d42: 735f7473 csrrci s0,0x735,30 -80003d46: 6170 flw fa2,68(a0) -80003d48: 000a6e77 0xa6e77 -80003d4c: 0030 addi a2,sp,8 -80003d4e: 0000 unimp -80003d50: 0031 c.nop 12 -80003d52: 0000 unimp -80003d54: 0032 c.slli zero,0xc -80003d56: 0000 unimp -80003d58: 00000033 add zero,zero,zero -80003d5c: 0034 addi a3,sp,8 -80003d5e: 0000 unimp -80003d60: 0035 c.nop 13 -80003d62: 0000 unimp -80003d64: 0036 c.slli zero,0xd -80003d66: 0000 unimp -80003d68: 00000037 lui zero,0x0 -80003d6c: 0038 addi a4,sp,8 -80003d6e: 0000 unimp -80003d70: 0039 c.nop 14 -80003d72: 0000 unimp -80003d74: 0061 c.nop 24 -80003d76: 0000 unimp -80003d78: 0062 c.slli zero,0x18 -80003d7a: 0000 unimp -80003d7c: 00000063 beqz zero,80003d7c <__errno+0x19c> -80003d80: 0064 addi s1,sp,12 -80003d82: 0000 unimp -80003d84: 0065 c.nop 25 -80003d86: 0000 unimp -80003d88: 0066 c.slli zero,0x19 +80000d48 : +80000d48: 654c flw fa1,12(a0) +80000d4a: 2774 fld fa3,200(a4) +80000d4c: 74732073 csrs 0x747,t1 +80000d50: 7261 lui tp,0xffff8 +80000d52: 2e74 fld fa3,216(a2) +80000d54: 2e2e fld ft8,200(sp) +80000d56: 2820 fld fs0,80(s0) +80000d58: 6854 flw fa3,20(s0) +80000d5a: 7369 lui t1,0xffffa +80000d5c: 6d20 flw fs0,88(a0) +80000d5e: 6769 lui a4,0x1a +80000d60: 7468 flw fa0,108(s0) +80000d62: 7420 flw fs0,104(s0) +80000d64: 6b61 lui s6,0x18 +80000d66: 2065 jal 80000e0e <__call_exitprocs+0x1e6> +80000d68: 2061 jal 80000df0 <__call_exitprocs+0x1c8> +80000d6a: 6c696877 0x6c696877 +80000d6e: 2965 jal 80001226 +80000d70: 000a c.slli zero,0x2 +80000d72: 0000 unimp +80000d74: 3254 fld fa3,160(a2) +80000d76: 4620 lw s0,72(a2) +80000d78: 6961 lui s2,0x18 +80000d7a: 206c fld fa1,192(s0) +80000d7c: 00206e6f jal t3,80006d7e <__global_pointer$+0x5576> +80000d80: 3e2d7257 0x3e2d7257 +80000d84: 6572 flw fa0,28(sp) +80000d86: 6461 lui s0,0x18 +80000d88: 6120 flw fs0,64(a0) +80000d8a: 646e flw fs0,216(sp) +80000d8c: 7220 flw fs0,96(a2) +80000d8e: 7065 c.lui zero,0xffff9 +80000d90: 6165 addi sp,sp,112 +80000d92: 2874 fld fa3,208(s0) +80000d94: 20297257 0x20297257 +80000d98: 6574 flw fa3,76(a0) +80000d9a: 20737473 csrrci s0,0x207,6 +80000d9e: 6170 flw fa2,68(a0) +80000da0: 64657373 csrrci t1,0x646,10 +80000da4: 0a21 addi s4,s4,8 +80000da6: 0000 unimp +80000da8: 706d6953 0x706d6953 +80000dac: 656c flw fa1,76(a0) +80000dae: 4d20 lw s0,88(a0) +80000db0: 6961 lui s2,0x18 +80000db2: 0a6e slli s4,s4,0x1b +80000db4: 0000 unimp +80000db6: 0000 unimp +80000db8: 6574 flw fa3,76(a0) +80000dba: 645f7473 csrrci s0,0x645,30 +80000dbe: 7669 lui a2,0xffffa +80000dc0: 7265 lui tp,0xffff9 +80000dc2: 636e6567 0x636e6567 +80000dc6: 0a65 addi s4,s4,25 +80000dc8: 0000 unimp +80000dca: 0000 unimp +80000dcc: 6574 flw fa3,76(a0) +80000dce: 775f7473 csrrci s0,0x775,30 +80000dd2: 77617073 csrci 0x776,2 +80000dd6: 0a6e slli s4,s4,0x1b +80000dd8: 0000 unimp +80000dda: 0000 unimp +80000ddc: 72616853 0x72616853 +80000de0: 6465 lui s0,0x19 +80000de2: 4d20 lw s0,88(a0) +80000de4: 6d65 lui s10,0x19 +80000de6: 2079726f jal tp,800987ec <__global_pointer$+0x96fe4> +80000dea: 6574 flw fa3,76(a0) +80000dec: 000a7473 csrrci s0,ustatus,20 +80000df0: 7470 flw fa2,108(s0) +80000df2: 3a72 fld fs4,312(sp) +80000df4: 0020 addi s0,sp,8 +80000df6: 0000 unimp +80000df8: 6769724f fnmadd.q ft4,fs2,fs6,fa2 +80000dfc: 6e69 lui t3,0x1a +80000dfe: 6c61 lui s8,0x18 +80000e00: 5620 lw s0,104(a2) +80000e02: 6c61 lui s8,0x18 +80000e04: 6575 lui a0,0x1d +80000e06: 203a fld ft0,392(sp) +80000e08: 0000 unimp +80000e0a: 0000 unimp +80000e0c: 6552 flw fa0,20(sp) +80000e0e: 6461 lui s0,0x18 +80000e10: 5620 lw s0,104(a2) +80000e12: 6c61 lui s8,0x18 +80000e14: 6575 lui a0,0x1d +80000e16: 203a fld ft0,392(sp) +80000e18: 0000 unimp +80000e1a: 0000 unimp +80000e1c: 2d2d jal 80001456 +80000e1e: 2d2d jal 80001458 +80000e20: 2d2d jal 8000145a +80000e22: 2d2d jal 8000145c +80000e24: 2d2d jal 8000145e +80000e26: 2d2d jal 80001460 +80000e28: 2d2d jal 80001462 +80000e2a: 2d2d jal 80001464 +80000e2c: 2d2d jal 80001466 +80000e2e: 0a2d addi s4,s4,11 +80000e30: 0000 unimp +80000e32: 0000 unimp +80000e34: 7876 flw fa6,124(sp) +80000e36: 735f 6170 6e77 0x6e776170735f +80000e3c: 775f 7261 7370 0x73707261775f +80000e42: 6d20 flw fs0,88(a0) +80000e44: 7461 lui s0,0xffff8 +80000e46: 615f 6464 6b5f 0x6b5f6464615f +80000e4c: 7265 lui tp,0xffff9 +80000e4e: 656e flw fa0,216(sp) +80000e50: 0a6c addi a1,sp,284 +80000e52: 0000 unimp +80000e54: 74696157 0x74696157 +80000e58: 6e69 lui t3,0x1a +80000e5a: 6f742067 0x6f742067 +80000e5e: 6520 flw fs0,72(a0) +80000e60: 736e flw ft6,248(sp) +80000e62: 7275 lui tp,0xffffd +80000e64: 2065 jal 80000f0c +80000e66: 6568746f jal s0,800884bc <__global_pointer$+0x86cb4> +80000e6a: 2072 fld ft0,280(sp) +80000e6c: 70726177 0x70726177 +80000e70: 72612073 csrs 0x726,sp +80000e74: 2065 jal 80000f1c +80000e76: 6f64 flw fs1,92(a4) +80000e78: 656e flw fa0,216(sp) +80000e7a: 2e2e fld ft8,200(sp) +80000e7c: 202e fld ft0,200(sp) +80000e7e: 5428 lw a0,104(s0) +80000e80: 6b61 lui s6,0x18 +80000e82: 7365 lui t1,0xffff9 +80000e84: 6120 flw fs0,64(a0) +80000e86: 7720 flw fs0,104(a4) +80000e88: 6968 flw fa0,84(a0) +80000e8a: 656c flw fa1,76(a0) +80000e8c: 0a29 addi s4,s4,10 +80000e8e: 0000 unimp +80000e90: 6574 flw fa3,76(a0) +80000e92: 6e697473 csrrci s0,0x6e6,18 +80000e96: 6d745f67 0x6d745f67 +80000e9a: 00000a63 beqz zero,80000eae <__call_exitprocs+0x286> +80000e9e: 0000 unimp +80000ea0: 6574 flw fa3,76(a0) +80000ea2: 735f7473 csrrci s0,0x735,30 +80000ea6: 6170 flw fa2,68(a0) +80000ea8: 000a6e77 0xa6e77 +80000eac: 0030 addi a2,sp,8 +80000eae: 0000 unimp +80000eb0: 0031 c.nop 12 +80000eb2: 0000 unimp +80000eb4: 0032 c.slli zero,0xc +80000eb6: 0000 unimp +80000eb8: 00000033 add zero,zero,zero +80000ebc: 0034 addi a3,sp,8 +80000ebe: 0000 unimp +80000ec0: 0035 c.nop 13 +80000ec2: 0000 unimp +80000ec4: 0036 c.slli zero,0xd +80000ec6: 0000 unimp +80000ec8: 00000037 lui zero,0x0 +80000ecc: 0038 addi a4,sp,8 +80000ece: 0000 unimp +80000ed0: 0039 c.nop 14 +80000ed2: 0000 unimp +80000ed4: 0061 c.nop 24 +80000ed6: 0000 unimp +80000ed8: 0062 c.slli zero,0x18 +80000eda: 0000 unimp +80000edc: 00000063 beqz zero,80000edc <__call_exitprocs+0x2b4> +80000ee0: 0064 addi s1,sp,12 +80000ee2: 0000 unimp +80000ee4: 0065 c.nop 25 +80000ee6: 0000 unimp +80000ee8: 0066 c.slli zero,0x19 ... -80003d8c : -80003d8c: 3d4c fld fa1,184(a0) -80003d8e: 8000 0x8000 -80003d90: 3d50 fld fa2,184(a0) -80003d92: 8000 0x8000 -80003d94: 3d54 fld fa3,184(a0) -80003d96: 8000 0x8000 -80003d98: 3d58 fld fa4,184(a0) -80003d9a: 8000 0x8000 -80003d9c: 3d5c fld fa5,184(a0) -80003d9e: 8000 0x8000 -80003da0: 3d60 fld fs0,248(a0) -80003da2: 8000 0x8000 -80003da4: 3d64 fld fs1,248(a0) -80003da6: 8000 0x8000 -80003da8: 3d68 fld fa0,248(a0) -80003daa: 8000 0x8000 -80003dac: 3d6c fld fa1,248(a0) -80003dae: 8000 0x8000 -80003db0: 3d70 fld fa2,248(a0) -80003db2: 8000 0x8000 -80003db4: 3d74 fld fa3,248(a0) -80003db6: 8000 0x8000 -80003db8: 3d78 fld fa4,248(a0) -80003dba: 8000 0x8000 -80003dbc: 3d7c fld fa5,248(a0) -80003dbe: 8000 0x8000 -80003dc0: 3d80 fld fs0,56(a1) -80003dc2: 8000 0x8000 -80003dc4: 3d84 fld fs1,56(a1) -80003dc6: 8000 0x8000 -80003dc8: 3d88 fld fa0,56(a1) -80003dca: 8000 0x8000 -80003dcc: 5245 li tp,-15 -80003dce: 4f52 lw t5,20(sp) -80003dd0: 3a52 fld fs4,304(sp) -80003dd2: 7020 flw fs0,96(s0) -80003dd4: 5f6c636f jal t1,800ca3ca <__BSS_END__+0xc5a32> -80003dd8: 77617073 csrci 0x776,2 -80003ddc: 206e fld ft0,216(sp) -80003dde: 6f64 flw fs1,92(a4) -80003de0: 7365 lui t1,0xffff9 -80003de2: 276e fld fa4,216(sp) -80003de4: 2074 fld fa3,192(s0) -80003de6: 70707573 csrrci a0,0x707,0 -80003dea: 2074726f jal tp,8004b7f0 <__BSS_END__+0x46e58> -80003dee: 205a fld ft0,400(sp) -80003df0: 6964 flw fs1,84(a0) -80003df2: 656d lui a0,0x1b -80003df4: 736e flw ft6,248(sp) -80003df6: 6f69 lui t5,0x1a -80003df8: 206e fld ft0,216(sp) -80003dfa: 6579 lui a0,0x1e -80003dfc: 2174 fld fa3,192(a0) - ... +80000eec : +80000eec: 0eac addi a1,sp,856 +80000eee: 8000 0x8000 +80000ef0: 0eb0 addi a2,sp,856 +80000ef2: 8000 0x8000 +80000ef4: 0eb4 addi a3,sp,856 +80000ef6: 8000 0x8000 +80000ef8: 0eb8 addi a4,sp,856 +80000efa: 8000 0x8000 +80000efc: 0ebc addi a5,sp,856 +80000efe: 8000 0x8000 +80000f00: 0ec0 addi s0,sp,852 +80000f02: 8000 0x8000 +80000f04: 0ec4 addi s1,sp,852 +80000f06: 8000 0x8000 +80000f08: 0ec8 addi a0,sp,852 +80000f0a: 8000 0x8000 +80000f0c: 0ecc addi a1,sp,852 +80000f0e: 8000 0x8000 +80000f10: 0ed0 addi a2,sp,852 +80000f12: 8000 0x8000 +80000f14: 0ed4 addi a3,sp,852 +80000f16: 8000 0x8000 +80000f18: 0ed8 addi a4,sp,852 +80000f1a: 8000 0x8000 +80000f1c: 0edc addi a5,sp,852 +80000f1e: 8000 0x8000 +80000f20: 0ee0 addi s0,sp,860 +80000f22: 8000 0x8000 +80000f24: 0ee4 addi s1,sp,860 +80000f26: 8000 0x8000 +80000f28: 0ee8 addi a0,sp,860 +80000f2a: 8000 0x8000 Disassembly of section .init_array: -80004000 <__init_array_start>: -80004000: 0260 addi s0,sp,268 -80004002: 8000 0x8000 +80001000 <__init_array_start>: +80001000: 0260 addi s0,sp,268 +80001002: 8000 0x8000 Disassembly of section .data: -80004008 : -80004008: 0005 c.nop 1 -8000400a: 0000 unimp -8000400c: 0005 c.nop 1 -8000400e: 0000 unimp -80004010: 0005 c.nop 1 -80004012: 0000 unimp -80004014: 0005 c.nop 1 -80004016: 0000 unimp -80004018: 0006 c.slli zero,0x1 -8000401a: 0000 unimp -8000401c: 0006 c.slli zero,0x1 -8000401e: 0000 unimp -80004020: 0006 c.slli zero,0x1 -80004022: 0000 unimp -80004024: 0006 c.slli zero,0x1 -80004026: 0000 unimp -80004028: 00000007 0x7 -8000402c: 00000007 0x7 -80004030: 00000007 0x7 -80004034: 00000007 0x7 -80004038: 0008 0x8 -8000403a: 0000 unimp -8000403c: 0008 0x8 -8000403e: 0000 unimp -80004040: 0008 0x8 -80004042: 0000 unimp -80004044: 0008 0x8 +80001008 : +80001008: 0005 c.nop 1 +8000100a: 0000 unimp +8000100c: 0005 c.nop 1 +8000100e: 0000 unimp +80001010: 0005 c.nop 1 +80001012: 0000 unimp +80001014: 0005 c.nop 1 +80001016: 0000 unimp +80001018: 0006 c.slli zero,0x1 +8000101a: 0000 unimp +8000101c: 0006 c.slli zero,0x1 +8000101e: 0000 unimp +80001020: 0006 c.slli zero,0x1 +80001022: 0000 unimp +80001024: 0006 c.slli zero,0x1 +80001026: 0000 unimp +80001028: 00000007 0x7 +8000102c: 00000007 0x7 +80001030: 00000007 0x7 +80001034: 00000007 0x7 +80001038: 0008 0x8 +8000103a: 0000 unimp +8000103c: 0008 0x8 +8000103e: 0000 unimp +80001040: 0008 0x8 +80001042: 0000 unimp +80001044: 0008 0x8 ... -80004048 : -80004048: 0001 nop -8000404a: 0000 unimp -8000404c: 0001 nop -8000404e: 0000 unimp -80004050: 0001 nop -80004052: 0000 unimp -80004054: 0001 nop -80004056: 0000 unimp -80004058: 0001 nop -8000405a: 0000 unimp -8000405c: 0001 nop -8000405e: 0000 unimp -80004060: 0001 nop -80004062: 0000 unimp -80004064: 0001 nop -80004066: 0000 unimp -80004068: 0001 nop -8000406a: 0000 unimp -8000406c: 0001 nop -8000406e: 0000 unimp -80004070: 0001 nop -80004072: 0000 unimp -80004074: 0001 nop -80004076: 0000 unimp -80004078: 0001 nop -8000407a: 0000 unimp -8000407c: 0001 nop -8000407e: 0000 unimp -80004080: 0001 nop -80004082: 0000 unimp -80004084: 0001 nop +80001048 : +80001048: 0001 nop +8000104a: 0000 unimp +8000104c: 0001 nop +8000104e: 0000 unimp +80001050: 0001 nop +80001052: 0000 unimp +80001054: 0001 nop +80001056: 0000 unimp +80001058: 0001 nop +8000105a: 0000 unimp +8000105c: 0001 nop +8000105e: 0000 unimp +80001060: 0001 nop +80001062: 0000 unimp +80001064: 0001 nop +80001066: 0000 unimp +80001068: 0001 nop +8000106a: 0000 unimp +8000106c: 0001 nop +8000106e: 0000 unimp +80001070: 0001 nop +80001072: 0000 unimp +80001074: 0001 nop +80001076: 0000 unimp +80001078: 0001 nop +8000107a: 0000 unimp +8000107c: 0001 nop +8000107e: 0000 unimp +80001080: 0001 nop +80001082: 0000 unimp +80001084: 0001 nop ... -80004088 : -80004088: 0005 c.nop 1 -8000408a: 0000 unimp -8000408c: 0005 c.nop 1 -8000408e: 0000 unimp -80004090: 0005 c.nop 1 -80004092: 0000 unimp -80004094: 0005 c.nop 1 +80001088 : +80001088: 0005 c.nop 1 +8000108a: 0000 unimp +8000108c: 0005 c.nop 1 +8000108e: 0000 unimp +80001090: 0005 c.nop 1 +80001092: 0000 unimp +80001094: 0005 c.nop 1 ... -80004098 : -80004098: fffc fsw fa5,124(a5) -8000409a: ffff 0xffff -8000409c: 0000 unimp +80001098 : +80001098: fffc fsw fa5,124(a5) +8000109a: ffff 0xffff +8000109c: 0000 unimp ... -800040a0 : -800040a0: 0000 unimp -800040a2: 0000 unimp -800040a4: 438c lw a1,0(a5) -800040a6: 8000 0x8000 -800040a8: 43f4 lw a3,68(a5) -800040aa: 8000 0x8000 -800040ac: 445c lw a5,12(s0) -800040ae: 8000 0x8000 +800010a0 : +800010a0: 0000 unimp +800010a2: 0000 unimp +800010a4: 138c addi a1,sp,480 +800010a6: 8000 0x8000 +800010a8: 13f4 addi a3,sp,492 +800010aa: 8000 0x8000 +800010ac: 145c addi a5,sp,548 +800010ae: 8000 0x8000 ... -80004148: 0001 nop -8000414a: 0000 unimp -8000414c: 0000 unimp -8000414e: 0000 unimp -80004150: 330e fld ft6,224(sp) -80004152: abcd j 80004744 <__malloc_av_+0x27c> -80004154: 1234 addi a3,sp,296 -80004156: e66d bnez a2,80004240 -80004158: deec sw a1,124(a3) -8000415a: 0005 c.nop 1 -8000415c: 0000000b 0xb +80001148: 0001 nop +8000114a: 0000 unimp +8000114c: 0000 unimp +8000114e: 0000 unimp +80001150: 330e fld ft6,224(sp) +80001152: abcd j 80001744 <__BSS_END__+0x214> +80001154: 1234 addi a3,sp,296 +80001156: e66d bnez a2,80001240 +80001158: deec sw a1,124(a3) +8000115a: 0005 c.nop 1 +8000115c: 0000000b 0xb ... -800044c8 <__malloc_av_>: - ... -800044d0: 44c8 lw a0,12(s1) -800044d2: 8000 0x8000 -800044d4: 44c8 lw a0,12(s1) -800044d6: 8000 0x8000 -800044d8: 44d0 lw a2,12(s1) -800044da: 8000 0x8000 -800044dc: 44d0 lw a2,12(s1) -800044de: 8000 0x8000 -800044e0: 44d8 lw a4,12(s1) -800044e2: 8000 0x8000 -800044e4: 44d8 lw a4,12(s1) -800044e6: 8000 0x8000 -800044e8: 44e0 lw s0,76(s1) -800044ea: 8000 0x8000 -800044ec: 44e0 lw s0,76(s1) -800044ee: 8000 0x8000 -800044f0: 44e8 lw a0,76(s1) -800044f2: 8000 0x8000 -800044f4: 44e8 lw a0,76(s1) -800044f6: 8000 0x8000 -800044f8: 44f0 lw a2,76(s1) -800044fa: 8000 0x8000 -800044fc: 44f0 lw a2,76(s1) -800044fe: 8000 0x8000 -80004500: 44f8 lw a4,76(s1) -80004502: 8000 0x8000 -80004504: 44f8 lw a4,76(s1) -80004506: 8000 0x8000 -80004508: 4500 lw s0,8(a0) -8000450a: 8000 0x8000 -8000450c: 4500 lw s0,8(a0) -8000450e: 8000 0x8000 -80004510: 4508 lw a0,8(a0) -80004512: 8000 0x8000 -80004514: 4508 lw a0,8(a0) -80004516: 8000 0x8000 -80004518: 4510 lw a2,8(a0) -8000451a: 8000 0x8000 -8000451c: 4510 lw a2,8(a0) -8000451e: 8000 0x8000 -80004520: 4518 lw a4,8(a0) -80004522: 8000 0x8000 -80004524: 4518 lw a4,8(a0) -80004526: 8000 0x8000 -80004528: 4520 lw s0,72(a0) -8000452a: 8000 0x8000 -8000452c: 4520 lw s0,72(a0) -8000452e: 8000 0x8000 -80004530: 4528 lw a0,72(a0) -80004532: 8000 0x8000 -80004534: 4528 lw a0,72(a0) -80004536: 8000 0x8000 -80004538: 4530 lw a2,72(a0) -8000453a: 8000 0x8000 -8000453c: 4530 lw a2,72(a0) -8000453e: 8000 0x8000 -80004540: 4538 lw a4,72(a0) -80004542: 8000 0x8000 -80004544: 4538 lw a4,72(a0) -80004546: 8000 0x8000 -80004548: 4540 lw s0,12(a0) -8000454a: 8000 0x8000 -8000454c: 4540 lw s0,12(a0) -8000454e: 8000 0x8000 -80004550: 4548 lw a0,12(a0) -80004552: 8000 0x8000 -80004554: 4548 lw a0,12(a0) -80004556: 8000 0x8000 -80004558: 4550 lw a2,12(a0) -8000455a: 8000 0x8000 -8000455c: 4550 lw a2,12(a0) -8000455e: 8000 0x8000 -80004560: 4558 lw a4,12(a0) -80004562: 8000 0x8000 -80004564: 4558 lw a4,12(a0) -80004566: 8000 0x8000 -80004568: 4560 lw s0,76(a0) -8000456a: 8000 0x8000 -8000456c: 4560 lw s0,76(a0) -8000456e: 8000 0x8000 -80004570: 4568 lw a0,76(a0) -80004572: 8000 0x8000 -80004574: 4568 lw a0,76(a0) -80004576: 8000 0x8000 -80004578: 4570 lw a2,76(a0) -8000457a: 8000 0x8000 -8000457c: 4570 lw a2,76(a0) -8000457e: 8000 0x8000 -80004580: 4578 lw a4,76(a0) -80004582: 8000 0x8000 -80004584: 4578 lw a4,76(a0) -80004586: 8000 0x8000 -80004588: 4580 lw s0,8(a1) -8000458a: 8000 0x8000 -8000458c: 4580 lw s0,8(a1) -8000458e: 8000 0x8000 -80004590: 4588 lw a0,8(a1) -80004592: 8000 0x8000 -80004594: 4588 lw a0,8(a1) -80004596: 8000 0x8000 -80004598: 4590 lw a2,8(a1) -8000459a: 8000 0x8000 -8000459c: 4590 lw a2,8(a1) -8000459e: 8000 0x8000 -800045a0: 4598 lw a4,8(a1) -800045a2: 8000 0x8000 -800045a4: 4598 lw a4,8(a1) -800045a6: 8000 0x8000 -800045a8: 45a0 lw s0,72(a1) -800045aa: 8000 0x8000 -800045ac: 45a0 lw s0,72(a1) -800045ae: 8000 0x8000 -800045b0: 45a8 lw a0,72(a1) -800045b2: 8000 0x8000 -800045b4: 45a8 lw a0,72(a1) -800045b6: 8000 0x8000 -800045b8: 45b0 lw a2,72(a1) -800045ba: 8000 0x8000 -800045bc: 45b0 lw a2,72(a1) -800045be: 8000 0x8000 -800045c0: 45b8 lw a4,72(a1) -800045c2: 8000 0x8000 -800045c4: 45b8 lw a4,72(a1) -800045c6: 8000 0x8000 -800045c8: 45c0 lw s0,12(a1) -800045ca: 8000 0x8000 -800045cc: 45c0 lw s0,12(a1) -800045ce: 8000 0x8000 -800045d0: 45c8 lw a0,12(a1) -800045d2: 8000 0x8000 -800045d4: 45c8 lw a0,12(a1) -800045d6: 8000 0x8000 -800045d8: 45d0 lw a2,12(a1) -800045da: 8000 0x8000 -800045dc: 45d0 lw a2,12(a1) -800045de: 8000 0x8000 -800045e0: 45d8 lw a4,12(a1) -800045e2: 8000 0x8000 -800045e4: 45d8 lw a4,12(a1) -800045e6: 8000 0x8000 -800045e8: 45e0 lw s0,76(a1) -800045ea: 8000 0x8000 -800045ec: 45e0 lw s0,76(a1) -800045ee: 8000 0x8000 -800045f0: 45e8 lw a0,76(a1) -800045f2: 8000 0x8000 -800045f4: 45e8 lw a0,76(a1) -800045f6: 8000 0x8000 -800045f8: 45f0 lw a2,76(a1) -800045fa: 8000 0x8000 -800045fc: 45f0 lw a2,76(a1) -800045fe: 8000 0x8000 -80004600: 45f8 lw a4,76(a1) -80004602: 8000 0x8000 -80004604: 45f8 lw a4,76(a1) -80004606: 8000 0x8000 -80004608: 4600 lw s0,8(a2) -8000460a: 8000 0x8000 -8000460c: 4600 lw s0,8(a2) -8000460e: 8000 0x8000 -80004610: 4608 lw a0,8(a2) -80004612: 8000 0x8000 -80004614: 4608 lw a0,8(a2) -80004616: 8000 0x8000 -80004618: 4610 lw a2,8(a2) -8000461a: 8000 0x8000 -8000461c: 4610 lw a2,8(a2) -8000461e: 8000 0x8000 -80004620: 4618 lw a4,8(a2) -80004622: 8000 0x8000 -80004624: 4618 lw a4,8(a2) -80004626: 8000 0x8000 -80004628: 4620 lw s0,72(a2) -8000462a: 8000 0x8000 -8000462c: 4620 lw s0,72(a2) -8000462e: 8000 0x8000 -80004630: 4628 lw a0,72(a2) -80004632: 8000 0x8000 -80004634: 4628 lw a0,72(a2) -80004636: 8000 0x8000 -80004638: 4630 lw a2,72(a2) -8000463a: 8000 0x8000 -8000463c: 4630 lw a2,72(a2) -8000463e: 8000 0x8000 -80004640: 4638 lw a4,72(a2) -80004642: 8000 0x8000 -80004644: 4638 lw a4,72(a2) -80004646: 8000 0x8000 -80004648: 4640 lw s0,12(a2) -8000464a: 8000 0x8000 -8000464c: 4640 lw s0,12(a2) -8000464e: 8000 0x8000 -80004650: 4648 lw a0,12(a2) -80004652: 8000 0x8000 -80004654: 4648 lw a0,12(a2) -80004656: 8000 0x8000 -80004658: 4650 lw a2,12(a2) -8000465a: 8000 0x8000 -8000465c: 4650 lw a2,12(a2) -8000465e: 8000 0x8000 -80004660: 4658 lw a4,12(a2) -80004662: 8000 0x8000 -80004664: 4658 lw a4,12(a2) -80004666: 8000 0x8000 -80004668: 4660 lw s0,76(a2) -8000466a: 8000 0x8000 -8000466c: 4660 lw s0,76(a2) -8000466e: 8000 0x8000 -80004670: 4668 lw a0,76(a2) -80004672: 8000 0x8000 -80004674: 4668 lw a0,76(a2) -80004676: 8000 0x8000 -80004678: 4670 lw a2,76(a2) -8000467a: 8000 0x8000 -8000467c: 4670 lw a2,76(a2) -8000467e: 8000 0x8000 -80004680: 4678 lw a4,76(a2) -80004682: 8000 0x8000 -80004684: 4678 lw a4,76(a2) -80004686: 8000 0x8000 -80004688: 4680 lw s0,8(a3) -8000468a: 8000 0x8000 -8000468c: 4680 lw s0,8(a3) -8000468e: 8000 0x8000 -80004690: 4688 lw a0,8(a3) -80004692: 8000 0x8000 -80004694: 4688 lw a0,8(a3) -80004696: 8000 0x8000 -80004698: 4690 lw a2,8(a3) -8000469a: 8000 0x8000 -8000469c: 4690 lw a2,8(a3) -8000469e: 8000 0x8000 -800046a0: 4698 lw a4,8(a3) -800046a2: 8000 0x8000 -800046a4: 4698 lw a4,8(a3) -800046a6: 8000 0x8000 -800046a8: 46a0 lw s0,72(a3) -800046aa: 8000 0x8000 -800046ac: 46a0 lw s0,72(a3) -800046ae: 8000 0x8000 -800046b0: 46a8 lw a0,72(a3) -800046b2: 8000 0x8000 -800046b4: 46a8 lw a0,72(a3) -800046b6: 8000 0x8000 -800046b8: 46b0 lw a2,72(a3) -800046ba: 8000 0x8000 -800046bc: 46b0 lw a2,72(a3) -800046be: 8000 0x8000 -800046c0: 46b8 lw a4,72(a3) -800046c2: 8000 0x8000 -800046c4: 46b8 lw a4,72(a3) -800046c6: 8000 0x8000 -800046c8: 46c0 lw s0,12(a3) -800046ca: 8000 0x8000 -800046cc: 46c0 lw s0,12(a3) -800046ce: 8000 0x8000 -800046d0: 46c8 lw a0,12(a3) -800046d2: 8000 0x8000 -800046d4: 46c8 lw a0,12(a3) -800046d6: 8000 0x8000 -800046d8: 46d0 lw a2,12(a3) -800046da: 8000 0x8000 -800046dc: 46d0 lw a2,12(a3) -800046de: 8000 0x8000 -800046e0: 46d8 lw a4,12(a3) -800046e2: 8000 0x8000 -800046e4: 46d8 lw a4,12(a3) -800046e6: 8000 0x8000 -800046e8: 46e0 lw s0,76(a3) -800046ea: 8000 0x8000 -800046ec: 46e0 lw s0,76(a3) -800046ee: 8000 0x8000 -800046f0: 46e8 lw a0,76(a3) -800046f2: 8000 0x8000 -800046f4: 46e8 lw a0,76(a3) -800046f6: 8000 0x8000 -800046f8: 46f0 lw a2,76(a3) -800046fa: 8000 0x8000 -800046fc: 46f0 lw a2,76(a3) -800046fe: 8000 0x8000 -80004700: 46f8 lw a4,76(a3) -80004702: 8000 0x8000 -80004704: 46f8 lw a4,76(a3) -80004706: 8000 0x8000 -80004708: 4700 lw s0,8(a4) -8000470a: 8000 0x8000 -8000470c: 4700 lw s0,8(a4) -8000470e: 8000 0x8000 -80004710: 4708 lw a0,8(a4) -80004712: 8000 0x8000 -80004714: 4708 lw a0,8(a4) -80004716: 8000 0x8000 -80004718: 4710 lw a2,8(a4) -8000471a: 8000 0x8000 -8000471c: 4710 lw a2,8(a4) -8000471e: 8000 0x8000 -80004720: 4718 lw a4,8(a4) -80004722: 8000 0x8000 -80004724: 4718 lw a4,8(a4) -80004726: 8000 0x8000 -80004728: 4720 lw s0,72(a4) -8000472a: 8000 0x8000 -8000472c: 4720 lw s0,72(a4) -8000472e: 8000 0x8000 -80004730: 4728 lw a0,72(a4) -80004732: 8000 0x8000 -80004734: 4728 lw a0,72(a4) -80004736: 8000 0x8000 -80004738: 4730 lw a2,72(a4) -8000473a: 8000 0x8000 -8000473c: 4730 lw a2,72(a4) -8000473e: 8000 0x8000 -80004740: 4738 lw a4,72(a4) -80004742: 8000 0x8000 -80004744: 4738 lw a4,72(a4) -80004746: 8000 0x8000 -80004748: 4740 lw s0,12(a4) -8000474a: 8000 0x8000 -8000474c: 4740 lw s0,12(a4) -8000474e: 8000 0x8000 -80004750: 4748 lw a0,12(a4) -80004752: 8000 0x8000 -80004754: 4748 lw a0,12(a4) -80004756: 8000 0x8000 -80004758: 4750 lw a2,12(a4) -8000475a: 8000 0x8000 -8000475c: 4750 lw a2,12(a4) -8000475e: 8000 0x8000 -80004760: 4758 lw a4,12(a4) -80004762: 8000 0x8000 -80004764: 4758 lw a4,12(a4) -80004766: 8000 0x8000 -80004768: 4760 lw s0,76(a4) -8000476a: 8000 0x8000 -8000476c: 4760 lw s0,76(a4) -8000476e: 8000 0x8000 -80004770: 4768 lw a0,76(a4) -80004772: 8000 0x8000 -80004774: 4768 lw a0,76(a4) -80004776: 8000 0x8000 -80004778: 4770 lw a2,76(a4) -8000477a: 8000 0x8000 -8000477c: 4770 lw a2,76(a4) -8000477e: 8000 0x8000 -80004780: 4778 lw a4,76(a4) -80004782: 8000 0x8000 -80004784: 4778 lw a4,76(a4) -80004786: 8000 0x8000 -80004788: 4780 lw s0,8(a5) -8000478a: 8000 0x8000 -8000478c: 4780 lw s0,8(a5) -8000478e: 8000 0x8000 -80004790: 4788 lw a0,8(a5) -80004792: 8000 0x8000 -80004794: 4788 lw a0,8(a5) -80004796: 8000 0x8000 -80004798: 4790 lw a2,8(a5) -8000479a: 8000 0x8000 -8000479c: 4790 lw a2,8(a5) -8000479e: 8000 0x8000 -800047a0: 4798 lw a4,8(a5) -800047a2: 8000 0x8000 -800047a4: 4798 lw a4,8(a5) -800047a6: 8000 0x8000 -800047a8: 47a0 lw s0,72(a5) -800047aa: 8000 0x8000 -800047ac: 47a0 lw s0,72(a5) -800047ae: 8000 0x8000 -800047b0: 47a8 lw a0,72(a5) -800047b2: 8000 0x8000 -800047b4: 47a8 lw a0,72(a5) -800047b6: 8000 0x8000 -800047b8: 47b0 lw a2,72(a5) -800047ba: 8000 0x8000 -800047bc: 47b0 lw a2,72(a5) -800047be: 8000 0x8000 -800047c0: 47b8 lw a4,72(a5) -800047c2: 8000 0x8000 -800047c4: 47b8 lw a4,72(a5) -800047c6: 8000 0x8000 -800047c8: 47c0 lw s0,12(a5) -800047ca: 8000 0x8000 -800047cc: 47c0 lw s0,12(a5) -800047ce: 8000 0x8000 -800047d0: 47c8 lw a0,12(a5) -800047d2: 8000 0x8000 -800047d4: 47c8 lw a0,12(a5) -800047d6: 8000 0x8000 -800047d8: 47d0 lw a2,12(a5) -800047da: 8000 0x8000 -800047dc: 47d0 lw a2,12(a5) -800047de: 8000 0x8000 -800047e0: 47d8 lw a4,12(a5) -800047e2: 8000 0x8000 -800047e4: 47d8 lw a4,12(a5) -800047e6: 8000 0x8000 -800047e8: 47e0 lw s0,76(a5) -800047ea: 8000 0x8000 -800047ec: 47e0 lw s0,76(a5) -800047ee: 8000 0x8000 -800047f0: 47e8 lw a0,76(a5) -800047f2: 8000 0x8000 -800047f4: 47e8 lw a0,76(a5) -800047f6: 8000 0x8000 -800047f8: 47f0 lw a2,76(a5) -800047fa: 8000 0x8000 -800047fc: 47f0 lw a2,76(a5) -800047fe: 8000 0x8000 -80004800: 47f8 lw a4,76(a5) -80004802: 8000 0x8000 -80004804: 47f8 lw a4,76(a5) -80004806: 8000 0x8000 -80004808: 4800 lw s0,16(s0) -8000480a: 8000 0x8000 -8000480c: 4800 lw s0,16(s0) -8000480e: 8000 0x8000 -80004810: 4808 lw a0,16(s0) -80004812: 8000 0x8000 -80004814: 4808 lw a0,16(s0) -80004816: 8000 0x8000 -80004818: 4810 lw a2,16(s0) -8000481a: 8000 0x8000 -8000481c: 4810 lw a2,16(s0) -8000481e: 8000 0x8000 -80004820: 4818 lw a4,16(s0) -80004822: 8000 0x8000 -80004824: 4818 lw a4,16(s0) -80004826: 8000 0x8000 -80004828: 4820 lw s0,80(s0) -8000482a: 8000 0x8000 -8000482c: 4820 lw s0,80(s0) -8000482e: 8000 0x8000 -80004830: 4828 lw a0,80(s0) -80004832: 8000 0x8000 -80004834: 4828 lw a0,80(s0) -80004836: 8000 0x8000 -80004838: 4830 lw a2,80(s0) -8000483a: 8000 0x8000 -8000483c: 4830 lw a2,80(s0) -8000483e: 8000 0x8000 -80004840: 4838 lw a4,80(s0) -80004842: 8000 0x8000 -80004844: 4838 lw a4,80(s0) -80004846: 8000 0x8000 -80004848: 4840 lw s0,20(s0) -8000484a: 8000 0x8000 -8000484c: 4840 lw s0,20(s0) -8000484e: 8000 0x8000 -80004850: 4848 lw a0,20(s0) -80004852: 8000 0x8000 -80004854: 4848 lw a0,20(s0) -80004856: 8000 0x8000 -80004858: 4850 lw a2,20(s0) -8000485a: 8000 0x8000 -8000485c: 4850 lw a2,20(s0) -8000485e: 8000 0x8000 -80004860: 4858 lw a4,20(s0) -80004862: 8000 0x8000 -80004864: 4858 lw a4,20(s0) -80004866: 8000 0x8000 -80004868: 4860 lw s0,84(s0) -8000486a: 8000 0x8000 -8000486c: 4860 lw s0,84(s0) -8000486e: 8000 0x8000 -80004870: 4868 lw a0,84(s0) -80004872: 8000 0x8000 -80004874: 4868 lw a0,84(s0) -80004876: 8000 0x8000 -80004878: 4870 lw a2,84(s0) -8000487a: 8000 0x8000 -8000487c: 4870 lw a2,84(s0) -8000487e: 8000 0x8000 -80004880: 4878 lw a4,84(s0) -80004882: 8000 0x8000 -80004884: 4878 lw a4,84(s0) -80004886: 8000 0x8000 -80004888: 4880 lw s0,16(s1) -8000488a: 8000 0x8000 -8000488c: 4880 lw s0,16(s1) -8000488e: 8000 0x8000 -80004890: 4888 lw a0,16(s1) -80004892: 8000 0x8000 -80004894: 4888 lw a0,16(s1) -80004896: 8000 0x8000 -80004898: 4890 lw a2,16(s1) -8000489a: 8000 0x8000 -8000489c: 4890 lw a2,16(s1) -8000489e: 8000 0x8000 -800048a0: 4898 lw a4,16(s1) -800048a2: 8000 0x8000 -800048a4: 4898 lw a4,16(s1) -800048a6: 8000 0x8000 -800048a8: 48a0 lw s0,80(s1) -800048aa: 8000 0x8000 -800048ac: 48a0 lw s0,80(s1) -800048ae: 8000 0x8000 -800048b0: 48a8 lw a0,80(s1) -800048b2: 8000 0x8000 -800048b4: 48a8 lw a0,80(s1) -800048b6: 8000 0x8000 -800048b8: 48b0 lw a2,80(s1) -800048ba: 8000 0x8000 -800048bc: 48b0 lw a2,80(s1) -800048be: 8000 0x8000 -800048c0: 48b8 lw a4,80(s1) -800048c2: 8000 0x8000 -800048c4: 48b8 lw a4,80(s1) -800048c6: 8000 0x8000 -800048c8: 48c0 lw s0,20(s1) -800048ca: 8000 0x8000 -800048cc: 48c0 lw s0,20(s1) -800048ce: 8000 0x8000 - Disassembly of section .sdata: -800048d0 <_global_impure_ptr>: -800048d0: 40a0 lw s0,64(s1) -800048d2: 8000 0x8000 - -800048d4 <_impure_ptr>: -800048d4: 40a0 lw s0,64(s1) -800048d6: 8000 0x8000 - -800048d8 <__malloc_sbrk_base>: -800048d8: ffff 0xffff -800048da: ffff 0xffff - -800048dc <__malloc_trim_threshold>: -800048dc: 0000 unimp -800048de: 0002 c.slli64 zero +800014c8 <_global_impure_ptr>: +800014c8: 10a0 addi s0,sp,104 +800014ca: 8000 0x8000 Disassembly of section .sbss: -800048e0 <__malloc_max_total_mem>: -800048e0: 0000 unimp - ... - -800048e4 <__malloc_max_sbrked_mem>: -800048e4: 0000 unimp - ... - -800048e8 <__malloc_top_pad>: -800048e8: 0000 unimp - ... - -800048ec : -800048ec: 0000 unimp +800014cc : +800014cc: 0000 unimp ... Disassembly of section .bss: -800048f0 : +800014d0 : ... -80004930 <__malloc_current_mallinfo>: +80001510 : ... -80004958 : - ... - -80004968 : - ... - -80004978 : -80004978: 0000 unimp - ... - -8000497c : -8000497c: 0000 unimp - ... - -80004980 : -80004980: 0000 unimp - ... - -80004984 : -80004984: 0000 unimp - ... - -80004988 : -80004988: 0000 unimp - ... - -8000498c : -8000498c: 0000 unimp - ... - -80004990 : -80004990: 0000 unimp - ... - -80004994 : -80004994: 0000 unimp +80001520 : ... Disassembly of section .comment: @@ -5016,6 +1316,6 @@ Disassembly of section .riscv.attributes: 16: 6932 flw fs2,12(sp) 18: 7032 flw ft0,44(sp) 1a: 5f30 lw a2,120(a4) - 1c: 326d jal fffff9c6 <__BSS_END__+0x7fffb02e> + 1c: 326d jal fffff9c6 <__global_pointer$+0x7fffe1be> 1e: 3070 fld fa2,224(s0) ... diff --git a/runtime/tests/simple/vx_simple.elf b/runtime/tests/simple/vx_simple.elf index cba1ea90968089021b1d976e839d12fa7179e30b..c4ce71a288f99610da0672dd0bee67d29c6b8f8c 100755 GIT binary patch delta 3122 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 Date: Tue, 21 Jul 2020 05:44:13 -0700 Subject: [PATCH 05/94] opae build fixes --- driver/rtlsim/Makefile | 6 +- hw/opae/Makefile | 15 ++-- hw/opae/README | 4 +- hw/opae/gen_sources.sh | 21 ++++++ hw/opae/sources.txt | 137 +++++++++++++--------------------- hw/opae/sources_1c.txt | 18 +++++ hw/opae/sources_2c.txt | 6 ++ hw/opae/sources_4c.txt | 6 ++ hw/rtl/VX_alu_unit.v | 4 +- hw/rtl/VX_define.vh | 4 +- hw/rtl/VX_lsu_unit.v | 4 +- hw/rtl/VX_mul_unit.v | 10 ++- hw/rtl/VX_warp_sched.v | 1 - hw/rtl/Vortex.v | 116 ++++++++++++++-------------- hw/rtl/tex_unit/VX_tex_mgr.v | 2 +- hw/rtl/tex_unit/VX_tex_unit.v | 2 +- hw/syn/yosys/synth.sh | 2 +- 17 files changed, 192 insertions(+), 166 deletions(-) create mode 100755 hw/opae/gen_sources.sh diff --git a/driver/rtlsim/Makefile b/driver/rtlsim/Makefile index 38fe3d60..60061f46 100644 --- a/driver/rtlsim/Makefile +++ b/driver/rtlsim/Makefile @@ -16,12 +16,12 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO -#CONFIGS += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 +CONFIGS += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 #CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=4 -DL2_ENABLE=1 #CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=2 -DL2_ENABLE=0 -CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=1 +#CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=1 -DEBUG=1 +#DEBUG=1 #AFU=1 CFLAGS += -fPIC diff --git a/hw/opae/Makefile b/hw/opae/Makefile index eddd6849..339f9d37 100644 --- a/hw/opae/Makefile +++ b/hw/opae/Makefile @@ -4,13 +4,16 @@ FPGA_BUILD_DIR=build_fpga all: ase-1c -ase-1c: setup-ase-1c +sources.txt: + ./gen_sources.sh + +ase-1c: setup-ase-1c sources.txt make -C $(ASE_BUILD_DIR)_1c -ase-2c: setup-ase-2c +ase-2c: setup-ase-2c sources.txt make -C $(ASE_BUILD_DIR)_2c -ase-4c: setup-ase-4c +ase-4c: setup-ase-4c sources.txt make -C $(ASE_BUILD_DIR)_4c setup-ase-1c: $(ASE_BUILD_DIR)_1c/Makefile @@ -28,13 +31,13 @@ $(ASE_BUILD_DIR)_2c/Makefile: $(ASE_BUILD_DIR)_4c/Makefile: afu_sim_setup -s sources_4c.txt $(ASE_BUILD_DIR)_4c -fpga-1c: setup-fpga-1c +fpga-1c: setup-fpga-1c sources.txt cd $(FPGA_BUILD_DIR)_1c && qsub-synth -fpga-2c: setup-fpga-2c +fpga-2c: setup-fpga-2c sources.txt cd $(FPGA_BUILD_DIR)_2c && qsub-synth -fpga-4c: setup-fpga-4c +fpga-4c: setup-fpga-4c sources.txt cd $(FPGA_BUILD_DIR)_4c && qsub-synth setup-fpga-1c: $(FPGA_BUILD_DIR)_1c/build/dcp.qpf diff --git a/hw/opae/README b/hw/opae/README index 86e6f862..f480cc92 100644 --- a/hw/opae/README +++ b/hw/opae/README @@ -60,8 +60,8 @@ qsub-sim make ase # tests -./run_ase.sh build_ase_1c ../../driver/tests/basic/basic -./run_ase.sh build_ase_1c ../../driver/tests/demo/demo +./run_ase.sh build_ase_1c ../../driver/tests/basic/basic -n 256 +./run_ase.sh build_ase_1c ../../driver/tests/demo/demo -n 16 ./run_ase.sh build_ase_1c ../../benchmarks/opencl/vecadd/vecadd # modify "vsim_run.tcl" to dump VCD trace diff --git a/hw/opae/gen_sources.sh b/hw/opae/gen_sources.sh new file mode 100755 index 00000000..deb8cdbb --- /dev/null +++ b/hw/opae/gen_sources.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl' + +inc_list="" +for dir in $dir_list; do + inc_list="$inc_list -I$dir" +done + +echo "inc_list=$inc_list" + +{ + # read design sources + for dir in $dir_list; do + echo "+incdir+$dir" + for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f) + do + echo $file + done + done +} > sources.txt \ No newline at end of file diff --git a/hw/opae/sources.txt b/hw/opae/sources.txt index 0b448e88..ae14d127 100644 --- a/hw/opae/sources.txt +++ b/hw/opae/sources.txt @@ -1,46 +1,34 @@ -vortex_afu.json - -QI:vortex_afu.qsf - -#+define+SCOPE - -#+define+DBG_PRINT_CORE_ICACHE -#+define+DBG_PRINT_CORE_DCACHE -#+define+DBG_PRINT_CACHE_BANK -#+define+DBG_PRINT_CACHE_SNP -#+define+DBG_PRINT_CACHE_MSRQ -#+define+DBG_PRINT_DRAM -#+define+DBG_PRINT_PIPELINE -#+define+DBG_PRINT_OPAE -#+define+DBG_PRINT_SCOPE - -+incdir+. -+incdir+../rtl -+incdir+../rtl/interfaces -+incdir+../rtl/pipe_regs -+incdir+../rtl/cache +incdir+../rtl/libs - -../rtl/VX_user_config.vh -../rtl/VX_config.vh -../rtl/VX_define.vh - -../rtl/cache/VX_cache_config.vh -../rtl/cache/VX_cache.v -../rtl/cache/VX_cache_core_rsp_merge.v -../rtl/cache/VX_cache_core_req_bank_sel.v -../rtl/cache/VX_cache_dram_req_arb.v -../rtl/cache/VX_cache_dram_fill_arb.v -../rtl/cache/VX_cache_miss_resrv.v +../rtl/libs/VX_countones.v +../rtl/libs/VX_divide.v +../rtl/libs/VX_fair_arbiter.v +../rtl/libs/VX_fixed_arbiter.v +../rtl/libs/VX_generic_queue.v +../rtl/libs/VX_generic_register.v +../rtl/libs/VX_generic_stack.v +../rtl/libs/VX_index_queue.v +../rtl/libs/VX_matrix_arbiter.v +../rtl/libs/VX_mult.v +../rtl/libs/VX_priority_encoder.v +../rtl/libs/VX_rr_arbiter.v +../rtl/libs/VX_onehot_encooder.v ++incdir+../rtl/cache ../rtl/cache/VX_bank.v ../rtl/cache/VX_bank_core_req_arb.v +../rtl/cache/VX_cache.v +../rtl/cache/VX_cache_core_req_bank_sel.v +../rtl/cache/VX_cache_core_rsp_merge.v +../rtl/cache/VX_cache_dram_fill_arb.v +../rtl/cache/VX_cache_dram_req_arb.v +../rtl/cache/VX_cache_miss_resrv.v +../rtl/cache/VX_prefetcher.v +../rtl/cache/VX_snp_forwarder.v ../rtl/cache/VX_snp_rsp_arb.v ../rtl/cache/VX_tag_data_access.v ../rtl/cache/VX_tag_data_structure.v -../rtl/cache/VX_snp_forwarder.v -../rtl/cache/VX_prefetcher.v - -../rtl/interfaces/VX_branch_rsp_if.v ++incdir+../rtl/interfaces +../rtl/interfaces/VX_alu_req_if.v +../rtl/interfaces/VX_branch_ctl_if.v ../rtl/interfaces/VX_cache_core_req_if.v ../rtl/interfaces/VX_cache_core_rsp_if.v ../rtl/interfaces/VX_cache_dram_req_if.v @@ -48,65 +36,46 @@ QI:vortex_afu.qsf ../rtl/interfaces/VX_cache_snp_req_if.v ../rtl/interfaces/VX_cache_snp_rsp_if.v ../rtl/interfaces/VX_csr_req_if.v +../rtl/interfaces/VX_commit_if.v ../rtl/interfaces/VX_csr_io_req_if.v -../rtl/interfaces/VX_csr_io_rsp_if.v -../rtl/interfaces/VX_exec_unit_req_if.v -../rtl/interfaces/VX_backend_req_if.v -../rtl/interfaces/VX_gpr_read_if.v -../rtl/interfaces/VX_gpu_inst_req_if.v -../rtl/interfaces/VX_inst_meta_if.v -../rtl/interfaces/VX_jal_rsp_if.v +../rtl/interfaces/VX_decode_if.v +../rtl/interfaces/VX_gpr_data_if.v +../rtl/interfaces/VX_gpu_req_if.v ../rtl/interfaces/VX_join_if.v ../rtl/interfaces/VX_lsu_req_if.v ../rtl/interfaces/VX_warp_ctl_if.v ../rtl/interfaces/VX_wb_if.v ../rtl/interfaces/VX_wstall_if.v - -../rtl/libs/VX_generic_register.v -../rtl/libs/VX_mult.v -../rtl/libs/VX_divide.v -../rtl/libs/VX_generic_stack.v -../rtl/libs/VX_priority_encoder.v -../rtl/libs/VX_generic_queue.v -../rtl/libs/VX_indexable_queue.v -../rtl/libs/VX_fair_arbiter.v -../rtl/libs/VX_fixed_arbiter.v -../rtl/libs/VX_rr_arbiter.v -../rtl/libs/VX_countones.v -../rtl/libs/VX_scope.v - -../rtl/Vortex.v +../rtl/interfaces/VX_csr_io_rsp_if.v +../rtl/interfaces/VX_ifetch_req_if.v +../rtl/interfaces/VX_ifetch_rsp_if.v +../rtl/interfaces/VX_mul_req_if.v +../rtl/interfaces/VX_perf_cntrs_if.v ++incdir+../rtl +../rtl/VX_alu_unit.v +../rtl/VX_commit.v ../rtl/VX_cluster.v ../rtl/VX_core.v -../rtl/VX_mem_unit.v -../rtl/VX_pipeline.v -../rtl/VX_front_end.v -../rtl/VX_back_end.v -../rtl/VX_fetch.v -../rtl/VX_scheduler.v -../rtl/VX_exec_unit.v -../rtl/VX_warp.v -../rtl/VX_icache_stage.v -../rtl/VX_gpr_wrapper.v -../rtl/VX_gpu_inst.v -../rtl/VX_writeback.v -../rtl/VX_csr_pipe.v ../rtl/VX_csr_data.v ../rtl/VX_csr_arb.v +../rtl/VX_dcache_arb.v +../rtl/VX_decode.v ../rtl/VX_csr_io_arb.v -../rtl/VX_warp_sched.v +../rtl/VX_fetch.v +../rtl/VX_csr_unit.v ../rtl/VX_gpr_ram.v ../rtl/VX_gpr_stage.v -../rtl/VX_alu_unit.v +../rtl/VX_execute.v +../rtl/VX_gpu_unit.v +../rtl/VX_icache_stage.v +../rtl/VX_issue.v ../rtl/VX_lsu_unit.v -../rtl/VX_decode.v -../rtl/VX_inst_multiplex.v -../rtl/VX_dcache_arb.v ../rtl/VX_mem_arb.v -../rtl/VX_f_d_reg.v -../rtl/VX_i_d_reg.v -../rtl/VX_d_e_reg.v - -ccip_interface_reg.sv -ccip_std_afu.sv -vortex_afu.sv \ No newline at end of file +../rtl/VX_mem_unit.v +../rtl/VX_pipeline.v +../rtl/VX_scheduler.v +../rtl/VX_issue_mux.v +../rtl/VX_warp_sched.v +../rtl/VX_writeback.v +../rtl/Vortex.v +../rtl/VX_mul_unit.v diff --git a/hw/opae/sources_1c.txt b/hw/opae/sources_1c.txt index 8cbd9b8f..b40f7162 100644 --- a/hw/opae/sources_1c.txt +++ b/hw/opae/sources_1c.txt @@ -1,3 +1,21 @@ +define+NUM_CORES=1 +#+define+SCOPE + +#+define+DBG_PRINT_CORE_ICACHE +#+define+DBG_PRINT_CORE_DCACHE +#+define+DBG_PRINT_CACHE_BANK +#+define+DBG_PRINT_CACHE_SNP +#+define+DBG_PRINT_CACHE_MSRQ +#+define+DBG_PRINT_DRAM +#+define+DBG_PRINT_PIPELINE +#+define+DBG_PRINT_OPAE +#+define+DBG_PRINT_SCOPE + +vortex_afu.json +QI:vortex_afu.qsf +ccip_interface_reg.sv +ccip_std_afu.sv +vortex_afu.sv + C:sources.txt \ No newline at end of file diff --git a/hw/opae/sources_2c.txt b/hw/opae/sources_2c.txt index d32f448f..ca991ef9 100644 --- a/hw/opae/sources_2c.txt +++ b/hw/opae/sources_2c.txt @@ -1,4 +1,10 @@ +define+NUM_CORES=2 +define+L2_ENABLE=0 +vortex_afu.json +QI:vortex_afu.qsf +ccip_interface_reg.sv +ccip_std_afu.sv +vortex_afu.sv + C:sources.txt \ No newline at end of file diff --git a/hw/opae/sources_4c.txt b/hw/opae/sources_4c.txt index 03959c74..6ee3aa06 100644 --- a/hw/opae/sources_4c.txt +++ b/hw/opae/sources_4c.txt @@ -1,4 +1,10 @@ +define+NUM_CORES=4 +define+L2_ENABLE=0 +vortex_afu.json +QI:vortex_afu.qsf +ccip_interface_reg.sv +ccip_std_afu.sv +vortex_afu.sv + C:sources.txt \ No newline at end of file diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index ff4c2b05..2f58a8bc 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -13,7 +13,7 @@ module VX_alu_unit #( VX_branch_ctl_if branch_ctl_if, VX_commit_if alu_commit_if ); - wire [`NUM_THREADS-1:0][31:0] alu_result; + reg [`NUM_THREADS-1:0][31:0] alu_result; wire [`NUM_THREADS-1:0][32:0] sub_result; wire [`NUM_THREADS-1:0][32:0] shift_result; @@ -99,7 +99,7 @@ module VX_alu_unit #( ); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)) ) alu_reg ( .clk (clk), .reset (reset), diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index b1b8759d..8751847e 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -76,7 +76,7 @@ `define CSR_WIDTH 12 -`define DIV_LATENCY 2 +`define DIV_LATENCY 21 `define MUL_LATENCY 2 @@ -390,6 +390,8 @@ /////////////////////////////////////////////////////////////////////////////// + + task print_ex_type; input [`EX_BITS-1:0] ex; begin diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index fb0fe514..7cb84c7e 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -30,6 +30,7 @@ module VX_lsu_unit #( wire [`NW_BITS-1:0] use_warp_num; wire [`WB_BITS-1:0] use_wb; wire [31:0] use_pc; + wire mrq_full; genvar i; @@ -83,8 +84,7 @@ module VX_lsu_unit #( wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_write_addr, dbg_mrq_write_addr; wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset; wire [`BYTEEN_BITS-1:0] core_rsp_mem_read; - wire mrq_full; - + wire mrq_push = (| dcache_req_if.valid) && dcache_req_if.ready && (0 == use_req_rw); // only push read requests diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index f6a6976d..4ebe1cbd 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -12,7 +12,7 @@ module VX_mul_unit #( // Outputs VX_commit_if mul_commit_if ); - wire [`NUM_THREADS-1:0][31:0] alu_result; + reg [`NUM_THREADS-1:0][31:0] alu_result; wire [`NUM_THREADS-1:0][63:0] mul_result; wire [`NUM_THREADS-1:0][31:0] div_result; wire [`NUM_THREADS-1:0][31:0] rem_result; @@ -77,6 +77,8 @@ module VX_mul_unit #( end end + wire stall; + reg result_avail; reg [4:0] pending_ctr; wire [4:0] instr_delay = `IS_DIV_OP(alu_op) ? `DIV_LATENCY : `MUL_LATENCY; @@ -104,13 +106,13 @@ module VX_mul_unit #( wire pipeline_stall = ~result_avail && (| mul_req_if.valid); - wire stall = (~mul_commit_if.ready && (| mul_commit_if.valid)) - || pipeline_stall; + assign stall = (~mul_commit_if.ready && (| mul_commit_if.valid)) + || pipeline_stall; wire flush = mul_commit_if.ready && pipeline_stall; VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)), + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)) ) mul_reg ( .clk (clk), .reset (reset), diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index a0040a5b..571244d8 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -18,7 +18,6 @@ module VX_warp_sched #( ); wire update_use_wspawn; wire update_visible_active; - wire scheduled_warp; wire [(1+32+`NUM_THREADS-1):0] ipdom[`NUM_WARPS-1:0]; diff --git a/hw/rtl/Vortex.v b/hw/rtl/Vortex.v index dfbf0e4a..a606c15f 100644 --- a/hw/rtl/Vortex.v +++ b/hw/rtl/Vortex.v @@ -139,54 +139,54 @@ module Vortex ( end else begin - wire per_cluster_dram_req_valid [`NUM_CLUSTERS-1:0]; - wire per_cluster_dram_req_rw [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_BYTEEN_WIDTH-1:0] per_cluster_dram_req_byteen [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_ADDR_WIDTH-1:0] per_cluster_dram_req_addr [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_req_data [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_req_tag [`NUM_CLUSTERS-1:0]; - wire l3_core_req_ready; + wire [`NUM_CLUSTERS-1:0] per_cluster_dram_req_valid; + wire [`NUM_CLUSTERS-1:0] per_cluster_dram_req_rw; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_BYTEEN_WIDTH-1:0] per_cluster_dram_req_byteen; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_ADDR_WIDTH-1:0] per_cluster_dram_req_addr; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_req_data; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_req_tag; + wire l3_core_req_ready; - wire per_cluster_dram_rsp_valid [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_rsp_data [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_rsp_tag [`NUM_CLUSTERS-1:0]; - wire per_cluster_dram_rsp_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_dram_rsp_valid; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_rsp_data; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_rsp_tag; + wire [`NUM_CLUSTERS-1:0] per_cluster_dram_rsp_ready; - wire per_cluster_snp_req_valid [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_ADDR_WIDTH-1:0] per_cluster_snp_req_addr [`NUM_CLUSTERS-1:0]; - wire per_cluster_snp_req_invalidate [`NUM_CLUSTERS-1:0]; - wire [`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_req_tag [`NUM_CLUSTERS-1:0]; - wire per_cluster_snp_req_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_snp_req_valid; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_ADDR_WIDTH-1:0] per_cluster_snp_req_addr; + wire [`NUM_CLUSTERS-1:0] per_cluster_snp_req_invalidate; + wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_req_tag; + wire [`NUM_CLUSTERS-1:0] per_cluster_snp_req_ready; - wire per_cluster_snp_rsp_valid [`NUM_CLUSTERS-1:0]; - wire [`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_rsp_tag [`NUM_CLUSTERS-1:0]; - wire per_cluster_snp_rsp_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_snp_rsp_valid; + wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_rsp_tag; + wire [`NUM_CLUSTERS-1:0] per_cluster_snp_rsp_ready; - wire per_cluster_io_req_valid [`NUM_CLUSTERS-1:0]; - wire per_cluster_io_req_rw [`NUM_CLUSTERS-1:0]; - wire [3:0] per_cluster_io_req_byteen [`NUM_CLUSTERS-1:0]; - wire [29:0] per_cluster_io_req_addr [`NUM_CLUSTERS-1:0]; - wire [31:0] per_cluster_io_req_data [`NUM_CLUSTERS-1:0]; - wire [`L2CORE_TAG_WIDTH-1:0] per_cluster_io_req_tag [`NUM_CLUSTERS-1:0]; - wire per_cluster_io_req_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_io_req_valid; + wire [`NUM_CLUSTERS-1:0] per_cluster_io_req_rw; + wire [`NUM_CLUSTERS-1:0][3:0] per_cluster_io_req_byteen; + wire [`NUM_CLUSTERS-1:0][29:0] per_cluster_io_req_addr; + wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_io_req_data; + wire [`NUM_CLUSTERS-1:0][`L2CORE_TAG_WIDTH-1:0] per_cluster_io_req_tag; + wire [`NUM_CLUSTERS-1:0] per_cluster_io_req_ready; - wire per_cluster_io_rsp_valid [`NUM_CLUSTERS-1:0]; - wire [`L2CORE_TAG_WIDTH-1:0] per_cluster_io_rsp_tag [`NUM_CLUSTERS-1:0]; - wire [31:0] per_cluster_io_rsp_data [`NUM_CLUSTERS-1:0]; - wire per_cluster_io_rsp_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_io_rsp_valid; + wire [`NUM_CLUSTERS-1:0][`L2CORE_TAG_WIDTH-1:0] per_cluster_io_rsp_tag; + wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_io_rsp_data; + wire [`NUM_CLUSTERS-1:0] per_cluster_io_rsp_ready; - wire per_cluster_csr_io_req_valid [`NUM_CLUSTERS-1:0]; - wire [11:0] per_cluster_csr_io_req_addr [`NUM_CLUSTERS-1:0]; - wire per_cluster_csr_io_req_rw [`NUM_CLUSTERS-1:0]; - wire [31:0] per_cluster_csr_io_req_data [`NUM_CLUSTERS-1:0]; - wire per_cluster_csr_io_req_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_req_valid; + wire [`NUM_CLUSTERS-1:0][11:0] per_cluster_csr_io_req_addr; + wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_req_rw; + wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_csr_io_req_data; + wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_req_ready; - wire per_cluster_csr_io_rsp_valid [`NUM_CLUSTERS-1:0]; - wire [31:0] per_cluster_csr_io_rsp_data [`NUM_CLUSTERS-1:0]; - wire per_cluster_csr_io_rsp_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_rsp_valid; + wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_csr_io_rsp_data; + wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_rsp_ready; - wire per_cluster_busy [`NUM_CLUSTERS-1:0]; - wire per_cluster_ebreak [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] per_cluster_busy; + wire [`NUM_CLUSTERS-1:0] per_cluster_ebreak; wire [`CLOG2(`NUM_CLUSTERS)-1:0] csr_io_request_id = `CLOG2(`NUM_CLUSTERS)'(csr_io_req_coreid >> `CLOG2(`NUM_CLUSTERS)); wire [`NC_BITS-1:0] per_cluster_csr_io_req_coreid = `NC_BITS'(csr_io_req_coreid); @@ -336,27 +336,27 @@ module Vortex ( // L3 Cache /////////////////////////////////////////////////////////// - wire l3_core_req_valid [`L3NUM_REQUESTS-1:0]; - wire l3_core_req_rw [`L3NUM_REQUESTS-1:0]; - wire [`L2DRAM_BYTEEN_WIDTH-1:0] l3_core_req_byteen [`L3NUM_REQUESTS-1:0]; - wire [`L2DRAM_ADDR_WIDTH-1:0] l3_core_req_addr [`L3NUM_REQUESTS-1:0]; - wire [`L2DRAM_LINE_WIDTH-1:0] l3_core_req_data [`L3NUM_REQUESTS-1:0]; - wire [`L2DRAM_TAG_WIDTH-1:0] l3_core_req_tag [`L3NUM_REQUESTS-1:0]; + wire [`L3NUM_REQUESTS-1:0] l3_core_req_valid; + wire [`L3NUM_REQUESTS-1:0] l3_core_req_rw; + wire [`L3NUM_REQUESTS-1:0][`L2DRAM_BYTEEN_WIDTH-1:0] l3_core_req_byteen; + wire [`L3NUM_REQUESTS-1:0][`L2DRAM_ADDR_WIDTH-1:0] l3_core_req_addr; + wire [`L3NUM_REQUESTS-1:0][`L2DRAM_LINE_WIDTH-1:0] l3_core_req_data; + wire [`L3NUM_REQUESTS-1:0][`L2DRAM_TAG_WIDTH-1:0] l3_core_req_tag; - wire l3_core_rsp_valid [`L3NUM_REQUESTS-1:0]; - wire [`L2DRAM_LINE_WIDTH-1:0] l3_core_rsp_data [`L3NUM_REQUESTS-1:0]; - wire [`L2DRAM_TAG_WIDTH-1:0] l3_core_rsp_tag [`L3NUM_REQUESTS-1:0]; - wire l3_core_rsp_ready; + wire [`L3NUM_REQUESTS-1:0] l3_core_rsp_valid; + wire [`L3NUM_REQUESTS-1:0][`L2DRAM_LINE_WIDTH-1:0] l3_core_rsp_data; + wire [`L3NUM_REQUESTS-1:0][`L2DRAM_TAG_WIDTH-1:0] l3_core_rsp_tag; + wire l3_core_rsp_ready; - wire l3_snp_fwdout_valid [`NUM_CLUSTERS-1:0]; - wire [`L2DRAM_ADDR_WIDTH-1:0] l3_snp_fwdout_addr [`NUM_CLUSTERS-1:0]; - wire l3_snp_fwdout_invalidate [`NUM_CLUSTERS-1:0]; - wire [`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdout_tag [`NUM_CLUSTERS-1:0]; - wire l3_snp_fwdout_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] l3_snp_fwdout_valid; + wire [`NUM_CLUSTERS-1:0][`L2DRAM_ADDR_WIDTH-1:0] l3_snp_fwdout_addr; + wire [`NUM_CLUSTERS-1:0] l3_snp_fwdout_invalidate; + wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdout_tag; + wire [`NUM_CLUSTERS-1:0] l3_snp_fwdout_ready; - wire l3_snp_fwdin_valid [`NUM_CLUSTERS-1:0]; - wire [`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdin_tag [`NUM_CLUSTERS-1:0]; - wire l3_snp_fwdin_ready [`NUM_CLUSTERS-1:0]; + wire [`NUM_CLUSTERS-1:0] l3_snp_fwdin_valid; + wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdin_tag; + wire [`NUM_CLUSTERS-1:0] l3_snp_fwdin_ready; for (i = 0; i < `L3NUM_REQUESTS; i++) begin // Core Request diff --git a/hw/rtl/tex_unit/VX_tex_mgr.v b/hw/rtl/tex_unit/VX_tex_mgr.v index 42184037..0452e00f 100644 --- a/hw/rtl/tex_unit/VX_tex_mgr.v +++ b/hw/rtl/tex_unit/VX_tex_mgr.v @@ -2,7 +2,7 @@ module VX_tex_mgr ( input wire clk, - input wire reset, + input wire reset ); //-- diff --git a/hw/rtl/tex_unit/VX_tex_unit.v b/hw/rtl/tex_unit/VX_tex_unit.v index b7eef8d8..f400ad63 100644 --- a/hw/rtl/tex_unit/VX_tex_unit.v +++ b/hw/rtl/tex_unit/VX_tex_unit.v @@ -11,7 +11,7 @@ module VX_tex_unit #( parameter MAXAMW = 2, parameter TAGW = 16, - parameter NUMCRQS = 32, + parameter NUMCRQS = 32 ) ( input wire clk, input wire reset, diff --git a/hw/syn/yosys/synth.sh b/hw/syn/yosys/synth.sh index 621866f1..544bbad0 100755 --- a/hw/syn/yosys/synth.sh +++ b/hw/syn/yosys/synth.sh @@ -12,7 +12,7 @@ echo "inc_list=$inc_list" { # read design sources for dir in $dir_list; do - for file in $(find $dir -name '*.v' -o -name '*.sv' -type f) + for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f) do echo "read_verilog -sv $inc_list $file" done From fb44de80170b4845036bd3c38c26086bbc0ed02d Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 21 Jul 2020 06:17:41 -0700 Subject: [PATCH 06/94] fixed simulator leak --- hw/simulate/simulator.cpp | 10 ++++------ hw/simulate/simulator.h | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index 213712a0..3f9f240e 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -11,7 +11,7 @@ double sc_time_stamp() { Simulator::Simulator() { // force random values for unitialized signals - Verilated::randReset(2); + Verilated::randReset(1); // Turn off assertion before reset Verilated::assertOn(false); @@ -105,9 +105,8 @@ void Simulator::eval_dram_bus() { if (!dram_rsp_active_) { if (dequeue_index != -1) { vortex_->dram_rsp_valid = 1; - memcpy((uint8_t*)vortex_->dram_rsp_data, dram_rsp_vec_[dequeue_index].data, GLOBAL_BLOCK_SIZE); - vortex_->dram_rsp_tag = dram_rsp_vec_[dequeue_index].tag; - free(dram_rsp_vec_[dequeue_index].data); + memcpy((uint8_t*)vortex_->dram_rsp_data, dram_rsp_vec_[dequeue_index].block.data(), GLOBAL_BLOCK_SIZE); + vortex_->dram_rsp_tag = dram_rsp_vec_[dequeue_index].tag; dram_rsp_vec_.erase(dram_rsp_vec_.begin() + dequeue_index); dram_rsp_active_ = true; } else { @@ -141,9 +140,8 @@ void Simulator::eval_dram_bus() { } else { dram_req_t dram_req; dram_req.cycles_left = DRAM_LATENCY; - dram_req.data = (uint8_t*)malloc(GLOBAL_BLOCK_SIZE); dram_req.tag = vortex_->dram_req_tag; - ram_->read(vortex_->dram_req_addr * GLOBAL_BLOCK_SIZE, GLOBAL_BLOCK_SIZE, dram_req.data); + ram_->read(vortex_->dram_req_addr * GLOBAL_BLOCK_SIZE, GLOBAL_BLOCK_SIZE, dram_req.block.data()); dram_rsp_vec_.push_back(dram_req); } } diff --git a/hw/simulate/simulator.h b/hw/simulate/simulator.h index 297e2121..7fb6370a 100644 --- a/hw/simulate/simulator.h +++ b/hw/simulate/simulator.h @@ -21,7 +21,7 @@ typedef struct { int cycles_left; - uint8_t *data; + std::array block; unsigned tag; } dram_req_t; From 0a56f96e698a5d9891d531fbbdc9f5786fde9fc1 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 21 Jul 2020 08:28:05 -0700 Subject: [PATCH 07/94] scheduler optimization --- hw/rtl/VX_scheduler.v | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index 1d9f3149..8b3df579 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -16,29 +16,29 @@ module VX_scheduler #( output wire schedule_delay, output wire is_empty ); - localparam CTVW = `CLOG2(`NUM_WARPS * 32 + 1); + localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); - reg [31:0][`NUM_THREADS-1:0] rename_table[`NUM_WARPS-1:0]; + reg [`NUM_REGS-1:0][`NUM_THREADS-1:0] rename_table [`NUM_WARPS-1:0]; + reg [`NUM_REGS-1:0] busy_table[`NUM_WARPS-1:0]; reg [CTVW-1:0] count_valid; - wire rs1_rename = (rename_table[decode_if.warp_num][decode_if.rs1] != 0); - wire rs2_rename = (rename_table[decode_if.warp_num][decode_if.rs2] != 0); - wire rd_rename = (rename_table[decode_if.warp_num][decode_if.rd ] != 0); + wire rs1_rename = busy_table[decode_if.warp_num][decode_if.rs1]; + wire rs2_rename = busy_table[decode_if.warp_num][decode_if.rs2]; + wire rd_rename = busy_table[decode_if.warp_num][decode_if.rd]; wire rs1_rename_qual = (rs1_rename) && (decode_if.use_rs1); wire rs2_rename_qual = (rs2_rename) && (decode_if.use_rs2); wire rd_rename_qual = (rd_rename) && (decode_if.wb != 0); - wire rename_valid = (| decode_if.valid) && (rs1_rename_qual || rs2_rename_qual || rd_rename_qual); + wire rename_valid = (rs1_rename_qual || rs2_rename_qual || rd_rename_qual); - wire ex_stalled = (| decode_if.valid) - && ((alu_busy && (decode_if.ex_type == `EX_ALU)) + wire ex_stalled = ((alu_busy && (decode_if.ex_type == `EX_ALU)) || (lsu_busy && (decode_if.ex_type == `EX_LSU)) || (csr_busy && (decode_if.ex_type == `EX_CSR)) || (mul_busy && (decode_if.ex_type == `EX_MUL)) || (gpu_busy && (decode_if.ex_type == `EX_GPU))); - wire stall = ex_stalled || rename_valid; + wire stall = (ex_stalled || rename_valid) && (| decode_if.valid); wire acquire_rd = (| decode_if.valid) && (decode_if.wb != 0) && ~stall; @@ -49,23 +49,25 @@ module VX_scheduler #( reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == valid_wb_new_mask))) ? (count_valid + 1) : (~acquire_rd && (release_rd && (0 == valid_wb_new_mask))) ? (count_valid - 1) : count_valid; - integer i, w; - - always @(posedge clk) begin + always @(posedge clk) begin if (reset) begin + integer i, w; for (w = 0; w < `NUM_WARPS; w++) begin for (i = 0; i < 32; i++) begin rename_table[w][i] <= 0; + busy_table[w][i] <= 0; end - end - count_valid <= 0; + end + count_valid <= 0; end else begin if (acquire_rd) begin rename_table[decode_if.warp_num][decode_if.rd] <= decode_if.valid; + busy_table[decode_if.warp_num][decode_if.rd] <= 1; end if (release_rd) begin assert(rename_table[writeback_if.warp_num][writeback_if.rd] != 0); rename_table[writeback_if.warp_num][writeback_if.rd] <= valid_wb_new_mask; + busy_table[writeback_if.warp_num][writeback_if.rd] <= (| valid_wb_new_mask); end count_valid <= count_valid_next; end From 6836f397f8afdf8f5a673af41082c96d1896cbce Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 21 Jul 2020 08:24:02 -0700 Subject: [PATCH 08/94] adding pulp fpu_div_sqrt_mvp submodule --- .gitmodules | 3 +++ hw/rtl/fp_cores/fpu_div_sqrt_mvp | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 hw/rtl/fp_cores/fpu_div_sqrt_mvp diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..6fadb116 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "hw/rtl/fp_cores/fpu_div_sqrt_mvp"] + path = hw/rtl/fp_cores/fpu_div_sqrt_mvp + url = https://github.com/pulp-platform/fpu_div_sqrt_mvp.git diff --git a/hw/rtl/fp_cores/fpu_div_sqrt_mvp b/hw/rtl/fp_cores/fpu_div_sqrt_mvp new file mode 160000 index 00000000..d9a27f3c --- /dev/null +++ b/hw/rtl/fp_cores/fpu_div_sqrt_mvp @@ -0,0 +1 @@ +Subproject commit d9a27f3c4ea72fcc246219c26896360dd61f2806 From 75e3c31b562d0c19bcf3b7be482fe901a91d1247 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 23 Jul 2020 03:18:09 -0700 Subject: [PATCH 09/94] fpu implementation (part1) --- .gitmodules | 3 + hw/rtl/VX_alu_unit.v | 4 +- hw/rtl/VX_commit.v | 16 ++- hw/rtl/VX_csr_arb.v | 47 +++---- hw/rtl/VX_csr_unit.v | 19 ++- hw/rtl/VX_decode.v | 172 ++++++++++++++++--------- hw/rtl/VX_execute.v | 18 ++- hw/rtl/VX_fpu_unit.v | 140 ++++++++++++++++++++ hw/rtl/VX_gpr_fp_ctrl.v | 94 ++++++++++++++ hw/rtl/VX_gpr_stage.v | 74 ++++++++--- hw/rtl/VX_gpu_unit.v | 2 +- hw/rtl/VX_issue.v | 50 +++++-- hw/rtl/VX_issue_mux.v | 14 ++ hw/rtl/VX_lsu_unit.v | 6 +- hw/rtl/VX_mul_unit.v | 8 +- hw/rtl/VX_pipeline.v | 6 + hw/rtl/VX_scheduler.v | 20 ++- hw/rtl/VX_writeback.v | 27 ++-- hw/rtl/fp_cores/fpnew | 1 + hw/rtl/interfaces/VX_alu_req_if.v | 2 +- hw/rtl/interfaces/VX_commit_if.v | 3 +- hw/rtl/interfaces/VX_csr_req_if.v | 2 +- hw/rtl/interfaces/VX_decode_if.v | 11 +- hw/rtl/interfaces/VX_fpu_from_csr_if.v | 16 +++ hw/rtl/interfaces/VX_fpu_req_if.v | 26 ++++ hw/rtl/interfaces/VX_fpu_to_csr_if.v | 23 ++++ hw/rtl/interfaces/VX_gpr_data_if.v | 1 + hw/rtl/interfaces/VX_lsu_req_if.v | 2 +- hw/rtl/interfaces/VX_mul_req_if.v | 2 +- hw/rtl/interfaces/VX_wb_if.v | 1 + hw/simulate/verilator.vlt | 11 ++ 31 files changed, 662 insertions(+), 159 deletions(-) create mode 100644 hw/rtl/VX_fpu_unit.v create mode 100644 hw/rtl/VX_gpr_fp_ctrl.v create mode 160000 hw/rtl/fp_cores/fpnew create mode 100644 hw/rtl/interfaces/VX_fpu_from_csr_if.v create mode 100644 hw/rtl/interfaces/VX_fpu_req_if.v create mode 100644 hw/rtl/interfaces/VX_fpu_to_csr_if.v create mode 100644 hw/simulate/verilator.vlt diff --git a/.gitmodules b/.gitmodules index 6fadb116..cfd0ec60 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "hw/rtl/fp_cores/fpu_div_sqrt_mvp"] path = hw/rtl/fp_cores/fpu_div_sqrt_mvp url = https://github.com/pulp-platform/fpu_div_sqrt_mvp.git +[submodule "hw/rtl/fp_cores/fpnew"] + path = hw/rtl/fp_cores/fpnew + url = https://github.com/pulp-platform/fpnew.git diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 2f58a8bc..55ea3dd4 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -1,4 +1,6 @@ `include "VX_define.vh" +`include "fpnew_pkg.sv" +`include "defs_div_sqrt_mvp.sv" module VX_alu_unit #( parameter CORE_ID = 0 @@ -99,7 +101,7 @@ module VX_alu_unit #( ); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)) + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + 1 + (`NUM_THREADS * 32)) ) alu_reg ( .clk (clk), .reset (reset), diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index 02ae7aa0..457d8308 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -11,6 +11,7 @@ module VX_commit #( VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, VX_commit_if csr_commit_if, + VX_commit_if fpu_commit_if, VX_commit_if gpu_commit_if, // outputs @@ -20,9 +21,10 @@ module VX_commit #( wire [`NUM_EXS-1:0] commited_mask; assign commited_mask = {((| alu_commit_if.valid) && alu_commit_if.ready), - ((| lsu_commit_if.valid) && lsu_commit_if.ready), - ((| mul_commit_if.valid) && mul_commit_if.ready), + ((| lsu_commit_if.valid) && lsu_commit_if.ready), ((| csr_commit_if.valid) && csr_commit_if.ready), + ((| mul_commit_if.valid) && mul_commit_if.ready), + ((| fpu_commit_if.valid) && fpu_commit_if.ready), ((| gpu_commit_if.valid) && gpu_commit_if.ready)}; wire [`NE_BITS:0] num_commits; @@ -65,6 +67,7 @@ module VX_commit #( .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), + .fpu_commit_if (fpu_commit_if), .writeback_if (writeback_if) ); @@ -77,11 +80,14 @@ module VX_commit #( if ((| lsu_commit_if.valid) && lsu_commit_if.ready) begin $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=LSU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, lsu_commit_if.warp_num, lsu_commit_if.curr_PC, lsu_commit_if.wb, lsu_commit_if.rd, lsu_commit_if.data); end - if ((| mul_commit_if.valid) && mul_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.wb, mul_commit_if.rd, mul_commit_if.data); - end if ((| csr_commit_if.valid) && csr_commit_if.ready) begin $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=CSR, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, csr_commit_if.warp_num, csr_commit_if.curr_PC, csr_commit_if.wb, csr_commit_if.rd, csr_commit_if.data); + end + if ((| mul_commit_if.valid) && mul_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.wb, mul_commit_if.rd, mul_commit_if.data); + end + if ((| fpu_commit_if.valid) && fpu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=FPU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, fpu_commit_if.warp_num, fpu_commit_if.curr_PC, fpu_commit_if.wb, fpu_commit_if.rd, fpu_commit_if.data); end if ((| gpu_commit_if.valid) && gpu_commit_if.ready) begin $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=GPU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, gpu_commit_if.warp_num, gpu_commit_if.curr_PC, gpu_commit_if.wb, gpu_commit_if.rd, gpu_commit_if.data); diff --git a/hw/rtl/VX_csr_arb.v b/hw/rtl/VX_csr_arb.v index 7ed17e52..48dc6124 100644 --- a/hw/rtl/VX_csr_arb.v +++ b/hw/rtl/VX_csr_arb.v @@ -15,40 +15,41 @@ module VX_csr_arb ( VX_commit_if csr_rsp_if, // outputs - VX_csr_io_rsp_if csr_io_rsp_if, - VX_commit_if csr_commit_if + VX_commit_if csr_commit_if, + VX_csr_io_rsp_if csr_io_rsp_if, + + input wire select_io_req, + input wire select_io_rsp ); `UNUSED_VAR (clk) `UNUSED_VAR (reset) - wire core_select = ~(| csr_io_req_if.valid); - // requests - assign csr_req_if.valid = core_select ? csr_core_req_if.valid : {`NUM_THREADS{csr_io_req_if.valid}}; - assign csr_req_if.warp_num = core_select ? csr_core_req_if.warp_num : 0; - assign csr_req_if.curr_PC = core_select ? csr_core_req_if.curr_PC : 0; - assign csr_req_if.csr_op = core_select ? csr_core_req_if.csr_op : (csr_io_req_if.rw ? `CSR_RW : `CSR_RS); - assign csr_req_if.csr_addr = core_select ? csr_core_req_if.csr_addr : csr_io_req_if.addr; - assign csr_req_if.csr_mask = core_select ? csr_core_req_if.csr_mask : (csr_io_req_if.rw ? csr_io_req_if.data : 32'b0); - assign csr_req_if.rd = core_select ? csr_core_req_if.rd : 0; - assign csr_req_if.wb = core_select ? csr_core_req_if.wb : 0; - assign csr_req_if.is_io = ~core_select; + assign csr_req_if.valid = (~select_io_req) ? csr_core_req_if.valid : {`NUM_THREADS{csr_io_req_if.valid}}; + assign csr_req_if.warp_num = (~select_io_req) ? csr_core_req_if.warp_num : 0; + assign csr_req_if.curr_PC = (~select_io_req) ? csr_core_req_if.curr_PC : 0; + assign csr_req_if.csr_op = (~select_io_req) ? csr_core_req_if.csr_op : (csr_io_req_if.rw ? `CSR_RW : `CSR_RS); + assign csr_req_if.csr_addr = (~select_io_req) ? csr_core_req_if.csr_addr : csr_io_req_if.addr; + assign csr_req_if.csr_mask = (~select_io_req) ? csr_core_req_if.csr_mask : (csr_io_req_if.rw ? csr_io_req_if.data : 32'b0); + assign csr_req_if.rd = (~select_io_req) ? csr_core_req_if.rd : 0; + assign csr_req_if.wb = (~select_io_req) ? csr_core_req_if.wb : 0; + assign csr_req_if.is_io = select_io_req; - assign csr_core_req_if.ready = csr_req_if.ready && core_select; - assign csr_io_req_if.ready = csr_req_if.ready && ~core_select; + assign csr_core_req_if.ready = csr_req_if.ready && (~select_io_req); + assign csr_io_req_if.ready = csr_req_if.ready && select_io_req; // responses - assign csr_io_rsp_if.valid = csr_rsp_if.valid[0] & csr_rsp_if.is_io; + assign csr_io_rsp_if.valid = csr_rsp_if.valid[0] & select_io_rsp; assign csr_io_rsp_if.data = csr_rsp_if.data[0]; - assign csr_commit_if.valid = csr_rsp_if.valid & {`NUM_THREADS{~csr_rsp_if.is_io}}; - assign csr_commit_if.warp_num = csr_rsp_if.warp_num; - assign csr_commit_if.curr_PC = csr_rsp_if.curr_PC; - assign csr_commit_if.data = csr_rsp_if.data; - assign csr_commit_if.rd = csr_rsp_if.rd; - assign csr_commit_if.wb = csr_rsp_if.wb; + assign csr_commit_if.valid = csr_rsp_if.valid & {`NUM_THREADS{~select_io_rsp}}; + assign csr_commit_if.warp_num = csr_rsp_if.warp_num; + assign csr_commit_if.curr_PC = csr_rsp_if.curr_PC; + assign csr_commit_if.data = csr_rsp_if.data; + assign csr_commit_if.rd = csr_rsp_if.rd; + assign csr_commit_if.wb = csr_rsp_if.wb; - assign csr_rsp_if.ready = csr_rsp_if.is_io ? csr_io_rsp_if.ready : csr_commit_if.ready; + assign csr_rsp_if.ready = select_io_rsp ? csr_io_rsp_if.ready : csr_commit_if.ready; endmodule diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index 15c3d173..96b4364c 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -6,7 +6,8 @@ module VX_csr_unit #( input wire clk, input wire reset, - VX_perf_cntrs_if perf_cntrs_if, + VX_perf_cntrs_if perf_cntrs_if, + VX_fpu_to_csr_if fpu_to_csr_if, VX_csr_io_req_if csr_io_req_if, VX_csr_io_rsp_if csr_io_rsp_if, @@ -17,15 +18,23 @@ module VX_csr_unit #( VX_csr_req_if csr_pipe_req_if(); VX_commit_if csr_pipe_commit_if(); + wire select_io_req = (| csr_io_req_if.valid); + wire select_io_rsp; + VX_csr_arb csr_arb ( .clk (clk), .reset (reset), + .csr_core_req_if (csr_req_if), .csr_io_req_if (csr_io_req_if), .csr_req_if (csr_pipe_req_if), + .csr_rsp_if (csr_pipe_commit_if), .csr_io_rsp_if (csr_io_rsp_if), - .csr_commit_if (csr_commit_if) + .csr_commit_if (csr_commit_if), + + .select_io_req (select_io_req), + .select_io_rsp (select_io_rsp) ); wire [`CSR_ADDR_SIZE-1:0] csr_addr_s2; @@ -68,14 +77,14 @@ module VX_csr_unit #( wire stall = ~csr_pipe_commit_if.ready && (| csr_pipe_commit_if.valid); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + `CSR_ADDR_SIZE + 1 + 32 + 32) + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + 1 + `CSR_ADDR_SIZE + 1 + 32 + 32) ) csr_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({csr_pipe_req_if.valid, csr_pipe_req_if.warp_num, csr_pipe_req_if.curr_PC, csr_pipe_req_if.rd, csr_pipe_req_if.wb, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data, csr_updated_data}), - .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.warp_num, csr_pipe_commit_if.curr_PC, csr_pipe_commit_if.rd, csr_pipe_commit_if.wb, csr_addr_s2, csr_pipe_commit_if.is_io, csr_read_data_s2, csr_updated_data_s2}) + .in ({csr_pipe_req_if.valid, csr_pipe_req_if.warp_num, csr_pipe_req_if.curr_PC, csr_pipe_req_if.rd, csr_pipe_req_if.wb, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data, csr_updated_data}), + .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.warp_num, csr_pipe_commit_if.curr_PC, csr_pipe_commit_if.rd, csr_pipe_commit_if.wb, csr_addr_s2, select_io_rsp, csr_read_data_s2, csr_updated_data_s2}) ); genvar i; diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 7d90d21b..f5cc7549 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -19,10 +19,11 @@ module VX_decode #( wire [31:0] instr = ifetch_rsp_if.instr; reg [`ALU_BITS-1:0] alu_op; - reg [`BR_BITS-1:0] br_op; - reg [`MUL_BITS-1:0] mul_op; + reg [`BR_BITS-1:0] br_op; wire [`LSU_BITS-1:0] lsu_op; reg [`CSR_BITS-1:0] csr_op; + reg [`MUL_BITS-1:0] mul_op; + reg [`FPU_BITS-1:0] fpu_op; reg [`GPU_BITS-1:0] gpu_op; reg [19:0] upper_imm; @@ -37,6 +38,7 @@ module VX_decode #( wire [`NR_BITS-1:0] rd = instr[11:7]; wire [`NR_BITS-1:0] rs1 = instr[19:15]; wire [`NR_BITS-1:0] rs2 = instr[24:20]; + wire [`NR_BITS-1:0] rs3 = instr[31:27]; // opcode types wire is_rtype = (opcode == `INST_R); @@ -51,10 +53,9 @@ module VX_decode #( wire is_jals = (opcode == `INST_SYS) && (func3 == 0); wire is_csr = (opcode == `INST_SYS) && (func3 != 0); wire is_gpu = (opcode == `INST_GPU); - wire is_br = (is_btype || is_jal || is_jalr || is_jals); - wire is_mul = is_rtype && (func7 == 7'h1); - + // upper immediate + always @(*) begin case (opcode) `INST_LUI: upper_imm = {func7, rs2, rs1, func3}; @@ -63,20 +64,8 @@ module VX_decode #( endcase end - // JAL - wire [20:0] jal_imm = {instr[31], instr[19:12], instr[20], instr[30:21], 1'b0}; - wire [31:0] jal_offset = {{11{jal_imm[20]}}, jal_imm}; - wire [11:0] jalr_imm = {func7, rs2}; - wire [31:0] jalr_offset = {{20{jalr_imm[11]}}, jalr_imm}; - always @(*) begin - case (opcode) - `INST_JAL: jalx_offset = jal_offset; - `INST_JALR: jalx_offset = jalr_offset; - default: jalx_offset = 32'd4; - endcase - end - // I-type immediate + wire alu_shift_i = (func3 == 3'h1) || (func3 == 3'h5); wire [11:0] alu_shift_imm = {{7{1'b0}}, rs2}; wire [11:0] alu_imm = alu_shift_i ? alu_shift_imm : u_12; @@ -88,9 +77,26 @@ module VX_decode #( `INST_B: src2_imm = {{20{instr[31]}}, instr[7], instr[30:25], instr[11:8], 1'b0}; default: src2_imm = 32'hdeadbeef; endcase - end + end + + // JAL + + wire [20:0] jal_imm = {instr[31], instr[19:12], instr[20], instr[30:21], 1'b0}; + wire [31:0] jal_offset = {{11{jal_imm[20]}}, jal_imm}; + wire [11:0] jalr_imm = {func7, rs2}; + wire [31:0] jalr_offset = {{20{jalr_imm[11]}}, jalr_imm}; + always @(*) begin + case (opcode) + `INST_JAL: jalx_offset = jal_offset; + `INST_JALR: jalx_offset = jalr_offset; + default: jalx_offset = 32'd4; + endcase + end // BRANCH + + wire is_br = (is_btype || is_jal || is_jalr || is_jals); + always @(*) begin br_op = `BR_EQ; case (opcode) @@ -119,6 +125,7 @@ module VX_decode #( end // ALU + always @(*) begin alu_op = `ALU_OTHER; if (is_lui) begin @@ -140,7 +147,29 @@ module VX_decode #( end end - // MUL + // LSU + + wire is_lsu = (is_ltype || is_stype); + assign lsu_op = {is_stype, func3}; + + // CSR + + wire is_csr_imm = is_csr && (func3[2] == 1); + + always @(*) begin + csr_op = `CSR_OTHER; + case (func3[1:0]) + 2'h1: csr_op = `CSR_RW; + 2'h2: csr_op = `CSR_RS; + 2'h3: csr_op = `CSR_RC; + default:; + endcase + end + + // MUL + + wire is_mul = is_rtype && (func7 == 7'h1); + always @(*) begin mul_op = `MUL_MUL; case (func3) @@ -156,23 +185,50 @@ module VX_decode #( endcase end - // LSU - wire is_lsu = (is_ltype || is_stype); - assign lsu_op = {is_stype, func3}; + // FPU - // CSR - wire is_csr_imm = is_csr && (func3[2] == 1); - always @(*) begin - csr_op = `CSR_OTHER; - case (func3[1:0]) - 2'h1: csr_op = `CSR_RW; - 2'h2: csr_op = `CSR_RS; - 2'h3: csr_op = `CSR_RC; - default:; - endcase + wire is_fl = (opcode == `INST_FL) && ((func3 == 2)); + wire is_fs = (opcode == `INST_FS) && ((func3 == 2)); + wire is_fci = (opcode == `INST_FCI); + wire is_fmadd = (opcode == `INST_FMADD); + wire is_fmsub = (opcode == `INST_FMSUB); + wire is_fnmsub = (opcode == `INST_FNMSUB); + wire is_fnmadd = (opcode == `INST_FNMADD); + wire is_fr4 = is_fmadd || is_fmsub || is_fnmsub || is_fnmadd; + wire is_fpu = (is_fl || is_fs || is_fci || is_fr4); + + always @(*) begin + fpu_op = `FPU_OTHER; + if (is_fr4) begin + case ({is_fmadd, is_fmsub, is_fnmsub, is_fnmadd}) + 4'b1000: fpu_op = `FPU_MADD; + 4'b0100: fpu_op = `FPU_MSUB; + 4'b0010: fpu_op = `FPU_NMSUB; + 4'b0001: fpu_op = `FPU_NMADD; + default:; + endcase + end + else begin + case (func7) + 7'h00: fpu_op = `FPU_ADD; + 7'h04: fpu_op = `FPU_SUB; + 7'h08: fpu_op = `FPU_MUL; + 7'h0C: fpu_op = `FPU_DIV; + 7'h2C: fpu_op = `FPU_SQRT; + 7'h14: fpu_op = (func3 == 3'h0) ? `FPU_MIN : `FPU_MAX; + 7'h60: fpu_op = (instr[20]) ? `FPU_CVTWUS : `FPU_CVTWS; // doesn't need rs2, and read rs1 from fpReg, WB to intReg + 7'h68: fpu_op = (instr[20]) ? `FPU_CVTSWU : `FPU_CVTSW; // doesn't need rs2, and read rs1 from intReg + 7'h70: fpu_op = (func3 == 3'h0) ? `FPU_MVXW : `FPU_CLASS; // both wb to intReg + 7'h78: fpu_op = `FPU_MVWX; + 7'h50: fpu_op = `FPU_CMP; // wb to intReg + 7'h10: fpu_op = (func3[1]) ? `FPU_SGNJX : ((func3[0]) ? `FPU_SGNJN : `FPU_SGNJ); + default:; + endcase + end end // GPU + always @(*) begin gpu_op = `GPU_OTHER; case (func3) @@ -195,23 +251,23 @@ module VX_decode #( assign decode_tmp_if.ex_type = is_lsu ? `EX_LSU : is_csr ? `EX_CSR : is_mul ? `EX_MUL : - is_gpu ? `EX_GPU : - is_br ? `EX_ALU : - (is_rtype || is_itype || is_lui || is_auipc) ? `EX_ALU : - `EX_NOP; + is_fpu ? `EX_FPU : + is_gpu ? `EX_GPU : + is_br ? `EX_ALU : + (is_rtype || is_itype || is_lui || is_auipc) ? `EX_ALU : + `EX_NOP; assign decode_tmp_if.instr_op = is_lsu ? `OP_BITS'(lsu_op) : is_csr ? `OP_BITS'(csr_op) : is_mul ? `OP_BITS'(mul_op) : - is_gpu ? `OP_BITS'(gpu_op) : - is_br ? `OP_BITS'({1'b1, br_op}) : - (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : - 0; + is_fpu ? `OP_BITS'(fpu_op) : + is_gpu ? `OP_BITS'(gpu_op) : + is_br ? `OP_BITS'({1'b1, br_op}) : + (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : + 0; assign decode_tmp_if.rd = rd; - assign decode_tmp_if.rs1 = is_lui ? `NR_BITS'(0) : rs1; - assign decode_tmp_if.rs2 = rs2; assign decode_tmp_if.imm = (is_lui || is_auipc) ? {upper_imm, 12'(0)} : @@ -220,20 +276,22 @@ module VX_decode #( src2_imm; assign decode_tmp_if.rs1_is_PC = is_auipc; - - assign decode_tmp_if.rs2_is_imm = is_itype || is_lui || is_auipc || is_csr_imm; + assign decode_tmp_if.rs2_is_imm = is_itype || is_lui || is_auipc || is_csr_imm; assign decode_tmp_if.use_rs1 = (decode_tmp_if.rs1 != 0) && (is_jalr || is_btype || is_ltype || is_stype || is_itype || is_rtype || ~is_csr_imm || is_gpu); assign decode_tmp_if.use_rs2 = (decode_tmp_if.rs2 != 0) && (is_btype || is_stype || is_rtype || (is_gpu && (gpu_op == `GPU_BAR || gpu_op == `GPU_WSPAWN))); + + assign decode_tmp_if.rs1_is_fp = (is_fci && ((func7 != 7'h68) && (fpu_op != `FPU_MVWX)) || is_fr4); + assign decode_tmp_if.rs2_is_fp = is_fs || (is_fci && ((func7 != 7'h60) && (func7 != 7'h68)) || is_fr4); + assign decode_tmp_if.rs3 = rs3; + assign decode_tmp_if.use_rs3 = is_fr4; + assign decode_tmp_if.frm = func3; - assign decode_tmp_if.wb = (rd == 0) ? `WB_NO : // disable writeback to r0 - (is_itype || is_rtype || is_lui || is_auipc || is_csr) ? `WB_ALU : - (is_jal || is_jalr || is_jals) ? `WB_JAL : - is_ltype ? `WB_MEM : - `WB_NO; + assign decode_tmp_if.wb = (is_fpu && (is_fl || (is_fci && ((func7 != 7'h50) || (func7 != 7'h70) || (func7 != 7'h60))) || is_fr4)) + || (~is_fpu && (rd != 0) && (is_itype || is_rtype || is_lui || is_auipc || is_csr || is_jal || is_jalr || is_jals || is_ltype)); assign join_if.is_join = in_valid && is_gpu && (gpu_op == `GPU_JOIN); assign join_if.warp_num = ifetch_rsp_if.warp_num; @@ -241,17 +299,17 @@ module VX_decode #( assign wstall_if.wstall = in_valid && (is_btype || is_jal || is_jalr || (is_gpu && (gpu_op == `GPU_TMC || gpu_op == `GPU_SPLIT || gpu_op == `GPU_BAR))); assign wstall_if.warp_num = ifetch_rsp_if.warp_num; - wire stall = ~decode_if.ready && (| decode_if.valid); - + wire stall = ~decode_if.ready && (| decode_if.valid); + VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + `WB_BITS) + .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + 1 + `FRM_BITS) ) decode_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb}), - .out ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb}) + .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.frm}), + .out ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm}) ); assign ifetch_rsp_if.ready = ~stall; @@ -263,9 +321,7 @@ module VX_decode #( print_ex_type(decode_tmp_if.ex_type); $write(", op="); print_instr_op(decode_tmp_if.ex_type, decode_tmp_if.instr_op); - $write(", wb="); - print_wb(decode_tmp_if.wb); - $write(", rd=%0d, rs1=%0d, rs2=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b\n", decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2); + $write(", wb=%b, rd=%0d, rs1=%0d, rs2=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b\n", decode_tmp_if.wb, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2); // trap unsupported instructions assert(~(~stall && (decode_tmp_if.ex_type == `EX_ALU) && `ALU_OP(decode_tmp_if.instr_op) == `ALU_OTHER)); diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index adbd7c30..086227bb 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -19,12 +19,13 @@ module VX_execute #( // perf VX_perf_cntrs_if perf_cntrs_if, - + // inputs VX_alu_req_if alu_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, + VX_fpu_req_if fpu_req_if, VX_gpu_req_if gpu_req_if, // outputs @@ -34,10 +35,13 @@ module VX_execute #( VX_commit_if lsu_commit_if, VX_commit_if csr_commit_if, VX_commit_if mul_commit_if, + VX_commit_if fpu_commit_if, VX_commit_if gpu_commit_if, output wire ebreak ); + VX_fpu_to_csr_if fpu_to_csr_if(); + VX_fpu_from_csr_if fpu_from_csr_if(); VX_alu_unit #( .CORE_ID(CORE_ID) @@ -67,6 +71,7 @@ module VX_execute #( .clk (clk), .reset (reset), .perf_cntrs_if (perf_cntrs_if), + .fpu_to_csr_if (fpu_to_csr_if), .csr_io_req_if (csr_io_req_if), .csr_io_rsp_if (csr_io_rsp_if), .csr_req_if (csr_req_if), @@ -82,6 +87,17 @@ module VX_execute #( .mul_commit_if (mul_commit_if) ); + VX_fpu_unit #( + .CORE_ID(CORE_ID) + ) fpu_unit ( + .clk (clk), + .reset (reset), + .fpu_req_if (fpu_req_if), + .fpu_from_csr_if(fpu_from_csr_if), + .fpu_to_csr_if (fpu_to_csr_if), + .fpu_commit_if (fpu_commit_if) + ); + VX_gpu_unit #( .CORE_ID(CORE_ID) ) gpu_unit ( diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v new file mode 100644 index 00000000..770dc53f --- /dev/null +++ b/hw/rtl/VX_fpu_unit.v @@ -0,0 +1,140 @@ +`include "VX_define.vh" + +module VX_fpu_unit #( + parameter CORE_ID = 0 +) ( + // inputs + input wire clk, + input wire reset, + + // inputs + VX_fpu_req_if fpu_req_if, + VX_fpu_from_csr_if fpu_from_csr_if, + + // outputs + VX_commit_if fpu_commit_if, + VX_fpu_to_csr_if fpu_to_csr_if +); + localparam FOP_BITS = fpnew_pkg::OP_BITS; + localparam FMTF_BITS = $clog2(fpnew_pkg::NUM_FP_FORMATS); + localparam FMTI_BITS = $clog2(fpnew_pkg::NUM_INT_FORMATS); + + localparam int FPU_DPATHW = `NUM_THREADS * 32; + + localparam fpnew_pkg::fpu_features_t FPU_FEATURES = '{ + Width: FPU_DPATHW, + EnableVectors: 1, + EnableNanBox: 1, + FpFmtMask: 5'b10000, + IntFmtMask: 4'b0010 + }; + + localparam fpnew_pkg::fpu_implementation_t FPU_IMPLEMENTATION = '{ + PipeRegs:'{'{`LATENCY_FMULADD, 0, 0, 0, 0}, // ADDMUL + '{default: `LATENCY_FDIVSQRT}, // DIVSQRT + '{default: `LATENCY_FNONCOMP}, // NONCOMP + '{default: `LATENCY_FCONV}}, // CONV + UnitTypes:'{'{default: fpnew_pkg::PARALLEL}, // ADDMUL + '{default: fpnew_pkg::MERGED}, // DIVSQRT + '{default: fpnew_pkg::PARALLEL}, // NONCOMP + '{default: fpnew_pkg::MERGED}}, // CONV + PipeConfig: fpnew_pkg::DISTRIBUTED + }; + + wire fpu_in_ready; + wire fpu_in_valid; + wire fpu_out_ready; + wire fpu_out_valid; + + wire [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; + + wire [FMTF_BITS-1:0] fpu_src_fmt = fpnew_pkg::FP32; + wire [FMTF_BITS-1:0] fpu_dst_fmt = fpnew_pkg::FP32; + wire [FMTI_BITS-1:0] fpu_int_fmt = fpnew_pkg::INT32; + + assign fpu_in_valid = (| fpu_req_if.valid); + assign fpu_operands[0] = fpu_req_if.rs1_data; + assign fpu_operands[1] = fpu_req_if.rs2_data; + assign fpu_operands[2] = fpu_req_if.rs3_data; + assign fpu_req_if.ready = fpu_in_ready; + + wire [`NUM_THREADS-1:0][31:0] fpu_result; + fpnew_pkg::status_t fpu_status; + + reg [FOP_BITS-1:0] fpu_op; + reg [`FRM_BITS-1:0] fpu_rnd; + reg fpu_op_mod; + + always @(*) begin + fpu_op = fpnew_pkg::SGNJ; + fpu_op_mod = 0; + fpu_rnd = fpu_req_if.frm; + case (fpu_req_if.fpu_op) + `FPU_ADD: fpu_op = fpnew_pkg::ADD; + `FPU_SUB: begin fpu_op = fpnew_pkg::ADD; fpu_op_mod = 1; end + `FPU_MUL: fpu_op = fpnew_pkg::MUL; + `FPU_DIV: fpu_op = fpnew_pkg::DIV; + `FPU_SQRT: fpu_op = fpnew_pkg::SQRT; + `FPU_MADD: fpu_op = fpnew_pkg::FMADD; + `FPU_MSUB: begin fpu_op = fpnew_pkg::FMADD; fpu_op_mod = 1; end + `FPU_NMSUB: fpu_op = fpnew_pkg::FNMSUB; + `FPU_NMADD: begin fpu_op = fpnew_pkg::FNMSUB; fpu_op_mod = 1; end + `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; end + `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; end + `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; end + `FPU_MIN: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RNE; end + `FPU_MAX: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RTZ; end + `FPU_CVTWS: fpu_op = fpnew_pkg::F2I; + `FPU_CVTWUS:begin fpu_op = fpnew_pkg::ADD; fpu_op_mod = 1; end + `FPU_CVTSW: fpu_op = fpnew_pkg::I2F; + `FPU_CVTSWU:begin fpu_op = fpnew_pkg::I2F; fpu_op_mod = 1; end + `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; end + `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; end + `FPU_CLASS: fpu_op = fpnew_pkg::CLASSIFY; + `FPU_CMP: fpu_op = fpnew_pkg::CMP; + default:; + endcase + end + + fpnew_top #( + .Features (FPU_FEATURES), + .Implementation (FPU_IMPLEMENTATION), + .TagType (logic) + ) fpnew_core ( + .clk_i (clk), + .rst_ni (1'b1), + .operands_i (fpu_operands), + .rnd_mode_i (fpu_rnd), + .op_i (fpu_op), + .op_mod_i (fpu_op_mod), + .src_fmt_i (fpu_src_fmt), + .dst_fmt_i (fpu_dst_fmt), + .int_fmt_i (fpu_int_fmt), + .vectorial_op_i (1'b1), + .tag_i (1'b0), + .in_valid_i (fpu_in_valid), + .in_ready_o (fpu_in_ready), + .flush_i (reset), + .result_o (fpu_result), + .status_o (fpu_status), + `UNUSED_PIN (tag_o), + .out_valid_o (fpu_out_valid), + .out_ready_i (fpu_out_ready), + `UNUSED_PIN (busy_o) + ); + + assign fpu_commit_if.valid = fpu_req_if.valid & {`NUM_THREADS{fpu_out_valid}}; + assign fpu_commit_if.data = fpu_result; + assign fpu_commit_if.wb = fpu_req_if.wb; + assign fpu_commit_if.rd = fpu_req_if.rd; + assign fpu_out_ready = fpu_commit_if.ready; + + assign fpu_to_csr_if.valid = fpu_out_valid; + assign fpu_to_csr_if.warp_num = fpu_req_if.warp_num; + assign fpu_to_csr_if.fflags_NV = fpu_status.NV; + assign fpu_to_csr_if.fflags_DZ = fpu_status.DZ; + assign fpu_to_csr_if.fflags_OF = fpu_status.OF; + assign fpu_to_csr_if.fflags_UF = fpu_status.UF; + assign fpu_to_csr_if.fflags_NX = fpu_status.NX; + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v new file mode 100644 index 00000000..bacc36a5 --- /dev/null +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -0,0 +1,94 @@ +`include "VX_define.vh" + +// control module to support multi-cycle read for fp register + +module VX_gpr_fp_ctrl ( + input wire clk, + input wire reset, + + VX_decode_if decode_if, + + input wire [`NUM_THREADS-1:0][31:0] rs1_int_data, + input wire [`NUM_THREADS-1:0][31:0] rs2_int_data, + input wire [`NUM_THREADS-1:0][31:0] rs1_fp_data, + input wire [`NUM_THREADS-1:0][31:0] rs2_fp_data, + + // outputs + output wire [`NR_BITS-1:0] raddr1, + output wire [`NR_BITS-1:0] raddr2, + + VX_gpr_data_if gpr_data_if, + + input wire schedule_delay, + output wire gpr_delay +); + // param + localparam GPR_DELAY_WID = 1; + reg [GPR_DELAY_WID-1:0] multi_cyc_state; + + reg [`NUM_THREADS-1:0][31:0] tmp_rs1_data; + reg [`NUM_THREADS-1:0][31:0] tmp_rs2_data; + reg [`NUM_THREADS-1:0][31:0] rs1_data; + reg [`NUM_THREADS-1:0][31:0] rs2_data; + reg [`NUM_THREADS-1:0][31:0] rs3_data; + + always @(posedge clk) begin + if (reset) begin + multi_cyc_state <= 0; + end else if (!schedule_delay) begin + multi_cyc_state <= decode_if.use_rs3 && (multi_cyc_state == 0); + end else begin + multi_cyc_state <= 0; + end + end + + // select rs1 data + always @(posedge clk) begin + if (reset) begin + tmp_rs1_data <= 0; + end else begin + if (decode_if.rs1_is_fp) begin + tmp_rs1_data <= rs1_fp_data; + end else begin + tmp_rs1_data <= decode_if.rs1_is_PC ? {`NUM_THREADS{decode_if.curr_PC}} : rs1_int_data; + end + end + end + + // select rs2 data + always @(posedge clk) begin + if(reset) begin + tmp_rs2_data <= 0; + end else begin + if (decode_if.rs2_is_fp) begin + tmp_rs2_data <= rs2_fp_data; + end else begin + tmp_rs2_data <= decode_if.rs2_is_imm ? {`NUM_THREADS{decode_if.imm}} : rs2_int_data; + end + end + end + + // outputs + + assign gpr_delay = (multi_cyc_state == 0) && decode_if.use_rs3; + + assign raddr1 = multi_cyc_state ? decode_if.rs3 : decode_if.rs1 ; + assign raddr2 = decode_if.rs2; + + always @(*) begin + if (decode_if.use_rs3) begin + rs1_data = tmp_rs1_data; + rs2_data = tmp_rs2_data; + rs3_data = rs1_fp_data; + end else begin + rs1_data = decode_if.rs1_is_fp ? rs1_fp_data : rs1_int_data; + rs2_data = decode_if.rs2_is_fp ? rs2_fp_data : rs2_int_data; + rs3_data = {`NUM_THREADS{32'h8000_0000}}; // default value: -0 in single fp + end + end + + assign gpr_data_if.rs1_data = rs1_data; + assign gpr_data_if.rs2_data = rs2_data; + assign gpr_data_if.rs3_data = rs3_data; + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index a56e7c67..01c9c281 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -4,42 +4,76 @@ module VX_gpr_stage #( parameter CORE_ID = 0 ) ( input wire clk, + input wire reset, // inputs VX_wb_if writeback_if, - VX_decode_if decode_if, + VX_decode_if decode_if, // outputs - VX_gpr_data_if gpr_data_if + VX_gpr_data_if gpr_data_if, + + input wire schedule_delay, + output wire gpr_delay ); - wire [`NUM_THREADS-1:0][31:0] rs1_data_all [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs2_data_all [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs1_PC; - wire [`NUM_THREADS-1:0][31:0] rs2_imm; + + wire [`NUM_THREADS-1:0][31:0] rs1_int_data [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs2_int_data [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs1_fp_data [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs2_fp_data [`NUM_WARPS-1:0]; wire [`NUM_THREADS-1:0] we [`NUM_WARPS-1:0]; + wire [`NR_BITS-1:0] raddr1; + wire [`NR_BITS-1:0] raddr2; + genvar i; - for (i = 0; i < `NUM_THREADS; i++) begin - assign rs1_PC[i] = decode_if.curr_PC; - assign rs2_imm[i] = decode_if.imm; - end - - assign gpr_data_if.rs1_data = decode_if.rs1_is_PC ? rs1_PC : rs1_data_all[decode_if.warp_num]; - assign gpr_data_if.rs2_data = decode_if.rs2_is_imm ? rs2_imm : rs2_data_all[decode_if.warp_num]; - for (i = 0; i < `NUM_WARPS; i++) begin assign we[i] = writeback_if.valid & {`NUM_THREADS{(i == writeback_if.warp_num)}}; - VX_gpr_ram gpr_ram ( + + // Int GPRs + VX_gpr_ram gpr_int_ram ( .clk (clk), - .we (we[i]), + .we (we[i] & {`NUM_THREADS{~writeback_if.is_fp}}), .waddr (writeback_if.rd), .wdata (writeback_if.data), - .rs1 (decode_if.rs1), - .rs2 (decode_if.rs2), - .rs1_data (rs1_data_all[i]), - .rs2_data (rs2_data_all[i]) + .rs1 (raddr1), + .rs2 (raddr2), + .rs1_data (rs1_int_data[i]), + .rs2_data (rs2_int_data[i]) ); + + // FP GPRs + VX_gpr_ram gpr_fp_ram ( + .clk (clk), + .we (we[i] & {`NUM_THREADS{writeback_if.is_fp}}), + .waddr (writeback_if.rd), + .wdata (writeback_if.data), + .rs1 (raddr1), + .rs2 (raddr2), + .rs1_data (rs1_fp_data[i]), + .rs2_data (rs2_fp_data[i]) + ); + + // controller for multi-cycle read + VX_gpr_fp_ctrl VX_gpr_fp_ctrl ( + .clk (clk), + .reset (reset), + + //inputs + .decode_if (decode_if), + .rs1_int_data (rs1_int_data[i]), + .rs2_int_data (rs2_int_data[i]), + .rs1_fp_data (rs1_fp_data[i]), + .rs2_fp_data (rs2_fp_data[i]), + + // outputs + .raddr1 (raddr1), + .raddr2 (raddr2), + .gpr_data_if (gpr_data_if), + .schedule_delay (schedule_delay), + .gpr_delay (gpr_delay) + ); end assign writeback_if.ready = 1'b1; diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index f3bcb726..9730fdd2 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -79,7 +79,7 @@ module VX_gpu_unit #( assign gpu_commit_if.valid = gpu_req_if.valid; assign gpu_commit_if.warp_num = gpu_req_if.warp_num; assign gpu_commit_if.curr_PC = gpu_req_if.curr_PC; - assign gpu_commit_if.wb = `WB_NO; + assign gpu_commit_if.wb = 0; assign gpu_commit_if.rd = 0; assign gpu_commit_if.data = 0; diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 737e7b60..261a0927 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -13,16 +13,19 @@ module VX_issue #( VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, + VX_fpu_req_if fpu_req_if, VX_gpu_req_if gpu_req_if ); VX_gpr_data_if gpr_data_if(); wire schedule_delay; + wire gpr_delay; - wire alu_busy = ~alu_req_if.ready/* && (| alu_req_if.valid)*/; - wire lsu_busy = ~lsu_req_if.ready/* && (| lsu_req_if.valid)*/; - wire csr_busy = ~csr_req_if.ready/* && (| csr_req_if.valid)*/; - wire mul_busy = ~mul_req_if.ready/* && (| mul_req_if.valid)*/; - wire gpu_busy = ~gpu_req_if.ready/* && (| gpu_req_if.valid)*/; + wire alu_busy = ~alu_req_if.ready; + wire lsu_busy = ~lsu_req_if.ready; + wire csr_busy = ~csr_req_if.ready; + wire mul_busy = ~mul_req_if.ready; + wire fpu_busy = ~mul_req_if.ready; + wire gpu_busy = ~gpu_req_if.ready; VX_scheduler #( .CORE_ID(CORE_ID) @@ -31,10 +34,12 @@ module VX_issue #( .reset (reset), .decode_if (decode_if), .writeback_if (writeback_if), + .gpr_busy (gpr_delay), .alu_busy (alu_busy), .lsu_busy (lsu_busy), .csr_busy (csr_busy), .mul_busy (mul_busy), + .fpu_busy (fpu_busy), .gpu_busy (gpu_busy), .schedule_delay (schedule_delay), `UNUSED_PIN (is_empty) @@ -43,16 +48,20 @@ module VX_issue #( VX_gpr_stage #( .CORE_ID(CORE_ID) ) gpr_stage ( - .clk (clk), + .clk (clk), + .reset (reset), .decode_if (decode_if), .writeback_if (writeback_if), - .gpr_data_if (gpr_data_if) + .gpr_data_if (gpr_data_if), + .schedule_delay (schedule_delay), + .gpr_delay (gpr_delay) ); VX_alu_req_if alu_req_tmp_if(); VX_lsu_req_if lsu_req_tmp_if(); VX_csr_req_if csr_req_tmp_if(); VX_mul_req_if mul_req_tmp_if(); + VX_fpu_req_if fpu_req_tmp_if(); VX_gpu_req_if gpu_req_tmp_if(); VX_issue_mux issue_mux ( @@ -62,6 +71,7 @@ module VX_issue #( .lsu_req_if (lsu_req_tmp_if), .csr_req_if (csr_req_tmp_if), .mul_req_if (mul_req_tmp_if), + .fpu_req_if (fpu_req_tmp_if), .gpu_req_if (gpu_req_tmp_if) ); @@ -69,16 +79,18 @@ module VX_issue #( wire stall_lsu = ~lsu_req_if.ready || schedule_delay; wire stall_csr = ~csr_req_if.ready || schedule_delay; wire stall_mul = ~mul_req_if.ready || schedule_delay; + wire stall_fpu = ~fpu_req_if.ready || schedule_delay; wire stall_gpu = ~gpu_req_if.ready || schedule_delay; wire flush_alu = alu_req_if.ready && schedule_delay; wire flush_lsu = lsu_req_if.ready && schedule_delay; wire flush_csr = csr_req_if.ready && schedule_delay; wire flush_mul = mul_req_if.ready && schedule_delay; + wire flush_fpu = fpu_req_if.ready && schedule_delay; wire flush_gpu = gpu_req_if.ready && schedule_delay; VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `ALU_BITS + `WB_BITS + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 32) + .N(`NUM_THREADS +`NW_BITS + 32 + `ALU_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 32) ) alu_reg ( .clk (clk), .reset (reset), @@ -89,7 +101,7 @@ module VX_issue #( ); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + 1 + `BYTEEN_BITS + `WB_BITS + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32) + .N(`NUM_THREADS + `NW_BITS + 32 + 1 + `BYTEEN_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32) ) lsu_reg ( .clk (clk), .reset (reset), @@ -100,7 +112,7 @@ module VX_issue #( ); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `CSR_BITS + `WB_BITS + `NR_BITS + `CSR_ADDR_SIZE + 32 + 1) + .N(`NUM_THREADS + `NW_BITS + 32 + `CSR_BITS + 1 + `NR_BITS + `CSR_ADDR_SIZE + 32 + 1) ) csr_reg ( .clk (clk), .reset (reset), @@ -110,8 +122,8 @@ module VX_issue #( .out ({csr_req_if.valid, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.csr_op, csr_req_if.wb, csr_req_if.rd, csr_req_if.csr_addr, csr_req_if.csr_mask, csr_req_if.is_io}) ); - VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `MUL_BITS + `WB_BITS + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) + VX_generic_register #( + .N(`NUM_THREADS +`NW_BITS + 32 + `MUL_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) ) mul_reg ( .clk (clk), .reset (reset), @@ -121,6 +133,17 @@ module VX_issue #( .out ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.mul_op, mul_req_if.wb, mul_req_if.rd, mul_req_if.rs1_data, mul_req_if.rs2_data}) ); + VX_generic_register #( + .N(`NUM_THREADS +`NW_BITS + 32 + `FPU_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `FRM_BITS) + ) fpu_reg ( + .clk (clk), + .reset (reset), + .stall (stall_fpu), + .flush (flush_fpu), + .in ({fpu_req_tmp_if.valid, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.wb, fpu_req_tmp_if.rd, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data, fpu_req_tmp_if.rs3_data, fpu_req_tmp_if.frm}), + .out ({fpu_req_if.valid, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.fpu_op, fpu_req_if.wb, fpu_req_if.rd, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data, fpu_req_if.frm}) + ); + VX_generic_register #( .N(`NUM_THREADS + `NW_BITS + 32 + `GPU_BITS + (`NUM_THREADS * 32) + 32 + 32) ) gpu_reg ( @@ -140,6 +163,9 @@ module VX_issue #( if ((| mul_req_tmp_if.valid) && ~stall_mul) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, op=%0d, wb=%d, rd=%0d, rs1=%0h, rs2=%0h", $time, CORE_ID, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.mul_op, mul_req_tmp_if.wb, mul_req_tmp_if.rd, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data); end + if ((| fpu_req_tmp_if.valid) && ~stall_fpu) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, op=%0d, wb=%d, rd=%0d, rs1=%0h, rs2=%0h", $time, CORE_ID, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.wb, fpu_req_tmp_if.rd, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data); + end if ((| lsu_req_tmp_if.valid) && ~stall_lsu) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, rw=%b, wb=%0d, rd=%0d, byteen=%b, baddr=%0h, offset=%0h", $time, CORE_ID, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.rw, lsu_req_tmp_if.rd, lsu_req_tmp_if.wb, lsu_req_tmp_if.byteen, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.offset); end diff --git a/hw/rtl/VX_issue_mux.v b/hw/rtl/VX_issue_mux.v index e55d7986..68ec6159 100644 --- a/hw/rtl/VX_issue_mux.v +++ b/hw/rtl/VX_issue_mux.v @@ -10,6 +10,7 @@ module VX_issue_mux ( VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, + VX_fpu_req_if fpu_req_if, VX_gpu_req_if gpu_req_if ); @@ -17,6 +18,7 @@ module VX_issue_mux ( wire[`NUM_THREADS-1:0] is_lsu = {`NUM_THREADS{decode_if.ex_type == `EX_LSU}}; wire[`NUM_THREADS-1:0] is_csr = {`NUM_THREADS{decode_if.ex_type == `EX_CSR}}; wire[`NUM_THREADS-1:0] is_mul = {`NUM_THREADS{decode_if.ex_type == `EX_MUL}}; + wire[`NUM_THREADS-1:0] is_fpu = {`NUM_THREADS{decode_if.ex_type == `EX_FPU}}; wire[`NUM_THREADS-1:0] is_gpu = {`NUM_THREADS{decode_if.ex_type == `EX_GPU}}; // ALU unit @@ -64,6 +66,18 @@ module VX_issue_mux ( assign mul_req_if.rd = decode_if.rd; assign mul_req_if.wb = decode_if.wb; + // FPU unit + assign fpu_req_if.valid = decode_if.valid & is_fpu; + assign fpu_req_if.warp_num = decode_if.warp_num; + assign fpu_req_if.curr_PC = decode_if.curr_PC; + assign fpu_req_if.fpu_op = `FPU_OP(decode_if.instr_op); + assign fpu_req_if.rs1_data = gpr_data_if.rs1_data; + assign fpu_req_if.rs2_data = gpr_data_if.rs2_data; + assign fpu_req_if.rs3_data = gpr_data_if.rs3_data; + assign fpu_req_if.frm = decode_if.frm; + assign fpu_req_if.rd = decode_if.rd; + assign fpu_req_if.wb = decode_if.wb; + // GPU unit assign gpu_req_if.valid = decode_if.valid & is_gpu; assign gpu_req_if.warp_num = decode_if.warp_num; diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 7cb84c7e..886e17bd 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -28,7 +28,7 @@ module VX_lsu_unit #( wire [`BYTEEN_BITS-1:0] mem_byteen; wire [`NR_BITS-1:0] use_rd; wire [`NW_BITS-1:0] use_warp_num; - wire [`WB_BITS-1:0] use_wb; + wire use_wb; wire [31:0] use_pc; wire mrq_full; @@ -69,7 +69,7 @@ module VX_lsu_unit #( `IGNORE_WARNINGS_END VX_generic_register #( - .N(`NUM_THREADS + (`NUM_THREADS * 32) + `BYTEEN_BITS + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + `NW_BITS + `WB_BITS + 32) + .N(`NUM_THREADS + (`NUM_THREADS * 32) + `BYTEEN_BITS + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + `NW_BITS + 1 + 32) ) mem_req_reg ( .clk (clk), .reset (reset), @@ -97,7 +97,7 @@ module VX_lsu_unit #( wire mrq_pop = mrq_pop_part && (0 == mem_rsp_mask_upd); VX_index_queue #( - .DATAW (`LOG2UP(`DCREQ_SIZE) + 32 + `WB_BITS + (`NUM_THREADS * 2) + `BYTEEN_BITS + `NR_BITS + `NW_BITS), + .DATAW (`LOG2UP(`DCREQ_SIZE) + 32 + 1 + (`NUM_THREADS * 2) + `BYTEEN_BITS + `NR_BITS + `NW_BITS), .SIZE (`DCREQ_SIZE) ) mem_req_queue ( .clk (clk), diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 4ebe1cbd..4670c224 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -36,7 +36,7 @@ module VX_mul_unit #( .WIDTHB(33), .WIDTHP(64), .SIGNED(1), - .PIPELINE(`MUL_LATENCY) + .PIPELINE(`LATENCY_IMUL) ) multiplier ( .clk(clk), .reset(reset), @@ -52,7 +52,7 @@ module VX_mul_unit #( .WIDTHR(32), .NSIGNED(1), .DSIGNED(1), - .PIPELINE(`DIV_LATENCY) + .PIPELINE(`LATENCY_IDIV) ) sdiv ( .clk(clk), .reset(reset), @@ -81,7 +81,7 @@ module VX_mul_unit #( reg result_avail; reg [4:0] pending_ctr; - wire [4:0] instr_delay = `IS_DIV_OP(alu_op) ? `DIV_LATENCY : `MUL_LATENCY; + wire [4:0] instr_delay = `IS_DIV_OP(alu_op) ? `LATENCY_IDIV : `LATENCY_IMUL; always @(posedge clk) begin if (reset) begin @@ -112,7 +112,7 @@ module VX_mul_unit #( wire flush = mul_commit_if.ready && pipeline_stall; VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)) + .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + 1 + (`NUM_THREADS * 32)) ) mul_reg ( .clk (clk), .reset (reset), diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index a548e0db..ea4e2e92 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -110,6 +110,7 @@ module VX_pipeline #( VX_lsu_req_if lsu_req_if(); VX_csr_req_if csr_req_if(); VX_mul_req_if mul_req_if(); + VX_fpu_req_if fpu_req_if(); VX_gpu_req_if gpu_req_if(); VX_wb_if writeback_if(); VX_wstall_if wstall_if(); @@ -118,6 +119,7 @@ module VX_pipeline #( VX_commit_if lsu_commit_if(); VX_commit_if csr_commit_if(); VX_commit_if mul_commit_if(); + VX_commit_if fpu_commit_if(); VX_commit_if gpu_commit_if(); VX_fetch #( @@ -159,6 +161,7 @@ module VX_pipeline #( .lsu_req_if (lsu_req_if), .csr_req_if (csr_req_if), .mul_req_if (mul_req_if), + .fpu_req_if (fpu_req_if), .gpu_req_if (gpu_req_if) ); @@ -181,6 +184,7 @@ module VX_pipeline #( .lsu_req_if (lsu_req_if), .csr_req_if (csr_req_if), .mul_req_if (mul_req_if), + .fpu_req_if (fpu_req_if), .gpu_req_if (gpu_req_if), .warp_ctl_if (warp_ctl_if), @@ -189,6 +193,7 @@ module VX_pipeline #( .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), + .fpu_commit_if (fpu_commit_if), .gpu_commit_if (gpu_commit_if), .ebreak (ebreak) @@ -204,6 +209,7 @@ module VX_pipeline #( .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), + .fpu_commit_if (fpu_commit_if), .gpu_commit_if (gpu_commit_if), .writeback_if (writeback_if), diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index 8b3df579..ec49f26a 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -8,10 +8,12 @@ module VX_scheduler #( VX_decode_if decode_if, VX_wb_if writeback_if, + input wire gpr_busy, input wire alu_busy, input wire lsu_busy, input wire csr_busy, input wire mul_busy, + input wire fpu_busy, input wire gpu_busy, output wire schedule_delay, output wire is_empty @@ -19,23 +21,27 @@ module VX_scheduler #( localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); reg [`NUM_REGS-1:0][`NUM_THREADS-1:0] rename_table [`NUM_WARPS-1:0]; - reg [`NUM_REGS-1:0] busy_table[`NUM_WARPS-1:0]; + reg [`NUM_REGS-1:0] busy_table [`NUM_WARPS-1:0]; reg [CTVW-1:0] count_valid; wire rs1_rename = busy_table[decode_if.warp_num][decode_if.rs1]; wire rs2_rename = busy_table[decode_if.warp_num][decode_if.rs2]; + wire rs3_rename = busy_table[decode_if.warp_num][decode_if.rs3]; wire rd_rename = busy_table[decode_if.warp_num][decode_if.rd]; - wire rs1_rename_qual = (rs1_rename) && (decode_if.use_rs1); - wire rs2_rename_qual = (rs2_rename) && (decode_if.use_rs2); - wire rd_rename_qual = (rd_rename) && (decode_if.wb != 0); + wire rs1_rename_qual = rs1_rename && decode_if.use_rs1; + wire rs2_rename_qual = rs2_rename && decode_if.use_rs2; + wire rs3_rename_qual = rs3_rename && decode_if.use_rs3; + wire rd_rename_qual = rd_rename && decode_if.wb; - wire rename_valid = (rs1_rename_qual || rs2_rename_qual || rd_rename_qual); + wire rename_valid = (rs1_rename_qual || rs2_rename_qual || rs3_rename_qual || rd_rename_qual); - wire ex_stalled = ((alu_busy && (decode_if.ex_type == `EX_ALU)) + wire ex_stalled = ((gpr_busy) + || (alu_busy && (decode_if.ex_type == `EX_ALU)) || (lsu_busy && (decode_if.ex_type == `EX_LSU)) || (csr_busy && (decode_if.ex_type == `EX_CSR)) || (mul_busy && (decode_if.ex_type == `EX_MUL)) + || (fpu_busy && (decode_if.ex_type == `EX_FPU)) || (gpu_busy && (decode_if.ex_type == `EX_GPU))); wire stall = (ex_stalled || rename_valid) && (| decode_if.valid); @@ -82,7 +88,7 @@ module VX_scheduler #( `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (stall) begin - $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, rename=%b%b%b, alu=%b, lsu=%b, csr=%b, mul=%b, gpu=%b", $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, rd_rename_qual, rs1_rename_qual, rs2_rename_qual, alu_busy, lsu_busy, csr_busy, mul_busy, gpu_busy); + $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, rename=%b%b%b, alu=%b, lsu=%b, csr=%b, mul=%b, fpu=%b, gpu=%b", $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, rd_rename_qual, rs1_rename_qual, rs2_rename_qual, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); end end `endif diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 66797e94..4b724470 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -9,17 +9,19 @@ module VX_writeback #( // inputs VX_commit_if alu_commit_if, VX_commit_if lsu_commit_if, - VX_commit_if mul_commit_if, + VX_commit_if mul_commit_if, + VX_commit_if fpu_commit_if, VX_commit_if csr_commit_if, // outputs VX_wb_if writeback_if ); - wire lsu_valid = (| lsu_commit_if.valid) && (lsu_commit_if.wb != `WB_NO); - wire mul_valid = (| mul_commit_if.valid) && (mul_commit_if.wb != `WB_NO); - wire alu_valid = (| alu_commit_if.valid) && (alu_commit_if.wb != `WB_NO); - wire csr_valid = (| csr_commit_if.valid) && (csr_commit_if.wb != `WB_NO); + wire alu_valid = (| alu_commit_if.valid) && alu_commit_if.wb; + wire lsu_valid = (| lsu_commit_if.valid) && lsu_commit_if.wb; + wire csr_valid = (| csr_commit_if.valid) && csr_commit_if.wb; + wire mul_valid = (| mul_commit_if.valid) && mul_commit_if.wb; + wire fpu_valid = (| fpu_commit_if.valid) && fpu_commit_if.wb; VX_wb_if writeback_tmp_if(); @@ -47,23 +49,26 @@ module VX_writeback #( csr_valid ? csr_commit_if.rd : 0; + assign writeback_tmp_if.is_fp = fpu_valid && fpu_commit_if.ready; + wire stall = ~writeback_if.ready && (| writeback_if.valid); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + `NR_BITS + (`NUM_THREADS * 32)) + .N(`NUM_THREADS + `NW_BITS + `NR_BITS + (`NUM_THREADS * 32) + 1) ) wb_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.rd, writeback_tmp_if.data}), - .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.rd, writeback_if.data}) + .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.rd, writeback_tmp_if.data, writeback_tmp_if.is_fp}), + .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.rd, writeback_if.data, writeback_if.is_fp}) ); assign lsu_commit_if.ready = !stall; - assign mul_commit_if.ready = !stall && !lsu_valid; - assign alu_commit_if.ready = !stall && !lsu_valid && !mul_valid; - assign csr_commit_if.ready = !stall && !lsu_valid && !mul_valid && !alu_valid; + assign fpu_commit_if.ready = !stall && !lsu_valid; + assign mul_commit_if.ready = !stall && !lsu_valid && !fpu_valid; + assign alu_commit_if.ready = !stall && !lsu_valid && !fpu_valid && !mul_valid; + assign csr_commit_if.ready = !stall && !lsu_valid && !fpu_valid && !mul_valid && !alu_valid; // special workaround to control RISC-V benchmarks termination on Verilator reg [31:0] last_data_wb /* verilator public */; diff --git a/hw/rtl/fp_cores/fpnew b/hw/rtl/fp_cores/fpnew new file mode 160000 index 00000000..1def7bb6 --- /dev/null +++ b/hw/rtl/fp_cores/fpnew @@ -0,0 +1 @@ +Subproject commit 1def7bb630ceae2ebc58921f6b5ee3e686fb6d5a diff --git a/hw/rtl/interfaces/VX_alu_req_if.v b/hw/rtl/interfaces/VX_alu_req_if.v index 999e0420..98dca661 100644 --- a/hw/rtl/interfaces/VX_alu_req_if.v +++ b/hw/rtl/interfaces/VX_alu_req_if.v @@ -11,7 +11,7 @@ interface VX_alu_req_if (); wire [`ALU_BITS-1:0] alu_op; - wire [`WB_BITS-1:0] wb; + wire wb; wire [`NR_BITS-1:0] rd; wire [`NUM_THREADS-1:0][31:0] rs1_data; diff --git a/hw/rtl/interfaces/VX_commit_if.v b/hw/rtl/interfaces/VX_commit_if.v index 6e969c77..457add5e 100644 --- a/hw/rtl/interfaces/VX_commit_if.v +++ b/hw/rtl/interfaces/VX_commit_if.v @@ -10,8 +10,7 @@ interface VX_commit_if (); wire [31:0] curr_PC; wire [`NUM_THREADS-1:0][31:0] data; wire [`NR_BITS-1:0] rd; - wire [`WB_BITS-1:0] wb; - wire is_io; + wire wb; wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_csr_req_if.v b/hw/rtl/interfaces/VX_csr_req_if.v index 2956416a..e585ad5c 100644 --- a/hw/rtl/interfaces/VX_csr_req_if.v +++ b/hw/rtl/interfaces/VX_csr_req_if.v @@ -15,7 +15,7 @@ interface VX_csr_req_if (); wire [31:0] csr_mask; wire [`NR_BITS-1:0] rd; - wire [`WB_BITS-1:0] wb; + wire wb; wire is_io; wire ready; diff --git a/hw/rtl/interfaces/VX_decode_if.v b/hw/rtl/interfaces/VX_decode_if.v index e4b99dc6..12a45198 100644 --- a/hw/rtl/interfaces/VX_decode_if.v +++ b/hw/rtl/interfaces/VX_decode_if.v @@ -19,12 +19,19 @@ interface VX_decode_if (); wire [31:0] imm; wire rs1_is_PC; - wire rs2_is_imm; + wire rs2_is_imm; wire use_rs1; wire use_rs2; - wire [`WB_BITS-1:0] wb; + // FP states + wire [`NR_BITS-1:0] rs3; + wire use_rs3; + wire rs1_is_fp; + wire rs2_is_fp; + wire [`FRM_BITS-1:0] frm; + + wire wb; wire ready; diff --git a/hw/rtl/interfaces/VX_fpu_from_csr_if.v b/hw/rtl/interfaces/VX_fpu_from_csr_if.v new file mode 100644 index 00000000..9cf03d37 --- /dev/null +++ b/hw/rtl/interfaces/VX_fpu_from_csr_if.v @@ -0,0 +1,16 @@ +`ifndef VX_FPU_FROM_CSR_IF +`define VX_FPU_FROM_CSR_IF + +`include "VX_define.vh" + +interface VX_fpu_from_csr_if (); + +`IGNORE_WARNINGS_BEGIN + + wire [`NUM_WARPS-1:0][`FRM_BITS-1:0] frm; + +`IGNORE_WARNINGS_END + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_fpu_req_if.v b/hw/rtl/interfaces/VX_fpu_req_if.v new file mode 100644 index 00000000..c35f83d3 --- /dev/null +++ b/hw/rtl/interfaces/VX_fpu_req_if.v @@ -0,0 +1,26 @@ +`ifndef VX_FPU_REQ_IF +`define VX_FPU_REQ_IF + +`include "VX_define.vh" + +interface VX_fpu_req_if (); + + wire [`NUM_THREADS-1:0] valid; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + + wire [`FPU_BITS-1:0] fpu_op; + wire [`FRM_BITS-1:0] frm; + + wire wb; + wire [`NR_BITS-1:0] rd; + + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + wire [`NUM_THREADS-1:0][31:0] rs3_data; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_fpu_to_csr_if.v b/hw/rtl/interfaces/VX_fpu_to_csr_if.v new file mode 100644 index 00000000..6d57da1d --- /dev/null +++ b/hw/rtl/interfaces/VX_fpu_to_csr_if.v @@ -0,0 +1,23 @@ +`ifndef VX_FPU_TO_CSR_IF +`define VX_FPU_TO_CSR_IF + +`include "VX_define.vh" + +interface VX_fpu_to_csr_if (); + +`IGNORE_WARNINGS_BEGIN + wire valid; + + wire [`NW_BITS-1:0] warp_num; + + wire fflags_NV; + wire fflags_DZ; + wire fflags_OF; + wire fflags_UF; + wire fflags_NX; + +`IGNORE_WARNINGS_END + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_gpr_data_if.v b/hw/rtl/interfaces/VX_gpr_data_if.v index fb58e6f7..e3a1a311 100644 --- a/hw/rtl/interfaces/VX_gpr_data_if.v +++ b/hw/rtl/interfaces/VX_gpr_data_if.v @@ -7,6 +7,7 @@ interface VX_gpr_data_if (); wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; + wire [`NUM_THREADS-1:0][31:0] rs3_data; endinterface diff --git a/hw/rtl/interfaces/VX_lsu_req_if.v b/hw/rtl/interfaces/VX_lsu_req_if.v index ce673140..a4e0aeed 100644 --- a/hw/rtl/interfaces/VX_lsu_req_if.v +++ b/hw/rtl/interfaces/VX_lsu_req_if.v @@ -12,7 +12,7 @@ interface VX_lsu_req_if (); wire rw; wire [`BYTEEN_BITS-1:0] byteen; - wire [`WB_BITS-1:0] wb; + wire wb; wire [`NR_BITS-1:0] rd; wire [`NUM_THREADS-1:0][31:0] store_data; diff --git a/hw/rtl/interfaces/VX_mul_req_if.v b/hw/rtl/interfaces/VX_mul_req_if.v index 01c0a621..708dba86 100644 --- a/hw/rtl/interfaces/VX_mul_req_if.v +++ b/hw/rtl/interfaces/VX_mul_req_if.v @@ -11,7 +11,7 @@ interface VX_mul_req_if (); wire [`MUL_BITS-1:0] mul_op; - wire [`WB_BITS-1:0] wb; + wire wb; wire [`NR_BITS-1:0] rd; wire [`NUM_THREADS-1:0][31:0] rs1_data; diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index e363c564..9d7aaa7a 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -9,6 +9,7 @@ interface VX_wb_if (); wire [`NW_BITS-1:0] warp_num; wire [`NR_BITS-1:0] rd; wire [`NUM_THREADS-1:0][31:0] data; + wire is_fp; wire ready; endinterface diff --git a/hw/simulate/verilator.vlt b/hw/simulate/verilator.vlt new file mode 100644 index 00000000..7e8fdd49 --- /dev/null +++ b/hw/simulate/verilator.vlt @@ -0,0 +1,11 @@ +`verilator_config + +lint_off -rule BLKANDNBLK -file "../rtl/fp_cores/fpnew/*" +lint_off -rule UNOPTFLAT -file "../rtl/fp_cores/fpnew/*" +lint_off -rule WIDTH -file "../rtl/fp_cores/fpnew/*" +lint_off -rule UNUSED -file "../rtl/fp_cores/fpnew/*" +lint_off -rule LITENDIAN -file "../rtl/fp_cores/fpnew/*" +lint_off -rule IMPORTSTAR -file "../rtl/fp_cores/fpnew/*" +lint_off -rule PINCONNECTEMPTY -file "../rtl/fp_cores/fpnew/*" + +//lint_off -rule CASEINCOMPLETE -file "../rtl/fp_cores/fpnew/*" From d0e70fa1dbda76b60841378c19217fe21c66975f Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 23 Jul 2020 06:20:43 -0400 Subject: [PATCH 10/94] add fpnew --- .gitmodules | 3 +++ hw/rtl/fp_cores/fpnew | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 hw/rtl/fp_cores/fpnew diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..dd60e98f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "hw/rtl/fp_cores/fpnew"] + path = hw/rtl/fp_cores/fpnew + url = https://github.com/pulp-platform/fpnew.git diff --git a/hw/rtl/fp_cores/fpnew b/hw/rtl/fp_cores/fpnew new file mode 160000 index 00000000..1def7bb6 --- /dev/null +++ b/hw/rtl/fp_cores/fpnew @@ -0,0 +1 @@ +Subproject commit 1def7bb630ceae2ebc58921f6b5ee3e686fb6d5a From f83521b7c678aa170428408e0672991ec1e25b39 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 23 Jul 2020 06:30:10 -0400 Subject: [PATCH 11/94] add fpnew --- hw/rtl/fp_cores/fpu_div_sqrt_mvp | 1 - 1 file changed, 1 deletion(-) delete mode 160000 hw/rtl/fp_cores/fpu_div_sqrt_mvp diff --git a/hw/rtl/fp_cores/fpu_div_sqrt_mvp b/hw/rtl/fp_cores/fpu_div_sqrt_mvp deleted file mode 160000 index d9a27f3c..00000000 --- a/hw/rtl/fp_cores/fpu_div_sqrt_mvp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d9a27f3c4ea72fcc246219c26896360dd61f2806 From 1f63f9da25037884279ac34c7cc589638e965e12 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Fri, 24 Jul 2020 00:00:37 -0400 Subject: [PATCH 12/94] new fpu implementation --- hw/rtl/VX_alu_unit.v | 2 - hw/rtl/VX_commit.v | 4 +- hw/rtl/VX_config.vh | 19 +++- hw/rtl/VX_csr_data.v | 67 ++++++++++++-- hw/rtl/VX_csr_unit.v | 11 ++- hw/rtl/VX_decode.v | 18 ++-- hw/rtl/VX_define.vh | 116 ++++++++++++++++--------- hw/rtl/VX_execute.v | 3 +- hw/rtl/VX_fpu_unit.v | 91 +++++++++++++------ hw/rtl/VX_gpr_fp_ctrl.v | 2 +- hw/rtl/VX_gpr_stage.v | 4 +- hw/rtl/VX_icache_stage.v | 13 ++- hw/rtl/VX_issue.v | 8 +- hw/rtl/VX_issue_mux.v | 90 ------------------- hw/rtl/VX_lsu_unit.v | 11 ++- hw/rtl/VX_mul_unit.v | 2 +- hw/rtl/VX_pipeline.v | 2 +- hw/rtl/VX_scheduler.v | 29 ++++--- hw/rtl/VX_scope.vh | 4 +- hw/rtl/VX_writeback.v | 29 ++++--- hw/rtl/cache/VX_bank.v | 6 +- hw/rtl/cache/VX_cache.v | 2 +- hw/rtl/cache/VX_snp_forwarder.v | 5 +- hw/rtl/interfaces/VX_commit_if.v | 2 +- hw/rtl/interfaces/VX_decode_if.v | 3 +- hw/rtl/interfaces/VX_fpu_from_csr_if.v | 7 +- hw/rtl/interfaces/VX_fpu_req_if.v | 1 + hw/rtl/interfaces/VX_fpu_to_csr_if.v | 3 - hw/rtl/interfaces/VX_wb_if.v | 4 +- hw/simulate/Makefile | 18 ++-- 30 files changed, 318 insertions(+), 258 deletions(-) delete mode 100644 hw/rtl/VX_issue_mux.v diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 55ea3dd4..15d029fe 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -1,6 +1,4 @@ `include "VX_define.vh" -`include "fpnew_pkg.sv" -`include "defs_div_sqrt_mvp.sv" module VX_alu_unit #( parameter CORE_ID = 0 diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index 457d8308..c4e4d294 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -11,7 +11,7 @@ module VX_commit #( VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, VX_commit_if csr_commit_if, - VX_commit_if fpu_commit_if, + VX_commit_fp_if fpu_commit_if, VX_commit_if gpu_commit_if, // outputs @@ -70,7 +70,7 @@ module VX_commit #( .fpu_commit_if (fpu_commit_if), .writeback_if (writeback_if) - ); + ); `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index ef4b9e78..95d23af3 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -63,6 +63,10 @@ `define EXT_M_ENABLE 1 `endif +`ifndef EXT_F_ENABLE +`define EXT_F_ENABLE 1 +`endif + // Configuration Values ======================================================= `define VENDOR_ID 0 @@ -71,6 +75,10 @@ // CSR Addresses ============================================================== +`define CSR_FFLAGS 12'hF01 +`define CSR_FRM 12'hF02 +`define CSR_FCSR 12'hF03 + `define CSR_VEND_ID 12'hF11 `define CSR_ARCH_ID 12'hF12 `define CSR_IMPL_ID 12'hF13 @@ -91,6 +99,16 @@ `define CSR_MISA 12'h301 +// Size of MUL Request Queue Size +`ifndef MULRQ_SIZE +`define MULRQ_SIZE 8 +`endif + +// Size of FPU Request Queue Size +`ifndef FPURQ_SIZE +`define FPURQ_SIZE 8 +`endif + // Dcache Configurable Knobs ================================================== // Size of cache in bytes @@ -407,5 +425,4 @@ `define L3PRFQ_STRIDE 0 `endif - // VX_CONFIG `endif diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index abe7f7e8..e9c93ab3 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -4,33 +4,82 @@ module VX_csr_data #( parameter CORE_ID = 0 ) ( input wire clk, + input wire reset, + + VX_perf_cntrs_if perf_cntrs_if, + VX_fpu_from_csr_if fpu_from_csr_if, + VX_fpu_to_csr_if fpu_to_csr_if, + + input wire[`NW_BITS-1:0] warp_num, input wire[`CSR_ADDR_SIZE-1:0] read_addr, output reg[31:0] read_data, - input wire write_enable, + input wire write_enable, `IGNORE_WARNINGS_BEGIN // We use a smaller storage for CSRs than the standard 4KB in RISC-V input wire[`CSR_ADDR_SIZE-1:0] write_addr, `IGNORE_WARNINGS_END - input wire[`CSR_WIDTH-1:0] write_data, - input wire[`NW_BITS-1:0] warp_num, - VX_perf_cntrs_if perf_cntrs_if + input wire[`CSR_WIDTH-1:0] write_data ); reg [`CSR_WIDTH-1:0] csr_table[`NUM_CSRS-1:0]; + reg [`FFG_BITS+`FRM_BITS-1:0] fflags_table [`NUM_WARPS-1:0]; + reg [`FRM_BITS-1:0] frm_table [`NUM_WARPS-1:0]; + reg [`FFG_BITS+`FRM_BITS-1:0] fcsr_table [`NUM_WARPS-1:0]; // fflags + frm + // cast address to physical CSR range wire [$clog2(`NUM_CSRS)-1:0] rd_addr, wr_addr; assign rd_addr = $size(rd_addr)'(read_addr); - assign wr_addr = $size(wr_addr)'(write_addr); + assign wr_addr = $size(wr_addr)'(write_addr); + + wire [`FFG_BITS-1:0] fflags_update; + assign fflags_update[4] = fpu_to_csr_if.fflags_NV; + assign fflags_update[3] = fpu_to_csr_if.fflags_DZ; + assign fflags_update[2] = fpu_to_csr_if.fflags_OF; + assign fflags_update[1] = fpu_to_csr_if.fflags_UF; + assign fflags_update[0] = fpu_to_csr_if.fflags_NX; + + integer i; always @(posedge clk) begin - if (write_enable) begin - csr_table[wr_addr] <= write_data; + if (reset) begin + for (i = 0; i < `NUM_WARPS; i++) begin + fflags_table[i] <= 0; + frm_table[i] <= 0; + fcsr_table[i] <= 0; + end + end else begin + if (write_enable) begin + case (write_addr) + `CSR_FFLAGS: begin + fcsr_table[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; + fflags_table[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; + end + `CSR_FRM: begin + fcsr_table[warp_num][`FFG_BITS+`FRM_BITS-1:`FFG_BITS] <= write_data[`FRM_BITS-1:0]; + frm_table[warp_num] <= write_data[`FRM_BITS-1:0]; + end + `CSR_FCSR: begin + fcsr_table[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:0]; + frm_table[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:`FFG_BITS]; + fflags_table[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; + end + default: begin + csr_table[wr_addr] <= write_data; + end + endcase + end else if (fpu_to_csr_if.valid) begin + fflags_table[fpu_to_csr_if.warp_num][`FFG_BITS-1:0] <= fflags_update; + fcsr_table[fpu_to_csr_if.warp_num][`FFG_BITS-1:0] <= fflags_update; + end end end always @(*) begin case (read_addr) + `CSR_FFLAGS : read_data = 32'(fflags_table[warp_num]); + `CSR_FRM : read_data = 32'(frm_table[warp_num]); + `CSR_FCSR : read_data = 32'(fcsr_table[warp_num]); `CSR_LWID : read_data = 32'(warp_num); `CSR_GTID , `CSR_GWID : read_data = CORE_ID * `NUM_WARPS + 32'(warp_num); @@ -48,6 +97,8 @@ module VX_csr_data #( `CSR_MISA : read_data = `ISA_CODE; default : read_data = 32'(csr_table[rd_addr]); endcase - end + end + + assign fpu_from_csr_if.frm = frm_table[fpu_from_csr_if.warp_num]; endmodule diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index 96b4364c..96a7973f 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -6,7 +6,9 @@ module VX_csr_unit #( input wire clk, input wire reset, - VX_perf_cntrs_if perf_cntrs_if, + VX_perf_cntrs_if perf_cntrs_if, + + VX_fpu_from_csr_if fpu_from_csr_if, VX_fpu_to_csr_if fpu_to_csr_if, VX_csr_io_req_if csr_io_req_if, @@ -48,13 +50,16 @@ module VX_csr_unit #( .CORE_ID(CORE_ID) ) csr_data ( .clk (clk), + .reset (reset), + .perf_cntrs_if (perf_cntrs_if), + .fpu_to_csr_if (fpu_to_csr_if), + .fpu_from_csr_if(fpu_from_csr_if), .read_addr (csr_pipe_req_if.csr_addr), .read_data (csr_read_data_unqual), .write_enable (is_csr_s2), .write_data (csr_updated_data_s2[`CSR_WIDTH-1:0]), .write_addr (csr_addr_s2), - .warp_num (csr_pipe_req_if.warp_num), - .perf_cntrs_if (perf_cntrs_if) + .warp_num (csr_pipe_req_if.warp_num) ); wire csr_hazard = (csr_addr_s2 == csr_pipe_req_if.csr_addr) diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index f5cc7549..96b39503 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -214,14 +214,14 @@ module VX_decode #( 7'h04: fpu_op = `FPU_SUB; 7'h08: fpu_op = `FPU_MUL; 7'h0C: fpu_op = `FPU_DIV; - 7'h2C: fpu_op = `FPU_SQRT; + 7'h10: fpu_op = (func3[1]) ? `FPU_SGNJX : ((func3[0]) ? `FPU_SGNJN : `FPU_SGNJ); 7'h14: fpu_op = (func3 == 3'h0) ? `FPU_MIN : `FPU_MAX; + 7'h2C: fpu_op = `FPU_SQRT; + 7'h50: fpu_op = `FPU_CMP; // wb to intReg 7'h60: fpu_op = (instr[20]) ? `FPU_CVTWUS : `FPU_CVTWS; // doesn't need rs2, and read rs1 from fpReg, WB to intReg 7'h68: fpu_op = (instr[20]) ? `FPU_CVTSWU : `FPU_CVTSW; // doesn't need rs2, and read rs1 from intReg - 7'h70: fpu_op = (func3 == 3'h0) ? `FPU_MVXW : `FPU_CLASS; // both wb to intReg - 7'h78: fpu_op = `FPU_MVWX; - 7'h50: fpu_op = `FPU_CMP; // wb to intReg - 7'h10: fpu_op = (func3[1]) ? `FPU_SGNJX : ((func3[0]) ? `FPU_SGNJN : `FPU_SGNJ); + 7'h70: fpu_op = (func3 == 3'h0) ? `FPU_MVXW : `FPU_CLASS; // both wb to intReg + 7'h78: fpu_op = `FPU_MVWX; default:; endcase end @@ -283,15 +283,15 @@ module VX_decode #( assign decode_tmp_if.use_rs2 = (decode_tmp_if.rs2 != 0) && (is_btype || is_stype || is_rtype || (is_gpu && (gpu_op == `GPU_BAR || gpu_op == `GPU_WSPAWN))); - - assign decode_tmp_if.rs1_is_fp = (is_fci && ((func7 != 7'h68) && (fpu_op != `FPU_MVWX)) || is_fr4); + + assign decode_tmp_if.rd_is_fp = is_fpu && ~(is_fci && ((func7 == 7'h50) || (func7 == 7'h60) || (func7 == 7'h70))); + assign decode_tmp_if.rs1_is_fp = is_fci && ((func7 != 7'h68) && (fpu_op != `FPU_MVWX)) || is_fr4; assign decode_tmp_if.rs2_is_fp = is_fs || (is_fci && ((func7 != 7'h60) && (func7 != 7'h68)) || is_fr4); assign decode_tmp_if.rs3 = rs3; assign decode_tmp_if.use_rs3 = is_fr4; assign decode_tmp_if.frm = func3; - assign decode_tmp_if.wb = (is_fpu && (is_fl || (is_fci && ((func7 != 7'h50) || (func7 != 7'h70) || (func7 != 7'h60))) || is_fr4)) - || (~is_fpu && (rd != 0) && (is_itype || is_rtype || is_lui || is_auipc || is_csr || is_jal || is_jalr || is_jals || is_ltype)); + assign decode_tmp_if.wb = is_fpu || ((rd != 0) && (is_itype || is_rtype || is_lui || is_auipc || is_csr || is_jal || is_jalr || is_jals || is_ltype)); assign join_if.is_join = in_valid && is_gpu && (gpu_op == `GPU_JOIN); assign join_if.warp_num = ifetch_rsp_if.warp_num; diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 8751847e..841df9a3 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -25,10 +25,14 @@ `define IGNORE_WARNINGS_BEGIN /* verilator lint_off UNUSED */ \ /* verilator lint_off PINCONNECTEMPTY */ \ + /* verilator lint_off WIDTH */ \ + /* verilator lint_off UNOPTFLAT */ \ /* verilator lint_off DECLFILENAME */ `define IGNORE_WARNINGS_END /* verilator lint_on UNUSED */ \ /* verilator lint_on PINCONNECTEMPTY */ \ + /* verilator lint_on WIDTH */ \ + /* verilator lint_on UNOPTFLAT */ \ /* verilator lint_on DECLFILENAME */ `define UNUSED_VAR(x) /* verilator lint_off UNUSED */ \ @@ -76,9 +80,14 @@ `define CSR_WIDTH 12 -`define DIV_LATENCY 21 +`define LATENCY_IDIV 21 -`define MUL_LATENCY 2 +`define LATENCY_IMUL 2 + +`define LATENCY_FMULADD 2 +`define LATENCY_FDIVSQRT 2 +`define LATENCY_FCONV 2 +`define LATENCY_FNONCOMP 1 /////////////////////////////////////////////////////////////////////////////// @@ -93,6 +102,15 @@ `define INST_R 7'b0110011 `define INST_F 7'b0001111 `define INST_SYS 7'b1110011 + +`define INST_FL 7'b0000111 +`define INST_FS 7'b0100111 +`define INST_FCI 7'b1010011 +`define INST_FMADD 7'b1000011 +`define INST_FMSUB 7'b1000111 +`define INST_FNMSUB 7'b1001011 +`define INST_FNMADD 7'b1001111 + `define INST_GPU 7'b1101011 `define BYTEEN_SB 3'h0 @@ -150,18 +168,6 @@ `define BR_OP(x) x[`BR_BITS-1:0] `define IS_BR_OP(x) x[4] -`define MUL_MUL 3'h0 -`define MUL_MULH 3'h1 -`define MUL_MULHSU 3'h2 -`define MUL_MULHU 3'h3 -`define MUL_DIV 3'h4 -`define MUL_DIVU 3'h5 -`define MUL_REM 3'h6 -`define MUL_REMU 3'h7 -`define MUL_BITS 3 -`define MUL_OP(x) x[`MUL_BITS-1:0] -`define IS_DIV_OP(x) x[2] - `define LSU_LB {1'b0, `BYTEEN_SB} `define LSU_LH {1'b0, `BYTEEN_SH} `define LSU_LW {1'b0, `BYTEEN_SW} @@ -183,6 +189,53 @@ `define CSR_BITS 2 `define CSR_OP(x) x[`CSR_BITS-1:0] +`define MUL_MUL 3'h0 +`define MUL_MULH 3'h1 +`define MUL_MULHSU 3'h2 +`define MUL_MULHU 3'h3 +`define MUL_DIV 3'h4 +`define MUL_DIVU 3'h5 +`define MUL_REM 3'h6 +`define MUL_REMU 3'h7 +`define MUL_BITS 3 +`define MUL_OP(x) x[`MUL_BITS-1:0] +`define IS_DIV_OP(x) x[2] + +`define FPU_ADD 5'h00 +`define FPU_SUB 5'h01 +`define FPU_MUL 5'h02 +`define FPU_DIV 5'h03 +`define FPU_SQRT 5'h04 +`define FPU_MADD 5'h05 +`define FPU_MSUB 5'h06 +`define FPU_NMSUB 5'h07 +`define FPU_NMADD 5'h08 +`define FPU_SGNJ 5'h09 // FSGNJ +`define FPU_SGNJN 5'h0A // FSGNJN +`define FPU_SGNJX 5'h0B // FSGNJX +`define FPU_MIN 5'h0C // FMIN.S +`define FPU_MAX 5'h0D // FMAX.S +`define FPU_CVTWS 5'h0E // FCVT.W.S +`define FPU_CVTWUS 5'h0F // FCVT.WU.S +`define FPU_CVTSW 5'h10 // FCVT.S.W +`define FPU_CVTSWU 5'h11 // FCVT.S.WU +`define FPU_MVXW 5'h12 // MOV FP from fpReg to integer reg +`define FPU_MVWX 5'h13 // MOV FP from integer reg to fpReg +`define FPU_CLASS 5'h14 +`define FPU_CMP 5'h15 +`define FPU_OTHER 5'h1f +`define FPU_BITS 5 +`define FPU_OP(x) x[`FPU_BITS-1:0] + +`define FRM_RNE 3'b000 +`define FRM_RTZ 3'b001 +`define FRM_RDN 3'b010 +`define FRM_RUP 3'b011 // positive inf +`define FRM_RMM 3'b100 +`define FRM_DYN 3'b111 +`define FRM_BITS 3 +`define FFG_BITS 5 + `define GPU_TMC 3'h0 `define GPU_WSPAWN 3'h1 `define GPU_SPLIT 3'h2 @@ -194,21 +247,16 @@ `define EX_NOP 3'h0 `define EX_ALU 3'h1 -`define EX_MUL 3'h2 -`define EX_LSU 3'h3 -`define EX_CSR 3'h4 -`define EX_GPU 3'h5 +`define EX_LSU 3'h2 +`define EX_CSR 3'h3 +`define EX_MUL 3'h4 +`define EX_FPU 3'h5 +`define EX_GPU 3'h6 `define EX_BITS 3 -`define NUM_EXS 5 +`define NUM_EXS 6 `define NE_BITS `LOG2UP(`NUM_EXS) -`define WB_NO 2'h0 -`define WB_ALU 2'h1 -`define WB_MEM 2'h2 -`define WB_JAL 2'h3 -`define WB_BITS 2 - /////////////////////////////////////////////////////////////////////////////// `define ISA_CODE (0 << 0) // A - Atomic Instructions extension \ @@ -216,14 +264,14 @@ | (0 << 2) // C - Compressed extension \ | (0 << 3) // D - Double precsision floating-point extension \ | (0 << 4) // E - RV32E base ISA \ - | (0 << 5) // F - Single precsision floating-point extension \ + | (`EXT_F_ENABLE << 5) // F - Single precsision floating-point extension \ | (0 << 6) // G - Additional standard extensions present \ | (0 << 7) // H - Hypervisor mode implemented \ | (1 << 8) // I - RV32I/64I/128I base ISA \ | (0 << 9) // J - Reserved \ | (0 << 10) // K - Reserved \ | (0 << 11) // L - Tentatively reserved for Bit operations extension \ - | (1 << 12) // M - Integer Multiply/Divide extension \ + | (`EXT_M_ENABLE << 12) // M - Integer Multiply/Divide extension \ | (0 << 13) // N - User level interrupts supported \ | (0 << 14) // O - Reserved \ | (0 << 15) // P - Tentatively reserved for Packed-SIMD extension \ @@ -241,7 +289,7 @@ /////////////////////////////////////////////////////////////////////////////// `ifdef DBG_CORE_REQ_INFO // pc, wb, rd, warp_num -`define DEBUG_CORE_REQ_MDATA_WIDTH (32 + `WB_BITS + `NR_BITS + `NW_BITS) +`define DEBUG_CORE_REQ_MDATA_WIDTH (32 + 1 + `NR_BITS + `NW_BITS) `else `define DEBUG_CORE_REQ_MDATA_WIDTH 0 `endif @@ -492,16 +540,4 @@ task print_instr_op; end endtask -task print_wb; - input [`WB_BITS-1:0] wb; - begin - case (wb) - `WB_ALU: $write("ALU"); - `WB_MEM: $write("MEM"); - `WB_JAL: $write("JAL"); - default: $write("NO"); - endcase - end -endtask - `endif diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 086227bb..6f9716b3 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -35,7 +35,7 @@ module VX_execute #( VX_commit_if lsu_commit_if, VX_commit_if csr_commit_if, VX_commit_if mul_commit_if, - VX_commit_if fpu_commit_if, + VX_commit_fp_if fpu_commit_if, VX_commit_if gpu_commit_if, output wire ebreak @@ -72,6 +72,7 @@ module VX_execute #( .reset (reset), .perf_cntrs_if (perf_cntrs_if), .fpu_to_csr_if (fpu_to_csr_if), + .fpu_from_csr_if(fpu_from_csr_if), .csr_io_req_if (csr_io_req_if), .csr_io_rsp_if (csr_io_rsp_if), .csr_req_if (csr_req_if), diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index 770dc53f..4b22850b 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -1,4 +1,6 @@ `include "VX_define.vh" +`include "fpnew_pkg.sv" +`include "defs_div_sqrt_mvp.sv" module VX_fpu_unit #( parameter CORE_ID = 0 @@ -12,7 +14,7 @@ module VX_fpu_unit #( VX_fpu_from_csr_if fpu_from_csr_if, // outputs - VX_commit_if fpu_commit_if, + VX_commit_fp_if fpu_commit_if, VX_fpu_to_csr_if fpu_to_csr_if ); localparam FOP_BITS = fpnew_pkg::OP_BITS; @@ -30,21 +32,21 @@ module VX_fpu_unit #( }; localparam fpnew_pkg::fpu_implementation_t FPU_IMPLEMENTATION = '{ - PipeRegs:'{'{`LATENCY_FMULADD, 0, 0, 0, 0}, // ADDMUL - '{default: `LATENCY_FDIVSQRT}, // DIVSQRT - '{default: `LATENCY_FNONCOMP}, // NONCOMP - '{default: `LATENCY_FCONV}}, // CONV - UnitTypes:'{'{default: fpnew_pkg::PARALLEL}, // ADDMUL - '{default: fpnew_pkg::MERGED}, // DIVSQRT - '{default: fpnew_pkg::PARALLEL}, // NONCOMP - '{default: fpnew_pkg::MERGED}}, // CONV + PipeRegs:'{'{`LATENCY_FMULADD, 0, 0, 0, 0}, // ADDMUL + '{default: `LATENCY_FDIVSQRT}, // DIVSQRT + '{default: `LATENCY_FNONCOMP}, // NONCOMP + '{default: `LATENCY_FCONV}}, // CONV + UnitTypes:'{'{default: fpnew_pkg::PARALLEL}, // ADDMUL + '{default: fpnew_pkg::MERGED}, // DIVSQRT + '{default: fpnew_pkg::PARALLEL}, // NONCOMP + '{default: fpnew_pkg::MERGED}}, // CONV PipeConfig: fpnew_pkg::DISTRIBUTED }; - wire fpu_in_ready; - wire fpu_in_valid; - wire fpu_out_ready; - wire fpu_out_valid; + wire fpu_in_ready, fpu_in_valid; + wire fpu_out_ready, fpu_out_valid; + + wire [`LOG2UP(`FPURQ_SIZE)-1:0] fpu_in_tag, fpu_out_tag; wire [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; @@ -52,15 +54,13 @@ module VX_fpu_unit #( wire [FMTF_BITS-1:0] fpu_dst_fmt = fpnew_pkg::FP32; wire [FMTI_BITS-1:0] fpu_int_fmt = fpnew_pkg::INT32; - assign fpu_in_valid = (| fpu_req_if.valid); - assign fpu_operands[0] = fpu_req_if.rs1_data; - assign fpu_operands[1] = fpu_req_if.rs2_data; - assign fpu_operands[2] = fpu_req_if.rs3_data; - assign fpu_req_if.ready = fpu_in_ready; - wire [`NUM_THREADS-1:0][31:0] fpu_result; fpnew_pkg::status_t fpu_status; + assign fpu_from_csr_if.warp_num = fpu_req_if.warp_num; + wire is_dyn_rnd = &(fpu_req_if.frm); + wire [`FRM_BITS-1:0] real_frm = is_dyn_rnd ? fpu_from_csr_if.frm : fpu_req_if.frm; + reg [FOP_BITS-1:0] fpu_op; reg [`FRM_BITS-1:0] fpu_rnd; reg fpu_op_mod; @@ -96,10 +96,12 @@ module VX_fpu_unit #( endcase end + assign fpu_operands = {fpu_req_if.rs3_data, fpu_req_if.rs2_data, fpu_req_if.rs1_data}; + fpnew_top #( .Features (FPU_FEATURES), .Implementation (FPU_IMPLEMENTATION), - .TagType (logic) + .TagType (logic [`LOG2UP(`FPURQ_SIZE)-1:0]) ) fpnew_core ( .clk_i (clk), .rst_ni (1'b1), @@ -111,26 +113,59 @@ module VX_fpu_unit #( .dst_fmt_i (fpu_dst_fmt), .int_fmt_i (fpu_int_fmt), .vectorial_op_i (1'b1), - .tag_i (1'b0), + .tag_i (fpu_in_tag), .in_valid_i (fpu_in_valid), .in_ready_o (fpu_in_ready), .flush_i (reset), .result_o (fpu_result), .status_o (fpu_status), - `UNUSED_PIN (tag_o), + .tag_o (fpu_out_tag), .out_valid_o (fpu_out_valid), .out_ready_i (fpu_out_ready), `UNUSED_PIN (busy_o) ); - assign fpu_commit_if.valid = fpu_req_if.valid & {`NUM_THREADS{fpu_out_valid}}; - assign fpu_commit_if.data = fpu_result; - assign fpu_commit_if.wb = fpu_req_if.wb; - assign fpu_commit_if.rd = fpu_req_if.rd; - assign fpu_out_ready = fpu_commit_if.ready; + wire req_push = fpu_req_if.valid && fpu_req_if.ready; + wire req_pop = fpu_out_valid && fpu_out_ready; + wire req_full; + + wire [`NUM_THREADS-1:0] rsp_valid; + wire [`NW_BITS-1:0] rsp_warp_num; + wire [31:0] rsp_curr_PC; + wire rsp_wb; + wire [`NR_BITS-1:0] rsp_rd; + wire rsp_rd_is_fp; + + VX_index_queue #( + .DATAW (`NUM_THREADS + `NW_BITS + 32 + 1 + `NR_BITS + 1), + .SIZE (`FPURQ_SIZE) + ) fpu_req_queue ( + .clk (clk), + .reset (reset), + .write_data ({fpu_req_if.valid, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.wb, fpu_req_if.rd, fpu_req_if.rd_is_fp}), + .write_addr (fpu_in_tag), + .push (req_push), + .full (req_full), + .pop (req_pop), + .read_addr (fpu_out_tag), + .read_data ({rsp_valid, rsp_warp_num, rsp_curr_PC, rsp_wb, rsp_rd, rsp_rd_is_fp}), + `UNUSED_PIN (empty) + ); + + assign fpu_in_valid = (| fpu_req_if.valid) && ~req_full; + assign fpu_req_if.ready = fpu_in_ready && ~req_full; + + assign fpu_commit_if.valid = rsp_valid & {`NUM_THREADS{fpu_out_valid}}; + assign fpu_commit_if.warp_num = rsp_warp_num; + assign fpu_commit_if.curr_PC = rsp_curr_PC; + assign fpu_commit_if.data = fpu_result; + assign fpu_commit_if.wb = rsp_wb; + assign fpu_commit_if.rd = rsp_rd; + assign fpu_commit_if.rd_is_fp = rsp_rd_is_fp; + assign fpu_out_ready = fpu_commit_if.ready; assign fpu_to_csr_if.valid = fpu_out_valid; - assign fpu_to_csr_if.warp_num = fpu_req_if.warp_num; + assign fpu_to_csr_if.warp_num = rsp_warp_num; assign fpu_to_csr_if.fflags_NV = fpu_status.NV; assign fpu_to_csr_if.fflags_DZ = fpu_status.DZ; assign fpu_to_csr_if.fflags_OF = fpu_status.OF; diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index bacc36a5..1c7407f1 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -50,7 +50,7 @@ module VX_gpr_fp_ctrl ( if (decode_if.rs1_is_fp) begin tmp_rs1_data <= rs1_fp_data; end else begin - tmp_rs1_data <= decode_if.rs1_is_PC ? {`NUM_THREADS{decode_if.curr_PC}} : rs1_int_data; + tmp_rs1_data <= decode_if.rs1_is_PC ? {`NUM_THREADS{decode_if.curr_PC}} : rs1_int_data; end end end diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 01c9c281..37da6ed9 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -34,7 +34,7 @@ module VX_gpr_stage #( // Int GPRs VX_gpr_ram gpr_int_ram ( .clk (clk), - .we (we[i] & {`NUM_THREADS{~writeback_if.is_fp}}), + .we (we[i] & {`NUM_THREADS{~writeback_if.rd_is_fp}}), .waddr (writeback_if.rd), .wdata (writeback_if.data), .rs1 (raddr1), @@ -46,7 +46,7 @@ module VX_gpr_stage #( // FP GPRs VX_gpr_ram gpr_fp_ram ( .clk (clk), - .we (we[i] & {`NUM_THREADS{writeback_if.is_fp}}), + .we (we[i] & {`NUM_THREADS{writeback_if.rd_is_fp}}), .waddr (writeback_if.rd), .wdata (writeback_if.data), .rs1 (raddr1), diff --git a/hw/rtl/VX_icache_stage.v b/hw/rtl/VX_icache_stage.v index 37eef92c..e2be9f37 100644 --- a/hw/rtl/VX_icache_stage.v +++ b/hw/rtl/VX_icache_stage.v @@ -23,7 +23,7 @@ module VX_icache_stage #( wire valid_inst = (| ifetch_req_if.valid); - wire [`LOG2UP(`ICREQ_SIZE)-1:0] mrq_write_addr, mrq_read_addr, dbg_mrq_write_addr; + wire [`LOG2UP(`ICREQ_SIZE)-1:0] mrq_write_addr, mrq_read_addr; wire mrq_full; wire mrq_push = icache_req_if.valid && icache_req_if.ready; @@ -32,18 +32,18 @@ module VX_icache_stage #( assign mrq_read_addr = icache_rsp_if.tag[0][`LOG2UP(`ICREQ_SIZE)-1:0]; VX_index_queue #( - .DATAW (`LOG2UP(`ICREQ_SIZE) + 32 + `NW_BITS), + .DATAW (32 + `NW_BITS), .SIZE (`ICREQ_SIZE) ) mem_req_queue ( .clk (clk), .reset (reset), - .write_data ({mrq_write_addr, ifetch_req_if.curr_PC, ifetch_req_if.warp_num}), + .write_data ({ifetch_req_if.curr_PC, ifetch_req_if.warp_num}), .write_addr (mrq_write_addr), .push (mrq_push), .full (mrq_full), .pop (mrq_pop), .read_addr (mrq_read_addr), - .read_data ({dbg_mrq_write_addr, ifetch_rsp_if.curr_PC, ifetch_rsp_if.warp_num}), + .read_data ({ifetch_rsp_if.curr_PC, ifetch_rsp_if.warp_num}), `UNUSED_PIN (empty) ); @@ -51,9 +51,6 @@ module VX_icache_stage #( if (mrq_push) begin valid_threads[ifetch_req_if.warp_num] <= ifetch_req_if.valid; end - if (mrq_pop) begin - assert(mrq_read_addr == dbg_mrq_write_addr); - end end // Icache Request @@ -67,7 +64,7 @@ module VX_icache_stage #( assign ifetch_req_if.ready = !mrq_full && icache_req_if.ready; `ifdef DBG_CORE_REQ_INFO - assign icache_req_if.tag = {ifetch_req_if.curr_PC, 2'b1, 5'b0, ifetch_req_if.warp_num, mrq_write_addr}; + assign icache_req_if.tag = {ifetch_req_if.curr_PC, 1'b0, 5'b0, ifetch_req_if.warp_num, mrq_write_addr}; `else assign icache_req_if.tag = mrq_write_addr; `endif diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 261a0927..3392f719 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -64,7 +64,7 @@ module VX_issue #( VX_fpu_req_if fpu_req_tmp_if(); VX_gpu_req_if gpu_req_tmp_if(); - VX_issue_mux issue_mux ( + VX_issue_demux issue_demux ( .decode_if (decode_if), .gpr_data_if (gpr_data_if), .alu_req_if (alu_req_tmp_if), @@ -134,14 +134,14 @@ module VX_issue #( ); VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `FPU_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `FRM_BITS) + .N(`NUM_THREADS +`NW_BITS + 32 + `FPU_BITS + 1 + `NR_BITS + 1 + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `FRM_BITS) ) fpu_reg ( .clk (clk), .reset (reset), .stall (stall_fpu), .flush (flush_fpu), - .in ({fpu_req_tmp_if.valid, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.wb, fpu_req_tmp_if.rd, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data, fpu_req_tmp_if.rs3_data, fpu_req_tmp_if.frm}), - .out ({fpu_req_if.valid, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.fpu_op, fpu_req_if.wb, fpu_req_if.rd, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data, fpu_req_if.frm}) + .in ({fpu_req_tmp_if.valid, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.wb, fpu_req_tmp_if.rd, fpu_req_tmp_if.rd_is_fp, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data, fpu_req_tmp_if.rs3_data, fpu_req_tmp_if.frm}), + .out ({fpu_req_if.valid, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.fpu_op, fpu_req_if.wb, fpu_req_if.rd, fpu_req_if.rd_is_fp, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data, fpu_req_if.frm}) ); VX_generic_register #( diff --git a/hw/rtl/VX_issue_mux.v b/hw/rtl/VX_issue_mux.v deleted file mode 100644 index 68ec6159..00000000 --- a/hw/rtl/VX_issue_mux.v +++ /dev/null @@ -1,90 +0,0 @@ -`include "VX_define.vh" - -module VX_issue_mux ( - // inputs - VX_decode_if decode_if, - VX_gpr_data_if gpr_data_if, - - // outputs - VX_alu_req_if alu_req_if, - VX_lsu_req_if lsu_req_if, - VX_csr_req_if csr_req_if, - VX_mul_req_if mul_req_if, - VX_fpu_req_if fpu_req_if, - VX_gpu_req_if gpu_req_if -); - - wire[`NUM_THREADS-1:0] is_alu = {`NUM_THREADS{decode_if.ex_type == `EX_ALU}}; - wire[`NUM_THREADS-1:0] is_lsu = {`NUM_THREADS{decode_if.ex_type == `EX_LSU}}; - wire[`NUM_THREADS-1:0] is_csr = {`NUM_THREADS{decode_if.ex_type == `EX_CSR}}; - wire[`NUM_THREADS-1:0] is_mul = {`NUM_THREADS{decode_if.ex_type == `EX_MUL}}; - wire[`NUM_THREADS-1:0] is_fpu = {`NUM_THREADS{decode_if.ex_type == `EX_FPU}}; - wire[`NUM_THREADS-1:0] is_gpu = {`NUM_THREADS{decode_if.ex_type == `EX_GPU}}; - - // ALU unit - assign alu_req_if.valid = decode_if.valid & is_alu; - assign alu_req_if.warp_num = decode_if.warp_num; - assign alu_req_if.curr_PC = decode_if.curr_PC; - assign alu_req_if.alu_op = `ALU_OP(decode_if.instr_op); - assign alu_req_if.rd = decode_if.rd; - assign alu_req_if.wb = decode_if.wb; - assign alu_req_if.rs1_data = gpr_data_if.rs1_data; - assign alu_req_if.rs2_data = gpr_data_if.rs2_data; - assign alu_req_if.offset = decode_if.imm; - assign alu_req_if.next_PC = decode_if.next_PC; - - // LSU unit - assign lsu_req_if.valid = decode_if.valid & is_lsu; - assign lsu_req_if.warp_num = decode_if.warp_num; - assign lsu_req_if.curr_PC = decode_if.curr_PC; - assign lsu_req_if.base_addr = gpr_data_if.rs1_data; - assign lsu_req_if.store_data = gpr_data_if.rs2_data; - assign lsu_req_if.offset = decode_if.imm; - assign lsu_req_if.rw = `LSU_RW(decode_if.instr_op); - assign lsu_req_if.byteen = `LSU_BE(decode_if.instr_op); - assign lsu_req_if.rd = decode_if.rd; - assign lsu_req_if.wb = decode_if.wb; - - // CSR unit - assign csr_req_if.valid = decode_if.valid & is_csr; - assign csr_req_if.warp_num = decode_if.warp_num; - assign csr_req_if.curr_PC = decode_if.curr_PC; - assign csr_req_if.csr_op = `CSR_OP(decode_if.instr_op); - assign csr_req_if.csr_addr = decode_if.imm[`CSR_ADDR_SIZE-1:0]; - assign csr_req_if.csr_mask = decode_if.rs2_is_imm ? 32'(decode_if.rs1) : gpr_data_if.rs1_data[0]; - assign csr_req_if.rd = decode_if.rd; - assign csr_req_if.wb = decode_if.wb; - assign csr_req_if.is_io = 1'b0; - - // MUL unit - assign mul_req_if.valid = decode_if.valid & is_mul; - assign mul_req_if.warp_num = decode_if.warp_num; - assign mul_req_if.curr_PC = decode_if.curr_PC; - assign mul_req_if.mul_op = `MUL_OP(decode_if.instr_op); - assign mul_req_if.rs1_data = gpr_data_if.rs1_data; - assign mul_req_if.rs2_data = gpr_data_if.rs2_data; - assign mul_req_if.rd = decode_if.rd; - assign mul_req_if.wb = decode_if.wb; - - // FPU unit - assign fpu_req_if.valid = decode_if.valid & is_fpu; - assign fpu_req_if.warp_num = decode_if.warp_num; - assign fpu_req_if.curr_PC = decode_if.curr_PC; - assign fpu_req_if.fpu_op = `FPU_OP(decode_if.instr_op); - assign fpu_req_if.rs1_data = gpr_data_if.rs1_data; - assign fpu_req_if.rs2_data = gpr_data_if.rs2_data; - assign fpu_req_if.rs3_data = gpr_data_if.rs3_data; - assign fpu_req_if.frm = decode_if.frm; - assign fpu_req_if.rd = decode_if.rd; - assign fpu_req_if.wb = decode_if.wb; - - // GPU unit - assign gpu_req_if.valid = decode_if.valid & is_gpu; - assign gpu_req_if.warp_num = decode_if.warp_num; - assign gpu_req_if.curr_PC = decode_if.curr_PC; - assign gpu_req_if.gpu_op = `GPU_OP(decode_if.instr_op); - assign gpu_req_if.rs1_data = gpr_data_if.rs1_data; - assign gpu_req_if.rs2_data = gpr_data_if.rs2_data[0]; - assign gpu_req_if.next_PC = decode_if.next_PC; - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 886e17bd..06ea3a53 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -81,7 +81,7 @@ module VX_lsu_unit #( reg [`NUM_THREADS-1:0] mem_rsp_mask[`DCREQ_SIZE-1:0]; - wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_write_addr, dbg_mrq_write_addr; + wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_write_addr; wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset; wire [`BYTEEN_BITS-1:0] core_rsp_mem_read; @@ -97,18 +97,18 @@ module VX_lsu_unit #( wire mrq_pop = mrq_pop_part && (0 == mem_rsp_mask_upd); VX_index_queue #( - .DATAW (`LOG2UP(`DCREQ_SIZE) + 32 + 1 + (`NUM_THREADS * 2) + `BYTEEN_BITS + `NR_BITS + `NW_BITS), + .DATAW (32 + 1 + (`NUM_THREADS * 2) + `BYTEEN_BITS + `NR_BITS + `NW_BITS), .SIZE (`DCREQ_SIZE) ) mem_req_queue ( .clk (clk), .reset (reset), - .write_data ({mrq_write_addr, use_pc, use_wb, use_req_offset, mem_byteen, use_rd, use_warp_num}), + .write_data ({use_pc, use_wb, use_req_offset, mem_byteen, use_rd, use_warp_num}), .write_addr (mrq_write_addr), .push (mrq_push), .full (mrq_full), .pop (mrq_pop), .read_addr (mrq_read_addr), - .read_data ({dbg_mrq_write_addr, lsu_commit_if.curr_PC, lsu_commit_if.wb, mem_rsp_offset, core_rsp_mem_read, lsu_commit_if.rd, lsu_commit_if.warp_num}), + .read_data ({lsu_commit_if.curr_PC, lsu_commit_if.wb, mem_rsp_offset, core_rsp_mem_read, lsu_commit_if.rd, lsu_commit_if.warp_num}), `UNUSED_PIN (empty) ); @@ -117,8 +117,7 @@ module VX_lsu_unit #( mem_rsp_mask[mrq_write_addr] <= use_valid; end if (mrq_pop_part) begin - mem_rsp_mask[mrq_read_addr] <= mem_rsp_mask_upd; - assert(($time < 2) || mrq_read_addr == dbg_mrq_write_addr); + mem_rsp_mask[mrq_read_addr] <= mem_rsp_mask_upd; end end diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 4670c224..9ec58aa4 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -75,7 +75,7 @@ module VX_mul_unit #( default: alu_result[i] = alu_in1[i] + alu_in2[i]; // ADD, LUI, AUIPC, FENCE endcase end - end + end wire stall; diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index ea4e2e92..23c21ab9 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -119,7 +119,7 @@ module VX_pipeline #( VX_commit_if lsu_commit_if(); VX_commit_if csr_commit_if(); VX_commit_if mul_commit_if(); - VX_commit_if fpu_commit_if(); + VX_commit_fp_if fpu_commit_if(); VX_commit_if gpu_commit_if(); VX_fetch #( diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index ec49f26a..f20b8b87 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -20,14 +20,17 @@ module VX_scheduler #( ); localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); - reg [`NUM_REGS-1:0][`NUM_THREADS-1:0] rename_table [`NUM_WARPS-1:0]; - reg [`NUM_REGS-1:0] busy_table [`NUM_WARPS-1:0]; - reg [CTVW-1:0] count_valid; + reg [`NUM_THREADS-1:0] rename_table [`NUM_WARPS-1:0][(`NUM_REGS*2)-1:0]; + reg busy_table [`NUM_WARPS-1:0][(`NUM_REGS*2)-1:0]; + reg [CTVW-1:0] count_valid; + + reg [`NR_BITS:0] read_rd = {decode_if.rd_is_fp, decode_if.rd}; + reg [`NR_BITS:0] write_rd = {writeback_if.rd_is_fp, writeback_if.rd}; - wire rs1_rename = busy_table[decode_if.warp_num][decode_if.rs1]; - wire rs2_rename = busy_table[decode_if.warp_num][decode_if.rs2]; - wire rs3_rename = busy_table[decode_if.warp_num][decode_if.rs3]; - wire rd_rename = busy_table[decode_if.warp_num][decode_if.rd]; + wire rs1_rename = busy_table[decode_if.warp_num][{decode_if.rs1_is_fp, decode_if.rs1}]; + wire rs2_rename = busy_table[decode_if.warp_num][{decode_if.rs1_is_fp, decode_if.rs2}]; + wire rs3_rename = busy_table[decode_if.warp_num][{1'b1, decode_if.rs3}]; + wire rd_rename = busy_table[decode_if.warp_num][read_rd]; wire rs1_rename_qual = rs1_rename && decode_if.use_rs1; wire rs2_rename_qual = rs2_rename && decode_if.use_rs2; @@ -50,7 +53,7 @@ module VX_scheduler #( wire release_rd = (| writeback_if.valid); - wire [`NUM_THREADS-1:0] valid_wb_new_mask = rename_table[writeback_if.warp_num][writeback_if.rd] & ~writeback_if.valid; + wire [`NUM_THREADS-1:0] valid_wb_new_mask = rename_table[writeback_if.warp_num][write_rd] & ~writeback_if.valid; reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == valid_wb_new_mask))) ? (count_valid + 1) : (~acquire_rd && (release_rd && (0 == valid_wb_new_mask))) ? (count_valid - 1) : @@ -67,13 +70,13 @@ module VX_scheduler #( count_valid <= 0; end else begin if (acquire_rd) begin - rename_table[decode_if.warp_num][decode_if.rd] <= decode_if.valid; - busy_table[decode_if.warp_num][decode_if.rd] <= 1; + rename_table[decode_if.warp_num][read_rd] <= decode_if.valid; + busy_table[decode_if.warp_num][read_rd] <= 1; end if (release_rd) begin - assert(rename_table[writeback_if.warp_num][writeback_if.rd] != 0); - rename_table[writeback_if.warp_num][writeback_if.rd] <= valid_wb_new_mask; - busy_table[writeback_if.warp_num][writeback_if.rd] <= (| valid_wb_new_mask); + assert(rename_table[writeback_if.warp_num][write_rd] != 0); + rename_table[writeback_if.warp_num][write_rd] <= valid_wb_new_mask; + busy_table[writeback_if.warp_num][write_rd] <= (| valid_wb_new_mask); end count_valid <= count_valid_next; end diff --git a/hw/rtl/VX_scope.vh b/hw/rtl/VX_scope.vh index 4d11cd4c..2ceea369 100644 --- a/hw/rtl/VX_scope.vh +++ b/hw/rtl/VX_scope.vh @@ -145,7 +145,7 @@ wire [`NUM_THREADS-1:0] scope_writeback_valid; \ wire [`NW_BITS-1:0] scope_writeback_warp_num; \ wire [31:0] scope_writeback_curr_PC; \ - wire [`WB_BITS-1:0] scope_writeback_wb; \ + wire scope_writeback_wb; \ wire [`NR_BITS-1:0] scope_writeback_rd; \ wire [63:0] scope_writeback_data; \ wire scope_bank_valid_st0; \ @@ -224,7 +224,7 @@ output wire [`NUM_THREADS-1:0] scope_writeback_valid, \ output wire [`NW_BITS-1:0] scope_writeback_warp_num, \ output wire [31:0] scope_writeback_curr_PC, \ - output wire [`WB_BITS-1:0] scope_writeback_wb, \ + output wire scope_writeback_wb, \ output wire [`NR_BITS-1:0] scope_writeback_rd, \ output wire [63:0] scope_writeback_data, diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 4b724470..3506e33a 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -10,7 +10,7 @@ module VX_writeback #( VX_commit_if alu_commit_if, VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, - VX_commit_if fpu_commit_if, + VX_commit_fp_if fpu_commit_if, VX_commit_if csr_commit_if, // outputs @@ -26,30 +26,39 @@ module VX_writeback #( VX_wb_if writeback_tmp_if(); assign writeback_tmp_if.valid = lsu_valid ? lsu_commit_if.valid : + fpu_valid ? fpu_commit_if.valid : mul_valid ? mul_commit_if.valid : alu_valid ? alu_commit_if.valid : csr_valid ? csr_commit_if.valid : 0; assign writeback_tmp_if.warp_num = lsu_valid ? lsu_commit_if.warp_num : + fpu_valid ? fpu_commit_if.warp_num : mul_valid ? mul_commit_if.warp_num : alu_valid ? alu_commit_if.warp_num : csr_valid ? csr_commit_if.warp_num : - 0; - - assign writeback_tmp_if.data = lsu_valid ? lsu_commit_if.data : - mul_valid ? mul_commit_if.data : - alu_valid ? alu_commit_if.data : - csr_valid ? csr_commit_if.data : 0; assign writeback_tmp_if.rd = lsu_valid ? lsu_commit_if.rd : + fpu_valid ? fpu_commit_if.rd : mul_valid ? mul_commit_if.rd : alu_valid ? alu_commit_if.rd : csr_valid ? csr_commit_if.rd : 0; - assign writeback_tmp_if.is_fp = fpu_valid && fpu_commit_if.ready; + assign writeback_tmp_if.rd_is_fp = lsu_valid ? 0 : + fpu_valid ? fpu_commit_if.rd_is_fp : + mul_valid ? 0 : + alu_valid ? 0 : + csr_valid ? 0 : + 0; + + assign writeback_tmp_if.data = lsu_valid ? lsu_commit_if.data : + fpu_valid ? fpu_commit_if.data : + mul_valid ? mul_commit_if.data : + alu_valid ? alu_commit_if.data : + csr_valid ? csr_commit_if.data : + 0; wire stall = ~writeback_if.ready && (| writeback_if.valid); @@ -60,8 +69,8 @@ module VX_writeback #( .reset (reset), .stall (stall), .flush (0), - .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.rd, writeback_tmp_if.data, writeback_tmp_if.is_fp}), - .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.rd, writeback_if.data, writeback_if.is_fp}) + .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.rd, writeback_tmp_if.rd_is_fp, writeback_tmp_if.data}), + .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.rd, writeback_if.rd_is_fp, writeback_if.data}) ); assign lsu_commit_if.ready = !stall; diff --git a/hw/rtl/cache/VX_bank.v b/hw/rtl/cache/VX_bank.v index 2980274d..c99b6fb4 100644 --- a/hw/rtl/cache/VX_bank.v +++ b/hw/rtl/cache/VX_bank.v @@ -106,7 +106,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO /* verilator lint_off UNUSED */ wire[31:0] debug_use_pc_st0; - wire[`WB_BITS-1:0] debug_wb_st0; + wire debug_wb_st0; wire[`NR_BITS-1:0] debug_rd_st0; wire[`NW_BITS-1:0] debug_warp_num_st0; wire debug_rw_st0; @@ -115,7 +115,7 @@ module VX_bank #( wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st0; wire[31:0] debug_use_pc_st1e; - wire[`WB_BITS-1:0] debug_wb_st1e; + wire debug_wb_st1e; wire[`NR_BITS-1:0] debug_rd_st1e; wire[`NW_BITS-1:0] debug_warp_num_st1e; wire debug_rw_st1e; @@ -124,7 +124,7 @@ module VX_bank #( wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st1e; wire[31:0] debug_use_pc_st2; - wire[`WB_BITS-1:0] debug_wb_st2; + wire debug_wb_st2; wire[`NR_BITS-1:0] debug_rd_st2; wire[`NW_BITS-1:0] debug_warp_num_st2; wire debug_rw_st2; diff --git a/hw/rtl/cache/VX_cache.v b/hw/rtl/cache/VX_cache.v index 7184847b..2f1f3813 100644 --- a/hw/rtl/cache/VX_cache.v +++ b/hw/rtl/cache/VX_cache.v @@ -130,7 +130,7 @@ module VX_cache #( `ifdef DBG_CORE_REQ_INFO /* verilator lint_off UNUSED */ wire[31:0] debug_core_req_use_pc; - wire[`WB_BITS-1:0] debug_core_req_wb; + wire debug_core_req_wb; wire[`NR_BITS-1:0] debug_core_req_rd; wire[`NW_BITS-1:0] debug_core_req_warp_num; wire[`LOG2UP(CREQ_SIZE)-1:0] debug_core_req_idx; diff --git a/hw/rtl/cache/VX_snp_forwarder.v b/hw/rtl/cache/VX_snp_forwarder.v index 606570fd..0856ff0d 100644 --- a/hw/rtl/cache/VX_snp_forwarder.v +++ b/hw/rtl/cache/VX_snp_forwarder.v @@ -65,13 +65,13 @@ module VX_snp_forwarder #( ) snp_fwd_queue ( .clk (clk), .reset (reset), - .write_data ({sfq_write_addr, snp_req_addr, snp_req_invalidate, snp_req_tag}), + .write_data ({snp_req_addr, snp_req_invalidate, snp_req_tag}), .write_addr (sfq_write_addr), .push (sfq_push), .pop (sfq_pop), .full (sfq_full), .read_addr (sfq_read_addr), - .read_data ({dbg_sfq_write_addr, snp_rsp_addr, snp_rsp_invalidate, snp_rsp_tag}), + .read_data ({snp_rsp_addr, snp_rsp_invalidate, snp_rsp_tag}), `UNUSED_PIN (empty) ); @@ -81,7 +81,6 @@ module VX_snp_forwarder #( end if (fwdin_fire) begin pending_cntrs[sfq_read_addr] <= pending_cntrs[sfq_read_addr] - 1; - assert(sfq_read_addr == dbg_sfq_write_addr); end end diff --git a/hw/rtl/interfaces/VX_commit_if.v b/hw/rtl/interfaces/VX_commit_if.v index 457add5e..9bf12884 100644 --- a/hw/rtl/interfaces/VX_commit_if.v +++ b/hw/rtl/interfaces/VX_commit_if.v @@ -10,7 +10,7 @@ interface VX_commit_if (); wire [31:0] curr_PC; wire [`NUM_THREADS-1:0][31:0] data; wire [`NR_BITS-1:0] rd; - wire wb; + wire wb; wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_decode_if.v b/hw/rtl/interfaces/VX_decode_if.v index 12a45198..ee7b4bf1 100644 --- a/hw/rtl/interfaces/VX_decode_if.v +++ b/hw/rtl/interfaces/VX_decode_if.v @@ -27,8 +27,9 @@ interface VX_decode_if (); // FP states wire [`NR_BITS-1:0] rs3; wire use_rs3; + wire rd_is_fp; wire rs1_is_fp; - wire rs2_is_fp; + wire rs2_is_fp; wire [`FRM_BITS-1:0] frm; wire wb; diff --git a/hw/rtl/interfaces/VX_fpu_from_csr_if.v b/hw/rtl/interfaces/VX_fpu_from_csr_if.v index 9cf03d37..508d1a94 100644 --- a/hw/rtl/interfaces/VX_fpu_from_csr_if.v +++ b/hw/rtl/interfaces/VX_fpu_from_csr_if.v @@ -5,11 +5,8 @@ interface VX_fpu_from_csr_if (); -`IGNORE_WARNINGS_BEGIN - - wire [`NUM_WARPS-1:0][`FRM_BITS-1:0] frm; - -`IGNORE_WARNINGS_END + wire [`NW_BITS-1:0] warp_num; + wire [`FRM_BITS-1:0] frm; endinterface diff --git a/hw/rtl/interfaces/VX_fpu_req_if.v b/hw/rtl/interfaces/VX_fpu_req_if.v index c35f83d3..4d29fa8b 100644 --- a/hw/rtl/interfaces/VX_fpu_req_if.v +++ b/hw/rtl/interfaces/VX_fpu_req_if.v @@ -14,6 +14,7 @@ interface VX_fpu_req_if (); wire wb; wire [`NR_BITS-1:0] rd; + wire rd_is_fp; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; diff --git a/hw/rtl/interfaces/VX_fpu_to_csr_if.v b/hw/rtl/interfaces/VX_fpu_to_csr_if.v index 6d57da1d..b4471632 100644 --- a/hw/rtl/interfaces/VX_fpu_to_csr_if.v +++ b/hw/rtl/interfaces/VX_fpu_to_csr_if.v @@ -5,7 +5,6 @@ interface VX_fpu_to_csr_if (); -`IGNORE_WARNINGS_BEGIN wire valid; wire [`NW_BITS-1:0] warp_num; @@ -16,8 +15,6 @@ interface VX_fpu_to_csr_if (); wire fflags_UF; wire fflags_NX; -`IGNORE_WARNINGS_END - endinterface `endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index 9d7aaa7a..968fec13 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -8,8 +8,8 @@ interface VX_wb_if (); wire [`NUM_THREADS-1:0] valid; wire [`NW_BITS-1:0] warp_num; wire [`NR_BITS-1:0] rd; - wire [`NUM_THREADS-1:0][31:0] data; - wire is_fp; + wire rd_is_fp; + wire [`NUM_THREADS-1:0][31:0] data; wire ready; endinterface diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index c755d5d2..c24bea0a 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -17,7 +17,9 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO -INCLUDE = -I../rtl/ -I../rtl/libs -I../rtl/interfaces -I../rtl/cache -I../rtl/simulate +INCLUDE = -I../rtl/ -I../rtl/libs -I../rtl/interfaces -I../rtl/cache -I../rtl/fp_cores -I../rtl/simulate + +INCLUDE += -I../rtl/fp_cores/fpnew/src/common_cells/include -I../rtl/fp_cores/fpnew/src/common_cells/src -I../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl -I../rtl/fp_cores/fpnew/src SRCS = simulator.cpp testbench.cpp @@ -29,6 +31,8 @@ VF += --language 1800-2009 --assert -Wall -Wpedantic VF += -Wno-DECLFILENAME VF += --x-initial unique --x-assign unique VF += -exe $(SRCS) $(INCLUDE) +VF += -cc Vortex.v -top-module Vortex +VF += verilator.vlt DBG += -DVCD_OUTPUT $(DBG_FLAGS) DBG += -DDBG_CORE_REQ_INFO @@ -36,22 +40,22 @@ DBG += -DDBG_CORE_REQ_INFO THREADS ?= $(shell python3 -c 'import multiprocessing as mp; print(max(1, mp.cpu_count() // 2))') gen-s: - verilator $(VF) -DNDEBUG -cc Vortex.v $(SINGLECORE) -CFLAGS '$(CF) -DNDEBUG $(SINGLECORE)' + verilator $(VF) -DNDEBUG $(SINGLECORE) -CFLAGS '$(CF) -DNDEBUG $(SINGLECORE)' gen-sd: - verilator $(VF) -cc Vortex.v $(SINGLECORE) -CFLAGS '$(CF) -g -O0 $(DBG) $(SINGLECORE)' --trace $(DBG) + verilator $(VF) $(SINGLECORE) -CFLAGS '$(CF) -g -O0 $(DBG) $(SINGLECORE)' --trace $(DBG) gen-st: - verilator $(VF) -DNDEBUG -cc Vortex.v $(SINGLECORE) -CFLAGS '$(CF) -DNDEBUG -O2 $(SINGLECORE)' --threads $(THREADS) + verilator $(VF) -DNDEBUG $(SINGLECORE) -CFLAGS '$(CF) -DNDEBUG -O2 $(SINGLECORE)' --threads $(THREADS) gen-m: - verilator $(VF) -DNDEBUG -cc Vortex.v $(MULTICORE) -CFLAGS '$(CF) -DNDEBUG $(MULTICORE)' + verilator $(VF) -DNDEBUG $(MULTICORE) -CFLAGS '$(CF) -DNDEBUG $(MULTICORE)' gen-md: - verilator $(VF) -cc Vortex.v $(MULTICORE) -CFLAGS '$(CF) -g -O0 $(DBG) $(MULTICORE)' --trace $(DBG) + verilator $(VF) $(MULTICORE) -CFLAGS '$(CF) -g -O0 $(DBG) $(MULTICORE)' --trace $(DBG) gen-mt: - verilator $(VF) -DNDEBUG -cc Vortex.v $(MULTICORE) -CFLAGS '$(CF) -DNDEBUG -O2 $(MULTICORE)' --threads $(THREADS) + verilator $(VF) -DNDEBUG $(MULTICORE) -CFLAGS '$(CF) -DNDEBUG -O2 $(MULTICORE)' --threads $(THREADS) build-s: gen-s (cd obj_dir && make -j -f VVortex.mk) From 7c86b689778f51a27b4bae524718b427a5cf2668 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Sun, 26 Jul 2020 11:21:08 -0400 Subject: [PATCH 13/94] pipeline refactoring: centralized issue buffer --- driver/rtlsim/Makefile | 6 +- driver/rtlsim/simulator.cpp | 1 + hw/opae/vortex_afu.sv | 4 +- hw/rtl/VX_alu_unit.v | 12 +- hw/rtl/VX_commit.v | 58 ++++--- hw/rtl/VX_config.vh | 49 +++--- hw/rtl/VX_core.v | 8 +- hw/rtl/VX_csr_arb.v | 14 +- hw/rtl/VX_csr_unit.v | 20 ++- hw/rtl/VX_decode.v | 43 +++-- hw/rtl/VX_define.vh | 86 +++++++--- hw/rtl/VX_execute.v | 19 ++- hw/rtl/VX_fpu_unit.v | 57 +++---- hw/rtl/VX_gpr_fp_ctrl.v | 4 +- hw/rtl/VX_gpr_ram.v | 2 - hw/rtl/VX_gpr_stage.v | 69 +++++--- hw/rtl/VX_gpu_unit.v | 71 ++++---- hw/rtl/VX_icache_stage.v | 65 +++---- hw/rtl/VX_issue.v | 151 +++++----------- hw/rtl/VX_lsu_unit.v | 141 ++++++++------- hw/rtl/VX_mem_unit.v | 4 +- hw/rtl/VX_mul_unit.v | 161 ++++++++++-------- hw/rtl/VX_pipeline.v | 5 +- hw/rtl/VX_scheduler.v | 94 ++++++---- hw/rtl/VX_warp_sched.v | 27 ++- hw/rtl/VX_writeback.v | 88 +++++----- hw/rtl/cache/VX_bank.v | 6 +- hw/rtl/cache/VX_cache.v | 2 +- hw/rtl/cache/VX_cache_miss_resrv.v | 4 +- hw/rtl/cache/VX_snp_forwarder.v | 35 ++-- hw/rtl/cache/VX_tag_data_access.v | 54 +++--- ...g_data_structure.v => VX_tag_data_store.v} | 2 +- hw/rtl/interfaces/VX_alu_req_if.v | 11 +- hw/rtl/interfaces/VX_commit_if.v | 9 +- hw/rtl/interfaces/VX_commit_is_if.v | 43 +++++ hw/rtl/interfaces/VX_csr_req_if.v | 3 +- hw/rtl/interfaces/VX_decode_if.v | 3 +- hw/rtl/interfaces/VX_fpu_from_csr_if.v | 4 + hw/rtl/interfaces/VX_fpu_req_if.v | 12 +- hw/rtl/interfaces/VX_fpu_to_csr_if.v | 4 + hw/rtl/interfaces/VX_gpu_req_if.v | 15 +- hw/rtl/interfaces/VX_ifetch_req_if.v | 9 +- hw/rtl/interfaces/VX_ifetch_rsp_if.v | 11 +- hw/rtl/interfaces/VX_lsu_req_if.v | 12 +- hw/rtl/interfaces/VX_mul_req_if.v | 16 +- hw/rtl/interfaces/VX_warp_ctl_if.v | 7 +- hw/rtl/interfaces/VX_wb_if.v | 3 +- hw/rtl/libs/VX_cam_buffer.v | 74 ++++++++ hw/rtl/libs/VX_divide.v | 21 +-- hw/rtl/libs/VX_generic_queue.v | 8 +- hw/rtl/libs/VX_mult.v | 75 -------- hw/rtl/libs/VX_priority_encoder.v | 1 + hw/simulate/Makefile | 3 +- hw/simulate/simulator.cpp | 5 +- runtime/src/vx_intrinsics.S | 4 +- runtime/src/vx_start.S | 2 +- runtime/tests/simple/Makefile | 2 +- runtime/tests/simple/main.c | 4 +- runtime/tests/simple/tests.c | 14 +- runtime/tests/simple/vx_simple.dump | 4 +- runtime/tests/simple/vx_simple.elf | Bin 12500 -> 12500 bytes runtime/tests/simple/vx_simple.hex | 2 +- 62 files changed, 923 insertions(+), 820 deletions(-) rename hw/rtl/cache/{VX_tag_data_structure.v => VX_tag_data_store.v} (99%) create mode 100644 hw/rtl/interfaces/VX_commit_is_if.v create mode 100644 hw/rtl/libs/VX_cam_buffer.v delete mode 100644 hw/rtl/libs/VX_mult.v diff --git a/driver/rtlsim/Makefile b/driver/rtlsim/Makefile index 60061f46..38fe3d60 100644 --- a/driver/rtlsim/Makefile +++ b/driver/rtlsim/Makefile @@ -16,12 +16,12 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO -CONFIGS += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 +#CONFIGS += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 #CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=4 -DL2_ENABLE=1 #CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=2 -DL2_ENABLE=0 -#CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=1 +CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=1 -#DEBUG=1 +DEBUG=1 #AFU=1 CFLAGS += -fPIC diff --git a/driver/rtlsim/simulator.cpp b/driver/rtlsim/simulator.cpp index a0b3ad5d..6ff72603 100644 --- a/driver/rtlsim/simulator.cpp +++ b/driver/rtlsim/simulator.cpp @@ -19,6 +19,7 @@ Simulator::Simulator() { #ifdef VCD_OUTPUT Verilated::traceEverOn(true); trace_ = new VerilatedVcdC; + trace_->set_time_unit("1ns"); vortex_->trace(trace_, 99); trace_->open("trace.vcd"); #endif diff --git a/hw/opae/vortex_afu.sv b/hw/opae/vortex_afu.sv index 5f13fd77..278ee190 100644 --- a/hw/opae/vortex_afu.sv +++ b/hw/opae/vortex_afu.sv @@ -1017,8 +1017,8 @@ localparam SCOPE_SR_DEPTH = 2; wire scope_changed = (scope_icache_req_valid && scope_icache_req_ready) || (scope_icache_rsp_valid && scope_icache_rsp_ready) - || ((| scope_dcache_req_valid) && scope_dcache_req_ready) - || ((| scope_dcache_rsp_valid) && scope_dcache_rsp_ready) + || (scope_dcache_req_valid && scope_dcache_req_ready) + || (scope_dcache_rsp_valid && scope_dcache_rsp_ready) || (scope_dram_req_valid && scope_dram_req_ready) || (scope_dram_rsp_valid && scope_dram_rsp_ready) || (scope_snp_req_valid && scope_snp_req_ready) diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 15d029fe..13e7b2a1 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -53,7 +53,7 @@ module VX_alu_unit #( VX_priority_encoder #( .N(`NUM_THREADS) ) choose_alu_result ( - .data_in (alu_req_if.valid), + .data_in (alu_req_if.thread_mask), .data_out (br_result_index), `UNUSED_PIN (valid_out) ); @@ -81,11 +81,11 @@ module VX_alu_unit #( wire [31:0] br_dest = $signed(br_addr) + $signed(alu_req_if.offset); wire is_jal = (alu_op == `ALU_JAL || alu_op == `ALU_JALR); - wire is_br_valid = `IS_BR_OP(alu_op) && (| alu_req_if.valid); + wire is_br_valid = `IS_BR_OP(alu_op) && alu_req_if.valid; wire [`NUM_THREADS-1:0][31:0] alu_jal_result = is_jal ? {`NUM_THREADS{alu_req_if.next_PC}} : alu_result; - wire stall = ~alu_commit_if.ready && (| alu_commit_if.valid); + wire stall = ~alu_commit_if.ready && alu_commit_if.valid; VX_generic_register #( .N(1 + `NW_BITS + 1 + 32) @@ -99,14 +99,14 @@ module VX_alu_unit #( ); VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + 1 + (`NUM_THREADS * 32)) + .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32)) ) alu_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.rd, alu_req_if.wb, alu_jal_result}), - .out ({alu_commit_if.valid, alu_commit_if.warp_num, alu_commit_if.curr_PC, alu_commit_if.rd, alu_commit_if.wb, alu_commit_if.data}) + .in ({alu_req_if.valid, alu_req_if.issue_tag, alu_jal_result}), + .out ({alu_commit_if.valid, alu_commit_if.issue_tag, alu_commit_if.data}) ); assign alu_req_if.ready = ~stall; diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index c4e4d294..f8f842db 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -11,21 +11,22 @@ module VX_commit #( VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, VX_commit_if csr_commit_if, - VX_commit_fp_if fpu_commit_if, + VX_commit_if fpu_commit_if, VX_commit_if gpu_commit_if, // outputs + VX_commit_is_if commit_is_if, VX_wb_if writeback_if, VX_perf_cntrs_if perf_cntrs_if ); wire [`NUM_EXS-1:0] commited_mask; - assign commited_mask = {((| alu_commit_if.valid) && alu_commit_if.ready), - ((| lsu_commit_if.valid) && lsu_commit_if.ready), - ((| csr_commit_if.valid) && csr_commit_if.ready), - ((| mul_commit_if.valid) && mul_commit_if.ready), - ((| fpu_commit_if.valid) && fpu_commit_if.ready), - ((| gpu_commit_if.valid) && gpu_commit_if.ready)}; + assign commited_mask = {(alu_commit_if.valid && alu_commit_if.ready), + (lsu_commit_if.valid && lsu_commit_if.ready), + (csr_commit_if.valid && csr_commit_if.ready), + (mul_commit_if.valid && mul_commit_if.ready), + (fpu_commit_if.valid && fpu_commit_if.ready), + (gpu_commit_if.valid && gpu_commit_if.ready)}; wire [`NE_BITS:0] num_commits; @@ -55,6 +56,20 @@ module VX_commit #( assign perf_cntrs_if.total_cycles = total_cycles; assign perf_cntrs_if.total_instrs = total_instrs; + assign commit_is_if.alu_valid = alu_commit_if.valid && alu_commit_if.ready; + assign commit_is_if.lsu_valid = lsu_commit_if.valid && lsu_commit_if.ready; + assign commit_is_if.csr_valid = csr_commit_if.valid && csr_commit_if.ready; + assign commit_is_if.mul_valid = mul_commit_if.valid && mul_commit_if.ready; + assign commit_is_if.fpu_valid = fpu_commit_if.valid && fpu_commit_if.ready; + assign commit_is_if.gpu_valid = gpu_commit_if.valid && gpu_commit_if.ready; + + assign commit_is_if.alu_tag = alu_commit_if.issue_tag; + assign commit_is_if.lsu_tag = lsu_commit_if.issue_tag; + assign commit_is_if.csr_tag = csr_commit_if.issue_tag; + assign commit_is_if.mul_tag = mul_commit_if.issue_tag; + assign commit_is_if.fpu_tag = fpu_commit_if.issue_tag; + assign commit_is_if.gpu_tag = gpu_commit_if.issue_tag; + assign gpu_commit_if.ready = 1'b1; // doesn't writeback VX_writeback #( @@ -67,30 +82,31 @@ module VX_commit #( .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), - .fpu_commit_if (fpu_commit_if), + .fpu_commit_if (fpu_commit_if), + .commit_is_if (commit_is_if), .writeback_if (writeback_if) - ); + ); `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if ((| alu_commit_if.valid) && alu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=ALU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, alu_commit_if.warp_num, alu_commit_if.curr_PC, alu_commit_if.wb, alu_commit_if.rd, alu_commit_if.data); + if (alu_commit_if.valid && alu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.alu_data.warp_num, commit_is_if.alu_data.curr_PC, alu_commit_if.issue_tag, commit_is_if.alu_data.thread_mask, commit_is_if.alu_data.wb, commit_is_if.alu_data.rd, alu_commit_if.data); end - if ((| lsu_commit_if.valid) && lsu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=LSU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, lsu_commit_if.warp_num, lsu_commit_if.curr_PC, lsu_commit_if.wb, lsu_commit_if.rd, lsu_commit_if.data); + if (lsu_commit_if.valid && lsu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.lsu_data.warp_num, commit_is_if.lsu_data.curr_PC, lsu_commit_if.issue_tag, commit_is_if.lsu_data.thread_mask, commit_is_if.lsu_data.wb, commit_is_if.lsu_data.rd, lsu_commit_if.data); end - if ((| csr_commit_if.valid) && csr_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=CSR, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, csr_commit_if.warp_num, csr_commit_if.curr_PC, csr_commit_if.wb, csr_commit_if.rd, csr_commit_if.data); + if (csr_commit_if.valid && csr_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.csr_data.warp_num, commit_is_if.csr_data.curr_PC, csr_commit_if.issue_tag, commit_is_if.csr_data.thread_mask, commit_is_if.csr_data.wb, commit_is_if.csr_data.rd, csr_commit_if.data); end - if ((| mul_commit_if.valid) && mul_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.wb, mul_commit_if.rd, mul_commit_if.data); + if (mul_commit_if.valid && mul_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.mul_data.warp_num, commit_is_if.mul_data.curr_PC, mul_commit_if.issue_tag, commit_is_if.mul_data.thread_mask, commit_is_if.mul_data.wb, commit_is_if.mul_data.rd, mul_commit_if.data); end - if ((| fpu_commit_if.valid) && fpu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=FPU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, fpu_commit_if.warp_num, fpu_commit_if.curr_PC, fpu_commit_if.wb, fpu_commit_if.rd, fpu_commit_if.data); + if (fpu_commit_if.valid && fpu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.fpu_data.warp_num, commit_is_if.fpu_data.curr_PC, fpu_commit_if.issue_tag, commit_is_if.fpu_data.thread_mask, commit_is_if.fpu_data.wb, commit_is_if.fpu_data.rd, fpu_commit_if.data); end - if ((| gpu_commit_if.valid) && gpu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=GPU, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, gpu_commit_if.warp_num, gpu_commit_if.curr_PC, gpu_commit_if.wb, gpu_commit_if.rd, gpu_commit_if.data); + if (gpu_commit_if.valid && gpu_commit_if.ready) begin + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.gpu_data.warp_num, commit_is_if.gpu_data.curr_PC, gpu_commit_if.issue_tag, commit_is_if.gpu_data.thread_mask, commit_is_if.gpu_data.wb, commit_is_if.gpu_data.rd, gpu_commit_if.data); end end `endif diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index 95d23af3..bba64e50 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -39,10 +39,6 @@ `define SHARED_MEM_BASE_ADDR 32'h6FFFF000 `endif -`ifndef STACK_BASE_ADDR -`define STACK_BASE_ADDR 20'h6FFFF -`endif - `ifndef IO_BUS_BASE_ADDR `define IO_BUS_BASE_ADDR 32'hFFFFFF00 `endif @@ -59,13 +55,9 @@ `define L3_ENABLE (`NUM_CLUSTERS > 1) `endif -`ifndef EXT_M_ENABLE -`define EXT_M_ENABLE 1 -`endif +`define EXT_M_ENABLE -`ifndef EXT_F_ENABLE -`define EXT_F_ENABLE 1 -`endif +// define EXT_F_ENABLE // Configuration Values ======================================================= @@ -109,6 +101,11 @@ `define FPURQ_SIZE 8 `endif +// Size of issue queue +`ifndef ISSUEQ_SIZE +`define ISSUEQ_SIZE (8 + `NUM_WARPS) +`endif + // Dcache Configurable Knobs ================================================== // Size of cache in bytes @@ -148,12 +145,12 @@ // Dram Fill Rsp Queue Size `ifndef DDFPQ_SIZE -`define DDFPQ_SIZE 16 +`define DDFPQ_SIZE 8 `endif // Snoop Req Queue Size `ifndef DSNRQ_SIZE -`define DSNRQ_SIZE 16 +`define DSNRQ_SIZE 8 `endif // Core Writeback Queue Size @@ -173,7 +170,7 @@ // Prefetcher `ifndef DPRFQ_SIZE -`define DPRFQ_SIZE 16 +`define DPRFQ_SIZE 8 `endif `ifndef DPRFQ_STRIDE @@ -219,7 +216,7 @@ // Dram Fill Rsp Queue Size `ifndef IDFPQ_SIZE -`define IDFPQ_SIZE 16 +`define IDFPQ_SIZE 8 `endif // Core Writeback Queue Size @@ -229,7 +226,7 @@ // Dram Writeback Queue Size `ifndef IDWBQ_SIZE -`define IDWBQ_SIZE 16 +`define IDWBQ_SIZE 8 `endif // Dram Fill Req Queue Size @@ -239,7 +236,7 @@ // Prefetcher `ifndef IPRFQ_SIZE -`define IPRFQ_SIZE 16 +`define IPRFQ_SIZE 8 `endif `ifndef IPRFQ_STRIDE @@ -312,7 +309,7 @@ // Core Request Queue Size `ifndef L2CREQ_SIZE -`define L2CREQ_SIZE 16 +`define L2CREQ_SIZE 8 `endif // Miss Reserv Queue Knob @@ -322,12 +319,12 @@ // Dram Fill Rsp Queue Size `ifndef L2DFPQ_SIZE -`define L2DFPQ_SIZE 16 +`define L2DFPQ_SIZE 8 `endif // Snoop Req Queue Size `ifndef L2SNRQ_SIZE -`define L2SNRQ_SIZE 16 +`define L2SNRQ_SIZE 8 `endif // Core Writeback Queue Size @@ -337,7 +334,7 @@ // Dram Writeback Queue Size `ifndef L2DWBQ_SIZE -`define L2DWBQ_SIZE 16 +`define L2DWBQ_SIZE 8 `endif // Dram Fill Req Queue Size @@ -347,7 +344,7 @@ // Prefetcher `ifndef L2PRFQ_SIZE -`define L2PRFQ_SIZE 16 +`define L2PRFQ_SIZE 8 `endif `ifndef L2PRFQ_STRIDE @@ -383,7 +380,7 @@ // Core Request Queue Size `ifndef L3CREQ_SIZE -`define L3CREQ_SIZE 16 +`define L3CREQ_SIZE 8 `endif // Miss Reserv Queue Knob @@ -393,12 +390,12 @@ // Dram Fill Rsp Queue Size `ifndef L3DFPQ_SIZE -`define L3DFPQ_SIZE 16 +`define L3DFPQ_SIZE 8 `endif // Snoop Req Queue Size `ifndef L3SNRQ_SIZE -`define L3SNRQ_SIZE 16 +`define L3SNRQ_SIZE 8 `endif // Core Writeback Queue Size @@ -408,7 +405,7 @@ // Dram Writeback Queue Size `ifndef L3DWBQ_SIZE -`define L3DWBQ_SIZE 16 +`define L3DWBQ_SIZE 8 `endif // Dram Fill Req Queue Size @@ -418,7 +415,7 @@ // Prefetcher `ifndef L3PRFQ_SIZE -`define L3PRFQ_SIZE 16 +`define L3PRFQ_SIZE 8 `endif `ifndef L3PRFQ_STRIDE diff --git a/hw/rtl/VX_core.v b/hw/rtl/VX_core.v index 9695526b..8e4fff92 100644 --- a/hw/rtl/VX_core.v +++ b/hw/rtl/VX_core.v @@ -166,15 +166,15 @@ module VX_core #( VX_cache_core_req_if #( .NUM_REQUESTS(`INUM_REQUESTS), .WORD_SIZE(`IWORD_SIZE), - .CORE_TAG_WIDTH(`DCORE_TAG_WIDTH), - .CORE_TAG_ID_BITS(`DCORE_TAG_ID_BITS) + .CORE_TAG_WIDTH(`ICORE_TAG_WIDTH), + .CORE_TAG_ID_BITS(`ICORE_TAG_ID_BITS) ) core_icache_req_if(); VX_cache_core_rsp_if #( .NUM_REQUESTS(`INUM_REQUESTS), .WORD_SIZE(`IWORD_SIZE), - .CORE_TAG_WIDTH(`DCORE_TAG_WIDTH), - .CORE_TAG_ID_BITS(`DCORE_TAG_ID_BITS) + .CORE_TAG_WIDTH(`ICORE_TAG_WIDTH), + .CORE_TAG_ID_BITS(`ICORE_TAG_ID_BITS) ) core_icache_rsp_if(); VX_pipeline #( diff --git a/hw/rtl/VX_csr_arb.v b/hw/rtl/VX_csr_arb.v index 48dc6124..3feb03cc 100644 --- a/hw/rtl/VX_csr_arb.v +++ b/hw/rtl/VX_csr_arb.v @@ -26,7 +26,8 @@ module VX_csr_arb ( `UNUSED_VAR (reset) // requests - assign csr_req_if.valid = (~select_io_req) ? csr_core_req_if.valid : {`NUM_THREADS{csr_io_req_if.valid}}; + assign csr_req_if.valid = (~select_io_req) ? csr_core_req_if.valid : csr_io_req_if.valid; + assign csr_req_if.issue_tag = (~select_io_req) ? csr_core_req_if.issue_tag : 0; assign csr_req_if.warp_num = (~select_io_req) ? csr_core_req_if.warp_num : 0; assign csr_req_if.curr_PC = (~select_io_req) ? csr_core_req_if.curr_PC : 0; assign csr_req_if.csr_op = (~select_io_req) ? csr_core_req_if.csr_op : (csr_io_req_if.rw ? `CSR_RW : `CSR_RS); @@ -40,15 +41,12 @@ module VX_csr_arb ( assign csr_io_req_if.ready = csr_req_if.ready && select_io_req; // responses - assign csr_io_rsp_if.valid = csr_rsp_if.valid[0] & select_io_rsp; + assign csr_io_rsp_if.valid = csr_rsp_if.valid & select_io_rsp; assign csr_io_rsp_if.data = csr_rsp_if.data[0]; - assign csr_commit_if.valid = csr_rsp_if.valid & {`NUM_THREADS{~select_io_rsp}}; - assign csr_commit_if.warp_num = csr_rsp_if.warp_num; - assign csr_commit_if.curr_PC = csr_rsp_if.curr_PC; - assign csr_commit_if.data = csr_rsp_if.data; - assign csr_commit_if.rd = csr_rsp_if.rd; - assign csr_commit_if.wb = csr_rsp_if.wb; + assign csr_commit_if.valid = csr_rsp_if.valid & ~select_io_rsp; + assign csr_commit_if.issue_tag= csr_rsp_if.issue_tag; + assign csr_commit_if.data = csr_rsp_if.data; assign csr_rsp_if.ready = select_io_rsp ? csr_io_rsp_if.ready : csr_commit_if.ready; diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index 96a7973f..5e94c951 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -20,7 +20,7 @@ module VX_csr_unit #( VX_csr_req_if csr_pipe_req_if(); VX_commit_if csr_pipe_commit_if(); - wire select_io_req = (| csr_io_req_if.valid); + wire select_io_req = csr_io_req_if.valid; wire select_io_rsp; VX_csr_arb csr_arb ( @@ -44,7 +44,7 @@ module VX_csr_unit #( wire [31:0] csr_updated_data_s2; wire [31:0] csr_read_data_unqual; - wire is_csr_s2 = (| csr_pipe_commit_if.valid); + wire is_csr_s2 = csr_pipe_commit_if.valid; VX_csr_data #( .CORE_ID(CORE_ID) @@ -62,8 +62,10 @@ module VX_csr_unit #( .warp_num (csr_pipe_req_if.warp_num) ); + wire [`NW_BITS-1:0] warp_num_s2; + wire csr_hazard = (csr_addr_s2 == csr_pipe_req_if.csr_addr) - && (csr_pipe_commit_if.warp_num == csr_pipe_req_if.warp_num) + && (warp_num_s2 == csr_pipe_req_if.warp_num) && is_csr_s2; wire [31:0] csr_read_data = csr_hazard ? csr_updated_data_s2 : csr_read_data_unqual; @@ -79,24 +81,24 @@ module VX_csr_unit #( endcase end - wire stall = ~csr_pipe_commit_if.ready && (| csr_pipe_commit_if.valid); + wire stall = ~csr_pipe_commit_if.ready && csr_pipe_commit_if.valid; VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + 1 + `CSR_ADDR_SIZE + 1 + 32 + 32) + .N(1 + `ISTAG_BITS + `NW_BITS + `CSR_ADDR_SIZE + 1 + 32 + 32) ) csr_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({csr_pipe_req_if.valid, csr_pipe_req_if.warp_num, csr_pipe_req_if.curr_PC, csr_pipe_req_if.rd, csr_pipe_req_if.wb, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data, csr_updated_data}), - .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.warp_num, csr_pipe_commit_if.curr_PC, csr_pipe_commit_if.rd, csr_pipe_commit_if.wb, csr_addr_s2, select_io_rsp, csr_read_data_s2, csr_updated_data_s2}) + .in ({csr_pipe_req_if.valid, csr_pipe_req_if.issue_tag, csr_pipe_req_if.warp_num, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data, csr_updated_data}), + .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.issue_tag, warp_num_s2, csr_addr_s2, select_io_rsp, csr_read_data_s2, csr_updated_data_s2}) ); genvar i; for (i = 0; i < `NUM_THREADS; i++) begin assign csr_pipe_commit_if.data[i] = (csr_addr_s2 == `CSR_LTID) ? i : - (csr_addr_s2 == `CSR_GTID) ? (csr_read_data_s2 * `NUM_THREADS + i) : - csr_read_data_s2; + (csr_addr_s2 == `CSR_GTID) ? (csr_read_data_s2 * `NUM_THREADS + i) : + csr_read_data_s2; end assign csr_pipe_req_if.ready = ~stall; diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 96b39503..61e50417 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -15,7 +15,7 @@ module VX_decode #( VX_wstall_if wstall_if, VX_join_if join_if ); - wire in_valid = (| ifetch_rsp_if.valid); + wire in_valid = ifetch_rsp_if.valid; wire [31:0] instr = ifetch_rsp_if.instr; reg [`ALU_BITS-1:0] alu_op; @@ -167,9 +167,8 @@ module VX_decode #( end // MUL - +`ifdef EXT_M_ENABLE wire is_mul = is_rtype && (func7 == 7'h1); - always @(*) begin mul_op = `MUL_MUL; case (func3) @@ -184,9 +183,15 @@ module VX_decode #( default:; endcase end +`else + wire is_mul = 0; + always @(*) begin + mul_op = `MUL_MUL; + end +`endif // FPU - +`ifdef EXT_F_ENABLE wire is_fl = (opcode == `INST_FL) && ((func3 == 2)); wire is_fs = (opcode == `INST_FS) && ((func3 == 2)); wire is_fci = (opcode == `INST_FCI); @@ -226,6 +231,15 @@ module VX_decode #( endcase end end +`else + wire is_fs = 0; + wire is_fci = 0; + wire is_fr4 = 0; + wire is_fpu = 0; + always @(*) begin + fpu_op = `FPU_OTHER; + end +`endif // GPU @@ -243,10 +257,11 @@ module VX_decode #( VX_decode_if decode_tmp_if(); - assign decode_tmp_if.valid = ifetch_rsp_if.valid; - assign decode_tmp_if.warp_num = ifetch_rsp_if.warp_num; - assign decode_tmp_if.curr_PC = ifetch_rsp_if.curr_PC; - assign decode_tmp_if.next_PC = ifetch_rsp_if.curr_PC + 32'h4; + assign decode_tmp_if.valid = ifetch_rsp_if.valid; + assign decode_tmp_if.warp_num = ifetch_rsp_if.warp_num; + assign decode_tmp_if.thread_mask= ifetch_rsp_if.thread_mask; + assign decode_tmp_if.curr_PC = ifetch_rsp_if.curr_PC; + assign decode_tmp_if.next_PC = ifetch_rsp_if.curr_PC + 32'h4; assign decode_tmp_if.ex_type = is_lsu ? `EX_LSU : is_csr ? `EX_CSR : @@ -299,29 +314,29 @@ module VX_decode #( assign wstall_if.wstall = in_valid && (is_btype || is_jal || is_jalr || (is_gpu && (gpu_op == `GPU_TMC || gpu_op == `GPU_SPLIT || gpu_op == `GPU_BAR))); assign wstall_if.warp_num = ifetch_rsp_if.warp_num; - wire stall = ~decode_if.ready && (| decode_if.valid); + wire stall = ~decode_if.ready && decode_if.valid; VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + 1 + `FRM_BITS) + .N(1 + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + 1 + 1 + `FRM_BITS) ) decode_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.frm}), - .out ({decode_if.valid, decode_if.warp_num, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm}) + .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.rd_is_fp, decode_tmp_if.frm}), + .out ({decode_if.valid, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.rd_is_fp, decode_if.frm}) ); assign ifetch_rsp_if.ready = ~stall; `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if ((| decode_tmp_if.valid) && ~stall) begin + if (decode_tmp_if.valid && ~stall) begin $write("%t: Core%0d-Decode: warp=%0d, PC=%0h, ex=", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC); print_ex_type(decode_tmp_if.ex_type); $write(", op="); print_instr_op(decode_tmp_if.ex_type, decode_tmp_if.instr_op); - $write(", wb=%b, rd=%0d, rs1=%0d, rs2=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b\n", decode_tmp_if.wb, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2); + $write(", tmask=%b, wb=%b, rd=%0d, rd_is_fp=%b, rs1=%0d, rs2=%0d, rs3=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b, use_rs3=%b\n", decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, decode_tmp_if.rd_is_fp, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.rs3, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.use_rs3); // trap unsupported instructions assert(~(~stall && (decode_tmp_if.ex_type == `EX_ALU) && `ALU_OP(decode_tmp_if.instr_op) == `ALU_OTHER)); diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 841df9a3..04562647 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -27,12 +27,14 @@ /* verilator lint_off PINCONNECTEMPTY */ \ /* verilator lint_off WIDTH */ \ /* verilator lint_off UNOPTFLAT */ \ + /* verilator lint_off UNDRIVEN */ \ /* verilator lint_off DECLFILENAME */ `define IGNORE_WARNINGS_END /* verilator lint_on UNUSED */ \ /* verilator lint_on PINCONNECTEMPTY */ \ /* verilator lint_on WIDTH */ \ /* verilator lint_on UNOPTFLAT */ \ + /* verilator lint_on UNDRIVEN */ \ /* verilator lint_on DECLFILENAME */ `define UNUSED_VAR(x) /* verilator lint_off UNUSED */ \ @@ -50,6 +52,9 @@ if (!(cond)) $error(msg); \ endgenerate +`define ENABLE_TRACING /* verilator tracing_on */ +`define DISABLE_TRACING /* verilator tracing_off */ + `define CLOG2(x) $clog2(x) `define FLOG2(x) ($clog2(x) - (((1 << $clog2(x)) > (x)) ? 1 : 0)) `define LOG2UP(x) (((x) > 1) ? $clog2(x) : 1) @@ -80,8 +85,9 @@ `define CSR_WIDTH 12 -`define LATENCY_IDIV 21 +`define ISTAG_BITS `LOG2UP(`ISSUEQ_SIZE) +`define LATENCY_IDIV 21 `define LATENCY_IMUL 2 `define LATENCY_FMULADD 2 @@ -259,19 +265,31 @@ /////////////////////////////////////////////////////////////////////////////// +`ifdef EXT_M_ENABLE + `define ISA_EXT_M (1 << 12) +`else + `define ISA_EXT_M 0 +`endif + +`ifdef EXT_F_ENABLE + `define ISA_EXT_F (1 << 5) +`else + `define ISA_EXT_F 0 +`endif + `define ISA_CODE (0 << 0) // A - Atomic Instructions extension \ | (0 << 1) // B - Tentatively reserved for Bit operations extension \ | (0 << 2) // C - Compressed extension \ | (0 << 3) // D - Double precsision floating-point extension \ | (0 << 4) // E - RV32E base ISA \ - | (`EXT_F_ENABLE << 5) // F - Single precsision floating-point extension \ + |`ISA_EXT_F // F - Single precsision floating-point extension \ | (0 << 6) // G - Additional standard extensions present \ | (0 << 7) // H - Hypervisor mode implemented \ | (1 << 8) // I - RV32I/64I/128I base ISA \ | (0 << 9) // J - Reserved \ | (0 << 10) // K - Reserved \ | (0 << 11) // L - Tentatively reserved for Bit operations extension \ - | (`EXT_M_ENABLE << 12) // M - Integer Multiply/Divide extension \ + |`ISA_EXT_M // M - Integer Multiply/Divide extension \ | (0 << 13) // N - User level interrupts supported \ | (0 << 14) // O - Reserved \ | (0 << 15) // P - Tentatively reserved for Packed-SIMD extension \ @@ -288,7 +306,7 @@ /////////////////////////////////////////////////////////////////////////////// -`ifdef DBG_CORE_REQ_INFO // pc, wb, rd, warp_num +`ifdef DBG_CORE_REQ_INFO // pc, wb, rd, warp_num `define DEBUG_CORE_REQ_MDATA_WIDTH (32 + 1 + `NR_BITS + `NW_BITS) `else `define DEBUG_CORE_REQ_MDATA_WIDTH 0 @@ -300,7 +318,7 @@ `define DCACHE_ID (((`L3_ENABLE && `L2_ENABLE) ? 2 : `L2_ENABLE ? 1 : 0) + (CORE_ID * 3) + 0) // TAG sharing enable -`define DCORE_TAG_ID_BITS `LOG2UP(`DCREQ_SIZE) +`define DCORE_TAG_ID_BITS `ISTAG_BITS // Core request tag bits `define DCORE_TAG_WIDTH (`DEBUG_CORE_REQ_MDATA_WIDTH + `DCORE_TAG_ID_BITS) @@ -335,7 +353,7 @@ `define ICORE_BYTEEN_WIDTH `DWORD_SIZE // TAG sharing enable -`define ICORE_TAG_ID_BITS `LOG2UP(`ICREQ_SIZE) +`define ICORE_TAG_ID_BITS `NW_BITS // Core request tag bits `define ICORE_TAG_WIDTH (`DEBUG_CORE_REQ_MDATA_WIDTH + `ICORE_TAG_ID_BITS) @@ -438,8 +456,6 @@ /////////////////////////////////////////////////////////////////////////////// - - task print_ex_type; input [`EX_BITS-1:0] ex; begin @@ -488,20 +504,7 @@ task print_instr_op; `ALU_DRET: $write("DRET"); default: $write("?"); endcase - end - `EX_MUL: begin - case (`MUL_BITS'(op)) - `MUL_MUL: $write("MUL"); - `MUL_MULH: $write("MULH"); - `MUL_MULHSU:$write("MULHSU"); - `MUL_MULHU: $write("MULHU"); - `MUL_DIV: $write("DIV"); - `MUL_DIVU: $write("DIVU"); - `MUL_REM: $write("REM"); - `MUL_REMU: $write("REMU"); - default: $write("?"); - endcase - end + end `EX_LSU: begin case (`LSU_BITS'(op)) `LSU_LB: $write("LB"); @@ -525,6 +528,45 @@ task print_instr_op; default: $write("?"); endcase end + `EX_MUL: begin + case (`MUL_BITS'(op)) + `MUL_MUL: $write("MUL"); + `MUL_MULH: $write("MULH"); + `MUL_MULHSU:$write("MULHSU"); + `MUL_MULHU: $write("MULHU"); + `MUL_DIV: $write("DIV"); + `MUL_DIVU: $write("DIVU"); + `MUL_REM: $write("REM"); + `MUL_REMU: $write("REMU"); + default: $write("?"); + endcase + end + `EX_FPU: begin + case (`FPU_BITS'(op)) + `FPU_ADD: $write("ADD"); + `FPU_SUB: $write("SUB"); + `FPU_MUL: $write("MUL"); + `FPU_DIV: $write("DIV"); + `FPU_SQRT: $write("SQRT"); + `FPU_MADD: $write("MADD"); + `FPU_NMSUB: $write("NMSUB"); + `FPU_NMADD: $write("NMADD"); + `FPU_SGNJ: $write("SGNJ"); + `FPU_SGNJN: $write("SGNJN"); + `FPU_SGNJX: $write("SGNJX"); + `FPU_MIN: $write("MIN"); + `FPU_MAX: $write("MAX"); + `FPU_CVTWS: $write("CVTWS"); + `FPU_CVTWUS:$write("CVTWUS"); + `FPU_CVTSW: $write("CVTSW"); + `FPU_CVTSWU:$write("CVTSWU"); + `FPU_MVXW: $write("MVXW"); + `FPU_MVWX: $write("MVWX"); + `FPU_CLASS: $write("CLASS"); + `FPU_CMP: $write("CMP"); + default: $write("?"); + endcase + end `EX_GPU: begin case (`GPU_BITS'(op)) `GPU_TMC: $write("TMC"); diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 6f9716b3..71bdba37 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -35,7 +35,7 @@ module VX_execute #( VX_commit_if lsu_commit_if, VX_commit_if csr_commit_if, VX_commit_if mul_commit_if, - VX_commit_fp_if fpu_commit_if, + VX_commit_if fpu_commit_if, VX_commit_if gpu_commit_if, output wire ebreak @@ -79,15 +79,21 @@ module VX_execute #( .csr_commit_if (csr_commit_if) ); +`ifdef EXT_M_ENABLE VX_mul_unit #( .CORE_ID(CORE_ID) ) mul_unit ( .clk (clk), .reset (reset), - .mul_req_if (mul_req_if), - .mul_commit_if (mul_commit_if) + .alu_req_if (mul_req_if), + .alu_commit_if (mul_commit_if) ); +`else + assign mul_req_if.ready = 0; + assign mul_commit_if.valid = 0; +`endif +`ifdef EXT_F_ENABLE VX_fpu_unit #( .CORE_ID(CORE_ID) ) fpu_unit ( @@ -98,6 +104,11 @@ module VX_execute #( .fpu_to_csr_if (fpu_to_csr_if), .fpu_commit_if (fpu_commit_if) ); +`else + assign fpu_req_if.ready = 0; + assign fpu_commit_if.valid = 0; + assign fpu_to_csr_if.valid = 0; +`endif VX_gpu_unit #( .CORE_ID(CORE_ID) @@ -107,7 +118,7 @@ module VX_execute #( .gpu_commit_if (gpu_commit_if) ); - assign ebreak = (| alu_req_if.valid) && (alu_req_if.alu_op == `ALU_EBREAK || alu_req_if.alu_op == `ALU_ECALL); + assign ebreak = alu_req_if.valid && (alu_req_if.alu_op == `ALU_EBREAK || alu_req_if.alu_op == `ALU_ECALL); `SCOPE_ASSIGN(scope_decode_valid, decode_if.valid); `SCOPE_ASSIGN(scope_decode_warp_num, decode_if.warp_num); diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index 4b22850b..f0622c4f 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -14,7 +14,7 @@ module VX_fpu_unit #( VX_fpu_from_csr_if fpu_from_csr_if, // outputs - VX_commit_fp_if fpu_commit_if, + VX_commit_if fpu_commit_if, VX_fpu_to_csr_if fpu_to_csr_if ); localparam FOP_BITS = fpnew_pkg::OP_BITS; @@ -98,6 +98,8 @@ module VX_fpu_unit #( assign fpu_operands = {fpu_req_if.rs3_data, fpu_req_if.rs2_data, fpu_req_if.rs1_data}; +`DISABLE_TRACING + fpnew_top #( .Features (FPU_FEATURES), .Implementation (FPU_IMPLEMENTATION), @@ -125,47 +127,28 @@ module VX_fpu_unit #( `UNUSED_PIN (busy_o) ); - wire req_push = fpu_req_if.valid && fpu_req_if.ready; - wire req_pop = fpu_out_valid && fpu_out_ready; - wire req_full; +`ENABLE_TRACING - wire [`NUM_THREADS-1:0] rsp_valid; - wire [`NW_BITS-1:0] rsp_warp_num; - wire [31:0] rsp_curr_PC; - wire rsp_wb; - wire [`NR_BITS-1:0] rsp_rd; - wire rsp_rd_is_fp; + reg [`NW_BITS-1:0] rsp_warp_num_buf [`ISSUEQ_SIZE]; - VX_index_queue #( - .DATAW (`NUM_THREADS + `NW_BITS + 32 + 1 + `NR_BITS + 1), - .SIZE (`FPURQ_SIZE) - ) fpu_req_queue ( - .clk (clk), - .reset (reset), - .write_data ({fpu_req_if.valid, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.wb, fpu_req_if.rd, fpu_req_if.rd_is_fp}), - .write_addr (fpu_in_tag), - .push (req_push), - .full (req_full), - .pop (req_pop), - .read_addr (fpu_out_tag), - .read_data ({rsp_valid, rsp_warp_num, rsp_curr_PC, rsp_wb, rsp_rd, rsp_rd_is_fp}), - `UNUSED_PIN (empty) - ); + assign fpu_in_valid = fpu_req_if.valid; + assign fpu_in_tag = fpu_req_if.issue_tag; - assign fpu_in_valid = (| fpu_req_if.valid) && ~req_full; - assign fpu_req_if.ready = fpu_in_ready && ~req_full; + always @(posedge clk) begin + if (fpu_req_if.valid && fpu_req_if.ready) begin + rsp_warp_num_buf[fpu_in_tag] <= fpu_req_if.warp_num; + end + end - assign fpu_commit_if.valid = rsp_valid & {`NUM_THREADS{fpu_out_valid}}; - assign fpu_commit_if.warp_num = rsp_warp_num; - assign fpu_commit_if.curr_PC = rsp_curr_PC; - assign fpu_commit_if.data = fpu_result; - assign fpu_commit_if.wb = rsp_wb; - assign fpu_commit_if.rd = rsp_rd; - assign fpu_commit_if.rd_is_fp = rsp_rd_is_fp; - assign fpu_out_ready = fpu_commit_if.ready; + assign fpu_req_if.ready = fpu_in_ready; - assign fpu_to_csr_if.valid = fpu_out_valid; - assign fpu_to_csr_if.warp_num = rsp_warp_num; + assign fpu_commit_if.valid = fpu_out_valid; + assign fpu_commit_if.issue_tag = fpu_out_tag; + assign fpu_commit_if.data = fpu_result; + assign fpu_out_ready = fpu_commit_if.ready; + + assign fpu_to_csr_if.valid = fpu_out_valid && fpu_req_if.ready; + assign fpu_to_csr_if.warp_num = rsp_warp_num_buf[fpu_out_tag]; assign fpu_to_csr_if.fflags_NV = fpu_status.NV; assign fpu_to_csr_if.fflags_DZ = fpu_status.DZ; assign fpu_to_csr_if.fflags_OF = fpu_status.OF; diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index 1c7407f1..46a45064 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -50,7 +50,7 @@ module VX_gpr_fp_ctrl ( if (decode_if.rs1_is_fp) begin tmp_rs1_data <= rs1_fp_data; end else begin - tmp_rs1_data <= decode_if.rs1_is_PC ? {`NUM_THREADS{decode_if.curr_PC}} : rs1_int_data; + tmp_rs1_data <= rs1_int_data; end end end @@ -63,7 +63,7 @@ module VX_gpr_fp_ctrl ( if (decode_if.rs2_is_fp) begin tmp_rs2_data <= rs2_fp_data; end else begin - tmp_rs2_data <= decode_if.rs2_is_imm ? {`NUM_THREADS{decode_if.imm}} : rs2_int_data; + tmp_rs2_data <= rs2_int_data; end end end diff --git a/hw/rtl/VX_gpr_ram.v b/hw/rtl/VX_gpr_ram.v index 8782ae7c..a9f3e50c 100644 --- a/hw/rtl/VX_gpr_ram.v +++ b/hw/rtl/VX_gpr_ram.v @@ -35,8 +35,6 @@ module VX_gpr_ram ( ram[waddr][i][3] <= wdata[i][31:24]; end end - assert(~(|we) || (waddr != 0)); // ensure r0 is never written! - assert(0 == ram[0]); end assign rs1_data = ram[rs1]; diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 37da6ed9..58885255 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -16,11 +16,10 @@ module VX_gpr_stage #( input wire schedule_delay, output wire gpr_delay ); + `UNUSED_VAR (reset) wire [`NUM_THREADS-1:0][31:0] rs1_int_data [`NUM_WARPS-1:0]; wire [`NUM_THREADS-1:0][31:0] rs2_int_data [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs1_fp_data [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs2_fp_data [`NUM_WARPS-1:0]; wire [`NUM_THREADS-1:0] we [`NUM_WARPS-1:0]; wire [`NR_BITS-1:0] raddr1; @@ -29,12 +28,10 @@ module VX_gpr_stage #( genvar i; for (i = 0; i < `NUM_WARPS; i++) begin - assign we[i] = writeback_if.valid & {`NUM_THREADS{(i == writeback_if.warp_num)}}; - - // Int GPRs + assign we[i] = writeback_if.thread_mask & {`NUM_THREADS{~writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; VX_gpr_ram gpr_int_ram ( .clk (clk), - .we (we[i] & {`NUM_THREADS{~writeback_if.rd_is_fp}}), + .we (we[i]), .waddr (writeback_if.rd), .wdata (writeback_if.data), .rs1 (raddr1), @@ -42,11 +39,18 @@ module VX_gpr_stage #( .rs1_data (rs1_int_data[i]), .rs2_data (rs2_int_data[i]) ); + end - // FP GPRs +`ifdef EXT_F_ENABLE + + wire [`NUM_THREADS-1:0][31:0] rs1_fp_data [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs2_fp_data [`NUM_WARPS-1:0]; + + for (i = 0; i < `NUM_WARPS; i++) begin + assign we[i] = writeback_if.thread_mask & {`NUM_THREADS{writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; VX_gpr_ram gpr_fp_ram ( .clk (clk), - .we (we[i] & {`NUM_THREADS{writeback_if.rd_is_fp}}), + .we (we[i]), .waddr (writeback_if.rd), .wdata (writeback_if.data), .rs1 (raddr1), @@ -54,27 +58,36 @@ module VX_gpr_stage #( .rs1_data (rs1_fp_data[i]), .rs2_data (rs2_fp_data[i]) ); - - // controller for multi-cycle read - VX_gpr_fp_ctrl VX_gpr_fp_ctrl ( - .clk (clk), - .reset (reset), - - //inputs - .decode_if (decode_if), - .rs1_int_data (rs1_int_data[i]), - .rs2_int_data (rs2_int_data[i]), - .rs1_fp_data (rs1_fp_data[i]), - .rs2_fp_data (rs2_fp_data[i]), - - // outputs - .raddr1 (raddr1), - .raddr2 (raddr2), - .gpr_data_if (gpr_data_if), - .schedule_delay (schedule_delay), - .gpr_delay (gpr_delay) - ); end + + VX_gpr_fp_ctrl VX_gpr_fp_ctrl ( + .clk (clk), + .reset (reset), + + //inputs + .decode_if (decode_if), + .rs1_int_data (rs1_int_data[decode_if.warp_num]), + .rs2_int_data (rs2_int_data[decode_if.warp_num]), + .rs1_fp_data (rs1_fp_data[decode_if.warp_num]), + .rs2_fp_data (rs2_fp_data[decode_if.warp_num]), + + // outputs + .raddr1 (raddr1), + .raddr2 (raddr2), + .gpr_data_if (gpr_data_if), + .schedule_delay (schedule_delay), + .gpr_delay (gpr_delay) + ); + +`else + assign raddr1 = decode_if.rs1; + assign raddr2 = decode_if.rs2; + assign gpr_data_if.rs1_data = rs1_int_data[decode_if.warp_num]; + assign gpr_data_if.rs2_data = rs2_int_data[decode_if.warp_num]; + assign gpr_data_if.rs3_data = 0; + assign gpr_delay = 0; + `UNUSED_VAR (schedule_delay) +`endif assign writeback_if.ready = 1'b1; diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index 9730fdd2..208193d6 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -10,52 +10,53 @@ module VX_gpu_unit #( VX_warp_ctl_if warp_ctl_if, VX_commit_if gpu_commit_if ); - wire [`NUM_THREADS-1:0] curr_valids = gpu_req_if.valid; + wire is_wspawn = (gpu_req_if.gpu_op == `GPU_WSPAWN); wire is_tmc = (gpu_req_if.gpu_op == `GPU_TMC); wire is_split = (gpu_req_if.gpu_op == `GPU_SPLIT); wire is_bar = (gpu_req_if.gpu_op == `GPU_BAR); - wire [`NUM_THREADS-1:0] tmc_new_mask; + wire gpu_req_fire = gpu_req_if.valid && gpu_commit_if.ready; + + assign warp_ctl_if.warp_num = gpu_req_if.warp_num; + + // tmc genvar i; - for (i = 0; i < `NUM_THREADS; i++) begin : tmc_new_mask_init + + wire [`NUM_THREADS-1:0] tmc_new_mask; + for (i = 0; i < `NUM_THREADS; i++) begin assign tmc_new_mask[i] = (i < gpu_req_if.rs1_data[0]); - end + end + assign warp_ctl_if.change_mask = is_tmc && gpu_req_fire; + assign warp_ctl_if.thread_mask = tmc_new_mask; - wire valid_inst = (| curr_valids); - - assign warp_ctl_if.warp_num = gpu_req_if.warp_num; + // barrier - assign warp_ctl_if.change_mask = is_tmc && valid_inst; - assign warp_ctl_if.thread_mask = is_tmc ? tmc_new_mask : 0; - - assign warp_ctl_if.whalt = warp_ctl_if.change_mask && (0 == warp_ctl_if.thread_mask); - - wire wspawn = is_wspawn && valid_inst; - wire [31:0] wspawn_pc = gpu_req_if.rs2_data; - wire [`NUM_WARPS-1:0] wspawn_new_active; - - for (i = 0; i < `NUM_WARPS; i++) begin : wspawn_new_active_init - assign wspawn_new_active[i] = (i < gpu_req_if.rs1_data[0]); - end - - assign warp_ctl_if.is_barrier = is_bar && valid_inst; + assign warp_ctl_if.is_barrier = is_bar && gpu_req_fire; assign warp_ctl_if.barrier_id = gpu_req_if.rs1_data[0][`NB_BITS-1:0]; + assign warp_ctl_if.barrier_num_warps = (`NW_BITS+1)'(gpu_req_if.rs2_data - 1); - assign warp_ctl_if.num_warps = (`NW_BITS+1)'(gpu_req_if.rs2_data - 1); + // wspawn - assign warp_ctl_if.wspawn = wspawn; - assign warp_ctl_if.wspawn_pc = wspawn_pc; - assign warp_ctl_if.wspawn_new_active = wspawn_new_active; + wire [31:0] wspawn_pc = gpu_req_if.rs2_data; + wire [`NUM_WARPS-1:0] wspawn_wmask; + for (i = 0; i < `NUM_WARPS; i++) begin + assign wspawn_wmask[i] = (i < gpu_req_if.rs1_data[0]); + end + assign warp_ctl_if.wspawn = is_wspawn && gpu_req_fire; + assign warp_ctl_if.wspawn_pc = wspawn_pc; + assign warp_ctl_if.wspawn_wmask = wspawn_wmask; + + // split wire[`NUM_THREADS-1:0] split_new_use_mask; wire[`NUM_THREADS-1:0] split_new_later_mask; for (i = 0; i < `NUM_THREADS; i++) begin : masks_init wire curr_bool = (gpu_req_if.rs1_data[i] == 32'b1); - assign split_new_use_mask[i] = curr_valids[i] & (curr_bool); - assign split_new_later_mask[i] = curr_valids[i] & (!curr_bool); + assign split_new_use_mask[i] = gpu_req_if.thread_mask[i] & (curr_bool); + assign split_new_later_mask[i] = gpu_req_if.thread_mask[i] & (!curr_bool); end wire [`NT_BITS:0] num_valids; @@ -63,24 +64,20 @@ module VX_gpu_unit #( VX_countones #( .N(`NUM_THREADS) ) valids_counter ( - .valids(curr_valids), + .valids(gpu_req_if.thread_mask), .count (num_valids) ); - assign warp_ctl_if.is_split = is_split && (num_valids > 1); + assign warp_ctl_if.is_split = is_split && (num_valids > 1) && gpu_req_fire; assign warp_ctl_if.do_split = (split_new_use_mask != 0) && (split_new_use_mask != {`NUM_THREADS{1'b1}}); assign warp_ctl_if.split_new_mask = split_new_use_mask; assign warp_ctl_if.split_later_mask = split_new_later_mask; assign warp_ctl_if.split_save_pc = gpu_req_if.next_PC; + // commit + assign gpu_commit_if.valid = gpu_req_if.valid; + assign gpu_commit_if.issue_tag = gpu_req_if.issue_tag; + assign gpu_commit_if.data = 0; assign gpu_req_if.ready = gpu_commit_if.ready; - // commit - assign gpu_commit_if.valid = gpu_req_if.valid; - assign gpu_commit_if.warp_num = gpu_req_if.warp_num; - assign gpu_commit_if.curr_PC = gpu_req_if.curr_PC; - assign gpu_commit_if.wb = 0; - assign gpu_commit_if.rd = 0; - assign gpu_commit_if.data = 0; - endmodule \ No newline at end of file diff --git a/hw/rtl/VX_icache_stage.v b/hw/rtl/VX_icache_stage.v index e2be9f37..525aa220 100644 --- a/hw/rtl/VX_icache_stage.v +++ b/hw/rtl/VX_icache_stage.v @@ -18,61 +18,46 @@ module VX_icache_stage #( // reponse VX_ifetch_rsp_if ifetch_rsp_if ); + `UNUSED_VAR (reset) - reg [`NUM_THREADS-1:0] valid_threads [`NUM_WARPS-1:0]; + reg [31:0] rsp_curr_PC_buf [`NUM_WARPS-1:0]; + reg [`NUM_THREADS-1:0] rsp_thread_mask_buf [`NUM_WARPS-1:0]; - wire valid_inst = (| ifetch_req_if.valid); - - wire [`LOG2UP(`ICREQ_SIZE)-1:0] mrq_write_addr, mrq_read_addr; - wire mrq_full; - - wire mrq_push = icache_req_if.valid && icache_req_if.ready; - wire mrq_pop = icache_rsp_if.valid && icache_rsp_if.ready; - - assign mrq_read_addr = icache_rsp_if.tag[0][`LOG2UP(`ICREQ_SIZE)-1:0]; - - VX_index_queue #( - .DATAW (32 + `NW_BITS), - .SIZE (`ICREQ_SIZE) - ) mem_req_queue ( - .clk (clk), - .reset (reset), - .write_data ({ifetch_req_if.curr_PC, ifetch_req_if.warp_num}), - .write_addr (mrq_write_addr), - .push (mrq_push), - .full (mrq_full), - .pop (mrq_pop), - .read_addr (mrq_read_addr), - .read_data ({ifetch_rsp_if.curr_PC, ifetch_rsp_if.warp_num}), - `UNUSED_PIN (empty) - ); + wire icache_req_fire = icache_req_if.valid && icache_req_if.ready; + + wire [`NW_BITS-1:0] req_tag = ifetch_req_if.warp_num; + wire [`NW_BITS-1:0] rsp_tag = icache_rsp_if.tag[0][`NW_BITS-1:0]; always @(posedge clk) begin - if (mrq_push) begin - valid_threads[ifetch_req_if.warp_num] <= ifetch_req_if.valid; - end - end + if (icache_req_fire) begin + rsp_curr_PC_buf[req_tag] <= ifetch_req_if.curr_PC; + rsp_thread_mask_buf[req_tag] <= ifetch_req_if.thread_mask; + end + end // Icache Request - assign icache_req_if.valid = valid_inst && !mrq_full; + assign icache_req_if.valid = ifetch_req_if.valid; assign icache_req_if.rw = 0; assign icache_req_if.byteen = 4'b1111; assign icache_req_if.addr = ifetch_req_if.curr_PC[31:2]; assign icache_req_if.data = 0; - // Can't accept new request - assign ifetch_req_if.ready = !mrq_full && icache_req_if.ready; + // Can accept new request? + assign ifetch_req_if.ready = icache_req_if.ready; `ifdef DBG_CORE_REQ_INFO - assign icache_req_if.tag = {ifetch_req_if.curr_PC, 1'b0, 5'b0, ifetch_req_if.warp_num, mrq_write_addr}; + assign icache_req_if.tag = {ifetch_req_if.curr_PC, 1'b0, 5'b0, ifetch_req_if.warp_num, req_tag}; `else - assign icache_req_if.tag = mrq_write_addr; + assign icache_req_if.tag = req_tag; `endif - assign ifetch_rsp_if.valid = icache_rsp_if.valid ? valid_threads[ifetch_rsp_if.warp_num] : 0; - assign ifetch_rsp_if.instr = icache_rsp_if.data[0]; + assign ifetch_rsp_if.valid = icache_rsp_if.valid; + assign ifetch_rsp_if.warp_num = rsp_tag; + assign ifetch_rsp_if.thread_mask = rsp_thread_mask_buf[rsp_tag]; + assign ifetch_rsp_if.curr_PC = rsp_curr_PC_buf[rsp_tag]; + assign ifetch_rsp_if.instr = icache_rsp_if.data[0]; - // Can't accept new response + // Can accept new response? assign icache_rsp_if.ready = ifetch_rsp_if.ready; `SCOPE_ASSIGN(scope_icache_req_valid, icache_req_if.valid); @@ -89,10 +74,10 @@ module VX_icache_stage #( `ifdef DBG_PRINT_CORE_ICACHE always @(posedge clk) begin if (icache_req_if.valid && icache_req_if.ready) begin - $display("%t: I$%0d req: tag=%0h, PC=%0h, warp=%0d", $time, CORE_ID, mrq_write_addr, ifetch_req_if.curr_PC, ifetch_req_if.warp_num); + $display("%t: I$%0d req: warp=%0d, PC=%0h", $time, CORE_ID, ifetch_req_if.warp_num, ifetch_req_if.curr_PC); end if (icache_rsp_if.valid && icache_rsp_if.ready) begin - $display("%t: I$%0d rsp: tag=%0h, PC=%0h, warp=%0d, instr=%0h", $time, CORE_ID, mrq_read_addr, ifetch_rsp_if.curr_PC, ifetch_rsp_if.warp_num, ifetch_rsp_if.instr); + $display("%t: I$%0d rsp: warp=%0d, PC=%0h, instr=%0h", $time, CORE_ID, ifetch_rsp_if.warp_num, ifetch_req_if.curr_PC, ifetch_rsp_if.instr); end end `endif diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 3392f719..7d10193b 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -8,6 +8,7 @@ module VX_issue #( VX_decode_if decode_if, VX_wb_if writeback_if, + VX_commit_is_if commit_is_if, VX_alu_req_if alu_req_if, VX_lsu_req_if lsu_req_if, @@ -19,6 +20,7 @@ module VX_issue #( VX_gpr_data_if gpr_data_if(); wire schedule_delay; wire gpr_delay; + wire [`ISTAG_BITS-1:0] issue_tag, issue_tmp_tag; wire alu_busy = ~alu_req_if.ready; wire lsu_busy = ~lsu_req_if.ready; @@ -33,14 +35,16 @@ module VX_issue #( .clk (clk), .reset (reset), .decode_if (decode_if), - .writeback_if (writeback_if), + .writeback_if (writeback_if), + .commit_is_if (commit_is_if), .gpr_busy (gpr_delay), .alu_busy (alu_busy), .lsu_busy (lsu_busy), .csr_busy (csr_busy), .mul_busy (mul_busy), .fpu_busy (fpu_busy), - .gpu_busy (gpu_busy), + .gpu_busy (gpu_busy), + .issue_tag (issue_tag), .schedule_delay (schedule_delay), `UNUSED_PIN (is_empty) ); @@ -57,123 +61,54 @@ module VX_issue #( .gpr_delay (gpr_delay) ); - VX_alu_req_if alu_req_tmp_if(); - VX_lsu_req_if lsu_req_tmp_if(); - VX_csr_req_if csr_req_tmp_if(); - VX_mul_req_if mul_req_tmp_if(); - VX_fpu_req_if fpu_req_tmp_if(); - VX_gpu_req_if gpu_req_tmp_if(); + VX_decode_if decode_tmp_if(); + VX_gpr_data_if gpr_data_tmp_if(); + + wire stall = ~alu_req_if.ready || schedule_delay; + wire flush = alu_req_if.ready && schedule_delay; + + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + 1 + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) + ) decode_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (flush), + .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm, gpr_data_if.rs1_data, gpr_data_if.rs2_data, gpr_data_if.rs3_data}), + .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.frm, gpr_data_tmp_if.rs1_data, gpr_data_tmp_if.rs2_data, gpr_data_tmp_if.rs3_data}) + ); VX_issue_demux issue_demux ( - .decode_if (decode_if), - .gpr_data_if (gpr_data_if), - .alu_req_if (alu_req_tmp_if), - .lsu_req_if (lsu_req_tmp_if), - .csr_req_if (csr_req_tmp_if), - .mul_req_if (mul_req_tmp_if), - .fpu_req_if (fpu_req_tmp_if), - .gpu_req_if (gpu_req_tmp_if) + .decode_if (decode_tmp_if), + .gpr_data_if (gpr_data_tmp_if), + .issue_tag (issue_tmp_tag), + .alu_req_if (alu_req_if), + .lsu_req_if (lsu_req_if), + .csr_req_if (csr_req_if), + .mul_req_if (mul_req_if), + .fpu_req_if (fpu_req_if), + .gpu_req_if (gpu_req_if) ); - wire stall_alu = ~alu_req_if.ready || schedule_delay; - wire stall_lsu = ~lsu_req_if.ready || schedule_delay; - wire stall_csr = ~csr_req_if.ready || schedule_delay; - wire stall_mul = ~mul_req_if.ready || schedule_delay; - wire stall_fpu = ~fpu_req_if.ready || schedule_delay; - wire stall_gpu = ~gpu_req_if.ready || schedule_delay; - - wire flush_alu = alu_req_if.ready && schedule_delay; - wire flush_lsu = lsu_req_if.ready && schedule_delay; - wire flush_csr = csr_req_if.ready && schedule_delay; - wire flush_mul = mul_req_if.ready && schedule_delay; - wire flush_fpu = fpu_req_if.ready && schedule_delay; - wire flush_gpu = gpu_req_if.ready && schedule_delay; - - VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `ALU_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 32) - ) alu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_alu), - .flush (flush_alu), - .in ({alu_req_tmp_if.valid, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.alu_op, alu_req_tmp_if.wb, alu_req_tmp_if.rd, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.offset, alu_req_tmp_if.next_PC}), - .out ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.alu_op, alu_req_if.wb, alu_req_if.rd, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC}) - ); - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + 1 + `BYTEEN_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32) - ) lsu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_lsu), - .flush (flush_lsu), - .in ({lsu_req_tmp_if.valid, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.rw, lsu_req_tmp_if.byteen, lsu_req_tmp_if.wb, lsu_req_tmp_if.rd, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.offset, lsu_req_tmp_if.store_data}), - .out ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.wb, lsu_req_if.rd, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data}) - ); - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `CSR_BITS + 1 + `NR_BITS + `CSR_ADDR_SIZE + 32 + 1) - ) csr_reg ( - .clk (clk), - .reset (reset), - .stall (stall_csr), - .flush (flush_csr), - .in ({csr_req_tmp_if.valid, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.csr_op, csr_req_tmp_if.wb, csr_req_tmp_if.rd, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask, csr_req_tmp_if.is_io}), - .out ({csr_req_if.valid, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.csr_op, csr_req_if.wb, csr_req_if.rd, csr_req_if.csr_addr, csr_req_if.csr_mask, csr_req_if.is_io}) - ); - - VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `MUL_BITS + 1 + `NR_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) - ) mul_reg ( - .clk (clk), - .reset (reset), - .stall (stall_mul), - .flush (flush_mul), - .in ({mul_req_tmp_if.valid, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.mul_op, mul_req_tmp_if.wb, mul_req_tmp_if.rd, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data}), - .out ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.mul_op, mul_req_if.wb, mul_req_if.rd, mul_req_if.rs1_data, mul_req_if.rs2_data}) - ); - - VX_generic_register #( - .N(`NUM_THREADS +`NW_BITS + 32 + `FPU_BITS + 1 + `NR_BITS + 1 + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + `FRM_BITS) - ) fpu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_fpu), - .flush (flush_fpu), - .in ({fpu_req_tmp_if.valid, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.wb, fpu_req_tmp_if.rd, fpu_req_tmp_if.rd_is_fp, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data, fpu_req_tmp_if.rs3_data, fpu_req_tmp_if.frm}), - .out ({fpu_req_if.valid, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.fpu_op, fpu_req_if.wb, fpu_req_if.rd, fpu_req_if.rd_is_fp, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data, fpu_req_if.frm}) - ); - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `GPU_BITS + (`NUM_THREADS * 32) + 32 + 32) - ) gpu_reg ( - .clk (clk), - .reset (reset), - .stall (stall_gpu), - .flush (flush_gpu), - .in ({gpu_req_tmp_if.valid, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.curr_PC, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data, gpu_req_tmp_if.next_PC}), - .out ({gpu_req_if.valid, gpu_req_if.warp_num, gpu_req_if.curr_PC, gpu_req_if.gpu_op, gpu_req_if.rs1_data, gpu_req_if.rs2_data, gpu_req_if.next_PC}) - ); - `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if ((| alu_req_tmp_if.valid) && ~stall_alu) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, op=%0d, wb=%d, rd=%0d, rs1=%0h, rs2=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.alu_op, alu_req_tmp_if.wb, alu_req_tmp_if.rd, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.offset, alu_req_tmp_if.next_PC); + if (alu_req_if.valid && ~stall) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%d, rd=%0d, rs1_data=%0h, rs2_data=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC); end - if ((| mul_req_tmp_if.valid) && ~stall_mul) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, op=%0d, wb=%d, rd=%0d, rs1=%0h, rs2=%0h", $time, CORE_ID, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.mul_op, mul_req_tmp_if.wb, mul_req_tmp_if.rd, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data); + if (lsu_req_if.valid && ~stall) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, byteen=%b, baddr=%0h, offset=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, lsu_req_if.rw, decode_tmp_if.rd, decode_tmp_if.wb, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset); end - if ((| fpu_req_tmp_if.valid) && ~stall_fpu) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, op=%0d, wb=%d, rd=%0d, rs1=%0h, rs2=%0h", $time, CORE_ID, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.wb, fpu_req_tmp_if.rd, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data); + if (csr_req_if.valid && ~stall) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%d, rd=%0d, addr=%0h, mask=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, csr_req_if.csr_addr, csr_req_if.csr_mask); end - if ((| lsu_req_tmp_if.valid) && ~stall_lsu) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, rw=%b, wb=%0d, rd=%0d, byteen=%b, baddr=%0h, offset=%0h", $time, CORE_ID, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.rw, lsu_req_tmp_if.rd, lsu_req_tmp_if.wb, lsu_req_tmp_if.byteen, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.offset); + if (mul_req_if.valid && ~stall) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%d, rd=%0d, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, mul_req_if.rs1_data, mul_req_if.rs2_data); end - if ((| csr_req_tmp_if.valid) && ~stall_csr) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, op=%0d, wb=%d, rd=%0d, addr=%0h, mask=%0h", $time, CORE_ID, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.csr_op, csr_req_tmp_if.wb, csr_req_tmp_if.rd, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask); + if (fpu_req_if.valid && ~stall) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%d, rd=%0d, frm=%0h, rs1_data=%0h, rs2_data=%0h, rs3_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, fpu_req_if.frm, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data); end - if ((| gpu_req_tmp_if.valid) && ~stall_gpu) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=GPU, op=%0d, rs1=%0h, rs2=%0h", $time, CORE_ID, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.curr_PC, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data); + if (gpu_req_if.valid && ~stall) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, gpu_req_if.rs1_data, gpu_req_if.rs2_data); end end `endif diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 06ea3a53..7198f97a 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -19,18 +19,19 @@ module VX_lsu_unit #( VX_commit_if lsu_commit_if ); - wire [`NUM_THREADS-1:0] use_valid; + wire use_valid; + wire [`NUM_THREADS-1:0] use_thread_mask; wire use_req_rw; wire [`NUM_THREADS-1:0][29:0] use_req_addr; wire [`NUM_THREADS-1:0][1:0] use_req_offset; wire [`NUM_THREADS-1:0][3:0] use_req_byteen; wire [`NUM_THREADS-1:0][31:0] use_req_data; - wire [`BYTEEN_BITS-1:0] mem_byteen; + wire [`BYTEEN_BITS-1:0] use_req_fullbyteen; wire [`NR_BITS-1:0] use_rd; wire [`NW_BITS-1:0] use_warp_num; + wire [`ISTAG_BITS-1:0] use_issue_tag; wire use_wb; wire [31:0] use_pc; - wire mrq_full; genvar i; @@ -60,126 +61,138 @@ module VX_lsu_unit #( assign mem_req_data[i] = lsu_req_if.store_data[i] << {mem_req_offset[i], 3'b0}; end - // Can accept new request - wire stall = ~dcache_req_if.ready || mrq_full; - assign lsu_req_if.ready = ~stall; + wire store_stalled; + wire stall_in = store_stalled || ~dcache_req_if.ready; + + // Can accept new request? + assign lsu_req_if.ready = ~stall_in; `IGNORE_WARNINGS_BEGIN wire [`NUM_THREADS-1:0][31:0] use_address; `IGNORE_WARNINGS_END VX_generic_register #( - .N(`NUM_THREADS + (`NUM_THREADS * 32) + `BYTEEN_BITS + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + `NW_BITS + 1 + 32) - ) mem_req_reg ( + .N(1 + `NW_BITS + `NUM_THREADS + `ISTAG_BITS + (`NUM_THREADS * 32) + `BYTEEN_BITS + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + 1 + 32) + ) lsu_req_reg ( .clk (clk), .reset (reset), - .stall (stall), + .stall (stall_in), .flush (0), - .in ({lsu_req_if.valid, full_address, lsu_req_if.byteen, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.warp_num, lsu_req_if.wb, lsu_req_if.curr_PC}), - .out ({use_valid , use_address, mem_byteen , use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd , use_warp_num , use_wb , use_pc}) + .in ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.thread_mask, lsu_req_if.issue_tag, full_address, lsu_req_if.byteen, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.wb, lsu_req_if.curr_PC}), + .out ({use_valid, use_warp_num, use_thread_mask, use_issue_tag, use_address, use_req_fullbyteen, use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd, use_wb, use_pc}) ); - reg [`NUM_THREADS-1:0] mem_rsp_mask[`DCREQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0] mem_rsp_mask_buf [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0][1:0] mem_rsp_offset_buf [`ISSUEQ_SIZE-1:0]; + reg [`BYTEEN_BITS-1:0] mem_rsp_fullbyteen_buf [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0][31:0] mem_rsp_data_all_buf [`ISSUEQ_SIZE-1:0]; + reg [`NW_BITS-1:0] mem_rsp_warp_num_buf [`ISSUEQ_SIZE-1:0]; + reg [31:0] mem_rsp_curr_PC_buf [`ISSUEQ_SIZE-1:0]; + reg [`NR_BITS-1:0] mem_rsp_rd_buf [`ISSUEQ_SIZE-1:0]; - wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_write_addr; - wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset; - wire [`BYTEEN_BITS-1:0] core_rsp_mem_read; - - wire mrq_push = (| dcache_req_if.valid) && dcache_req_if.ready - && (0 == use_req_rw); // only push read requests + reg [`NUM_THREADS-1:0][31:0] mem_rsp_data; - wire mrq_pop_part = (| dcache_rsp_if.valid) && dcache_rsp_if.ready; - - wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_read_addr = dcache_rsp_if.tag[0][`LOG2UP(`DCREQ_SIZE)-1:0]; + wire [`ISTAG_BITS-1:0] rsp_issue_tag = dcache_rsp_if.tag[0][`ISTAG_BITS-1:0]; - wire [`NUM_THREADS-1:0] mem_rsp_mask_upd = mem_rsp_mask[mrq_read_addr] & ~dcache_rsp_if.valid; + wire [`NUM_THREADS-1:0] mem_rsp_mask = mem_rsp_mask_buf [rsp_issue_tag]; + wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset = mem_rsp_offset_buf [rsp_issue_tag]; + wire [`BYTEEN_BITS-1:0] mem_rsp_fullbyteen = mem_rsp_fullbyteen_buf [rsp_issue_tag]; + wire [`NUM_THREADS-1:0][31:0] mem_rsp_data_all = mem_rsp_data_all_buf [rsp_issue_tag]; + wire [`NW_BITS-1:0] mem_rsp_warp_num = mem_rsp_warp_num_buf [rsp_issue_tag]; + wire [31:0] mem_rsp_curr_PC = mem_rsp_curr_PC_buf [rsp_issue_tag]; + wire [`NR_BITS-1:0] mem_rsp_rd = mem_rsp_rd_buf [rsp_issue_tag]; - wire mrq_pop = mrq_pop_part && (0 == mem_rsp_mask_upd); + wire [`NUM_THREADS-1:0] mem_rsp_mask_n = mem_rsp_mask & ~dcache_rsp_if.valid; - VX_index_queue #( - .DATAW (32 + 1 + (`NUM_THREADS * 2) + `BYTEEN_BITS + `NR_BITS + `NW_BITS), - .SIZE (`DCREQ_SIZE) - ) mem_req_queue ( - .clk (clk), - .reset (reset), - .write_data ({use_pc, use_wb, use_req_offset, mem_byteen, use_rd, use_warp_num}), - .write_addr (mrq_write_addr), - .push (mrq_push), - .full (mrq_full), - .pop (mrq_pop), - .read_addr (mrq_read_addr), - .read_data ({lsu_commit_if.curr_PC, lsu_commit_if.wb, mem_rsp_offset, core_rsp_mem_read, lsu_commit_if.rd, lsu_commit_if.warp_num}), - `UNUSED_PIN (empty) - ); + wire dcache_req_fire = (| dcache_req_if.valid) && dcache_req_if.ready; + wire dcache_rsp_fire = (| dcache_rsp_if.valid) && dcache_rsp_if.ready; always @(posedge clk) begin - if (mrq_push) begin - mem_rsp_mask[mrq_write_addr] <= use_valid; + if (dcache_req_fire && (0 == use_req_rw)) begin + mem_rsp_mask_buf[use_issue_tag] <= use_thread_mask; + mem_rsp_offset_buf[use_issue_tag] <= use_req_offset; + mem_rsp_fullbyteen_buf[use_issue_tag] <= use_req_fullbyteen; + mem_rsp_data_all_buf[use_issue_tag] <= 0; + mem_rsp_warp_num_buf[use_issue_tag] <= use_warp_num; + mem_rsp_curr_PC_buf[use_issue_tag] <= use_pc; + mem_rsp_rd_buf[use_issue_tag] <= use_rd; end - if (mrq_pop_part) begin - mem_rsp_mask[mrq_read_addr] <= mem_rsp_mask_upd; + if (dcache_rsp_fire) begin + mem_rsp_mask_buf[rsp_issue_tag] <= mem_rsp_mask_n; + mem_rsp_data_all_buf[rsp_issue_tag] <= mem_rsp_data_all | mem_rsp_data; end end // Core Request - assign dcache_req_if.valid = use_valid & {`NUM_THREADS{~mrq_full}}; + assign dcache_req_if.valid = {`NUM_THREADS{use_valid && ~store_stalled}} & use_thread_mask; assign dcache_req_if.rw = {`NUM_THREADS{use_req_rw}}; assign dcache_req_if.byteen = use_req_byteen; assign dcache_req_if.addr = use_req_addr; assign dcache_req_if.data = use_req_data; `ifdef DBG_CORE_REQ_INFO - assign dcache_req_if.tag = {use_pc, use_wb, use_rd, use_warp_num, mrq_write_addr}; + assign dcache_req_if.tag = {use_pc, use_wb, use_rd, use_warp_num, use_issue_tag}; `else - assign dcache_req_if.tag = mrq_write_addr; + assign dcache_req_if.tag = use_issue_tag; `endif - // Core Response - reg [`NUM_THREADS-1:0][31:0] core_rsp_data; - + // Core Response for (i = 0; i < `NUM_THREADS; i++) begin wire [15:0] rsp_data_shifted = 16'(dcache_rsp_if.data[i] >> {mem_rsp_offset[i], 3'b0}); always @(*) begin - case (core_rsp_mem_read) - `BYTEEN_SB: core_rsp_data[i] = {{24{rsp_data_shifted[7]}}, rsp_data_shifted[7:0]}; - `BYTEEN_UB: core_rsp_data[i] = 32'(rsp_data_shifted[7:0]); - `BYTEEN_SH: core_rsp_data[i] = {{16{rsp_data_shifted[15]}}, rsp_data_shifted[15:0]}; - `BYTEEN_UH: core_rsp_data[i] = 32'(rsp_data_shifted[15:0]); - default: core_rsp_data[i] = dcache_rsp_if.data[i]; + case (mem_rsp_fullbyteen) + `BYTEEN_SB: mem_rsp_data[i] = {{24{rsp_data_shifted[7]}}, rsp_data_shifted[7:0]}; + `BYTEEN_UB: mem_rsp_data[i] = 32'(rsp_data_shifted[7:0]); + `BYTEEN_SH: mem_rsp_data[i] = {{16{rsp_data_shifted[15]}}, rsp_data_shifted[15:0]}; + `BYTEEN_UH: mem_rsp_data[i] = 32'(rsp_data_shifted[15:0]); + default: mem_rsp_data[i] = dcache_rsp_if.data[i]; endcase end end - assign lsu_commit_if.valid = dcache_rsp_if.valid; - assign lsu_commit_if.data = core_rsp_data; + wire is_store_rsp = dcache_req_fire && use_req_rw; + wire is_load_rsp = (| dcache_rsp_if.valid) && (0 == mem_rsp_mask_n); + + assign store_stalled = use_req_rw && (~lsu_commit_if.ready + || is_load_rsp); // arbitration prioritizes LOAD + + assign lsu_commit_if.valid = is_load_rsp || is_store_rsp; + assign lsu_commit_if.issue_tag = is_load_rsp ? rsp_issue_tag : use_issue_tag; + assign lsu_commit_if.data = mem_rsp_data | mem_rsp_data_all; // Can accept new cache response assign dcache_rsp_if.ready = lsu_commit_if.ready; - `SCOPE_ASSIGN(scope_dcache_req_valid, dcache_req_if.valid); - `SCOPE_ASSIGN(scope_dcache_req_warp_num, use_warp_num); - `SCOPE_ASSIGN(scope_dcache_req_curr_PC, use_pc); + // scope registration + `SCOPE_ASSIGN(scope_dcache_req_valid, dcache_req_if.valid); `SCOPE_ASSIGN(scope_dcache_req_addr, use_address); - `SCOPE_ASSIGN(scope_dcache_req_rw, core_req_rw); + `SCOPE_ASSIGN(scope_dcache_req_rw, dcache_req_if.rw ); `SCOPE_ASSIGN(scope_dcache_req_byteen,dcache_req_if.byteen); `SCOPE_ASSIGN(scope_dcache_req_data, dcache_req_if.data); `SCOPE_ASSIGN(scope_dcache_req_tag, dcache_req_if.tag); - `SCOPE_ASSIGN(scope_dcache_req_ready, dcache_req_if.ready); + `SCOPE_ASSIGN(scope_dcache_req_ready, dcache_req_if.ready); + `SCOPE_ASSIGN(scope_dcache_req_warp_num, use_warp_num); + `SCOPE_ASSIGN(scope_dcache_req_curr_PC, use_pc); `SCOPE_ASSIGN(scope_dcache_rsp_valid, dcache_rsp_if.valid); `SCOPE_ASSIGN(scope_dcache_rsp_data, dcache_rsp_if.data); `SCOPE_ASSIGN(scope_dcache_rsp_tag, dcache_rsp_if.tag); `SCOPE_ASSIGN(scope_dcache_rsp_ready, dcache_rsp_if.ready); + + `UNUSED_VAR (mem_rsp_warp_num) + `UNUSED_VAR (mem_rsp_curr_PC) + `UNUSED_VAR (mem_rsp_rd) + `UNUSED_VAR (use_wb) `ifdef DBG_PRINT_CORE_DCACHE always @(posedge clk) begin if ((| dcache_req_if.valid) && dcache_req_if.ready) begin - $display("%t: D$%0d req: valid=%b, warp=%0d, PC=%0h, addr=%0h, tag=%0h, rw=%0b, rd=%0d, byteen=%0h, data=%0h", - $time, CORE_ID, use_valid, use_warp_num, use_pc, use_address, mrq_write_addr, use_req_rw, use_rd, use_req_byteen, use_req_data); + $display("%t: D$%0d req: valid=%b, warp=%0d, PC=%0h, addr=%0h, tag=%0h, rd=%0d, rw=%0b, byteen=%0h, data=%0h", + $time, CORE_ID, dcache_req_if.valid, use_warp_num, use_pc, use_address, dcache_req_if.tag, use_rd, dcache_req_if.rw, dcache_req_if.byteen, dcache_req_if.data); end if ((| dcache_rsp_if.valid) && dcache_rsp_if.ready) begin $display("%t: D$%0d rsp: valid=%b, warp=%0d, PC=%0h, tag=%0h, rd=%0d, data=%0h", - $time, CORE_ID, lsu_commit_if.valid, lsu_commit_if.warp_num, lsu_commit_if.curr_PC, mrq_read_addr, lsu_commit_if.rd, lsu_commit_if.data); + $time, CORE_ID, dcache_rsp_if.valid, mem_rsp_warp_num, mem_rsp_curr_PC, dcache_rsp_if.tag, mem_rsp_rd, dcache_rsp_if.data); end end `endif diff --git a/hw/rtl/VX_mem_unit.v b/hw/rtl/VX_mem_unit.v index 8399857a..f67a9685 100644 --- a/hw/rtl/VX_mem_unit.v +++ b/hw/rtl/VX_mem_unit.v @@ -245,8 +245,8 @@ module VX_mem_unit # ( .SNOOP_FORWARDING (0), .DRAM_ENABLE (1), .WRITE_ENABLE (0), - .CORE_TAG_WIDTH (`DCORE_TAG_WIDTH), - .CORE_TAG_ID_BITS (`DCORE_TAG_ID_BITS), + .CORE_TAG_WIDTH (`ICORE_TAG_WIDTH), + .CORE_TAG_ID_BITS (`ICORE_TAG_ID_BITS), .DRAM_TAG_WIDTH (`IDRAM_TAG_WIDTH) ) icache ( `SCOPE_SIGNALS_CACHE_UNBIND diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 9ec58aa4..34744bd0 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -7,31 +7,58 @@ module VX_mul_unit #( input wire reset, // Inputs - VX_mul_req_if mul_req_if, + VX_mul_req_if alu_req_if, // Outputs - VX_commit_if mul_commit_if + VX_commit_if alu_commit_if ); - reg [`NUM_THREADS-1:0][31:0] alu_result; - wire [`NUM_THREADS-1:0][63:0] mul_result; - wire [`NUM_THREADS-1:0][31:0] div_result; - wire [`NUM_THREADS-1:0][31:0] rem_result; + + wire [`MUL_BITS-1:0] alu_op = alu_req_if.mul_op; + wire [`NUM_THREADS-1:0][31:0] alu_in1 = alu_req_if.rs1_data; + wire [`NUM_THREADS-1:0][31:0] alu_in2 = alu_req_if.rs2_data; - wire [`MUL_BITS-1:0] alu_op = mul_req_if.mul_op; - wire [`NUM_THREADS-1:0][31:0] alu_in1 = mul_req_if.rs1_data; - wire [`NUM_THREADS-1:0][31:0] alu_in2 = mul_req_if.rs2_data; + wire [`NUM_THREADS-1:0][31:0] mul_result, div_result; - genvar i; + wire stall_mul, stall_div; + + wire is_mul_op = (alu_op == `MUL_MUL); + wire is_div_op = (alu_op == `MUL_DIV || alu_op == `MUL_DIVU); + + reg [`NUM_THREADS-1:0] is_div_op_in; + wire [`NUM_THREADS-1:0] is_div_op_out; + wire is_mul_op_out; + + genvar i; for (i = 0; i < `NUM_THREADS; i++) begin wire [32:0] mul_in1 = {(alu_op != `MUL_MULHU) & alu_in1[i][31], alu_in1[i]}; wire [32:0] mul_in2 = {(alu_op != `MUL_MULHU && alu_op != `MUL_MULHSU) & alu_in2[i][31], alu_in2[i]}; - - wire [32:0] div_in1 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in1[i][31], alu_in1[i]}; - wire [32:0] div_in2 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in2[i][31], alu_in2[i]}; - VX_mult #( + reg [32:0] div_in1, div_in2; + + // handle divide by zero + always @(*) begin + is_div_op_in[i] = is_div_op; + div_in1 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in1[i][31], alu_in1[i]}; + div_in2 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in2[i][31], alu_in2[i]}; + + if (0 == alu_in2[i]) begin + if (is_div_op) begin + div_in1 = {1'b0, 32'hFFFFFFFF}; // quotient = (0xFFFFFFFF / 1) + div_in2 = 1; + end else begin + is_div_op_in[i] = 1; // remainder = (in1 / 1) + div_in2 = 1; + end + end + end + + wire [63:0] mul_result_tmp; + wire [31:0] div_result_tmp; + wire [31:0] rem_result_tmp; + + VX_multiplier #( .WIDTHA(33), .WIDTHB(33), .WIDTHP(64), @@ -40,9 +67,10 @@ module VX_mul_unit #( ) multiplier ( .clk(clk), .reset(reset), + .clk_en(~stall_mul), .dataa(mul_in1), .datab(mul_in2), - .result(mul_result[i]) + .result(mul_result_tmp) ); VX_divide #( @@ -53,75 +81,58 @@ module VX_mul_unit #( .NSIGNED(1), .DSIGNED(1), .PIPELINE(`LATENCY_IDIV) - ) sdiv ( + ) divide ( .clk(clk), .reset(reset), + .clk_en(~stall_div), .numer(div_in1), .denom(div_in2), - .quotient(div_result[i]), - .remainder(rem_result[i]) + .quotient(div_result_tmp), + .remainder(rem_result_tmp) ); - - always @(*) begin - case (alu_op) - `MUL_MUL: alu_result[i] = mul_result[i][31:0]; - `MUL_MULH, - `MUL_MULHSU, - `MUL_MULHU: alu_result[i] = mul_result[i][63:32]; - `MUL_DIV, - `MUL_DIVU: alu_result[i] = (alu_in2[i] == 0) ? 32'hffffffff : div_result[i]; - `MUL_REM, - `MUL_REMU: alu_result[i] = (alu_in2[i] == 0) ? alu_in1[i] : rem_result[i]; - default: alu_result[i] = alu_in1[i] + alu_in2[i]; // ADD, LUI, AUIPC, FENCE - endcase - end + + assign mul_result[i] = is_mul_op_out ? mul_result_tmp[31:0] : mul_result_tmp[63:32]; + assign div_result[i] = is_div_op_out[i] ? div_result_tmp : rem_result_tmp; end - wire stall; + wire mul_valid_out; + wire div_valid_out; - reg result_avail; - reg [4:0] pending_ctr; - wire [4:0] instr_delay = `IS_DIV_OP(alu_op) ? `LATENCY_IDIV : `LATENCY_IMUL; + wire [`ISTAG_BITS-1:0] mul_issue_tag; + wire [`ISTAG_BITS-1:0] div_issue_tag; - always @(posedge clk) begin - if (reset) begin - result_avail <= 0; - pending_ctr <= 0; - end else begin - if (result_avail && !stall) begin - result_avail <= 0; - pending_ctr <= 0; - end - if ((| mul_req_if.valid) && (pending_ctr == 0)) begin - pending_ctr <= instr_delay - 1; - if (instr_delay == 1) - result_avail <= 1; - end else if (pending_ctr != 0) begin - pending_ctr <= pending_ctr - 1; - if (pending_ctr == 1) - result_avail <= 1; - end - end - end + VX_shift_register #( + .DATAW(1 + `ISTAG_BITS + 1), + .DEPTH(`LATENCY_IMUL) + ) mul_delay ( + .clk(clk), + .reset(reset), + .enable(~stall_mul), + .in({alu_req_if.valid && ~`IS_DIV_OP(alu_op), alu_req_if.issue_tag, is_mul_op}), + .out({mul_valid_out, mul_issue_tag, is_mul_op_out}) + ); - wire pipeline_stall = ~result_avail && (| mul_req_if.valid); + VX_shift_register #( + .DATAW(1 + `ISTAG_BITS + `NUM_THREADS), + .DEPTH(`LATENCY_IDIV) + ) div_delay ( + .clk(clk), + .reset(reset), + .enable(~stall_div), + .in({alu_req_if.valid && `IS_DIV_OP(alu_op), alu_req_if.issue_tag, is_div_op_in}), + .out({div_valid_out, div_issue_tag, is_div_op_out}) + ); + + wire stall_out = (~alu_commit_if.ready && alu_commit_if.valid); + assign stall_mul = stall_out; + assign stall_div = stall_out + || (mul_valid_out && div_valid_out); // arbitration prioritizes MUL + + // can accept new request? + assign alu_req_if.ready = ~(stall_mul || stall_div); + + assign alu_commit_if.valid = mul_valid_out || div_valid_out; + assign alu_commit_if.issue_tag = mul_valid_out ? mul_issue_tag : div_issue_tag; + assign alu_commit_if.data = mul_valid_out ? mul_result : div_result; - assign stall = (~mul_commit_if.ready && (| mul_commit_if.valid)) - || pipeline_stall; - - wire flush = mul_commit_if.ready && pipeline_stall; - - VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + 1 + (`NUM_THREADS * 32)) - ) mul_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (flush), - .in ({mul_req_if.valid, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.rd, mul_req_if.wb, alu_result}), - .out ({mul_commit_if.valid, mul_commit_if.warp_num, mul_commit_if.curr_PC, mul_commit_if.rd, mul_commit_if.wb, mul_commit_if.data}) - ); - - assign mul_req_if.ready = ~stall; - endmodule \ No newline at end of file diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index 23c21ab9..09a73ddf 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -113,13 +113,14 @@ module VX_pipeline #( VX_fpu_req_if fpu_req_if(); VX_gpu_req_if gpu_req_if(); VX_wb_if writeback_if(); + VX_commit_is_if commit_is_if(); VX_wstall_if wstall_if(); VX_join_if join_if(); VX_commit_if alu_commit_if(); VX_commit_if lsu_commit_if(); VX_commit_if csr_commit_if(); VX_commit_if mul_commit_if(); - VX_commit_fp_if fpu_commit_if(); + VX_commit_if fpu_commit_if(); VX_commit_if gpu_commit_if(); VX_fetch #( @@ -156,6 +157,7 @@ module VX_pipeline #( .decode_if (decode_if), .writeback_if (writeback_if), + .commit_is_if (commit_is_if), .alu_req_if (alu_req_if), .lsu_req_if (lsu_req_if), @@ -212,6 +214,7 @@ module VX_pipeline #( .fpu_commit_if (fpu_commit_if), .gpu_commit_if (gpu_commit_if), + .commit_is_if (commit_is_if), .writeback_if (writeback_if), .perf_cntrs_if (perf_cntrs_if) ); diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index f20b8b87..c462d157 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -8,6 +8,7 @@ module VX_scheduler #( VX_decode_if decode_if, VX_wb_if writeback_if, + VX_commit_is_if commit_is_if, input wire gpr_busy, input wire alu_busy, input wire lsu_busy, @@ -15,29 +16,44 @@ module VX_scheduler #( input wire mul_busy, input wire fpu_busy, input wire gpu_busy, + output wire [`ISTAG_BITS-1:0] issue_tag, output wire schedule_delay, output wire is_empty ); localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); - reg [`NUM_THREADS-1:0] rename_table [`NUM_WARPS-1:0][(`NUM_REGS*2)-1:0]; - reg busy_table [`NUM_WARPS-1:0][(`NUM_REGS*2)-1:0]; - reg [CTVW-1:0] count_valid; + `ifdef EXT_F_ENABLE + localparam NREGS = (`NUM_REGS * 2); + reg inuse_table [`NUM_WARPS-1:0][NREGS-1:0]; + wire [`NR_BITS:0] read_rs1 = {decode_if.rs1_is_fp, decode_if.rs1}; + wire [`NR_BITS:0] read_rs2 = {decode_if.rs2_is_fp, decode_if.rs2}; + wire [`NR_BITS:0] read_rs3 = {1'b1, decode_if.rs3}; + wire [`NR_BITS:0] read_rd = {decode_if.rd_is_fp, decode_if.rd}; + wire [`NR_BITS:0] write_rd = {writeback_if.rd_is_fp, writeback_if.rd}; + wire rs3_inuse = inuse_table[decode_if.warp_num][read_rs3]; + `else + localparam NREGS = `NUM_REGS; + reg inuse_table [`NUM_WARPS-1:0][NREGS-1:0]; + wire [`NR_BITS-1:0] read_rs1 = decode_if.rs1; + wire [`NR_BITS-1:0] read_rs2 = decode_if.rs2; + wire [`NR_BITS-1:0] read_rd = decode_if.rd; + wire [`NR_BITS-1:0] write_rd = writeback_if.rd; + wire rs3_inuse = 0; + `endif - reg [`NR_BITS:0] read_rd = {decode_if.rd_is_fp, decode_if.rd}; - reg [`NR_BITS:0] write_rd = {writeback_if.rd_is_fp, writeback_if.rd}; + reg [`NUM_THREADS-1:0] inuse_registers [`NUM_WARPS-1:0][NREGS-1:0]; + reg [CTVW-1:0] count_valid; - wire rs1_rename = busy_table[decode_if.warp_num][{decode_if.rs1_is_fp, decode_if.rs1}]; - wire rs2_rename = busy_table[decode_if.warp_num][{decode_if.rs1_is_fp, decode_if.rs2}]; - wire rs3_rename = busy_table[decode_if.warp_num][{1'b1, decode_if.rs3}]; - wire rd_rename = busy_table[decode_if.warp_num][read_rd]; + wire rs1_inuse = inuse_table[decode_if.warp_num][read_rs1]; + wire rs2_inuse = inuse_table[decode_if.warp_num][read_rs2]; + wire rd_inuse = inuse_table[decode_if.warp_num][read_rd]; - wire rs1_rename_qual = rs1_rename && decode_if.use_rs1; - wire rs2_rename_qual = rs2_rename && decode_if.use_rs2; - wire rs3_rename_qual = rs3_rename && decode_if.use_rs3; - wire rd_rename_qual = rd_rename && decode_if.wb; + wire rs1_inuse_qual = rs1_inuse && decode_if.use_rs1; + wire rs2_inuse_qual = rs2_inuse && decode_if.use_rs2; + wire rs3_inuse_qual = rs3_inuse && decode_if.use_rs3; + wire rd_inuse_qual = rd_inuse && decode_if.wb; - wire rename_valid = (rs1_rename_qual || rs2_rename_qual || rs3_rename_qual || rd_rename_qual); + wire rename_valid = (rs1_inuse_qual || rs2_inuse_qual || rs3_inuse_qual || rd_inuse_qual); wire ex_stalled = ((gpr_busy) || (alu_busy && (decode_if.ex_type == `EX_ALU)) @@ -47,41 +63,61 @@ module VX_scheduler #( || (fpu_busy && (decode_if.ex_type == `EX_FPU)) || (gpu_busy && (decode_if.ex_type == `EX_GPU))); - wire stall = (ex_stalled || rename_valid) && (| decode_if.valid); + wire iq_full; - wire acquire_rd = (| decode_if.valid) && (decode_if.wb != 0) && ~stall; + wire stall = (ex_stalled || rename_valid || iq_full) && decode_if.valid; + + wire acquire_rd = decode_if.valid && (decode_if.wb != 0) && ~stall; - wire release_rd = (| writeback_if.valid); + wire release_rd = writeback_if.valid; - wire [`NUM_THREADS-1:0] valid_wb_new_mask = rename_table[writeback_if.warp_num][write_rd] & ~writeback_if.valid; + wire [`NUM_THREADS-1:0] inuse_registers_n = inuse_registers[writeback_if.warp_num][write_rd] & ~writeback_if.thread_mask; - reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == valid_wb_new_mask))) ? (count_valid + 1) : - (~acquire_rd && (release_rd && (0 == valid_wb_new_mask))) ? (count_valid - 1) : + reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == inuse_registers_n))) ? (count_valid + 1) : + (~acquire_rd && (release_rd && (0 == inuse_registers_n))) ? (count_valid - 1) : count_valid; always @(posedge clk) begin if (reset) begin integer i, w; for (w = 0; w < `NUM_WARPS; w++) begin - for (i = 0; i < 32; i++) begin - rename_table[w][i] <= 0; - busy_table[w][i] <= 0; + for (i = 0; i < NREGS; i++) begin + inuse_registers[w][i] <= 0; + inuse_table[w][i] <= 0; end end count_valid <= 0; end else begin if (acquire_rd) begin - rename_table[decode_if.warp_num][read_rd] <= decode_if.valid; - busy_table[decode_if.warp_num][read_rd] <= 1; + inuse_registers[decode_if.warp_num][read_rd] <= decode_if.thread_mask; + inuse_table[decode_if.warp_num][read_rd] <= 1; end if (release_rd) begin - assert(rename_table[writeback_if.warp_num][write_rd] != 0); - rename_table[writeback_if.warp_num][write_rd] <= valid_wb_new_mask; - busy_table[writeback_if.warp_num][write_rd] <= (| valid_wb_new_mask); + assert(inuse_table[writeback_if.warp_num][write_rd] != 0); + inuse_registers[writeback_if.warp_num][write_rd] <= inuse_registers_n; + inuse_table[writeback_if.warp_num][write_rd] <= (| inuse_registers_n); end count_valid <= count_valid_next; end end + wire ib_acquire = decode_if.valid && ~stall; + + VX_cam_buffer #( + .DATAW ($bits(is_data_t)), + .SIZE (`ISSUEQ_SIZE), + .RPORTS (`NUM_EXS) + ) issue_buffer ( + .clk (clk), + .reset (reset), + .write_data ({decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.rd_is_fp, decode_if.wb}), + .write_addr (issue_tag), + .acquire_slot (ib_acquire), + .release_slot ({commit_is_if.alu_valid, commit_is_if.lsu_valid, commit_is_if.csr_valid, commit_is_if.mul_valid, commit_is_if.fpu_valid, commit_is_if.gpu_valid}), + .read_addr ({commit_is_if.alu_tag, commit_is_if.lsu_tag, commit_is_if.csr_tag, commit_is_if.mul_tag, commit_is_if.fpu_tag, commit_is_if.gpu_tag}), + .read_data ({commit_is_if.alu_data, commit_is_if.lsu_data, commit_is_if.csr_data, commit_is_if.mul_data, commit_is_if.fpu_data, commit_is_if.gpu_data}), + .full (iq_full) + ); + assign decode_if.ready = ~stall; assign schedule_delay = stall; @@ -91,7 +127,7 @@ module VX_scheduler #( `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (stall) begin - $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, rename=%b%b%b, alu=%b, lsu=%b, csr=%b, mul=%b, fpu=%b, gpu=%b", $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, rd_rename_qual, rs1_rename_qual, rs2_rename_qual, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); + $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, iq_full=%b, inuse=%b%b%b%b, alu=%b, lsu=%b, csr=%b, mul=%b, fpu=%b, gpu=%b", $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, iq_full, rd_inuse_qual, rs1_inuse_qual, rs2_inuse_qual, rs3_inuse_qual, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); end end `endif diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index 571244d8..00e44439 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -97,9 +97,9 @@ module VX_warp_sched #( end else begin if (warp_ctl_if.wspawn) begin - warp_active <= warp_ctl_if.wspawn_new_active; + warp_active <= warp_ctl_if.wspawn_wmask; + use_wspawn <= warp_ctl_if.wspawn_wmask & (~`NUM_WARPS'(1)); use_wspawn_pc <= warp_ctl_if.wspawn_pc; - use_wspawn <= warp_ctl_if.wspawn_new_active & (~`NUM_WARPS'(1)); end if (warp_ctl_if.is_barrier) begin @@ -112,6 +112,10 @@ module VX_warp_sched #( end else if (warp_ctl_if.change_mask) begin thread_masks[warp_ctl_if.warp_num] <= warp_ctl_if.thread_mask; warp_stalled[warp_ctl_if.warp_num] <= 0; + if (0 == warp_ctl_if.thread_mask) begin + warp_active[warp_ctl_if.warp_num] <= 0; + visible_active[warp_ctl_if.warp_num] <= 0; + end end else if (join_if.is_join && !didnt_split) begin if (!join_fall) begin warp_pcs[join_if.warp_num] <= join_pc; @@ -126,12 +130,7 @@ module VX_warp_sched #( end else begin didnt_split <= 1; end - end - - if (warp_ctl_if.whalt) begin - warp_active[warp_ctl_if.warp_num] <= 0; - visible_active[warp_ctl_if.warp_num] <= 0; - end + end if (update_use_wspawn) begin use_wspawn[warp_to_schedule] <= 0; @@ -167,7 +166,7 @@ module VX_warp_sched #( if (scheduled_warp && !stall) begin warp_lock[warp_num] <= 1; end - if ((| ifetch_rsp_if.valid) && ifetch_rsp_if.ready) begin + if (ifetch_rsp_if.valid && ifetch_rsp_if.ready) begin warp_lock[ifetch_rsp_if.warp_num] <= 0; end @@ -192,7 +191,7 @@ module VX_warp_sched #( assign b_mask = barrier_stall_mask[warp_ctl_if.barrier_id][`NUM_WARPS-1:0]; - assign reached_barrier_limit = (b_count == warp_ctl_if.num_warps); + assign reached_barrier_limit = (b_count == warp_ctl_if.barrier_num_warps); assign wstall_this_cycle = wstall_if.wstall && (wstall_if.warp_num == warp_to_schedule); // Maybe bug @@ -263,17 +262,17 @@ module VX_warp_sched #( `UNUSED_PIN (grant_onehot) ); - assign stall = ~ifetch_req_if.ready && (| ifetch_req_if.valid); + assign stall = ~ifetch_req_if.ready && ifetch_req_if.valid; VX_generic_register #( - .N(`NUM_THREADS + 32 + `NW_BITS) + .N(1 + `NUM_THREADS + 32 + `NW_BITS) ) fetch_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({thread_mask, warp_pc, warp_num}), - .out ({ifetch_req_if.valid, ifetch_req_if.curr_PC, ifetch_req_if.warp_num}) + .in ({(| thread_mask), thread_mask, warp_pc, warp_num}), + .out ({ifetch_req_if.valid, ifetch_req_if.thread_mask, ifetch_req_if.curr_PC, ifetch_req_if.warp_num}) ); assign busy = (warp_active != 0); diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 3506e33a..33bc230f 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -10,79 +10,87 @@ module VX_writeback #( VX_commit_if alu_commit_if, VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, - VX_commit_fp_if fpu_commit_if, + VX_commit_if fpu_commit_if, VX_commit_if csr_commit_if, + VX_commit_is_if commit_is_if, // outputs VX_wb_if writeback_if ); - wire alu_valid = (| alu_commit_if.valid) && alu_commit_if.wb; - wire lsu_valid = (| lsu_commit_if.valid) && lsu_commit_if.wb; - wire csr_valid = (| csr_commit_if.valid) && csr_commit_if.wb; - wire mul_valid = (| mul_commit_if.valid) && mul_commit_if.wb; - wire fpu_valid = (| fpu_commit_if.valid) && fpu_commit_if.wb; + wire alu_valid = alu_commit_if.valid && commit_is_if.alu_data.wb; + wire lsu_valid = lsu_commit_if.valid && commit_is_if.lsu_data.wb; + wire csr_valid = csr_commit_if.valid && commit_is_if.csr_data.wb; + wire mul_valid = mul_commit_if.valid && commit_is_if.mul_data.wb; + wire fpu_valid = fpu_commit_if.valid && commit_is_if.fpu_data.wb; VX_wb_if writeback_tmp_if(); - assign writeback_tmp_if.valid = lsu_valid ? lsu_commit_if.valid : - fpu_valid ? fpu_commit_if.valid : - mul_valid ? mul_commit_if.valid : - alu_valid ? alu_commit_if.valid : - csr_valid ? csr_commit_if.valid : + assign writeback_tmp_if.valid = alu_valid ? alu_commit_if.valid : + lsu_valid ? lsu_commit_if.valid : + csr_valid ? csr_commit_if.valid : + mul_valid ? mul_commit_if.valid : + fpu_valid ? fpu_commit_if.valid : 0; - assign writeback_tmp_if.warp_num = lsu_valid ? lsu_commit_if.warp_num : - fpu_valid ? fpu_commit_if.warp_num : - mul_valid ? mul_commit_if.warp_num : - alu_valid ? alu_commit_if.warp_num : - csr_valid ? csr_commit_if.warp_num : + assign writeback_tmp_if.warp_num = alu_valid ? commit_is_if.alu_data.warp_num : + lsu_valid ? commit_is_if.lsu_data.warp_num : + csr_valid ? commit_is_if.csr_data.warp_num : + mul_valid ? commit_is_if.mul_data.warp_num : + fpu_valid ? commit_is_if.fpu_data.warp_num : + 0; + + assign writeback_tmp_if.thread_mask = alu_valid ? commit_is_if.alu_data.thread_mask : + lsu_valid ? commit_is_if.lsu_data.thread_mask : + csr_valid ? commit_is_if.csr_data.thread_mask : + mul_valid ? commit_is_if.mul_data.thread_mask : + fpu_valid ? commit_is_if.fpu_data.thread_mask : 0; - assign writeback_tmp_if.rd = lsu_valid ? lsu_commit_if.rd : - fpu_valid ? fpu_commit_if.rd : - mul_valid ? mul_commit_if.rd : - alu_valid ? alu_commit_if.rd : - csr_valid ? csr_commit_if.rd : + assign writeback_tmp_if.rd = alu_valid ? commit_is_if.alu_data.rd : + lsu_valid ? commit_is_if.lsu_data.rd : + csr_valid ? commit_is_if.csr_data.rd : + mul_valid ? commit_is_if.mul_data.rd : + fpu_valid ? commit_is_if.fpu_data.rd : 0; - assign writeback_tmp_if.rd_is_fp = lsu_valid ? 0 : - fpu_valid ? fpu_commit_if.rd_is_fp : - mul_valid ? 0 : - alu_valid ? 0 : + assign writeback_tmp_if.rd_is_fp = alu_valid ? 0 : + lsu_valid ? 0 : csr_valid ? 0 : + mul_valid ? 0 : + fpu_valid ? commit_is_if.fpu_data.rd_is_fp : 0; - assign writeback_tmp_if.data = lsu_valid ? lsu_commit_if.data : - fpu_valid ? fpu_commit_if.data : - mul_valid ? mul_commit_if.data : - alu_valid ? alu_commit_if.data : - csr_valid ? csr_commit_if.data : + assign writeback_tmp_if.data = alu_valid ? alu_commit_if.data : + lsu_valid ? lsu_commit_if.data : + csr_valid ? csr_commit_if.data : + mul_valid ? mul_commit_if.data : + fpu_valid ? fpu_commit_if.data : 0; - wire stall = ~writeback_if.ready && (| writeback_if.valid); + wire stall = ~writeback_if.ready && writeback_if.valid; VX_generic_register #( - .N(`NUM_THREADS + `NW_BITS + `NR_BITS + (`NUM_THREADS * 32) + 1) + .N(1 + `NW_BITS + `NUM_THREADS + `NR_BITS + (`NUM_THREADS * 32) + 1) ) wb_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.rd, writeback_tmp_if.rd_is_fp, writeback_tmp_if.data}), - .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.rd, writeback_if.rd_is_fp, writeback_if.data}) + .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.thread_mask, writeback_tmp_if.rd, writeback_tmp_if.rd_is_fp, writeback_tmp_if.data}), + .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.thread_mask, writeback_if.rd, writeback_if.rd_is_fp, writeback_if.data}) ); - assign lsu_commit_if.ready = !stall; - assign fpu_commit_if.ready = !stall && !lsu_valid; - assign mul_commit_if.ready = !stall && !lsu_valid && !fpu_valid; - assign alu_commit_if.ready = !stall && !lsu_valid && !fpu_valid && !mul_valid; - assign csr_commit_if.ready = !stall && !lsu_valid && !fpu_valid && !mul_valid && !alu_valid; + assign alu_commit_if.ready = !stall; + assign lsu_commit_if.ready = !stall && !alu_valid; + assign csr_commit_if.ready = !stall && !alu_valid && !lsu_valid; + assign mul_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid; + assign fpu_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid && !mul_valid; // special workaround to control RISC-V benchmarks termination on Verilator reg [31:0] last_data_wb /* verilator public */; always @(posedge clk) begin - if ((| writeback_tmp_if.valid) && ~stall && (writeback_tmp_if.rd == 28)) begin + if (writeback_tmp_if.valid && ~stall && (writeback_tmp_if.rd == 28)) begin last_data_wb <= writeback_tmp_if.data[0]; end end diff --git a/hw/rtl/cache/VX_bank.v b/hw/rtl/cache/VX_bank.v index c99b6fb4..f0692c5b 100644 --- a/hw/rtl/cache/VX_bank.v +++ b/hw/rtl/cache/VX_bank.v @@ -513,8 +513,8 @@ module VX_bank #( .reset (reset), .stall (stall_bank_pipe), .flush (0), - .in ({mrvq_recover_ready_state_st1e, is_mrvq_st1e_st2, mrvq_init_ready_state_st1e , snp_to_mrvq_st1e, is_snp_st1e, snp_invalidate_st1e, fill_saw_dirty_st1e, is_fill_st1[STAGE_1_CYCLES-1] , qual_valid_st1e_2, addr_st1e, wsel_st1[STAGE_1_CYCLES-1], writeword_st1[STAGE_1_CYCLES-1], readword_st1e, readdata_st1e, readtag_st1e, miss_st1e, dirty_st1e, dirtyb_st1e, inst_meta_st1[STAGE_1_CYCLES-1]}), - .out ({mrvq_recover_ready_state_st2 , is_mrvq_st2 , mrvq_init_ready_state_unqual_st2, snp_to_mrvq_st2 , is_snp_st2 , snp_invalidate_st2, fill_saw_dirty_st2 , is_fill_st2 , valid_st2 , addr_st2 , wsel_st2, writeword_st2 , readword_st2 , readdata_st2 , readtag_st2 , miss_st2 , dirty_st2 , dirtyb_st2, inst_meta_st2 }) + .in ({mrvq_recover_ready_state_st1e, is_mrvq_st1e_st2, mrvq_init_ready_state_st1e, snp_to_mrvq_st1e, is_snp_st1e, snp_invalidate_st1e, fill_saw_dirty_st1e, is_fill_st1[STAGE_1_CYCLES-1], qual_valid_st1e_2, addr_st1e, wsel_st1[STAGE_1_CYCLES-1], writeword_st1[STAGE_1_CYCLES-1], readword_st1e, readdata_st1e, readtag_st1e, miss_st1e, dirty_st1e, dirtyb_st1e, inst_meta_st1[STAGE_1_CYCLES-1]}), + .out ({mrvq_recover_ready_state_st2 , is_mrvq_st2 , mrvq_init_ready_state_unqual_st2, snp_to_mrvq_st2 , is_snp_st2 , snp_invalidate_st2, fill_saw_dirty_st2 , is_fill_st2 , valid_st2 , addr_st2, wsel_st2, writeword_st2, readword_st2, readdata_st2, readtag_st2, miss_st2, dirty_st2, dirtyb_st2, inst_meta_st2}) ); `ifdef DBG_CORE_REQ_INFO @@ -587,7 +587,7 @@ module VX_bank #( // Broadcast .is_fill_st1 (is_fill_st1[STAGE_1_CYCLES-1]), .fill_addr_st1 (addr_st1e), - .pending_hazard (mrvq_pending_hazard_st1e), + .pending_hazard_st1 (mrvq_pending_hazard_st1e), // Dequeue .miss_resrv_pop (mrvq_pop), diff --git a/hw/rtl/cache/VX_cache.v b/hw/rtl/cache/VX_cache.v index 2f1f3813..86db8357 100644 --- a/hw/rtl/cache/VX_cache.v +++ b/hw/rtl/cache/VX_cache.v @@ -133,7 +133,7 @@ module VX_cache #( wire debug_core_req_wb; wire[`NR_BITS-1:0] debug_core_req_rd; wire[`NW_BITS-1:0] debug_core_req_warp_num; - wire[`LOG2UP(CREQ_SIZE)-1:0] debug_core_req_idx; + wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_core_req_idx; /* verilator lint_on UNUSED */ if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin diff --git a/hw/rtl/cache/VX_cache_miss_resrv.v b/hw/rtl/cache/VX_cache_miss_resrv.v index b1f7a7e5..f7bed651 100644 --- a/hw/rtl/cache/VX_cache_miss_resrv.v +++ b/hw/rtl/cache/VX_cache_miss_resrv.v @@ -41,7 +41,7 @@ module VX_cache_miss_resrv #( input wire is_fill_st1, input wire[`LINE_ADDR_WIDTH-1:0] fill_addr_st1, - output wire pending_hazard, + output wire pending_hazard_st1, // Miss dequeue input wire miss_resrv_pop, @@ -84,7 +84,7 @@ module VX_cache_miss_resrv #( assign make_ready[i] = is_fill_st1 && valid_address_match[i]; end - assign pending_hazard = |(valid_address_match); + assign pending_hazard_st1 = |(valid_address_match); wire dequeue_possible = valid_table[schedule_ptr] && ready_table[schedule_ptr]; wire [`LOG2UP(MRVQ_SIZE)-1:0] dequeue_index = schedule_ptr; diff --git a/hw/rtl/cache/VX_snp_forwarder.v b/hw/rtl/cache/VX_snp_forwarder.v index 0856ff0d..11d3266e 100644 --- a/hw/rtl/cache/VX_snp_forwarder.v +++ b/hw/rtl/cache/VX_snp_forwarder.v @@ -41,8 +41,8 @@ module VX_snp_forwarder #( reg [`REQS_BITS:0] pending_cntrs [SNRQ_SIZE-1:0]; - wire [`LOG2UP(SNRQ_SIZE)-1:0] sfq_write_addr, sfq_read_addr, dbg_sfq_write_addr; - wire sfq_push, sfq_pop, sfq_full; + wire [`LOG2UP(SNRQ_SIZE)-1:0] sfq_write_addr, sfq_read_addr; + wire sfq_acquire, sfq_release, sfq_full; wire fwdin_valid; wire [`LOG2UP(SNRQ_SIZE)-1:0] fwdin_tag; @@ -56,27 +56,26 @@ module VX_snp_forwarder #( assign sfq_read_addr = fwdin_tag; - assign sfq_push = snp_req_valid && !sfq_full && fwdout_ready; - assign sfq_pop = snp_rsp_valid; + assign sfq_acquire = snp_req_valid && !sfq_full && fwdout_ready; + assign sfq_release = snp_rsp_valid; - VX_index_queue #( - .DATAW (`LOG2UP(SNRQ_SIZE) + 1 +`DRAM_ADDR_WIDTH+SNP_REQ_TAG_WIDTH), + VX_cam_buffer #( + .DATAW (`DRAM_ADDR_WIDTH + 1 + SNP_REQ_TAG_WIDTH), .SIZE (SNRQ_SIZE) - ) snp_fwd_queue ( - .clk (clk), - .reset (reset), - .write_data ({snp_req_addr, snp_req_invalidate, snp_req_tag}), - .write_addr (sfq_write_addr), - .push (sfq_push), - .pop (sfq_pop), - .full (sfq_full), - .read_addr (sfq_read_addr), - .read_data ({snp_rsp_addr, snp_rsp_invalidate, snp_rsp_tag}), - `UNUSED_PIN (empty) + ) snp_fwd_buffer ( + .clk (clk), + .reset (reset), + .write_data ({snp_req_addr, snp_req_invalidate, snp_req_tag}), + .write_addr (sfq_write_addr), + .acquire_slot (sfq_acquire), + .release_slot (sfq_release), + .read_addr (sfq_read_addr), + .read_data ({snp_rsp_addr, snp_rsp_invalidate, snp_rsp_tag}), + .full (sfq_full) ); always @(posedge clk) begin - if (sfq_push) begin + if (sfq_acquire) begin pending_cntrs[sfq_write_addr] <= NUM_REQUESTS; end if (fwdin_fire) begin diff --git a/hw/rtl/cache/VX_tag_data_access.v b/hw/rtl/cache/VX_tag_data_access.v index 4009ac4e..d67837be 100644 --- a/hw/rtl/cache/VX_tag_data_access.v +++ b/hw/rtl/cache/VX_tag_data_access.v @@ -2,25 +2,26 @@ module VX_tag_data_access #( // Size of cache in bytes - parameter CACHE_SIZE = 0, + parameter CACHE_SIZE = 0, // Size of line inside a bank in bytes - parameter BANK_LINE_SIZE = 0, + parameter BANK_LINE_SIZE = 0, // Number of banks {1, 2, 4, 8,...} - parameter NUM_BANKS = 0, + parameter NUM_BANKS = 0, // Size of a word in bytes - parameter WORD_SIZE = 0, + parameter WORD_SIZE = 0, // Number of cycles to complete stage 1 (read from memory) - parameter STAGE_1_CYCLES = 0, + parameter STAGE_1_CYCLES = 0, // Enable cache writeable - parameter WRITE_ENABLE = 0, + parameter WRITE_ENABLE = 0, // Enable dram update - parameter DRAM_ENABLE = 0 + parameter DRAM_ENABLE = 0 ) ( input wire clk, input wire reset, + input wire stall, input wire is_snp_st1e, input wire snp_invalidate_st1e, @@ -78,17 +79,17 @@ module VX_tag_data_access #( wire tags_match; wire real_writefill = valid_req_st1e && writefill_st1e - && ((!use_read_valid_st1e) || (use_read_valid_st1e && !tags_match)); + && ((~use_read_valid_st1e) || (use_read_valid_st1e && ~tags_match)); wire[`TAG_SELECT_BITS-1:0] writetag_st1e = writeaddr_st1e[`TAG_LINE_ADDR_RNG]; wire[`LINE_SELECT_BITS-1:0] writeladdr_st1e = writeaddr_st1e[`LINE_SELECT_BITS-1:0]; - VX_tag_data_structure #( + VX_tag_data_store #( .CACHE_SIZE (CACHE_SIZE), .BANK_LINE_SIZE (BANK_LINE_SIZE), .NUM_BANKS (NUM_BANKS), .WORD_SIZE (WORD_SIZE) - ) tag_data_structure ( + ) tag_data_store ( .clk (clk), .reset (reset), .stall_bank_pipe(stall_bank_pipe), @@ -141,10 +142,12 @@ module VX_tag_data_access #( assign use_read_dirtyb_st1e= read_dirtyb_st1c[STAGE_1_CYCLES-1]; assign use_read_data_st1e = read_data_st1c[STAGE_1_CYCLES-1]; - if (`WORD_SELECT_WIDTH != 0) begin - assign readword_st1e = use_read_data_st1e[wordsel_st1e * `WORD_WIDTH +: `WORD_WIDTH]; - end else begin - assign readword_st1e = use_read_data_st1e; + for (i = 0; i < WORD_SIZE; i++) begin + if (`WORD_SELECT_WIDTH != 0) begin + assign readword_st1e[i * 8 +: 8] = use_read_data_st1e[wordsel_st1e * `WORD_WIDTH +: `WORD_WIDTH][i * 8 +: 8] & {8{mem_byteen_st1e[i]}}; + end else begin + assign readword_st1e[i * 8 +: 8] = use_read_data_st1e[i * 8 +: 8] & {8{mem_byteen_st1e[i]}}; + end end wire [`BANK_LINE_WORDS-1:0][WORD_SIZE-1:0] we; @@ -153,9 +156,9 @@ module VX_tag_data_access #( wire should_write = mem_rw_st1e && valid_req_st1e && use_read_valid_st1e - && !miss_st1e - && !is_snp_st1e - && !real_writefill; + && ~miss_st1e + && ~is_snp_st1e + && ~real_writefill; for (i = 0; i < `BANK_LINE_WORDS; i++) begin wire normal_write = ((`WORD_SELECT_WIDTH == 0) || (wordsel_st1e == `UP(`WORD_SELECT_WIDTH)'(i))) @@ -168,22 +171,22 @@ module VX_tag_data_access #( assign data_write[i * `WORD_WIDTH +: `WORD_WIDTH] = real_writefill ? writedata_st1e[i * `WORD_WIDTH +: `WORD_WIDTH] : writeword_st1e; end - assign use_write_enable = (writefill_st1e && !real_writefill) ? 0 : we; + assign use_write_enable = (writefill_st1e && ~real_writefill) ? 0 : we; assign use_write_data = data_write; // use "case equality" to handle uninitialized tag when block entry is not valid assign tags_match = (writetag_st1e === use_read_tag_st1e); - wire snoop_hit_no_pending = valid_req_st1e && is_snp_st1e && use_read_valid_st1e && tags_match && (use_read_dirty_st1e || snp_invalidate_st1e) && !force_request_miss_st1e; - wire req_invalid = valid_req_st1e && !is_snp_st1e && !use_read_valid_st1e && !writefill_st1e; - wire req_miss = valid_req_st1e && !is_snp_st1e && use_read_valid_st1e && !writefill_st1e && !tags_match; + wire snoop_hit_no_pending = valid_req_st1e && is_snp_st1e && use_read_valid_st1e && tags_match && (use_read_dirty_st1e || snp_invalidate_st1e) && ~force_request_miss_st1e; + wire req_invalid = valid_req_st1e && ~is_snp_st1e && ~use_read_valid_st1e && ~writefill_st1e; + wire req_miss = valid_req_st1e && ~is_snp_st1e && use_read_valid_st1e && ~writefill_st1e && ~tags_match; wire real_miss = req_invalid || req_miss; - wire force_core_miss = (force_request_miss_st1e && !is_snp_st1e && !writefill_st1e && valid_req_st1e && !real_miss); + wire force_core_miss = (force_request_miss_st1e && ~is_snp_st1e && ~writefill_st1e && valid_req_st1e && ~real_miss); assign snp_to_mrvq_st1e = valid_req_st1e && is_snp_st1e && force_request_miss_st1e; // The second term is basically saying always make an entry ready if there's already antoher entry waiting, even if you yourself see a miss assign mrvq_init_ready_state_st1e = snp_to_mrvq_st1e - || (force_request_miss_st1e && !is_snp_st1e && !writefill_st1e && valid_req_st1e); + || (force_request_miss_st1e && ~is_snp_st1e && ~writefill_st1e && valid_req_st1e); assign miss_st1e = real_miss || snoop_hit_no_pending || force_core_miss; assign dirty_st1e = valid_req_st1e && use_read_valid_st1e && use_read_dirty_st1e; @@ -194,7 +197,4 @@ module VX_tag_data_access #( assign fill_saw_dirty_st1e = real_writefill && dirty_st1e; assign invalidate_line = snoop_hit_no_pending; -endmodule - - - +endmodule \ No newline at end of file diff --git a/hw/rtl/cache/VX_tag_data_structure.v b/hw/rtl/cache/VX_tag_data_store.v similarity index 99% rename from hw/rtl/cache/VX_tag_data_structure.v rename to hw/rtl/cache/VX_tag_data_store.v index 1d32f37d..72a62a7b 100644 --- a/hw/rtl/cache/VX_tag_data_structure.v +++ b/hw/rtl/cache/VX_tag_data_store.v @@ -1,6 +1,6 @@ `include "VX_cache_config.vh" -module VX_tag_data_structure #( +module VX_tag_data_store #( // Size of cache in bytes parameter CACHE_SIZE = 0, // Size of line inside a bank in bytes diff --git a/hw/rtl/interfaces/VX_alu_req_if.v b/hw/rtl/interfaces/VX_alu_req_if.v index 98dca661..901a2754 100644 --- a/hw/rtl/interfaces/VX_alu_req_if.v +++ b/hw/rtl/interfaces/VX_alu_req_if.v @@ -5,18 +5,17 @@ interface VX_alu_req_if (); - wire [`NUM_THREADS-1:0] valid; + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NUM_THREADS-1:0] thread_mask; wire [`NW_BITS-1:0] warp_num; wire [31:0] curr_PC; - - wire [`ALU_BITS-1:0] alu_op; - wire wb; - wire [`NR_BITS-1:0] rd; + wire [`ALU_BITS-1:0] alu_op; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; - + wire [31:0] offset; wire [31:0] next_PC; diff --git a/hw/rtl/interfaces/VX_commit_if.v b/hw/rtl/interfaces/VX_commit_if.v index 9bf12884..c0c60df8 100644 --- a/hw/rtl/interfaces/VX_commit_if.v +++ b/hw/rtl/interfaces/VX_commit_if.v @@ -5,12 +5,9 @@ interface VX_commit_if (); - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; - wire [`NUM_THREADS-1:0][31:0] data; - wire [`NR_BITS-1:0] rd; - wire wb; + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NUM_THREADS-1:0][31:0] data; wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_commit_is_if.v b/hw/rtl/interfaces/VX_commit_is_if.v new file mode 100644 index 00000000..da6aea23 --- /dev/null +++ b/hw/rtl/interfaces/VX_commit_is_if.v @@ -0,0 +1,43 @@ +`ifndef VX_COMMIT_IS_IF +`define VX_COMMIT_IS_IF + +`include "VX_define.vh" + +typedef struct packed { + logic [`NW_BITS-1:0] warp_num; + logic [`NUM_THREADS-1:0] thread_mask; + logic [31:0] curr_PC; + logic [`NR_BITS-1:0] rd; + logic rd_is_fp; + logic wb; +} is_data_t; + + +interface VX_commit_is_if (); + + wire alu_valid; + wire lsu_valid; + wire csr_valid; + wire mul_valid; + wire fpu_valid; + wire gpu_valid; + + wire [`ISTAG_BITS-1:0] alu_tag; + wire [`ISTAG_BITS-1:0] lsu_tag; + wire [`ISTAG_BITS-1:0] csr_tag; + wire [`ISTAG_BITS-1:0] mul_tag; + wire [`ISTAG_BITS-1:0] fpu_tag; + wire [`ISTAG_BITS-1:0] gpu_tag; + +`IGNORE_WARNINGS_BEGIN + is_data_t alu_data; + is_data_t lsu_data; + is_data_t csr_data; + is_data_t mul_data; + is_data_t fpu_data; + is_data_t gpu_data; +`IGNORE_WARNINGS_END + +endinterface + +`endif diff --git a/hw/rtl/interfaces/VX_csr_req_if.v b/hw/rtl/interfaces/VX_csr_req_if.v index e585ad5c..92c5b82a 100644 --- a/hw/rtl/interfaces/VX_csr_req_if.v +++ b/hw/rtl/interfaces/VX_csr_req_if.v @@ -5,7 +5,8 @@ interface VX_csr_req_if (); - wire [`NUM_THREADS-1:0] valid; + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; wire [`NW_BITS-1:0] warp_num; wire [31:0] curr_PC; diff --git a/hw/rtl/interfaces/VX_decode_if.v b/hw/rtl/interfaces/VX_decode_if.v index ee7b4bf1..3b25581f 100644 --- a/hw/rtl/interfaces/VX_decode_if.v +++ b/hw/rtl/interfaces/VX_decode_if.v @@ -5,8 +5,9 @@ interface VX_decode_if (); - wire [`NUM_THREADS-1:0] valid; + wire valid; wire [`NW_BITS-1:0] warp_num; + wire [`NUM_THREADS-1:0] thread_mask; wire [31:0] curr_PC; wire [31:0] next_PC; diff --git a/hw/rtl/interfaces/VX_fpu_from_csr_if.v b/hw/rtl/interfaces/VX_fpu_from_csr_if.v index 508d1a94..096b576c 100644 --- a/hw/rtl/interfaces/VX_fpu_from_csr_if.v +++ b/hw/rtl/interfaces/VX_fpu_from_csr_if.v @@ -3,6 +3,10 @@ `include "VX_define.vh" +`ifndef EXTF_F_ENABLE + `IGNORE_WARNINGS_BEGIN +`endif + interface VX_fpu_from_csr_if (); wire [`NW_BITS-1:0] warp_num; diff --git a/hw/rtl/interfaces/VX_fpu_req_if.v b/hw/rtl/interfaces/VX_fpu_req_if.v index 4d29fa8b..dd03f271 100644 --- a/hw/rtl/interfaces/VX_fpu_req_if.v +++ b/hw/rtl/interfaces/VX_fpu_req_if.v @@ -3,19 +3,19 @@ `include "VX_define.vh" +`ifndef EXTF_F_ENABLE + `IGNORE_WARNINGS_BEGIN +`endif + interface VX_fpu_req_if (); - wire [`NUM_THREADS-1:0] valid; + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; wire [`FPU_BITS-1:0] fpu_op; wire [`FRM_BITS-1:0] frm; - wire wb; - wire [`NR_BITS-1:0] rd; - wire rd_is_fp; - wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; wire [`NUM_THREADS-1:0][31:0] rs3_data; diff --git a/hw/rtl/interfaces/VX_fpu_to_csr_if.v b/hw/rtl/interfaces/VX_fpu_to_csr_if.v index b4471632..71e1e7b9 100644 --- a/hw/rtl/interfaces/VX_fpu_to_csr_if.v +++ b/hw/rtl/interfaces/VX_fpu_to_csr_if.v @@ -3,6 +3,10 @@ `include "VX_define.vh" +`ifndef EXTF_F_ENABLE + `IGNORE_WARNINGS_BEGIN +`endif + interface VX_fpu_to_csr_if (); wire valid; diff --git a/hw/rtl/interfaces/VX_gpu_req_if.v b/hw/rtl/interfaces/VX_gpu_req_if.v index 468fc073..38f36ab0 100644 --- a/hw/rtl/interfaces/VX_gpu_req_if.v +++ b/hw/rtl/interfaces/VX_gpu_req_if.v @@ -5,17 +5,18 @@ interface VX_gpu_req_if(); - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NUM_THREADS-1:0] thread_mask; + wire [`NW_BITS-1:0] warp_num; - wire [`GPU_BITS-1:0] gpu_op; + wire [`GPU_BITS-1:0] gpu_op; wire [`NUM_THREADS-1:0][31:0] rs1_data; - wire [31:0] rs2_data; - wire [31:0] next_PC; + wire [31:0] rs2_data; + wire [31:0] next_PC; - wire ready; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_ifetch_req_if.v b/hw/rtl/interfaces/VX_ifetch_req_if.v index 82b31b6c..c92888eb 100644 --- a/hw/rtl/interfaces/VX_ifetch_req_if.v +++ b/hw/rtl/interfaces/VX_ifetch_req_if.v @@ -5,10 +5,11 @@ interface VX_ifetch_req_if (); - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; - wire ready; + wire valid; + wire [`NUM_THREADS-1:0] thread_mask; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_ifetch_rsp_if.v b/hw/rtl/interfaces/VX_ifetch_rsp_if.v index 0bc482c2..b5efc4fc 100644 --- a/hw/rtl/interfaces/VX_ifetch_rsp_if.v +++ b/hw/rtl/interfaces/VX_ifetch_rsp_if.v @@ -5,11 +5,12 @@ interface VX_ifetch_rsp_if (); - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; - wire [31:0] instr; - wire ready; + wire valid; + wire [`NUM_THREADS-1:0] thread_mask; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; + wire [31:0] instr; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_lsu_req_if.v b/hw/rtl/interfaces/VX_lsu_req_if.v index a4e0aeed..b4b80598 100644 --- a/hw/rtl/interfaces/VX_lsu_req_if.v +++ b/hw/rtl/interfaces/VX_lsu_req_if.v @@ -5,20 +5,22 @@ interface VX_lsu_req_if (); - wire [`NUM_THREADS-1:0] valid; + wire valid; + wire [`NUM_THREADS-1:0] thread_mask; + wire [`ISTAG_BITS-1:0] issue_tag; wire [`NW_BITS-1:0] warp_num; wire [31:0] curr_PC; wire rw; wire [`BYTEEN_BITS-1:0] byteen; - - wire wb; - wire [`NR_BITS-1:0] rd; wire [`NUM_THREADS-1:0][31:0] store_data; wire [`NUM_THREADS-1:0][31:0] base_addr; wire [31:0] offset; - + + wire [`NR_BITS-1:0] rd; + wire wb; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_mul_req_if.v b/hw/rtl/interfaces/VX_mul_req_if.v index 708dba86..428edd94 100644 --- a/hw/rtl/interfaces/VX_mul_req_if.v +++ b/hw/rtl/interfaces/VX_mul_req_if.v @@ -3,21 +3,21 @@ `include "VX_define.vh" +`ifndef EXT_M_ENABLE + `IGNORE_WARNINGS_BEGIN +`endif + interface VX_mul_req_if (); - wire [`NUM_THREADS-1:0] valid; - wire [`NW_BITS-1:0] warp_num; - wire [31:0] curr_PC; + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; - wire [`MUL_BITS-1:0] mul_op; - - wire wb; - wire [`NR_BITS-1:0] rd; + wire [`MUL_BITS-1:0] mul_op; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; - wire ready; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_warp_ctl_if.v b/hw/rtl/interfaces/VX_warp_ctl_if.v index 7eef29f0..50eca6b0 100644 --- a/hw/rtl/interfaces/VX_warp_ctl_if.v +++ b/hw/rtl/interfaces/VX_warp_ctl_if.v @@ -12,17 +12,14 @@ interface VX_warp_ctl_if (); wire wspawn; wire [31:0] wspawn_pc; - wire [`NUM_WARPS-1:0] wspawn_new_active; - - wire whalt; + wire [`NUM_WARPS-1:0] wspawn_wmask; wire is_barrier; wire [`NB_BITS-1:0] barrier_id; - wire [`NW_BITS:0] num_warps; + wire [`NW_BITS:0] barrier_num_warps; wire is_split; wire do_split; - wire [`NUM_THREADS-1:0] split_new_mask; wire [`NUM_THREADS-1:0] split_later_mask; wire [31:0] split_save_pc; diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index 968fec13..8baac2cd 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -5,7 +5,8 @@ interface VX_wb_if (); - wire [`NUM_THREADS-1:0] valid; + wire valid; + wire [`NUM_THREADS-1:0] thread_mask; wire [`NW_BITS-1:0] warp_num; wire [`NR_BITS-1:0] rd; wire rd_is_fp; diff --git a/hw/rtl/libs/VX_cam_buffer.v b/hw/rtl/libs/VX_cam_buffer.v new file mode 100644 index 00000000..284ffa7d --- /dev/null +++ b/hw/rtl/libs/VX_cam_buffer.v @@ -0,0 +1,74 @@ +`include "VX_define.vh" + +module VX_cam_buffer #( + parameter DATAW = 1, + parameter SIZE = 1, + parameter RPORTS = 1, + parameter ADDRW = `LOG2UP(SIZE) +) ( + input wire clk, + input wire reset, + input wire [DATAW-1:0] write_data, + output wire [ADDRW-1:0] write_addr, + input wire acquire_slot, + input wire [RPORTS-1:0][ADDRW-1:0] read_addr, + output reg [RPORTS-1:0][DATAW-1:0] read_data, + input wire [RPORTS-1:0] release_slot, + output wire full +); + reg [DATAW-1:0] entries [SIZE-1:0]; + reg [SIZE-1:0] free_slots, free_slots_n; + reg [ADDRW-1:0] write_addr_r; + reg full_r; + + wire free_valid; + wire [ADDRW-1:0] free_index; + + VX_priority_encoder #( + .N(SIZE) + ) free_slots_encoder ( + .data_in (free_slots_n), + .data_out (free_index), + .valid_out (free_valid) + ); + + integer i; + + always @(*) begin + free_slots_n = free_slots; + if (acquire_slot) begin + free_slots_n[write_addr_r] = 0; + end + for (i = 0; i < RPORTS; i++) begin + if (release_slot[i]) begin + free_slots_n[read_addr[i]] = 1; + end + assign read_data[i] = entries[read_addr[i]]; + end + end + + always @(posedge clk) begin + if (reset) begin + free_slots <= {SIZE{1'b1}}; + full_r <= 1'b0; + write_addr_r <= ADDRW'(1'b0); + end else begin + if (acquire_slot) begin + assert(1 == free_slots[write_addr]); + entries[write_addr] <= write_data; + end + for (i = 0; i < RPORTS; i++) begin + if (release_slot[i]) begin + assert(0 == free_slots[read_addr[i]]); + end + end + free_slots <= free_slots_n; + write_addr_r <= free_index; + full_r <= ~free_valid; + end + end + + assign write_addr = write_addr_r; + assign full = full_r; + +endmodule \ No newline at end of file diff --git a/hw/rtl/libs/VX_divide.v b/hw/rtl/libs/VX_divide.v index d815dc39..83418f33 100644 --- a/hw/rtl/libs/VX_divide.v +++ b/hw/rtl/libs/VX_divide.v @@ -12,6 +12,7 @@ module VX_divide #( input wire clk, input wire reset, + input wire clk_en, input wire [WIDTHN-1:0] numer, input wire [WIDTHD-1:0] denom, @@ -31,7 +32,7 @@ module VX_divide #( .quotient (quotient_unqual), .remain (remainder_unqual), .aclr (1'b0), - .clken (1'b1) + .clken (clk_en) ); defparam @@ -43,8 +44,8 @@ module VX_divide #( quartus_div.lpm_hint = "MAXIMIZE_SPEED=6,LPM_REMAINDERPOSITIVE=FALSE", quartus_div.lpm_pipeline = PIPELINE; - assign quotient = quotient_unqual[WIDTHQ-1:0]; - assign remainder = remainder_unqual[WIDTHR-1:0]; + assign quotient = quotient_unqual [WIDTHQ-1:0]; + assign remainder = remainder_unqual [WIDTHR-1:0]; `else @@ -82,8 +83,8 @@ module VX_divide #( end if (PIPELINE == 0) begin - assign quotient = quotient_unqual[WIDTHQ-1:0]; - assign remainder = remainder_unqual[WIDTHR-1:0]; + assign quotient = quotient_unqual [WIDTHQ-1:0]; + assign remainder = remainder_unqual [WIDTHR-1:0]; end else begin reg [WIDTHN-1:0] quotient_pipe [0:PIPELINE-1]; reg [WIDTHD-1:0] remainder_pipe [0:PIPELINE-1]; @@ -95,14 +96,14 @@ module VX_divide #( quotient_pipe[i] <= 0; remainder_pipe[i] <= 0; end - else begin + else if (clk_en) begin if (i == 0) begin - quotient_pipe[0] <= quotient_unqual; - remainder_pipe[0] <= remainder_unqual; + quotient_pipe[i] <= quotient_unqual; + remainder_pipe[i] <= remainder_unqual; end else begin quotient_pipe[i] <= quotient_pipe[i-1]; - remainder_pipe[i] <= remainder_pipe[i-1]; - end + remainder_pipe[i] <= remainder_pipe[i-1]; + end end end end diff --git a/hw/rtl/libs/VX_generic_queue.v b/hw/rtl/libs/VX_generic_queue.v index a666948b..fce614fe 100644 --- a/hw/rtl/libs/VX_generic_queue.v +++ b/hw/rtl/libs/VX_generic_queue.v @@ -1,9 +1,9 @@ `include "VX_define.vh" module VX_generic_queue #( - parameter DATAW = 1, - parameter SIZE = 16, - parameter BUFFERED_OUTPUT = 1 + parameter DATAW = 1, + parameter SIZE = 16, + parameter BUFFERED = 1 ) ( input wire clk, input wire reset, @@ -58,7 +58,7 @@ module VX_generic_queue #( reg [DATAW-1:0] data [SIZE-1:0]; `endif - if (0 == BUFFERED_OUTPUT) begin + if (0 == BUFFERED) begin reg [`LOG2UP(SIZE):0] rd_ptr_r; reg [`LOG2UP(SIZE):0] wr_ptr_r; diff --git a/hw/rtl/libs/VX_mult.v b/hw/rtl/libs/VX_mult.v deleted file mode 100644 index 1dd77aea..00000000 --- a/hw/rtl/libs/VX_mult.v +++ /dev/null @@ -1,75 +0,0 @@ -`include "VX_define.vh" - -module VX_mult #( - parameter WIDTHA = 1, - parameter WIDTHB = 1, - parameter WIDTHP = 1, - parameter SIGNED = 0, - parameter PIPELINE = 0 -) ( - input wire clk, - input wire reset, - - input wire [WIDTHA-1:0] dataa, - input wire [WIDTHB-1:0] datab, - output wire [WIDTHP-1:0] result -); - -`ifdef QUARTUS - - lpm_mult quartus_mult ( - .clock (clk), - .dataa (dataa), - .datab (datab), - .result (result), - .sclr (reset), - .aclr (1'b0), - .clken (1'b1), - .sum (1'b0) - ); - - defparam quartus_mult.lpm_type = "LPM_MULT", - quartus_mult.lpm_widtha = WIDTHA, - quartus_mult.lpm_widthb = WIDTHB, - quartus_mult.lpm_widthp = WIDTHP, - quartus_mult.lpm_representation = SIGNED ? "SIGNED" : "UNSIGNED", - quartus_mult.lpm_pipeline = PIPELINE, - quartus_mult.lpm_hint = "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9"; -`else - - wire [WIDTHP-1:0] result_unqual; - - if (SIGNED) begin - assign result_unqual = $signed(dataa) * $signed(datab); - end else begin - assign result_unqual = dataa * datab; - end - - if (PIPELINE == 0) begin - assign result = result_unqual; - end else begin - - reg [WIDTHP-1:0] result_pipe [0:PIPELINE-1]; - - genvar i; - for (i = 0; i < PIPELINE; i++) begin - always @(posedge clk) begin - if (reset) begin - result_pipe[i] <= 0; - end - else begin - if (i == 0) begin - result_pipe[0] <= result_unqual; - end else begin - result_pipe[i] <= result_pipe[i-1]; - end - end - end - end - - assign result = result_pipe[PIPELINE-1]; - end - -`endif - -endmodule \ No newline at end of file diff --git a/hw/rtl/libs/VX_priority_encoder.v b/hw/rtl/libs/VX_priority_encoder.v index 24c91724..a62273a7 100644 --- a/hw/rtl/libs/VX_priority_encoder.v +++ b/hw/rtl/libs/VX_priority_encoder.v @@ -8,6 +8,7 @@ module VX_priority_encoder #( output reg valid_out ); integer i; + always @(*) begin data_out = 0; valid_out = 0; diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index c24bea0a..327d5aa4 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -15,7 +15,7 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE DBG_FLAGS += $(DBG_PRINT_FLAGS) -DBG_FLAGS += -DDBG_CORE_REQ_INFO +#DBG_FLAGS += -DDBG_CORE_REQ_INFO INCLUDE = -I../rtl/ -I../rtl/libs -I../rtl/interfaces -I../rtl/cache -I../rtl/fp_cores -I../rtl/simulate @@ -35,7 +35,6 @@ VF += -cc Vortex.v -top-module Vortex VF += verilator.vlt DBG += -DVCD_OUTPUT $(DBG_FLAGS) -DBG += -DDBG_CORE_REQ_INFO THREADS ?= $(shell python3 -c 'import multiprocessing as mp; print(max(1, mp.cpu_count() // 2))') diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index 3f9f240e..4ea6866a 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -11,7 +11,7 @@ double sc_time_stamp() { Simulator::Simulator() { // force random values for unitialized signals - Verilated::randReset(1); + Verilated::randReset(2); // Turn off assertion before reset Verilated::assertOn(false); @@ -24,7 +24,8 @@ Simulator::Simulator() { #ifdef VCD_OUTPUT Verilated::traceEverOn(true); - trace_ = new VerilatedVcdC; + trace_ = new VerilatedVcdC(); + trace_->set_time_unit("1ns"); vortex_->trace(trace_, 99); trace_->open("trace.vcd"); #endif diff --git a/runtime/src/vx_intrinsics.S b/runtime/src/vx_intrinsics.S index b0dbd628..c6b0008d 100644 --- a/runtime/src/vx_intrinsics.S +++ b/runtime/src/vx_intrinsics.S @@ -83,11 +83,11 @@ vx_num_cores: .type vx_num_cycles, @function .global vx_num_cycles vx_num_cycles: - csrr a0, CSR_CYCLL + csrr a0, CSR_CYCLE_L ret .type vx_num_instrs, @function .global vx_num_instrs vx_num_instrs: - csrr a0, CSR_INSTL + csrr a0, CSR_INSTR_L ret \ No newline at end of file diff --git a/runtime/src/vx_start.S b/runtime/src/vx_start.S index 029fbb90..62eb8025 100644 --- a/runtime/src/vx_start.S +++ b/runtime/src/vx_start.S @@ -49,7 +49,7 @@ vx_set_sp: slli a1, a1, 10 # multiply by 1024 csrr a2, CSR_LTID # get local thread id slli a2, a2, 2 # multiply by 4 - lui sp, STACK_BASE_ADDR # load base sp + lui sp, (SHARED_MEM_BASE_ADDR>>12) # load base sp sub sp, sp, a1 # sub thread block add sp, sp, a2 # reduce addr collision for perf diff --git a/runtime/tests/simple/Makefile b/runtime/tests/simple/Makefile index db04672b..1c203ec7 100644 --- a/runtime/tests/simple/Makefile +++ b/runtime/tests/simple/Makefile @@ -8,7 +8,7 @@ CP = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-objcopy CFLAGS += -march=rv32im -mabi=ilp32 -O3 -Wl,-Bstatic,-T,$(VORTEX_RT_PATH)/linker/vx_link.ld CFLAGS += -nostartfiles -ffreestanding -fno-exceptions -Wl,--gc-sections -CFLAGS += -I$(VORTEX_RT_PATH)/include +CFLAGS += -I$(VORTEX_RT_PATH)/include -I../../../hw LDFLAGS += $(VORTEX_RT_PATH)/libvortexrt.a diff --git a/runtime/tests/simple/main.c b/runtime/tests/simple/main.c index 7c5c40ab..1d177987 100644 --- a/runtime/tests/simple/main.c +++ b/runtime/tests/simple/main.c @@ -3,6 +3,7 @@ #include #include #include +#include typedef struct @@ -100,7 +101,7 @@ int main() test_wsapwn(); vx_print_str("Shared Memory test\n"); - unsigned * ptr = (unsigned *) 0xFFFF0000; + unsigned * ptr = (unsigned *) SHARED_MEM_BASE_ADDR; unsigned value = 0; for (int i = 0; i < 5; i++) { @@ -112,7 +113,6 @@ int main() vx_print_str("-------------------\n"); value++; ptr++; - } vx_print_str("vx_spawn_warps mat_add_kernel\n"); diff --git a/runtime/tests/simple/tests.c b/runtime/tests/simple/tests.c index 3ad7860f..1efd0a3a 100644 --- a/runtime/tests/simple/tests.c +++ b/runtime/tests/simple/tests.c @@ -125,16 +125,4 @@ void intrinsics_tests() // Test wspawn vx_print_str("test_spawn\n"); test_wsapwn(); -} - - - - - - - - - - - - +} \ No newline at end of file diff --git a/runtime/tests/simple/vx_simple.dump b/runtime/tests/simple/vx_simple.dump index 5175c11c..6ab5c371 100644 --- a/runtime/tests/simple/vx_simple.dump +++ b/runtime/tests/simple/vx_simple.dump @@ -81,14 +81,14 @@ Disassembly of section .text: 80000114: 3a8000ef jal ra,800004bc 80000118: 80001537 lui a0,0x80001 8000011c: ddc50513 addi a0,a0,-548 # 80000ddc <__global_pointer$+0xfffff5d4> -80000120: ffff0437 lui s0,0xffff0 +80000120: 6ffff437 lui s0,0x6ffff 80000124: 628000ef jal ra,8000074c 80000128: 00000493 li s1,0 8000012c: 80001b37 lui s6,0x80001 80000130: 80001ab7 lui s5,0x80001 80000134: 80001a37 lui s4,0x80001 80000138: 800019b7 lui s3,0x80001 -8000013c: 01440913 addi s2,s0,20 # ffff0014 <__global_pointer$+0x7ffee80c> +8000013c: 01440913 addi s2,s0,20 # 6ffff014 <_start-0x10000fec> 80000140: 00942023 sw s1,0(s0) 80000144: 00040593 mv a1,s0 80000148: df0b0513 addi a0,s6,-528 # 80000df0 <__global_pointer$+0xfffff5e8> diff --git a/runtime/tests/simple/vx_simple.elf b/runtime/tests/simple/vx_simple.elf index c4ce71a288f99610da0672dd0bee67d29c6b8f8c..a7a3480a8f19697ed7a6eff96d9dbff0e67d3260 100755 GIT binary patch delta 16 YcmcbTcqMUzq9F5^|M{C$1UJY707U2qX#fBK delta 16 YcmcbTcqMUzq98NN|Nom+1UJY706@qG2><{9 diff --git a/runtime/tests/simple/vx_simple.hex b/runtime/tests/simple/vx_simple.hex index ba10b414..35888614 100644 --- a/runtime/tests/simple/vx_simple.hex +++ b/runtime/tests/simple/vx_simple.hex @@ -17,7 +17,7 @@ :1000E80037150080130585DBEF00C0651305400058 :1000F800EF00405EEF00402E13051000EF00805D1A :10010800371500801305C5DCEF00C063EF00803AA7 -:10011800371500801305C5DD3704FFFFEF00806247 +:10011800371500801305C5DD37F4FF6FEF008062E7 :1001280093040000371B0080B71A0080371A00803C :10013800B719008013094401232094009305040093 :1001480013050BDFEF00006E9385040013858ADF2B From ff1239399839482686660969e9443d10ab8abcd8 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Mon, 27 Jul 2020 04:53:13 -0400 Subject: [PATCH 14/94] floating point support fixes --- benchmarks/riscv_tests/rv32uc-p-rvc.hex | 107 +++--- benchmarks/riscv_tests/rv32uf-p-fadd.hex | 74 ++++ benchmarks/riscv_tests/rv32uf-p-fclass.hex | 48 +++ benchmarks/riscv_tests/rv32uf-p-fcmp.hex | 91 +++++ benchmarks/riscv_tests/rv32uf-p-fcvt.hex | 41 +++ benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex | 111 ++++++ benchmarks/riscv_tests/rv32uf-p-fdiv.hex | 60 ++++ benchmarks/riscv_tests/rv32uf-p-fmadd.hex | 80 +++++ benchmarks/riscv_tests/rv32uf-p-fmin.hex | 106 ++++++ benchmarks/riscv_tests/rv32uf-p-ldst.hex | 38 ++ benchmarks/riscv_tests/rv32uf-p-move.hex | 72 ++++ benchmarks/riscv_tests/rv32uf-p-recoding.hex | 41 +++ benchmarks/riscv_tests/rv32uf-v-fadd.hex | 312 +++++++++++++++++ benchmarks/riscv_tests/rv32uf-v-fclass.hex | 285 +++++++++++++++ benchmarks/riscv_tests/rv32uf-v-fcmp.hex | 330 +++++++++++++++++ benchmarks/riscv_tests/rv32uf-v-fcvt.hex | 280 +++++++++++++++ benchmarks/riscv_tests/rv32uf-v-fcvt_w.hex | 351 +++++++++++++++++++ benchmarks/riscv_tests/rv32uf-v-fdiv.hex | 300 ++++++++++++++++ benchmarks/riscv_tests/rv32uf-v-fmadd.hex | 321 +++++++++++++++++ benchmarks/riscv_tests/rv32uf-v-fmin.hex | 346 ++++++++++++++++++ benchmarks/riscv_tests/rv32uf-v-ldst.hex | 276 +++++++++++++++ benchmarks/riscv_tests/rv32uf-v-move.hex | 310 ++++++++++++++++ benchmarks/riscv_tests/rv32uf-v-recoding.hex | 279 +++++++++++++++ benchmarks/riscv_tests/rv32ui-p-add.hex | 195 ++++++----- benchmarks/riscv_tests/rv32ui-p-addi.hex | 119 ++++--- benchmarks/riscv_tests/rv32ui-p-and.hex | 191 +++++----- benchmarks/riscv_tests/rv32ui-p-andi.hex | 95 ++--- benchmarks/riscv_tests/rv32ui-p-auipc.hex | 50 +-- benchmarks/riscv_tests/rv32ui-p-beq.hex | 127 +++---- benchmarks/riscv_tests/rv32ui-p-bge.hex | 139 ++++---- benchmarks/riscv_tests/rv32ui-p-bgeu.hex | 147 ++++---- benchmarks/riscv_tests/rv32ui-p-blt.hex | 127 +++---- benchmarks/riscv_tests/rv32ui-p-bltu.hex | 135 +++---- benchmarks/riscv_tests/rv32ui-p-bne.hex | 127 +++---- benchmarks/riscv_tests/rv32ui-p-fence_i.hex | 69 ++-- benchmarks/riscv_tests/rv32ui-p-jal.hex | 51 +-- benchmarks/riscv_tests/rv32ui-p-jalr.hex | 67 ++-- benchmarks/riscv_tests/rv32ui-p-lb.hex | 115 +++--- benchmarks/riscv_tests/rv32ui-p-lbu.hex | 115 +++--- benchmarks/riscv_tests/rv32ui-p-lh.hex | 119 ++++--- benchmarks/riscv_tests/rv32ui-p-lhu.hex | 119 ++++--- benchmarks/riscv_tests/rv32ui-p-lui.hex | 51 +-- benchmarks/riscv_tests/rv32ui-p-lw.hex | 123 ++++--- benchmarks/riscv_tests/rv32ui-p-or.hex | 191 +++++----- benchmarks/riscv_tests/rv32ui-p-ori.hex | 99 +++--- benchmarks/riscv_tests/rv32ui-p-sb.hex | 167 ++++----- benchmarks/riscv_tests/rv32ui-p-sh.hex | 183 +++++----- benchmarks/riscv_tests/rv32ui-p-simple.hex | 39 ++- benchmarks/riscv_tests/rv32ui-p-sll.hex | 211 +++++------ benchmarks/riscv_tests/rv32ui-p-slli.hex | 119 ++++--- benchmarks/riscv_tests/rv32ui-p-slt.hex | 191 +++++----- benchmarks/riscv_tests/rv32ui-p-slti.hex | 119 ++++--- benchmarks/riscv_tests/rv32ui-p-sltiu.hex | 119 ++++--- benchmarks/riscv_tests/rv32ui-p-sltu.hex | 191 +++++----- benchmarks/riscv_tests/rv32ui-p-sra.hex | 219 ++++++------ benchmarks/riscv_tests/rv32ui-p-srai.hex | 127 +++---- benchmarks/riscv_tests/rv32ui-p-srl.hex | 215 ++++++------ benchmarks/riscv_tests/rv32ui-p-srli.hex | 123 ++++--- benchmarks/riscv_tests/rv32ui-p-sub.hex | 191 +++++----- benchmarks/riscv_tests/rv32ui-p-sw.hex | 183 +++++----- benchmarks/riscv_tests/rv32ui-p-xor.hex | 191 +++++----- benchmarks/riscv_tests/rv32ui-p-xori.hex | 99 +++--- benchmarks/riscv_tests/rv32um-p-div.hex | 67 ++-- benchmarks/riscv_tests/rv32um-p-divu.hex | 67 ++-- benchmarks/riscv_tests/rv32um-p-mul.hex | 191 +++++----- benchmarks/riscv_tests/rv32um-p-mulh.hex | 191 +++++----- benchmarks/riscv_tests/rv32um-p-mulhsu.hex | 191 +++++----- benchmarks/riscv_tests/rv32um-p-mulhu.hex | 191 +++++----- benchmarks/riscv_tests/rv32um-p-rem.hex | 67 ++-- benchmarks/riscv_tests/rv32um-p-remu.hex | 67 ++-- hw/rtl/VX_config.vh | 2 +- hw/rtl/VX_decode.v | 97 +++-- hw/rtl/VX_define.vh | 52 ++- hw/rtl/VX_fpu_unit.v | 9 +- hw/rtl/VX_gpr_fp_ctrl.v | 6 +- hw/rtl/VX_gpr_stage.v | 9 +- hw/rtl/VX_icache_stage.v | 2 +- hw/rtl/VX_issue.v | 18 +- hw/rtl/VX_scheduler.v | 16 + hw/rtl/VX_writeback.v | 15 +- hw/rtl/interfaces/VX_decode_if.v | 2 +- hw/rtl/interfaces/VX_wb_if.v | 7 +- hw/simulate/simulator.h | 2 +- hw/simulate/testbench.cpp | 20 +- 84 files changed, 7628 insertions(+), 3178 deletions(-) create mode 100644 benchmarks/riscv_tests/rv32uf-p-fadd.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-fclass.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-fcmp.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-fcvt.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-fdiv.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-fmadd.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-fmin.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-ldst.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-move.hex create mode 100644 benchmarks/riscv_tests/rv32uf-p-recoding.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fadd.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fclass.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fcmp.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fcvt.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fcvt_w.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fdiv.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fmadd.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-fmin.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-ldst.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-move.hex create mode 100644 benchmarks/riscv_tests/rv32uf-v-recoding.hex diff --git a/benchmarks/riscv_tests/rv32uc-p-rvc.hex b/benchmarks/riscv_tests/rv32uc-p-rvc.hex index dc3c066c..98774379 100644 --- a/benchmarks/riscv_tests/rv32uc-p-rvc.hex +++ b/benchmarks/riscv_tests/rv32uc-p-rvc.hex @@ -1,22 +1,22 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F00400093E19153FD -:10004000173F000023203FFC6FF09FFF732540F116 -:1000500063100500970200009382020173905230F2 -:1000600073500018970200009382C20173905230BF -:100070009302F0FF7390023B9302F0017390023AF7 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153173F00009D +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 :1000800097020000938282017390523073502030A7 :1000900073503030735040309301000097020000DD :1000A000938282F673905230130510001315F501F8 -:1000B000634805000F00F00F93011000730000006B -:1000C00097020080938202F4638E020073905210B4 -:1000D000B7B20000938292107390223073232030C5 -:1000E000E39E62F473500030970200009382420155 -:1000F00073901234732540F1730020309301200077 -:100100009305A0296F10B06F1032547698BADCFEB8 -:100110001032547698BADCFE130000001300000081 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930120009305A0296F10706F1300000069 +:100110001032547698BADCFE1032547698BADCFE6F :100120001300000013000000130000001300000083 :100130001300000013000000130000001300000073 :100140001300000013000000130000001300000063 @@ -511,46 +511,46 @@ :101FD0000000000000000000000000000000000001 :101FE00000000000000000000000000000000000F1 :101FF00000000000000000000000000000009385C9 -:102000001500930EB02993012000639FD52337114B +:102000001500930EB02993012000639DD52337114D :10201000000013014123E81FB71E0000938E0E63DA -:10202000930130006312D5237D610100B71E0000CB -:10203000938E4E42930140006318D121017101003B -:10204000B71E0000938E4E2293015000631ED11FD5 -:1020500097E5FFFF9385850BC8410505C8C1D041B1 -:10206000B7CEDCFE938E9EA993016000631ED61D41 +:10202000930130006310D5237D610100B71E0000CD +:10203000938E4E42930140006316D121017101003D +:10204000B71E0000938E4E2293015000631CD11FD7 +:1020500097E5FFFF9385050CC8410505C8C1D04130 +:10206000B7CEDCFE938E9EA993016000631CD61D43 :102070001365100041150100930E10FF93018000BD -:102080006314D51D93671000C1570100930E00FF24 -:1020900093019000639AD71B05743184930E10FE50 -:1020A0009301B0006312D41B05743180B70E100089 -:1020B000938E1EFE9301C0006318D41979543D9885 -:1020C000930EE0FE9301E0006310D419D14419454A -:1020D000898C0100930EE0009301F0006396D41701 +:102080006312D51D93671000C1570100930E00FF26 +:10209000930190006398D71B05743184930E10FE52 +:1020A0009301B0006310D41B05743180B70E10008B +:1020B000938E1EFE9301C0006316D41979543D9887 +:1020C000930EE0FE9301E000631ED417D14419453E +:1020D000898C0100930EE0009301F0006394D41703 :1020E000D1441945A98C0100930E200193010001F0 -:1020F000639CD415D1441945C98C0100930E60012D -:10210000930110016392D415D1441945E98C010063 -:10211000930E4000930120016398D41337140000FC -:102120001304442312040100B72E0100938E0E34D1 -:1021300093015001631AD411814011A011A011A084 -:1021400021A20100930E00009301E001639ED00FD5 -:10215000014511C111A011A0C5A80100930E0000F6 -:102160009301F0016312D00F054511E111A011A0F8 -:10217000E1A80100930E0000930100026316D00D48 -:10218000054511C111A0C9A0930E000093011002D2 -:10219000631CD00B014511E111A07DA0930E00003E -:1021A000930120026312D00B970200009382E20099 -:1021B0008140828211A011A041A80100930E00006D -:1021C000930130026392D009970200009382E200EB -:1021D0008140829211A011A085A8B38050400100D7 -:1021E000930EE0FF930140026390D0079702000036 -:1021F0009382E2008140112011A011A0B1A0B38010 -:1022000050400100930EE0FF93015002639ED00303 -:1022100017E1FFFF130181EF324505052AC632465B -:10222000B7CEDCFE938E9EA993018002631ED60179 -:1022300013053012AA82AA92930E60249301A00281 -:102240006394D201631C30000F00F00F6380010023 -:102250009391110093E11100730000000F00F00F43 -:102260009301100073000000731000C00000000014 -:10227000000000000000000000000000000000005E +:1020F000639AD415D1441945C98C0100930E60012F +:10210000930110016390D415D1441945E98C010065 +:10211000930E4000930120016396D41305641304C9 +:1021200044231204B72E0100938E0E349301500104 +:10213000631AD411814011A011A011A021A20100A5 +:10214000930E00009301E001639ED00F014511C181 +:1021500011A011A0C5A80100930E00009301F00189 +:102160006312D00F054511E111A011A0E1A80100F3 +:10217000930E0000930100026316D00D054511C1B6 +:1021800011A0C9A0930E000093011002631CD00B94 +:10219000014511E111A07DA0930E000093012002E2 +:1021A0006312D00B970200009382E200814082828A +:1021B00011A011A041A80100930E0000930130026C +:1021C0006392D009970200009382E20081408292DC +:1021D00011A011A085A8B38050400100930EE0FF2C +:1021E000930140026390D007970200009382E200BF +:1021F0008140112011A011A0B1A0B3805040010076 +:10220000930EE0FF93015002639ED00317E1FFFF9E +:10221000130141F0324505052AC63246B7CEDCFE31 +:10222000938E9EA993018002631ED601130530127E +:10223000AA82AA92930E60249301A0026394D20111 +:10224000631030020F00F00F6380010093911100C2 +:1022500093E111009308D00513850100730000007D +:102260000F00F00F930110009308D0051305000034 +:1022700073000000731000C00000000000000000A8 :10228000000000000000000000000000000000004E :10229000000000000000000000000000000000003E :1022A000000000000000000000000000000000002E @@ -743,8 +743,7 @@ :102E50000000000000000000000000000000000072 :102E60000000000000000000000000000000000062 :102E70000000000000000000000000000000000052 -:102E80000000000000000000000000000000000042 -:0A2E90000000000000000000000038 +:0C2E800000000000000000000000000046 :1030000000000000000000000000000000000000C0 :1030100000000000000000000000000000000000B0 :1030200000000000000000000000000000000000A0 diff --git a/benchmarks/riscv_tests/rv32uf-p-fadd.hex b/benchmarks/riscv_tests/rv32uf-p-fadd.hex new file mode 100644 index 00000000..b6b144d2 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fadd.hex @@ -0,0 +1,74 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07200500872045007F +:10012000072185008326C500D3711000538501E0A7 +:10013000F3151000130600006310D51E639EC51C46 +:1001400093013000172500001305C5EC07200500BA +:1001500087204500072185008326C500D371100044 +:10016000538501E0F3151000130610006316D51A2D +:100170006394C51A9301400017250000130585EA12 +:100180000720050087204500072185008326C5003C +:10019000D3711000538501E0F31510001306100011 +:1001A000631CD516639AC5169301500017250000ED +:1001B000130545E807200500872045000721850035 +:1001C0008326C500D3711008538501E0F315100094 +:1001D000130600006312D5146390C51493016000E8 +:1001E00017250000130505E60720050087204500B8 +:1001F000072185008326C500D3711008538501E0CF +:10020000F3151000130610006318D5106396C5107F +:1002100093017000172500001305C5E307200500B2 +:1002200087204500072185008326C500D37110086B +:10023000538501E0F315100013061000631ED50C62 +:10024000639CC50C9301800017250000130585E110 +:100250000720050087204500072185008326C5006B +:10026000D3711010538501E0F31510001306000040 +:100270006314D50A6392C50A930190001725000004 +:10028000130545DF0720050087204500072185006D +:100290008326C500D3711010538501E0F3151000BB +:1002A00013061000631AD5066398C5069301A000D3 +:1002B00017250000130505DD0720050087204500F0 +:1002C000072185008326C500D3711010538501E0F6 +:1002D000F3151000130610006310D504639EC502C9 +:1002E0009301B000172500001305C5DA07200500AB +:1002F00087204500072185008326C500D37110089B +:10030000538501E0F3151000130600016316D500B4 +:100310006394C500631030020F00F00F638001008A +:100320009391110093E111009308D005138501000A +:10033000730000000F00F00F930110009308D00528 +:100340001305000073000000731000C000000000DF +:10035000000000000000000000000000000000009D +:10036000000000000000000000000000000000008D +:0C03700000000000000000000000000081 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000020400000803F000000000000604011 +:1020100033639AC4CDCC8C3F0000000000409AC4CA +:10202000DB0F494077CC2B3200000000DB0F49402A +:10203000000020400000803F000000000000C03F82 +:1020400033639AC4CDCC8CBF0000000000409AC41A +:10205000DB0F494077CC2B3200000000DB0F4940FA +:10206000000020400000803F0000000000002040F1 +:1020700033639AC4CDCC8CBF0000000085D3A94443 +:10208000DB0F494077CC2B32000000002DEE0633E9 +:102090000000807F0000807F000000000000C07F03 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-fclass.hex b/benchmarks/riscv_tests/rv32uf-p-fclass.hex new file mode 100644 index 00000000..3389f22d --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fclass.hex @@ -0,0 +1,48 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F173002030370580FF5F +:10011000530505F0531505E0930E100093012000E0 +:100120006316D50F370580BF530505F0531505E05D +:10013000930E200093013000631AD50D370580809F +:100140001305F5FF530505F0531505E0930E400028 +:1001500093014000631CD50B37050080530505F063 +:10016000531505E0930E8000930150006310D50BEA +:1001700013050000530505F0531505E0930E00012B +:10018000930160006314D509370580001305F5FF5E +:10019000530505F0531505E0930E0002930170001E +:1001A0006316D5073705803F530505F0531505E065 +:1001B000930E000493018000631AD5053705807FF4 +:1001C000530505F0531505E0930E000893019000C8 +:1001D000631ED5033705807F13051500530505F011 +:1001E000531505E0930E00109301A0006310D50392 +:1001F0003705C07F530505F0531505E0930E002029 +:100200009301B0006314D501631030020F00F00FAA +:10021000638001009391110093E111009308D005D0 +:1002200013850100730000000F00F00F9301100010 +:100230009308D0051305000073000000731000C080 +:1002400000000000000000000000000000000000AE +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:0C02700000000000000000000000000082 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-fcmp.hex b/benchmarks/riscv_tests/rv32uf-p-fcmp.hex new file mode 100644 index 00000000..4b2005c2 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fcmp.hex @@ -0,0 +1,91 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07200500872045007F +:10012000072185008326C500532510A0F315100074 +:10013000130600006316D52A6394C52A9301300084 +:1001400017250000130505ED072005008720450051 +:10015000072185008326C500530510A0F315100064 +:1001600013060000631ED526639CC526930140003C +:1001700017250000130505EB072005008720450023 +:10018000072185008326C500531510A0F315100024 +:10019000130600006316D5246394C5249301500010 +:1001A00017250000130505E90720050087204500F5 +:1001B000072185008326C500532510A0F3151000E4 +:1001C00013060000631ED520639CC52093016000C8 +:1001D00017250000130505E70720050087204500C7 +:1001E000072185008326C500530510A0F3151000D4 +:1001F000130600006316D51E6394C51E930170009C +:1002000017250000130505E5072005008720450098 +:10021000072185008326C500531510A0F315100093 +:1002200013060000631ED51A639CC51A9301800053 +:1002300017250000130505E307200500872045006A +:10024000072185008326C500532510A0F315100053 +:10025000130600006316D5186394C5189301900027 +:1002600017250000130505E107200500872045003C +:10027000072185008326C500532510A0F315100023 +:1002800013060000631ED514639CC5149301A000DF +:1002900017250000130505DF07200500872045000E +:1002A000072185008326C500532510A0F3151000F3 +:1002B000130600016316D5126394C5129301B000B2 +:1002C00017250000130505DD0720050087204500E0 +:1002D000072185008326C500531510A0F3151000D3 +:1002E00013060001631ED50E639CC50E9301C0006A +:1002F00017250000130505DB0720050087204500B2 +:10030000072185008326C500531510A0F3151000A2 +:10031000130600016316D50C6394C50C9301D0003D +:1003200017250000130505D9072005008720450083 +:10033000072185008326C500531510A0F315100072 +:1003400013060001631ED508639CC5089301E000F5 +:1003500017250000130505D7072005008720450055 +:10036000072185008326C500530510A0F315100052 +:10037000130600016316D5066394C5069301F000C9 +:1003800017250000130505D5072005008720450027 +:10039000072185008326C500530510A0F315100022 +:1003A00013060001631ED502639CC5029301000180 +:1003B00017250000130505D30720050087204500F9 +:1003C000072185008326C500530510A0F3151000F2 +:1003D000130600016316D5006394C5006310300254 +:1003E0000F00F00F638001009391110093E1110061 +:1003F0009308D00513850100730000000F00F00F73 +:10040000930110009308D00513050000730000004D +:10041000731000C000000000000000000000000099 +:1004200000000000000000000000000000000000CC +:0C043000000000000000000000000000C0 +: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/benchmarks/riscv_tests/rv32uf-p-fcvt.hex b/benchmarks/riscv_tests/rv32uf-p-fcvt.hex new file mode 100644 index 00000000..208445ba --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fcvt.hex @@ -0,0 +1,41 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF8326050013052000B1 +:10012000537005D073101000530500E0631AD50614 +:100130009301300017250000130505ED8326050007 +:100140001305E0FF537005D073101000530500E055 +:100150006318D5049301400017250000130505EB33 +:100160008326050013052000537015D0731010006E +:10017000530500E06316D5029301500017250000D7 +:10018000130505E9832605001305E0FF537015D01C +:1001900073101000530500E06314D50063103002A3 +:1001A0000F00F00F638001009391110093E11100A3 +:1001B0009308D00513850100730000000F00F00FB5 +:1001C000930110009308D005130500007300000090 +:1001D000731000C0000000000000000000000000DC +:1001E000000000000000000000000000000000000F +:0C01F00000000000000000000000000003 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000000000040000000C0000000400000804FC1 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex b/benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex new file mode 100644 index 00000000..6972b592 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex @@ -0,0 +1,111 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07200500872045007F +:10012000072185008326C500531500C0F315100074 +:10013000130610006314D53C6392C53C9301300054 +:1001400017250000130505ED072005008720450051 +:10015000072185008326C500531500C0F315100044 +:1001600013060000631CD538639AC538930140001C +:1001700017250000130505EB072005008720450023 +:10018000072185008326C500531500C0F315100014 +:10019000130610006314D5366392C53693015000E0 +:1001A00017250000130505E90720050087204500F5 +:1001B000072185008326C500531500C0F3151000E4 +:1001C00013061000631CD532639AC5329301600098 +:1001D00017250000130505E70720050087204500C7 +:1001E000072185008326C500531500C0F3151000B4 +:1001F000130600006314D5306392C530930170007C +:1002000017250000130505E5072005008720450098 +:10021000072185008326C500531500C0F315100083 +:1002200013061000631CD52C639AC52C9301800023 +:1002300017250000130505E307200500872045006A +:10024000072185008326C500531500C0F315100053 +:10025000130600016314D52A6392C52A9301900006 +:1002600017250000130505E107200500872045003C +:10027000072185008326C500531500C0F315100023 +:1002800013060001631CD526639AC5269301C0009E +:1002900017250000130505DF07200500872045000E +:1002A000072185008326C500531510C0F3151000E3 +:1002B000130600016314D5246392C5249301D00072 +:1002C00017250000130505DD0720050087204500E0 +:1002D000072185008326C500531510C0F3151000B3 +:1002E00013060001631CD520639AC5209301E0002A +:1002F00017250000130505DB0720050087204500B2 +:10030000072185008326C500531510C0F315100082 +:10031000130610006314D51E6392C51E9301F000EE +:1003200017250000130505D9072005008720450083 +:10033000072185008326C500531510C0F315100052 +:1003400013061000631CD51A639AC51A93010001A5 +:1003500017250000130505D7072005008720450055 +:10036000072185008326C500531510C0F315100022 +:10037000130600006314D5186392C5189301100189 +:1003800017250000130505D5072005008720450027 +:10039000072185008326C500531510C0F3151000F2 +:1003A00013061000631CD514639AC5149301200131 +:1003B00017250000130505D30720050087204500F9 +:1003C000072185008326C500531510C0F3151000C2 +:1003D000130600016314D5126392C5129301300114 +:1003E00017250000130505D10720050087204500CB +:1003F000072185008326C500531510C0F315100092 +:1004000013060000631CD50E639AC50E97200000EA +:10041000938040CF87A00000D3F000C0B70E0080CB +:10042000938EFEFF9301A002639AD00D97200000E7 +:10043000938040CD87A08000D3F000C0B70E00802D +:100440009301C002639CD00B97200000938080CB67 +:1004500087A04000D3F000C0B70E0080938EFEFF4F +:1004600093014003639CD00997200000938080C9CA +:1004700087A0C000D3F000C0B70E0080938EFEFFAF +:1004800093016003639CD00797200000938080C78E +:1004900087A00000D3F010C0930EF0FF9301E0039B +:1004A000639ED005972000009380C0C587A04000C0 +:1004B000D3F010C0930EF0FF9301F0036390D005CA +:1004C00097200000938000C487A08000D3F010C064 +:1004D000930E0000930100046392D0039720000064 +:1004E000938040C287A0C000D3F010C0930EF0FFED +:1004F000930110046394D001631030020F00F00FD9 +:10050000638001009391110093E111009308D005DD +:1005100013850100730000000F00F00F930110001D +:100520009308D0051305000073000000731000C08D +:0C053000000000000000000000000000BF +: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/benchmarks/riscv_tests/rv32uf-p-fdiv.hex b/benchmarks/riscv_tests/rv32uf-p-fdiv.hex new file mode 100644 index 00000000..689c3368 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fdiv.hex @@ -0,0 +1,60 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07200500872045007F +:10012000072185008326C500D3711018538501E08F +:10013000F3151000130610006312D5146390C51454 +:1001400093013000172500001305C5EC07200500BA +:1001500087204500072185008326C500D37110182C +:10016000538501E0F3151000130610006318D51035 +:100170006396C5109301400017250000130585EA1A +:100180000720050087204500072185008326C5003C +:10019000D3711018538501E0F31510001306000009 +:1001A000631ED50C639CC50C9301500017250000FD +:1001B000130545E807200500872045000721850035 +:1001C0008326C500D3710058538501E0F315100054 +:1001D000130610006314D50A6392C50A93016000E8 +:1001E00017250000130505E60720050087204500B8 +:1001F000072185008326C500D3710058538501E08F +:10020000F315100013060000631AD5066398C5069F +:1002100093017000172500001305C5E307200500B2 +:1002200087204500072185008326C500D37100582B +:10023000538501E0F3151000130600016310D50487 +:10024000639EC50293018000172500001305C5E1D8 +:100250000720050087204500072185008326C5006B +:10026000D3710058538501E0F315100013061000F8 +:100270006316D5006394C500631030020F00F00FC1 +:10028000638001009391110093E111009308D00560 +:1002900013850100730000000F00F00F93011000A0 +:1002A0009308D0051305000073000000731000C010 +:0C02B00000000000000000000000000042 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000DB0F494054F82D4000000000E0EE933F04 +:1020100000409AC433639A4400000000A2C57FBF09 +:10202000DB0F49400000803F00000000DB0F49400B +:10203000DB0F49400000000000000000C5DFE23F68 +:1020400000401C4600000000000000000000C842E4 +:10205000000080BF00000000000000000000C07F02 +:102060000000000000002B43000000000000000002 +:10207000263A51410000000000000000000000006E +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-fmadd.hex b/benchmarks/riscv_tests/rv32uf-p-fmadd.hex new file mode 100644 index 00000000..77d00338 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fmadd.hex @@ -0,0 +1,80 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07200500872045007F +:10012000072185008326C500C3711010538501E0A7 +:10013000F3151000130600006314D5246392C52440 +:1001400093013000172500001305C5EC07200500BA +:1001500087204500072185008326C500C371101044 +:10016000538501E0F315100013061000631AD52023 +:100170006398C5209301400017250000130585EA08 +:100180000720050087204500072185008326C5003C +:10019000C3711010538501E0F31510001306000021 +:1001A0006310D51E639EC51C9301500017250000E7 +:1001B000130545E807200500872045000721850035 +:1001C0008326C500CF711010538501E0F315100090 +:1001D000130600006316D51A6394C51A93016000D4 +:1001E00017250000130505E60720050087204500B8 +:1001F000072185008326C500CF711010538501E0CB +:10020000F315100013061000631CD516639AC5166B +:1002100093017000172500001305C5E307200500B2 +:1002200087204500072185008326C500CF71101067 +:10023000538501E0F3151000130600006312D51476 +:100240006390C5149301800017250000130585E114 +:100250000720050087204500072185008326C5006B +:10026000C7711010538501E0F3151000130600004C +:100270006318D5106396C5109301900017250000F0 +:10028000130545DF0720050087204500072185006D +:100290008326C500C7711010538501E0F3151000C7 +:1002A00013061000631ED50C639CC50C9301A000BF +:1002B00017250000130505DD0720050087204500F0 +:1002C000072185008326C500C7711010538501E002 +:1002D000F3151000130600006314D50A6392C50AD3 +:1002E0009301B000172500001305C5DA07200500AB +:1002F00087204500072185008326C500CB7110109B +:10030000538501E0F315100013060000631AD506AB +:100310006398C5069301C00017250000130585D812 +:100320000720050087204500072185008326C5009A +:10033000CB711010538501E0F31510001306100067 +:100340006310D504639EC5029301D00017250000F9 +:10035000130545D6072005008720450007218500A5 +:100360008326C500CB711010538501E0F3151000F2 +:10037000130600006316D5006394C50063103002B5 +:100380000F00F00F638001009391110093E11100C1 +:100390009308D00513850100730000000F00F00FD3 +:1003A000930110009308D0051305000073000000AE +:0C03B000731000C00000000000000000FE +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000000000803F000020400000803F0000604052 +:10201000000080BF33639AC4CDCC8C3F66869A445F +:10202000000000400000A0C0000000C0000040C14F +:102030000000803F000020400000803F000060C0A2 +:10204000000080BF33639AC4CDCC8C3F66869AC4AF +:10205000000000400000A0C0000000C0000040419F +:102060000000803F000020400000803F0000C03F93 +:10207000000080BF33639AC4CDCC8C3F00409A44AB +:10208000000000400000A0C0000000C0000000C12F +:102090000000803F000020400000803F0000C0BFE3 +:1020A000000080BF33639AC4CDCC8C3F00409AC4FB +:1020B000000000400000A0C0000000C0000000417F +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-fmin.hex b/benchmarks/riscv_tests/rv32uf-p-fmin.hex new file mode 100644 index 00000000..644a3069 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-fmin.hex @@ -0,0 +1,106 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07200500872045007F +:10012000072185008326C500D3011028538501E0EF +:10013000F3151000130600006310D538639EC53612 +:1001400093013000172500001305C5EC07200500BA +:1001500087204500072185008326C500D30110288C +:10016000538501E0F3151000130600006316D53423 +:100170006394C5349301400017250000130585EAF8 +:100180000720050087204500072185008326C5003C +:10019000D3011028538501E0F31510001306000069 +:1001A000631CD530639AC5309301500017250000B9 +:1001B000130545E807200500872045000721850035 +:1001C0008326C500D3011028538501E0F3151000E4 +:1001D000130600006312D52E6390C52E93016000B4 +:1001E00017250000130505E60720050087204500B8 +:1001F000072185008326C500D3011028538501E01F +:10020000F3151000130600006318D52A6396C52A5B +:1002100093017000172500001305C5E307200500B2 +:1002200087204500072185008326C500D3011028BB +:10023000538501E0F315100013060000631ED52658 +:10024000639CC5269301C00017250000130585E1B6 +:100250000720050087204500072185008326C5006B +:10026000D3111028538501E0F31510001306000088 +:100270006314D5246392C5249301D0001725000090 +:10028000130545DF0720050087204500072185006D +:100290008326C500D3111028538501E0F315100003 +:1002A00013060000631AD5206398C5209301E0006F +:1002B00017250000130505DD0720050087204500F0 +:1002C000072185008326C500D3111028538501E03E +:1002D000F3151000130600006310D51E639EC51CA5 +:1002E0009301F000172500001305C5DA072005006B +:1002F00087204500072185008326C500D3111028DB +:10030000538501E0F3151000130600006316D51A9B +:100310006394C51A9301000117250000130585D8C1 +:100320000720050087204500072185008326C5009A +:10033000D3111028538501E0F315100013060000B7 +:10034000631CD516639AC51693011001172500008A +:10035000130545D6072005008720450007218500A5 +:100360008326C500D3111028538501E0F315100032 +:10037000130600006312D5146390C5149301400165 +:1003800017250000130505D4072005008720450028 +:10039000072185008326C500D3111028538501E06D +:1003A000F3151000130600016318D5106396C510ED +:1003B00093015001172500001305C5D10720050042 +:1003C00087204500072185008326C500D31110280A +:1003D000538501E0F315100013060000631ED50CD1 +:1003E000639CC50C9301E00117250000130585CF20 +:1003F0000720050087204500072185008326C500CA +:10040000D3011028538501E0F315100013060000F6 +:100410006314D50A6392C50A9301F0011725000001 +:10042000130545CD072005008720450007218500DD +:100430008326C500D3011028538501E0F315100071 +:1004400013060000631AD5066398C50693010002DF +:1004500017250000130505CB072005008720450060 +:10046000072185008326C500D3111028538501E09C +:10047000F3151000130600006310D504639EC50237 +:1004800093011002172500001305C5C807200500B9 +:1004900087204500072185008326C500D311102839 +:1004A000538501E0F3151000130600006316D50014 +:1004B0006394C500631030020F00F00F63800100E9 +:1004C0009391110093E111009308D0051385010069 +:1004D000730000000F00F00F930110009308D00587 +:1004E0001305000073000000731000C0000000003E +:0C04F00000000000000000000000000000 +: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/benchmarks/riscv_tests/rv32uf-p-ldst.hex b/benchmarks/riscv_tests/rv32uf-p-ldst.hex new file mode 100644 index 00000000..a3aa194f --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-ldst.hex @@ -0,0 +1,38 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F173002030972500005E +:10011000938545EF87A0450027AA150003A5450153 +:10012000B70E0040930120006314D503972500000B +:10013000938545ED87A0050027AC150003A5850133 +:10014000B70E80BF930130006314D50163103002F5 +:100150000F00F00F638001009391110093E11100F3 +:100160009308D00513850100730000000F00F00F05 +:10017000930110009308D0051305000073000000E0 +:10018000731000C00000000000000000000000002C +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000080BF0000004000004040000080C091 +:10201000EFBEADDEBEBAFECAEA1DADAB0DD03713C2 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-move.hex b/benchmarks/riscv_tests/rv32uf-p-move.hex new file mode 100644 index 00000000..1964ab15 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-move.hex @@ -0,0 +1,72 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F17300203073D03000A7 +:100110003715000013054523F3153500930E100025 +:1001200093012000639CD52773253000930E400374 +:10013000930130006314D52773251000930E4001FE +:1001400093014000631CD52573552100930E1000C8 +:10015000930150006314D52573253000930E40059C +:1001600093016000631CD52373751200930E400148 +:10017000930170006314D52373253000930E00059E +:1001800093018000631CD521B75534129385856790 +:1001900013060000D38005F0530106F053802020A1 +:1001A000530500E0B75E3412938E8E679301A00072 +:1001B0006316D51FB7553412938585671306F0FF74 +:1001C000D38005F0530106F053802020530500E052 +:1001D000B75E3492938E8E679301B0006310D51D85 +:1001E000B75534929385856713060000D38005F0D8 +:1001F000530106F053802020530500E0B75E34120F +:10020000938E8E679301C000631AD519B755349247 +:10021000938585671306F0FFD38005F0530106F040 +:1002200053802020530500E0B75E3492938E8E6792 +:100230009301D0006314D517B755341293858567A1 +:1002400013060000D38005F0530106F053902020E0 +:10025000530500E0B75E3492938E8E6793014001A0 +:10026000631ED513B7553412938585671306F0FFC7 +:10027000D38005F0530106F053902020530500E091 +:10028000B75E3412938E8E67930150016318D511B7 +:10029000B75534929385856713060000D38005F027 +:1002A000530106F053902020530500E0B75E3492CE +:1002B000938E8E67930160016312D50FB755349208 +:1002C000938585671306F0FFD38005F0530106F090 +:1002D00053902020530500E0B75E3412938E8E6752 +:1002E00093017001631CD50BB75534129385856754 +:1002F00013060000D38005F0530106F053A0202020 +:10030000530500E0B75E3412938E8E679301E001CF +:100310006316D509B7553412938585671306F0FF28 +:10032000D38005F0530106F053A02020530500E0D0 +:10033000B75E3492938E8E679301F0016310D507F8 +:10034000B75534929385856713060000D38005F076 +:10035000530106F053A02020530500E0B75E34920D +:10036000938E8E6793010002631AD503B7553492BA +:10037000938585671306F0FFD38005F0530106F0DF +:1003800053A02020530500E0B75E3412938E8E6791 +:10039000930110026314D501631030020F00F00FB7 +:1003A000638001009391110093E111009308D0053F +:1003B00013850100730000000F00F00F930110007F +:1003C0009308D0051305000073000000731000C0EF +:1003D000000000000000000000000000000000001D +:1003E000000000000000000000000000000000000D +:0C03F00000000000000000000000000001 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-recoding.hex b/benchmarks/riscv_tests/rv32uf-p-recoding.hex new file mode 100644 index 00000000..23e1e033 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-p-recoding.hex @@ -0,0 +1,41 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F17300203017250000DE +:10011000072045EF17250000872005EFD3F00010DA +:10012000532510A0930E1000930120006314D507EF +:10013000530510A0930E100093013000631CD505E9 +:10014000531510A0930E0000930140006314D505D1 +:10015000537000D013051000D37005D0D3F00010F9 +:10016000532510A0930E1000930150006314D50383 +:10017000530510A0930E100093016000631CD5017D +:10018000531510A0930E0000930170006314D50165 +:10019000631030020F00F00F638001009391110093 +:1001A00093E111009308D00513850100730000004E +:1001B0000F00F00F930110009308D0051305000005 +:1001C00073000000731000C0000000000000000079 +:1001D000000000000000000000000000000000001F +:1001E000000000000000000000000000000000000F +:0C01F00000000000000000000000000003 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000080FF000040400000000000000000D1 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fadd.hex b/benchmarks/riscv_tests/rv32uf-v-fadd.hex new file mode 100644 index 00000000..93f7ddeb --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fadd.hex @@ -0,0 +1,312 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A00013051004971500009385859D97F6FFFF8F +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385459A97F6FFFF9386C6AD17F6FFFF92 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF8130510049715000093850598C8 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C59297F6FFFF09 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C58B97F6FFFF9386C68C17F6FFFF30 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545821306100497F6FFFFE6 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306067397E6FFFF12 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306066497E6FFFF9386866A53 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C65A97E6FFFF9386866443 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093072002930500001303F30317 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7579602F8 +:102B8000B705080093878730130700009385C5FFBA +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306064697E6FFFF9386864108 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C60000720050087204500072185008326C50031 +:102C7000D3711000538501E0F31510001306000016 +:102C80006310D51E639EC51C93013000171500000C +:102C900013054538072005008720450007218500DA +:102CA0008326C500D3711000538501E0F315100091 +:102CB000130610006316D51A6394C51A93014000D9 +:102CC000171500001305053607200500872045006D +:102CD000072185008326C500D3711000538501E0CC +:102CE000F315100013061000631CD516639AC51661 +:102CF00093015000171500001305C5330720050088 +:102D000087204500072185008326C500D371100860 +:102D1000538501E0F3151000130600006312D5146B +:102D20006390C514930160001715000013058531E9 +:102D30000720050087204500072185008326C50060 +:102D4000D3711008538501E0F3151000130610002D +:102D50006318D5106396C510930170001715000015 +:102D60001305452F07200500872045000721850012 +:102D70008326C500D3711008538501E0F3151000B8 +:102D800013061000631ED50C639CC50C93018000D4 +:102D9000171500001305052D0720050087204500A5 +:102DA000072185008326C500D3711010538501E0EB +:102DB000F3151000130600006314D50A6392C50AC8 +:102DC00093019000171500001305C52A0720050080 +:102DD00087204500072185008326C500D371101088 +:102DE000538501E0F315100013061000631AD50691 +:102DF0006398C5069301A0001715000013058528E8 +:102E00000720050087204500072185008326C5008F +:102E1000D3711010538501E0F31510001306100054 +:102E20006310D504639EC5029301B000171500001E +:102E3000130545260720050087204500072185004A +:102E40008326C500D3711008538501E0F3151000E7 +:102E5000130600016316D5006394C500631A3000A1 +:102E60001395110063000500136515007300000041 +:0C2E70001305100073000000731000C078 +:102E7C00417373657274696F6E206661696C656409 +:102E8C003A2061646472203E3D202831554C203C30 +:102E9C003C203132292026262061646472203C209B +:102EAC003633202A202831554C203C3C2031322905 +:102EBC000A000000417373657274696F6E2066615D +:102ECC00696C65643A20212870745B315D5B6164C8 +:102EDC0064722F2831554C203C3C203132295D2026 +:102EEC0026203078303830292026262063617573EF +:102EFC0065203D3D203078660A0000004173736503 +:102F0C007274696F6E206661696C65643A206E6FCD +:102F1C0064650A00417373657274696F6E20666133 +:102F2C00696C65643A20757365725F6D6170706968 +:102F3C006E675B616464722F2831554C203C3C20D9 +:102F4C003132295D2E61646472203D3D20300A00CF +:102F5C00417373657274696F6E206661696C656428 +:102F6C003A2070745B315D5B616464722F2831555B +:102F7C004C203C3C203132295D20262030783034E6 +:102F8C00300A0000417373657274696F6E2066615C +:102F9C00696C65643A2070745B315D5B616464726A +:102FAC002F2831554C203C3C203132295D202620E5 +:102FBC0030783038300A0000417373657274696F71 +:102FCC006E206661696C65643A2074662D3E65708E +:102FDC006320252034203D3D20300A004173736569 +:102FEC007274696F6E206661696C65643A20212287 +:102FFC00696C6C6567616C20696E7374727563744F +:10300C00696F6E220A000000417373657274696FF8 +:10301C006E206661696C65643A202122756E657854 +:10302C0070656374656420657863657074696F6E30 +:10303C00220A0000417373657274696F6E206661B9 +:10304C00696C65643A202122756E737570706F72AD +:10305C007465642073617470206D6F6465220A005E +:10400000000020400000803F0000000000006040F1 +:1040100033639AC4CDCC8C3F0000000000409AC4AA +:10402000DB0F494077CC2B3200000000DB0F49400A +:10403000000020400000803F000000000000C03F62 +:1040400033639AC4CDCC8CBF0000000000409AC4FA +:10405000DB0F494077CC2B3200000000DB0F4940DA +:10406000000020400000803F0000000000002040D1 +:1040700033639AC4CDCC8CBF0000000085D3A94423 +:10408000DB0F494077CC2B32000000002DEE0633C9 +:104090000000807F0000807F000000000000C07FE3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fclass.hex b/benchmarks/riscv_tests/rv32uf-v-fclass.hex new file mode 100644 index 00000000..73c44f6b --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fclass.hex @@ -0,0 +1,285 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385C58C97F6FFFF60 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385858997F6FFFF9386C6AD17F6FFFF63 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385458799 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385058297F6FFFFD9 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385057B97F6FFFF9386C68C17F6FFFF00 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938585711306100497F6FFFFC7 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306466297E6FFFFE3 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306465397E6FFFF9386866A24 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306064A97E6FFFF9386866413 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE7093074002930500001303F303F7 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B757CB06BF +:102B8000B705080093878732130700009385C5FFB8 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306463597E6FFFF93868641D9 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500073103000370580FF530505F0531505E06C +:102C6000930E1000930120006316D50F370580BF27 +:102C7000530505F0531505E0930E20009301300035 +:102C8000631AD50D370580801305F5FF530505F050 +:102C9000531505E0930E400093014000631CD50BD3 +:102CA00037050080530505F0531505E0930E8000AD +:102CB000930150006310D50B13050000530505F078 +:102CC000531505E0930E0001930160006314D509CC +:102CD000370580001305F5FF530505F0531505E092 +:102CE000930E0002930170006316D5073705803FED +:102CF000530505F0531505E0930E00049301800081 +:102D0000631AD5053705807F530505F0531505E097 +:102D1000930E000893019000631ED5033705807F52 +:102D200013051500530505F0531505E0930E00102B +:102D30009301A0006310D5033705C07F530505F04C +:102D4000531505E0930E00209301B0006314D501E4 +:102D5000631A300013951100630005001365150018 +:102D6000730000001305100073000000731000C012 +:102D7000417373657274696F6E206661696C656416 +:102D80003A2061646472203E3D202831554C203C3D +:102D90003C203132292026262061646472203C20A8 +:102DA0003633202A202831554C203C3C2031322912 +:102DB0000A000000417373657274696F6E2066616A +:102DC000696C65643A20212870745B315D5B6164D5 +:102DD00064722F2831554C203C3C203132295D2033 +:102DE00026203078303830292026262063617573FC +:102DF00065203D3D203078660A0000004173736510 +:102E00007274696F6E206661696C65643A206E6FDA +:102E100064650A00417373657274696F6E20666140 +:102E2000696C65643A20757365725F6D6170706975 +:102E30006E675B616464722F2831554C203C3C20E6 +:102E40003132295D2E61646472203D3D20300A00DC +:102E5000417373657274696F6E206661696C656435 +:102E60003A2070745B315D5B616464722F28315568 +:102E70004C203C3C203132295D20262030783034F3 +:102E8000300A0000417373657274696F6E20666169 +:102E9000696C65643A2070745B315D5B6164647277 +:102EA0002F2831554C203C3C203132295D202620F2 +:102EB00030783038300A0000417373657274696F7E +:102EC0006E206661696C65643A2074662D3E65709B +:102ED0006320252034203D3D20300A004173736576 +:102EE0007274696F6E206661696C65643A20212294 +:102EF000696C6C6567616C20696E7374727563745C +:102F0000696F6E220A000000417373657274696F05 +:102F10006E206661696C65643A202122756E657861 +:102F200070656374656420657863657074696F6E3D +:102F3000220A0000417373657274696F6E206661C6 +:102F4000696C65643A202122756E737570706F72BA +:102F50007465642073617470206D6F6465220A006B +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fcmp.hex b/benchmarks/riscv_tests/rv32uf-v-fcmp.hex new file mode 100644 index 00000000..cd6e6b96 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fcmp.hex @@ -0,0 +1,330 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938505AA97F6FFFF02 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5A697F6FFFF9386C6AD17F6FFFF06 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585A43C +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385459F97F6FFFF7C +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385459897F6FFFF9386C68C17F6FFFFA3 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C58E1306100497F6FFFF5A +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306867F97E6FFFF86 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306867097E6FFFF9386866AC7 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306466797E6FFFF93868664B6 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093072001930500001303F30318 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B76007C9 +:102B8000B70508009387C768130700009385C5FF42 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306865297E6FFFF938686417C +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C60000720050087204500072185008326C50031 +:102C7000532510A0F3151000130600006316D52A83 +:102C80006394C52A93013000171500001305853899 +:102C90000720050087204500072185008326C50001 +:102CA000530510A0F315100013060000631ED5266F +:102CB000639CC52693014000171500001305853657 +:102CC0000720050087204500072185008326C500D1 +:102CD000531510A0F3151000130600006316D52439 +:102CE0006394C52493015000171500001305853423 +:102CF0000720050087204500072185008326C500A1 +:102D0000532510A0F315100013060000631ED520F4 +:102D1000639CC520930160001715000013058532E0 +:102D20000720050087204500072185008326C50070 +:102D3000530510A0F3151000130600006316D51EEE +:102D40006394C51E930170001715000013058530AC +:102D50000720050087204500072185008326C50040 +:102D6000531510A0F315100013060000631ED51AAA +:102D7000639CC51A93018000171500001305852E6A +:102D80000720050087204500072185008326C50010 +:102D9000532510A0F3151000130600006316D51874 +:102DA0006394C51893019000171500001305852C36 +:102DB0000720050087204500072185008326C500E0 +:102DC000532510A0F315100013060000631ED51440 +:102DD000639CC5149301A000171500001305852AF4 +:102DE0000720050087204500072185008326C500B0 +:102DF000532510A0F3151000130600016316D51219 +:102E00006394C5129301B0001715000013058528BF +:102E10000720050087204500072185008326C5007F +:102E2000531510A0F315100013060001631ED50EF4 +:102E3000639CC50E9301C00017150000130585267D +:102E40000720050087204500072185008326C5004F +:102E5000531510A0F3151000130600016316D50CCE +:102E60006394C50C9301D000171500001305852449 +:102E70000720050087204500072185008326C5001F +:102E8000531510A0F315100013060001631ED5089A +:102E9000639CC5089301E000171500001305852207 +:102EA0000720050087204500072185008326C500EF +:102EB000530510A0F3151000130600016316D50684 +:102EC0006394C5069301F0001715000013058520D3 +:102ED0000720050087204500072185008326C500BF +:102EE000530510A0F315100013060001631ED50250 +:102EF000639CC50293010001171500001305851E90 +:102F00000720050087204500072185008326C5008E +:102F1000530510A0F3151000130600016316D50029 +:102F20006394C500631A3000139511006300050017 +:102F300013651500730000001305100073000000F6 +:042F4000731000C04A +:102F4400417373657274696F6E206661696C656440 +:102F54003A2061646472203E3D202831554C203C67 +:102F64003C203132292026262061646472203C20D2 +:102F74003633202A202831554C203C3C203132293C +:102F84000A000000417373657274696F6E20666194 +:102F9400696C65643A20212870745B315D5B6164FF +:102FA40064722F2831554C203C3C203132295D205D +:102FB4002620307830383029202626206361757326 +:102FC40065203D3D203078660A000000417373653A +:102FD4007274696F6E206661696C65643A206E6F05 +:102FE40064650A00417373657274696F6E2066616B +:102FF400696C65643A20757365725F6D61707069A0 +:103004006E675B616464722F2831554C203C3C2010 +:103014003132295D2E61646472203D3D20300A0006 +:10302400417373657274696F6E206661696C65645F +:103034003A2070745B315D5B616464722F28315592 +:103044004C203C3C203132295D202620307830341D +:10305400300A0000417373657274696F6E20666193 +:10306400696C65643A2070745B315D5B61646472A1 +:103074002F2831554C203C3C203132295D2026201C +:1030840030783038300A0000417373657274696FA8 +:103094006E206661696C65643A2074662D3E6570C5 +:1030A4006320252034203D3D20300A0041737365A0 +:1030B4007274696F6E206661696C65643A202122BE +:1030C400696C6C6567616C20696E73747275637486 +:1030D400696F6E220A000000417373657274696F30 +:1030E4006E206661696C65643A202122756E65788C +:1030F40070656374656420657863657074696F6E68 +:10310400220A0000417373657274696F6E206661F0 +:10311400696C65643A202122756E737570706F72E4 +:103124007465642073617470206D6F6465220A0095 +:104000007B14AEBF7B14AEBF0000000001000000B7 +:104010007B14AEBF7B14AEBF0000000001000000A7 +:104020007B14AEBF7B14AEBF000000000000000098 +:10403000295CAFBF7B14AEBF000000000000000091 +:10404000295CAFBF7B14AEBF000000000100000080 +:10405000295CAFBF7B14AEBF000000000100000070 +:10406000FFFFFF7F000000000000000000000000D4 +:10407000FFFFFF7FFFFFFF7F000000000000000048 +:104080000100807F00000000000000000000000030 +:10409000FFFFFF7F000000000000000000000000A4 +:1040A000FFFFFF7FFFFFFF7F000000000000000018 +:1040B0000100807F00000000000000000000000000 +:1040C000FFFFFF7F00000000000000000000000074 +:1040D000FFFFFF7FFFFFFF7F0000000000000000E8 +:1040E0000100807F000000000000000000000000D0 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fcvt.hex b/benchmarks/riscv_tests/rv32uf-v-fcvt.hex new file mode 100644 index 00000000..9c40c317 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fcvt.hex @@ -0,0 +1,280 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385058697F6FFFF26 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C58297F6FFFF9386C6AD17F6FFFF2A +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385858060 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385457B97F6FFFFB0 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385457497F6FFFF9386C68C17F6FFFFC7 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385C56A1306100497F6FFFF8E +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306865B97E6FFFFAA +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306864C97E6FFFF9386866AEB +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306464397E6FFFF93868664DA +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093072003930500001303F30316 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7172107A8 +:102B8000B705080093879720130700009385C5FFBA +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306862E97E6FFFF93868641A0 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000170500001305853A1A +:102C60008326050013052000537005D07310100053 +:102C7000530500E0631AD5069301300017050000E4 +:102C800013058538832605001305E0FF537005D032 +:102C900073101000530500E06318D5049301400041 +:102CA000170500001305853683260500130520004F +:102CB000537015D073101000530500E06316D50251 +:102CC0009301500017050000130585348326050085 +:102CD0001305E0FF537015D073101000530500E08A +:102CE0006314D500631A30001395110063000500CA +:102CF0001365150073000000130510007300000039 +:042D0000731000C08C +:102D0400417373657274696F6E206661696C656482 +:102D14003A2061646472203E3D202831554C203CA9 +:102D24003C203132292026262061646472203C2014 +:102D34003633202A202831554C203C3C203132297E +:102D44000A000000417373657274696F6E206661D6 +:102D5400696C65643A20212870745B315D5B616441 +:102D640064722F2831554C203C3C203132295D209F +:102D74002620307830383029202626206361757368 +:102D840065203D3D203078660A000000417373657C +:102D94007274696F6E206661696C65643A206E6F47 +:102DA40064650A00417373657274696F6E206661AD +:102DB400696C65643A20757365725F6D61707069E2 +:102DC4006E675B616464722F2831554C203C3C2053 +:102DD4003132295D2E61646472203D3D20300A0049 +:102DE400417373657274696F6E206661696C6564A2 +:102DF4003A2070745B315D5B616464722F283155D5 +:102E04004C203C3C203132295D202620307830345F +:102E1400300A0000417373657274696F6E206661D5 +:102E2400696C65643A2070745B315D5B61646472E3 +:102E34002F2831554C203C3C203132295D2026205E +:102E440030783038300A0000417373657274696FEA +:102E54006E206661696C65643A2074662D3E657007 +:102E64006320252034203D3D20300A0041737365E2 +:102E74007274696F6E206661696C65643A20212200 +:102E8400696C6C6567616C20696E737472756374C8 +:102E9400696F6E220A000000417373657274696F72 +:102EA4006E206661696C65643A202122756E6578CE +:102EB40070656374656420657863657074696F6EAA +:102EC400220A0000417373657274696F6E20666133 +:102ED400696C65643A202122756E737570706F7227 +:102EE4007465642073617470206D6F6465220A00D8 +:1030000000000040000000C0000000400000804FB1 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fcvt_w.hex b/benchmarks/riscv_tests/rv32uf-v-fcvt_w.hex new file mode 100644 index 00000000..567a0555 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fcvt_w.hex @@ -0,0 +1,351 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A00013051004971500009385C5BB97F6FFFF31 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585B897F6FFFF9386C6AD17F6FFFF34 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545B66A +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505B197F6FFFFAA +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938505AA97F6FFFF9386C68C17F6FFFFD1 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585A01306100497F6FFFF88 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306469197E6FFFFA4 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306468297E6FFFF9386866AE5 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306067997E6FFFF93868664E4 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093072003930500001303F30316 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7570B0283 +:102B8000B70508009387E726130700009385C5FF64 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306466497E6FFFF93868641AA +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C60000720050087204500072185008326C50031 +:102C7000531500C0F3151000130610006314D53C63 +:102C80006392C53C93013000171500001305853889 +:102C90000720050087204500072185008326C50001 +:102CA000531500C0F315100013060000631CD5383F +:102CB000639AC53893014000171500001305853647 +:102CC0000720050087204500072185008326C500D1 +:102CD000531500C0F3151000130610006314D53609 +:102CE0006392C53693015000171500001305853413 +:102CF0000720050087204500072185008326C500A1 +:102D0000531500C0F315100013061000631CD532D4 +:102D1000639AC532930160001715000013058532D0 +:102D20000720050087204500072185008326C50070 +:102D3000531500C0F3151000130600006314D530BE +:102D40006392C5309301700017150000130585309C +:102D50000720050087204500072185008326C50040 +:102D6000531500C0F315100013061000631CD52C7A +:102D7000639AC52C93018000171500001305852E5A +:102D80000720050087204500072185008326C50010 +:102D9000531500C0F3151000130600016314D52A63 +:102DA0006392C52A93019000171500001305852C26 +:102DB0000720050087204500072185008326C500E0 +:102DC000531500C0F315100013060001631CD5262F +:102DD000639AC5269301C000171500001305852AC4 +:102DE0000720050087204500072185008326C500B0 +:102DF000531510C0F3151000130600016314D524F9 +:102E00006392C5249301D00017150000130585288F +:102E10000720050087204500072185008326C5007F +:102E2000531510C0F315100013060001631CD520C4 +:102E3000639AC5209301E00017150000130585264D +:102E40000720050087204500072185008326C5004F +:102E5000531510C0F3151000130610006314D51E8F +:102E60006392C51E9301F000171500001305852419 +:102E70000720050087204500072185008326C5001F +:102E8000531510C0F315100013061000631CD51A5B +:102E9000639AC51A930100011715000013058522D6 +:102EA0000720050087204500072185008326C500EF +:102EB000531510C0F3151000130600006314D51845 +:102EC0006392C518930110011715000013058520A2 +:102ED0000720050087204500072185008326C500BF +:102EE000531510C0F315100013061000631CD51401 +:102EF000639AC51493012001171500001305851E60 +:102F00000720050087204500072185008326C5008E +:102F1000531510C0F3151000130600016314D512E9 +:102F20006392C51293013001171500001305851C2B +:102F30000720050087204500072185008326C5005E +:102F4000531510C0F315100013060000631CD50EB6 +:102F5000639AC50E971000009380C01A87A00000E6 +:102F6000D3F000C0B70E0080938EFEFF9301A00245 +:102F7000639AD00D971000009380C01887A080003E +:102F8000D3F000C0B70E00809301C002639CD00B49 +:102F9000971000009380001787A04000D3F000C076 +:102FA000B70E0080938EFEFF93014003639CD0090F +:102FB000971000009380001587A0C000D3F000C0D8 +:102FC000B70E0080938EFEFF93016003639CD007D1 +:102FD000971000009380001387A00000D3F010C06A +:102FE000930EF0FF9301E003639ED005971000005D +:102FF0009380401187A04000D3F010C0930EF0FFE3 +:103000009301F0036390D005971000009380800F28 +:1030100087A08000D3F010C0930E0000930100043D +:103020006392D003971000009380C00D87A0C0006A +:10303000D3F010C0930EF0FF930110046394D001FD +:10304000631A300013951100630005001365150025 +:10305000730000001305100073000000731000C01F +:10306000417373657274696F6E206661696C656423 +:103070003A2061646472203E3D202831554C203C4A +:103080003C203132292026262061646472203C20B5 +:103090003633202A202831554C203C3C203132291F +:1030A0000A000000417373657274696F6E20666177 +:1030B000696C65643A20212870745B315D5B6164E2 +:1030C00064722F2831554C203C3C203132295D2040 +:1030D0002620307830383029202626206361757309 +:1030E00065203D3D203078660A000000417373651D +:1030F0007274696F6E206661696C65643A206E6FE8 +:1031000064650A00417373657274696F6E2066614D +:10311000696C65643A20757365725F6D6170706982 +:103120006E675B616464722F2831554C203C3C20F3 +:103130003132295D2E61646472203D3D20300A00E9 +:10314000417373657274696F6E206661696C656442 +:103150003A2070745B315D5B616464722F28315575 +:103160004C203C3C203132295D2026203078303400 +:10317000300A0000417373657274696F6E20666176 +:10318000696C65643A2070745B315D5B6164647284 +:103190002F2831554C203C3C203132295D202620FF +:1031A00030783038300A0000417373657274696F8B +:1031B0006E206661696C65643A2074662D3E6570A8 +:1031C0006320252034203D3D20300A004173736583 +:1031D0007274696F6E206661696C65643A202122A1 +:1031E000696C6C6567616C20696E73747275637469 +:1031F000696F6E220A000000417373657274696F13 +:103200006E206661696C65643A202122756E65786E +:1032100070656374656420657863657074696F6E4A +:10322000220A0000417373657274696F6E206661D3 +:10323000696C65643A202122756E737570706F72C7 +:103240007465642073617470206D6F6465220A0078 +:10400000CDCC8CBF0000000000000000FFFFFFFFD0 +:10401000000080BF0000000000000000FFFFFFFF65 +:10402000666666BF0000000000000000000000009F +:104030006666663F0000000000000000000000000F +:104040000000803F000000000000000001000000B0 +:10405000CDCC8C3F000000000000000001000000FB +:104060005ED032CF000000000000000000000080A1 +:104070005ED0324F0000000000000000FFFFFF7F15 +:10408000000040C000000000000000000000000030 +:10409000000080BF000000000000000000000000E1 +:1040A000666666BF0000000000000000000000001F +:1040B0006666663F0000000000000000000000008F +:1040C0000000803F00000000000000000100000030 +:1040D000CDCC8C3F0000000000000000010000007B +:1040E0005ED032CF000000000000000000000000A1 +:1040F0005ED0324F0000000000000000005ED0B231 +:10410000FFFFFFFFFFFFFF7F000080FF0000807FB9 +:10411000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F2F +:10412000000000000000F0FF000000000000F07F31 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fdiv.hex b/benchmarks/riscv_tests/rv32uf-v-fdiv.hex new file mode 100644 index 00000000..5d2ce7fe --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fdiv.hex @@ -0,0 +1,300 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C59397F6FFFF59 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385859097F6FFFF9386C6AD17F6FFFF5C +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385458E92 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385058997F6FFFFD2 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385058297F6FFFF9386C68C17F6FFFFF9 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938585781306100497F6FFFFC0 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306466997E6FFFFDC +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306465A97E6FFFF9386866A1D +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306065197E6FFFF938686640C +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093070001930500001303F30338 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7A76C03D1 +:102B8000B70508009387A7F2130700009385C5FFD8 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306463C97E6FFFF93868641D2 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000170500001305853A1A +:102C60000720050087204500072185008326C50031 +:102C7000D3711018538501E0F315100013061000EE +:102C80006312D5146390C51493013000170500003A +:102C900013054538072005008720450007218500DA +:102CA0008326C500D3711018538501E0F315100079 +:102CB000130610006318D5106396C51093014000E9 +:102CC000170500001305053607200500872045007D +:102CD000072185008326C500D3711018538501E0B4 +:102CE000F315100013060000631ED50C639CC50C81 +:102CF00093015000170500001305C5330720050098 +:102D000087204500072185008326C500D371005820 +:102D1000538501E0F3151000130610006314D50A63 +:102D20006392C50A93016000170500001305853101 +:102D30000720050087204500072185008326C50060 +:102D4000D3710058538501E0F315100013060000FD +:102D5000631AD5066398C506930170001705000035 +:102D60001305452F07200500872045000721850012 +:102D70008326C500D3710058538501E0F315100078 +:102D8000130600016310D504639EC5029301800001 +:102D9000170500001305452D072005008720450075 +:102DA000072185008326C500D3710058538501E0B3 +:102DB000F3151000130610006316D5006394C500C8 +:102DC000631A3000139511006300050013651500A8 +:102DD000730000001305100073000000731000C0A2 +:102DE000417373657274696F6E206661696C6564A6 +:102DF0003A2061646472203E3D202831554C203CCD +:102E00003C203132292026262061646472203C2037 +:102E10003633202A202831554C203C3C20313229A1 +:102E20000A000000417373657274696F6E206661F9 +:102E3000696C65643A20212870745B315D5B616464 +:102E400064722F2831554C203C3C203132295D20C2 +:102E5000262030783038302920262620636175738B +:102E600065203D3D203078660A000000417373659F +:102E70007274696F6E206661696C65643A206E6F6A +:102E800064650A00417373657274696F6E206661D0 +:102E9000696C65643A20757365725F6D6170706905 +:102EA0006E675B616464722F2831554C203C3C2076 +:102EB0003132295D2E61646472203D3D20300A006C +:102EC000417373657274696F6E206661696C6564C5 +:102ED0003A2070745B315D5B616464722F283155F8 +:102EE0004C203C3C203132295D2026203078303483 +:102EF000300A0000417373657274696F6E206661F9 +:102F0000696C65643A2070745B315D5B6164647206 +:102F10002F2831554C203C3C203132295D20262081 +:102F200030783038300A0000417373657274696F0D +:102F30006E206661696C65643A2074662D3E65702A +:102F40006320252034203D3D20300A004173736505 +:102F50007274696F6E206661696C65643A20212223 +:102F6000696C6C6567616C20696E737472756374EB +:102F7000696F6E220A000000417373657274696F95 +:102F80006E206661696C65643A202122756E6578F1 +:102F900070656374656420657863657074696F6ECD +:102FA000220A0000417373657274696F6E20666156 +:102FB000696C65643A202122756E737570706F724A +:102FC0007465642073617470206D6F6465220A00FB +:10300000DB0F494054F82D4000000000E0EE933FF4 +:1030100000409AC433639A4400000000A2C57FBFF9 +:10302000DB0F49400000803F00000000DB0F4940FB +:10303000DB0F49400000000000000000C5DFE23F58 +:1030400000401C4600000000000000000000C842D4 +:10305000000080BF00000000000000000000C07FF2 +:103060000000000000002B430000000000000000F2 +:10307000263A51410000000000000000000000005E +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fmadd.hex b/benchmarks/riscv_tests/rv32uf-v-fmadd.hex new file mode 100644 index 00000000..d7f02574 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fmadd.hex @@ -0,0 +1,321 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938505A497F6FFFF08 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5A097F6FFFF9386C6AD17F6FFFF0C +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385859E42 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385459997F6FFFF82 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385459297F6FFFF9386C68C17F6FFFFA9 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5881306100497F6FFFF60 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306867997E6FFFF8C +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306866A97E6FFFF9386866ACD +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306466197E6FFFF93868664BC +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093079000930500001303F303A9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B777AE0EB4 +:102B8000B705080093872751130700009385C5FFF9 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306864C97E6FFFF9386864182 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C60000720050087204500072185008326C50031 +:102C7000C3711010538501E0F31510001306000016 +:102C80006314D5246392C524930130001715000006 +:102C900013054538072005008720450007218500DA +:102CA0008326C500C3711010538501E0F315100091 +:102CB00013061000631AD5206398C52093014000C5 +:102CC000171500001305053607200500872045006D +:102CD000072185008326C500C3711010538501E0CC +:102CE000F3151000130600006310D51E639EC51C6B +:102CF00093015000171500001305C5330720050088 +:102D000087204500072185008326C500CF7110105C +:102D1000538501E0F3151000130600006316D51A61 +:102D20006394C51A930160001715000013058531DF +:102D30000720050087204500072185008326C50060 +:102D4000CF711010538501E0F31510001306100029 +:102D5000631CD516639AC516930170001715000001 +:102D60001305452F07200500872045000721850012 +:102D70008326C500CF711010538501E0F3151000B4 +:102D8000130600006312D5146390C51493018000EC +:102D9000171500001305052D0720050087204500A5 +:102DA000072185008326C500C7711010538501E0F7 +:102DB000F3151000130600006318D5106396C510B4 +:102DC00093019000171500001305C52A0720050080 +:102DD00087204500072185008326C500C771101094 +:102DE000538501E0F315100013061000631ED50C87 +:102DF000639CC50C9301A0001715000013058528DE +:102E00000720050087204500072185008326C5008F +:102E1000C7711010538501E0F31510001306000070 +:102E20006314D50A6392C50A9301B0001715000018 +:102E3000130545260720050087204500072185004A +:102E40008326C500CB711010538501E0F3151000E7 +:102E500013060000631AD5066398C5069301C000E7 +:102E600017150000130505240720050087204500DD +:102E7000072185008326C500CB711010538501E022 +:102E8000F3151000130610006310D504639EC502ED +:102E90009301D000171500001305C5210720050078 +:102EA00087204500072185008326C500CB711010BF +:102EB000538501E0F3151000130600006316D500DA +:102EC0006394C500631A3000139511006300050078 +:102ED0001365150073000000130510007300000057 +:042EE000731000C0AB +:102EE400417373657274696F6E206661696C6564A1 +:102EF4003A2061646472203E3D202831554C203CC8 +:102F04003C203132292026262061646472203C2032 +:102F14003633202A202831554C203C3C203132299C +:102F24000A000000417373657274696F6E206661F4 +:102F3400696C65643A20212870745B315D5B61645F +:102F440064722F2831554C203C3C203132295D20BD +:102F54002620307830383029202626206361757386 +:102F640065203D3D203078660A000000417373659A +:102F74007274696F6E206661696C65643A206E6F65 +:102F840064650A00417373657274696F6E206661CB +:102F9400696C65643A20757365725F6D6170706900 +:102FA4006E675B616464722F2831554C203C3C2071 +:102FB4003132295D2E61646472203D3D20300A0067 +:102FC400417373657274696F6E206661696C6564C0 +:102FD4003A2070745B315D5B616464722F283155F3 +:102FE4004C203C3C203132295D202620307830347E +:102FF400300A0000417373657274696F6E206661F4 +:10300400696C65643A2070745B315D5B6164647201 +:103014002F2831554C203C3C203132295D2026207C +:1030240030783038300A0000417373657274696F08 +:103034006E206661696C65643A2074662D3E657025 +:103044006320252034203D3D20300A004173736500 +:103054007274696F6E206661696C65643A2021221E +:10306400696C6C6567616C20696E737472756374E6 +:10307400696F6E220A000000417373657274696F90 +:103084006E206661696C65643A202122756E6578EC +:1030940070656374656420657863657074696F6EC8 +:1030A400220A0000417373657274696F6E20666151 +:1030B400696C65643A202122756E737570706F7245 +:1030C4007465642073617470206D6F6465220A00F6 +:104000000000803F000020400000803F0000604032 +:10401000000080BF33639AC4CDCC8C3F66869A443F +:10402000000000400000A0C0000000C0000040C12F +:104030000000803F000020400000803F000060C082 +:10404000000080BF33639AC4CDCC8C3F66869AC48F +:10405000000000400000A0C0000000C0000040417F +:104060000000803F000020400000803F0000C03F73 +:10407000000080BF33639AC4CDCC8C3F00409A448B +:10408000000000400000A0C0000000C0000000C10F +:104090000000803F000020400000803F0000C0BFC3 +:1040A000000080BF33639AC4CDCC8C3F00409AC4DB +:1040B000000000400000A0C0000000C0000000415F +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fmin.hex b/benchmarks/riscv_tests/rv32uf-v-fmin.hex new file mode 100644 index 00000000..2468a858 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-fmin.hex @@ -0,0 +1,346 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938585B797F6FFFF75 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545B497F6FFFF9386C6AD17F6FFFF78 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505B2AE +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C5AC97F6FFFFEF +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C5A597F6FFFF9386C68C17F6FFFF16 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385459C1306100497F6FFFFCC +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306068D97E6FFFFE8 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306067E97E6FFFF9386866A39 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C67497E6FFFF9386866429 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093072003930500001303F30316 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7775E0210 +:102B8000B7050800938797A0130700009385C5FF3A +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306066097E6FFFF93868641EE +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C60000720050087204500072185008326C50031 +:102C7000D3011028538501E0F3151000130600005E +:102C80006310D538639EC5369301300017150000D8 +:102C900013054538072005008720450007218500DA +:102CA0008326C500D3011028538501E0F3151000D9 +:102CB000130600006316D5346394C53493014000B5 +:102CC000171500001305053607200500872045006D +:102CD000072185008326C500D3011028538501E014 +:102CE000F315100013060000631CD530639AC5303D +:102CF00093015000171500001305C5330720050088 +:102D000087204500072185008326C500D3011028B0 +:102D1000538501E0F3151000130600006312D52E51 +:102D20006390C52E930160001715000013058531CF +:102D30000720050087204500072185008326C50060 +:102D4000D3011028538501E0F3151000130600008D +:102D50006318D52A6396C52A9301700017150000E1 +:102D60001305452F07200500872045000721850012 +:102D70008326C500D3011028538501E0F315100008 +:102D800013060000631ED526639CC5269301C00070 +:102D9000171500001305052D0720050087204500A5 +:102DA000072185008326C500D3111028538501E033 +:102DB000F3151000130600006314D5246392C52494 +:102DC0009301D000171500001305C52A0720050040 +:102DD00087204500072185008326C500D3111028D0 +:102DE000538501E0F315100013060000631AD52087 +:102DF0006398C5209301E00017150000130585288E +:102E00000720050087204500072185008326C5008F +:102E1000D3111028538501E0F315100013060000AC +:102E20006310D51E639EC51C9301F00017150000AA +:102E3000130545260720050087204500072185004A +:102E40008326C500D3111028538501E0F315100027 +:102E5000130600006316D51A6394C51A9301000186 +:102E600017150000130505240720050087204500DD +:102E7000072185008326C500D3111028538501E062 +:102E8000F315100013060000631CD516639AC516CF +:102E900093011001171500001305C5210720050037 +:102EA00087204500072185008326C500D3111028FF +:102EB000538501E0F3151000130600006312D514CA +:102EC0006390C51493014001171500001305851F79 +:102ED0000720050087204500072185008326C500BF +:102EE000D3111028538501E0F315100013060001DB +:102EF0006318D5106396C510930150011715000093 +:102F00001305451D07200500872045000721850082 +:102F10008326C500D3111028538501E0F315100056 +:102F200013060000631ED50C639CC50C9301E001E1 +:102F3000171500001305051B072005008720450015 +:102F4000072185008326C500D3011028538501E0A1 +:102F5000F3151000130600006314D50A6392C50A26 +:102F60009301F001171500001305C518072005008F +:102F700087204500072185008326C500D30110283E +:102F8000538501E0F315100013060000631AD506FF +:102F90006398C506930100021715000013058516F6 +:102FA0000720050087204500072185008326C500EE +:102FB000D3111028538501E0F3151000130600000B +:102FC0006310D504639EC50293011002171500001B +:102FD00013054514072005008720450007218500BB +:102FE0008326C500D3111028538501E0F315100086 +:102FF000130600006316D5006394C500631A300001 +:10300000139511006300050013651500730000009F +:0C3010001305100073000000731000C0D6 +:10301C00417373657274696F6E206661696C656467 +:10302C003A2061646472203E3D202831554C203C8E +:10303C003C203132292026262061646472203C20F9 +:10304C003633202A202831554C203C3C2031322963 +:10305C000A000000417373657274696F6E206661BB +:10306C00696C65643A20212870745B315D5B616426 +:10307C0064722F2831554C203C3C203132295D2084 +:10308C00262030783038302920262620636175734D +:10309C0065203D3D203078660A0000004173736561 +:1030AC007274696F6E206661696C65643A206E6F2C +:1030BC0064650A00417373657274696F6E20666192 +:1030CC00696C65643A20757365725F6D61707069C7 +:1030DC006E675B616464722F2831554C203C3C2038 +:1030EC003132295D2E61646472203D3D20300A002E +:1030FC00417373657274696F6E206661696C656487 +:10310C003A2070745B315D5B616464722F283155B9 +:10311C004C203C3C203132295D2026203078303444 +:10312C00300A0000417373657274696F6E206661BA +:10313C00696C65643A2070745B315D5B61646472C8 +:10314C002F2831554C203C3C203132295D20262043 +:10315C0030783038300A0000417373657274696FCF +:10316C006E206661696C65643A2074662D3E6570EC +:10317C006320252034203D3D20300A0041737365C7 +:10318C007274696F6E206661696C65643A202122E5 +:10319C00696C6C6567616C20696E737472756374AD +:1031AC00696F6E220A000000417373657274696F57 +:1031BC006E206661696C65643A202122756E6578B3 +:1031CC0070656374656420657863657074696F6E8F +:1031DC00220A0000417373657274696F6E20666118 +:1031EC00696C65643A202122756E737570706F720C +:1031FC007465642073617470206D6F6465220A00BD +:10400000000020400000803F000000000000803FD2 +:1040100033639AC4CDCC8C3F0000000033639AC454 +:10402000CDCC8C3F33639AC40000000033639AC444 +:10403000FFFFFF7F33639AC40000000033639AC41C +:10404000DB0F494077CC2B320000000077CC2B32BD +:10405000000080BF000000C000000000000000C0A1 +:10406000000020400000803F0000000000002040D1 +:1040700033639AC4CDCC8C3F00000000CDCC8C3F84 +:10408000CDCC8C3F33639AC400000000CDCC8C3F74 +:10409000FFFFFF7F33639AC40000000033639AC4BC +:1040A000DB0F494077CC2B3200000000DB0F49408A +:1040B000000080BF000000C000000000000080BFC2 +:1040C0000100807F0000803F000000000000803F72 +:1040D000FFFFFF7FFFFFFF7F000000000000C07FA9 +:1040E00000000080000000000000000000000080D0 +:1040F00000000000000000800000000000000080C0 +:10410000000000800000000000000000000000002F +:10411000000000000000008000000000000000001F +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-ldst.hex b/benchmarks/riscv_tests/rv32uf-v-ldst.hex new file mode 100644 index 00000000..8b59d052 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-ldst.hex @@ -0,0 +1,276 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385058197F6FFFF2B +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385C57D97F6FFFF9386C6AD17F6FFFF2F +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385857B75 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385457697F6FFFFB5 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385456F97F6FFFF9386C68C17F6FFFFCC +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385C5651306100497F6FFFF93 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306865697E6FFFFAF +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306864797E6FFFF9386866AF0 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306463E97E6FFFF93868664DF +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093075001930500001303F303E8 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B757820608 +:102B8000B7050800938757CD130700009385C5FF4D +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306862997E6FFFF93868641A5 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500073103000970500009385C53A87A04500A2 +:102C600027AA150003A54501B70E004093012000D7 +:102C70006314D503970500009385C53887A0050028 +:102C800027AC150003A58501B70E80BF9301300066 +:102C90006314D501631A3000139511006300050019 +:102CA0001365150073000000130510007300000089 +:042CB000731000C0DD +:102CB400417373657274696F6E206661696C6564D3 +:102CC4003A2061646472203E3D202831554C203CFA +:102CD4003C203132292026262061646472203C2065 +:102CE4003633202A202831554C203C3C20313229CF +:102CF4000A000000417373657274696F6E20666127 +:102D0400696C65643A20212870745B315D5B616491 +:102D140064722F2831554C203C3C203132295D20EF +:102D240026203078303830292026262063617573B8 +:102D340065203D3D203078660A00000041737365CC +:102D44007274696F6E206661696C65643A206E6F97 +:102D540064650A00417373657274696F6E206661FD +:102D6400696C65643A20757365725F6D6170706932 +:102D74006E675B616464722F2831554C203C3C20A3 +:102D84003132295D2E61646472203D3D20300A0099 +:102D9400417373657274696F6E206661696C6564F2 +:102DA4003A2070745B315D5B616464722F28315525 +:102DB4004C203C3C203132295D20262030783034B0 +:102DC400300A0000417373657274696F6E20666126 +:102DD400696C65643A2070745B315D5B6164647234 +:102DE4002F2831554C203C3C203132295D202620AF +:102DF40030783038300A0000417373657274696F3B +:102E04006E206661696C65643A2074662D3E657057 +:102E14006320252034203D3D20300A004173736532 +:102E24007274696F6E206661696C65643A20212250 +:102E3400696C6C6567616C20696E73747275637418 +:102E4400696F6E220A000000417373657274696FC2 +:102E54006E206661696C65643A202122756E65781E +:102E640070656374656420657863657074696F6EFA +:102E7400220A0000417373657274696F6E20666183 +:102E8400696C65643A202122756E737570706F7277 +:102E94007465642073617470206D6F6465220A0028 +:10300000000080BF0000004000004040000080C081 +:10301000EFBEADDEBEBAFECAEA1DADAB0DD03713B2 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-move.hex b/benchmarks/riscv_tests/rv32uf-v-move.hex new file mode 100644 index 00000000..910856e7 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-move.hex @@ -0,0 +1,310 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5A597F6FFFF47 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585A297F6FFFF9386C6AD17F6FFFF4A +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545A080 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385059B97F6FFFFC0 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385059497F6FFFF9386C68C17F6FFFFE7 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385858A1306100497F6FFFF9E +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306467B97E6FFFFCA +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306466C97E6FFFF9386866A0B +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306066397E6FFFF93868664FA +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093070001930500001303F30338 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B76200CE +:102B8000B7050800938797C9130700009385C5FF11 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306464E97E6FFFF93868641C0 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300073D03000371500001305452382 +:102C6000F3153500930E100093012000639CD527C7 +:102C700073253000930E4003930130006314D52771 +:102C800073251000930E400193014000631CD5256D +:102C900073552100930E1000930150006314D52545 +:102CA00073253000930E400593016000631CD5230B +:102CB00073751200930E4001930170006314D523C5 +:102CC00073253000930E000593018000631CD5210D +:102CD000B75534129385856713060000D38005F03D +:102CE000530106F053802020530500E0B75E3412F4 +:102CF000938E8E679301A0006316D51FB7553412CB +:102D0000938585671306F0FFD38005F0530106F025 +:102D100053802020530500E0B75E3492938E8E6777 +:102D20009301B0006310D51DB75534929385856724 +:102D300013060000D38005F0530106F053802020D5 +:102D4000530500E0B75E3412938E8E679301C00086 +:102D5000631AD519B7553492938585671306F0FF2A +:102D6000D38005F0530106F053802020530500E086 +:102D7000B75E3492938E8E679301D0006314D5179B +:102D8000B75534129385856713060000D38005F08C +:102D9000530106F053902020530500E0B75E3492B3 +:102DA000938E8E6793014001631ED513B75534127D +:102DB000938585671306F0FFD38005F0530106F075 +:102DC00053902020530500E0B75E3412938E8E6737 +:102DD000930150016318D511B755349293858567D7 +:102DE00013060000D38005F0530106F05390202015 +:102DF000530500E0B75E3492938E8E6793016001B5 +:102E00006312D50FB7553492938585671306F0FF8B +:102E1000D38005F0530106F053902020530500E0C5 +:102E2000B75E3412938E8E6793017001631CD50BCD +:102E3000B75534129385856713060000D38005F0DB +:102E4000530106F053A02020530500E0B75E341272 +:102E5000938E8E679301E0016316D509B75534123E +:102E6000938585671306F0FFD38005F0530106F0C4 +:102E700053A02020530500E0B75E3492938E8E67F6 +:102E80009301F0016310D507B75534929385856798 +:102E900013060000D38005F0530106F053A0202054 +:102EA000530500E0B75E3492938E8E679301000263 +:102EB000631AD503B7553492938585671306F0FFDF +:102EC000D38005F0530106F053A02020530500E005 +:102ED000B75E3412938E8E67930110026314D5018E +:102EE000631A300013951100630005001365150087 +:102EF000730000001305100073000000731000C081 +:102F0000417373657274696F6E206661696C656484 +:102F10003A2061646472203E3D202831554C203CAB +:102F20003C203132292026262061646472203C2016 +:102F30003633202A202831554C203C3C2031322980 +:102F40000A000000417373657274696F6E206661D8 +:102F5000696C65643A20212870745B315D5B616443 +:102F600064722F2831554C203C3C203132295D20A1 +:102F7000262030783038302920262620636175736A +:102F800065203D3D203078660A000000417373657E +:102F90007274696F6E206661696C65643A206E6F49 +:102FA00064650A00417373657274696F6E206661AF +:102FB000696C65643A20757365725F6D61707069E4 +:102FC0006E675B616464722F2831554C203C3C2055 +:102FD0003132295D2E61646472203D3D20300A004B +:102FE000417373657274696F6E206661696C6564A4 +:102FF0003A2070745B315D5B616464722F283155D7 +:103000004C203C3C203132295D2026203078303461 +:10301000300A0000417373657274696F6E206661D7 +:10302000696C65643A2070745B315D5B61646472E5 +:103030002F2831554C203C3C203132295D20262060 +:1030400030783038300A0000417373657274696FEC +:103050006E206661696C65643A2074662D3E657009 +:103060006320252034203D3D20300A0041737365E4 +:103070007274696F6E206661696C65643A20212202 +:10308000696C6C6567616C20696E737472756374CA +:10309000696F6E220A000000417373657274696F74 +:1030A0006E206661696C65643A202122756E6578D0 +:1030B00070656374656420657863657074696F6EAC +:1030C000220A0000417373657274696F6E20666135 +:1030D000696C65643A202122756E737570706F7229 +:1030E0007465642073617470206D6F6465220A00DA +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-recoding.hex b/benchmarks/riscv_tests/rv32uf-v-recoding.hex new file mode 100644 index 00000000..30228494 --- /dev/null +++ b/benchmarks/riscv_tests/rv32uf-v-recoding.hex @@ -0,0 +1,279 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385458597F6FFFFE7 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058297F6FFFF9386C6AD17F6FFFFEA +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385C57F31 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857A97F6FFFF71 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857397F6FFFF9386C68C17F6FFFF88 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385056A1306100497F6FFFF4E +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65A97E6FFFF6B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C64B97E6FFFF9386866AAC +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864297E6FFFF938686649B +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093075003930500001303F303E6 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B787D30885 +:102B8000B7050800938767E4130700009385C5FF26 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C62D97E6FFFF9386864161 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500073103000170500000720C53A1705000063 +:102C60008720853AD3F00010532510A0930E100052 +:102C7000930120006314D507530510A0930E100094 +:102C800093013000631CD505531510A0930E00006E +:102C9000930140006314D505537000D01305100054 +:102CA000D37005D0D3F00010532510A0930E100060 +:102CB000930150006314D503530510A0930E100028 +:102CC00093016000631CD501531510A0930E000002 +:102CD000930170006314D501631A3000139511003D +:102CE0006300050013651500730000001305100054 +:082CF00073000000731000C026 +:102CF800417373657274696F6E206661696C65648F +:102D08003A2061646472203E3D202831554C203CB5 +:102D18003C203132292026262061646472203C2020 +:102D28003633202A202831554C203C3C203132298A +:102D38000A000000417373657274696F6E206661E2 +:102D4800696C65643A20212870745B315D5B61644D +:102D580064722F2831554C203C3C203132295D20AB +:102D68002620307830383029202626206361757374 +:102D780065203D3D203078660A0000004173736588 +:102D88007274696F6E206661696C65643A206E6F53 +:102D980064650A00417373657274696F6E206661B9 +:102DA800696C65643A20757365725F6D61707069EE +:102DB8006E675B616464722F2831554C203C3C205F +:102DC8003132295D2E61646472203D3D20300A0055 +:102DD800417373657274696F6E206661696C6564AE +:102DE8003A2070745B315D5B616464722F283155E1 +:102DF8004C203C3C203132295D202620307830346C +:102E0800300A0000417373657274696F6E206661E1 +:102E1800696C65643A2070745B315D5B61646472EF +:102E28002F2831554C203C3C203132295D2026206A +:102E380030783038300A0000417373657274696FF6 +:102E48006E206661696C65643A2074662D3E657013 +:102E58006320252034203D3D20300A0041737365EE +:102E68007274696F6E206661696C65643A2021220C +:102E7800696C6C6567616C20696E737472756374D4 +:102E8800696F6E220A000000417373657274696F7E +:102E98006E206661696C65643A202122756E6578DA +:102EA80070656374656420657863657074696F6EB6 +:102EB800220A0000417373657274696F6E2066613F +:102EC800696C65643A202122756E737570706F7233 +:102ED8007465642073617470206D6F6465220A00E4 +:08300000000080FF00004040C9 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-add.hex b/benchmarks/riscv_tests/rv32ui-p-add.hex index 10331773..bdbf57f3 100644 --- a/benchmarks/riscv_tests/rv32ui-p-add.hex +++ b/benchmarks/riscv_tests/rv32ui-p-add.hex @@ -1,101 +1,108 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00013010000B3812000930E0000130E2000E6 -:1000D0006396D14D9300100013011000B3812000EE -:1000E000930E2000130E3000639AD14B9300300022 -:1000F00013017000B3812000930EA000130E400086 -:10010000639ED149930000003781FFFFB381200037 -:10011000B78EFFFF130E50006392D149B7000080E5 -:1001200013010000B3812000B70E0080130E6000A1 -:100130006396D147B70000803781FFFFB38120006D -:10014000B78EFF7F130E7000639AD14593000000B5 -:10015000378100001301F1FFB3812000B78E00004A -:10016000938EFEFF130E8000639AD143B700008088 -:100170009380F0FF13010000B3812000B70E0080D0 -:10018000938EFEFF130E9000639AD141B70000805A -:100190009380F0FF378100001301F1FFB38120004D -:1001A000B78E0080938EEEFF130EA0006398D13FB0 -:1001B000B7000080378100001301F1FFB3812000F8 -:1001C000B78E0080938EFEFF130EB0006398D13D72 -:1001D000B70000809380F0FF3781FFFFB3812000DC -:1001E000B78EFF7F938EFEFF130EC0006398D13B46 -:1001F000930000001301F0FFB3812000930EF0FF85 -:10020000130ED000639CD1399300F0FF130110004E -:10021000B3812000930E0000130EE0006390D139EB -:100220009300F0FF1301F0FFB3812000930EE0FF75 -:10023000130EF0006394D137930010003701008053 -:100240001301F1FFB3812000B70E0080130E0001EF -:100250006396D1359300D0001301B000B380200025 -:10026000930E8001130E1001639AD0339300E000C7 -:100270001301B00033812000930E9001130E200172 -:10028000631ED1319300D000B3801000930EA00103 -:10029000130E30016394D031130200009300D0009C -:1002A0001301B000B3812000138301001302120078 -:1002B00093022000E31452FE930E8001130E4001BE -:1002C000631ED32D130200009300E0001301B00061 -:1002D000B3812000130000001383010013021200F9 -:1002E00093022000E31252FE930E9001130E500170 -:1002F0006316D32B130200009300F0001301B0002B -:10030000B3812000130000001300000013830100DC -:100310001302120093022000E31052FE930EA0017C -:10032000130E6001631CD327130200009300D0005A -:100330001301B000B38120001302120093022000C9 -:10034000E31652FE930E8001130E70016398D125BF -:10035000130200009300E0001301B000130000003E -:10036000B38120001302120093022000E31452FE16 -:10037000930E9001130E80016392D12313020000AB -:100380009300F0001301B000130000001300000000 -:10039000B38120001302120093022000E31252FEE8 -:1003A000930EA001130E9001639AD11F1302000057 -:1003B0009300D000130000001301B000B3812000AF -:1003C0001302120093022000E31452FE930E8001E8 -:1003D000130EA0016394D11D130200009300E000EE -:1003E000130000001301B00013000000B3812000CF -:1003F0001302120093022000E31252FE930E9001AA -:10040000130EB001639CD119130200009300F00099 -:1004100013000000130000001301B000B38120009E -:100420001302120093022000E31252FE930EA00169 -:10043000130EC0016394D117130200001301B00022 -:100440009300D000B3812000130212009302200019 -:10045000E31652FE930E8001130ED0016390D11566 -:10046000130200001301B0009300E000130000002D -:10047000B38120001302120093022000E31452FE05 -:10048000930E9001130EE001639AD1111302000044 -:100490001301B0009300F0001300000013000000EF -:1004A000B38120001302120093022000E31252FED7 -:1004B000930EA001130EF0016392D10F13020000FE -:1004C0001301B000130000009300D000B38120009E -:1004D0001302120093022000E31452FE930E8001D7 -:1004E000130E0002639CD10B130200001301B00035 -:1004F000130000009300E00013000000B38120000F -:100500001302120093022000E31252FE930E900198 -:10051000130E10026394D109130200001301B000FE -:1005200013000000130000009300F000B3812000CE -:100530001302120093022000E31252FE930EA00158 -:10054000130E2002639CD1059300F00033011000CC -:10055000930EF000130E30026312D10593000002D7 -:1005600033810000930E0002130E40026318D10382 -:10057000B3000000930E0000130E50026390D003EE -:10058000930000011301E00133802000930E00006E -:10059000130E60026314D001631CC0010F00F00F42 -:1005A00063000E00131E1E00136E1E007300000079 -:1005B0000F00F00F130E100073000000731000C046 -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930000001301000033872000930E0000CD +:10011000930120006316D74D9300100013011000C7 +:1001200033872000930E200093013000631AD74BD1 +:10013000930030001301700033872000930EA0005D +:1001400093014000631ED749930000003781FFFFF1 +:1001500033872000B78EFFFF930150006312D74909 +:10016000B70000801301000033872000B70E008025 +:10017000930160006316D747B70000803781FFFF07 +:1001800033872000B78EFF7F93017000631AD74535 +:1001900093000000378100001301F1FF3387200036 +:1001A000B78E0000938EFEFF93018000631AD74341 +:1001B000B70000809380F0FF130100003387200018 +:1001C000B70E0080938EFEFF93019000631AD74113 +:1001D000B70000809380F0FF378100001301F1FF2A +:1001E00033872000B78E0080938EEEFF9301A0002E +:1001F0006318D73FB7000080378100001301F1FF7B +:1002000033872000B78E0080938EFEFF9301B000ED +:100210006318D73DB70000809380F0FF3781FFFF60 +:1002200033872000B78EFF7F938EFEFF9301C000BF +:100230006318D73B930000001301F0FF33872000C1 +:10024000930EF0FF9301D000631CD7399300F0FFA9 +:100250001301100033872000930E00009301E0008B +:100260006310D7399300F0FF1301F0FF33872000AC +:10027000930EE0FF9301F0006314D7379300100052 +:10028000370100801301F1FF33872000B70E008093 +:10029000930100016316D7359300D0001301B0001D +:1002A000B3802000930E800193011001639AD03334 +:1002B0009300E0001301B00033812000930E900101 +:1002C00093012001631ED1319300D000B380100050 +:1002D000930EA001930130016394D031130200000A +:1002E0009300D0001301B0003387200013030700F0 +:1002F0001302120093022000E31452FE930E8001B9 +:1003000093014001631ED32D130200009300E0000F +:100310001301B0003387200013000000130307000F +:100320001302120093022000E31252FE930E90017A +:10033000930150016316D32B130200009300F000C9 +:100340001301B000338720001300000013000000E9 +:10035000130307001302120093022000E31052FE61 +:10036000930EA00193016001631CD32713020000C8 +:100370009300D0001301B000338720001302120055 +:1003800093022000E31652FE930E80019301700148 +:100390006318D725130200009300E0001301B0009A +:1003A0001300000033872000130212009302200084 +:1003B000E31452FE930E9001930180016312D72340 +:1003C000130200009300F0001301B00013000000BE +:1003D0001300000033872000130212009302200054 +:1003E000E31252FE930EA00193019001631AD71FEE +:1003F000130200009300D000130000001301B000AE +:10040000338720001302120093022000E31452FEEF +:10041000930E80019301A0016314D71D1302000005 +:100420009300E000130000001301B000130000006F +:10043000338720001302120093022000E31252FEC1 +:10044000930E90019301B001631CD71913020000B1 +:100450009300F00013000000130000001301B0002F +:10046000338720001302120093022000E31252FE91 +:10047000930EA0019301C0016314D717130200006B +:100480001301B0009300D000338720001302120044 +:1004900093022000E31652FE930E80019301D001D7 +:1004A0006310D715130200001301B0009300E000A1 +:1004B0001300000033872000130212009302200073 +:1004C000E31452FE930E90019301E001631AD711D9 +:1004D000130200001301B0009300F00013000000AD +:1004E0001300000033872000130212009302200043 +:1004F000E31252FE930EA0019301F0016312D70F95 +:10050000130200001301B000130000009300D0009C +:10051000338720001302120093022000E31452FEDE +:10052000930E800193010002631CD70B130200009D +:100530001301B000130000009300E000130000005E +:10054000338720001302120093022000E31252FEB0 +:10055000930E9001930110026314D7091302000057 +:100560001301B00013000000130000009300F0001E +:10057000338720001302120093022000E31252FE80 +:10058000930EA00193012002631CD7059300F00095 +:1005900033011000930EF000930130026312D10575 +:1005A0009300000233810000930E00029301400289 +:1005B0006318D103B3000000930E000093015002B2 +:1005C0006390D003930000011301E0013380200009 +:1005D000930E0000930160026314D0016310300297 +:1005E0000F00F00F638001009391110093E111005F +:1005F0009308D00513850100730000000F00F00F71 +:10060000930110009308D00513050000730000004B +:10061000731000C000000000000000000000000097 +:1006200000000000000000000000000000000000CA +:0C063000000000000000000000000000BE :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-addi.hex b/benchmarks/riscv_tests/rv32ui-p-addi.hex index 988b3214..d8aef685 100644 --- a/benchmarks/riscv_tests/rv32ui-p-addi.hex +++ b/benchmarks/riscv_tests/rv32ui-p-addi.hex @@ -1,65 +1,68 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00093810000930E0000130E2000639CD12743 -:1000D0009300100093811000930E2000130E300047 -:1000E0006392D1279300300093817000930EA0009B -:1000F000130E40006398D125930000009381008087 -:10010000930E0080130E5000639ED123B700008031 -:1001100093810000B70E0080130E60006394D1231A -:10012000B700008093810080B70E0080938E0E8010 -:10013000130E70006398D121930000009381F07F2B -:10014000930EF07F130E8000639ED11FB7000080D6 -:100150009380F0FF93810000B70E0080938EFEFF26 -:10016000130E90006390D11FB70000809380F0FFC2 -:100170009381F07FB70E0080938EEE7F130EA00068 -:100180006392D11DB70000809381F07FB70E00808D -:10019000938EFE7F130EB0006396D11BB7000080D4 -:1001A0009380F0FF93810080B7FEFF7F938EFE7FE8 -:1001B000130EC0006398D119930000009381F0FFE3 -:1001C000930EF0FF130ED000639ED1179300F0FF43 -:1001D00093811000930E0000130EE0006394D1177A -:1001E0009300F0FF9381F0FF930EE0FF130EF000F9 -:1001F000639AD115B70000809380F0FF93811000BF -:10020000B70E0080130E0001639ED1139300D0003F -:100210009380B000930E8001130E10016394D013ED -:10022000130200009300D0009381B00013830100FB -:100230001302120093022000E31652FE930E800177 -:10024000130E20016310D311130200009300D0009D -:100250009381A00013000000138301001302120019 -:1002600093022000E31452FE930E7001130E30012E -:10027000631AD30D130200009300D0009381900005 -:10028000130000001300000013830100130212008A -:1002900093022000E31252FE930E6001130E400100 -:1002A0006312D30B130200009300D0009381B000BF -:1002B0001302120093022000E31852FE930E8001F5 -:1002C000130E50016390D109130200009300D00077 -:1002D000130000009381A00013021200930220007B -:1002E000E31652FE930E7001130E6001639CD1055C -:1002F000130200009300D000130000001300000060 -:10030000938190001302120093022000E31452FE26 -:10031000930E6001130E70016396D10393000002E7 -:10032000930E0002130E8001639ED0019300100211 -:1003300013802003930E0000130E90016314D0016C -:10034000631CC0010F00F00F63000E00131E1E009F -:10035000136E1E00730000000F00F00F130E10004C -:1003600073000000731000C00000000000000000D7 -:10037000000000000000000000000000000000007D -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100009300000013870000930E0000930120006D +:10011000631CD7279300100013871000930E200054 +:10012000930130006312D7279300300013877000CB +:10013000930EA000930140006318D72593000000A0 +:1001400013870080930E008093015000631ED72315 +:10015000B700008013870000B70E00809301600095 +:100160006314D723B700008013870080B70E008088 +:10017000938E0E80930170006318D72193000000C6 +:100180001387F07F930EF07F93018000631ED71FCB +:10019000B70000809380F0FF13870000B70E008047 +:1001A000938EFEFF930190006310D71FB70000806D +:1001B0009380F0FF1387F07FB70E0080938EEE7F61 +:1001C0009301A0006312D71DB70000801387F07F52 +:1001D000B70E0080938EFE7F9301B0006316D71B8D +:1001E000B70000809380F0FF13870080B7FEFF7F89 +:1001F000938EFE7F9301C0006318D719930000000F +:100200001387F0FF930EF0FF9301D000631ED71702 +:100210009300F0FF13871000930E00009301E0009D +:100220006314D7179300F0FF1387F0FF930EE0FFDE +:100230009301F000631AD715B70000809380F0FF98 +:1002400013871000B70E008093010001631ED713BF +:100250009300D0009380B000930E800193011001B1 +:100260006394D013130200009300D0001387B000F2 +:10027000130307001302120093022000E31652FE3C +:10028000930E8001930120016310D311130200002B +:100290009300D0001387A000130000001303070091 +:1002A0001302120093022000E31452FE930E700119 +:1002B00093013001631AD30D130200009300D000A4 +:1002C00013879000130000001300000013030700C1 +:1002D0001302120093022000E31252FE930E6001FB +:1002E000930140016312D30B130200009300D0006E +:1002F0001387B0001302120093022000E31852FE8D +:10030000930E8001930150016310D709130200007E +:100310009300D000130000001387A0001302120006 +:1003200093022000E31652FE930E700193016001C8 +:10033000631CD705130200009300D00013000000D7 +:100340001300000013879000130212009302200094 +:10035000E31452FE930E6001930170016316D703FC +:1003600093000002930E000293018001639ED0016E +:100370009300100213802003930E0000930190015C +:100380006314D001631030020F00F00F638001008E +:100390009391110093E111009308D005138501009A +:1003A000730000000F00F00F930110009308D005B8 +:0C03B0001305000073000000731000C073 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-and.hex b/benchmarks/riscv_tests/rv32ui-p-and.hex index 6ec06d92..06ce8dc2 100644 --- a/benchmarks/riscv_tests/rv32ui-p-and.hex +++ b/benchmarks/riscv_tests/rv32ui-p-and.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B70001FFB4 -:1000C000938000F037110F0F1301F1F0B3F120000E -:1000D000B71E000F938E0EF0130E2000639CD149C3 -:1000E000B710F00F938000FF37F1F0F01301010F0C -:1000F000B3F12000B70EF000938E0E0F130E3000F8 -:10010000639AD147B700FF009380F00F37110F0FAC -:100110001301F1F0B3F12000B70E0F00938EFE0033 -:10012000130E40006398D145B7F00FF09380F000B4 -:1001300037F1F0F01301010FB3F12000B7FE00F02A -:10014000130E50006398D143B70001FF938000F075 -:1001500037110F0F1301F1F0B3F02000B71E000F9D -:10016000938E0EF0130E60006396D041B710F00F1F -:10017000938000FF37F1F0F01301010F33F12000FD -:10018000B70EF000938E0E0F130E70006314D13F64 -:10019000B70001FF938000F0B3F01000B70E01FF2D -:1001A000938E0EF0130E80006396D03D1302000074 -:1001B000B70001FF938000F037110F0F1301F1F02A -:1001C000B3F12000138301001302120093022000F8 -:1001D000E31052FEB71E000F938E0EF0130E900028 -:1001E000631AD33913020000B710F00F938000FF99 -:1001F00037F1F0F01301010FB3F1200013000000FC -:10020000138301001302120093022000E31E52FC2C -:10021000B70EF000938E0E0F130EA000631CD335A3 -:1002200013020000B700FF009380F00F37110F0F8B -:100230001301F1F0B3F120001300000013000000DF -:10024000138301001302120093022000E31C52FCEE -:10025000B70E0F00938EFE00130EB000631CD33157 -:1002600013020000B70001FF938000F037110F0F59 -:100270001301F1F0B3F120001302120093022000E9 -:10028000E31252FEB71E000F938E0EF0130EC00045 -:100290006392D12F13020000B710F00F938000FF7C -:1002A00037F1F0F01301010F13000000B3F120004B -:1002B0001302120093022000E31052FEB70EF0006A -:1002C000938E0E0F130ED0006396D12B13020000F5 -:1002D000B700FF009380F00F37110F0F1301F1F0FB -:1002E0001300000013000000B3F1200013021200FD -:1002F00093022000E31E52FCB70E0F00938EFE0007 -:10030000130EE0006398D12713020000B70001FF2D -:10031000938000F01300000037110F0F1301F1F06C -:10032000B3F120001302120093022000E31052FEEA -:10033000B71E000F938E0EF0130EF000639CD123B6 -:1003400013020000B710F00F938000FF13000000AD -:1003500037F1F0F01301010F13000000B3F120009A -:100360001302120093022000E31E52FCB70EF000AD -:10037000938E0E0F130E0001639ED11F1302000017 -:10038000B700FF009380F00F13000000130000007F -:1003900037110F0F1301F1F0B3F120001302120017 -:1003A00093022000E31E52FCB70E0F00938EFE0056 -:1003B000130E10016390D11D1302000037110F0FAF -:1003C0001301F1F0B70001FF938000F0B3F12000BA -:1003D0001302120093022000E31252FEB71E000F18 -:1003E000938E0EF0130E20016396D11913020000B4 -:1003F00037F1F0F01301010FB710F00F938000FFF9 -:1004000013000000B3F12000130212009302200039 -:10041000E31052FEB70EF000938E0E0F130E300154 -:10042000639AD1151302000037110F0F1301F1F079 -:10043000B700FF009380F00F1300000013000000CE -:10044000B3F120001302120093022000E31E52FCBD -:10045000B70E0F00938EFE00130E4001639CD11166 -:100460001302000037110F0F1301F1F01300000009 -:10047000B70001FF938000F0B3F1200013021200D7 -:1004800093022000E31052FEB71E000F938E0EF071 -:10049000130E50016390D10F1302000037F1F0F0FA -:1004A0001301010F13000000B710F00F938000FF3D -:1004B00013000000B3F12000130212009302200089 -:1004C000E31E52FCB70EF000938E0E0F130E600168 -:1004D0006392D10B1302000037110F0F1301F1F0DB -:1004E0001300000013000000B700FF009380F00F1E -:1004F000B3F120001302120093022000E31E52FC0D -:10050000B70E0F00938EFE00130E70016394D10797 -:10051000B70001FF938000F033711000930E0000CC -:10052000130E80016318D105B700FF009380F00F10 -:1005300033F10000930E0000130E9001631CD103F1 -:10054000B3700000930E0000130EA0016394D0035B -:10055000B71011119380101137212222130121228B -:1005600033F02000930E0000130EB0016314D0018D -:10057000631CC0010F00F00F63000E00131E1E006D -:10058000136E1E00730000000F00F00F130E10001A -:1005900073000000731000C00000000000000000A5 -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B70001FF938000F037110F0F1301F1F0DA +:1001100033F72000B71E000F938E0EF093012000DE +:10012000631CD749B710F00F938000FF37F1F0F050 +:100130001301010F33F72000B70EF000938E0E0F5E +:1001400093013000631AD747B700FF009380F00F88 +:1001500037110F0F1301F1F033F72000B70E0F0026 +:10016000938EFE00930140006318D745B7F00FF05F +:100170009380F00037F1F0F01301010F33F7200006 +:10018000B7FE00F0930150006318D743B70001FF9A +:10019000938000F037110F0F1301F1F0B3F020003E +:1001A000B71E000F938E0EF0930160006396D0414E +:1001B000B710F00F938000FF37F1F0F01301010F3B +:1001C00033F12000B70EF000938E0E0F93017000F4 +:1001D0006314D13FB70001FF938000F0B3F010002B +:1001E000B70E01FF938E0EF0930180006396D03D11 +:1001F00013020000B70001FF938000F037110F0FCA +:100200001301F1F033F7200013030700130212006B +:1002100093022000E31052FEB71E000F938E0EF0E3 +:1002200093019000631AD33913020000B710F00F46 +:10023000938000FF37F1F0F01301010F33F7200036 +:1002400013000000130307001302120093022000A2 +:10025000E31E52FCB70EF000938E0E0F9301A00028 +:10026000631CD33513020000B700FF009380F00F2A +:1002700037110F0F1301F1F033F7200013000000C6 +:100280001300000013030700130212009302200062 +:10029000E31C52FCB70E0F00938EFE009301B000DA +:1002A000631CD33113020000B70001FF938000F0FC +:1002B00037110F0F1301F1F033F720001302120072 +:1002C00093022000E31252FEB71E000F938E0EF031 +:1002D0009301C0006312D72F13020000B710F00F74 +:1002E000938000FF37F1F0F01301010F13000000BD +:1002F00033F720001302120093022000E31052FE95 +:10030000B70EF000938E0E0F9301D0006316D72B1B +:1003100013020000B700FF009380F00F37110F0F9A +:100320001301F1F0130000001300000033F7200068 +:100330001302120093022000E31E52FCB70E0F00BE +:10034000938EFE009301E0006318D727130200008C +:10035000B70001FF938000F01300000037110F0F6A +:100360001301F1F033F72000130212009302200072 +:10037000E31052FEB71E000F938E0EF09301F000B3 +:10038000631CD72313020000B710F00F938000FF07 +:100390001300000037F1F0F01301010F130000000B +:1003A00033F720001302120093022000E31E52FCD8 +:1003B000B70EF000938E0E0F93010001631ED71F3E +:1003C00013020000B700FF009380F00F130000003D +:1003D0001300000037110F0F1301F1F033F7200065 +:1003E0001302120093022000E31E52FCB70E0F000E +:1003F000938EFE00930110016310D71D13020000BD +:1004000037110F0F1301F1F0B70001FF938000F0D7 +:1004100033F720001302120093022000E31252FE71 +:10042000B71E000F938E0EF0930120016316D719AB +:100430001302000037F1F0F01301010FB710F00FB5 +:10044000938000FF1300000033F720001302120016 +:1004500093022000E31052FEB70EF000938E0E0FB1 +:1004600093013001631AD7151302000037110F0FE3 +:100470001301F1F0B700FF009380F00F13000000AC +:100480001300000033F72000130212009302200033 +:10049000E31E52FCB70E0F00938EFE009301400145 +:1004A000631CD7111302000037110F0F1301F1F075 +:1004B00013000000B70001FF938000F033F7200025 +:1004C0001302120093022000E31052FEB71E000F29 +:1004D000938E0EF0930150016310D70F13020000AA +:1004E00037F1F0F01301010F13000000B710F00F07 +:1004F000938000FF1300000033F720001302120066 +:1005000093022000E31E52FCB70EF000938E0E0FF4 +:10051000930160016312D70B1302000037110F0F14 +:100520001301F1F01300000013000000B700FF00FA +:100530009380F00F33F72000130212009302200083 +:10054000E31E52FCB70E0F00938EFE009301700164 +:100550006314D707B70001FF938000F033711000D8 +:10056000930E0000930180016318D105B700FF00CE +:100570009380F00F33F10000930E0000930190017F +:10058000631CD103B3700000930E00009301A0011F +:100590006394D003B71011119380101137212222D8 +:1005A0001301212233F02000930E00009301B001CB +:1005B0006314D001631030020F00F00F638001005C +:1005C0009391110093E111009308D0051385010068 +:1005D000730000000F00F00F930110009308D00586 +:1005E0001305000073000000731000C0000000003D +:0C05F000000000000000000000000000FF :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-andi.hex b/benchmarks/riscv_tests/rv32ui-p-andi.hex index 8a63aef3..4f260496 100644 --- a/benchmarks/riscv_tests/rv32ui-p-andi.hex +++ b/benchmarks/riscv_tests/rv32ui-p-andi.hex @@ -1,53 +1,56 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B70001FFB4 -:1000C000938000F093F1F0F0B70E01FF938E0EF0E5 -:1000D000130E20006394D11BB710F00F938000FF24 -:1000E00093F1000F930E000F130E30006398D11997 -:1000F000B700FF009380F00F93F1F070930EF000C3 -:10010000130E4000639CD117B7F00FF09380F000FE -:1001100093F1000F930E0000130E50006390D1175F -:10012000B70001FF938000F093F0000F930E0000E2 -:10013000130E60006394D01513020000B710F00F87 -:10014000938000FF93F1F0701383010013021200FB -:1001500093022000E31452FE930E0070130E700001 -:10016000631ED31113020000B700FF009380F00F4D -:1001700093F1000F1300000013830100130212001B -:1001800093022000E31252FE930E000F130E800024 -:100190006316D30F13020000B7F00FF09380F00046 -:1001A00093F1F0F01300000013000000138301002E -:1001B0001302120093022000E31052FEB7FE0FF06C -:1001C000938EFE00130E9000631AD30B13020000EF -:1001D000B710F00F938000FF93F1F070130212003C -:1001E00093022000E31652FE930E0070130EA0003F -:1001F0006396D10913020000B700FF009380F00F4F -:100200001300000093F1000F13021200930220006C -:10021000E31452FE930E000F130EB0006390D1074B -:1002200013020000B7F00FF09380F00013000000FD -:100230001300000093F1F0701302120093022000EB -:10024000E31252FE930EF000130EC0006398D10328 -:100250009370000F930E0000130ED0006390D00334 -:10026000B700FF009380F00F13F0F070930E0000C2 -:10027000130EE0006314D001631CC0010F00F00FE7 -:1002800063000E00131E1E00136E1E00730000009C -:100290000F00F00F130E100073000000731000C069 -:1002A000000000000000000000000000000000004E -:1002B000000000000000000000000000000000003E -:0402C000000000003A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B70001FF938000F013F7F0F0B70E01FF86 +:10011000938E0EF0930120006314D71BB710F00FDD +:10012000938000FF13F7000F930E000F9301300030 +:100130006318D719B700FF009380F00F13F7F07022 +:10014000930EF00093014000631CD717B7F00FF037 +:100150009380F00013F7000F930E000093015000FE +:100160006310D717B70001FF938000F093F0000FE2 +:10017000930E0000930160006394D01513020000F9 +:10018000B710F00F938000FF13F7F0701303070010 +:100190001302120093022000E31452FE930E00702B +:1001A00093017000631ED31113020000B700FF001B +:1001B0009380F00F13F7000F1300000013030700E4 +:1001C0001302120093022000E31252FE930E000F5E +:1001D000930180006316D30F13020000B7F00FF0F5 +:1001E0009380F00013F7F0F01300000013000000FC +:1001F000130307001302120093022000E31052FEC3 +:10020000B7FE0FF0938EFE0093019000631AD30B9C +:1002100013020000B710F00F938000FF13F7F07087 +:100220001302120093022000E31652FE930E007098 +:100230009301A0006316D70913020000B700FF0066 +:100240009380F00F1300000013F7000F1302120049 +:1002500093022000E31452FE930E000F9301B000AE +:100260006310D70713020000B7F00FF09380F0007F +:10027000130000001300000013F7F07013021200C7 +:1002800093022000E31252FE930EF0009301C0008F +:100290006318D7039370000F930E00009301D000F2 +:1002A0006390D003B700FF009380F00F13F0F0705D +:1002B000930E00009301E0006314D001631030023C +:1002C0000F00F00F638001009391110093E1110082 +:1002D0009308D00513850100730000000F00F00F94 +:1002E000930110009308D00513050000730000006F +:0C02F000731000C00000000000000000BF :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-auipc.hex b/benchmarks/riscv_tests/rv32ui-p-auipc.hex index 6d15d3d8..2e44480d 100644 --- a/benchmarks/riscv_tests/rv32ui-p-auipc.hex +++ b/benchmarks/riscv_tests/rv32ui-p-auipc.hex @@ -1,28 +1,36 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F1730020301300000058 -:1000C000172500001305C571EF0540003305B54045 -:1000D000B72E0000938E0E71130E20006314D5030B -:1000E00017E5FFFF1305C58FEF0540003305B54049 -:1000F000B7EEFFFF938E0E8F130E30006314D50101 -:10010000631CC0010F00F00F63000E00131E1E00E1 -:10011000136E1E00730000000F00F00F130E10008E -:1001200073000000731000C0000000000000000019 -:1001300000000000000000000000000000000000BF +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000172500001305C571EF0540003305B54004 +:10011000B72E0000938E0E71930120006314D50357 +:1001200017E5FFFF1305C58FEF0540003305B54008 +:10013000B7EEFFFF938E0E8F930130006314D5014D +:10014000631030020F00F00F6380010093911100E3 +:1001500093E111009308D00513850100730000009E +:100160000F00F00F930110009308D0051305000055 +:1001700073000000731000C00000000000000000C9 +:10018000000000000000000000000000000000006F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:0401B000000000004B :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-beq.hex b/benchmarks/riscv_tests/rv32ui-p-beq.hex index 5983d718..3f438961 100644 --- a/benchmarks/riscv_tests/rv32ui-p-beq.hex +++ b/benchmarks/riscv_tests/rv32ui-p-beq.hex @@ -1,69 +1,72 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C0009300000013010000638620006318C02B1A -:1000D0006316C001E38E20FE6312C02B130E3000A6 -:1000E0009300100013011000638620006318C029DC -:1000F0006316C001E38E20FE6312C029130E400078 -:100100009300F0FF1301F0FF638620006318C027FF -:100110006316C001E38E20FE6312C027130E500049 -:100120009300000013011000638420006314C001D9 -:100130006316C025E38E20FE130E600093001000AE -:1001400013010000638420006314C0016318C023FE -:10015000E38E20FE130E70009300F0FF13011000D9 -:10016000638420006314C001631AC021E38E20FE63 -:10017000130E8000930010001301F0FF6384200031 -:100180006314C001631CC01FE38E20FE130E900099 -:1001900013020000930000001301F0FF6380201E93 -:1001A0001302120093022000E31652FE130EA00069 -:1001B00013020000930000001301F0FF1300000081 -:1001C000638E201A1302120093022000E31452FEE1 -:1001D000130EB00013020000930000001301F0FFA3 -:1001E0001300000013000000638A2018130212009D -:1001F00093022000E31252FE130EC000130200000F -:1002000093000000130000001301F0FF6388201624 -:100210001302120093022000E31452FE130ED000CA -:100220001302000093000000130000001301F0FF10 -:1002300013000000638420141302120093022000B4 -:10024000E31252FE130EE0001302000093000000C0 -:1002500013000000130000001301F0FF6380201260 -:100260001302120093022000E31252FE130EF0005C -:1002700013020000930000001301F0FF63802010C0 -:100280001302120093022000E31652FE130E000127 -:1002900013020000930000001301F0FF13000000A0 -:1002A000638E200C1302120093022000E31452FE0E -:1002B000130E100113020000930000001301F0FF61 -:1002C0001300000013000000638A200A13021200CA -:1002D00093022000E31252FE130E200113020000CD -:1002E00093000000130000001301F0FF6388200852 -:1002F0001302120093022000E31452FE130E300189 -:100300001302000093000000130000001301F0FF2F -:1003100013000000638420061302120093022000E1 -:10032000E31252FE130E400113020000930000007E -:1003300013000000130000001301F0FF638020048D -:100340001302120093022000E31252FE93001000E9 -:10035000630A0000938010009380100093801000C7 -:10036000938010009380100093801000930E300053 -:10037000130E50016394D001631CC0010F00F00FF5 -:1003800063000E00131E1E00136E1E00730000009B -:100390000F00F00F130E100073000000731000C068 -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:0403C0000000000039 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930120009300000013010000638620008B +:100110006318302A63163000E38E20FE6312302A03 +:10012000930130009300100013011000638620003B +:100130006318302863163000E38E20FE63123028E7 +:10014000930140009300F0FF1301F0FF638620004D +:100150006318302663163000E38E20FE63123026CB +:1001600093015000930000001301100063842000ED +:100170006314300063163024E38E20FE9301600088 +:10018000930010001301000063842000631430000A +:1001900063183022E38E20FE930170009300F0FF7D +:1001A000130110006384200063143000631A3020B0 +:1001B000E38E20FE93018000930010001301F0FFF6 +:1001C0006384200063143000631C301EE38E20FE25 +:1001D0009301900013020000930000001301F0FF50 +:1001E0006380201E1302120093022000E31652FEC9 +:1001F0009301A00013020000930000001301F0FF20 +:1002000013000000638E201A1302120093022000D4 +:10021000E31452FE9301B0001302000093000000AB +:100220001301F0FF1300000013000000638A201880 +:100230001302120093022000E31252FE9301C00049 +:100240001302000093000000130000001301F0FFF0 +:10025000638820161302120093022000E31452FE5A +:100260009301D0001302000093000000130000006F +:100270001301F0FF13000000638420141302120026 +:1002800093022000E31252FE9301E00013020000EB +:100290009300000013000000130000001301F0FFA2 +:1002A000638020121302120093022000E31252FE18 +:1002B0009301F00013020000930000001301F0FF0F +:1002C000638020101302120093022000E31652FEF6 +:1002D0009301000113020000930000001301F0FFDE +:1002E00013000000638E200C130212009302200002 +:1002F000E31452FE9301100113020000930000006A +:100300001301F0FF1300000013000000638A200AAD +:100310001302120093022000E31252FE9301200107 +:100320001302000093000000130000001301F0FF0F +:10033000638820081302120093022000E31452FE87 +:10034000930130011302000093000000130000002D +:100350001301F0FF13000000638420061302120053 +:1003600093022000E31252FE9301400113020000A9 +:100370009300000013000000130000001301F0FFC1 +:10038000638020041302120093022000E31252FE45 +:1003900093001000630A0000938010009380100007 +:1003A00093801000938010009380100093801000C1 +:1003B000930E3000930150016394D001631030021A +:1003C0000F00F00F638001009391110093E1110081 +:1003D0009308D00513850100730000000F00F00F93 +:1003E000930110009308D00513050000730000006E +:0C03F000731000C00000000000000000BE :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-bge.hex b/benchmarks/riscv_tests/rv32ui-p-bge.hex index ea098af9..e402eb5e 100644 --- a/benchmarks/riscv_tests/rv32ui-p-bge.hex +++ b/benchmarks/riscv_tests/rv32ui-p-bge.hex @@ -1,73 +1,80 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C000930000001301000063D620006318C031C4 -:1000D0006316C001E3DE20FE6312C031130E300050 -:1000E000930010001301100063D620006318C02F86 -:1000F0006316C001E3DE20FE6312C02F130E400022 -:100100009300F0FF1301F0FF63D620006318C02DA9 -:100110006316C001E3DE20FE6312C02D130E5000F3 -:10012000930010001301000063D620006318C02B59 -:100130006316C001E3DE20FE6312C02B130E6000C5 -:10014000930010001301F0FF63D620006318C0294C -:100150006316C001E3DE20FE6312C029130E700097 -:100160009300F0FF1301E0FF63D620006318C0275F -:100170006316C001E3DE20FE6312C027130E800069 -:10018000930000001301100063D420006314C00129 -:100190006316C025E3DE20FE130E90009300F0FFEF -:1001A0001301100063D420006314C0016318C0233E -:1001B000E3DE20FE130EA0009300E0FF1301F0FF2A -:1001C00063D420006314C001631AC021E3DE20FE63 -:1001D000130EB0009300E0FF1301100063D4200061 -:1001E0006314C001631CC01FE3DE20FE130EC000B9 -:1001F000130200009300F0FF1301000063D0201EE3 -:100200001302120093022000E31652FE130ED000D8 -:10021000130200009300F0FF130100001300000020 -:1002200063DE201A1302120093022000E31452FE30 -:10023000130EE000130200009300F0FF1301000012 -:10024000130000001300000063DA201813021200EC -:1002500093022000E31252FE130EF000130200007E -:100260009300F0FF130000001301000063D8201674 -:100270001302120093022000E31452FE130E000139 -:10028000130200009300F0FF1300000013010000B0 -:100290001300000063D42014130212009302200004 -:1002A000E31252FE130E1001130200009300F0FF40 -:1002B00013000000130000001301000063D020129F -:1002C0001302120093022000E31252FE130E2001CB -:1002D000130200009300F0FF1301000063D0201010 -:1002E0001302120093022000E31652FE130E300197 -:1002F000130200009300F0FF130100001300000040 -:1003000063DE200C1302120093022000E31452FE5D -:10031000130E4001130200009300F0FF13010000D0 -:10032000130000001300000063DA200A1302120019 -:1003300093022000E31252FE130E5001130200003C -:100340009300F0FF130000001301000063D82008A1 -:100350001302120093022000E31452FE130E6001F8 -:10036000130200009300F0FF1300000013010000CF -:100370001300000063D42006130212009302200031 -:10038000E31252FE130E7001130200009300F0FFFF -:1003900013000000130000001301000063D02004CC -:1003A0001302120093022000E31252FE9300100089 -:1003B00063DA000093801000938010009380100097 -:1003C000938010009380100093801000930E3000F3 -:1003D000130E80016394D001631CC0010F00F00F65 -:1003E00063000E00131E1E00136E1E00730000003B -:1003F0000F00F00F130E100073000000731000C008 -:0404000000000000F8 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000093012000930000001301000063D620003B +:100110006318303063163000E3DE20FE63123030A7 +:1001200093013000930010001301100063D62000EB +:100130006318302E63163000E3DE20FE6312302E8B +:10014000930140009300F0FF1301F0FF63D62000FD +:100150006318302C63163000E3DE20FE6312302C6F +:1001600093015000930010001301000063D620009B +:100170006318302A63163000E3DE20FE6312302A53 +:1001800093016000930010001301F0FF63D620007C +:100190006318302863163000E3DE20FE6312302837 +:1001A000930170009300F0FF1301E0FF63D620007D +:1001B0006318302663163000E3DE20FE631230261B +:1001C00093018000930000001301100063D420000D +:1001D0006314300063163024E3DE20FE93019000A8 +:1001E0009300F0FF1301100063D42000631430006B +:1001F00063183022E3DE20FE9301A0009300E0FFAD +:100200001301F0FF63D4200063143000631A302020 +:10021000E3DE20FE9301B0009300E0FF1301100025 +:1002200063D4200063143000631C301EE3DE20FE24 +:100230009301C000130200009300F0FF13010000BF +:1002400063D0201E1302120093022000E31652FE18 +:100250009301D000130200009300F0FF130100008F +:100260001300000063DE201A130212009302200024 +:10027000E31452FE9301E000130200009300F0FF2C +:1002800013010000130000001300000063DA2018BF +:100290001302120093022000E31252FE9301F000B9 +:1002A000130200009300F0FF130000001301000090 +:1002B00063D820161302120093022000E31452FEAA +:1002C00093010001130200009300F0FF13000000EF +:1002D000130100001300000063D420141302120065 +:1002E00093022000E31252FE93011001130200005A +:1002F0009300F0FF13000000130000001301000042 +:1003000063D020121302120093022000E31252FE67 +:1003100093012001130200009300F0FF130100007D +:1003200063D020101302120093022000E31652FE45 +:1003300093013001130200009300F0FF130100004D +:100340001300000063DE200C130212009302200051 +:10035000E31452FE93014001130200009300F0FFEA +:1003600013010000130000001300000063DA200AEC +:100370001302120093022000E31252FE9301500177 +:10038000130200009300F0FF1300000013010000AF +:1003900063D820081302120093022000E31452FED7 +:1003A00093016001130200009300F0FF13000000AE +:1003B000130100001300000063D420061302120092 +:1003C00093022000E31252FE930170011302000019 +:1003D0009300F0FF13000000130000001301000061 +:1003E00063D020041302120093022000E31252FE95 +:1003F0009300100063DA00009380100093801000D7 +:100400009380100093801000938010009380100060 +:10041000930E3000930180016394D0016310300289 +:100420000F00F00F638001009391110093E1110020 +:100430009308D00513850100730000000F00F00F32 +:10044000930110009308D00513050000730000000D +:10045000731000C000000000000000000000000059 +:10046000000000000000000000000000000000008C +:0C04700000000000000000000000000080 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-bgeu.hex b/benchmarks/riscv_tests/rv32ui-p-bgeu.hex index b7970cdb..e3cade2c 100644 --- a/benchmarks/riscv_tests/rv32ui-p-bgeu.hex +++ b/benchmarks/riscv_tests/rv32ui-p-bgeu.hex @@ -1,77 +1,84 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C000930000001301000063F620006312C035A6 -:1000D0006316C001E3FE20FE631CC033130E300024 -:1000E000930010001301100063F620006312C03368 -:1000F0006316C001E3FE20FE631CC031130E4000F6 -:100100009300F0FF1301F0FF63F620006312C0318B -:100110006316C001E3FE20FE631CC02F130E5000C7 -:10012000930010001301000063F620006312C02F3B -:100130006316C001E3FE20FE631CC02D130E600099 -:100140009300F0FF1301E0FF63F620006312C02D5F -:100150006316C001E3FE20FE631CC02B130E70006B -:100160009300F0FF1301000063F620006312C02B20 -:100170006316C001E3FE20FE631CC029130E80003D -:10018000930000001301100063F420006314C00109 -:100190006310C029E3FE20FE130E90009300E0FFE1 -:1001A0001301F0FF63F420006314C0016312C02741 -:1001B000E3FE20FE130EA000930000001301F0FFE9 -:1001C00063F420006314C0016314C025E3FE20FE25 -:1001D000130EB000B70000809380F0FF370100805D -:1001E00063F420006314C0016314C023E3FE20FE07 -:1001F000130EC00013020000B70000F09380F0FF60 -:10020000370100F063F62020130212009302200051 -:10021000E31452FE130ED00013020000B70000F0EA -:100220009380F0FF370100F01300000063F2201EFE -:100230001302120093022000E31252FE130EE0009C -:1002400013020000B70000F09380F0FF370100F0C8 -:10025000130000001300000063FC201A13021200B8 -:1002600093022000E31052FE130EF0001302000070 -:10027000B70000F09380F0FF13000000370100F09A -:1002800063F820181302120093022000E31252FEBA -:10029000130E000113020000B70000F09380F0FF7E -:1002A00013000000370100F01300000063F2201675 -:1002B0001302120093022000E31052FE130E1001ED -:1002C00013020000B70000F09380F0FF130000005D -:1002D00013000000370100F063FC2012130212002B -:1002E00093022000E31052FE130E200113020000BF -:1002F000B70000F09380F0FF370100F063FA2010A0 -:100300001302120093022000E31452FE130E300178 -:1003100013020000B70000F09380F0FF370100F0F7 -:100320001300000063F6200E130212009302200057 -:10033000E31252FE130E400113020000B70000F05A -:100340009380F0FF370100F013000000130000005D -:1003500063F0200C1302120093022000E31052FEFF -:10036000130E500113020000B70000F09380F0FF5D -:1003700013000000370100F063FC20081302120094 -:1003800093022000E31252FE130E600113020000DC -:10039000B70000F09380F0FF13000000370100F079 -:1003A0001300000063F620061302120093022000DF -:1003B000E31052FE130E700113020000B70000F0AC -:1003C0009380F0FF1300000013000000370100F0DD -:1003D00063F020041302120093022000E31052FE87 -:1003E0009300100063FA00009380100093801000C7 -:1003F0009380100093801000938010009380100071 -:10040000930E3000130E80016394D001631CC00171 -:100410000F00F00F63000E00131E1E00136E1E006F -:10042000730000000F00F00F130E100073000000A7 -:10043000731000C000000000000000000000000079 -:0404400000000000B8 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000093012000930000001301000063F620001B +:100110006312303463163000E3FE20FE631C30327D +:1001200093013000930010001301100063F62000CB +:100130006312303263163000E3FE20FE631C303061 +:10014000930140009300F0FF1301F0FF63F62000DD +:100150006312303063163000E3FE20FE631C302E45 +:1001600093015000930010001301000063F620007B +:100170006312302E63163000E3FE20FE631C302C29 +:10018000930160009300F0FF1301E0FF63F620008D +:100190006312302C63163000E3FE20FE631C302A0D +:1001A000930170009300F0FF1301000063F620003C +:1001B0006312302A63163000E3FE20FE631C3028F1 +:1001C00093018000930000001301100063F42000ED +:1001D0006314300063103028E3FE20FE930190008A +:1001E0009300E0FF1301F0FF63F42000631430007C +:1001F00063123026E3FE20FE9301A000930000006E +:100200001301F0FF63F42000631430006314302402 +:10021000E3FE20FE9301B000B70000809380F0FF62 +:100220003701008063F4200063143000631430222F +:10023000E3FE20FE9301C00013020000B70000F0AF +:100240009380F0FF370100F063F6202013021200C4 +:1002500093022000E31452FE9301D0001302000029 +:10026000B70000F09380F0FF370100F013000000AA +:1002700063F2201E1302120093022000E31252FECA +:100280009301E00013020000B70000F09380F0FF3C +:10029000370100F0130000001300000063FC201A77 +:1002A0001302120093022000E31052FE9301F000AB +:1002B00013020000B70000F09380F0FF130000006D +:1002C000370100F063F82018130212009302200097 +:1002D000E31252FE9301000113020000B70000F088 +:1002E0009380F0FF13000000370100F013000000BE +:1002F00063F220161302120093022000E31052FE54 +:100300009301100113020000B70000F09380F0FF8A +:100310001300000013000000370100F063FC2012FE +:100320001302120093022000E31052FE93012001F9 +:1003300013020000B70000F09380F0FF370100F0D7 +:1003400063FA20101302120093022000E31452FEFD +:100350009301300113020000B70000F09380F0FF1A +:10036000370100F01300000063F6200E13021200A4 +:1003700093022000E31252FE930140011302000099 +:10038000B70000F09380F0FF370100F01300000089 +:100390001300000063F0200C1302120093022000EF +:1003A000E31052FE9301500113020000B70000F069 +:1003B0009380F0FF13000000370100F063FC200879 +:1003C0001302120093022000E31252FE9301600117 +:1003D00013020000B70000F09380F0FF130000004C +:1003E000370100F01300000063F62006130212002C +:1003F00093022000E31052FE9301700113020000EB +:10040000B70000F09380F0FF13000000130000001D +:10041000370100F063F02004130212009302200061 +:10042000E31052FE9300100063FA00009380100066 +:100430009380100093801000938010009380100030 +:1004400093801000930E3000930180016394D001DB +:10045000631030020F00F00F6380010093911100D0 +:1004600093E111009308D00513850100730000008B +:100470000F00F00F930110009308D0051305000042 +:1004800073000000731000C00000000000000000B6 +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:0C04B00000000000000000000000000040 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-blt.hex b/benchmarks/riscv_tests/rv32ui-p-blt.hex index 322ff1d0..82ea303f 100644 --- a/benchmarks/riscv_tests/rv32ui-p-blt.hex +++ b/benchmarks/riscv_tests/rv32ui-p-blt.hex @@ -1,69 +1,72 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C000930000001301100063C620006318C02BCA -:1000D0006316C001E3CE20FE6312C02B130E300066 -:1000E0009300F0FF1301100063C620006318C029BD -:1000F0006316C001E3CE20FE6312C029130E400038 -:100100009300E0FF1301F0FF63C620006318C027CF -:100110006316C001E3CE20FE6312C027130E500009 -:10012000930010001301000063C420006314C00199 -:100130006316C025E3CE20FE130E6000930010006E -:100140001301F0FF63C420006314C0016318C023CF -:10015000E3CE20FE130E70009300F0FF1301E0FFCA -:1001600063C420006314C001631AC021E3CE20FEE3 -:10017000130E8000930010001301E0FF63C4200001 -:100180006314C001631CC01FE3CE20FE130E900059 -:1001900013020000930000001301F0FF63C0201E53 -:1001A0001302120093022000E31652FE130EA00069 -:1001B00013020000930000001301F0FF1300000081 -:1001C00063CE201A1302120093022000E31452FEA1 -:1001D000130EB00013020000930000001301F0FFA3 -:1001E000130000001300000063CA2018130212005D -:1001F00093022000E31252FE130EC000130200000F -:1002000093000000130000001301F0FF63C82016E4 -:100210001302120093022000E31452FE130ED000CA -:100220001302000093000000130000001301F0FF10 -:100230001300000063C42014130212009302200074 -:10024000E31252FE130EE0001302000093000000C0 -:1002500013000000130000001301F0FF63C0201220 -:100260001302120093022000E31252FE130EF0005C -:1002700013020000930000001301F0FF63C0201080 -:100280001302120093022000E31652FE130E000127 -:1002900013020000930000001301F0FF13000000A0 -:1002A00063CE200C1302120093022000E31452FECE -:1002B000130E100113020000930000001301F0FF61 -:1002C000130000001300000063CA200A130212008A -:1002D00093022000E31252FE130E200113020000CD -:1002E00093000000130000001301F0FF63C8200812 -:1002F0001302120093022000E31452FE130E300189 -:100300001302000093000000130000001301F0FF2F -:100310001300000063C420061302120093022000A1 -:10032000E31252FE130E400113020000930000007E -:1003300013000000130000001301F0FF63C020044D -:100340001302120093022000E31252FE93001000E9 -:10035000634A100093801000938010009380100077 -:10036000938010009380100093801000930E300053 -:10037000130E50016394D001631CC0010F00F00FF5 -:1003800063000E00131E1E00136E1E00730000009B -:100390000F00F00F130E100073000000731000C068 -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:0403C0000000000039 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000093012000930000001301100063C620003B +:100110006318302A63163000E3CE20FE6312302AC3 +:10012000930130009300F0FF1301100063C620001C +:100130006318302863163000E3CE20FE63123028A7 +:10014000930140009300E0FF1301F0FF63C620001D +:100150006318302663163000E3CE20FE631230268B +:1001600093015000930010001301000063C42000AD +:100170006314300063163024E3CE20FE9301600048 +:10018000930010001301F0FF63C4200063143000DB +:1001900063183022E3CE20FE930170009300F0FF3D +:1001A0001301E0FF63C4200063143000631A3020A1 +:1001B000E3CE20FE93018000930010001301E0FFC6 +:1001C00063C4200063143000631C301EE3CE20FEA5 +:1001D0009301900013020000930000001301F0FF50 +:1001E00063C0201E1302120093022000E31652FE89 +:1001F0009301A00013020000930000001301F0FF20 +:100200001300000063CE201A130212009302200094 +:10021000E31452FE9301B0001302000093000000AB +:100220001301F0FF130000001300000063CA201840 +:100230001302120093022000E31252FE9301C00049 +:100240001302000093000000130000001301F0FFF0 +:1002500063C820161302120093022000E31452FE1A +:100260009301D0001302000093000000130000006F +:100270001301F0FF1300000063C4201413021200E6 +:1002800093022000E31252FE9301E00013020000EB +:100290009300000013000000130000001301F0FFA2 +:1002A00063C020121302120093022000E31252FED8 +:1002B0009301F00013020000930000001301F0FF0F +:1002C00063C020101302120093022000E31652FEB6 +:1002D0009301000113020000930000001301F0FFDE +:1002E0001300000063CE200C1302120093022000C2 +:1002F000E31452FE9301100113020000930000006A +:100300001301F0FF130000001300000063CA200A6D +:100310001302120093022000E31252FE9301200107 +:100320001302000093000000130000001301F0FF0F +:1003300063C820081302120093022000E31452FE47 +:10034000930130011302000093000000130000002D +:100350001301F0FF1300000063C420061302120013 +:1003600093022000E31252FE9301400113020000A9 +:100370009300000013000000130000001301F0FFC1 +:1003800063C020041302120093022000E31252FE05 +:1003900093001000634A10009380100093801000B7 +:1003A00093801000938010009380100093801000C1 +:1003B000930E3000930150016394D001631030021A +:1003C0000F00F00F638001009391110093E1110081 +:1003D0009308D00513850100730000000F00F00F93 +:1003E000930110009308D00513050000730000006E +:0C03F000731000C00000000000000000BE :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-bltu.hex b/benchmarks/riscv_tests/rv32ui-p-bltu.hex index 783304b1..7e7f25d3 100644 --- a/benchmarks/riscv_tests/rv32ui-p-bltu.hex +++ b/benchmarks/riscv_tests/rv32ui-p-bltu.hex @@ -1,73 +1,76 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C000930000001301100063E620006312C02FAC -:1000D0006316C001E3EE20FE631CC02D130E30003A -:1000E0009300E0FF1301F0FF63E620006312C02DD0 -:1000F0006316C001E3EE20FE631CC02B130E40000C -:10010000930000001301F0FF63E620006312C02B90 -:100110006316C001E3EE20FE631CC029130E5000DD -:10012000930010001301000063E420006314C00179 -:100130006310C029E3EE20FE130E60009300F0FF71 -:100140001301E0FF63E420006314C0016312C027C1 -:10015000E3EE20FE130E70009300F0FF1301000089 -:1001600063E420006314C0016314C025E3EE20FEA5 -:10017000130E8000B7000080370100801301F1FFEB -:1001800063E420006314C0016314C023E3EE20FE87 -:10019000130E900013020000B70000F0370100F0CA -:1001A0001301F1FF63E620201302120093022000E6 -:1001B000E31452FE130EA00013020000B70000F07B -:1001C000370100F01301F1FF1300000063E2201E6D -:1001D0001302120093022000E31252FE130EB0002D -:1001E00013020000B70000F0370100F01301F1FF27 -:1001F000130000001300000063EC201A1302120029 -:1002000093022000E31052FE130EC0001302000000 -:10021000B70000F013000000370100F01301F1FFF8 -:1002200063E820181302120093022000E31252FE2A -:10023000130ED00013020000B70000F013000000FE -:10024000370100F01301F1FF1300000063E22016F4 -:100250001302120093022000E31052FE130EE0007E -:1002600013020000B70000F01300000013000000AC -:10027000370100F01301F1FF63EC201213021200AA -:1002800093022000E31052FE130EF0001302000050 -:10029000B70000F0370100F01301F1FF63EA20100E -:1002A0001302120093022000E31452FE130E000109 -:1002B00013020000B70000F0370100F01301F1FF56 -:1002C0001300000063E6200E1302120093022000C8 -:1002D000E31252FE130E100113020000B70000F0EB -:1002E000370100F01301F1FF1300000013000000BC -:1002F00063E0200C1302120093022000E31052FE70 -:10030000130E200113020000B70000F013000000DC -:10031000370100F01301F1FF63EC20081302120013 -:1003200093022000E31252FE130E3001130200006C -:10033000B70000F013000000370100F01301F1FFD7 -:100340001300000063E6200613021200930220004F -:10035000E31052FE130E400113020000B70000F03C -:100360001300000013000000370100F01301F1FF3B -:1003700063E020041302120093022000E31052FEF7 -:1003800093001000636A10009380100093801000A7 -:1003900093801000938010009380100093801000D1 -:1003A000930E3000130E50016394D001631CC00102 -:1003B0000F00F00F63000E00131E1E00136E1E00D0 -:1003C000730000000F00F00F130E10007300000008 -:1003D000731000C0000000000000000000000000DA -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:0404000000000000F8 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000093012000930000001301100063E620001B +:100110006312302E63163000E3EE20FE631C302C99 +:10012000930130009300E0FF1301F0FF63E620002D +:100130006312302C63163000E3EE20FE631C302A7D +:1001400093014000930000001301F0FF63E62000DC +:100150006312302A63163000E3EE20FE631C302861 +:1001600093015000930010001301000063E420008D +:100170006314300063103028E3EE20FE930160002A +:100180009300F0FF1301E0FF63E4200063143000EC +:1001900063123026E3EE20FE930170009300F0FF1F +:1001A0001301000063E42000631430006314302462 +:1001B000E3EE20FE93018000B7000080370100804D +:1001C0001301F1FF63E42000631430006314302254 +:1001D000E3EE20FE9301900013020000B70000F050 +:1001E000370100F01301F1FF63E620201302120033 +:1001F00093022000E31452FE9301A00013020000BA +:10020000B70000F0370100F01301F1FF1300000008 +:1002100063E2201E1302120093022000E31252FE3A +:100220009301B00013020000B70000F0370100F0A6 +:100230001301F1FF130000001300000063EC201A0B +:100240001302120093022000E31052FE9301C0003B +:1002500013020000B70000F013000000370100F0A7 +:100260001301F1FF63E8201813021200930220002B +:10027000E31252FE9301D00013020000B70000F019 +:1002800013000000370100F01301F1FF130000001C +:1002900063E220161302120093022000E31052FEC4 +:1002A0009301E00013020000B70000F0130000000B +:1002B00013000000370100F01301F1FF63EC20127E +:1002C0001302120093022000E31052FE9301F0008B +:1002D00013020000B70000F0370100F01301F1FF36 +:1002E00063EA20101302120093022000E31452FE6E +:1002F0009301000113020000B70000F0370100F085 +:100300001301F1FF1300000063E6200E1302120038 +:1003100093022000E31252FE930110011302000029 +:10032000B70000F0370100F01301F1FF13000000E7 +:100330001300000063E0200C13021200930220005F +:10034000E31052FE9301200113020000B70000F0F9 +:1003500013000000370100F01301F1FF63EC2008E7 +:100360001302120093022000E31252FE93013001A7 +:1003700013020000B70000F013000000370100F086 +:100380001301F1FF1300000063E6200613021200C0 +:1003900093022000E31052FE93014001130200007B +:1003A000B70000F01300000013000000370100F058 +:1003B0001301F1FF63E020041302120093022000F6 +:1003C000E31052FE93001000636A10009380100047 +:1003D0009380100093801000938010009380100091 +:1003E00093801000930E3000930150016394D0016C +:1003F000631030020F00F00F638001009391110031 +:1004000093E111009308D0051385010073000000EB +:100410000F00F00F930110009308D00513050000A2 +:1004200073000000731000C0000000000000000016 +:0C043000000000000000000000000000C0 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-bne.hex b/benchmarks/riscv_tests/rv32ui-p-bne.hex index 83bb9db9..beda57b5 100644 --- a/benchmarks/riscv_tests/rv32ui-p-bne.hex +++ b/benchmarks/riscv_tests/rv32ui-p-bne.hex @@ -1,69 +1,72 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C000930000001301100063962000631AC02BF8 -:1000D0006316C001E39E20FE6314C02B130E300094 -:1000E000930010001301000063962000631AC029DA -:1000F0006316C001E39E20FE6314C029130E400066 -:100100009300F0FF1301100063962000631AC027CC -:100110006316C001E39E20FE6314C027130E500037 -:10012000930010001301F0FF63962000631AC025AE -:100130006316C001E39E20FE6314C025130E600009 -:100140009300000013010000639420006314C001B9 -:100150006318C023E39E20FE130E7000930010006E -:1001600013011000639420006314C001631AC021BE -:10017000E39E20FE130E80009300F0FF1301F0FFBA -:10018000639420006314C001631CC01FE39E20FE23 -:10019000130E9000130200009300000013010000F2 -:1001A0006390201E1302120093022000E31652FEF9 -:1001B000130EA000130200009300000013010000C2 -:1001C00013000000639E201A130212009302200005 -:1001D000E31452FE130EB00013020000930000005F -:1001E000130100001300000013000000639A2018A0 -:1001F0001302120093022000E31252FE130EC000FD -:10020000130200009300000013000000130100001F -:10021000639820161302120093022000E31452FE8A -:10022000130ED00013020000930000001300000022 -:100230001301000013000000639420141302120045 -:1002400093022000E31252FE130EE000130200009E -:1002500093000000130000001300000013010000D1 -:10026000639020121302120093022000E31252FE48 -:10027000130EF000130200009300000013010000B1 -:10028000639020101302120093022000E31652FE26 -:10029000130E000113020000930000001301000080 -:1002A00013000000639E200C130212009302200032 -:1002B000E31452FE130E100113020000930000001D -:1002C000130100001300000013000000639A200ACD -:1002D0001302120093022000E31252FE130E2001BB -:1002E000130200009300000013000000130100003F -:1002F000639820081302120093022000E31452FEB8 -:10030000130E3001130200009300000013000000E0 -:100310001301000013000000639420061302120072 -:1003200093022000E31252FE130E4001130200005C -:1003300093000000130000001300000013010000F0 -:10034000639020041302120093022000E31252FE75 -:1003500093001000639A00009380100093801000B7 -:100360009380100093801000938010009380100001 -:10037000930E3000130E50016394D001631CC00132 -:100380000F00F00F63000E00131E1E00136E1E0000 -:10039000730000000F00F00F130E10007300000038 -:1003A000731000C00000000000000000000000000A -:1003B000000000000000000000000000000000003D -:0403C0000000000039 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930120009300000013011000639620006B +:10011000631A302A63163000E39E20FE6314302AEF +:10012000930130009300100013010000639620003B +:10013000631A302863163000E39E20FE63143028D3 +:10014000930140009300F0FF13011000639620001C +:10015000631A302663163000E39E20FE63143026B7 +:1001600093015000930010001301F0FF63962000EC +:10017000631A302463163000E39E20FE631430249B +:1001800093016000930000001301000063942000BD +:100190006314300063183022E39E20FE9301700048 +:1001A00093001000130110006394200063143000CA +:1001B000631A3020E39E20FE930180009300F0FF3D +:1001C0001301F0FF6394200063143000631C301EA1 +:1001D000E39E20FE930190001302000093000000B4 +:1001E000130100006390201E1302120093022000EE +:1001F000E31652FE9301A0001302000093000000DA +:100200001301000013000000639E201A1302120065 +:1002100093022000E31452FE9301B0001302000089 +:100220009300000013010000130000001300000001 +:10023000639A20181302120093022000E31252FE68 +:100240009301C0001302000093000000130000009F +:10025000130100006398201613021200930220007D +:10026000E31452FE9301D00013020000930000003B +:100270001300000013010000130000006394201419 +:100280001302120093022000E31252FE9301E000D9 +:100290001302000093000000130000001300000090 +:1002A0001301000063902012130212009302200039 +:1002B000E31252FE9301F0001302000093000000CD +:1002C000130100006390201013021200930220001B +:1002D000E31652FE93010001130200009300000098 +:1002E0001301000013000000639E200C1302120093 +:1002F00093022000E31452FE930110011302000048 +:100300009300000013010000130000001300000020 +:10031000639A200A1302120093022000E31252FE95 +:10032000930120011302000093000000130000005D +:1003300013010000639820081302120093022000AA +:10034000E31452FE930130011302000093000000F9 +:100350001300000013010000130000006394200646 +:100360001302120093022000E31252FE9301400197 +:1003700013020000930000001300000013000000AF +:100380001301000063902004130212009302200066 +:10039000E31252FE93001000639A00009380100055 +:1003A00093801000938010009380100093801000C1 +:1003B00093801000930E3000930150016394D0019C +:1003C000631030020F00F00F638001009391110061 +:1003D00093E111009308D00513850100730000001C +:1003E0000F00F00F930110009308D00513050000D3 +:0C03F00073000000731000C0000000004B :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-fence_i.hex b/benchmarks/riscv_tests/rv32ui-p-fence_i.hex index 4823a04b..90b6e539 100644 --- a/benchmarks/riscv_tests/rv32ui-p-fence_i.hex +++ b/benchmarks/riscv_tests/rv32ui-p-fence_i.hex @@ -1,41 +1,44 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F1730020309306F006DC -:1000C00017250000031505F4972500008395A5F377 -:1000D00013000000130000001300000013000000D4 -:1000E00013000000130000001300000013000000C4 -:1000F00013000000130000001300000013000000B4 -:1001000097020000239AA200970200002397B200F2 -:100110000F1000009386E60D13000000930EC01B25 -:10012000130E2000639AD607130740061307F7FF44 -:10013000E31E07FE970200002396A2049702000028 -:100140002393B2040F1000001300000013000000FE -:100150001300000013000000130000001300000053 -:100160001300000013000000130000001300000043 -:100170001300000013000000130000001300000033 -:100180009386B62213000000930E9030130E3000B9 -:100190006394D601631CC0010F00F00F63000E00D2 -:1001A000131E1E00136E1E00730000000F00F00FE0 -:1001B000130E100073000000731000C00000000058 -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000000000001F -:1001E000000000000000000000000000000000000F -:0401F000000000000B +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100009306F006172500000315C5EF972500009C +:10011000839565EF1300000013000000130000003A +:100120001300000013000000130000001300000083 +:100130001300000013000000130000001300000073 +:1001400097020000239AA200970200002397B200B2 +:100150000F1000009386E60D13000000930EC01BE5 +:1001600093012000639AD607130740061307F7FF91 +:10017000E31E07FE970200002396A20497020000E8 +:100180002393B2040F1000001300000013000000BE +:100190001300000013000000130000001300000013 +:1001A0001300000013000000130000001300000003 +:1001B00013000000130000001300000013000000F3 +:1001C0009386B62213000000930E90309301300006 +:1001D0006394D601631030020F00F00F63800100BA +:1001E0009391110093E111009308D005138501004C +:1001F000730000000F00F00F930110009308D0056A +:100200001305000073000000731000C00000000020 +:1002100000000000000000000000000000000000DE +:080220000000000000000000D6 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 :102000009386D614000000000000000000000000CD -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-jal.hex b/benchmarks/riscv_tests/rv32ui-p-jal.hex index f03aa976..03150ecc 100644 --- a/benchmarks/riscv_tests/rv32ui-p-jal.hex +++ b/benchmarks/riscv_tests/rv32ui-p-jal.hex @@ -1,29 +1,36 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C00093000000EF010001130000001300000086 -:1000D0006F00000417010000130141FF631A310291 -:1000E000930010006F004001938010009380100077 -:1000F0009380100093801000938010009380100074 -:10010000930E3000130E30006394D001631CC001C5 -:100110000F00F00F63000E00131E1E00136E1E0072 -:10012000730000000F00F00F130E100073000000AA -:10013000731000C00000000000000000000000007C -:0401400000000000BB +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000093012000930000006F0200011300000023 +:10011000130000006F00000417010000130141FFED +:10012000631A4102930010006F0040019380100099 +:100130009380100093801000938010009380100033 +:1001400093801000930E3000930130006394D0012F +:10015000631030020F00F00F6380010093911100D3 +:1001600093E111009308D00513850100730000008E +:100170000F00F00F930110009308D0051305000045 +:1001800073000000731000C00000000000000000B9 +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-jalr.hex b/benchmarks/riscv_tests/rv32ui-p-jalr.hex index 0381aae9..f7789f0f 100644 --- a/benchmarks/riscv_tests/rv32ui-p-jalr.hex +++ b/benchmarks/riscv_tests/rv32ui-p-jalr.hex @@ -1,37 +1,44 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030130E20002A -:1000C000930200001703000013030301E70203007B -:1000D0006F00000C170300001303C3FF639A620A4A -:1000E000130E400013020000170300001303030166 -:1000F000E7090300631EC0091302120093022000E7 -:10010000E31452FE130E5000130200001703000008 -:100110001303430113000000E7090300631AC0073B -:100120001302120093022000E31252FE130E60002D -:1001300013020000170300001303830113000000E3 -:1001400013000000E70903006314C0051302120046 -:1001500093022000E31052FE9302100017030000E8 -:100160001303C3016700C3FF93821200938212003E -:1001700093821200938212009382120093821200E3 -:10018000930E4000130E70006394D201631CC001F3 -:100190000F00F00F63000E00131E1E00136E1E00F2 -:1001A000730000000F00F00F130E1000730000002A -:1001B000731000C0000000000000000000000000FC -:0401C000000000003B +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100009301200093020000170300001303030172 +:10011000E70203006F00000C170300001303C3FF86 +:10012000639A620A93014000130200001703000063 +:1001300013030301E7060300631E300813021200D5 +:1001400093022000E31452FE9301500013020000BA +:10015000170300001303430113000000E706030028 +:10016000631A30061302120093022000E31252FEBB +:1001700093016000130200001703000013038301C2 +:100180001300000013000000E706030063143004AE +:100190001302120093022000E31052FE930210009B +:1001A000170300001303C3016700C3FF938212000B +:1001B00093821200938212009382120093821200A3 +:1001C00093821200930E4000930170006394D20159 +:1001D000631030020F00F00F638001009391110053 +:1001E00093E111009308D00513850100730000000E +:1001F0000F00F00F930110009308D00513050000C5 +:1002000073000000731000C0000000000000000038 +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:0C023000000000000000000000000000C2 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-lb.hex b/benchmarks/riscv_tests/rv32ui-p-lb.hex index f91bb8b3..21aedebc 100644 --- a/benchmarks/riscv_tests/rv32ui-p-lb.hex +++ b/benchmarks/riscv_tests/rv32ui-p-lb.hex @@ -1,62 +1,69 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F483810000930EF0FF130E200014 -:1000D000639CD123972000009380C0F2838110009D -:1000E000930E0000130E30006390D1239720000080 -:1000F000938040F183812000930E00FF130E400097 -:100100006394D121972000009380C0EF8381300059 -:10011000930EF000130E50006398D11F972000003B -:10012000938070EE8381D0FF930EF0FF130E60007A -:10013000639CD11D972000009380F0EC8381E0FF49 -:10014000930E0000130E70006390D11D97200000E5 -:10015000938070EB8381F0FF930E00FF130E8000FD -:100160006394D11B972000009380F0E98381000005 -:10017000930EF000130E90006398D11997200000A1 -:10018000938040E8938000FE83810002930EF0FF8D -:10019000130EA000639AD11797200000938080E689 -:1001A0009380A0FF83817000930E0000130EB000B7 -:1001B000639CD115130EC0001302000097200000AD -:1001C000938050E48381100013830100930E00FF9D -:1001D000631CD3131302120093022000E31052FE9B -:1001E000130ED00013020000972000009380A0E1BE -:1001F000838110001300000013830100930EF000B0 -:100200006314D3111302120093022000E31E52FC68 -:10021000130EE0001302000097200000938080DEA0 -:1002200083811000130000001300000013830100FD -:10023000930E0000631AD30D1302120093022000E4 -:10024000E31C52FC130EF000130200009720000084 -:10025000938050DB83811000930E00FF6396D10BD7 -:100260001302120093022000E31252FE130E00014B -:1002700013020000972000009380E0D813000000D4 -:1002800083811000930EF0006390D10913021200D5 -:1002900093022000E31052FE130E1001130200001F -:1002A00097200000938000D6130000001300000088 -:1002B00083811000930E00006398D1051302120091 -:1002C00093022000E31E52FC97210000938181D30A -:1002D0000381010013012000930E2000130E200162 -:1002E0006314D103972100009381C1D103810100E0 -:1002F0001300000013012000930E2000130E3001A4 -:100300006314D101631CC0010F00F00F63000E00E5 -:10031000131E1E00136E1E00730000000F00F00F6E -:10032000130E100073000000731000C000000000E6 -:1003300000000000000000000000000000000000BD -:0403400000000000B9 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F003870000930EF0FF1B +:1001100093012000631CD72397200000938080EE7A +:1001200003871000930E0000930130006310D72363 +:1001300097200000938000ED03872000930E00FFBE +:10014000930140006314D72197200000938080EB37 +:1001500003873000930EF000930150006318D71FFF +:1001600097200000938030EA0387D0FF930EF0FFC2 +:1001700093016000631CD71D972000009380B0E8B6 +:100180000387E0FF930E0000930170006310D71DFA +:1001900097200000938030E70387F0FF930E00FF65 +:1001A000930180006314D71B972000009380B0E573 +:1001B00003870000930EF000930190006318D71995 +:1001C00097200000938000E4938000FE8382000269 +:1001D000930EF0FF9301A000639AD21797200000BE +:1001E000938040E29380A0FF83827000930E000012 +:1001F0009301B000639CD2159301C000130200006C +:1002000097200000938010E003871000130307007D +:10021000930E00FF631CD3131302120093022000FD +:10022000E31052FE9301D00013020000972000005B +:10023000938060DD038710001300000013030700A4 +:10024000930EF0006314D3111302120093022000E6 +:10025000E31E52FC9301E00013020000972000000F +:10026000938040DA038710001300000013000000A1 +:1002700013030700930E0000631AD30D130212003C +:1002800093022000E31C52FC9301F00013020000D3 +:1002900097200000938010D703871000930E00FF73 +:1002A0006316D70B1302120093022000E31252FED2 +:1002B0009301000113020000972000009380A0D456 +:1002C0001300000003871000930EF0006310D7099D +:1002D0001302120093022000E31052FE930110015A +:1002E00013020000972000009380C0D1130000008B +:1002F0001300000003871000930E00006318D70559 +:100300001302120093022000E31E52FC9722000009 +:10031000938242CF0381020013012000930E20003C +:10032000930120016314D10397220000938282CDB0 +:10033000038102001300000013012000930E20002F +:10034000930130016314D101631030020F00F00FEC +:10035000638001009391110093E111009308D0058F +:1003600013850100730000000F00F00F93011000CF +:100370009308D0051305000073000000731000C03F +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000000004D +:0C03B00000000000000000000000000041 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 :10200000FF00F00F000000000000000000000000D2 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-lbu.hex b/benchmarks/riscv_tests/rv32ui-p-lbu.hex index b7c6f987..22ff132f 100644 --- a/benchmarks/riscv_tests/rv32ui-p-lbu.hex +++ b/benchmarks/riscv_tests/rv32ui-p-lbu.hex @@ -1,62 +1,69 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F483C10000930EF00F130E2000C4 -:1000D000639CD123972000009380C0F283C110005D -:1000E000930E0000130E30006390D1239720000080 -:1000F000938040F183C12000930E000F130E400047 -:100100006394D121972000009380C0EF83C1300019 -:10011000930EF000130E50006398D11F972000003B -:10012000938070EE83C1D0FF930EF00F130E60002A -:10013000639CD11D972000009380F0EC83C1E0FF09 -:10014000930E0000130E70006390D11D97200000E5 -:10015000938070EB83C1F0FF930E000F130E8000AD -:100160006394D11B972000009380F0E983C10000C5 -:10017000930EF000130E90006398D11997200000A1 -:10018000938040E8938000FE83C10002930EF00F3D -:10019000130EA000639AD11797200000938080E689 -:1001A0009380A0FF83C17000930E0000130EB00077 -:1001B000639CD115130EC0001302000097200000AD -:1001C000938050E483C1100013830100930E000F4D -:1001D000631CD3131302120093022000E31052FE9B -:1001E000130ED00013020000972000009380A0E1BE -:1001F00083C110001300000013830100930EF00070 -:100200006314D3111302120093022000E31E52FC68 -:10021000130EE0001302000097200000938080DEA0 -:1002200083C11000130000001300000013830100BD -:10023000930E0000631AD30D1302120093022000E4 -:10024000E31C52FC130EF000130200009720000084 -:10025000938050DB83C11000930E000F6396D10B87 -:100260001302120093022000E31252FE130E00014B -:1002700013020000972000009380E0D813000000D4 -:1002800083C11000930EF0006390D1091302120095 -:1002900093022000E31052FE130E1001130200001F -:1002A00097200000938000D6130000001300000088 -:1002B00083C11000930E00006398D1051302120051 -:1002C00093022000E31E52FC97210000938181D30A -:1002D00003C1010013012000930E2000130E200122 -:1002E0006314D103972100009381C1D103C10100A0 -:1002F0001300000013012000930E2000130E3001A4 -:100300006314D101631CC0010F00F00F63000E00E5 -:10031000131E1E00136E1E00730000000F00F00F6E -:10032000130E100073000000731000C000000000E6 -:1003300000000000000000000000000000000000BD -:0403400000000000B9 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F003C70000930EF00FCB +:1001100093012000631CD72397200000938080EE7A +:1001200003C71000930E0000930130006310D72323 +:1001300097200000938000ED03C72000930E000F6E +:10014000930140006314D72197200000938080EB37 +:1001500003C73000930EF000930150006318D71FBF +:1001600097200000938030EA03C7D0FF930EF00F72 +:1001700093016000631CD71D972000009380B0E8B6 +:1001800003C7E0FF930E0000930170006310D71DBA +:1001900097200000938030E703C7F0FF930E000F15 +:1001A000930180006314D71B972000009380B0E573 +:1001B00003C70000930EF000930190006318D71955 +:1001C00097200000938000E4938000FE83C2000229 +:1001D000930EF00F9301A000639AD21797200000AE +:1001E000938040E29380A0FF83C27000930E0000D2 +:1001F0009301B000639CD2159301C000130200006C +:1002000097200000938010E003C71000130307003D +:10021000930E000F631CD3131302120093022000ED +:10022000E31052FE9301D00013020000972000005B +:10023000938060DD03C71000130000001303070064 +:10024000930EF0006314D3111302120093022000E6 +:10025000E31E52FC9301E00013020000972000000F +:10026000938040DA03C71000130000001300000061 +:1002700013030700930E0000631AD30D130212003C +:1002800093022000E31C52FC9301F00013020000D3 +:1002900097200000938010D703C71000930E000F23 +:1002A0006316D70B1302120093022000E31252FED2 +:1002B0009301000113020000972000009380A0D456 +:1002C0001300000003C71000930EF0006310D7095D +:1002D0001302120093022000E31052FE930110015A +:1002E00013020000972000009380C0D1130000008B +:1002F0001300000003C71000930E00006318D70519 +:100300001302120093022000E31E52FC9722000009 +:10031000938242CF03C1020013012000930E2000FC +:10032000930120016314D10397220000938282CDB0 +:1003300003C102001300000013012000930E2000EF +:10034000930130016314D101631030020F00F00FEC +:10035000638001009391110093E111009308D0058F +:1003600013850100730000000F00F00F93011000CF +:100370009308D0051305000073000000731000C03F +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000000004D +:0C03B00000000000000000000000000041 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 :10200000FF00F00F000000000000000000000000D2 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-lh.hex b/benchmarks/riscv_tests/rv32ui-p-lh.hex index fe96f9c1..a5fa054f 100644 --- a/benchmarks/riscv_tests/rv32ui-p-lh.hex +++ b/benchmarks/riscv_tests/rv32ui-p-lh.hex @@ -1,66 +1,69 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F483910000930EF00F130E2000F4 -:1000D000639CD125972000009380C0F2839120007B -:1000E000930E00F0130E30006390D125972000008E -:1000F000938040F183914000B71E0000938E0EFF65 -:10010000130E40006392D12397200000938080EF6C -:1001100083916000B7FEFFFF938EFE00130E500028 -:100120006394D12197200000938020EE8391A0FF5B -:10013000930EF00F130E60006398D11F97200000FC -:100140009380A0EC8391C0FF930E00F0130E70001B -:10015000639CD11D97200000938020EB8391E0FFEA -:10016000B71E0000938E0EFF130E8000639ED11BFE -:1001700097200000938060E983910000B7FEFFFFA5 -:10018000938EFE00130E90006390D11B9720000009 -:10019000938040E7938000FE83910002930EF00F5E -:1001A000130EA0006392D11997200000938080E580 -:1001B0009380B0FF83917000930E00F0130EB00097 -:1001C0006394D117130EC0001302000097200000A3 -:1001D000938060E38391200013830100B71E000029 -:1001E000938E0EFF6312D3151302120093022000A8 -:1001F000E31E52FC130ED0001302000097200000F3 -:10020000938080E08391200013000000138301009D -:10021000B7FEFFFF938EFE006318D3111302120086 -:1002200093022000E31C52FC130EE00013020000B6 -:1002300097200000938000DD8391200013000000D0 -:100240001300000013830100930E00F0631ED30D12 -:100250001302120093022000E31C52FC130EF00064 -:1002600013020000972000009380E0D983912000C2 -:10027000B71E0000938E0EFF6398D10B130212007D -:1002800093022000E31052FE130E0001130200003F -:1002900097200000938040D7130000008391200036 -:1002A000B7FEFFFF938EFE006390D1091302120088 -:1002B00093022000E31E52FC130E100113020000F3 -:1002C00097200000938000D413000000130000006A -:1002D00083912000930E00F06398D1051302120061 -:1002E00093022000E31E52FC97210000938181D1EC -:1002F0000391010013012000930E2000130E200132 -:100300006314D103972100009381C1CF03910100B1 -:100310001300000013012000930E2000130E300183 -:100320006314D101631CC0010F00F00F63000E00C5 -:10033000131E1E00136E1E00730000000F00F00F4E -:10034000130E100073000000731000C000000000C6 -:10035000000000000000000000000000000000009D -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F003970000930EF00FFB +:1001100093012000631CD72597200000938080EE78 +:1001200003972000930E00F0930130006310D72551 +:1001300097200000938000ED03974000B71E000059 +:10014000938E0EFF930140006312D7239720000087 +:10015000938040EB03976000B7FEFFFF938EFE0095 +:10016000930150006314D721972000009380E0E9A9 +:100170000397A0FF930EF00F930160006318D71F41 +:1001800097200000938060E80397C0FF930E00F073 +:1001900093017000631CD71D972000009380E0E658 +:1001A0000397E0FFB71E0000938E0EFF93018000BF +:1001B000631ED71B97200000938020E50397000063 +:1001C000B7FEFFFF938EFE00930190006310D71BD4 +:1001D00097200000938000E3938000FE839200024A +:1001E000930EF00F9301A0006392D21997200000A4 +:1001F000938040E19380B0FF83927000930E00F0F3 +:100200009301B0006394D2179301C0001302000061 +:1002100097200000938020DF03972000130307003E +:10022000B71E0000938E0EFF6312D3151302120047 +:1002300093022000E31E52FC9301D0001302000041 +:1002400097200000938040DC0397200013000000FB +:1002500013030700B7FEFFFF938EFE006318D31150 +:100260001302120093022000E31C52FC9301E000F1 +:1002700013020000972000009380C0D8039720004D +:10028000130000001300000013030700930E00F09A +:10029000631ED30D1302120093022000E31C52FCD4 +:1002A0009301F00013020000972000009380A0D576 +:1002B00003972000B71E0000938E0EFF6318D70B24 +:1002C0001302120093022000E31052FE930100017A +:1002D0001302000097200000938000D31300000059 +:1002E00003972000B7FEFFFF938EFE006310D7092F +:1002F0001302120093022000E31E52FC930110012E +:1003000013020000972000009380C0CF130000006C +:100310001300000003972000930E00F06318D70528 +:100320001302120093022000E31E52FC97220000E9 +:10033000938242CD0391020013012000930E20000E +:10034000930120016314D10397220000938282CB92 +:10035000039102001300000013012000930E2000FF +:10036000930130016314D101631030020F00F00FCC +:10037000638001009391110093E111009308D0056F +:1003800013850100730000000F00F00F93011000AF +:100390009308D0051305000073000000731000C01F +:1003A000000000000000000000000000000000004D +:0C03B00000000000000000000000000041 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 :10200000FF0000FFF00F0FF00000000000000000D4 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-lhu.hex b/benchmarks/riscv_tests/rv32ui-p-lhu.hex index c191ecb9..c654f37e 100644 --- a/benchmarks/riscv_tests/rv32ui-p-lhu.hex +++ b/benchmarks/riscv_tests/rv32ui-p-lhu.hex @@ -1,66 +1,69 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F483D10000930EF00F130E2000B4 -:1000D0006396D127972000009380C0F283D120003F -:1000E000B70E0100938E0EF0130E30006398D125E9 -:1000F00097200000938000F183D14000B71E0000DC -:10010000938E0EFF130E4000639AD12397200000B8 -:10011000938040EF83D16000B7FE0000938EFE0015 -:10012000130E5000639CD121972000009380E0EDD6 -:1001300083D1A0FF930EF00F130E60006390D121C6 -:1001400097200000938060EC83D1C0FFB70E0100C0 -:10015000938E0EF0130E70006392D11F9720000053 -:100160009380A0EA83D1E0FFB71E0000938E0EFFBC -:10017000130E80006394D11D972000009380E0E867 -:1001800083D10000B7FE0000938EFE00130E900096 -:100190006396D11B972000009380C0E6938000FEF9 -:1001A00083D10002930EF00F130EA0006398D119B3 -:1001B00097200000938000E59380B0FF83D170000A -:1001C000B70E0100938E0EF0130EB0006398D11796 -:1001D000130EC00013020000972000009380A0E2DD -:1001E00083D1200013830100B71E0000938E0EFF01 -:1001F0006316D3151302120093022000E31E52FC73 -:10020000130ED00013020000972000009380C0DF7F -:1002100083D120001300000013830100B7FE00000B -:10022000938EFE00631CD311130212009302200070 -:10023000E31C52FC130EE0001302000097200000A4 -:10024000938040DC83D120001300000013000000E5 -:1002500013830100B70E0100938E0EF06310D30FCD -:100260001302120093022000E31A52FC130EF00056 -:1002700013020000972000009380E0D883D1200073 -:10028000B71E0000938E0EFF639AD10B130212006B -:1002900093022000E31052FE130E0001130200002F -:1002A00097200000938040D61300000083D12000E7 -:1002B000B7FE0000938EFE006392D1091302120074 -:1002C00093022000E31E52FC130E100113020000E3 -:1002D00097200000938000D313000000130000005B -:1002E00083D12000B70E0100938E0EF06398D105E4 -:1002F0001302120093022000E31C52FC972100001D -:10030000938141D003D1010013012000930E2000FE -:10031000130E20016314D10397210000938181CE35 -:1003200003D101001300000013012000930E2000F0 -:10033000130E30016314D101631CC0010F00F00FD4 -:1003400063000E00131E1E00136E1E0073000000DB -:100350000F00F00F130E100073000000731000C0A8 -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F003D70000930EF00FBB +:10011000930120006316D72797200000938080EE7C +:1001200003D72000B70E0100938E0EF0930130002C +:100130006318D725972000009380C0EC03D74000B8 +:10014000B71E0000938E0EFF93014000631AD72361 +:1001500097200000938000EB03D76000B7FE0000FB +:10016000938EFE0093015000631CD721972000005E +:100170009380A0E903D7A0FF930EF00F93016000D6 +:100180006310D72197200000938020E803D7C0FF99 +:10019000B70E0100938E0EF0930170006312D71F0B +:1001A00097200000938060E603D7E0FFB71E0000B1 +:1001B000938E0EFF930180006314D71D97200000DB +:1001C0009380A0E403D70000B7FE0000938EFE00EA +:1001D000930190006316D71B97200000938080E264 +:1001E000938000FE83D20002930EF00F9301A000D3 +:1001F0006398D219972000009380C0E09380B0FFED +:1002000083D27000B70E0100938E0EF09301B00000 +:100210006398D2179301C0001302000097200000DA +:10022000938060DE03D7200013030700B71E000091 +:10023000938E0EFF6316D315130212009302200053 +:10024000E31E52FC9301D00013020000972000002F +:10025000938080DB03D72000130000001303070006 +:10026000B7FE0000938EFE00631CD3111302120030 +:1002700093022000E31C52FC9301E00013020000F3 +:1002800097200000938000D803D7200013000000BF +:100290001300000013030700B70E0100938E0EF049 +:1002A0006310D30F1302120093022000E31A52FCD2 +:1002B0009301F00013020000972000009380A0D467 +:1002C00003D72000B71E0000938E0EFF631AD70BD2 +:1002D0001302120093022000E31052FE930100016A +:1002E0001302000097200000938000D2130000004A +:1002F00003D72000B7FE0000938EFE006312D709DB +:100300001302120093022000E31E52FC930110011D +:1003100013020000972000009380C0CE130000005D +:100320001300000003D72000B70E0100938E0EF0DB +:100330006318D7051302120093022000E31C52FC3D +:1003400097220000938202CC03D102001301200007 +:10035000930E2000930120016314D1039722000023 +:10036000938242CA03D1020013000000130120004F +:10037000930E2000930130016314D1016310300209 +:100380000F00F00F638001009391110093E11100C1 +:100390009308D00513850100730000000F00F00FD3 +:1003A000930110009308D0051305000073000000AE +:0C03B000731000C00000000000000000FE :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 :10200000FF0000FFF00F0FF00000000000000000D4 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-lui.hex b/benchmarks/riscv_tests/rv32ui-p-lui.hex index f362421a..9c789967 100644 --- a/benchmarks/riscv_tests/rv32ui-p-lui.hex +++ b/benchmarks/riscv_tests/rv32ui-p-lui.hex @@ -1,29 +1,36 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B7000000B4 -:1000C000930E0000130E2000639AD005B7F0FFFFD7 -:1000D00093D01040930E0080130E30006390D00533 -:1000E000B7F0FF7F93D04041930EF07F130E400096 -:1000F0006396D003B700008093D04041930E0080F8 -:10010000130E5000639CD00137000080930E000056 -:10011000130E60006314D001631CC0010F00F00FC8 -:1001200063000E00131E1E00136E1E0073000000FD -:100130000F00F00F130E100073000000731000C0CA -:0401400000000000BB +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B7000000930E000093012000639AD00511 +:10011000B7F0FFFF93D01040930E008093013000A2 +:100120006390D005B7F0FF7F93D04041930EF07FEE +:10013000930140006396D003B700008093D0404104 +:10014000930E008093015000639CD0013700008023 +:10015000930E0000930160006314D001631030021D +:100160000F00F00F638001009391110093E11100E3 +:100170009308D00513850100730000000F00F00FF5 +:10018000930110009308D0051305000073000000D0 +:10019000731000C00000000000000000000000001C +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-lw.hex b/benchmarks/riscv_tests/rv32ui-p-lw.hex index 6cf9e00a..efed4152 100644 --- a/benchmarks/riscv_tests/rv32ui-p-lw.hex +++ b/benchmarks/riscv_tests/rv32ui-p-lw.hex @@ -1,66 +1,73 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F483A10000B70EFF00938EFE0FD3 -:1000D000130E2000639AD12797200000938080F2AE -:1000E00083A14000B70E01FF938E0EF0130E300077 -:1000F000639CD125972000009380C0F083A18000ED -:10010000B71EF00F938E0EFF130E4000639ED12397 -:1001100097200000938000EF83A1C000B7FE0FF08E -:10012000938EFE00130E50006390D12397200000A1 -:10013000938000EE83A140FFB70EFF00938EFE0F69 -:10014000130E60006392D12197200000938040EC51 -:1001500083A180FFB70E01FF938E0EF0130E700087 -:100160006394D11F97200000938080EA83A1C0FF91 -:10017000B71EF00F938E0EFF130E80006396D11DF5 -:10018000972000009380C0E883A10000B7FE0FF025 -:10019000938EFE00130E90006398D11B97200000F1 -:1001A000938040E6938000FE83A10002B70EFF001B -:1001B000938EFE0F130EA0006398D11997200000B4 -:1001C000938040E49380D0FF83A17000B70E01FFBD -:1001D000938E0EF0130EB0006398D117130EC0006B -:1001E0001302000097200000938000E283A14000EA -:1001F00013830100B71EF00F938E0EFF6316D31505 -:100200001302120093022000E31E52FC130ED000D2 -:100210001302000097200000938040DF83A140007C -:100220001300000013830100B7FE0FF0938EFE0051 -:10023000631CD3111302120093022000E31C52FC32 -:10024000130EE0001302000097200000938080DB73 -:1002500083A140001300000013000000138301007D -:10026000B70E01FF938E0EF06310D30F130212002E -:1002700093022000E31A52FC130EF0001302000058 -:1002800097200000938040D883A14000B71EF00F54 -:10029000938E0EFF639AD10B13021200930220007B -:1002A000E31052FE130E000113020000972000001D -:1002B0009380C0D51300000083A14000B7FE0FF06B -:1002C000938EFE006392D109130212009302200064 -:1002D000E31E52FC130E10011302000097200000D1 -:1002E000938040D2130000001300000083A140005F -:1002F000B70E01FF938E0EF06398D1051302120022 -:1003000093022000E31C52FC97210000938181CFCF -:1003100003A1010013012000930E2000130E200101 -:100320006314D103972100009381C1CD03A1010083 -:100330001300000013012000930E2000130E300163 -:100340006314D101631CC0010F00F00F63000E00A5 -:10035000131E1E00136E1E00730000000F00F00F2E -:10036000130E100073000000731000C000000000A6 -:10037000000000000000000000000000000000007D -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F003A70000B70EFF00C7 +:10011000938EFE0F93012000631AD72797200000CB +:10012000938040EE03A74000B70E01FF938E0EF0C0 +:1001300093013000631CD72597200000938080EC4A +:1001400003A78000B71EF00F938E0EFF93014000AF +:10015000631ED723972000009380C0EA03A7C00046 +:10016000B7FE0FF0938EFE00930150006310D7236B +:10017000972000009380C0E903A740FFB70EFF005F +:10018000938EFE0F930160006312D7219720000029 +:10019000938000E803A780FFB70E01FF938E0EF057 +:1001A000930170006314D71F97200000938040E6EE +:1001B00003A7C0FFB71EF00F938E0EFF93018000C0 +:1001C0006316D71D97200000938080E403A70000EA +:1001D000B7FE0FF0938EFE00930190006318D71BBB +:1001E00097200000938000E2938000FE83A200022B +:1001F000B70EFF00938EFE0F9301A0006398D219F3 +:1002000097200000938000E09380D0FF83A27000CD +:10021000B70E01FF938E0EF09301B0006398D217D2 +:100220009301C00013020000972000009380C0DDFE +:1002300003A7400013030700B71EF00F938E0EFFB5 +:100240006316D3151302120093022000E31E52FC22 +:100250009301D0001302000097200000938000DB80 +:1002600003A740001300000013030700B7FE0FF0C0 +:10027000938EFE00631CD311130212009302200020 +:10028000E31C52FC9301E0001302000097200000E1 +:10029000938040D703A74000130000001300000024 +:1002A00013030700B70E01FF938E0EF06310D30FF8 +:1002B0001302120093022000E31A52FC9301F00093 +:1002C0001302000097200000938000D403A7400091 +:1002D000B71EF00F938E0EFF631AD70B1302120096 +:1002E00093022000E31052FE93010001130200006C +:1002F00097200000938080D11300000003A74000E6 +:10030000B7FE0FF0938EFE006312D709130212009E +:1003100093022000E31E52FC93011001130200001F +:1003200097200000938000CE13000000130000000F +:1003300003A74000B70E01FF938E0EF06318D70598 +:100340001302120093022000E31C52FC97220000CB +:10035000938242CB03A1020013012000930E2000E0 +:10036000930120016314D10397220000938282C974 +:1003700003A102001300000013012000930E2000CF +:10038000930130016314D101631030020F00F00FAC +:10039000638001009391110093E111009308D0054F +:1003A00013850100730000000F00F00F930110008F +:1003B0009308D0051305000073000000731000C0FF +:1003C000000000000000000000000000000000002D +:1003D000000000000000000000000000000000001D +:1003E000000000000000000000000000000000000D +:0C03F00000000000000000000000000001 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 :10200000FF00FF0000FF00FFF00FF00F0FF00FF0D8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-or.hex b/benchmarks/riscv_tests/rv32ui-p-or.hex index e1140c85..4e042935 100644 --- a/benchmarks/riscv_tests/rv32ui-p-or.hex +++ b/benchmarks/riscv_tests/rv32ui-p-or.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B70001FFB4 -:1000C000938000F037110F0F1301F1F0B3E120001E -:1000D000B70E10FF938EFEF0130E20006392D14BEB -:1000E000B710F00F938000FF37F1F0F01301010F0C -:1000F000B3E12000B70EF1FF938E0EFF130E300018 -:100100006390D149B700FF009380F00F37110F0FB4 -:100110001301F1F0B3E12000B71EFF0F938EFEFF35 -:10012000130E4000639ED145B7F00FF09380F000AE -:1001300037F1F0F01301010FB3E12000B7FEFFF03B -:10014000938EFE0F130E5000639CD143B70001FF46 -:10015000938000F037110F0F1301F1F0B3E020008E -:10016000B70E10FF938EFEF0130E6000639AD0411D -:10017000B70001FF938000F037110F0F1301F1F06A -:1001800033E12000B70E10FF938EFEF0130E7000C7 -:100190006318D13FB70001FF938000F0B3E0100077 -:1001A000B70E01FF938E0EF0130E8000639AD03DC0 -:1001B00013020000B70001FF938000F037110F0F0A -:1001C0001301F1F0B3E120001383010013021200C8 -:1001D00093022000E31052FEB70E10FF938EFEF044 -:1001E000130E9000631ED33913020000B710F00FF6 -:1001F000938000FF37F1F0F01301010FB3E120000D -:100200001300000013830100130212009302200068 -:10021000E31E52FCB70EF1FF938E0EFF130EA000EB -:100220006310D33713020000B700FF009380F00F74 -:1002300037110F0F1301F1F0B3E12000130000009C -:100240001300000013830100130212009302200028 -:10025000E31C52FCB71EFF0F938EFEFF130EB0007F -:100260006310D33313020000B70001FF938000F046 -:1002700037110F0F1301F1F0B3E120001302120048 -:1002800093022000E31252FEB70E10FF938EFEF091 -:10029000130EC0006396D12F13020000B710F00FA9 -:1002A000938000FF37F1F0F01301010F13000000FD -:1002B000B3E120001302120093022000E31052FE6B -:1002C000B70EF1FF938E0EFF130ED000639AD12B61 -:1002D00013020000B700FF009380F00F37110F0FDB -:1002E0001301F1F01300000013000000B3E120003F -:1002F0001302120093022000E31E52FCB71EFF0FF0 -:10030000938EFEFF130EE000639CD12713020000C2 -:10031000B70001FF938000F01300000037110F0FAA -:100320001301F1F0B3E12000130212009302200048 -:10033000E31052FEB70E10FF938EFEF0130EF00086 -:100340006390D12513020000B710F00F938000FFD7 -:100350001300000037F1F0F01301010F130000004B -:10036000B3E120001302120093022000E31E52FCAE -:10037000B70EF1FF938E0EFF130E00016392D12191 -:1003800013020000B700FF009380F00F130000007D -:100390001300000037110F0F1301F1F0B3E120003B -:1003A0001302120093022000E31E52FCB71EFF0F3F -:1003B000938EFEFF130E10016394D11D13020000F3 -:1003C00037110F0F1301F1F0B70001FF938000F018 -:1003D000B3E120001302120093022000E31252FE48 -:1003E000B70E10FF938EFEF0130E2001639AD11901 -:1003F0001302000037F1F0F01301010FB710F00FF6 -:10040000938000FF13000000B3E1200013021200EC -:1004100093022000E31052FEB70EF1FF938E0EFF01 -:10042000130E3001639ED1151302000037110F0F18 -:100430001301F1F0B700FF009380F00F13000000EC -:1004400013000000B3E12000130212009302200009 -:10045000E31E52FCB71EFF0F938EFEFF130E4001EA -:100460006390D1131302000037110F0F1301F1F045 -:1004700013000000B70001FF938000F0B3E12000FB -:100480001302120093022000E31052FEB70E10FF79 -:10049000938EFEF0130E50016394D10F13020000EF -:1004A00037F1F0F01301010F13000000B710F00F47 -:1004B000938000FF13000000B3E12000130212003C -:1004C00093022000E31E52FCB70EF1FF938E0EFF45 -:1004D000130E60016396D10B1302000037110F0F4A -:1004E0001301F1F01300000013000000B700FF003B -:1004F0009380F00FB3E1200013021200930220005A -:10050000E31E52FCB71EFF0F938EFEFF130E700109 -:100510006398D107B70001FF938000F033611000AA -:10052000B70E01FF938E0EF0130E8001631AD105F2 -:10053000B700FF009380F00F33E10000B70EFF001B -:10054000938EFE0F130E9001631CD103B360000065 -:10055000930E0000130EA0016394D003B710111185 -:1005600093801011372122221301212233E0200031 -:10057000930E0000130EB0016314D001631CC00180 -:100580000F00F00F63000E00131E1E00136E1E00FE -:10059000730000000F00F00F130E10007300000036 -:1005A000731000C000000000000000000000000008 -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B70001FF938000F037110F0F1301F1F0DA +:1001100033E72000B70E10FF938EFEF0930120000E +:100120006312D74BB710F00F938000FF37F1F0F058 +:100130001301010F33E72000B70EF1FF938E0EFF7E +:10014000930130006310D749B700FF009380F00F90 +:1001500037110F0F1301F1F033E72000B71EFF0F27 +:10016000938EFEFF93014000631ED745B7F00FF05A +:100170009380F00037F1F0F01301010F33E7200016 +:10018000B7FEFFF0938EFE0F93015000631CD74320 +:10019000B70001FF938000F037110F0F1301F1F04A +:1001A000B3E02000B70E10FF938EFEF093016000C5 +:1001B000639AD041B70001FF938000F037110F0F11 +:1001C0001301F1F033E12000B70E10FF938EFEF023 +:1001D000930170006318D13FB70001FF938000F0D6 +:1001E000B3E01000B70E01FF938E0EF09301800074 +:1001F000639AD03D13020000B70001FF938000F026 +:1002000037110F0F1301F1F033E72000130307003C +:100210001302120093022000E31052FEB70E10FFEB +:10022000938EFEF093019000631ED33913020000F9 +:10023000B710F00F938000FF37F1F0F01301010FBA +:1002400033E720001300000013030700130212001D +:1002500093022000E31E52FCB70EF1FF938E0EFFB7 +:100260009301A0006310D33713020000B700FF0012 +:100270009380F00F37110F0F1301F1F033E72000D7 +:100280001300000013000000130307001302120004 +:1002900093022000E31C52FCB71EFF0F938EFEFF5B +:1002A0009301B0006310D33313020000B70001FFC5 +:1002B000938000F037110F0F1301F1F033E72000A6 +:1002C0001302120093022000E31252FEB70E10FF39 +:1002D000938EFEF09301C0006316D72F1302000027 +:1002E000B710F00F938000FF37F1F0F01301010F0A +:1002F0001300000033E720001302120093022000D5 +:10030000E31052FEB70EF1FF938E0EFF9301D00063 +:10031000631AD72B13020000B700FF009380F00F81 +:1003200037110F0F1301F1F013000000130000004C +:1003300033E720001302120093022000E31E52FC58 +:10034000B71EFF0F938EFEFF9301E000631CD727BB +:1003500013020000B70001FF938000F013000000BB +:1003600037110F0F1301F1F033E7200013021200D1 +:1003700093022000E31052FEB70E10FF938EFEF0A2 +:100380009301F0006310D72513020000B710F00F9F +:10039000938000FF1300000037F1F0F01301010F0C +:1003A0001300000033E72000130212009302200024 +:1003B000E31E52FCB70EF1FF938E0EFF9301000176 +:1003C0006312D72113020000B700FF009380F00FE3 +:1003D000130000001300000037110F0F1301F1F09C +:1003E00033E720001302120093022000E31E52FCA8 +:1003F000B71EFF0F938EFEFF930110016314D71DEC +:100400001302000037110F0F1301F1F0B70001FFC5 +:10041000938000F033E720001302120093022000C3 +:10042000E31252FEB70E10FF938EFEF093012001EF +:10043000631AD7191302000037F1F0F01301010F0E +:10044000B710F00F938000FF1300000033E7200087 +:100450001302120093022000E31052FEB70EF1FFC8 +:10046000938E0EFF93013001631ED7151302000017 +:1004700037110F0F1301F1F0B700FF009380F00F59 +:10048000130000001300000033E7200013021200E5 +:1004900093022000E31E52FCB71EFF0F938EFEFF57 +:1004A000930140016310D7131302000037110F0F9F +:1004B0001301F1F013000000B70001FF938000F07A +:1004C00033E720001302120093022000E31052FED3 +:1004D000B70E10FF938EFEF0930150016314D70FF7 +:1004E0001302000037F1F0F01301010F13000000B8 +:1004F000B710F00F938000FF1300000033E72000D7 +:100500001302120093022000E31E52FCB70EF1FF0B +:10051000938E0EFF930160016316D70B1302000048 +:1005200037110F0F1301F1F013000000130000004A +:10053000B700FF009380F00F33E720001302120092 +:1005400093022000E31E52FCB71EFF0F938EFEFFA6 +:10055000930170016318D707B70001FF938000F083 +:1005600033611000B70E01FF938E0EF093018001EE +:10057000631AD105B700FF009380F00F33E100004C +:10058000B70EFF00938EFE0F93019001631CD10301 +:10059000B3600000930E00009301A0016394D003A8 +:1005A000B71011119380101137212222130121223B +:1005B00033E02000930E00009301B0016314D001DA +:1005C000631030020F00F00F63800100939111005F +:1005D00093E111009308D00513850100730000001A +:1005E0000F00F00F930110009308D00513050000D1 +:0C05F00073000000731000C00000000049 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-ori.hex b/benchmarks/riscv_tests/rv32ui-p-ori.hex index 17049a8d..93000fd0 100644 --- a/benchmarks/riscv_tests/rv32ui-p-ori.hex +++ b/benchmarks/riscv_tests/rv32ui-p-ori.hex @@ -1,53 +1,60 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B70001FFB4 -:1000C000938000F093E1F0F0930EF0F0130E200017 -:1000D0006394D11DB710F00F938000FF93E1000FE0 -:1000E000B71EF00F938E0EFF130E30006396D11BD8 -:1000F000B700FF009380F00F93E1F070B70EFF00A0 -:10010000938EFE7F130E40006398D119B7F00FF065 -:100110009380F00093E1000FB7FE0FF0938EFE0F77 -:10012000130E5000639AD117B70001FF938000F0BF -:1001300093E0000FB70E01FF938E0EFF130E6000C9 -:10014000639CD01513020000B710F00F938000FFDE -:1001500093E1000F138301001302120093022000A9 -:10016000E31452FEB71EF00F938E0EFF130E7000B5 -:100170006314D31313020000B700FF009380F00F45 -:1001800093E1F070130000001383010013021200CA -:1001900093022000E31252FEB70EFF00938EFE7F03 -:1001A000130E8000631AD30F13020000B7F00FF094 -:1001B0009380F00093E1000F130000001300000093 -:1001C000138301001302120093022000E31052FE79 -:1001D000B7FE0FF0938EFE0F130E9000631ED30B2D -:1001E00013020000B710F00F938000FF93E1000F9F -:1001F0001302120093022000E31652FEB71EF00F06 -:10020000938E0EFF130EA0006398D1091302000015 -:10021000B700FF009380F00F1300000093E1F0F0AF -:100220001302120093022000E31452FE930EF0FF1B -:10023000130EB0006392D10713020000B7F00FF065 -:100240009380F000130000001300000093E1000F02 -:100250001302120093022000E31252FEB7FE0FF0C9 -:10026000938EFE0F130EC0006398D1039360000FAE -:10027000930E000F130ED0006390D003B700FF0061 -:100280009380F00F13E0F070930E0000130EE00067 -:100290006314D001631CC0010F00F00F63000E0057 -:1002A000131E1E00136E1E00730000000F00F00FDF -:1002B000130E100073000000731000C00000000057 -:0402C000000000003A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B70001FF938000F013E7F0F0930EF0F0DA +:10011000930120006314D71DB710F00F938000FFE8 +:1001200013E7000FB71EF00F938E0EFF9301300000 +:100130006316D71BB700FF009380F00F13E7F07032 +:10014000B70EFF00938EFE7F930140006318D7190E +:10015000B7F00FF09380F00013E7000FB7FE0FF039 +:10016000938EFE0F93015000631AD717B70001FF5B +:10017000938000F093E0000FB70E01FF938E0EFF07 +:1001800093016000639CD01513020000B710F00FBC +:10019000938000FF13E7000F130307001302120000 +:1001A00093022000E31452FEB71EF00F938E0EFF51 +:1001B000930170006314D31313020000B700FF0013 +:1001C0009380F00F13E7F070130000001303070093 +:1001D0001302120093022000E31252FEB70EFF003A +:1001E000938EFE7F93018000631AD30F13020000E9 +:1001F000B7F00FF09380F00013E7000F130000003A +:1002000013000000130307001302120093022000E2 +:10021000E31052FEB7FE0FF0938EFE0F9301900095 +:10022000631ED30B13020000B710F00F938000FF82 +:1002300013E7000F1302120093022000E31652FE90 +:10024000B71EF00F938E0EFF9301A0006318D7091D +:1002500013020000B700FF009380F00F13000000AE +:1002600013E7F0F01302120093022000E31452FE91 +:10027000930EF0FF9301B0006312D7071302000042 +:10028000B7F00FF09380F00013000000130000009F +:1002900013E7000F1302120093022000E31252FE34 +:1002A000B7FE0FF0938EFE0F9301C0006318D703C3 +:1002B0009360000F930E000F9301D0006390D00362 +:1002C000B700FF009380F00F13E0F070930E000072 +:1002D0009301E0006314D001631030020F00F00FAF +:1002E000638001009391110093E111009308D00500 +:1002F00013850100730000000F00F00F9301100040 +:100300009308D0051305000073000000731000C0AF +:1003100000000000000000000000000000000000DD +:1003200000000000000000000000000000000000CD +:0C033000000000000000000000000000C1 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sb.hex b/benchmarks/riscv_tests/rv32ui-p-sb.hex index 5b83fec8..bf719f05 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sb.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sb.hex @@ -1,90 +1,93 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F41301A0FA238020008381000074 -:1000D000930EA0FA130E2000639CD13D97200000E0 -:1000E000938040F213010000A38020008381100060 -:1000F000930E0000130E3000639CD13B972000004C -:10010000938040F037F1FFFF130101FA23812000B3 -:1001100083912000B7FEFFFF938E0EFA130E40006E -:100120006398D139972000009380C0ED1301A0009F -:10013000A381200083813000930EA000130E500095 -:100140006398D13797200000938030EC1301A0FA18 -:10015000A38E20FE8381D0FF930EA0FA130E6000C1 -:100160006398D13597200000938030EA1301000096 -:10017000238F20FE8381E0FF930E0000130E70009A -:100180006398D13397200000938030E8130100FA80 -:10019000A38F20FE8381F0FF930E00FA130E8000E0 -:1001A0006398D13197200000938030E61301A000BE -:1001B0002380200083810000930EA000130E900086 -:1001C0006398D12F97200000938040E43751341278 -:1001D00013018167138200FE230022028381000045 -:1001E000930E8007130EA0006394D12D972000007A -:1001F0009380C0E137310000130181099380A0FF93 -:10020000A383200017220000130252E083010200A2 -:10021000930E80F9130EB000639CD129130EC00019 -:10022000130200009300D0FD17210000130181DDAF -:100230002300110083010100930ED0FD639AD127A2 -:100240001302120093022000E31E52FC130ED00092 -:10025000130200009300D0FC17210000130181DA83 -:1002600013000000A300110083011100930ED0FCC5 -:100270006390D1251302120093022000E31C52FC6C -:10028000130EE000130200009300C0FC17210000D1 -:10029000130141D7130000001300000023011100D7 -:1002A00083012100930EC0FC6394D121130212003C -:1002B00093022000E31A52FC130EF0001302000018 -:1002C0009300C0FB1300000017210000130181D32D -:1002D000A301110083013100930EC0FB639AD11D6D -:1002E0001302120093022000E31C52FC130E0001C3 -:1002F000130200009300B0FB130000001721000060 -:10030000130141D0130000002302110083014100BA -:10031000930EB0FB639ED1191302120093022000CA -:10032000E31A52FC130E1001130200009300B0FAFE -:10033000130000001300000017210000130181CCFE -:10034000A302110083015100930EB0FA6392D117FA -:100350001302120093022000E31A52FC130E200134 -:1003600013020000172100001301C1C993003003DC -:100370002300110083010100930E3003639AD1130F -:100380001302120093022000E31E52FC130E3001F0 -:1003900013020000172100001301C1C693003002B0 -:1003A00013000000A300110083011100930E30021E -:1003B0006390D1111302120093022000E31C52FC3F -:1003C000130E40011302000017210000130181C326 -:1003D000930020021300000013000000230111000D -:1003E00083012100930E20026394D10D13021200A9 -:1003F00093022000E31A52FC130E50011302000076 -:1004000017210000130101C0130000009300200118 -:10041000A301110083013100930E2001639AD109D9 -:100420001302120093022000E31C52FC130E600121 -:1004300013020000172100001301C1BC13000000CB -:1004400093001001130000002302110083014100FA -:10045000930E1001639ED105130212009302200037 -:10046000E31A52FC130E7001130200001721000062 -:10047000130141B9130000001300000093001000A5 -:10048000A302110083015100930E10006392D10367 -:100490001302120093022000E31A52FC1305F00E1F -:1004A00097250000938505B6A381A500631CC001B4 -:1004B0000F00F00F63000E00131E1E00136E1E00CF -:1004C000730000000F00F00F130E10007300000007 -:1004D000731000C0000000000000000000000000D9 -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:0405000000000000F7 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F01301A0FA23802000C4 +:1001100003870000930EA0FA93012000631CD73DD3 +:1001200097200000938000EE13010000A3802000C0 +:1001300003871000930E000093013000631CD73B2F +:1001400097200000938000EC37F1FFFF130101FAC4 +:100150002381200003972000B7FEFFFF938E0EFA45 +:10016000930140006318D73997200000938080E9FD +:100170001301A000A381200003873000930EA0008C +:10018000930150006318D737972000009380F0E761 +:100190001301A0FAA38E20FE0387D0FF930EA0FACE +:1001A000930160006318D735972000009380F0E535 +:1001B00013010000238F20FE0387E0FF930E000051 +:1001C000930170006318D733972000009380F0E309 +:1001D000130100FAA38F20FE0387F0FF930E00FAAD +:1001E000930180006318D731972000009380F0E1DD +:1001F0001301A0002380200003870000930EA000BD +:10020000930190006318D72F97200000938000E09F +:100210003751341213018167138200FE230022023A +:1002200083820000930E80079301A0006394D22D77 +:1002300097200000938080DD373100001301810991 +:100240009380A0FFA383200017220000130212DC7A +:1002500083020200930E80F99301B000639CD229BF +:100260009301C000130200009300D0FD172100008D +:10027000130141D92300110003070100930ED0FDA3 +:10028000631AD7271302120093022000E31E52FCC8 +:100290009301D000130200009300D0FC172100004E +:1002A000130141D613000000A30011000307110041 +:1002B000930ED0FC6310D725130212009302200086 +:1002C000E31C52FC9301E000130200009300C0FC09 +:1002D00017210000130101D31300000013000000D8 +:1002E0002301110003072100930EC0FC6314D721E2 +:1002F0001302120093022000E31A52FC9301F00053 +:10030000130200009300C0FB13000000172100003F +:10031000130141CFA301110003073100930EC0FB6D +:10032000631AD71D1302120093022000E31C52FC33 +:1003300093010001130200009300B0FB13000000C2 +:1003400017210000130101CC13000000230211004B +:1003500003074100930EB0FB631ED719130212006E +:1003600093022000E31A52FC9301100113020000D3 +:100370009300B0FA130000001300000017210000E2 +:10038000130141C8A302110003075100930EB0FAF4 +:100390006312D7171302120093022000E31A52FCD3 +:1003A000930120011302000017210000130181C5F1 +:1003B000930030032300110003070100930E300364 +:1003C000631AD7131302120093022000E31E52FC9B +:1003D000930130011302000017210000130181C2B4 +:1003E0009300300213000000A30011000307110066 +:1003F000930E30026310D7111302120093022000F3 +:10040000E31C52FC9301400113020000172100007D +:10041000130141BF930020021300000013000000ED +:100420002301110003072100930E20026314D70D4E +:100430001302120093022000E31A52FC93015001B0 +:1004400013020000172100001301C1BB13000000BC +:1004500093002001A301110003073100930E200136 +:10046000631AD7091302120093022000E31C52FC06 +:10047000930160011302000017210000130181B8ED +:10048000130000009300100113000000230211006C +:1004900003074100930E1001631ED70513021200DB +:1004A00093022000E31A52FC930170011302000032 +:1004B00017210000130101B5130000001300000014 +:1004C00093001000A302110003075100930E1000C7 +:1004D0006312D7031302120093022000E31A52FCA6 +:1004E0001305F00E972500009385C5B1A381A500E3 +:1004F000631030020F00F00F638001009391110030 +:1005000093E111009308D0051385010073000000EA +:100510000F00F00F930110009308D00513050000A1 +:1005200073000000731000C0000000000000000015 +:0C053000000000000000000000000000BF :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 :10200000EFEFEFEFEFEFEFEFEFEF0000000000007A -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sh.hex b/benchmarks/riscv_tests/rv32ui-p-sh.hex index b8ceb208..a18bbe81 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sh.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sh.hex @@ -1,93 +1,96 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F41301A00A239020008391000044 -:1000D000930EA00A130E2000639ED14597200000C6 -:1000E000938040F237B1FFFF130101A0239120005C -:1000F00083912000B7BEFFFF938E0EA0130E300039 -:10010000639AD143972000009380C0EF3711EFBE70 -:10011000130101AA2392200083A14000B71EEFBE65 -:10012000938E0EAA130E40006396D14197200000D3 -:10013000938040ED37A1FFFF1301A100239320001E -:1001400083916000B7AEFFFF938EAE00130E500098 -:100150006392D13F972000009380A0EB1301A00A87 -:10016000239D20FE8391A0FF930EA00A130E600032 -:100170006392D13D972000009380A0E937B1FFFF43 -:10018000130101A0239E20FE8391C0FFB7BEFFFF95 -:10019000938E0EA0130E7000639ED139972000003D -:1001A000938020E737110000130101AA239F20FE4E -:1001B0008391E0FFB71E0000938E0EAA130E8000FD -:1001C000639AD137972000009380A0E437A1FFFF06 -:1001D0001301A1002390200083910000B7AEFFFF20 -:1001E000938EAE00130E90006396D13597200000D9 -:1001F000938040E23751341213018167138200FE6D -:100200002310220283910000B75E0000938E8E6758 -:10021000130EA0006390D13397200000938080DFFD -:1002200037310000130181099380B0FFA3932000B0 -:1002300017220000130222DE83110200B73E0000E5 -:10024000938E8E09130EB0006396D12F130EC0004B -:1002500013020000B7D0FFFF9380D0CD172100001C -:10026000130141DA2310110083110100B7DEFFFFF3 -:10027000938EDECD6390D12D1302120093022000E5 -:10028000E31A52FC130ED00013020000B7C0FFFFA8 -:100290009380D0CC172100001301C1D613000000B9 -:1002A0002311110083112100B7CEFFFF938EDECC06 -:1002B0006392D1291302120093022000E31852FC2A -:1002C000130EE00013020000B7C0FFFF9380C0BC14 -:1002D00017210000130101D31300000013000000D8 -:1002E0002312110083114100B7CEFFFF938ECEBCC5 -:1002F0006392D1251302120093022000E31652FCF0 -:10030000130EF00013020000B7B0FFFF9380C0BBD4 -:1003100013000000172100001301C1CE23131100A8 -:1003200083116100B7BEFFFF938ECEBB6394D121D2 -:100330001302120093022000E31852FC130E000176 -:1003400013020000B7B0FFFF9380B0AB13000000B2 -:1003500017210000130101CB13000000231411002A -:1003600083118100B7BEFFFF938EBEAB6394D11D96 -:100370001302120093022000E31652FC130E100128 -:1003800013020000B7E0FFFF9380B0AA1300000043 -:1003900013000000172100001301C1C6231511002E -:1003A0008311A100B7EEFFFF938EBEAA6394D1190B -:1003B0001302120093022000E31652FC130E2001D8 -:1003C00013020000172100001301C1C3B720000071 -:1003D000938030232310110083110100B72E0000F9 -:1003E000938E3E236398D1151302120093022000CE -:1003F000E31A52FC130E3001130200001721000013 -:10040000130141C0B7100000938030221300000098 -:100410002311110083112100B71E0000938E3E228C -:10042000639AD1111302120093022000E31852FCC8 -:10043000130E40011302000017210000130181BCBC -:10044000B71000009380201213000000130000007A -:100450002312110083114100B71E0000938E2E124B -:10046000639AD10D1302120093022000E31652FC8E -:10047000130E50011302000017210000130181B870 -:100480001300000093002011231311008311610059 -:10049000930E20116390D10B1302120093022000DF -:1004A000E31C52FC130E6001130200001721000030 -:1004B000130141B513000000930010011300000068 -:1004C0002314110083118100930E10016394D1074E -:1004D0001302120093022000E31A52FC130E700163 -:1004E00013020000172100001301C1B11300000026 -:1004F00013000000B7300000938010002315110096 -:100500008311A100B73E0000938E1E006394D103B7 -:100510001302120093022000E31652FC37C50000BC -:100520001305F5EE972500009385C5AD2393A5002F -:10053000631CC0010F00F00F63000E00131E1E00AD -:10054000136E1E00730000000F00F00F130E10005A -:1005500073000000731000C00000000000000000E5 -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:040580000000000077 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F01301A00A23902000A4 +:1001100003970000930EA00A93012000631ED745A9 +:1001200097200000938000EE37B1FFFF130101A07C +:100130002391200003972000B7BEFFFF938E0EA0EF +:1001400093013000631AD74397200000938080EB1F +:100150003711EFBE130101AA2392200003A740002C +:10016000B71EEFBE938E0EAA930140006316D741CF +:1001700097200000938000E937A1FFFF1301A10041 +:100180002393200003976000B7AEFFFF938EAE006D +:10019000930150006312D73F97200000938060E7DF +:1001A0001301A00A239D20FE0397A0FF930EA00A2F +:1001B000930160006312D73D97200000938060E5B3 +:1001C00037B1FFFF130101A0239E20FE0397C0FF5C +:1001D000B7BEFFFF938E0EA093017000631ED73948 +:1001E000972000009380E0E237110000130101AA7C +:1001F000239F20FE0397E0FFB71E0000938E0EAAF8 +:1002000093018000631AD73797200000938060E045 +:1002100037A1FFFF1301A1002390200003970000E6 +:10022000B7AEFFFF938EAE00930190006316D735F3 +:1002300097200000938000DE37513412130181674C +:10024000138200FE2310220283920000B75E00009A +:10025000938E8E679301A0006390D23397200000A5 +:10026000938040DB37310000130181099380B0FF98 +:10027000A3932000172200001302E2D98312020088 +:10028000B73E0000938E8E099301B0006396D22F83 +:100290009301C00013020000B7D0FFFF9380D0CDC0 +:1002A00017210000130101D62310110003170100CC +:1002B000B7DEFFFF938EDECD6310D72D1302120041 +:1002C00093022000E31A52FC9301D00013020000B5 +:1002D000B7C0FFFF9380D0CC17210000130181D25B +:1002E000130000002311110003172100B7CEFFFFF8 +:1002F000938EDECC6312D7291302120093022000E2 +:10030000E31852FC9301E00013020000B7C0FFFFA6 +:100310009380C0BC172100001301C1CE1300000060 +:10032000130000002312110003174100B7CEFFFF96 +:10033000938ECEBC6312D7251302120093022000C5 +:10034000E31652FC9301F00013020000B7B0FFFF68 +:100350009380C0BB1300000017210000130181CA65 +:100360002313110003176100B7BEFFFF938ECEBBAE +:100370006314D7211302120093022000E31852FCE9 +:100380009301000113020000B7B0FFFF9380B0ABF0 +:1003900013000000172100001301C1C61300000064 +:1003A0002314110003178100B7BEFFFF938EBEAB6D +:1003B0006314D71D1302120093022000E31652FCAF +:1003C0009301100113020000B7E0FFFF9380B0AA71 +:1003D000130000001300000017210000130181C268 +:1003E000231511000317A100B7EEFFFF938EBEAADD +:1003F0006314D7191302120093022000E31652FC73 +:10040000930120011302000017210000130181BF96 +:10041000B720000093803023231011000317010040 +:10042000B72E0000938E3E236318D71513021200D7 +:1004300093022000E31A52FC9301300113020000E2 +:1004400017210000130101BCB71000009380302277 +:10045000130000002311110003172100B71E000034 +:10046000938E3E22631AD7111302120093022000CA +:10047000E31852FC93014001130200001721000011 +:10048000130141B8B7100000938020121300000040 +:10049000130000002312110003174100B71E0000D3 +:1004A000938E2E12631AD70D1302120093022000AE +:1004B000E31652FC930150011302000017210000C3 +:1004C000130141B413000000930020112313110005 +:1004D00003176100930E20116310D70B1302120053 +:1004E00093022000E31C52FC930160011302000000 +:1004F00017210000130101B1130000009300100147 +:10050000130000002314110003178100930E100143 +:100510006314D7071302120093022000E31A52FC5F +:10052000930170011302000017210000130181AD37 +:100530001300000013000000B7300000938010008B +:10054000231511000317A100B73E0000938E1E0073 +:100550006314D7031302120093022000E31652FC27 +:1005600037C500001305F5EE97250000938585A992 +:100570002393A500631030020F00F00F6380010089 +:100580009391110093E111009308D00513850100A8 +:10059000730000000F00F00F930110009308D005C6 +:1005A0001305000073000000731000C0000000007D +:0C05B0000000000000000000000000003F :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 @@ -95,5 +98,5 @@ :081040000000000000000000A8 :10200000EFBEEFBEEFBEEFBEEFBEEFBEEFBEEFBE68 :10201000EFBEEFBE00000000000000000000000066 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-simple.hex b/benchmarks/riscv_tests/rv32ui-p-simple.hex index 018e25ac..de159b6a 100644 --- a/benchmarks/riscv_tests/rv32ui-p-simple.hex +++ b/benchmarks/riscv_tests/rv32ui-p-simple.hex @@ -1,25 +1,28 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F1730020300F00F00F5D -:1000C000130E100073000000731000C00000000049 -:1000D0000000000000000000000000000000000020 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:0401000000000000FB +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100000F00F00F930110009308D00513050000B5 +:1001100073000000731000C0000000000000000029 +:1001200000000000000000000000000000000000CF +:0C013000000000000000000000000000C3 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sll.hex b/benchmarks/riscv_tests/rv32ui-p-sll.hex index 9fdbf4a9..360c8338 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sll.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sll.hex @@ -1,109 +1,116 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093001000C8 -:1000C00013010000B3912000930E1000130E2000C6 -:1000D000639ED1539300100013011000B3912000D0 -:1000E000930E2000130E30006392D1539300100042 -:1000F00013017000B3912000930E0008130E40000E -:100100006396D151930010001301E000B3912000D9 -:10011000B74E0000130E5000639AD14F93001000A9 -:100120001301F001B3912000B70E0080130E6000A0 -:10013000639ED14D9300F0FF13010000B3912000A6 -:10014000930EF0FF130E70006392D14D9300F0FFF9 -:1001500013011000B3912000930EE0FF130E8000F6 -:100160006396D14B9300F0FF13017000B391200010 -:10017000930E00F8130E9000639AD1499300F0FF9C -:100180001301E000B3912000B7CEFFFF130EA000D3 -:10019000639ED1479300F0FF1301F001B39120005B -:1001A000B70E0080130EB0006392D147B720212113 -:1001B0009380101213010000B3912000B72E21216B -:1001C000938E1E12130EC0006392D145B7202121D9 -:1001D0009380101213011000B3912000B74E4242D9 -:1001E000938E2E24130ED0006392D143B720212189 -:1001F0009380101213017000B3912000B79E90906D -:10020000938E0E08130EE0006392D141B720212196 -:10021000938010121301E000B3912000B74E4848BC -:10022000130EF0006394D13FB72021219380101268 -:100230001301F001B3912000B70E0080130E0001EE -:100240006396D13DB720212193801012130100FC49 -:10025000B3912000B72E2121938E1E12130E100190 -:100260006396D13BB720212193801012130110FC1B -:10027000B3912000B74E4242938E2E24130E2001DC -:100280006396D139B720212193801012130170FC9D -:10029000B3912000B79E9090938E0E08130E3001FC -:1002A0006396D137B7202121938010121301E0FC0F -:1002B000B3912000B74E4848130E40016398D135E2 -:1002C0009300100013017000B3902000930E0008FB -:1002D000130E6001639CD033930010001301E00003 -:1002E00033912000B74E0000130E70016310D1331C -:1002F00093003000B3901000930E8001130E800124 -:100300006396D031130200009300100013017000B7 -:10031000B391200013830100130212009302200006 -:10032000E31452FE930E0008130E90016310D32FB6 -:1003300013020000930010001301E000B3912000AD -:100340001300000013830100130212009302200027 -:10035000E31252FEB74E0000130EA0016318D32B18 -:1003600013020000930010001301F001B39120006C -:100370001300000013000000138301001302120099 -:1003800093022000E31052FEB70E0080130EB0015E -:10039000631ED327130200009300100013017000A6 -:1003A000B39120001302120093022000E31652FEC4 -:1003B000930E0008130EC001639AD12513020000AA -:1003C000930010001301E00013000000B39120001F -:1003D0001302120093022000E31452FEB74E0000F5 -:1003E000130ED0016394D123130200009300100078 -:1003F0001301F0011300000013000000B39120006E -:100400001302120093022000E31252FEB70E008086 -:10041000130EE001639CD11F130200009300100033 -:100420001300000013017000B391200013021200AA -:1004300093022000E31452FE930E0008130EF00105 -:100440006396D11D130200009300100013000000FA -:100450001301E00013000000B3912000130212000A -:1004600093022000E31252FEB74E0000130E00026A -:10047000639ED119130200009300100013000000C6 -:10048000130000001301F001B391200013021200C9 -:1004900093022000E31252FEB70E0080130E1002EA -:1004A0006396D1171302000013017000930010002F -:1004B000B39120001302120093022000E31652FEB3 -:1004C000930E0008130E20026392D1151302000050 -:1004D0001301E0009300100013000000B39120000E -:1004E0001302120093022000E31452FEB74E0000E4 -:1004F000130E3002639CD111130200001301F001AE -:10050000930010001300000013000000B3912000BE -:100510001302120093022000E31252FEB70E008075 -:10052000130E40026394D10F1302000013017000F8 -:100530001300000093001000B3912000130212007A -:1005400093022000E31452FE930E0008130E500293 -:10055000639ED10B130200001301E00013000000A2 -:100560009300100013000000B3912000130212004A -:1005700093022000E31252FEB74E0000130E6002F9 -:100580006396D109130200001301F001130000006B -:100590001300000093001000B3912000130212001A -:1005A00093022000E31252FEB70E0080130E700279 -:1005B000639ED1059300F00033111000930E0000EC -:1005C000130E80026314D1059300000233910000E2 -:1005D000930E0002130E9002631AD103B3100000B1 -:1005E000930E0000130EA0026392D003930000400C -:1005F000371100001301018033902000930E00009A -:10060000130EB0026314D001631CC0010F00F00F81 -:1006100063000E00131E1E00136E1E007300000008 -:100620000F00F00F130E100073000000731000C0D5 -:1006300000000000000000000000000000000000BA -:0406400000000000B6 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930010001301000033972000930E10009D +:1001100093012000631ED7539300100013011000B9 +:1001200033972000930E2000930130006312D753C1 +:10013000930010001301700033972000930E000805 +:10014000930140006316D751930010001301E000A3 +:1001500033972000B74E000093015000631AD74F29 +:10016000930010001301F00133972000B70E0080B8 +:1001700093016000631ED74D9300F0FF1301000050 +:1001800033972000930EF0FF930170006312D74D58 +:100190009300F0FF1301100033972000930EE0FF4F +:1001A000930180006316D74B9300F0FF130170009A +:1001B00033972000930E00F893019000631AD749FB +:1001C0009300F0FF1301E00033972000B7CEFFFF4C +:1001D0009301A000631ED7479300F0FF1301F001C5 +:1001E00033972000B70E00809301B0006312D74709 +:1001F000B7202121938010121301000033972000B3 +:10020000B72E2121938E1E129301C0006312D74591 +:10021000B720212193801012130110003397200082 +:10022000B74E4242938E2E249301D0006312D743DF +:10023000B720212193801012130170003397200002 +:10024000B79E9090938E0E089301E0006312D74101 +:10025000B7202121938010121301E0003397200072 +:10026000B74E48489301F0006314D73FB7202121CF +:10027000938010121301F00133972000B70E008015 +:10028000930100016316D73DB720212193801012FE +:10029000130100FC33972000B72E2121938E1E12EC +:1002A000930110016316D73BB720212193801012D0 +:1002B000130110FC33972000B74E4242938E2E2438 +:1002C000930120016316D739B720212193801012A2 +:1002D000130170FC33972000B79E9090938E0E0808 +:1002E000930130016316D737B72021219380101274 +:1002F0001301E0FC33972000B74E484893014001BA +:100300006318D7359300100013017000B3902000DC +:10031000930E000893016001639CD033930010009A +:100320001301E00033912000B74E000093017001EB +:100330006310D13393003000B3901000930E80010E +:10034000930180016396D0311302000093001000E6 +:1003500013017000339720001303070013021200EB +:1003600093022000E31452FE930E000893019001C3 +:100370006310D32F13020000930010001301E0005C +:10038000339720001300000013030700130212002C +:1003900093022000E31252FEB74E00009301A00129 +:1003A0006318D32B13020000930010001301F00117 +:1003B0003397200013000000130000001303070010 +:1003C0001302120093022000E31052FEB70E0080C9 +:1003D0009301B001631ED3271302000093001000A5 +:1003E00013017000339720001302120093022000C3 +:1003F000E31652FE930E00089301C001631AD7253D +:1004000013020000930010001301E000130000002D +:10041000339720001302120093022000E31452FECF +:10042000B74E00009301D0016314D72313020000DC +:10043000930010001301F0011300000013000000EE +:10044000339720001302120093022000E31252FEA1 +:10045000B70E00809301E001631CD71F1302000058 +:100460009300100013000000130170003397200068 +:100470001302120093022000E31452FE930E0008B0 +:100480009301F0016316D71D1302000093001000C2 +:10049000130000001301E000130000003397200058 +:1004A0001302120093022000E31252FEB74E000026 +:1004B00093010002631ED71913020000930010007D +:1004C00013000000130000001301F0013397200017 +:1004D0001302120093022000E31252FEB70E0080B6 +:1004E000930110026316D717130200001301700066 +:1004F0009300100033972000130212009302200093 +:10050000E31652FE930E0008930120026312D715E2 +:10051000130200001301E00093001000130000001C +:10052000339720001302120093022000E31452FEBE +:10053000B74E000093013002631CD7111302000074 +:100540001301F001930010001300000013000000DD +:10055000339720001302120093022000E31252FE90 +:10056000B70E0080930140026314D70F13020000FE +:100570001301700013000000930010003397200057 +:100580001302120093022000E31452FE930E00089F +:1005900093015002631ED70B130200001301E00009 +:1005A0001300000093001000130000003397200098 +:1005B0001302120093022000E31252FEB74E000015 +:1005C000930160026316D709130200001301F001C2 +:1005D0001300000013000000930010003397200068 +:1005E0001302120093022000E31252FEB70E0080A5 +:1005F00093017002631ED7059300F00033111000C1 +:10060000930E0000930180026314D1059300000251 +:1006100033910000930E000293019002631AD103FC +:10062000B3100000930E00009301A0026392D00368 +:100630009300004037110000130101803390200027 +:10064000930E00009301B0026314D00163103002D6 +:100650000F00F00F638001009391110093E11100EE +:100660009308D00513850100730000000F00F00F00 +:10067000930110009308D0051305000073000000DB +:10068000731000C000000000000000000000000027 +:10069000000000000000000000000000000000005A +:1006A000000000000000000000000000000000004A +:0C06B0000000000000000000000000003E :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-slli.hex b/benchmarks/riscv_tests/rv32ui-p-slli.hex index 6b602bd0..c29a501d 100644 --- a/benchmarks/riscv_tests/rv32ui-p-slli.hex +++ b/benchmarks/riscv_tests/rv32ui-p-slli.hex @@ -1,65 +1,68 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093001000C8 -:1000C00093910000930E1000130E2000639AD12725 -:1000D0009300100093911000930E2000130E300037 -:1000E0006390D1279300100093917000930E000845 -:1000F000130E40006396D125930010009391E00009 -:10010000B74E0000130E5000639CD12393001000E3 -:100110009391F001B70E0080130E60006392D1231B -:100120009300F0FF93910000930EF0FF130E700008 -:100130006398D1219300F0FF93911000930EE0FF9C -:10014000130E8000639ED11F9300F0FF9391700007 -:10015000930E00F8130E90006394D11F9300F0FFEC -:100160009391E000B7CEFFFF130EA000639AD11D5C -:100170009300F0FF9391F001B70E0080130EB000D2 -:100180006390D11DB720212193801012939100001C -:10019000B72E2121938E1E12130EC0006392D11B25 -:1001A000B72021219380101293911000B74E424244 -:1001B000938E2E24130ED0006394D119B7202121E1 -:1001C0009380101293917000B79E9090938E0E08BA -:1001D000130EE0006396D117B720212193801012EF -:1001E0009391E000B74E4848130EF000639AD11582 -:1001F000B7202121938010129391F001B70E008057 -:10020000130E0001639ED1139300100093907000B1 -:10021000930E0008130E10016394D0131302000014 -:1002200093001000939170001383010013021200D9 -:1002300093022000E31652FE930E0008130E2001D5 -:100240006310D31113020000930010009391E0009B -:100250001300000013830100130212009302200018 -:10026000E31452FEB74E0000130E3001631AD30D93 -:1002700013020000930010009391F001130000009E -:1002800013000000138301001302120093022000E8 -:10029000E31252FEB70E0080130E40016312D30B1F -:1002A00013020000930010009391700013021200DB -:1002B00093022000E31852FE930E0008130E500123 -:1002C0006390D10913020000930010001300000096 -:1002D0009391E0001302120093022000E31652FEF5 -:1002E000B74E0000130E6001639CD105130200009D -:1002F0009300100013000000130000009391F00120 -:100300001302120093022000E31452FEB70E008085 -:10031000130E70016396D1039310F001930E000049 -:10032000130E8001639ED0019300100213904001D0 -:10033000930E0000130E90016314D001631CC001E2 -:100340000F00F00F63000E00131E1E00136E1E0040 -:10035000730000000F00F00F130E10007300000078 -:10036000731000C00000000000000000000000004A -:10037000000000000000000000000000000000007D -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100009300100013970000930E1000930120003D +:10011000631AD7279300100013971000930E200046 +:10012000930130006310D7279300100013977000DD +:10013000930E0008930140006316D725930010002A +:100140001397E000B74E000093015000631CD723C3 +:10015000930010001397F001B70E00809301600028 +:100160006312D7239300F0FF13970000930EF0FF64 +:10017000930170006318D7219300F0FF13971000CC +:10018000930EE0FF93018000631ED71F9300F0FFE2 +:1001900013977000930E00F8930190006314D71F1B +:1001A0009300F0FF1397E000B7CEFFFF9301A0008C +:1001B000631AD71D9300F0FF1397F001B70E00806C +:1001C0009301B0006310D71DB72021219380101236 +:1001D00013970000B72E2121938E1E129301C000A9 +:1001E0006312D71BB72021219380101213971000A0 +:1001F000B74E4242938E2E249301D0006314D71938 +:10020000B72021219380101213977000B79E909011 +:10021000938E0E089301E0006316D717B7202121B3 +:10022000938010121397E000B74E48489301F000F6 +:10023000631AD715B7202121938010121397F0016C +:10024000B70E008093010001631ED71393001000C6 +:1002500093907000930E0008930110016394D013E3 +:10026000130200009300100013977000130307009F +:100270001302120093022000E31652FE930E0008B0 +:10028000930120016310D3111302000093001000AA +:100290001397E0001300000013030700130212007D +:1002A00093022000E31452FEB74E00009301300188 +:1002B000631AD30D13020000930010001397F0018E +:1002C00013000000130000001303070013021200C4 +:1002D00093022000E31252FEB70E0080930140010A +:1002E0006312D30B130200009300100013977000E9 +:1002F0001302120093022000E31852FE930E00082E +:10030000930150016310D7091302000093001000FD +:10031000130000001397E000130212009302200064 +:10032000E31652FEB74E000093016001631CD7052F +:1003300013020000930010001300000013000000DF +:100340001397F0011302120093022000E31452FEEF +:10035000B70E0080930170016316D7039310F0016C +:10036000930E000093018001639ED0019300100260 +:1003700013904001930E0000930190016314D0018B +:10038000631030020F00F00F6380010093911100A1 +:1003900093E111009308D00513850100730000005C +:1003A0000F00F00F930110009308D0051305000013 +:0C03B00073000000731000C0000000008B :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-slt.hex b/benchmarks/riscv_tests/rv32ui-p-slt.hex index abca3020..efebd890 100644 --- a/benchmarks/riscv_tests/rv32ui-p-slt.hex +++ b/benchmarks/riscv_tests/rv32ui-p-slt.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00013010000B3A12000930E0000130E2000C6 -:1000D000639AD14B9300100013011000B3A12000CC -:1000E000930E0000130E3000639ED1499300300040 -:1000F00013017000B3A12000930E1000130E4000F6 -:100100006392D1499300700013013000B3A1200025 -:10011000930E0000130E50006396D1479300000029 -:100120003781FFFFB3A12000930E0000130E600083 -:10013000639AD145B700008013010000B3A12000ED -:10014000930E1000130E7000639ED143B700008021 -:100150003781FFFFB3A12000930E1000130E800023 -:100160006392D14393000000378100001301F1FF37 -:10017000B3A12000930E1000130E90006394D141A0 -:10018000B70000809380F0FF13010000B3A12000AE -:10019000930E0000130EA0006396D13FB7000080BD -:1001A0009380F0FF378100001301F1FFB3A120001D -:1001B000930E0000130EB0006396D13DB70000808F -:1001C000378100001301F1FFB3A12000930E10004E -:1001D000130EC0006398D13BB70000809380F0FFFE -:1001E0003781FFFFB3A12000930E0000130ED00053 -:1001F000639AD139930000001301F0FFB3A12000EE -:10020000930E0000130EE000639ED1379300F0FFC1 -:1002100013011000B3A12000930E1000130EF00084 -:100220006392D1379300F0FF1301F0FFB3A12000D8 -:10023000930E0000130E00016396D1359300E00089 -:100240001301D000B3A02000930E0000130E100184 -:10025000639AD0339300B0001301D00033A1200083 -:10026000930E1000130E2001631ED1319300D000B5 -:10027000B3A01000930E0000130E30016394D03130 -:10028000130200009300B0001301D000B3A12000BE -:10029000138301001302120093022000E31452FEA4 -:1002A000930E1000130E4001631ED32D13020000A5 -:1002B0009300E0001301D000B3A120001300000060 -:1002C000138301001302120093022000E31252FE76 -:1002D000930E0000130E50016316D32B130200007F -:1002E0009300C0001301D000B3A120001300000050 -:1002F0001300000013830100130212009302200078 -:10030000E31052FE930E1000130E6001631CD327FE -:10031000130200009300E0001301D000B3A12000FD -:100320001302120093022000E31652FE930E000007 -:10033000130E70016398D125130200009300B000E2 -:100340001301D00013000000B3A12000130212001B -:1003500093022000E31452FE930E1000130E80014E -:100360006392D123130200009300F0001301D00028 -:100370001300000013000000B3A1200013021200BC -:1003800093022000E31252FE930E0000130E900120 -:10039000639AD11F130200009300A0001300000015 -:1003A0001301D000B3A12000130212009302200019 -:1003B000E31452FE930E1000130EA0016394D11D9E -:1003C0001302000093000001130000001301D0008D -:1003D00013000000B3A120001302120093022000BA -:1003E000E31252FE930E0000130EB001639CD1196C -:1003F000130200009300900013000000130000009F -:100400001301D000B3A120001302120093022000B8 -:10041000E31252FE930E1000130EC0016394D11725 -:10042000130200001301D00093001001B3A12000BB -:100430001302120093022000E31652FE930E0000F6 -:10044000130ED0016390D115130200001301D000E8 -:100450009300800013000000B3A1200013021200DB -:1004600093022000E31452FE930E1000130EE001DD -:10047000639AD111130200001301D00093002001F0 -:100480001300000013000000B3A1200013021200AB -:1004900093022000E31252FE930E0000130EF001AF -:1004A0006392D10F130200001301D000130000006B -:1004B00093007000B3A120001302120093022000E9 -:1004C000E31452FE930E1000130E0002639CD10B36 -:1004D000130200001301D00013000000930030014C -:1004E00013000000B3A120001302120093022000A9 -:1004F000E31252FE930E0000130E10026394D10912 -:10050000130200001301D0001300000013000000CC -:1005100093006000B3A12000130212009302200098 -:10052000E31252FE930E1000130E2002639CD105BD -:100530009300F0FF33211000930E0000130E3002E1 -:100540006312D1059300F0FF33A10000930E100059 -:10055000130E40026318D103B3200000930E000075 -:10056000130E50026390D003930000011301E001C9 -:1005700033A02000930E0000130E60026314D0011C -:10058000631CC0010F00F00F63000E00131E1E005D -:10059000136E1E00730000000F00F00F130E10000A -:1005A00073000000731000C0000000000000000095 -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930000001301000033A72000930E0000AD +:1001100093012000631AD74B9300100013011000C5 +:1001200033A72000930E000093013000631ED749CF +:10013000930030001301700033A72000930E1000CD +:10014000930140006312D7499300700013013000FF +:1001500033A72000930E0000930150006316D74789 +:10016000930000003781FFFF33A72000930E0000AB +:1001700093016000631AD745B700008013010000A7 +:1001800033A72000930E100093017000631ED74325 +:10019000B70000803781FFFF33A72000930E1000C7 +:1001A000930180006312D743930000003781000061 +:1001B0001301F1FF33A72000930E1000930190006C +:1001C0006314D741B70000809380F0FF1301000053 +:1001D00033A72000930E00009301A0006316D73FC1 +:1001E000B70000809380F0FF378100001301F1FF1A +:1001F00033A72000930E00009301B0006316D73D93 +:10020000B7000080378100001301F1FF33A7200001 +:10021000930E10009301C0006318D73BB700008015 +:100220009380F0FF3781FFFF33A72000930E00007B +:100230009301D000631AD739930000001301F0FF37 +:1002400033A72000930E00009301E000631ED73710 +:100250009300F0FF1301100033A72000930E10004D +:100260009301F0006312D7379300F0FF1301F0FF02 +:1002700033A72000930E0000930100016316D735C9 +:100280009300E0001301D000B3A02000930E000003 +:1002900093011001639AD0339300B0001301D00092 +:1002A00033A12000930E100093012001631ED13171 +:1002B0009300D000B3A01000930E00009301300112 +:1002C0006394D031130200009300B0001301D000FA +:1002D00033A720001303070013021200930220002B +:1002E000E31452FE930E100093014001631ED32DC0 +:1002F000130200009300E0001301D00033A7200098 +:1003000013000000130307001302120093022000E1 +:10031000E31252FE930E0000930150016316D32B9B +:10032000130200009300C0001301D00033A7200087 +:100330001300000013000000130307001302120053 +:1003400093022000E31052FE930E1000930160010F +:10035000631CD327130200009300E0001301D000B8 +:1003600033A720001302120093022000E31652FE6E +:10037000930E0000930170016318D725130200004B +:100380009300B0001301D0001300000033A7200039 +:100390001302120093022000E31452FE930E100089 +:1003A000930180016312D723130200009300F00031 +:1003B0001301D000130000001300000033A7200039 +:1003C0001302120093022000E31252FE930E00006B +:1003D00093019001631AD71F130200009300A0003D +:1003E000130000001301D00033A7200013021200F5 +:1003F00093022000E31452FE930E10009301A0011B +:100400006314D71D130200009300000113000000C5 +:100410001301D0001300000033A7200013021200C4 +:1004200093022000E31252FE930E00009301B001EC +:10043000631CD71913020000930090001300000002 +:10044000130000001301D00033A720001302120094 +:1004500093022000E31252FE930E10009301C0019C +:100460006314D717130200001301D000930010018A +:1004700033A720001302120093022000E31652FE5D +:10048000930E00009301D0016310D71513020000F2 +:100490001301D000930080001300000033A7200058 +:1004A0001302120093022000E31452FE930E100078 +:1004B0009301E001631AD711130200001301D00069 +:1004C00093002001130000001300000033A7200058 +:1004D0001302120093022000E31252FE930E00005A +:1004E0009301F0016312D70F130200001301D00033 +:1004F000130000009300700033A7200013021200C5 +:1005000093022000E31452FE930E100093010002A8 +:10051000631CD70B130200001301D000130000006E +:10052000930030011300000033A7200013021200D3 +:1005300093022000E31252FE930E0000930110027A +:100540006314D709130200001301D0001300000048 +:10055000130000009300600033A720001302120074 +:1005600093022000E31252FE930E1000930120022A +:10057000631CD7059300F0FF33211000930E000099 +:10058000930130026312D1059300F0FF33A1000004 +:10059000930E1000930140026318D103B3200000B2 +:1005A000930E0000930150026390D003930000016A +:1005B0001301E00133A02000930E000093016002BC +:1005C0006314D001631030020F00F00F638001004C +:1005D0009391110093E111009308D0051385010058 +:1005E000730000000F00F00F930110009308D00576 +:0C05F0001305000073000000731000C031 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-slti.hex b/benchmarks/riscv_tests/rv32ui-p-slti.hex index 8f6fdbbf..69e7c05d 100644 --- a/benchmarks/riscv_tests/rv32ui-p-slti.hex +++ b/benchmarks/riscv_tests/rv32ui-p-slti.hex @@ -1,65 +1,68 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00093A10000930E0000130E20006392D1272D -:1000D0009300100093A11000930E0000130E300047 -:1000E0006398D1259300300093A17000930E100007 -:1000F000130E4000639ED1239300700093A1300043 -:10010000930E0000130E50006394D123930000005F -:1001100093A10080930E0000130E6000639AD1211A -:10012000B700008093A10000930E1000130E700022 -:100130006390D121B700008093A10080930E10003E -:10014000130E80006396D11F9300000093A1F07FEF -:10015000930E1000130E9000639CD11DB700008019 -:100160009380F0FF93A10000930E0000130EA000F7 -:100170006390D11DB70000809380F0FF93A1F07FC2 -:10018000930E0000130EB0006394D11BB7000080E3 -:1001900093A1F07F930E1000130EC000639AD11943 -:1001A000B70000809380F0FF93A10080930E0000C1 -:1001B000130ED000639ED1179300000093A1F0FFAF -:1001C000930E0000130EE0006394D1179300F0FF2C -:1001D00093A11000930E1000130EF000639AD11536 -:1001E0009300F0FF93A1F0FF930E0000130E0001A7 -:1001F0006390D1159300B00093A0D000930E10002F -:10020000130E10016396D013130200009300F00048 -:1002100093A1A00013830100130212009302200097 -:10022000E31652FE930E0000130E20016312D31149 -:10023000130200009300A00093A10001130000002E -:10024000138301001302120093022000E31452FEF4 -:10025000930E1000130E3001631CD30D1302000027 -:100260009300000193A19000130000001300000010 -:10027000138301001302120093022000E31252FEC6 -:10028000930E0000130E40016314D30B1302000001 -:100290009300B00093A1F00013021200930220001B -:1002A000E31852FE930E1000130E50016392D10911 -:1002B00013020000930010011300000093A18000BE -:1002C0001302120093022000E31652FE930E000068 -:1002D000130E6001639ED105130200009300C0005D -:1002E000130000001300000093A1E00013021200AD -:1002F00093022000E31452FE930E1000130E7001BF -:100300006398D1039320F0FF930E0000130E800139 -:100310006390D003B700FF009380F00F13A0F0FFAD -:10032000930E0000130E90016314D001631CC001F2 -:100330000F00F00F63000E00131E1E00136E1E0050 -:10034000730000000F00F00F130E10007300000088 -:10035000731000C00000000000000000000000005A -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100009300000013A70000930E0000930120004D +:100110006312D7279300100013A71000930E00005E +:10012000930130006318D7259300300013A77000A7 +:10013000930E100093014000631ED72393007000BC +:1001400013A73000930E0000930150006314D723CF +:100150009300000013A70080930E0000930160003D +:10016000631AD721B700008013A70000930E100078 +:10017000930170006310D721B700008013A700809F +:10018000930E1000930180006316D71F93000000A8 +:1001900013A7F07F930E100093019000631CD71DEE +:1001A000B70000809380F0FF13A70000930E0000BB +:1001B0009301A0006310D71DB70000809380F0FF6B +:1001C00013A7F07F930E00009301B0006314D71BB8 +:1001D000B700008013A7F07F930E10009301C000BA +:1001E000631AD719B70000809380F0FF13A700802F +:1001F000930E00009301D000631ED71793000000F8 +:1002000013A7F0FF930E00009301E0006314D717CB +:100210009300F0FF13A71000930E10009301F0005D +:10022000631AD7159300F0FF13A7F0FF930E000099 +:10023000930100016310D7159300B00093A0D00084 +:10024000930E1000930110016396D0131302000067 +:100250009300F00013A7A00013030700130212007D +:1002600093022000E31652FE930E0000930120013A +:100270006312D311130200009300A00013A7000122 +:100280001300000013030700130212009302200062 +:10029000E31452FE930E100093013001631CD30D42 +:1002A000130200009300000113A790001300000048 +:1002B0001300000013030700130212009302200032 +:1002C000E31252FE930E0000930140016314D30B1E +:1002D000130200009300B00013A7F00013021200F5 +:1002E00093022000E31852FE930E10009301500178 +:1002F0006312D709130200009300100113000000DD +:1003000013A780001302120093022000E31652FE8E +:10031000930E000093016001631ED70513020000D5 +:100320009300C000130000001300000013A7E000BA +:100330001302120093022000E31452FE930E1000E9 +:10034000930170016318D7039320F0FF930E000010 +:10035000930180016390D003B700FF009380F00FFA +:1003600013A0F0FF930E0000930190016314D001DD +:10037000631030020F00F00F6380010093911100B1 +:1003800093E111009308D00513850100730000006C +:100390000F00F00F930110009308D0051305000023 +:1003A00073000000731000C0000000000000000097 +:0C03B00000000000000000000000000041 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sltiu.hex b/benchmarks/riscv_tests/rv32ui-p-sltiu.hex index 7d9a537d..383b0046 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sltiu.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sltiu.hex @@ -1,65 +1,68 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00093B10000930E0000130E20006392D1271D -:1000D0009300100093B11000930E0000130E300037 -:1000E0006398D1259300300093B17000930E1000F7 -:1000F000130E4000639ED1239300700093B1300033 -:10010000930E0000130E50006394D123930000005F -:1001100093B10080930E1000130E6000639AD121FA -:10012000B700008093B10000930E0000130E700022 -:100130006390D121B700008093B10080930E10002E -:10014000130E80006396D11F9300000093B1F07FDF -:10015000930E1000130E9000639CD11DB700008019 -:100160009380F0FF93B10000930E0000130EA000E7 -:100170006390D11DB70000809380F0FF93B1F07FB2 -:10018000930E0000130EB0006394D11BB7000080E3 -:1001900093B1F07F930E0000130EC000639AD11943 -:1001A000B70000809380F0FF93B10080930E1000A1 -:1001B000130ED000639ED1179300000093B1F0FF9F -:1001C000930E1000130EE0006394D1179300F0FF1C -:1001D00093B11000930E0000130EF000639AD11536 -:1001E0009300F0FF93B1F0FF930E0000130E000197 -:1001F0006390D1159300B00093B0D000930E10001F -:10020000130E10016396D013130200009300F00048 -:1002100093B1A00013830100130212009302200087 -:10022000E31652FE930E0000130E20016312D31149 -:10023000130200009300A00093B10001130000001E -:10024000138301001302120093022000E31452FEF4 -:10025000930E1000130E3001631CD30D1302000027 -:100260009300000193B19000130000001300000000 -:10027000138301001302120093022000E31252FEC6 -:10028000930E0000130E40016314D30B1302000001 -:100290009300B00093B1F00013021200930220000B -:1002A000E31852FE930E1000130E50016392D10911 -:1002B00013020000930010011300000093B18000AE -:1002C0001302120093022000E31652FE930E000068 -:1002D000130E6001639ED105130200009300C0005D -:1002E000130000001300000093B1E000130212009D -:1002F00093022000E31452FE930E1000130E7001BF -:100300006398D1039330F0FF930E1000130E800119 -:100310006390D003B700FF009380F00F13B0F0FF9D -:10032000930E0000130E90016314D001631CC001F2 -:100330000F00F00F63000E00131E1E00136E1E0050 -:10034000730000000F00F00F130E10007300000088 -:10035000731000C00000000000000000000000005A -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100009300000013B70000930E0000930120003D +:100110006312D7279300100013B71000930E00004E +:10012000930130006318D7259300300013B7700097 +:10013000930E100093014000631ED72393007000BC +:1001400013B73000930E0000930150006314D723BF +:100150009300000013B70080930E1000930160001D +:10016000631AD721B700008013B70000930E000078 +:10017000930170006310D721B700008013B700808F +:10018000930E1000930180006316D71F93000000A8 +:1001900013B7F07F930E100093019000631CD71DDE +:1001A000B70000809380F0FF13B70000930E0000AB +:1001B0009301A0006310D71DB70000809380F0FF6B +:1001C00013B7F07F930E00009301B0006314D71BA8 +:1001D000B700008013B7F07F930E00009301C000BA +:1001E000631AD719B70000809380F0FF13B700801F +:1001F000930E10009301D000631ED71793000000E8 +:1002000013B7F0FF930E10009301E0006314D717AB +:100210009300F0FF13B71000930E00009301F0005D +:10022000631AD7159300F0FF13B7F0FF930E000089 +:10023000930100016310D7159300B00093B0D00074 +:10024000930E1000930110016396D0131302000067 +:100250009300F00013B7A00013030700130212006D +:1002600093022000E31652FE930E0000930120013A +:100270006312D311130200009300A00013B7000112 +:100280001300000013030700130212009302200062 +:10029000E31452FE930E100093013001631CD30D42 +:1002A000130200009300000113B790001300000038 +:1002B0001300000013030700130212009302200032 +:1002C000E31252FE930E0000930140016314D30B1E +:1002D000130200009300B00013B7F00013021200E5 +:1002E00093022000E31852FE930E10009301500178 +:1002F0006312D709130200009300100113000000DD +:1003000013B780001302120093022000E31652FE7E +:10031000930E000093016001631ED70513020000D5 +:100320009300C000130000001300000013B7E000AA +:100330001302120093022000E31452FE930E1000E9 +:10034000930170016318D7039330F0FF930E1000F0 +:10035000930180016390D003B700FF009380F00FFA +:1003600013B0F0FF930E0000930190016314D001CD +:10037000631030020F00F00F6380010093911100B1 +:1003800093E111009308D00513850100730000006C +:100390000F00F00F930110009308D0051305000023 +:1003A00073000000731000C0000000000000000097 +:0C03B00000000000000000000000000041 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sltu.hex b/benchmarks/riscv_tests/rv32ui-p-sltu.hex index a94616d4..590d3b78 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sltu.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sltu.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00013010000B3B12000930E0000130E2000B6 -:1000D000639AD14B9300100013011000B3B12000BC -:1000E000930E0000130E3000639ED1499300300040 -:1000F00013017000B3B12000930E1000130E4000E6 -:100100006392D1499300700013013000B3B1200015 -:10011000930E0000130E50006396D1479300000029 -:100120003781FFFFB3B12000930E1000130E600063 -:10013000639AD145B700008013010000B3B12000DD -:10014000930E0000130E7000639ED143B700008031 -:100150003781FFFFB3B12000930E1000130E800013 -:100160006392D14393000000378100001301F1FF37 -:10017000B3B12000930E1000130E90006394D14190 -:10018000B70000809380F0FF13010000B3B120009E -:10019000930E0000130EA0006396D13FB7000080BD -:1001A0009380F0FF378100001301F1FFB3B120000D -:1001B000930E0000130EB0006396D13DB70000808F -:1001C000378100001301F1FFB3B12000930E00004E -:1001D000130EC0006398D13BB70000809380F0FFFE -:1001E0003781FFFFB3B12000930E1000130ED00033 -:1001F000639AD139930000001301F0FFB3B12000DE -:10020000930E1000130EE000639ED1379300F0FFB1 -:1002100013011000B3B12000930E0000130EF00084 -:100220006392D1379300F0FF1301F0FFB3B12000C8 -:10023000930E0000130E00016396D1359300E00089 -:100240001301D000B3B02000930E0000130E100174 -:10025000639AD0339300B0001301D00033B1200073 -:10026000930E1000130E2001631ED1319300D000B5 -:10027000B3B01000930E0000130E30016394D03120 -:10028000130200009300B0001301D000B3B12000AE -:10029000138301001302120093022000E31452FEA4 -:1002A000930E1000130E4001631ED32D13020000A5 -:1002B0009300E0001301D000B3B120001300000050 -:1002C000138301001302120093022000E31252FE76 -:1002D000930E0000130E50016316D32B130200007F -:1002E0009300C0001301D000B3B120001300000040 -:1002F0001300000013830100130212009302200078 -:10030000E31052FE930E1000130E6001631CD327FE -:10031000130200009300E0001301D000B3B12000ED -:100320001302120093022000E31652FE930E000007 -:10033000130E70016398D125130200009300B000E2 -:100340001301D00013000000B3B12000130212000B -:1003500093022000E31452FE930E1000130E80014E -:100360006392D123130200009300F0001301D00028 -:100370001300000013000000B3B1200013021200AC -:1003800093022000E31252FE930E0000130E900120 -:10039000639AD11F130200009300A0001300000015 -:1003A0001301D000B3B12000130212009302200009 -:1003B000E31452FE930E1000130EA0016394D11D9E -:1003C0001302000093000001130000001301D0008D -:1003D00013000000B3B120001302120093022000AA -:1003E000E31252FE930E0000130EB001639CD1196C -:1003F000130200009300900013000000130000009F -:100400001301D000B3B120001302120093022000A8 -:10041000E31252FE930E1000130EC0016394D11725 -:10042000130200001301D00093001001B3B12000AB -:100430001302120093022000E31652FE930E0000F6 -:10044000130ED0016390D115130200001301D000E8 -:100450009300800013000000B3B1200013021200CB -:1004600093022000E31452FE930E1000130EE001DD -:10047000639AD111130200001301D00093002001F0 -:100480001300000013000000B3B12000130212009B -:1004900093022000E31252FE930E0000130EF001AF -:1004A0006392D10F130200001301D000130000006B -:1004B00093007000B3B120001302120093022000D9 -:1004C000E31452FE930E1000130E0002639CD10B36 -:1004D000130200001301D00013000000930030014C -:1004E00013000000B3B12000130212009302200099 -:1004F000E31252FE930E0000130E10026394D10912 -:10050000130200001301D0001300000013000000CC -:1005100093006000B3B12000130212009302200088 -:10052000E31252FE930E1000130E2002639CD105BD -:100530009300F0FF33311000930E1000130E3002C1 -:100540006312D1059300F0FF33B10000930E000059 -:10055000130E40026318D103B3300000930E000065 -:10056000130E50026390D003930000011301E001C9 -:1005700033B02000930E0000130E60026314D0010C -:10058000631CC0010F00F00F63000E00131E1E005D -:10059000136E1E00730000000F00F00F130E10000A -:1005A00073000000731000C0000000000000000095 -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930000001301000033B72000930E00009D +:1001100093012000631AD74B9300100013011000C5 +:1001200033B72000930E000093013000631ED749BF +:10013000930030001301700033B72000930E1000BD +:10014000930140006312D7499300700013013000FF +:1001500033B72000930E0000930150006316D74779 +:10016000930000003781FFFF33B72000930E10008B +:1001700093016000631AD745B700008013010000A7 +:1001800033B72000930E000093017000631ED74325 +:10019000B70000803781FFFF33B72000930E1000B7 +:1001A000930180006312D743930000003781000061 +:1001B0001301F1FF33B72000930E1000930190005C +:1001C0006314D741B70000809380F0FF1301000053 +:1001D00033B72000930E00009301A0006316D73FB1 +:1001E000B70000809380F0FF378100001301F1FF1A +:1001F00033B72000930E00009301B0006316D73D83 +:10020000B7000080378100001301F1FF33B72000F1 +:10021000930E00009301C0006318D73BB700008025 +:100220009380F0FF3781FFFF33B72000930E10005B +:100230009301D000631AD739930000001301F0FF37 +:1002400033B72000930E10009301E000631ED737F0 +:100250009300F0FF1301100033B72000930E00004D +:100260009301F0006312D7379300F0FF1301F0FF02 +:1002700033B72000930E0000930100016316D735B9 +:100280009300E0001301D000B3B02000930E0000F3 +:1002900093011001639AD0339300B0001301D00092 +:1002A00033B12000930E100093012001631ED13161 +:1002B0009300D000B3B01000930E00009301300102 +:1002C0006394D031130200009300B0001301D000FA +:1002D00033B720001303070013021200930220001B +:1002E000E31452FE930E100093014001631ED32DC0 +:1002F000130200009300E0001301D00033B7200088 +:1003000013000000130307001302120093022000E1 +:10031000E31252FE930E0000930150016316D32B9B +:10032000130200009300C0001301D00033B7200077 +:100330001300000013000000130307001302120053 +:1003400093022000E31052FE930E1000930160010F +:10035000631CD327130200009300E0001301D000B8 +:1003600033B720001302120093022000E31652FE5E +:10037000930E0000930170016318D725130200004B +:100380009300B0001301D0001300000033B7200029 +:100390001302120093022000E31452FE930E100089 +:1003A000930180016312D723130200009300F00031 +:1003B0001301D000130000001300000033B7200029 +:1003C0001302120093022000E31252FE930E00006B +:1003D00093019001631AD71F130200009300A0003D +:1003E000130000001301D00033B7200013021200E5 +:1003F00093022000E31452FE930E10009301A0011B +:100400006314D71D130200009300000113000000C5 +:100410001301D0001300000033B7200013021200B4 +:1004200093022000E31252FE930E00009301B001EC +:10043000631CD71913020000930090001300000002 +:10044000130000001301D00033B720001302120084 +:1004500093022000E31252FE930E10009301C0019C +:100460006314D717130200001301D000930010018A +:1004700033B720001302120093022000E31652FE4D +:10048000930E00009301D0016310D71513020000F2 +:100490001301D000930080001300000033B7200048 +:1004A0001302120093022000E31452FE930E100078 +:1004B0009301E001631AD711130200001301D00069 +:1004C00093002001130000001300000033B7200048 +:1004D0001302120093022000E31252FE930E00005A +:1004E0009301F0016312D70F130200001301D00033 +:1004F000130000009300700033B7200013021200B5 +:1005000093022000E31452FE930E100093010002A8 +:10051000631CD70B130200001301D000130000006E +:10052000930030011300000033B7200013021200C3 +:1005300093022000E31252FE930E0000930110027A +:100540006314D709130200001301D0001300000048 +:10055000130000009300600033B720001302120064 +:1005600093022000E31252FE930E1000930120022A +:10057000631CD7059300F0FF33311000930E100079 +:10058000930130026312D1059300F0FF33B10000F4 +:10059000930E0000930140026318D103B3300000B2 +:1005A000930E0000930150026390D003930000016A +:1005B0001301E00133B02000930E000093016002AC +:1005C0006314D001631030020F00F00F638001004C +:1005D0009391110093E111009308D0051385010058 +:1005E000730000000F00F00F930110009308D00576 +:0C05F0001305000073000000731000C031 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sra.hex b/benchmarks/riscv_tests/rv32ui-p-sra.hex index ac2ca2bb..e48caba8 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sra.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sra.hex @@ -1,113 +1,120 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B700008034 -:1000C00013010000B3D12040B70E0080130E2000B2 -:1000D0006394D159B700008013011000B3D12040C0 -:1000E000B70E00C0130E30006398D157B7000080E0 -:1000F00013017000B3D12040B70E00FF130E400073 -:10010000639CD155B70000801301E000B3D12040BB -:10011000B70EFEFF130E50006390D155B70000805C -:10012000938010001301F001B3D12040930EF0FF33 -:10013000130E60006392D153B70000809380F0FFEC -:1001400013010000B3D12040B70E0080938EFEFF54 -:10015000130E70006392D151B70000809380F0FFBE -:1001600013011000B3D12040B70E0040938EFEFF64 -:10017000130E80006392D14FB70000809380F0FF90 -:1001800013017000B3D12040B70E0001938EFEFF23 -:10019000130E90006392D14DB70000809380F0FF62 -:1001A0001301E000B3D12040B70E0200938EFEFF92 -:1001B000130EA0006392D14BB70000809380F0FF34 -:1001C0001301F001B3D12040930E0000130EB000D4 -:1001D0006394D149B7808181938010181301000086 -:1001E000B3D12040B78E8181938E1E18130EC000AC -:1001F0006394D147B7808181938010181301100058 -:10020000B3D12040B7CEC0C0938E0E0C130ED000D9 -:100210006394D145B78081819380101813017000D9 -:10022000B3D12040B70E03FF938E3E30130EE00093 -:100230006394D143B7808181938010181301E0004B -:10024000B3D12040B70EFEFF938E6E60130EF00008 -:100250006394D141B7808181938010181301F0011C -:10026000B3D12040930EF0FF130E00016396D13FEF -:10027000B780818193801018130100FCB3D1204016 -:10028000B78E8181938E1E18130E10016396D13D97 -:10029000B780818193801018130110FCB3D12040E6 -:1002A000B7CEC0C0938E0E0C130E20016396D13BC7 -:1002B000B780818193801018130170FCB3D1204066 -:1002C000B70E03FF938E3E30130E30016396D13983 -:1002D000B7808181938010181301E0FCB3D12040D6 -:1002E000B70EFEFF938E6E60130E40016396D137FA -:1002F000B7808181938010181301F0FFB3D12040A3 -:10030000930EF0FF130E50016398D135B7000080B3 -:1003100013017000B3D02040B70E00FF130E600130 -:10032000639CD033B70000801301E00033D120403C -:10033000B70EFEFF130E70016310D13393007000EF -:10034000B3D01040930E0000130E80016396D0319D -:1003500013020000B700008013017000B3D12040E9 -:10036000138301001302120093022000E31452FED3 -:10037000B70E00FF130E90016310D32F130200007D -:10038000B70000801301E000B3D12040130000004B -:10039000138301001302120093022000E31252FEA5 -:1003A000B70EFEFF130EA0016318D32B130200003B -:1003B000B70000801301F001B3D12040130000000A -:1003C00013000000138301001302120093022000A7 -:1003D000E31052FE930EF0FF130EB001631ED327FD -:1003E00013020000B700008013017000B3D1204059 -:1003F0001302120093022000E31652FEB70E00FF14 -:10040000130EC001639AD12513020000B7000080CB -:100410001301E00013000000B3D1204013021200CA -:1004200093022000E31452FEB70EFEFF130ED0011C -:100430006394D12313020000B70000801301F00180 -:100440001300000013000000B3D12040130212007B -:1004500093022000E31252FE930EF0FF130EE00110 -:10046000639CD11F13020000B7000080130000003E -:1004700013017000B3D12040130212009302200038 -:10048000E31452FEB70E00FF130EF0016396D11D68 -:1004900013020000B7000080130000001301E00009 -:1004A00013000000B3D12040130212009302200079 -:1004B000E31252FEB70EFEFF130E0002639ED11927 -:1004C00013020000B70000801300000013000000BA -:1004D0001301F001B3D12040130212009302200057 -:1004E000E31252FE930EF0FF130E10026396D11723 -:1004F0001302000013017000B7000080B3D1204048 -:100500001302120093022000E31652FEB70E00FF02 -:10051000130E20026392D115130200001301E000B4 -:10052000B700008013000000B3D120401302120076 -:1005300093022000E31452FEB70EFEFF130E3002AA -:10054000639CD111130200001301F001B700008079 -:100550001300000013000000B3D12040130212006A -:1005600093022000E31252FE930EF0FF130E40029E -:100570006394D10F130200001301700013000000F8 -:10058000B7000080B3D12040130212009302200074 -:10059000E31452FEB70E00FF130E5002639ED10B00 -:1005A000130200001301E00013000000B7000080F8 -:1005B00013000000B3D12040130212009302200068 -:1005C000E31252FEB70EFEFF130E60026396D109CE -:1005D000130200001301F0011300000013000000DB -:1005E000B7000080B3D12040130212009302200014 -:1005F000E31252FE930EF0FF130E7002639ED105BC -:100600009300F00033511040930E0000130E80024F -:100610006314D1059300000233D10040930E000211 -:10062000130E9002631AD103B3500040930E0000E2 -:10063000130EA0026392D003930000403711000014 -:100640001301018033D02040930E0000130EB0023E -:100650006314D001631CC0010F00F00F63000E0093 -:10066000131E1E00136E1E00730000000F00F00F1B -:10067000130E100073000000731000C00000000093 -:040680000000000076 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B70000801301000033D72040B70E0080F5 +:10011000930120006314D759B70000801301100029 +:1001200033D72040B70E00C0930130006318D75773 +:10013000B70000801301700033D72040B70E00FFD6 +:1001400093014000631CD755B70000801301E00005 +:1001500033D72040B70EFEFF930150006310D755F0 +:10016000B7000080938010001301F00133D72040C6 +:10017000930EF0FF930160006312D753B700008025 +:100180009380F0FF1301000033D72040B70E0080AA +:10019000938EFEFF930170006312D751B700008069 +:1001A0009380F0FF1301100033D72040B70E0040BA +:1001B000938EFEFF930180006312D74FB70000803B +:1001C0009380F0FF1301700033D72040B70E000179 +:1001D000938EFEFF930190006312D74DB70000800D +:1001E0009380F0FF1301E00033D72040B70E0200E8 +:1001F000938EFEFF9301A0006312D74BB7000080DF +:100200009380F0FF1301F00133D72040930E0000DC +:100210009301B0006314D749B7808181938010188F +:100220001301000033D72040B78E8181938E1E18B2 +:100230009301C0006314D747B78081819380101861 +:100240001301100033D72040B7CEC0C0938E0E0CE0 +:100250009301D0006314D745B78081819380101833 +:100260001301700033D72040B70E03FF938E3E304A +:100270009301E0006314D743B78081819380101805 +:100280001301E00033D72040B70EFEFF938E6E605F +:100290009301F0006314D741B780818193801018D7 +:1002A0001301F00133D72040930EF0FF93010001BA +:1002B0006316D73FB780818193801018130100FC2B +:1002C00033D72040B78E8181938E1E189301100181 +:1002D0006316D73DB780818193801018130110FCFD +:1002E00033D72040B7CEC0C0938E0E0C93012001AF +:1002F0006316D73BB780818193801018130170FC7F +:1003000033D72040B70E03FF938E3E309301300168 +:100310006316D739B7808181938010181301E0FCF0 +:1003200033D72040B70EFEFF938E6E6093014001DD +:100330006316D737B7808181938010181301F0FFBF +:1003400033D72040930EF0FF930150016318D73547 +:10035000B700008013017000B3D02040B70E00FF3B +:1003600093016001639CD033B70000801301E0006B +:1003700033D12040B70EFEFF930170016310D133DB +:1003800093007000B3D01040930E000093018001E1 +:100390006396D03113020000B70000801301700093 +:1003A00033D72040130307001302120093022000EA +:1003B000E31452FEB70E00FF930190016310D32F98 +:1003C00013020000B70000801301E00033D7204083 +:1003D0001300000013030700130212009302200011 +:1003E000E31252FEB70EFEFF9301A0016318D32B58 +:1003F00013020000B70000801301F00133D7204042 +:100400001300000013000000130307001302120082 +:1004100093022000E31052FE930EF0FF9301B0010F +:10042000631ED32713020000B70000801301700081 +:1004300033D720401302120093022000E31652FE2D +:10044000B70E00FF9301C001631AD7251302000005 +:10045000B70000801301E0001300000033D72040F4 +:100460001302120093022000E31452FEB70EFEFFA7 +:100470009301D0016314D72313020000B70000805A +:100480001301F001130000001300000033D72040D7 +:100490001302120093022000E31252FE930EF0FFAB +:1004A0009301E001631CD71F13020000B700008016 +:1004B000130000001301700033D720401302120014 +:1004C00093022000E31452FEB70E00FF9301F001E7 +:1004D0006316D71D13020000B70000801300000050 +:1004E0001301E0001300000033D720401302120074 +:1004F00093022000E31252FEB70EFEFF93010002AA +:10050000631ED71913020000B7000080130000001B +:10051000130000001301F00133D720401302120032 +:1005200093022000E31252FE930EF0FF930110029B +:100530006316D7171302000013017000B700008084 +:1005400033D720401302120093022000E31652FE1C +:10055000B70E00FF930120026312D71513020000AB +:100560001301E000B70000801300000033D72040E3 +:100570001302120093022000E31452FEB70EFEFF96 +:1005800093013002631CD711130200001301F00124 +:10059000B7000080130000001300000033D7204094 +:1005A0001302120093022000E31252FE930EF0FF9A +:1005B000930140026314D70F13020000130170006F +:1005C00013000000B700008033D720401302120050 +:1005D00093022000E31452FEB70E00FF9301500275 +:1005E000631ED70B130200001301E000130000008C +:1005F000B70000801300000033D720401302120020 +:1006000093022000E31252FEB70EFEFF9301600238 +:100610006316D709130200001301F0011300000054 +:1006200013000000B700008033D7204013021200EF +:1006300093022000E31252FE930EF0FF930170022A +:10064000631ED7059300F00033511040930E000055 +:10065000930180026314D1059300000233D100405E +:10066000930E000293019002631AD103B35000402D +:10067000930E00009301A0026392D0039300004008 +:10068000371100001301018033D02040930E000089 +:100690009301B0026314D001631030020F00F00F19 +:1006A000638001009391110093E111009308D0053C +:1006B00013850100730000000F00F00F930110007C +:1006C0009308D0051305000073000000731000C0EC +:1006D000000000000000000000000000000000001A +:1006E000000000000000000000000000000000000A +:0C06F000000000000000000000000000FE :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-srai.hex b/benchmarks/riscv_tests/rv32ui-p-srai.hex index 6f388a08..b9b40829 100644 --- a/benchmarks/riscv_tests/rv32ui-p-srai.hex +++ b/benchmarks/riscv_tests/rv32ui-p-srai.hex @@ -1,69 +1,72 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00093D10040930E0000130E20006394D12BB7 -:1000D000B700008093D11040B70E00C0130E30005F -:1000E000639AD129B700008093D17040B70E00FF0A -:1000F000130E40006390D129B700008093D1E040F7 -:10010000B70EFEFF130E50006396D127B700008094 -:100110009380100093D1F041930EF0FF130E600016 -:10012000639AD125B70000809380F0FF93D10040FF -:10013000B70E0080938EFEFF130E7000639CD123D8 -:10014000B70000809380F0FF93D11040B70E0040BD -:10015000938EFEFF130E8000639ED121B7000080B6 -:100160009380F0FF93D17040B70E0001938EFEFF95 -:10017000130E90006390D121B70000809380F0FFB0 -:1001800093D1E040B70E0200938EFEFF130EA00045 -:100190006392D11FB70000809380F0FF93D1F041AC -:1001A000930E0000130EB0006396D11DB7808181BD -:1001B0009380101893D10040B78E8181938E1E18C2 -:1001C000130EC0006398D11BB780818193801018F3 -:1001D00093D11040B7CEC0C0938E0E0C130ED0003A -:1001E000639AD119B78081819380101893D17040A0 -:1001F000B70E03FF938E3E30130EE000639CD117C1 -:10020000B78081819380101893D1E040B70EFEFF34 -:10021000938E6E60130EF000639ED115B7808181BE -:100220009380101893D1F041930EF0FF130E00014C -:100230006392D115B700008093D07040B70E00FFD5 -:10024000130E10016398D01313020000B700008052 -:1002500093D1704013830100130212009302200017 -:10026000E31652FEB70E00FF130E20016314D311E4 -:1002700013020000B700008093D1E040130000009B -:10028000138301001302120093022000E31452FEB4 -:10029000B70EFEFF130E3001631ED30D13020000D4 -:1002A000B70000809380100093D1F041130000004C -:1002B00013000000138301001302120093022000B8 -:1002C000E31052FE930EF0FF130E40016314D30BA4 -:1002D00013020000B700008093D170401302120097 -:1002E00093022000E31852FEB70E00FF130E5001D8 -:1002F0006392D10913020000B700008013000000D0 -:1003000093D1E0401302120093022000E31652FE44 -:10031000B70EFEFF130E6001639ED10513020000AD -:10032000B70000809380100013000000130000004D -:1003300093D1F0411302120093022000E31252FE07 -:10034000930EF0FF130E70016396D103935040405B -:10035000930E0000130E8001639ED00193001002E3 -:1003600013D0A040930E0000130E90016314D0012F -:10037000631CC0010F00F00F63000E00131E1E006F -:10038000136E1E00730000000F00F00F130E10001C -:1003900073000000731000C00000000000000000A7 -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:0403C0000000000039 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:100100009300000013D70040930E000093012000DD +:100110006314D72BB700008013D71040B70E00C070 +:1001200093013000631AD729B700008013D77040BD +:10013000B70E00FF930140006310D729B70000807D +:1001400013D7E040B70EFEFF930150006316D72788 +:10015000B70000809380100013D7F041930EF0FF9A +:1001600093016000631AD725B70000809380F0FFE9 +:1001700013D70040B70E0080938EFEFF93017000EE +:10018000631CD723B70000809380F0FF13D7104083 +:10019000B70E0040938EFEFF93018000631ED721AF +:1001A000B70000809380F0FF13D77040B70E0001B6 +:1001B000938EFEFF930190006310D721B70000805B +:1001C0009380F0FF13D7E040B70E0200938EFEFF3E +:1001D0009301A0006312D71FB70000809380F0FF47 +:1001E00013D7F041930E00009301B0006316D71DA2 +:1001F000B78081819380101813D70040B78E81811A +:10020000938E1E189301C0006318D71BB78081819D +:100210009380101813D71040B7CEC0C0938E0E0C29 +:100220009301D000631AD719B78081819380101889 +:1002300013D77040B70E03FF938E3E309301E0005A +:10024000631CD717B78081819380101813D7E040C3 +:10025000B70EFEFF938E6E609301F000631ED715FC +:10026000B78081819380101813D7F041930EF0FF6F +:10027000930100016312D715B700008093D070403E +:10028000B70E00FF930110016398D0131302000012 +:10029000B700008013D77040130307001302120049 +:1002A00093022000E31652FEB70E00FF93012001D7 +:1002B0006314D31113020000B700008013D7E0408D +:1002C0001300000013030700130212009302200022 +:1002D000E31452FEB70EFEFF93013001631ED30DEF +:1002E00013020000B70000809380100013D7F04184 +:1002F0001300000013000000130307001302120094 +:1003000093022000E31052FE930EF0FF9301400190 +:100310006314D30B13020000B700008013D77040A2 +:100320001302120093022000E31852FEB70E00FFE2 +:10033000930150016312D70913020000B700008037 +:100340001300000013D7E0401302120093022000B4 +:10035000E31652FEB70EFEFF93016001631ED70540 +:1003600013020000B700008093801000130000000B +:100370001300000013D7F041130212009302200073 +:10038000E31252FE930EF0FF930170016316D70340 +:1003900093504040930E000093018001639ED00172 +:1003A0009300100213D0A040930E0000930190011F +:1003B0006314D001631030020F00F00F638001005E +:1003C0009391110093E111009308D005138501006A +:1003D000730000000F00F00F930110009308D00588 +:1003E0001305000073000000731000C0000000003F +:0C03F00000000000000000000000000001 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-srl.hex b/benchmarks/riscv_tests/rv32ui-p-srl.hex index 8f09b9ec..0b27bb6b 100644 --- a/benchmarks/riscv_tests/rv32ui-p-srl.hex +++ b/benchmarks/riscv_tests/rv32ui-p-srl.hex @@ -1,113 +1,116 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B700008034 -:1000C00013010000B3D12000B70E0080130E2000F2 -:1000D0006398D157B700008013011000B3D12000FE -:1000E000B70E0040130E3000639CD155B70000805E -:1000F00013017000B3D12000B70E0001130E4000B1 -:100100006390D155B70000801301E000B3D1200007 -:10011000B70E0200130E50006394D153B700008055 -:10012000938010001301F001B3D12000930E100052 -:10013000130E60006396D1519300F0FF130100008D -:10014000B3D12000930EF0FF130E7000639AD14FCD -:100150009300F0FF13011000B3D12000B70E008010 -:10016000938EFEFF130E8000639CD14D9300F0FF31 -:1001700013017000B3D12000B70E0002938EFEFF72 -:10018000130E9000639ED14B9300F0FF1301E0002B -:10019000B3D12000B70E0400938EFEFF130EA00013 -:1001A0006390D14B9300F0FF1301F001B3D1200015 -:1001B000930E1000130EB0006394D149B720212193 -:1001C0009380101213010000B3D12000B72E21211B -:1001D000938E1E12130EC0006394D147B7202121C5 -:1001E0009380101213011000B3D12000B79E90101D -:1001F000938E0E09130ED0006394D145B7202121B0 -:100200009380101213017000B3D12000B74E42004A -:10021000938E2E24130EE0006394D143B720212146 -:10022000938010121301E000B3D12000B78E0000BC -:10023000938E4E48130EF0006394D141B7202121D4 -:10024000938010121301F001B3D12000930E00002F -:10025000130E00016396D13FB72021219380101225 -:10026000130100FCB3D12000B72E2121938E1E1262 -:10027000130E10016396D13DB720212193801012F7 -:10028000130110FCB3D12000B79E9010938E0E097D -:10029000130E20016396D13BB720212193801012C9 -:1002A000130170FCB3D12000B74E4200938E2E2470 -:1002B000130E30016396D139B7202121938010129B -:1002C0001301E0FCB3D12000B78E0000938E4E489E -:1002D000130E40016396D137B7202121938010126D -:1002E0001301F0FFB3D12000930E0000130E500154 -:1002F0006398D135B700008013017000B3D020009F -:10030000B70E0001130E6001639CD033B70000806C -:100310001301E00033D12000B70E0200130E70016C -:100320006310D13393007000B3D01000930E00001F -:10033000130E80016396D03113020000B7000080D5 -:1003400013017000B3D120001383010013021200C7 -:1003500093022000E31452FEB70E0001130E900129 -:100360006310D32F13020000B70000801301E000D8 -:10037000B3D1200013000000138301001302120008 -:1003800093022000E31252FEB70E0200130EA001EA -:100390006318D32B13020000B70000801301F00193 -:1003A000B3D12000130000001300000013830100EC -:1003B0001302120093022000E31052FE930E10006D -:1003C000130EB001631ED32713020000B700008094 -:1003D00013017000B3D12000130212009302200019 -:1003E000E31652FEB70E0001130EC001639AD12529 -:1003F00013020000B70000801301E00013000000AA -:10040000B3D120001302120093022000E31452FE25 -:10041000B70E0200130ED0016394D1231302000023 -:10042000B70000801301F00113000000130000006A -:10043000B3D120001302120093022000E31252FEF7 -:10044000930E1000130EE001639CD11F13020000F5 -:10045000B70000801300000013017000B3D120002A -:100460001302120093022000E31452FEB70E0001A3 -:10047000130EF0016396D11D13020000B700008037 -:10048000130000001301E00013000000B3D12000AE -:100490001302120093022000E31252FEB70E020074 -:1004A000130E0002639ED11913020000B7000080F2 -:1004B00013000000130000001301F001B3D120006D -:1004C0001302120093022000E31252FE930E10005A -:1004D000130E10026396D11713020000130170006F -:1004E000B7000080B3D12000130212009302200055 -:1004F000E31652FEB70E0001130E20026392D115CF -:10050000130200001301E000B70000801300000098 -:10051000B3D120001302120093022000E31452FE14 -:10052000B70E0200130E3002639CD11113020000BB -:100530001301F001B7000080130000001300000059 -:10054000B3D120001302120093022000E31252FEE6 -:10055000930E1000130E40026394D10F130200009B -:100560001301700013000000B7000080B3D1200019 -:100570001302120093022000E31452FEB70E000192 -:10058000130E5002639ED10B130200001301E00012 -:1005900013000000B700008013000000B3D120005A -:1005A0001302120093022000E31252FEB70E020063 -:1005B000130E60026396D109130200001301F001CB -:1005C0001300000013000000B7000080B3D120002A -:1005D0001302120093022000E31252FE930E100049 -:1005E000130E7002639ED1059300F000335110008A -:1005F000930E0000130E80026314D10593000002D5 -:1006000033D10000930E0002130E9002631AD1033F -:10061000B3500000930E0000130EA0026392D003AB -:1006200093000040371100001301018033D02000F7 -:10063000930E0000130EB0026314D001631CC001BE -:100640000F00F00F63000E00131E1E00136E1E003D -:10065000730000000F00F00F130E10007300000075 -:10066000731000C000000000000000000000000047 -:10067000000000000000000000000000000000007A -:040680000000000076 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B70000801301000033D72000B70E008035 +:10011000930120006318D757B70000801301100027 +:1001200033D72000B70E004093013000631CD75531 +:10013000B70000801301700033D72000B70E000114 +:10014000930140006310D755B70000801301E00011 +:1001500033D72000B70E0200930150006314D75329 +:10016000B7000080938010001301F00133D7200006 +:10017000930E1000930160006316D7519300F0FFB7 +:100180001301000033D72000930EF0FF930170009D +:10019000631AD74F9300F0FF1301100033D72000EC +:1001A000B70E0080938EFEFF93018000631CD74D35 +:1001B0009300F0FF1301700033D72000B70E000248 +:1001C000938EFEFF93019000631ED74B9300F0FFC8 +:1001D0001301E00033D72000B70E0400938EFEFF1A +:1001E0009301A0006310D74B9300F0FF1301F001BF +:1001F00033D72000930E10009301B0006314D74949 +:10020000B7202121938010121301000033D7200062 +:10021000B72E2121938E1E129301C0006314D7477D +:10022000B7202121938010121301100033D7200032 +:10023000B79E9010938E0E099301D0006314D7459A +:10024000B7202121938010121301700033D72000B2 +:10025000B74E4200938E2E249301E0006314D743DF +:10026000B7202121938010121301E00033D7200022 +:10027000B78E0000938E4E489301F0006314D7416F +:10028000B7202121938010121301F00133D72000F1 +:10029000930E0000930100016316D73FB720212180 +:1002A00093801012130100FC33D72000B72E2121B8 +:1002B000938E1E12930110016316D73DB7202121A2 +:1002C00093801012130110FC33D72000B79E9010BA +:1002D000938E0E09930120016316D73BB72021218D +:1002E00093801012130170FC33D72000B74E4200E8 +:1002F000938E2E24930130016316D739B720212124 +:10030000938010121301E0FC33D72000B78E000059 +:10031000938E4E48930140016316D737B7202121B1 +:10032000938010121301F0FF33D72000930E0000CA +:10033000930150016318D735B70000801301700096 +:10034000B3D02000B70E000193016001639CD0334D +:10035000B70000801301E00033D12000B70E020087 +:10036000930170016310D13393007000B3D010007B +:10037000930E0000930180016396D03113020000B8 +:10038000B70000801301700033D72000130307006B +:100390001302120093022000E31452FEB70E000174 +:1003A000930190016310D32F13020000B700008067 +:1003B0001301E00033D720001300000013030700EF +:1003C0001302120093022000E31252FEB70E020045 +:1003D0009301A0016318D32B13020000B700008023 +:1003E0001301F00133D720001300000013000000B8 +:1003F000130307001302120093022000E31052FEC1 +:10040000930E10009301B001631ED3271302000066 +:10041000B70000801301700033D7200013021200D0 +:1004200093022000E31652FEB70E00019301C001B3 +:10043000631AD72513020000B70000801301E00003 +:100440001300000033D72000130212009302200093 +:10045000E31452FEB70E02009301D0016314D723B8 +:1004600013020000B70000801301F0011300000028 +:100470001300000033D72000130212009302200063 +:10048000E31252FE930E10009301E001631CD71F8C +:1004900013020000B7000080130000001301700079 +:1004A00033D720001302120093022000E31452FEFF +:1004B000B70E00019301F0016316D71D130200006F +:1004C000B7000080130000001301E00013000000DB +:1004D00033D720001302120093022000E31252FED1 +:1004E000B70E020093010002631ED7191302000029 +:1004F000B700008013000000130000001301F0019A +:1005000033D720001302120093022000E31252FEA0 +:10051000930E1000930110026316D7171302000008 +:1005200013017000B700008033D7200013021200BF +:1005300093022000E31652FEB70E00019301200241 +:100540006312D715130200001301E000B70000800A +:100550001300000033D72000130212009302200082 +:10056000E31452FEB70E020093013002631CD71150 +:10057000130200001301F001B70000801300000017 +:100580001300000033D72000130212009302200052 +:10059000E31252FE930E1000930140026314D70F32 +:1005A000130200001301700013000000B700008068 +:1005B00033D720001302120093022000E31452FEEE +:1005C000B70E000193015002631ED70B1302000007 +:1005D0001301E00013000000B700008013000000CA +:1005E00033D720001302120093022000E31252FEC0 +:1005F000B70E0200930160026316D70913020000D0 +:100600001301F0011300000013000000B700008088 +:1006100033D720001302120093022000E31252FE8F +:10062000930E100093017002631ED7059300F00033 +:1006300033511000930E0000930180026314D10522 +:100640009300000233D10000930E00029301900248 +:10065000631AD103B3500000930E00009301A0026F +:100660006392D00393000040371100001301018012 +:1006700033D02000930E00009301B0026314D00128 +:10068000631030020F00F00F63800100939111009E +:1006900093E111009308D005138501007300000059 +:1006A0000F00F00F930110009308D0051305000010 +:0C06B00073000000731000C00000000088 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-srli.hex b/benchmarks/riscv_tests/rv32ui-p-srli.hex index b36084e3..01f21e63 100644 --- a/benchmarks/riscv_tests/rv32ui-p-srli.hex +++ b/benchmarks/riscv_tests/rv32ui-p-srli.hex @@ -1,65 +1,72 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B700008034 -:1000C00093D10000B70E0080130E20006398D12951 -:1000D000B700008093D11000B70E0040130E30001F -:1000E000639ED127B700008093D17000B70E000146 -:1000F000130E40006394D127B700008093D1E00035 -:10010000B70E0200130E5000639AD125B70000808D -:100110009380100093D1F001930E1000130E600035 -:10012000639ED1239300F0FF93D10000930EF0FF64 -:10013000130E70006394D1239300F0FF93D110004D -:10014000B70E0080938EFEFF130E80006398D121BE -:100150009300F0FF93D17000B70E0002938EFEFF64 -:10016000130E9000639CD11F9300F0FF93D1E00029 -:10017000B70E0400938EFEFF130EA0006390D11FF4 -:100180009300F0FF93D1F001930E1000130EB00016 -:100190006396D11DB72021219380101293D10000C6 -:1001A000B72E2121938E1E12130EC0006398D11B0F -:1001B000B72021219380101293D11000B79E901088 -:1001C000938E0E09130ED000639AD119B720212106 -:1001D0009380101293D17000B74E4200938E2E245C -:1001E000130EE000639CD117B720212193801012D9 -:1001F00093D1E000B78E0000938E4E48130EF000AE -:10020000639ED115B72021219380101293D1F00164 -:10021000930E0000130E00016392D115B700008009 -:1002200093D07000B70E0001130E10016398D01325 -:1002300013020000B700008093D170001383010007 -:100240001302120093022000E31652FEB70E0001C3 -:10025000130E20016314D31113020000B7000080B5 -:1002600093D1E00013000000138301001302120079 -:1002700093022000E31452FEB70E0200130E300169 -:10028000631ED30D13020000B7000080938010009E -:1002900093D1F0011300000013000000138301004C -:1002A0001302120093022000E31052FE930E10007E -:1002B000130E40016314D30B13020000B70000803B -:1002C00093D170001302120093022000E31852FE33 -:1002D000B70E0001130E50016392D1091302000002 -:1002E000B70000801300000093D1E0001302120059 -:1002F00093022000E31652FEB70E0200130E6001B7 -:10030000639ED10513020000B700008093801000A7 -:10031000130000001300000093D1F001130212003B -:1003200093022000E31252FE930E1000130E700190 -:100330006396D10393504000930E0000130E80018A -:10034000639ED0019300100213D0A000930E000012 -:10035000130E90016314D001631CC0010F00F00F55 -:1003600063000E00131E1E00136E1E0073000000BB -:100370000F00F00F130E100073000000731000C088 -:040380000000000079 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B700008013D70000B70E008093012000D5 +:100110006318D729B700008013D71000B70E00402E +:1001200093013000631ED727B700008013D77000FB +:10013000B70E0001930140006314D727B700008079 +:1001400013D7E000B70E020093015000631AD725C1 +:10015000B70000809380100013D7F001930E1000B9 +:1001600093016000631ED7239300F0FF13D70000B4 +:10017000930EF0FF930170006314D7239300F0FFF8 +:1001800013D71000B70E0080938EFEFF93018000FE +:100190006318D7219300F0FF13D77000B70E000249 +:1001A000938EFEFF93019000631CD71F9300F0FF16 +:1001B00013D7E000B70E0400938EFEFF9301A0005A +:1001C0006310D71F9300F0FF13D7F001930E1000B8 +:1001D0009301B0006316D71DB72021219380101220 +:1001E00013D70000B72E2121938E1E129301C00059 +:1001F0006318D71BB72021219380101213D710004A +:10020000B79E9010938E0E099301D000631AD719F0 +:10021000B72021219380101213D77000B74E4200EF +:10022000938E2E249301E000631CD717B720212161 +:100230009380101213D7E000B78E0000938E4E48C3 +:100240009301F000631ED715B7202121938010126F +:1002500013D7F001930E0000930100016312D7152C +:10026000B700008093D07000B70E00019301100119 +:100270006398D01313020000B700008013D77000FA +:10028000130307001302120093022000E31652FE2C +:10029000B70E0001930120016314D3111302000073 +:1002A000B700008013D7E00013000000130307001D +:1002B0001302120093022000E31452FEB70E020054 +:1002C00093013001631ED30D13020000B7000080BC +:1002D0009380100013D7F0011300000013000000FA +:1002E000130307001302120093022000E31052FED2 +:1002F000930E1000930140016314D30B130200000E +:10030000B700008013D77000130212009302200080 +:10031000E31852FEB70E0001930150016312D70992 +:1003200013020000B70000801300000013D7E000A4 +:100330001302120093022000E31652FEB70E0200D1 +:1003400093016001631ED70513020000B70000800F +:1003500093801000130000001300000013D7F00179 +:100360001302120093022000E31252FE930E1000BB +:10037000930170016316D70393504000930E000061 +:1003800093018001639ED0019300100213D0A0005E +:10039000930E0000930190016314D00163103002AA +:1003A0000F00F00F638001009391110093E11100A1 +:1003B0009308D00513850100730000000F00F00FB3 +:1003C000930110009308D00513050000730000008E +:1003D000731000C0000000000000000000000000DA +:1003E000000000000000000000000000000000000D +:0C03F00000000000000000000000000001 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sub.hex b/benchmarks/riscv_tests/rv32ui-p-sub.hex index aec1f5d4..d6bbc5f7 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sub.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sub.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00013010000B3812040930E0000130E2000A6 -:1000D0006396D14B9300100013011000B3812040B0 -:1000E000930E0000130E3000639AD1499300300044 -:1000F00013017000B3812040930EC0FF130E400027 -:10010000639ED147930000003781FFFFB3812040F9 -:10011000B78E0000130E50006392D147B7000080E5 -:1001200013010000B3812040B70E0080130E600061 -:100130006396D145B70000803781FFFFB38120402F -:10014000B78E0080130E7000639AD14393000000B5 -:10015000378100001301F1FFB3812040B78EFFFF0C -:10016000938E1E00130E8000639AD141B700008069 -:100170009380F0FF13010000B3812040B70E008090 -:10018000938EFEFF130E9000639AD13FB70000805C -:100190009380F0FF378100001301F1FFB38120400D -:1001A000B78EFF7F130EA000639AD13DB700008089 -:1001B000378100001301F1FFB3812040B78EFF7F2C -:1001C000938E1E00130EB000639AD13BB7000080DF -:1001D0009380F0FF3781FFFFB3812040B78E00800E -:1001E000938EFEFF130EC000639AD1399300000076 -:1001F0001301F0FFB3812040930E1000130ED000C6 -:10020000639ED1379300F0FF13011000B3812040AB -:10021000930EE0FF130EE0006392D1379300F0FFDE -:100220001301F0FFB3812040930E0000130EF00085 -:100230006396D1359300D0001301B000B380204005 -:10024000930E2000130E0001639AD0339300E00058 -:100250001301B00033812040930E3000130E1001C3 -:10026000631ED1319300D000B3801040930E000084 -:10027000130E20016394D031130200009300D000CC -:100280001301B000B3812040138301001302120058 -:1002900093022000E31452FE930E2000130E30014F -:1002A000631ED32D130200009300E0001301B00081 -:1002B000B3812040130000001383010013021200D9 -:1002C00093022000E31252FE930E3000130E400101 -:1002D0006316D32B130200009300F0001301B0004B -:1002E000B3812040130000001300000013830100BD -:1002F0001302120093022000E31052FE930E4000FE -:10030000130E5001631CD327130200009300D0008A -:100310001301B000B38120401302120093022000A9 -:10032000E31652FE930E2000130E60016398D12550 -:10033000130200009300E0001301B000130000005E -:10034000B38120401302120093022000E31452FEF6 -:10035000930E3000130E70016392D123130200003C -:100360009300F0001301B000130000001300000020 -:10037000B38120401302120093022000E31252FEC8 -:10038000930E4000130E8001639AD11F13020000E8 -:100390009300D000130000001301B000B38120408F -:1003A0001302120093022000E31452FE930E200069 -:1003B000130E90016394D11D130200009300E0001E -:1003C000130000001301B00013000000B3812040AF -:1003D0001302120093022000E31252FE930E30002B -:1003E000130EA001639CD119130200009300F000CA -:1003F00013000000130000001301B000B38120407F -:100400001302120093022000E31252FE930E4000EA -:10041000130EB0016394D117130200001301B00052 -:100420009300D000B38120401302120093022000F9 -:10043000E31652FE930E2000130EC0016390D115F7 -:10044000130200001301B0009300E000130000004D -:10045000B38120401302120093022000E31452FEE5 -:10046000930E3000130ED001639AD11113020000D5 -:100470001301B0009300F00013000000130000000F -:10048000B38120401302120093022000E31252FEB7 -:10049000930E4000130EE0016392D10F130200008F -:1004A0001301B000130000009300D000B38120407E -:1004B0001302120093022000E31452FE930E200058 -:1004C000130EF001639CD10B130200001301B00066 -:1004D000130000009300E00013000000B3812040EF -:1004E0001302120093022000E31252FE930E30001A -:1004F000130E00026394D109130200001301B0002F -:1005000013000000130000009300F000B3812040AE -:100510001302120093022000E31252FE930E4000D9 -:10052000130E1002639CD105930010FF330110409D -:10053000930EF000130E20026312D1059300000207 -:1005400033810040930E0002130E30026318D10372 -:10055000B3000040930E0000130E40026390D003DE -:10056000930000011301E00133802040930E00004E -:10057000130E50026314D001631CC0010F00F00F72 -:1005800063000E00131E1E00136E1E007300000099 -:100590000F00F00F130E100073000000731000C066 -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930000001301000033872040930E00008D +:10011000930120006316D74B9300100013011000C9 +:1001200033872040930E000093013000631AD749B3 +:10013000930030001301700033872040930EC0FFFE +:1001400093014000631ED747930000003781FFFFF3 +:1001500033872040B78E0000930150006312D747C9 +:10016000B70000801301000033872040B70E0080E5 +:10017000930160006316D745B70000803781FFFF09 +:1001800033872040B78E008093017000631AD743F5 +:1001900093000000378100001301F1FF33872040F6 +:1001A000B78EFFFF938E1E0093018000631AD74124 +:1001B000B70000809380F0FF1301000033872040D8 +:1001C000B70E0080938EFEFF93019000631AD73F15 +:1001D000B70000809380F0FF378100001301F1FF2A +:1001E00033872040B78EFF7F9301A000631AD73D6D +:1001F000B7000080378100001301F1FF33872040F2 +:10020000B78EFF7F938E1E009301B000631AD73B19 +:10021000B70000809380F0FF3781FFFF33872040D5 +:10022000B78E0080938EFEFF9301C000631AD7390A +:10023000930000001301F0FF33872040930E10005D +:100240009301D000631ED7379300F0FF1301100015 +:1002500033872040930EE0FF9301E0006312D7370D +:100260009300F0FF1301F0FF33872040930E00004E +:100270009301F0006316D7359300D0001301B0004E +:10028000B3802040930E200093010001639AD03385 +:100290009300E0001301B00033812040930E300042 +:1002A00093011001631ED1319300D000B380104040 +:1002B000930E0000930120016394D03113020000DB +:1002C0009300D0001301B0003387204013030700D0 +:1002D0001302120093022000E31452FE930E20003A +:1002E00093013001631ED32D130200009300E00040 +:1002F0001301B000338720401300000013030700F0 +:100300001302120093022000E31252FE930E3000FB +:10031000930140016316D32B130200009300F000F9 +:100320001301B000338720401300000013000000C9 +:10033000130307001302120093022000E31052FE81 +:10034000930E400093015001631CD3271302000059 +:100350009300D0001301B000338720401302120035 +:1003600093022000E31652FE930E200093016001D9 +:100370006318D725130200009300E0001301B000BA +:100380001300000033872040130212009302200064 +:10039000E31452FE930E3000930170016312D723D1 +:1003A000130200009300F0001301B00013000000DE +:1003B0001300000033872040130212009302200034 +:1003C000E31252FE930E400093018001631AD71F7F +:1003D000130200009300D000130000001301B000CE +:1003E000338720401302120093022000E31452FED0 +:1003F000930E2000930190016314D71D1302000097 +:100400009300E000130000001301B000130000008F +:10041000338720401302120093022000E31252FEA1 +:10042000930E30009301A001631CD7191302000042 +:100430009300F00013000000130000001301B0004F +:10044000338720401302120093022000E31252FE71 +:10045000930E40009301B0016314D71713020000FC +:100460001301B0009300D000338720401302120024 +:1004700093022000E31652FE930E20009301C00168 +:100480006310D715130200001301B0009300E000C1 +:100490001300000033872040130212009302200053 +:1004A000E31452FE930E30009301D001631AD7116A +:1004B000130200001301B0009300F00013000000CD +:1004C0001300000033872040130212009302200023 +:1004D000E31252FE930E40009301E0016312D70F26 +:1004E000130200001301B000130000009300D000BD +:1004F000338720401302120093022000E31452FEBF +:10050000930E20009301F001631CD70B130200002F +:100510001301B000130000009300E000130000007E +:10052000338720401302120093022000E31252FE90 +:10053000930E3000930100026314D70913020000E8 +:100540001301B00013000000130000009300F0003E +:10055000338720401302120093022000E31252FE60 +:10056000930E400093011002631CD705930010FF07 +:1005700033011040930EF000930120026312D10565 +:100580009300000233810040930E00029301300279 +:100590006318D103B3000040930E000093014002A2 +:1005A0006390D003930000011301E00133802040E9 +:1005B000930E0000930150026314D00163103002C7 +:1005C0000F00F00F638001009391110093E111007F +:1005D0009308D00513850100730000000F00F00F91 +:1005E000930110009308D00513050000730000006C +:0C05F000731000C00000000000000000BC :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-sw.hex b/benchmarks/riscv_tests/rv32ui-p-sw.hex index 49c084f7..db4aacdd 100644 --- a/benchmarks/riscv_tests/rv32ui-p-sw.hex +++ b/benchmarks/riscv_tests/rv32ui-p-sw.hex @@ -1,93 +1,96 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203097200000B4 -:1000C000938040F43701AA001301A10A23A0200065 -:1000D00083A10000B70EAA00938EAE0A130E200073 -:1000E0006390D147972000009380C0F137B100AAF8 -:1000F000130101A023A2200083A14000B7BE00AAE3 -:10010000938E0EA0130E3000639CD1439720000005 -:10011000938040EF3711A00A130101AA23A4200005 -:1001200083A18000B71EA00A938E0EAA130E400072 -:100130006398D141972000009380C0EC37A10AA0BA -:100140001301A10023A6200083A1C000B7AE0AA01E -:10015000938EAE00130E50006394D13F97200000A1 -:10016000938000EC3701AA001301A10A23AA20FE04 -:1001700083A140FFB70EAA00938EAE0A130E600053 -:100180006390D13D97200000938080E937B100AAA9 -:10019000130101A023AC20FE83A180FFB7BE00AAFB -:1001A000938E0EA0130E7000639CD139972000002F -:1001B000938000E73711A00A130101AA23AE20FEA5 -:1001C00083A1C0FFB71EA00A938E0EAA130E800053 -:1001D0006398D13797200000938080E437A10AA06C -:1001E0001301A10023A0200083A10000B7AE0AA044 -:1001F000938EAE00130E90006394D13597200000CB -:10020000938040E23751341213018167138200FE5C -:100210002320220283A10000B75E3412938E8E67E2 -:10022000130EA000639ED13197200000938080DFE1 -:1002300037312158130181099380D0FFA3A32000F7 -:1002400017220000130242DE83210200B73E21582C -:10025000938E8E09130EB0006394D12F130EC0003D -:1002600013020000B7D0BBAA9380D0CD17210000A5 -:10027000130141D92320110083210100B7DEBBAA5D -:10028000938EDECD639ED12B1302120093022000C9 -:10029000E31A52FC130ED00013020000B7C0ABDA11 -:1002A0009380D0CC172100001301C1D513000000AA -:1002B0002322110083214100B7CEABDA938EDECC2E -:1002C0006390D1291302120093022000E31852FC1C -:1002D000130EE00013020000B7C0AADD9380C0BC7B -:1002E00017210000130101D21300000013000000C9 -:1002F0002324110083218100B7CEAADD938ECEBCCA -:100300006390D1251302120093022000E31652FCE1 -:10031000130EF00013020000B7B0DACD9380C0BB1B -:1003200013000000172100001301C1CD2326110086 -:100330008321C100B7BEDACD938ECEBB6392D121AB -:100340001302120093022000E31852FC130E000166 -:1003500013020000B7B0DDCC9380B0AB13000000F7 -:1003600017210000130101CA130000002328110007 -:1003700083210101B7BEDDCC938EBEAB6392D11D4C -:100380001302120093022000E31652FC130E100118 -:1003900013020000B7E0CDBC9380B0AA13000000A8 -:1003A00013000000172100001301C1C5232A11000A -:1003B00083214101B7EECDBC938EBEAA6392D119C1 -:1003C0001302120093022000E31652FC130E2001C8 -:1003D00013020000172100001301C1C2B720110051 -:1003E000938030232320110083210100B72E1100B8 -:1003F000938E3E236396D1151302120093022000C0 -:10040000E31A52FC130E3001130200001721000002 -:10041000130141BFB7100130938030221300000058 -:100420002322110083214100B71E0130938E3E220A -:100430006398D1111302120093022000E31852FCBA -:10044000130E40011302000017210000130181BBAD -:10045000B710003393802012130000001300000037 -:100460002324110083218100B71E0033938E2E12A6 -:100470006398D10D1302120093022000E31652FC80 -:10048000130E50011302000017210000130181B761 -:1004900013000000B70030239380201123261100A1 -:1004A0008321C100B70E3023938E2E11639AD10998 -:1004B0001302120093022000E31852FC130E600195 -:1004C00013020000172100001301C1B31300000044 -:1004D000B70033229380100113000000232811007D -:1004E00083210101B70E3322938E1E01639AD10539 -:1004F0001302120093022000E31652FC130E700147 -:1005000013020000172100001301C1AF1300000007 -:1005100013000000B730231293801000232A11002B -:1005200083214101B73E2312938E1E00639AD101AD -:100530001302120093022000E31652FC631CC00158 -:100540000F00F00F63000E00131E1E00136E1E003E -:10055000730000000F00F00F130E10007300000076 -:10056000731000C000000000000000000000000048 -:10057000000000000000000000000000000000007B -:040580000000000077 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000097200000938000F03701AA001301A10A94 +:1001100023A0200003A70000B70EAA00938EAE0A0A +:10012000930120006310D74797200000938080ED53 +:1001300037B100AA130101A023A2200003A74000A9 +:10014000B7BE00AA938E0EA093013000631CD74364 +:1001500097200000938000EB3711A00A130101AA39 +:1001600023A4200003A78000B71EA00A938E0EAA26 +:10017000930140006318D74197200000938080E8E6 +:1001800037A10AA01301A10023A6200003A7C000E5 +:10019000B7AE0AA0938EAE00930150006314D73F10 +:1001A000972000009380C0E73701AA001301A10A3D +:1001B00023AA20FE03A740FFB70EAA00938EAE0A23 +:1001C000930160006310D73D97200000938040E5C5 +:1001D00037B100AA130101A023AC20FE03A780FFC2 +:1001E000B7BE00AA938E0EA093017000631CD7398E +:1001F000972000009380C0E23711A00A130101AAE2 +:1002000023AE20FE03A7C0FFB71EA00A938E0EAA3E +:10021000930180006318D73797200000938040E057 +:1002200037A10AA01301A10023A0200003A700000A +:10023000B7AE0AA0938EAE00930190006314D73539 +:1002400097200000938000DE37513412130181673C +:10025000138200FE2320220283A20000B75E341224 +:10026000938E8E679301A000639ED2319720000089 +:10027000938040DB37312158130181099380D0FFEF +:10028000A3A3200017220000130202DA8322020037 +:10029000B73E2158938E8E099301B0006394D22FFC +:1002A0009301C00013020000B7D0BBAA9380D0CD49 +:1002B00017210000130101D523201100032701009D +:1002C000B7DEBBAA938EDECD631ED72B13021200BE +:1002D00093022000E31A52FC9301D00013020000A5 +:1002E000B7C0ABDA9380D0CC17210000130181D1C5 +:1002F000130000002322110003274100B7CEABDA20 +:10030000938EDECC6310D7291302120093022000D3 +:10031000E31852FC9301E00013020000B7C0AADD0D +:100320009380C0BC172100001301C1CD1300000051 +:10033000130000002324110003278100B7CEAADD9B +:10034000938ECEBC6310D7251302120093022000B7 +:10035000E31652FC9301F00013020000B7B0DACDAF +:100360009380C0BB1300000017210000130181C956 +:10037000232611000327C100B7BEDACD938ECEBB72 +:100380006312D7211302120093022000E31852FCDB +:100390009301000113020000B7B0DDCC9380B0AB35 +:1003A00013000000172100001301C1C51300000055 +:1003B0002328110003270101B7BEDDCC938EBEAB0D +:1003C0006312D71D1302120093022000E31652FCA1 +:1003D0009301100113020000B7E0CDBC9380B0AAD6 +:1003E000130000001300000017210000130181C159 +:1003F000232A110003274101B7EECDBC938EBEAA7C +:100400006312D7191302120093022000E31652FC64 +:10041000930120011302000017210000130181BE87 +:10042000B7201100938030232320110003270100FF +:10043000B72E1100938E3E236316D71513021200B8 +:1004400093022000E31A52FC9301300113020000D2 +:1004500017210000130101BBB71001309380302237 +:10046000130000002322110003274100B71E0130B2 +:10047000938E3E226318D7111302120093022000BC +:10048000E31852FC93014001130200001721000001 +:10049000130141B7B71000339380201213000000FE +:1004A000130000002324110003278100B71E00332E +:1004B000938E2E126318D70D1302120093022000A0 +:1004C000E31652FC930150011302000017210000B3 +:1004D000130141B313000000B700302393802011B3 +:1004E000232611000327C100B70E3023938E2E114F +:1004F000631AD7091302120093022000E31852FC7A +:10050000930160011302000017210000130181AF65 +:1005100013000000B7003322938010011300000085 +:100520002328110003270101B70E3322938E1E01E9 +:10053000631AD7051302120093022000E31652FC3F +:10054000930170011302000017210000130181AB19 +:100550001300000013000000B73023129380100036 +:10056000232A110003274101B73E2312938E1E0058 +:10057000631AD7011302120093022000E31652FC03 +:10058000631030020F00F00F63800100939111009F +:1005900093E111009308D00513850100730000005A +:1005A0000F00F00F930110009308D0051305000011 +:0C05B00073000000731000C00000000089 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 @@ -96,5 +99,5 @@ :10200000EFBEADDEEFBEADDEEFBEADDEEFBEADDEF0 :10201000EFBEADDEEFBEADDEEFBEADDEEFBEADDEE0 :10202000EFBEADDEEFBEADDE000000000000000040 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-xor.hex b/benchmarks/riscv_tests/rv32ui-p-xor.hex index 6e8cc1d8..0d7609eb 100644 --- a/benchmarks/riscv_tests/rv32ui-p-xor.hex +++ b/benchmarks/riscv_tests/rv32ui-p-xor.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B70001FFB4 -:1000C000938000F037110F0F1301F1F0B3C120003E -:1000D000B7FE0FF0938EFE00130E20006390D14BFD -:1000E000B710F00F938000FF37F1F0F01301010F0C -:1000F000B3C12000B70E01FF938E0EF0130E300037 -:10010000639ED147B700FF009380F00F37110F0FA8 -:100110001301F1F0B3C12000B71EF00F938E0EFF54 -:10012000130E4000639CD145B7F00FF09380F000B0 -:1001300037F1F0F01301010FB3C12000B70EFF003B -:10014000938EFE0F130E5000639AD143B70001FF48 -:10015000938000F037110F0F1301F1F0B3C02000AE -:10016000B7FE0FF0938EFE00130E60006398D0412F -:10017000B70001FF938000F037110F0F1301F1F06A -:1001800033C12000B7FE0FF0938EFE00130E7000F7 -:100190006316D13FB70001FF938000F0B3C0100099 -:1001A000930E0000130E8000639AD03D13020000EE -:1001B000B70001FF938000F037110F0F1301F1F02A -:1001C000B3C1200013830100130212009302200028 -:1001D000E31052FEB7FE0FF0938EFE00130E900058 -:1001E000631ED33913020000B710F00F938000FF95 -:1001F00037F1F0F01301010FB3C12000130000002C -:10020000138301001302120093022000E31E52FC2C -:10021000B70E01FF938E0EF0130EA0006310D337BC -:1002200013020000B700FF009380F00F37110F0F8B -:100230001301F1F0B3C1200013000000130000000F -:10024000138301001302120093022000E31C52FCEE -:10025000B71EF00F938E0EFF130EB0006310D33352 -:1002600013020000B70001FF938000F037110F0F59 -:100270001301F1F0B3C12000130212009302200019 -:10028000E31252FEB7FE0FF0938EFE00130EC00075 -:100290006396D12F13020000B710F00F938000FF78 -:1002A00037F1F0F01301010F13000000B3C120007B -:1002B0001302120093022000E31052FEB70E01FF5A -:1002C000938E0EF0130ED000639AD12B1302000010 -:1002D000B700FF009380F00F37110F0F1301F1F0FB -:1002E0001300000013000000B3C12000130212002D -:1002F00093022000E31E52FCB71EF00F938E0EFFF8 -:10030000130EE000639CD12713020000B70001FF29 -:10031000938000F01300000037110F0F1301F1F06C -:10032000B3C120001302120093022000E31052FE1A -:10033000B7FE0FF0938EFE00130EF0006390D125F0 -:1003400013020000B710F00F938000FF13000000AD -:1003500037F1F0F01301010F13000000B3C12000CA -:100360001302120093022000E31E52FCB70E01FF9D -:10037000938E0EF0130E00016392D1211302000040 -:10038000B700FF009380F00F13000000130000007F -:1003900037110F0F1301F1F0B3C120001302120047 -:1003A00093022000E31E52FCB71EF00F938E0EFF47 -:1003B000130E10016394D11D1302000037110F0FAB -:1003C0001301F1F0B70001FF938000F0B3C12000EA -:1003D0001302120093022000E31252FEB7FE0FF048 -:1003E000938EFE00130E2001639AD11913020000B0 -:1003F00037F1F0F01301010FB710F00F938000FFF9 -:1004000013000000B3C12000130212009302200069 -:10041000E31052FEB70E01FF938E0EF0130E300163 -:10042000639ED1151302000037110F0F1301F1F075 -:10043000B700FF009380F00F1300000013000000CE -:10044000B3C120001302120093022000E31E52FCED -:10045000B71EF00F938E0EFF130E40016390D11361 -:100460001302000037110F0F1301F1F01300000009 -:10047000B70001FF938000F0B3C120001302120007 -:1004800093022000E31052FEB7FE0FF0938EFE00A1 -:10049000130E50016394D10F1302000037F1F0F0F6 -:1004A0001301010F13000000B710F00F938000FF3D -:1004B00013000000B3C120001302120093022000B9 -:1004C000E31E52FCB70E01FF938E0EF0130E600177 -:1004D0006396D10B1302000037110F0F1301F1F0D7 -:1004E0001300000013000000B700FF009380F00F1E -:1004F000B3C120001302120093022000E31E52FC3D -:10050000B71EF00F938E0EFF130E70016398D10784 -:10051000B70001FF938000F033411000B70E01FFD8 -:10052000938E0EF0130E8001631AD105B700FF0001 -:100530009380F00F33C10000B70EFF00938EFE0FC3 -:10054000130E9001631CD103B3400000930E000012 -:10055000130EA0016394D003B710111193801011F2 -:10056000372122221301212233C02000930E0000E4 -:10057000130EB0016314D001631CC0010F00F00F13 -:1005800063000E00131E1E00136E1E007300000099 -:100590000F00F00F130E100073000000731000C066 -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B70001FF938000F037110F0F1301F1F0DA +:1001100033C72000B7FE0FF0938EFE00930120003E +:100120006310D74BB710F00F938000FF37F1F0F05A +:100130001301010F33C72000B70E01FF938E0EF09D +:1001400093013000631ED747B700FF009380F00F84 +:1001500037110F0F1301F1F033C72000B71EF00F56 +:10016000938E0EFF93014000631CD745B7F00FF04C +:100170009380F00037F1F0F01301010F33C7200036 +:10018000B70EFF00938EFE0F93015000631AD74302 +:10019000B70001FF938000F037110F0F1301F1F04A +:1001A000B3C02000B7FE0FF0938EFE0093016000F5 +:1001B0006398D041B70001FF938000F037110F0F13 +:1001C0001301F1F033C12000B7FE0FF0938EFE0053 +:1001D000930170006316D13FB70001FF938000F0D8 +:1001E000B3C01000930E000093018000639AD03DCD +:1001F00013020000B70001FF938000F037110F0FCA +:100200001301F1F033C7200013030700130212009B +:1002100093022000E31052FEB7FE0FF0938EFE0013 +:1002200093019000631ED33913020000B710F00F42 +:10023000938000FF37F1F0F01301010F33C7200066 +:1002400013000000130307001302120093022000A2 +:10025000E31E52FCB70E01FF938E0EF09301A00037 +:100260006310D33713020000B700FF009380F00F34 +:1002700037110F0F1301F1F033C7200013000000F6 +:100280001300000013030700130212009302200062 +:10029000E31C52FCB71EF00F938E0EFF9301B000CB +:1002A0006310D33313020000B70001FF938000F006 +:1002B00037110F0F1301F1F033C7200013021200A2 +:1002C00093022000E31252FEB7FE0FF0938EFE0061 +:1002D0009301C0006316D72F13020000B710F00F70 +:1002E000938000FF37F1F0F01301010F13000000BD +:1002F00033C720001302120093022000E31052FEC5 +:10030000B70E01FF938E0EF09301D000631AD72B26 +:1003100013020000B700FF009380F00F37110F0F9A +:100320001301F1F0130000001300000033C7200098 +:100330001302120093022000E31E52FCB71EF00FBE +:10034000938E0EFF9301E000631CD7271302000079 +:10035000B70001FF938000F01300000037110F0F6A +:100360001301F1F033C720001302120093022000A2 +:10037000E31052FEB7FE0FF0938EFE009301F000E3 +:100380006310D72513020000B710F00F938000FF11 +:100390001300000037F1F0F01301010F130000000B +:1003A00033C720001302120093022000E31E52FC08 +:1003B000B70E01FF938E0EF0930100016312D72157 +:1003C00013020000B700FF009380F00F130000003D +:1003D0001300000037110F0F1301F1F033C7200095 +:1003E0001302120093022000E31E52FCB71EF00F0E +:1003F000938E0EFF930110016314D71D13020000AA +:1004000037110F0F1301F1F0B70001FF938000F0D7 +:1004100033C720001302120093022000E31252FEA1 +:10042000B7FE0FF0938EFE0093012001631AD719D7 +:100430001302000037F1F0F01301010FB710F00FB5 +:10044000938000FF1300000033C720001302120046 +:1004500093022000E31052FEB70E01FF938E0EF0C0 +:1004600093013001631ED7151302000037110F0FDF +:100470001301F1F0B700FF009380F00F13000000AC +:100480001300000033C72000130212009302200063 +:10049000E31E52FCB71EF00F938E0EFF9301400136 +:1004A0006310D7131302000037110F0F1301F1F07F +:1004B00013000000B70001FF938000F033C7200055 +:1004C0001302120093022000E31052FEB7FE0FF059 +:1004D000938EFE00930150016314D70F13020000A6 +:1004E00037F1F0F01301010F13000000B710F00F07 +:1004F000938000FF1300000033C720001302120096 +:1005000093022000E31E52FCB70E01FF938E0EF003 +:10051000930160016316D70B1302000037110F0F10 +:100520001301F1F01300000013000000B700FF00FA +:100530009380F00F33C720001302120093022000B3 +:10054000E31E52FCB71EF00F938E0EFF9301700155 +:100550006318D707B70001FF938000F03341100004 +:10056000B70E01FF938E0EF093018001631AD1053F +:10057000B700FF009380F00F33C10000B70EFF00FB +:10058000938EFE0F93019001631CD103B3400000D2 +:10059000930E00009301A0016394D003B7101111D2 +:1005A00093801011372122221301212233C0200011 +:1005B000930E00009301B0016314D0016310300268 +:1005C0000F00F00F638001009391110093E111007F +:1005D0009308D00513850100730000000F00F00F91 +:1005E000930110009308D00513050000730000006C +:0C05F000731000C00000000000000000BC :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-xori.hex b/benchmarks/riscv_tests/rv32ui-p-xori.hex index 98a84494..e169ee63 100644 --- a/benchmarks/riscv_tests/rv32ui-p-xori.hex +++ b/benchmarks/riscv_tests/rv32ui-p-xori.hex @@ -1,53 +1,60 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B710FF00A5 -:1000C000938000F093C1F0F0B7FE00FF938EFE0026 -:1000D000130E20006396D11DB710F00F938000FF20 -:1000E00093C1000FB71EF00F938E0EF0130E300069 -:1000F0006398D11BB710FF009380F08F93C1F0700D -:10010000B71EFF00938E0EFF130E4000639AD119A5 -:10011000B7F00FF09380F00093C1000FB7FE0FF01F -:10012000938EFE0F130E5000639CD117B7F000FFA3 -:100130009380007093C0F070B7FE00FF938EFE00B6 -:10014000130E6000639ED01513020000B710F00F6D -:10015000938000FF93C1000F13830100130212006C -:1001600093022000E31452FEB71EF00F938E0EF0A0 -:10017000130E70006316D31313020000B710FF00B4 -:100180009380F08F93C1F07013000000138301007F -:100190001302120093022000E31252FEB71EFF006A -:1001A000938E0EFF130E8000631CD30F130200000A -:1001B000B7F00FF09380F00093C1000F1300000020 -:1001C00013000000138301001302120093022000A9 -:1001D000E31052FEB7FE0FF0938EFE0F130E900049 -:1001E0006310D30D13020000B710F00F938000FFCF -:1001F00093C1000F1302120093022000E31652FE77 -:10020000B71EF00F938E0EF0130EA000639AD10963 -:1002100013020000B710FF009380F0FF13000000EE -:1002200093C1F0001302120093022000E31452FE67 -:10023000B71EFF00938E0EFF130EB0006392D1071E -:1002400013020000B7F00FF09380F00013000000DD -:100250001300000093C1000F13021200930220004C -:10026000E31252FEB7FE0FF0938EFE0F130EC00086 -:100270006398D1039340000F930E000F130ED0002C -:100280006390D003B700FF009380F00F13C0F070AD -:10029000930E0000130EE0006314D001631CC00134 -:1002A0000F00F00F63000E00131E1E00136E1E00E1 -:1002B000730000000F00F00F130E10007300000019 -:0402C000731000C0F7 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B710FF00938000F013C7F0F0B7FE00FFB8 +:10011000938EFE00930120006316D71DB710F00FD9 +:10012000938000FF13C7000FB71EF00F938E0EF0E1 +:10013000930130006318D71BB710FF009380F08F36 +:1001400013C7F070B71EFF00938E0EFF930140009F +:10015000631AD719B7F00FF09380F00013C7000FA0 +:10016000B7FE0FF0938EFE0F93015000631CD7175C +:10017000B7F000FF9380007093C0F070B7FE00FFEF +:10018000938EFE0093016000639ED0151302000061 +:10019000B710F00F938000FF13C7000F1303070081 +:1001A0001302120093022000E31452FEB71EF00F58 +:1001B000938E0EF0930170006316D31313020000A8 +:1001C000B710FF009380F08F13C7F070130000008A +:1001D000130307001302120093022000E31252FEE1 +:1001E000B71EFF00938E0EFF93018000631CD30F98 +:1001F00013020000B7F00FF09380F00013C7000F58 +:100200001300000013000000130307001302120084 +:1002100093022000E31052FEB7FE0FF0938EFE0F04 +:10022000930190006310D30D13020000B710F00F7C +:10023000938000FF13C7000F1302120093022000E7 +:10024000E31652FEB71EF00F938E0EF09301A0003E +:10025000631AD70913020000B710FF009380F0FF64 +:100260001300000013C7F0001302120093022000D5 +:10027000E31452FEB71EFF00938E0EFF9301B000F1 +:100280006312D70713020000B7F00FF09380F0005D +:10029000130000001300000013C7000F1302120028 +:1002A00093022000E31252FEB7FE0FF0938EFE0F72 +:1002B0009301C0006318D7039340000F930E000F03 +:1002C0009301D0006390D003B700FF009380F00F3C +:1002D00013C0F070930E00009301E0006314D0018E +:1002E000631030020F00F00F638001009391110042 +:1002F00093E111009308D0051385010073000000FD +:100300000F00F00F930110009308D00513050000B3 +:1003100073000000731000C0000000000000000027 +:1003200000000000000000000000000000000000CD +:0C033000000000000000000000000000C1 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-div.hex b/benchmarks/riscv_tests/rv32um-p-div.hex index c320a493..87f9cdac 100644 --- a/benchmarks/riscv_tests/rv32um-p-div.hex +++ b/benchmarks/riscv_tests/rv32um-p-div.hex @@ -1,37 +1,44 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F1730020309300400197 -:1000C00013016000B3C12002930E3000130E200014 -:1000D0006394D10D9300C0FE13016000B3C12002F0 -:1000E000930ED0FF130E30006398D10B93004001A4 -:1000F0001301A0FFB3C12002930ED0FF130E4000E6 -:10010000639CD1099300C0FE1301A0FFB3C120027C -:10011000930E3000130E50006390D109930000003D -:1001200013011000B3C12002930E0000130E6000F3 -:100130006394D107930000001301F0FFB3C12002C4 -:10014000930E0000130E70006398D1059300000019 -:1001500013010000B3C12002930EF0FF130E8000C4 -:10016000639CD1039300100013010000B3C120026F -:10017000930EF0FF130E90006390D10393000000E4 -:1001800013010000B3C12002930EF0FF130EA00074 -:100190006394D101631CC0010F00F00F63000E00D7 -:1001A000131E1E00136E1E00730000000F00F00FE0 -:1001B000130E100073000000731000C00000000058 -:0401C000000000003B +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930040011301600033C72002930E3000BA +:10011000930120006314D70D9300C0FE130160000B +:1001200033C72002930ED0FF930130006318D70B22 +:10013000930040011301A0FF33C72002930ED0FFAC +:1001400093014000631CD7099300C0FE1301A0FF78 +:1001500033C72002930E3000930150006310D7097B +:10016000B70000801301100033C72002B70E0080D3 +:10017000930160006314D707B70000801301F0FFFC +:1001800033C72002B70E0080930170006318D705B3 +:10019000B70000801301000033C72002930EF0FF68 +:1001A00093018000631CD70393001000130100002B +:1001B00033C72002930EF0FF930190006310D70322 +:1001C000930000001301000033C72002930EF0FFDC +:1001D0009301A0006314D701631030020F00F00FE9 +:1001E000638001009391110093E111009308D00501 +:1001F00013850100730000000F00F00F9301100041 +:100200009308D0051305000073000000731000C0B0 +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:0C023000000000000000000000000000C2 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-divu.hex b/benchmarks/riscv_tests/rv32um-p-divu.hex index ba68b46c..4dc26b59 100644 --- a/benchmarks/riscv_tests/rv32um-p-divu.hex +++ b/benchmarks/riscv_tests/rv32um-p-divu.hex @@ -1,37 +1,44 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F1730020309300400197 -:1000C00013016000B3D12002930E3000130E200004 -:1000D0006396D10D9300C0FE13016000B3D12002DE -:1000E000B7BEAA2A938E7EAA130E30006398D10B56 -:1000F000930040011301A0FFB3D12002930E000032 -:10010000130E4000639CD1099300C0FE1301A0FFB1 -:10011000B3D12002930E0000130E50006390D1095A -:10012000B700008013011000B3D12002B70E008089 -:10013000130E60006394D107B70000801301F0FF35 -:10014000B3D12002930E0000130E70006398D10506 -:10015000B700008013010000B3D12002930EF0FF1E -:10016000130E8000639CD103930010001301000064 -:10017000B3D12002930EF0FF130E90006390D103D1 -:100180009300000013010000B3D12002930EF0FF92 -:10019000130EA0006394D101631CC0010F00F00F87 -:1001A00063000E00131E1E00136E1E00730000007D -:1001B0000F00F00F130E100073000000731000C04A -:0401C000000000003B +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930040011301600033D72002930E3000AA +:10011000930120006316D70D9300C0FE1301600009 +:1001200033D72002B7BEAA2A938E7EAA930130004D +:100130006318D70B930040011301A0FF33D72002AF +:10014000930E000093014000631CD7099300C0FE8A +:100150001301A0FF33D72002930E0000930150003B +:100160006310D709B70000801301100033D72002B5 +:10017000B70E0080930160006314D707B7000080BA +:100180001301F0FF33D72002930E0000930170009B +:100190006318D705B70000801301000033D7200291 +:1001A000930EF0FF93018000631CD70393001000AF +:1001B0001301000033D72002930EF0FF930190004B +:1001C0006310D703930000001301000033D720020F +:1001D000930EF0FF9301A0006314D7016310300267 +:1001E0000F00F00F638001009391110093E1110063 +:1001F0009308D00513850100730000000F00F00F75 +:10020000930110009308D00513050000730000004F +:10021000731000C00000000000000000000000009B +:1002200000000000000000000000000000000000CE +:0C023000000000000000000000000000C2 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-mul.hex b/benchmarks/riscv_tests/rv32um-p-mul.hex index c2e28a22..6a03d923 100644 --- a/benchmarks/riscv_tests/rv32um-p-mul.hex +++ b/benchmarks/riscv_tests/rv32um-p-mul.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B780000034 -:1000C000938000E03771DBB6130171DBB38120024E -:1000D000B71E0000938E0E20130E00026394D14BC6 -:1000E000B7800000938000FC3771DBB6130171DB31 -:1000F000B3812002B71E0000938E0E24130E10024F -:100100006392D1499300000013010000B3812002E3 -:10011000930E0000130E20006396D1479300100049 -:1001200013011000B3812002930E1000130E300053 -:10013000639AD1459300300013017000B38120020F -:10014000930E5001130E4000639ED14393000000B4 -:100150003781FFFFB3812002930E0000130E500081 -:100160006392D143B700008013010000B3812002E5 -:10017000930E0000130E60006396D141B70000801B -:100180003781FFFFB3812002930E0000130E700031 -:10019000639AD13FB7B0AAAA9380B0AA37010300EF -:1001A0001301D1E7B3812002B70E0100938EFEF751 -:1001B000130EE0016398D13DB70003009380D0E7B0 -:1001C00037B1AAAA1301B1AAB3812002B70E010068 -:1001D000938EFEF7130EF0016396D13BB70000FF3C -:1001E000370100FFB3812002930E0000130E20029E -:1001F000639AD1399300F0FF1301F0FFB38120021D -:10020000930E1000130E3002639ED1379300F0FF5F -:1002100013011000B3812002930EF0FF130E400271 -:100220006392D137930010001301F0FFB3812002D5 -:10023000930EF0FF130E50026396D1359300D00059 -:100240001301B000B3802002930EF008130E80005B -:10025000639AD0339300E0001301B0003381200291 -:10026000930EA009130E9000631ED1319300D000AD -:10027000B3801002930E900A130EA0006394D03145 -:10028000130200009300D0001301B000B3812002DC -:10029000138301001302120093022000E31452FEA4 -:1002A000930EF008130EB000631ED32D130200004E -:1002B0009300E0001301B000B3812002130000009E -:1002C000138301001302120093022000E31252FE76 -:1002D000930EA009130EC0006316D32B1302000067 -:1002E0009300F0001301B000B3812002130000005E -:1002F0001300000013830100130212009302200078 -:10030000E31052FE930E500A130ED000631CD32745 -:10031000130200009300D0001301B000B38120024B -:100320001302120093022000E31652FE930EF0080F -:10033000130EE0006398D125130200009300E00043 -:100340001301B00013000000B38120021302120059 -:1003500093022000E31452FE930EA009130EF00046 -:100360006392D123130200009300F0001301B00048 -:100370001300000013000000B381200213021200DA -:1003800093022000E31252FE930E500A130E000156 -:10039000639AD11F130200009300D00013000000E5 -:1003A0001301B000B3812002130212009302200057 -:1003B000E31452FE930EF008130E10016394D11D46 -:1003C000130200009300E000130000001301B000CE -:1003D00013000000B38120021302120093022000D8 -:1003E000E31252FE930EA009130E2001639CD11953 -:1003F000130200009300F00013000000130000003F -:100400001301B000B38120021302120093022000F6 -:10041000E31252FE930E500A130E30016394D1176B -:10042000130200001301B0009300D000B38120023A -:100430001302120093022000E31652FE930EF008FE -:10044000130E40016390D115130200001301B00098 -:100450009300E00013000000B38120021302120099 -:1004600093022000E31452FE930EA009130E5001D4 -:10047000639AD111130200001301B0009300F00041 -:100480001300000013000000B381200213021200C9 -:1004900093022000E31252FE930E500A130E6001E5 -:1004A0006392D10F130200001301B000130000008B -:1004B0009300D000B38120021302120093022000A7 -:1004C000E31452FE930EF008130E7001639CD10BDF -:1004D000130200001301B000130000009300E000BD -:1004E00013000000B38120021302120093022000C7 -:1004F000E31252FE930EA009130E80016394D109FA -:10050000130200001301B0001300000013000000EC -:100510009300F000B3812002130212009302200026 -:10052000E31252FE930E500A130E9001639CD10504 -:100530009300F00133011002930E0000130EA0018E -:100540006312D1059300000233810002930E000074 -:10055000130EB0016318D103B3000002930E000024 -:10056000130EC0016390D003930010021301200208 -:1005700033802002930E0000130ED0016314D001CB -:10058000631CC0010F00F00F63000E00131E1E005D -:10059000136E1E00730000000F00F00F130E10000A -:1005A00073000000731000C0000000000000000095 -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000B7800000938000E03771DBB6130171DB2C +:1001100033872002B71E0000938E0E209301000249 +:100120006314D74BB7800000938000FC3771DBB6B7 +:10013000130171DB33872002B71E0000938E0E245B +:10014000930110026312D7499300000013010000CD +:1001500033872002930E0000930120006316D747D7 +:10016000930010001301100033872002930E10003B +:1001700093013000631AD7459300300013017000DB +:1001800033872002930E500193014000631ED74332 +:10019000930000003781FFFF33872002930E000099 +:1001A000930150006312D743B70000801301000091 +:1001B00033872002930E0000930160006316D7413D +:1001C000B70000803781FFFF33872002930E0000C5 +:1001D00093017000631AD73FB7B0AAAA9380B0AA60 +:1001E000370103001301D1E733872002B70E010066 +:1001F000938EFEF79301E0016318D73DB70003002B +:100200009380D0E737B1AAAA1301B1AA338720029D +:10021000B70E0100938EFEF79301F0016316D73BF2 +:10022000B70000FF370100FF33872002930E000064 +:1002300093012002631AD7399300F0FF1301F0FFF6 +:1002400033872002930E100093013002631ED737CC +:100250009300F0FF1301100033872002930EF0FF8C +:10026000930140026312D737930010001301F0FF8F +:1002700033872002930EF0FF930150026316D735A7 +:100280009300D0001301B000B3802002930EF00859 +:1002900093018000639AD0339300E0001301B00013 +:1002A00033812002930EA00993019000631ED13187 +:1002B0009300D000B3801002930E900A9301A00027 +:1002C0006394D031130200009300D0001301B000FA +:1002D0003387200213030700130212009302200049 +:1002E000E31452FE930EF0089301B000631ED32D69 +:1002F000130200009300E0001301B00033872002D6 +:1003000013000000130307001302120093022000E1 +:10031000E31252FE930EA0099301C0006316D32B83 +:10032000130200009300F0001301B0003387200295 +:100330001300000013000000130307001302120053 +:1003400093022000E31052FE930E500A9301D00056 +:10035000631CD327130200009300D0001301B000E8 +:10036000338720021302120093022000E31652FE8C +:10037000930EF0089301E0006318D72513020000E4 +:100380009300E0001301B000130000003387200247 +:100390001302120093022000E31452FE930EA009F0 +:1003A0009301F0006312D723130200009300F000C2 +:1003B0001301B00013000000130000003387200277 +:1003C0001302120093022000E31252FE930E500A11 +:1003D00093010001631AD71F130200009300D0009D +:1003E000130000001301B000338720021302120033 +:1003F00093022000E31452FE930EF00893011001C3 +:100400006314D71D130200009300E00013000000E6 +:100410001301B00013000000338720021302120002 +:1004200093022000E31252FE930EA00993012001D3 +:10043000631CD719130200009300F00013000000A2 +:10044000130000001301B0003387200213021200D2 +:1004500093022000E31252FE930E500A93013001E2 +:100460006314D717130200001301B0009300D000EB +:10047000338720021302120093022000E31652FE7B +:10048000930EF008930140016310D715130200008A +:100490001301B0009300E000130000003387200236 +:1004A0001302120093022000E31452FE930EA009DF +:1004B00093015001631AD711130200001301B00019 +:1004C0009300F000130000001300000033872002A7 +:1004D0001302120093022000E31252FE930E500A00 +:1004E000930160016312D70F130200001301B000E3 +:1004F000130000009300D000338720021302120083 +:1005000093022000E31452FE930EF0089301700151 +:10051000631CD70B130200001301B000130000008E +:100520009300E00013000000338720021302120042 +:1005300093022000E31252FE930EA0099301800162 +:100540006314D709130200001301B0001300000068 +:10055000130000009300F000338720021302120002 +:1005600093022000E31252FE930E500A9301900171 +:10057000631CD7059300F00133011002930E0000B5 +:100580009301A0016312D1059300000233810002A0 +:10059000930E00009301B0016318D103B300000271 +:1005A000930E00009301C0016390D00393001002EA +:1005B0001301200233802002930E00009301D0012A +:1005C0006314D001631030020F00F00F638001004C +:1005D0009391110093E111009308D0051385010058 +:1005E000730000000F00F00F930110009308D00576 +:0C05F0001305000073000000731000C031 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-mulh.hex b/benchmarks/riscv_tests/rv32um-p-mulh.hex index d4117c00..b9b80317 100644 --- a/benchmarks/riscv_tests/rv32um-p-mulh.hex +++ b/benchmarks/riscv_tests/rv32um-p-mulh.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00013010000B3912002930E0000130E2000D4 -:1000D000639AD14B9300100013011000B3912002DA -:1000E000930E0000130E3000639ED1499300300040 -:1000F00013017000B3912002930E0000130E400014 -:100100006392D149930000003781FFFFB391200231 -:10011000930E0000130E50006396D147B700008085 -:1001200013010000B3912002930E0000130E600033 -:10013000639AD145B700008013010000B3912002FB -:10014000930E0000130E7000639ED143B7B0AAAAAD -:100150009380B0AA370103001301D1E7B3912002C5 -:10016000B70EFFFF938E1E08130EE001639CD14172 -:10017000B70003009380D0E737B1AAAA1301B1AA50 -:10018000B3912002B70EFFFF938E1E08130EF001ED -:10019000639AD13FB70000FF370100FFB3912002FF -:1001A000B70E0100130E0002639ED13D9300F0FFD5 -:1001B0001301F0FFB3912002930E0000130E100202 -:1001C0006392D13D9300F0FF13011000B391200220 -:1001D000930EF0FF130E20026396D13B93001000A4 -:1001E0001301F0FFB3912002930EF0FF130E3002C3 -:1001F000639AD139B700D0003701B000B390200224 -:10020000B79E0000938E0EF0130E8000639CD037D3 -:10021000B700E0003701B00033912002B7AE000014 -:10022000938E0EA0130E9000631ED135B700D00040 -:10023000B3901002B7BE0000938E0E90130EA00074 -:100240006392D03513020000B700D0003701B00030 -:10025000B3912002138301001302120093022000C5 -:10026000E31452FEB79E0000938E0EF0130EB00002 -:10027000631AD33113020000B700E0003701B00069 -:10028000B391200213000000138301001302120037 -:1002900093022000E31252FEB7AE0000938E0EA030 -:1002A000130EC0006310D32F13020000B700F0003C -:1002B0003701B000B39120021300000013000000CA -:1002C000138301001302120093022000E31052FE78 -:1002D000B7AE0000938E0E50130ED0006314D32BD4 -:1002E00013020000B700D0003701B000B391200224 -:1002F0001302120093022000E31652FEB79E000084 -:10030000938E0EF0130EE000639ED12713020000BF -:10031000B700E0003701B00013000000B3912002E5 -:100320001302120093022000E31452FEB7AE000045 -:10033000938E0EA0130EF0006396D12513020000D9 -:10034000B700F0003701B0001300000013000000F8 -:10035000B39120021302120093022000E31252FE16 -:10036000B7AE0000938E0E50130E0001639CD12196 -:1003700013020000B700D000130000003701B000E6 -:10038000B39120021302120093022000E31452FEE4 -:10039000B79E0000938E0EF0130E10016394D11FD0 -:1003A00013020000B700E000130000003701B000A6 -:1003B00013000000B39120021302120093022000E8 -:1003C000E31252FEB7AE0000938E0EA0130E200172 -:1003D000639AD11B13020000B700F0001300000065 -:1003E000130000003701B000B39120021302120085 -:1003F00093022000E31252FEB7AE0000938E0E501F -:10040000130E30016390D119130200003701B000C0 -:10041000B700D000B3912002130212009302200013 -:10042000E31652FEB79E0000938E0EF0130E4001AD -:10043000639AD115130200003701B000B700E00045 -:1004400013000000B3912002130212009302200057 -:10045000E31452FEB7AE0000938E0EA0130E5001AF -:100460006392D113130200003701B000B700F0000F -:100470001300000013000000B391200213021200C9 -:1004800093022000E31252FEB7AE0000938E0E508E -:10049000130E60016398D10F130200003701B00002 -:1004A00013000000B700D000B39120021302120025 -:1004B00093022000E31452FEB79E0000938E0EF0CC -:1004C000130E70016390D10D130200003701B000CC -:1004D00013000000B700E00013000000B3912002F9 -:1004E0001302120093022000E31252FEB7AE000086 -:1004F000938E0EA0130E80016396D10913020000A3 -:100500003701B0001300000013000000B700F00036 -:10051000B39120021302120093022000E31252FE54 -:10052000B7AE0000938E0E50130E9001639CD10560 -:10053000B700007C33111002930E0000130EA001CF -:100540006312D105B700008033910002930E0000C2 -:10055000130EB0016318D103B3100002930E000014 -:10056000130EC0016390D003B700100237012002C0 -:1005700033902002930E0000130ED0016314D001BB -:10058000631CC0010F00F00F63000E00131E1E005D -:10059000136E1E00730000000F00F00F130E10000A -:1005A00073000000731000C0000000000000000095 -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930000001301000033972002930E0000BB +:1001100093012000631AD74B9300100013011000C5 +:1001200033972002930E000093013000631ED749DD +:10013000930030001301700033972002930E0000EB +:10014000930140006312D749930000003781FFFFFD +:1001500033972002930E0000930150006316D74797 +:10016000B70000801301000033972002930E0000B7 +:1001700093016000631AD745B700008013010000A7 +:1001800033972002930E000093017000631ED74343 +:10019000B7B0AAAA9380B0AA370103001301D1E730 +:1001A00033972002B70EFFFF938E1E089301E001E4 +:1001B000631CD741B70003009380D0E737B1AAAAE8 +:1001C0001301B1AA33972002B70EFFFF938E1E08CA +:1001D0009301F001631AD73FB70000FF370100FF1A +:1001E00033972002B70E010093010002631ED73D32 +:1001F0009300F0FF1301F0FF33972002930E0000ED +:10020000930110026312D73D9300F0FF1301100019 +:1002100033972002930EF0FF930120026316D73B21 +:10022000930010001301F0FF33972002930EF0FFAC +:1002300093013002631AD739B700D0003701B000FC +:10024000B3902002B79E0000938E0EF093018000C1 +:10025000639CD037B700E0003701B0003391200233 +:10026000B7AE0000938E0EA093019000631ED135AF +:10027000B700D000B3901002B7BE0000938E0E906E +:100280009301A0006392D03513020000B700D000A4 +:100290003701B00033972002130307001302120046 +:1002A00093022000E31452FEB79E0000938E0EF0DE +:1002B0009301B000631AD33113020000B700E000CD +:1002C0003701B0003397200213000000130307002A +:1002D0001302120093022000E31252FEB7AE000098 +:1002E000938E0EA09301C0006310D32F1302000061 +:1002F000B700F0003701B000339720021300000070 +:1003000013000000130307001302120093022000E1 +:10031000E31052FEB7AE0000938E0E509301D00052 +:100320006314D32B13020000B700D0003701B000D4 +:10033000339720021302120093022000E31652FEAC +:10034000B79E0000938E0EF09301E000631ED72746 +:1003500013020000B700E0003701B00013000000F6 +:10036000339720021302120093022000E31452FE7E +:10037000B7AE0000938E0EA09301F0006316D72550 +:1003800013020000B700F0003701B00013000000B6 +:100390001300000033972002130212009302200082 +:1003A000E31252FEB7AE0000938E0E50930100018F +:1003B000631CD72113020000B700D0001300000017 +:1003C0003701B0003397200213021200930220007D +:1003D000E31452FEB79E0000938E0EF093011001BD +:1003E0006314D71F13020000B700E00013000000E1 +:1003F0003701B000130000003397200213021200EF +:1004000093022000E31252FEB7AE0000938E0EA0BE +:1004100093012001631AD71B13020000B700F000FC +:1004200013000000130000003701B00033972002D2 +:100430001302120093022000E31252FEB7AE000036 +:10044000938E0E50930130016310D71913020000F0 +:100450003701B000B700D00033972002130212001A +:1004600093022000E31652FEB79E0000938E0EF01A +:1004700093014001631AD715130200003701B00041 +:10048000B700E000130000003397200213021200AF +:1004900093022000E31452FEB7AE0000938E0EA02C +:1004A000930150016312D713130200003701B0000B +:1004B000B700F00013000000130000003397200283 +:1004C0001302120093022000E31252FEB7AE0000A6 +:1004D000938E0E50930160016318D70F1302000032 +:1004E0003701B00013000000B700D000339720029E +:1004F0001302120093022000E31452FEB79E000084 +:10050000938E0EF0930170016310D70D130200005B +:100510003701B00013000000B700E0001300000036 +:10052000339720021302120093022000E31252FEBE +:10053000B7AE0000938E0EA0930180016316D70919 +:10054000130200003701B000130000001300000088 +:10055000B700F0003397200213021200930220002C +:10056000E31252FEB7AE0000938E0E50930190013D +:10057000631CD705B700007C33111002930E0000F6 +:100580009301A0016312D105B700008033910002EE +:10059000930E00009301B0016318D103B310000261 +:1005A000930E00009301C0016390D003B7001002C6 +:1005B0003701200233902002930E00009301D001F6 +:1005C0006314D001631030020F00F00F638001004C +:1005D0009391110093E111009308D0051385010058 +:1005E000730000000F00F00F930110009308D00576 +:0C05F0001305000073000000731000C031 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-mulhsu.hex b/benchmarks/riscv_tests/rv32um-p-mulhsu.hex index 131a31a2..34686698 100644 --- a/benchmarks/riscv_tests/rv32um-p-mulhsu.hex +++ b/benchmarks/riscv_tests/rv32um-p-mulhsu.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00013010000B3A12002930E0000130E2000C4 -:1000D000639AD14B9300100013011000B3A12002CA -:1000E000930E0000130E3000639ED1499300300040 -:1000F00013017000B3A12002930E0000130E400004 -:100100006392D149930000003781FFFFB3A1200221 -:10011000930E0000130E50006396D147B700008085 -:1001200013010000B3A12002930E0000130E600023 -:10013000639AD145B70000803781FFFFB3A1200249 -:10014000B74E0080130E7000639ED143B7B0AAAAC9 -:100150009380B0AA370103001301D1E7B3A12002B5 -:10016000B70EFFFF938E1E08130EE001639CD14172 -:10017000B70003009380D0E737B1AAAA1301B1AA50 -:10018000B3A12002B70E0200938EEEEF130EF00122 -:10019000639AD13FB70000FF370100FFB3A12002EF -:1001A000B70E01FF130E0002639ED13D9300F0FFD6 -:1001B0001301F0FFB3A12002930EF0FF130E100203 -:1001C0006392D13D9300F0FF13011000B3A1200210 -:1001D000930EF0FF130E20026396D13B93001000A4 -:1001E0001301F0FFB3A12002930E0000130E3002A2 -:1001F000639AD139B700D0003701B000B3A0200214 -:10020000B79E0000938E0EF0130E8000639CD037D3 -:10021000B700E0003701B00033A12002B7AE000004 -:10022000938E0EA0130E9000631ED135B700D00040 -:10023000B3A01002B7BE0000938E0E90130EA00064 -:100240006392D03513020000B700D0003701B00030 -:10025000B3A12002138301001302120093022000B5 -:10026000E31452FEB79E0000938E0EF0130EB00002 -:10027000631AD33113020000B700E0003701B00069 -:10028000B3A1200213000000138301001302120027 -:1002900093022000E31252FEB7AE0000938E0EA030 -:1002A000130EC0006310D32F13020000B700F0003C -:1002B0003701B000B3A120021300000013000000BA -:1002C000138301001302120093022000E31052FE78 -:1002D000B7AE0000938E0E50130ED0006314D32BD4 -:1002E00013020000B700D0003701B000B3A1200214 -:1002F0001302120093022000E31652FEB79E000084 -:10030000938E0EF0130EE000639ED12713020000BF -:10031000B700E0003701B00013000000B3A12002D5 -:100320001302120093022000E31452FEB7AE000045 -:10033000938E0EA0130EF0006396D12513020000D9 -:10034000B700F0003701B0001300000013000000F8 -:10035000B3A120021302120093022000E31252FE06 -:10036000B7AE0000938E0E50130E0001639CD12196 -:1003700013020000B700D000130000003701B000E6 -:10038000B3A120021302120093022000E31452FED4 -:10039000B79E0000938E0EF0130E10016394D11FD0 -:1003A00013020000B700E000130000003701B000A6 -:1003B00013000000B3A120021302120093022000D8 -:1003C000E31252FEB7AE0000938E0EA0130E200172 -:1003D000639AD11B13020000B700F0001300000065 -:1003E000130000003701B000B3A120021302120075 -:1003F00093022000E31252FEB7AE0000938E0E501F -:10040000130E30016390D119130200003701B000C0 -:10041000B700D000B3A12002130212009302200003 -:10042000E31652FEB79E0000938E0EF0130E4001AD -:10043000639AD115130200003701B000B700E00045 -:1004400013000000B3A12002130212009302200047 -:10045000E31452FEB7AE0000938E0EA0130E5001AF -:100460006392D113130200003701B000B700F0000F -:100470001300000013000000B3A1200213021200B9 -:1004800093022000E31252FEB7AE0000938E0E508E -:10049000130E60016398D10F130200003701B00002 -:1004A00013000000B700D000B3A120021302120015 -:1004B00093022000E31452FEB79E0000938E0EF0CC -:1004C000130E70016390D10D130200003701B000CC -:1004D00013000000B700E00013000000B3A12002E9 -:1004E0001302120093022000E31252FEB7AE000086 -:1004F000938E0EA0130E80016396D10913020000A3 -:100500003701B0001300000013000000B700F00036 -:10051000B3A120021302120093022000E31252FE44 -:10052000B7AE0000938E0E50130E9001639CD10560 -:10053000B700007C33211002930E0000130EA001BF -:100540006312D105B700008033A10002930E0000B2 -:10055000130EB0016318D103B3200002930E000004 -:10056000130EC0016390D003B700100237012002C0 -:1005700033A02002930E0000130ED0016314D001AB -:10058000631CC0010F00F00F63000E00131E1E005D -:10059000136E1E00730000000F00F00F130E10000A -:1005A00073000000731000C0000000000000000095 -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930000001301000033A72002930E0000AB +:1001100093012000631AD74B9300100013011000C5 +:1001200033A72002930E000093013000631ED749CD +:10013000930030001301700033A72002930E0000DB +:10014000930140006312D749930000003781FFFFFD +:1001500033A72002930E0000930150006316D74787 +:10016000B70000801301000033A72002930E0000A7 +:1001700093016000631AD745B70000803781FFFF05 +:1001800033A72002B74E008093017000631ED7434F +:10019000B7B0AAAA9380B0AA370103001301D1E730 +:1001A00033A72002B70EFFFF938E1E089301E001D4 +:1001B000631CD741B70003009380D0E737B1AAAAE8 +:1001C0001301B1AA33A72002B70E0200938EEEEFFF +:1001D0009301F001631AD73FB70000FF370100FF1A +:1001E00033A72002B70E01FF93010002631ED73D23 +:1001F0009300F0FF1301F0FF33A72002930EF0FFEE +:10020000930110026312D73D9300F0FF1301100019 +:1002100033A72002930EF0FF930120026316D73B11 +:10022000930010001301F0FF33A72002930E00008B +:1002300093013002631AD739B700D0003701B000FC +:10024000B3A02002B79E0000938E0EF093018000B1 +:10025000639CD037B700E0003701B00033A1200223 +:10026000B7AE0000938E0EA093019000631ED135AF +:10027000B700D000B3A01002B7BE0000938E0E905E +:100280009301A0006392D03513020000B700D000A4 +:100290003701B00033A72002130307001302120036 +:1002A00093022000E31452FEB79E0000938E0EF0DE +:1002B0009301B000631AD33113020000B700E000CD +:1002C0003701B00033A7200213000000130307001A +:1002D0001302120093022000E31252FEB7AE000098 +:1002E000938E0EA09301C0006310D32F1302000061 +:1002F000B700F0003701B00033A720021300000060 +:1003000013000000130307001302120093022000E1 +:10031000E31052FEB7AE0000938E0E509301D00052 +:100320006314D32B13020000B700D0003701B000D4 +:1003300033A720021302120093022000E31652FE9C +:10034000B79E0000938E0EF09301E000631ED72746 +:1003500013020000B700E0003701B00013000000F6 +:1003600033A720021302120093022000E31452FE6E +:10037000B7AE0000938E0EA09301F0006316D72550 +:1003800013020000B700F0003701B00013000000B6 +:100390001300000033A72002130212009302200072 +:1003A000E31252FEB7AE0000938E0E50930100018F +:1003B000631CD72113020000B700D0001300000017 +:1003C0003701B00033A7200213021200930220006D +:1003D000E31452FEB79E0000938E0EF093011001BD +:1003E0006314D71F13020000B700E00013000000E1 +:1003F0003701B0001300000033A7200213021200DF +:1004000093022000E31252FEB7AE0000938E0EA0BE +:1004100093012001631AD71B13020000B700F000FC +:1004200013000000130000003701B00033A72002C2 +:100430001302120093022000E31252FEB7AE000036 +:10044000938E0E50930130016310D71913020000F0 +:100450003701B000B700D00033A72002130212000A +:1004600093022000E31652FEB79E0000938E0EF01A +:1004700093014001631AD715130200003701B00041 +:10048000B700E0001300000033A72002130212009F +:1004900093022000E31452FEB7AE0000938E0EA02C +:1004A000930150016312D713130200003701B0000B +:1004B000B700F000130000001300000033A7200273 +:1004C0001302120093022000E31252FEB7AE0000A6 +:1004D000938E0E50930160016318D70F1302000032 +:1004E0003701B00013000000B700D00033A720028E +:1004F0001302120093022000E31452FEB79E000084 +:10050000938E0EF0930170016310D70D130200005B +:100510003701B00013000000B700E0001300000036 +:1005200033A720021302120093022000E31252FEAE +:10053000B7AE0000938E0EA0930180016316D70919 +:10054000130200003701B000130000001300000088 +:10055000B700F00033A7200213021200930220001C +:10056000E31252FEB7AE0000938E0E50930190013D +:10057000631CD705B700007C33211002930E0000E6 +:100580009301A0016312D105B700008033A10002DE +:10059000930E00009301B0016318D103B320000251 +:1005A000930E00009301C0016390D003B7001002C6 +:1005B0003701200233A02002930E00009301D001E6 +:1005C0006314D001631030020F00F00F638001004C +:1005D0009391110093E111009308D0051385010058 +:1005E000730000000F00F00F930110009308D00576 +:0C05F0001305000073000000731000C031 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-mulhu.hex b/benchmarks/riscv_tests/rv32um-p-mulhu.hex index 55359540..9553de4d 100644 --- a/benchmarks/riscv_tests/rv32um-p-mulhu.hex +++ b/benchmarks/riscv_tests/rv32um-p-mulhu.hex @@ -1,101 +1,104 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F17300203093000000D8 -:1000C00013010000B3B12002930E0000130E2000B4 -:1000D000639AD14B9300100013011000B3B12002BA -:1000E000930E0000130E3000639ED1499300300040 -:1000F00013017000B3B12002930E0000130E4000F4 -:100100006392D149930000003781FFFFB3B1200211 -:10011000930E0000130E50006396D147B700008085 -:1001200013010000B3B12002930E0000130E600013 -:10013000639AD145B70000803781FFFFB3B1200239 -:10014000B7CEFF7F130E7000639ED143B7B0AAAA4B -:100150009380B0AA370103001301D1E7B3B12002A5 -:10016000B70E0200938EEEEF130EE001639CD141B7 -:10017000B70003009380D0E737B1AAAA1301B1AA50 -:10018000B3B12002B70E0200938EEEEF130EF00112 -:10019000639AD13FB70000FF370100FFB3B12002DF -:1001A000B70E01FE130E0002639ED13D9300F0FFD7 -:1001B0001301F0FFB3B12002930EE0FF130E100203 -:1001C0006392D13D9300F0FF13011000B3B1200200 -:1001D000930E0000130E20026396D13B9300100093 -:1001E0001301F0FFB3B12002930E0000130E300292 -:1001F000639AD139B700D0003701B000B3B0200204 -:10020000B79E0000938E0EF0130E8000639CD037D3 -:10021000B700E0003701B00033B12002B7AE0000F4 -:10022000938E0EA0130E9000631ED135B700D00040 -:10023000B3B01002B7BE0000938E0E90130EA00054 -:100240006392D03513020000B700D0003701B00030 -:10025000B3B12002138301001302120093022000A5 -:10026000E31452FEB79E0000938E0EF0130EB00002 -:10027000631AD33113020000B700E0003701B00069 -:10028000B3B1200213000000138301001302120017 -:1002900093022000E31252FEB7AE0000938E0EA030 -:1002A000130EC0006310D32F13020000B700F0003C -:1002B0003701B000B3B120021300000013000000AA -:1002C000138301001302120093022000E31052FE78 -:1002D000B7AE0000938E0E50130ED0006314D32BD4 -:1002E00013020000B700D0003701B000B3B1200204 -:1002F0001302120093022000E31652FEB79E000084 -:10030000938E0EF0130EE000639ED12713020000BF -:10031000B700E0003701B00013000000B3B12002C5 -:100320001302120093022000E31452FEB7AE000045 -:10033000938E0EA0130EF0006396D12513020000D9 -:10034000B700F0003701B0001300000013000000F8 -:10035000B3B120021302120093022000E31252FEF6 -:10036000B7AE0000938E0E50130E0001639CD12196 -:1003700013020000B700D000130000003701B000E6 -:10038000B3B120021302120093022000E31452FEC4 -:10039000B79E0000938E0EF0130E10016394D11FD0 -:1003A00013020000B700E000130000003701B000A6 -:1003B00013000000B3B120021302120093022000C8 -:1003C000E31252FEB7AE0000938E0EA0130E200172 -:1003D000639AD11B13020000B700F0001300000065 -:1003E000130000003701B000B3B120021302120065 -:1003F00093022000E31252FEB7AE0000938E0E501F -:10040000130E30016390D119130200003701B000C0 -:10041000B700D000B3B120021302120093022000F3 -:10042000E31652FEB79E0000938E0EF0130E4001AD -:10043000639AD115130200003701B000B700E00045 -:1004400013000000B3B12002130212009302200037 -:10045000E31452FEB7AE0000938E0EA0130E5001AF -:100460006392D113130200003701B000B700F0000F -:100470001300000013000000B3B1200213021200A9 -:1004800093022000E31252FEB7AE0000938E0E508E -:10049000130E60016398D10F130200003701B00002 -:1004A00013000000B700D000B3B120021302120005 -:1004B00093022000E31452FEB79E0000938E0EF0CC -:1004C000130E70016390D10D130200003701B000CC -:1004D00013000000B700E00013000000B3B12002D9 -:1004E0001302120093022000E31252FEB7AE000086 -:1004F000938E0EA0130E80016396D10913020000A3 -:100500003701B0001300000013000000B700F00036 -:10051000B3B120021302120093022000E31252FE34 -:10052000B7AE0000938E0E50130E9001639CD10560 -:10053000B700007C33311002930E0000130EA001AF -:100540006312D105B700008033B10002930E0000A2 -:10055000130EB0016318D103B3300002930E0000F4 -:10056000130EC0016390D003B700100237012002C0 -:1005700033B02002930E0000130ED0016314D0019B -:10058000631CC0010F00F00F63000E00131E1E005D -:10059000136E1E00730000000F00F00F130E10000A -:1005A00073000000731000C0000000000000000095 -:1005B000000000000000000000000000000000003B -:0405C0000000000037 +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930000001301000033B72002930E00009B +:1001100093012000631AD74B9300100013011000C5 +:1001200033B72002930E000093013000631ED749BD +:10013000930030001301700033B72002930E0000CB +:10014000930140006312D749930000003781FFFFFD +:1001500033B72002930E0000930150006316D74777 +:10016000B70000801301000033B72002930E000097 +:1001700093016000631AD745B70000803781FFFF05 +:1001800033B72002B7CEFF7F93017000631ED743C1 +:10019000B7B0AAAA9380B0AA370103001301D1E730 +:1001A00033B72002B70E0200938EEEEF9301E00109 +:1001B000631CD741B70003009380D0E737B1AAAAE8 +:1001C0001301B1AA33B72002B70E0200938EEEEFEF +:1001D0009301F001631AD73FB70000FF370100FF1A +:1001E00033B72002B70E01FE93010002631ED73D14 +:1001F0009300F0FF1301F0FF33B72002930EE0FFEE +:10020000930110026312D73D9300F0FF1301100019 +:1002100033B72002930E0000930120026316D73BF0 +:10022000930010001301F0FF33B72002930E00007B +:1002300093013002631AD739B700D0003701B000FC +:10024000B3B02002B79E0000938E0EF093018000A1 +:10025000639CD037B700E0003701B00033B1200213 +:10026000B7AE0000938E0EA093019000631ED135AF +:10027000B700D000B3B01002B7BE0000938E0E904E +:100280009301A0006392D03513020000B700D000A4 +:100290003701B00033B72002130307001302120026 +:1002A00093022000E31452FEB79E0000938E0EF0DE +:1002B0009301B000631AD33113020000B700E000CD +:1002C0003701B00033B7200213000000130307000A +:1002D0001302120093022000E31252FEB7AE000098 +:1002E000938E0EA09301C0006310D32F1302000061 +:1002F000B700F0003701B00033B720021300000050 +:1003000013000000130307001302120093022000E1 +:10031000E31052FEB7AE0000938E0E509301D00052 +:100320006314D32B13020000B700D0003701B000D4 +:1003300033B720021302120093022000E31652FE8C +:10034000B79E0000938E0EF09301E000631ED72746 +:1003500013020000B700E0003701B00013000000F6 +:1003600033B720021302120093022000E31452FE5E +:10037000B7AE0000938E0EA09301F0006316D72550 +:1003800013020000B700F0003701B00013000000B6 +:100390001300000033B72002130212009302200062 +:1003A000E31252FEB7AE0000938E0E50930100018F +:1003B000631CD72113020000B700D0001300000017 +:1003C0003701B00033B7200213021200930220005D +:1003D000E31452FEB79E0000938E0EF093011001BD +:1003E0006314D71F13020000B700E00013000000E1 +:1003F0003701B0001300000033B7200213021200CF +:1004000093022000E31252FEB7AE0000938E0EA0BE +:1004100093012001631AD71B13020000B700F000FC +:1004200013000000130000003701B00033B72002B2 +:100430001302120093022000E31252FEB7AE000036 +:10044000938E0E50930130016310D71913020000F0 +:100450003701B000B700D00033B7200213021200FA +:1004600093022000E31652FEB79E0000938E0EF01A +:1004700093014001631AD715130200003701B00041 +:10048000B700E0001300000033B72002130212008F +:1004900093022000E31452FEB7AE0000938E0EA02C +:1004A000930150016312D713130200003701B0000B +:1004B000B700F000130000001300000033B7200263 +:1004C0001302120093022000E31252FEB7AE0000A6 +:1004D000938E0E50930160016318D70F1302000032 +:1004E0003701B00013000000B700D00033B720027E +:1004F0001302120093022000E31452FEB79E000084 +:10050000938E0EF0930170016310D70D130200005B +:100510003701B00013000000B700E0001300000036 +:1005200033B720021302120093022000E31252FE9E +:10053000B7AE0000938E0EA0930180016316D70919 +:10054000130200003701B000130000001300000088 +:10055000B700F00033B7200213021200930220000C +:10056000E31252FEB7AE0000938E0E50930190013D +:10057000631CD705B700007C33311002930E0000D6 +:100580009301A0016312D105B700008033B10002CE +:10059000930E00009301B0016318D103B330000241 +:1005A000930E00009301C0016390D003B7001002C6 +:1005B0003701200233B02002930E00009301D001D6 +:1005C0006314D001631030020F00F00F638001004C +:1005D0009391110093E111009308D0051385010058 +:1005E000730000000F00F00F930110009308D00576 +:0C05F0001305000073000000731000C031 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-rem.hex b/benchmarks/riscv_tests/rv32um-p-rem.hex index f65f890b..4ceb971c 100644 --- a/benchmarks/riscv_tests/rv32um-p-rem.hex +++ b/benchmarks/riscv_tests/rv32um-p-rem.hex @@ -1,37 +1,44 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F1730020309300400197 -:1000C00013016000B3E12002930E2000130E200004 -:1000D0006394D10D9300C0FE13016000B3E12002D0 -:1000E000930EE0FF130E30006398D10B9300400194 -:1000F0001301A0FFB3E12002930E2000130E400075 -:10010000639CD1099300C0FE1301A0FFB3E120025C -:10011000930EE0FF130E50006390D109930000008E -:1001200013011000B3E12002930E0000130E6000D3 -:100130006394D107930000001301F0FFB3E12002A4 -:10014000930E0000130E70006398D1059300000019 -:1001500013010000B3E12002930E0000130E800093 -:10016000639CD1039300100013010000B3E120024F -:10017000930E1000130E90006390D10393000000C3 -:1001800013010000B3E12002930E0000130EA00043 -:100190006394D101631CC0010F00F00F63000E00D7 -:1001A000131E1E00136E1E00730000000F00F00FE0 -:1001B000130E100073000000731000C00000000058 -:0401C000000000003B +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930040011301600033E72002930E2000AA +:10011000930120006314D70D9300C0FE130160000B +:1001200033E72002930EE0FF930130006318D70BF2 +:10013000930040011301A0FF33E72002930E20003B +:1001400093014000631CD7099300C0FE1301A0FF78 +:1001500033E72002930EE0FF930150006310D709AC +:10016000B70000801301100033E72002930E000057 +:10017000930160006314D707B70000801301F0FFFC +:1001800033E72002930E0000930170006318D70537 +:10019000B70000801301000033E72002B70E008093 +:1001A00093018000631CD70393001000130100002B +:1001B00033E72002930E1000930190006310D703E1 +:1001C000930000001301000033E72002930E0000AB +:1001D0009301A0006314D701631030020F00F00FE9 +:1001E000638001009391110093E111009308D00501 +:1001F00013850100730000000F00F00F9301100041 +:100200009308D0051305000073000000731000C0B0 +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:0C023000000000000000000000000000C2 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-remu.hex b/benchmarks/riscv_tests/rv32um-p-remu.hex index 1be01270..1f89e542 100644 --- a/benchmarks/riscv_tests/rv32um-p-remu.hex +++ b/benchmarks/riscv_tests/rv32um-p-remu.hex @@ -1,37 +1,44 @@ :0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F1730020309300400197 -:1000C00013016000B3F12002930E2000130E2000F4 -:1000D0006394D10D9300C0FE13016000B3F12002C0 -:1000E000930E2000130E30006398D10B9300400153 -:1000F0001301A0FFB3F12002930E4001130E400044 -:10010000639CD1099300C0FE1301A0FFB3F120024C -:10011000930EC0FE130E50006390D10993000000AF -:1001200013011000B3F12002930E0000130E6000C3 -:100130006394D107930000001301F0FFB3F1200294 -:10014000930E0000130E70006398D1059300000019 -:1001500013010000B3F12002930E0000130E800083 -:10016000639CD1039300100013010000B3F120023F -:10017000930E1000130E90006390D10393000000C3 -:1001800013010000B3F12002930E0000130EA00033 -:100190006394D101631CC0010F00F00F63000E00D7 -:1001A000131E1E00136E1E00730000000F00F00FE0 -:1001B000130E100073000000731000C00000000058 -:0401C000000000003B +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000930040011301600033F72002930E20009A +:10011000930120006314D70D9300C0FE130160000B +:1001200033F72002930E2000930130006318D70BA1 +:10013000930040011301A0FF33F72002930E40010A +:1001400093014000631CD7099300C0FE1301A0FF78 +:1001500033F72002930EC0FE930150006310D709BD +:10016000B70000801301100033F72002930E000047 +:10017000930160006314D707B70000801301F0FFFC +:1001800033F72002B70E0080930170006318D70583 +:10019000B70000801301000033F72002B70E008083 +:1001A00093018000631CD70393001000130100002B +:1001B00033F72002930E1000930190006310D703D1 +:1001C000930000001301000033F72002930E00009B +:1001D0009301A0006314D701631030020F00F00FE9 +:1001E000638001009391110093E111009308D00501 +:1001F00013850100730000000F00F00F9301100041 +:100200009308D0051305000073000000731000C0B0 +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:0C023000000000000000000000000000C2 :1010000000000000000000000000000000000000E0 :1010100000000000000000000000000000000000D0 :1010200000000000000000000000000000000000C0 :1010300000000000000000000000000000000000B0 :081040000000000000000000A8 -:040000058000200057 +:040000058000000077 :00000001FF diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index bba64e50..d047df97 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -57,7 +57,7 @@ `define EXT_M_ENABLE -// define EXT_F_ENABLE +`define EXT_F_ENABLE // Configuration Values ======================================================= diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 61e50417..41e01f39 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -20,7 +20,7 @@ module VX_decode #( reg [`ALU_BITS-1:0] alu_op; reg [`BR_BITS-1:0] br_op; - wire [`LSU_BITS-1:0] lsu_op; + reg [`LSU_BITS-1:0] lsu_op; reg [`CSR_BITS-1:0] csr_op; reg [`MUL_BITS-1:0] mul_op; reg [`FPU_BITS-1:0] fpu_op; @@ -71,10 +71,12 @@ module VX_decode #( wire [11:0] alu_imm = alu_shift_i ? alu_shift_imm : u_12; always @(*) begin case (opcode) - `INST_I: src2_imm = {{20{alu_imm[11]}}, alu_imm}; - `INST_S: src2_imm = {{20{func7[6]}}, func7, rd}; - `INST_L: src2_imm = {{20{u_12[11]}}, u_12}; - `INST_B: src2_imm = {{20{instr[31]}}, instr[7], instr[30:25], instr[11:8], 1'b0}; + `INST_I: src2_imm = {{20{alu_imm[11]}}, alu_imm}; + `INST_S, + `INST_FS: src2_imm = {{20{func7[6]}}, func7, rd}; + `INST_L, + `INST_FL: src2_imm = {{20{u_12[11]}}, u_12}; + `INST_B: src2_imm = {{20{instr[31]}}, instr[7], instr[30:25], instr[11:8], 1'b0}; default: src2_imm = 32'hdeadbeef; endcase end @@ -147,11 +149,6 @@ module VX_decode #( end end - // LSU - - wire is_lsu = (is_ltype || is_stype); - assign lsu_op = {is_stype, func3}; - // CSR wire is_csr_imm = is_csr && (func3[2] == 1); @@ -199,6 +196,11 @@ module VX_decode #( wire is_fmsub = (opcode == `INST_FMSUB); wire is_fnmsub = (opcode == `INST_FNMSUB); wire is_fnmadd = (opcode == `INST_FNMADD); + + wire is_fcmp = is_fci && (func7 == 7'h50); // compare + wire is_fcvti = is_fci && (func7 == 7'h60); // convert to int + wire is_fcvtf = is_fci && (func7 == 7'h68); // convert to float + wire is_fmvcls = is_fci && (func7 == 7'h70 || func7 == 7'h78); // move + class wire is_fr4 = is_fmadd || is_fmsub || is_fnmsub || is_fnmadd; wire is_fpu = (is_fl || is_fs || is_fci || is_fr4); @@ -232,15 +234,29 @@ module VX_decode #( end end `else - wire is_fs = 0; - wire is_fci = 0; - wire is_fr4 = 0; - wire is_fpu = 0; + wire is_fl = 0; + wire is_fs = 0; + wire is_fci = 0; + wire is_fcmp = 0; + wire is_fcvti = 0; + wire is_fcvtf = 0; + wire is_fmvcls = 0; + wire is_fr4 = 0; + wire is_fpu = 0; always @(*) begin fpu_op = `FPU_OTHER; end `endif + // LSU + + wire is_lsu = (is_ltype || is_stype || is_fl || is_fs); + always @(*) begin + lsu_op = {is_stype, func3}; + if (is_fl) lsu_op = `LSU_LW; + if (is_fs) lsu_op = `LSU_SW; + end + // GPU always @(*) begin @@ -272,14 +288,14 @@ module VX_decode #( (is_rtype || is_itype || is_lui || is_auipc) ? `EX_ALU : `EX_NOP; - assign decode_tmp_if.instr_op = is_lsu ? `OP_BITS'(lsu_op) : - is_csr ? `OP_BITS'(csr_op) : - is_mul ? `OP_BITS'(mul_op) : - is_fpu ? `OP_BITS'(fpu_op) : - is_gpu ? `OP_BITS'(gpu_op) : - is_br ? `OP_BITS'({1'b1, br_op}) : - (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : - 0; + assign decode_tmp_if.ex_op = is_lsu ? `OP_BITS'(lsu_op) : + is_csr ? `OP_BITS'(csr_op) : + is_mul ? `OP_BITS'(mul_op) : + is_fpu ? `OP_BITS'(fpu_op) : + is_gpu ? `OP_BITS'(gpu_op) : + is_br ? `OP_BITS'({1'b1, br_op}) : + (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : + 0; assign decode_tmp_if.rd = rd; assign decode_tmp_if.rs1 = is_lui ? `NR_BITS'(0) : rs1; @@ -293,20 +309,25 @@ module VX_decode #( assign decode_tmp_if.rs1_is_PC = is_auipc; assign decode_tmp_if.rs2_is_imm = is_itype || is_lui || is_auipc || is_csr_imm; - assign decode_tmp_if.use_rs1 = (decode_tmp_if.rs1 != 0) - && (is_jalr || is_btype || is_ltype || is_stype || is_itype || is_rtype || ~is_csr_imm || is_gpu); + assign decode_tmp_if.use_rs1 = is_fpu + || is_gpu + || ((is_jalr || is_btype || is_ltype || is_stype || is_itype || is_rtype || ~is_csr_imm || is_gpu) + && (decode_tmp_if.rs1 != 0)); - assign decode_tmp_if.use_rs2 = (decode_tmp_if.rs2 != 0) - && (is_btype || is_stype || is_rtype || (is_gpu && (gpu_op == `GPU_BAR || gpu_op == `GPU_WSPAWN))); + assign decode_tmp_if.use_rs2 = (is_fpu && ~(is_fl || (fpu_op == `FPU_SQRT) || is_fcvti || is_fcvtf || is_fmvcls)) + || (is_gpu && (gpu_op == `GPU_BAR || gpu_op == `GPU_WSPAWN)) + || ((is_btype || is_stype || is_rtype) + && (decode_tmp_if.rs2 != 0)); - assign decode_tmp_if.rd_is_fp = is_fpu && ~(is_fci && ((func7 == 7'h50) || (func7 == 7'h60) || (func7 == 7'h70))); - assign decode_tmp_if.rs1_is_fp = is_fci && ((func7 != 7'h68) && (fpu_op != `FPU_MVWX)) || is_fr4; - assign decode_tmp_if.rs2_is_fp = is_fs || (is_fci && ((func7 != 7'h60) && (func7 != 7'h68)) || is_fr4); + assign decode_tmp_if.rd_is_fp = is_fpu && ~(is_fcmp || is_fcvti || (fpu_op == `FPU_MVXW || fpu_op == `FPU_CLASS)); + assign decode_tmp_if.rs1_is_fp = is_fr4 || (is_fci && ~(is_fcvtf || (fpu_op == `FPU_MVWX))); + assign decode_tmp_if.rs2_is_fp = is_fs || is_fr4 || is_fci; assign decode_tmp_if.rs3 = rs3; assign decode_tmp_if.use_rs3 = is_fr4; assign decode_tmp_if.frm = func3; - assign decode_tmp_if.wb = is_fpu || ((rd != 0) && (is_itype || is_rtype || is_lui || is_auipc || is_csr || is_jal || is_jalr || is_jals || is_ltype)); + assign decode_tmp_if.wb = (is_fl || is_fci || is_fr4) + || ((rd != 0) && (is_itype || is_rtype || is_lui || is_auipc || is_csr || is_jal || is_jalr || is_jals || is_ltype)); assign join_if.is_join = in_valid && is_gpu && (gpu_op == `GPU_JOIN); assign join_if.warp_num = ifetch_rsp_if.warp_num; @@ -323,8 +344,8 @@ module VX_decode #( .reset (reset), .stall (stall), .flush (0), - .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.rd_is_fp, decode_tmp_if.frm}), - .out ({decode_if.valid, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.rd_is_fp, decode_if.frm}) + .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.rd_is_fp, decode_tmp_if.frm}), + .out ({decode_if.valid, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.rd_is_fp, decode_if.frm}) ); assign ifetch_rsp_if.ready = ~stall; @@ -335,13 +356,15 @@ module VX_decode #( $write("%t: Core%0d-Decode: warp=%0d, PC=%0h, ex=", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC); print_ex_type(decode_tmp_if.ex_type); $write(", op="); - print_instr_op(decode_tmp_if.ex_type, decode_tmp_if.instr_op); - $write(", tmask=%b, wb=%b, rd=%0d, rd_is_fp=%b, rs1=%0d, rs2=%0d, rs3=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b, use_rs3=%b\n", decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, decode_tmp_if.rd_is_fp, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.rs3, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.use_rs3); + print_ex_op(decode_tmp_if.ex_type, decode_tmp_if.ex_op); + $write(", tmask=%b, wb=%b, rd=%0d, rs1=%0d, rs2=%0d, rs3=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b, use_rs3=%b, rd_is_fp=%b, rs1_is_fp=%b, rs2_is_fp=%b, frm=", decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.rs3, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.use_rs3, decode_tmp_if.rd_is_fp,decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp); + print_frm(decode_tmp_if.frm); + $write("\n"); // trap unsupported instructions - assert(~(~stall && (decode_tmp_if.ex_type == `EX_ALU) && `ALU_OP(decode_tmp_if.instr_op) == `ALU_OTHER)); - assert(~(~stall && (decode_tmp_if.ex_type == `EX_CSR) && `CSR_OP(decode_tmp_if.instr_op) == `CSR_OTHER)); - assert(~(~stall && (decode_tmp_if.ex_type == `EX_GPU) && `GPU_OP(decode_tmp_if.instr_op) == `GPU_OTHER)); + assert(~(~stall && (decode_tmp_if.ex_type == `EX_ALU) && `ALU_OP(decode_tmp_if.ex_op) == `ALU_OTHER)); + assert(~(~stall && (decode_tmp_if.ex_type == `EX_CSR) && `CSR_OP(decode_tmp_if.ex_op) == `CSR_OTHER)); + assert(~(~stall && (decode_tmp_if.ex_type == `EX_GPU) && `GPU_OP(decode_tmp_if.ex_op) == `GPU_OTHER)); end end `endif diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 04562647..65c9b0c5 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -101,21 +101,21 @@ `define INST_AUIPC 7'b0010111 `define INST_JAL 7'b1101111 `define INST_JALR 7'b1100111 -`define INST_B 7'b1100011 -`define INST_L 7'b0000011 -`define INST_S 7'b0100011 -`define INST_I 7'b0010011 -`define INST_R 7'b0110011 -`define INST_F 7'b0001111 -`define INST_SYS 7'b1110011 +`define INST_B 7'b1100011 // branch instructions +`define INST_L 7'b0000011 // load instructions +`define INST_S 7'b0100011 // store instructions +`define INST_I 7'b0010011 // immediate instructions +`define INST_R 7'b0110011 // register instructions +`define INST_F 7'b0001111 // Fence instructions +`define INST_SYS 7'b1110011 // system instructions -`define INST_FL 7'b0000111 -`define INST_FS 7'b0100111 -`define INST_FCI 7'b1010011 +`define INST_FL 7'b0000111 // float load instruction +`define INST_FS 7'b0100111 // float store instruction `define INST_FMADD 7'b1000011 `define INST_FMSUB 7'b1000111 `define INST_FNMSUB 7'b1001011 `define INST_FNMADD 7'b1001111 +`define INST_FCI 7'b1010011 // float common instructions `define INST_GPU 7'b1101011 @@ -236,7 +236,7 @@ `define FRM_RNE 3'b000 `define FRM_RTZ 3'b001 `define FRM_RDN 3'b010 -`define FRM_RUP 3'b011 // positive inf +`define FRM_RUP 3'b011 `define FRM_RMM 3'b100 `define FRM_DYN 3'b111 `define FRM_BITS 3 @@ -464,13 +464,14 @@ task print_ex_type; `EX_LSU: $write("LSU"); `EX_CSR: $write("CSR"); `EX_MUL: $write("MUL"); + `EX_FPU: $write("FPU"); `EX_GPU: $write("GPU"); default: $write("NOP"); endcase end endtask -task print_instr_op; +task print_ex_op; input [`EX_BITS-1:0] ex; input [`OP_BITS-1:0] op; begin @@ -489,12 +490,12 @@ task print_instr_op; `ALU_AND: $write("AND"); `ALU_LUI: $write("LUI"); `ALU_AUIPC: $write("AUIPC"); - `ALU_BEQ: $write("EQ"); - `ALU_BNE: $write("NE"); - `ALU_BLT: $write("LT"); - `ALU_BGE: $write("GE"); - `ALU_BLTU: $write("LTU"); - `ALU_BGEU: $write("GEU"); + `ALU_BEQ: $write("BEQ"); + `ALU_BNE: $write("BNE"); + `ALU_BLT: $write("BLT"); + `ALU_BGE: $write("BGE"); + `ALU_BLTU: $write("BLTU"); + `ALU_BGEU: $write("BGEU"); `ALU_JAL: $write("JAL"); `ALU_JALR: $write("JALR"); `ALU_ECALL: $write("ECALL"); @@ -582,4 +583,19 @@ task print_instr_op; end endtask +task print_frm; + input [`FRM_BITS-1:0] frm; + begin + case (frm) + `FRM_RNE: $write("RNE"); + `FRM_RTZ: $write("RTZ"); + `FRM_RDN: $write("RDN"); + `FRM_RUP: $write("RUP"); + `FRM_RMM: $write("RMM"); + `FRM_DYN: $write("DYN"); + default: $write("?"); + endcase + end +endtask + `endif diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index f0622c4f..e46d017d 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -49,6 +49,7 @@ module VX_fpu_unit #( wire [`LOG2UP(`FPURQ_SIZE)-1:0] fpu_in_tag, fpu_out_tag; wire [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; + assign fpu_operands = {fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data}; wire [FMTF_BITS-1:0] fpu_src_fmt = fpnew_pkg::FP32; wire [FMTF_BITS-1:0] fpu_dst_fmt = fpnew_pkg::FP32; @@ -88,15 +89,13 @@ module VX_fpu_unit #( `FPU_CVTWUS:begin fpu_op = fpnew_pkg::ADD; fpu_op_mod = 1; end `FPU_CVTSW: fpu_op = fpnew_pkg::I2F; `FPU_CVTSWU:begin fpu_op = fpnew_pkg::I2F; fpu_op_mod = 1; end - `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; end - `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; end + `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_op_mod = 1; fpu_rnd = `FRM_RUP; end + `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_op_mod = 0; fpu_rnd = `FRM_RUP; end `FPU_CLASS: fpu_op = fpnew_pkg::CLASSIFY; `FPU_CMP: fpu_op = fpnew_pkg::CMP; default:; endcase - end - - assign fpu_operands = {fpu_req_if.rs3_data, fpu_req_if.rs2_data, fpu_req_if.rs1_data}; + end `DISABLE_TRACING diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index 46a45064..43e32009 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -36,7 +36,7 @@ module VX_gpr_fp_ctrl ( if (reset) begin multi_cyc_state <= 0; end else if (!schedule_delay) begin - multi_cyc_state <= decode_if.use_rs3 && (multi_cyc_state == 0); + multi_cyc_state <= decode_if.use_rs3 && (0 == multi_cyc_state); end else begin multi_cyc_state <= 0; end @@ -70,9 +70,9 @@ module VX_gpr_fp_ctrl ( // outputs - assign gpr_delay = (multi_cyc_state == 0) && decode_if.use_rs3; + assign gpr_delay = decode_if.use_rs3 && (0 == multi_cyc_state); - assign raddr1 = multi_cyc_state ? decode_if.rs3 : decode_if.rs1 ; + assign raddr1 = multi_cyc_state ? decode_if.rs3 : decode_if.rs1; assign raddr2 = decode_if.rs2; always @(*) begin diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 58885255..33044f30 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -20,7 +20,6 @@ module VX_gpr_stage #( wire [`NUM_THREADS-1:0][31:0] rs1_int_data [`NUM_WARPS-1:0]; wire [`NUM_THREADS-1:0][31:0] rs2_int_data [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0] we [`NUM_WARPS-1:0]; wire [`NR_BITS-1:0] raddr1; wire [`NR_BITS-1:0] raddr2; @@ -28,10 +27,10 @@ module VX_gpr_stage #( genvar i; for (i = 0; i < `NUM_WARPS; i++) begin - assign we[i] = writeback_if.thread_mask & {`NUM_THREADS{~writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; + wire [`NUM_WARPS-1:0] we = writeback_if.thread_mask & {`NUM_THREADS{writeback_if.valid && ~writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; VX_gpr_ram gpr_int_ram ( .clk (clk), - .we (we[i]), + .we (we), .waddr (writeback_if.rd), .wdata (writeback_if.data), .rs1 (raddr1), @@ -47,10 +46,10 @@ module VX_gpr_stage #( wire [`NUM_THREADS-1:0][31:0] rs2_fp_data [`NUM_WARPS-1:0]; for (i = 0; i < `NUM_WARPS; i++) begin - assign we[i] = writeback_if.thread_mask & {`NUM_THREADS{writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; + wire [`NUM_WARPS-1:0] we = writeback_if.thread_mask & {`NUM_THREADS{writeback_if.valid && writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; VX_gpr_ram gpr_fp_ram ( .clk (clk), - .we (we[i]), + .we (we), .waddr (writeback_if.rd), .wdata (writeback_if.data), .rs1 (raddr1), diff --git a/hw/rtl/VX_icache_stage.v b/hw/rtl/VX_icache_stage.v index 525aa220..bc77503a 100644 --- a/hw/rtl/VX_icache_stage.v +++ b/hw/rtl/VX_icache_stage.v @@ -77,7 +77,7 @@ module VX_icache_stage #( $display("%t: I$%0d req: warp=%0d, PC=%0h", $time, CORE_ID, ifetch_req_if.warp_num, ifetch_req_if.curr_PC); end if (icache_rsp_if.valid && icache_rsp_if.ready) begin - $display("%t: I$%0d rsp: warp=%0d, PC=%0h, instr=%0h", $time, CORE_ID, ifetch_rsp_if.warp_num, ifetch_req_if.curr_PC, ifetch_rsp_if.instr); + $display("%t: I$%0d rsp: warp=%0d, PC=%0h, instr=%0h", $time, CORE_ID, ifetch_rsp_if.warp_num, ifetch_rsp_if.curr_PC, ifetch_rsp_if.instr); end end `endif diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 7d10193b..0f23353e 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -74,8 +74,8 @@ module VX_issue #( .reset (reset), .stall (stall), .flush (flush), - .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.instr_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm, gpr_data_if.rs1_data, gpr_data_if.rs2_data, gpr_data_if.rs3_data}), - .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.instr_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.frm, gpr_data_tmp_if.rs1_data, gpr_data_tmp_if.rs2_data, gpr_data_tmp_if.rs3_data}) + .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm, gpr_data_if.rs1_data, gpr_data_if.rs2_data, gpr_data_if.rs3_data}), + .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.frm, gpr_data_tmp_if.rs1_data, gpr_data_tmp_if.rs2_data, gpr_data_tmp_if.rs3_data}) ); VX_issue_demux issue_demux ( @@ -92,22 +92,22 @@ module VX_issue #( `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if (alu_req_if.valid && ~stall) begin + if (alu_req_if.valid && alu_req_if.ready) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%d, rd=%0d, rs1_data=%0h, rs2_data=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC); end - if (lsu_req_if.valid && ~stall) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, byteen=%b, baddr=%0h, offset=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, lsu_req_if.rw, decode_tmp_if.rd, decode_tmp_if.wb, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset); + if (lsu_req_if.valid && lsu_req_if.ready) begin + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0b, rd=%0d, rw=%b, byteen=%b, baddr=%0h, offset=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset); end - if (csr_req_if.valid && ~stall) begin + if (csr_req_if.valid && csr_req_if.ready) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%d, rd=%0d, addr=%0h, mask=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, csr_req_if.csr_addr, csr_req_if.csr_mask); end - if (mul_req_if.valid && ~stall) begin + if (mul_req_if.valid && mul_req_if.ready) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%d, rd=%0d, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, mul_req_if.rs1_data, mul_req_if.rs2_data); end - if (fpu_req_if.valid && ~stall) begin + if (fpu_req_if.valid && fpu_req_if.ready) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%d, rd=%0d, frm=%0h, rs1_data=%0h, rs2_data=%0h, rs3_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, fpu_req_if.frm, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data); end - if (gpu_req_if.valid && ~stall) begin + if (gpu_req_if.valid && gpu_req_if.ready) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, gpu_req_if.rs1_data, gpu_req_if.rs2_data); end end diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index c462d157..e20ece07 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -102,6 +102,22 @@ module VX_scheduler #( wire ib_acquire = decode_if.valid && ~stall; + `DEBUG_BLOCK( + wire [`NW_BITS-1:0] cis_alu_warp_num = commit_is_if.alu_data.warp_num; + wire [`NUM_THREADS-1:0] cis_alu_thread_mask = commit_is_if.alu_data.thread_mask; + wire [31:0] cis_alu_curr_PC = commit_is_if.alu_data.curr_PC; + wire [`NR_BITS-1:0] cis_alu_rd = commit_is_if.alu_data.rd; + wire cis_alu_rd_is_fp = commit_is_if.alu_data.rd_is_fp; + wire cis_alu_wb = commit_is_if.alu_data.wb; + + wire [`NW_BITS-1:0] cis_fpu_warp_num = commit_is_if.fpu_data.warp_num; + wire [`NUM_THREADS-1:0] cis_fpu_thread_mask = commit_is_if.fpu_data.thread_mask; + wire [31:0] cis_fpu_curr_PC = commit_is_if.fpu_data.curr_PC; + wire [`NR_BITS-1:0] cis_fpu_rd = commit_is_if.fpu_data.rd; + wire cis_fpu_rd_is_fp = commit_is_if.fpu_data.rd_is_fp; + wire cis_fpu_wb = commit_is_if.fpu_data.wb; + ) + VX_cam_buffer #( .DATAW ($bits(is_data_t)), .SIZE (`ISSUEQ_SIZE), diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 33bc230f..dd87330c 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -39,6 +39,13 @@ module VX_writeback #( mul_valid ? commit_is_if.mul_data.warp_num : fpu_valid ? commit_is_if.fpu_data.warp_num : 0; + + assign writeback_tmp_if.curr_PC = alu_valid ? commit_is_if.alu_data.curr_PC : + lsu_valid ? commit_is_if.lsu_data.curr_PC : + csr_valid ? commit_is_if.csr_data.curr_PC : + mul_valid ? commit_is_if.mul_data.curr_PC : + fpu_valid ? commit_is_if.fpu_data.curr_PC : + 0; assign writeback_tmp_if.thread_mask = alu_valid ? commit_is_if.alu_data.thread_mask : lsu_valid ? commit_is_if.lsu_data.thread_mask : @@ -55,7 +62,7 @@ module VX_writeback #( 0; assign writeback_tmp_if.rd_is_fp = alu_valid ? 0 : - lsu_valid ? 0 : + lsu_valid ? commit_is_if.lsu_data.rd_is_fp : csr_valid ? 0 : mul_valid ? 0 : fpu_valid ? commit_is_if.fpu_data.rd_is_fp : @@ -71,14 +78,14 @@ module VX_writeback #( wire stall = ~writeback_if.ready && writeback_if.valid; VX_generic_register #( - .N(1 + `NW_BITS + `NUM_THREADS + `NR_BITS + (`NUM_THREADS * 32) + 1) + .N(1 + `NW_BITS + 32 + `NUM_THREADS + `NR_BITS + (`NUM_THREADS * 32) + 1) ) wb_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.thread_mask, writeback_tmp_if.rd, writeback_tmp_if.rd_is_fp, writeback_tmp_if.data}), - .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.thread_mask, writeback_if.rd, writeback_if.rd_is_fp, writeback_if.data}) + .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.curr_PC, writeback_tmp_if.thread_mask, writeback_tmp_if.rd, writeback_tmp_if.rd_is_fp, writeback_tmp_if.data}), + .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.curr_PC, writeback_if.thread_mask, writeback_if.rd, writeback_if.rd_is_fp, writeback_if.data}) ); assign alu_commit_if.ready = !stall; diff --git a/hw/rtl/interfaces/VX_decode_if.v b/hw/rtl/interfaces/VX_decode_if.v index 3b25581f..1802801d 100644 --- a/hw/rtl/interfaces/VX_decode_if.v +++ b/hw/rtl/interfaces/VX_decode_if.v @@ -12,7 +12,7 @@ interface VX_decode_if (); wire [31:0] next_PC; wire [`EX_BITS-1:0] ex_type; - wire [`OP_BITS-1:0] instr_op; + wire [`OP_BITS-1:0] ex_op; wire [`NR_BITS-1:0] rd; wire [`NR_BITS-1:0] rs1; diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index 8baac2cd..c3e3ec34 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -7,7 +7,12 @@ interface VX_wb_if (); wire valid; wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] warp_num; + +`IGNORE_WARNINGS_BEGIN + wire [31:0] curr_PC; +`IGNORE_WARNINGS_END + wire [`NR_BITS-1:0] rd; wire rd_is_fp; wire [`NUM_THREADS-1:0][31:0] data; diff --git a/hw/simulate/simulator.h b/hw/simulate/simulator.h index 7fb6370a..6839f12e 100644 --- a/hw/simulate/simulator.h +++ b/hw/simulate/simulator.h @@ -15,7 +15,7 @@ #include #define ENABLE_DRAM_STALLS -#define DRAM_LATENCY 100 +#define DRAM_LATENCY 4 #define DRAM_RQ_SIZE 16 #define DRAM_STALLS_MODULO 16 diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index 51134059..b18dc11a 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -10,7 +10,8 @@ int main(int argc, char **argv) bool passed = true; std::string tests[] = { - "../../../benchmarks/riscv_tests/rv32ui-p-add.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-fadd.hex", + /*"../../../benchmarks/riscv_tests/rv32ui-p-add.hex", "../../../benchmarks/riscv_tests/rv32ui-p-addi.hex", "../../../benchmarks/riscv_tests/rv32ui-p-and.hex", "../../../benchmarks/riscv_tests/rv32ui-p-andi.hex", @@ -48,6 +49,7 @@ int main(int argc, char **argv) "../../../benchmarks/riscv_tests/rv32ui-p-sw.hex", "../../../benchmarks/riscv_tests/rv32ui-p-xor.hex", "../../../benchmarks/riscv_tests/rv32ui-p-xori.hex", +#ifdef EXT_M_ENABLE "../../../benchmarks/riscv_tests/rv32um-p-div.hex", "../../../benchmarks/riscv_tests/rv32um-p-divu.hex", "../../../benchmarks/riscv_tests/rv32um-p-mul.hex", @@ -55,7 +57,21 @@ int main(int argc, char **argv) "../../../benchmarks/riscv_tests/rv32um-p-mulhsu.hex", "../../../benchmarks/riscv_tests/rv32um-p-mulhu.hex", "../../../benchmarks/riscv_tests/rv32um-p-rem.hex", - "../../../benchmarks/riscv_tests/rv32um-p-remu.hex" + "../../../benchmarks/riscv_tests/rv32um-p-remu.hex", +#endif +#ifdef EXT_F_ENABLE + "../../../benchmarks/riscv_tests/rv32uf-p-fadd.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-fdiv.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-fmadd.hex" + "../../../benchmarks/riscv_tests/rv32uf-p-fmin.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-fcmp.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-fclass.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-ldst.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-fcvt.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-move.hex", + "../../../benchmarks/riscv_tests/rv32uf-p-recoding.hex", +#endif*/ }; for (std::string test : tests) { From e0a90896479637282f998856caab2ea6a301fdfe Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Mon, 27 Jul 2020 16:01:56 -0400 Subject: [PATCH 15/94] floating point support fixes --- hw/rtl/VX_commit.v | 83 +++++++++--------- hw/rtl/VX_config.vh | 6 +- hw/rtl/VX_csr_data.v | 45 ++++++---- hw/rtl/VX_csr_unit.v | 11 +-- hw/rtl/VX_define.vh | 12 +-- hw/rtl/VX_execute.v | 16 ++-- hw/rtl/VX_fpu_unit.v | 87 ++++++++++--------- hw/rtl/VX_gpr_fp_ctrl.v | 62 +++++++------ hw/rtl/VX_gpr_stage.v | 33 +++---- hw/rtl/VX_issue.v | 40 +++++---- hw/rtl/VX_pipeline.v | 14 +-- hw/rtl/VX_scheduler.v | 73 ++++++++-------- hw/rtl/VX_writeback.v | 66 +++++++------- hw/rtl/interfaces/VX_cmt_to_csr_if.v | 21 +++++ ...VX_commit_is_if.v => VX_cmt_to_issue_if.v} | 6 +- ...X_fpu_from_csr_if.v => VX_csr_to_fpu_if.v} | 8 +- hw/rtl/interfaces/VX_fpu_to_cmt_if.v | 21 +++++ hw/rtl/interfaces/VX_gpr_data_if.v | 14 --- hw/rtl/interfaces/VX_gpr_read_if.v | 29 +++++++ hw/rtl/interfaces/VX_perf_cntrs_if.v | 13 --- hw/simulate/simulator.cpp | 24 +++-- hw/simulate/simulator.h | 3 +- hw/simulate/testbench.cpp | 51 ++++++++--- 23 files changed, 408 insertions(+), 330 deletions(-) create mode 100644 hw/rtl/interfaces/VX_cmt_to_csr_if.v rename hw/rtl/interfaces/{VX_commit_is_if.v => VX_cmt_to_issue_if.v} (91%) rename hw/rtl/interfaces/{VX_fpu_from_csr_if.v => VX_csr_to_fpu_if.v} (52%) create mode 100644 hw/rtl/interfaces/VX_fpu_to_cmt_if.v delete mode 100644 hw/rtl/interfaces/VX_gpr_data_if.v create mode 100644 hw/rtl/interfaces/VX_gpr_read_if.v delete mode 100644 hw/rtl/interfaces/VX_perf_cntrs_if.v diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index f8f842db..5e0767bc 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -7,18 +7,19 @@ module VX_commit #( input wire reset, // inputs - VX_commit_if alu_commit_if, - VX_commit_if lsu_commit_if, - VX_commit_if mul_commit_if, - VX_commit_if csr_commit_if, - VX_commit_if fpu_commit_if, - VX_commit_if gpu_commit_if, + VX_commit_if alu_commit_if, + VX_commit_if lsu_commit_if, + VX_commit_if mul_commit_if, + VX_commit_if csr_commit_if, + VX_fpu_to_cmt_if fpu_commit_if, + VX_commit_if gpu_commit_if, // outputs - VX_commit_is_if commit_is_if, - VX_wb_if writeback_if, - VX_perf_cntrs_if perf_cntrs_if + VX_cmt_to_issue_if cmt_to_issue_if, + VX_wb_if writeback_if, + VX_cmt_to_csr_if cmt_to_csr_if ); + // update CRSs wire [`NUM_EXS-1:0] commited_mask; assign commited_mask = {(alu_commit_if.valid && alu_commit_if.ready), @@ -37,38 +38,32 @@ module VX_commit #( .count (num_commits) ); - wire has_committed = (| commited_mask); + assign cmt_to_csr_if.valid = (| commited_mask); + assign cmt_to_csr_if.num_commits = num_commits; - reg [63:0] total_cycles, total_instrs; - - always @(posedge clk) begin - if (reset) begin - total_cycles <= 0; - total_instrs <= 0; - end else begin - total_cycles <= total_cycles + 1; - if (has_committed) begin - total_instrs <= total_instrs + 64'(num_commits); - end - end - end + assign cmt_to_csr_if.upd_fflags = (fpu_commit_if.valid && fpu_commit_if.ready) && fpu_commit_if.upd_fflags; + assign cmt_to_csr_if.fpu_warp_num = cmt_to_issue_if.fpu_data.warp_num; + assign cmt_to_csr_if.fflags_NV = fpu_commit_if.fflags_NV; + assign cmt_to_csr_if.fflags_DZ = fpu_commit_if.fflags_DZ; + assign cmt_to_csr_if.fflags_OF = fpu_commit_if.fflags_OF; + assign cmt_to_csr_if.fflags_UF = fpu_commit_if.fflags_UF; + assign cmt_to_csr_if.fflags_NX = fpu_commit_if.fflags_NX; - assign perf_cntrs_if.total_cycles = total_cycles; - assign perf_cntrs_if.total_instrs = total_instrs; + // Notify issue stage - assign commit_is_if.alu_valid = alu_commit_if.valid && alu_commit_if.ready; - assign commit_is_if.lsu_valid = lsu_commit_if.valid && lsu_commit_if.ready; - assign commit_is_if.csr_valid = csr_commit_if.valid && csr_commit_if.ready; - assign commit_is_if.mul_valid = mul_commit_if.valid && mul_commit_if.ready; - assign commit_is_if.fpu_valid = fpu_commit_if.valid && fpu_commit_if.ready; - assign commit_is_if.gpu_valid = gpu_commit_if.valid && gpu_commit_if.ready; + assign cmt_to_issue_if.alu_valid = alu_commit_if.valid && alu_commit_if.ready; + assign cmt_to_issue_if.lsu_valid = lsu_commit_if.valid && lsu_commit_if.ready; + assign cmt_to_issue_if.csr_valid = csr_commit_if.valid && csr_commit_if.ready; + assign cmt_to_issue_if.mul_valid = mul_commit_if.valid && mul_commit_if.ready; + assign cmt_to_issue_if.fpu_valid = fpu_commit_if.valid && fpu_commit_if.ready; + assign cmt_to_issue_if.gpu_valid = gpu_commit_if.valid && gpu_commit_if.ready; - assign commit_is_if.alu_tag = alu_commit_if.issue_tag; - assign commit_is_if.lsu_tag = lsu_commit_if.issue_tag; - assign commit_is_if.csr_tag = csr_commit_if.issue_tag; - assign commit_is_if.mul_tag = mul_commit_if.issue_tag; - assign commit_is_if.fpu_tag = fpu_commit_if.issue_tag; - assign commit_is_if.gpu_tag = gpu_commit_if.issue_tag; + assign cmt_to_issue_if.alu_tag = alu_commit_if.issue_tag; + assign cmt_to_issue_if.lsu_tag = lsu_commit_if.issue_tag; + assign cmt_to_issue_if.csr_tag = csr_commit_if.issue_tag; + assign cmt_to_issue_if.mul_tag = mul_commit_if.issue_tag; + assign cmt_to_issue_if.fpu_tag = fpu_commit_if.issue_tag; + assign cmt_to_issue_if.gpu_tag = gpu_commit_if.issue_tag; assign gpu_commit_if.ready = 1'b1; // doesn't writeback @@ -83,7 +78,7 @@ module VX_commit #( .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), .fpu_commit_if (fpu_commit_if), - .commit_is_if (commit_is_if), + .cmt_to_issue_if(cmt_to_issue_if), .writeback_if (writeback_if) ); @@ -91,22 +86,22 @@ module VX_commit #( `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (alu_commit_if.valid && alu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.alu_data.warp_num, commit_is_if.alu_data.curr_PC, alu_commit_if.issue_tag, commit_is_if.alu_data.thread_mask, commit_is_if.alu_data.wb, commit_is_if.alu_data.rd, alu_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.alu_data.warp_num, cmt_to_issue_if.alu_data.curr_PC, alu_commit_if.issue_tag, cmt_to_issue_if.alu_data.thread_mask, cmt_to_issue_if.alu_data.wb, cmt_to_issue_if.alu_data.rd, alu_commit_if.data); end if (lsu_commit_if.valid && lsu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.lsu_data.warp_num, commit_is_if.lsu_data.curr_PC, lsu_commit_if.issue_tag, commit_is_if.lsu_data.thread_mask, commit_is_if.lsu_data.wb, commit_is_if.lsu_data.rd, lsu_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.lsu_data.warp_num, cmt_to_issue_if.lsu_data.curr_PC, lsu_commit_if.issue_tag, cmt_to_issue_if.lsu_data.thread_mask, cmt_to_issue_if.lsu_data.wb, cmt_to_issue_if.lsu_data.rd, lsu_commit_if.data); end if (csr_commit_if.valid && csr_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.csr_data.warp_num, commit_is_if.csr_data.curr_PC, csr_commit_if.issue_tag, commit_is_if.csr_data.thread_mask, commit_is_if.csr_data.wb, commit_is_if.csr_data.rd, csr_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.csr_data.warp_num, cmt_to_issue_if.csr_data.curr_PC, csr_commit_if.issue_tag, cmt_to_issue_if.csr_data.thread_mask, cmt_to_issue_if.csr_data.wb, cmt_to_issue_if.csr_data.rd, csr_commit_if.data); end if (mul_commit_if.valid && mul_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.mul_data.warp_num, commit_is_if.mul_data.curr_PC, mul_commit_if.issue_tag, commit_is_if.mul_data.thread_mask, commit_is_if.mul_data.wb, commit_is_if.mul_data.rd, mul_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.mul_data.warp_num, cmt_to_issue_if.mul_data.curr_PC, mul_commit_if.issue_tag, cmt_to_issue_if.mul_data.thread_mask, cmt_to_issue_if.mul_data.wb, cmt_to_issue_if.mul_data.rd, mul_commit_if.data); end if (fpu_commit_if.valid && fpu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.fpu_data.warp_num, commit_is_if.fpu_data.curr_PC, fpu_commit_if.issue_tag, commit_is_if.fpu_data.thread_mask, commit_is_if.fpu_data.wb, commit_is_if.fpu_data.rd, fpu_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.fpu_data.warp_num, cmt_to_issue_if.fpu_data.curr_PC, fpu_commit_if.issue_tag, cmt_to_issue_if.fpu_data.thread_mask, cmt_to_issue_if.fpu_data.wb, cmt_to_issue_if.fpu_data.rd, fpu_commit_if.data); end if (gpu_commit_if.valid && gpu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, commit_is_if.gpu_data.warp_num, commit_is_if.gpu_data.curr_PC, gpu_commit_if.issue_tag, commit_is_if.gpu_data.thread_mask, commit_is_if.gpu_data.wb, commit_is_if.gpu_data.rd, gpu_commit_if.data); + $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.gpu_data.warp_num, cmt_to_issue_if.gpu_data.curr_PC, gpu_commit_if.issue_tag, cmt_to_issue_if.gpu_data.thread_mask, cmt_to_issue_if.gpu_data.wb, cmt_to_issue_if.gpu_data.rd, gpu_commit_if.data); end end `endif diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index d047df97..668ffc16 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -67,9 +67,9 @@ // CSR Addresses ============================================================== -`define CSR_FFLAGS 12'hF01 -`define CSR_FRM 12'hF02 -`define CSR_FCSR 12'hF03 +`define CSR_FFLAGS 12'h001 +`define CSR_FRM 12'h002 +`define CSR_FCSR 12'h003 `define CSR_VEND_ID 12'hF11 `define CSR_ARCH_ID 12'hF12 diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index e9c93ab3..c640c0f2 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -6,9 +6,8 @@ module VX_csr_data #( input wire clk, input wire reset, - VX_perf_cntrs_if perf_cntrs_if, - VX_fpu_from_csr_if fpu_from_csr_if, - VX_fpu_to_csr_if fpu_to_csr_if, + VX_cmt_to_csr_if cmt_to_csr_if, + VX_csr_to_fpu_if csr_to_fpu_if, input wire[`NW_BITS-1:0] warp_num, @@ -33,11 +32,11 @@ module VX_csr_data #( assign wr_addr = $size(wr_addr)'(write_addr); wire [`FFG_BITS-1:0] fflags_update; - assign fflags_update[4] = fpu_to_csr_if.fflags_NV; - assign fflags_update[3] = fpu_to_csr_if.fflags_DZ; - assign fflags_update[2] = fpu_to_csr_if.fflags_OF; - assign fflags_update[1] = fpu_to_csr_if.fflags_UF; - assign fflags_update[0] = fpu_to_csr_if.fflags_NX; + assign fflags_update[4] = cmt_to_csr_if.fflags_NV; + assign fflags_update[3] = cmt_to_csr_if.fflags_DZ; + assign fflags_update[2] = cmt_to_csr_if.fflags_OF; + assign fflags_update[1] = cmt_to_csr_if.fflags_UF; + assign fflags_update[0] = cmt_to_csr_if.fflags_NX; integer i; @@ -68,9 +67,23 @@ module VX_csr_data #( csr_table[wr_addr] <= write_data; end endcase - end else if (fpu_to_csr_if.valid) begin - fflags_table[fpu_to_csr_if.warp_num][`FFG_BITS-1:0] <= fflags_update; - fcsr_table[fpu_to_csr_if.warp_num][`FFG_BITS-1:0] <= fflags_update; + end else if (cmt_to_csr_if.upd_fflags) begin + fflags_table[cmt_to_csr_if.fpu_warp_num][`FFG_BITS-1:0] <= fflags_update; + fcsr_table[cmt_to_csr_if.fpu_warp_num][`FFG_BITS-1:0] <= fflags_update; + end + end + end + + reg [63:0] total_cycles, total_instrs; + + always @(posedge clk) begin + if (reset) begin + total_cycles <= 0; + total_instrs <= 0; + end else begin + total_cycles <= total_cycles + 1; + if (cmt_to_csr_if.valid) begin + total_instrs <= total_instrs + 64'(cmt_to_csr_if.num_commits); end end end @@ -87,10 +100,10 @@ module VX_csr_data #( `CSR_NT : read_data = `NUM_THREADS; `CSR_NW : read_data = `NUM_WARPS; `CSR_NC : read_data = `NUM_CORES * `NUM_CLUSTERS; - `CSR_CYCLE_L : read_data = perf_cntrs_if.total_cycles[31:0]; - `CSR_CYCLE_H : read_data = perf_cntrs_if.total_cycles[63:32]; - `CSR_INSTR_L : read_data = perf_cntrs_if.total_instrs[31:0]; - `CSR_INSTR_H : read_data = perf_cntrs_if.total_instrs[63:32]; + `CSR_CYCLE_L : read_data = total_cycles[31:0]; + `CSR_CYCLE_H : read_data = total_cycles[63:32]; + `CSR_INSTR_L : read_data = total_instrs[31:0]; + `CSR_INSTR_H : read_data = total_instrs[63:32]; `CSR_VEND_ID : read_data = `VENDOR_ID; `CSR_ARCH_ID : read_data = `ARCHITECTURE_ID; `CSR_IMPL_ID : read_data = `IMPLEMENTATION_ID; @@ -99,6 +112,6 @@ module VX_csr_data #( endcase end - assign fpu_from_csr_if.frm = frm_table[fpu_from_csr_if.warp_num]; + assign csr_to_fpu_if.frm = frm_table[csr_to_fpu_if.warp_num]; endmodule diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index 5e94c951..422aa8c3 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -6,10 +6,8 @@ module VX_csr_unit #( input wire clk, input wire reset, - VX_perf_cntrs_if perf_cntrs_if, - - VX_fpu_from_csr_if fpu_from_csr_if, - VX_fpu_to_csr_if fpu_to_csr_if, + VX_cmt_to_csr_if cmt_to_csr_if, + VX_csr_to_fpu_if csr_to_fpu_if, VX_csr_io_req_if csr_io_req_if, VX_csr_io_rsp_if csr_io_rsp_if, @@ -51,9 +49,8 @@ module VX_csr_unit #( ) csr_data ( .clk (clk), .reset (reset), - .perf_cntrs_if (perf_cntrs_if), - .fpu_to_csr_if (fpu_to_csr_if), - .fpu_from_csr_if(fpu_from_csr_if), + .cmt_to_csr_if (cmt_to_csr_if), + .csr_to_fpu_if (csr_to_fpu_if), .read_addr (csr_pipe_req_if.csr_addr), .read_data (csr_read_data_unqual), .write_enable (is_csr_s2), diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 65c9b0c5..3a1d2e04 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -233,12 +233,12 @@ `define FPU_BITS 5 `define FPU_OP(x) x[`FPU_BITS-1:0] -`define FRM_RNE 3'b000 -`define FRM_RTZ 3'b001 -`define FRM_RDN 3'b010 -`define FRM_RUP 3'b011 -`define FRM_RMM 3'b100 -`define FRM_DYN 3'b111 +`define FRM_RNE 3'b000 // round to nearest even +`define FRM_RTZ 3'b001 // round to zero +`define FRM_RDN 3'b010 // round to -inf +`define FRM_RUP 3'b011 // round to +inf +`define FRM_RMM 3'b100 // round to nearest max magnitude +`define FRM_DYN 3'b111 // dynamic mode `define FRM_BITS 3 `define FFG_BITS 5 diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 71bdba37..d622d38f 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -18,7 +18,7 @@ module VX_execute #( VX_cache_core_rsp_if dcache_rsp_if, // perf - VX_perf_cntrs_if perf_cntrs_if, + VX_cmt_to_csr_if cmt_to_csr_if, // inputs VX_alu_req_if alu_req_if, @@ -35,13 +35,13 @@ module VX_execute #( VX_commit_if lsu_commit_if, VX_commit_if csr_commit_if, VX_commit_if mul_commit_if, - VX_commit_if fpu_commit_if, + VX_fpu_to_cmt_if fpu_commit_if, VX_commit_if gpu_commit_if, output wire ebreak ); - VX_fpu_to_csr_if fpu_to_csr_if(); - VX_fpu_from_csr_if fpu_from_csr_if(); + + VX_csr_to_fpu_if csr_to_fpu_if(); VX_alu_unit #( .CORE_ID(CORE_ID) @@ -70,9 +70,8 @@ module VX_execute #( ) csr_unit ( .clk (clk), .reset (reset), - .perf_cntrs_if (perf_cntrs_if), - .fpu_to_csr_if (fpu_to_csr_if), - .fpu_from_csr_if(fpu_from_csr_if), + .cmt_to_csr_if (cmt_to_csr_if), + .csr_to_fpu_if (csr_to_fpu_if), .csr_io_req_if (csr_io_req_if), .csr_io_rsp_if (csr_io_rsp_if), .csr_req_if (csr_req_if), @@ -100,8 +99,7 @@ module VX_execute #( .clk (clk), .reset (reset), .fpu_req_if (fpu_req_if), - .fpu_from_csr_if(fpu_from_csr_if), - .fpu_to_csr_if (fpu_to_csr_if), + .csr_to_fpu_if (csr_to_fpu_if), .fpu_commit_if (fpu_commit_if) ); `else diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index e46d017d..490b3e42 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -11,11 +11,10 @@ module VX_fpu_unit #( // inputs VX_fpu_req_if fpu_req_if, - VX_fpu_from_csr_if fpu_from_csr_if, + VX_csr_to_fpu_if csr_to_fpu_if, // outputs - VX_commit_if fpu_commit_if, - VX_fpu_to_csr_if fpu_to_csr_if + VX_fpu_to_cmt_if fpu_commit_if ); localparam FOP_BITS = fpnew_pkg::OP_BITS; localparam FMTF_BITS = $clog2(fpnew_pkg::NUM_FP_FORMATS); @@ -46,11 +45,10 @@ module VX_fpu_unit #( wire fpu_in_ready, fpu_in_valid; wire fpu_out_ready, fpu_out_valid; - wire [`LOG2UP(`FPURQ_SIZE)-1:0] fpu_in_tag, fpu_out_tag; + reg [`LOG2UP(`FPURQ_SIZE)-1:0] fpu_in_tag, fpu_out_tag; + + reg [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; - wire [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; - assign fpu_operands = {fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data}; - wire [FMTF_BITS-1:0] fpu_src_fmt = fpnew_pkg::FP32; wire [FMTF_BITS-1:0] fpu_dst_fmt = fpnew_pkg::FP32; wire [FMTI_BITS-1:0] fpu_int_fmt = fpnew_pkg::INT32; @@ -58,40 +56,53 @@ module VX_fpu_unit #( wire [`NUM_THREADS-1:0][31:0] fpu_result; fpnew_pkg::status_t fpu_status; - assign fpu_from_csr_if.warp_num = fpu_req_if.warp_num; - wire is_dyn_rnd = &(fpu_req_if.frm); - wire [`FRM_BITS-1:0] real_frm = is_dyn_rnd ? fpu_from_csr_if.frm : fpu_req_if.frm; + assign csr_to_fpu_if.warp_num = fpu_req_if.warp_num; + wire [`FRM_BITS-1:0] real_frm = (fpu_req_if.frm == `FRM_DYN) ? csr_to_fpu_if.frm : fpu_req_if.frm; reg [FOP_BITS-1:0] fpu_op; reg [`FRM_BITS-1:0] fpu_rnd; reg fpu_op_mod; + reg fflags_en, fflags_en_o; always @(*) begin fpu_op = fpnew_pkg::SGNJ; - fpu_op_mod = 0; - fpu_rnd = fpu_req_if.frm; + fpu_rnd = real_frm; + fpu_op_mod = 0; + fflags_en = 1; + fpu_operands[0] = fpu_req_if.rs1_data; + fpu_operands[1] = fpu_req_if.rs2_data; + fpu_operands[2] = fpu_req_if.rs3_data; case (fpu_req_if.fpu_op) - `FPU_ADD: fpu_op = fpnew_pkg::ADD; - `FPU_SUB: begin fpu_op = fpnew_pkg::ADD; fpu_op_mod = 1; end - `FPU_MUL: fpu_op = fpnew_pkg::MUL; - `FPU_DIV: fpu_op = fpnew_pkg::DIV; + `FPU_ADD: begin + fpu_op = fpnew_pkg::ADD; + fpu_operands[1] = fpu_req_if.rs1_data; + fpu_operands[2] = fpu_req_if.rs2_data; + end + `FPU_SUB: begin + fpu_op = fpnew_pkg::ADD; + fpu_operands[1] = fpu_req_if.rs1_data; + fpu_operands[2] = fpu_req_if.rs2_data; + fpu_op_mod = 1; + end + `FPU_MUL: fpu_op = fpnew_pkg::MUL; + `FPU_DIV: fpu_op = fpnew_pkg::DIV; `FPU_SQRT: fpu_op = fpnew_pkg::SQRT; `FPU_MADD: fpu_op = fpnew_pkg::FMADD; `FPU_MSUB: begin fpu_op = fpnew_pkg::FMADD; fpu_op_mod = 1; end `FPU_NMSUB: fpu_op = fpnew_pkg::FNMSUB; `FPU_NMADD: begin fpu_op = fpnew_pkg::FNMSUB; fpu_op_mod = 1; end - `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; end - `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; end - `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; end + `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; fflags_en = 0; end + `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; fflags_en = 0; end + `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; fflags_en = 0; end `FPU_MIN: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RNE; end `FPU_MAX: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RTZ; end `FPU_CVTWS: fpu_op = fpnew_pkg::F2I; - `FPU_CVTWUS:begin fpu_op = fpnew_pkg::ADD; fpu_op_mod = 1; end + `FPU_CVTWUS:begin fpu_op = fpnew_pkg::F2I; fpu_op_mod = 1; end `FPU_CVTSW: fpu_op = fpnew_pkg::I2F; `FPU_CVTSWU:begin fpu_op = fpnew_pkg::I2F; fpu_op_mod = 1; end - `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_op_mod = 1; fpu_rnd = `FRM_RUP; end - `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_op_mod = 0; fpu_rnd = `FRM_RUP; end - `FPU_CLASS: fpu_op = fpnew_pkg::CLASSIFY; + `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end + `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end + `FPU_CLASS: begin fpu_op = fpnew_pkg::CLASSIFY; fflags_en = 0; end `FPU_CMP: fpu_op = fpnew_pkg::CMP; default:; endcase @@ -102,7 +113,7 @@ module VX_fpu_unit #( fpnew_top #( .Features (FPU_FEATURES), .Implementation (FPU_IMPLEMENTATION), - .TagType (logic [`LOG2UP(`FPURQ_SIZE)-1:0]) + .TagType (logic[`LOG2UP(`FPURQ_SIZE)-1+1:0]) ) fpnew_core ( .clk_i (clk), .rst_ni (1'b1), @@ -114,13 +125,13 @@ module VX_fpu_unit #( .dst_fmt_i (fpu_dst_fmt), .int_fmt_i (fpu_int_fmt), .vectorial_op_i (1'b1), - .tag_i (fpu_in_tag), + .tag_i ({fflags_en, fpu_in_tag}), .in_valid_i (fpu_in_valid), .in_ready_o (fpu_in_ready), .flush_i (reset), .result_o (fpu_result), .status_o (fpu_status), - .tag_o (fpu_out_tag), + .tag_o ({fflags_en_o, fpu_out_tag}), .out_valid_o (fpu_out_valid), .out_ready_i (fpu_out_ready), `UNUSED_PIN (busy_o) @@ -128,30 +139,22 @@ module VX_fpu_unit #( `ENABLE_TRACING - reg [`NW_BITS-1:0] rsp_warp_num_buf [`ISSUEQ_SIZE]; - assign fpu_in_valid = fpu_req_if.valid; assign fpu_in_tag = fpu_req_if.issue_tag; - always @(posedge clk) begin - if (fpu_req_if.valid && fpu_req_if.ready) begin - rsp_warp_num_buf[fpu_in_tag] <= fpu_req_if.warp_num; - end - end - assign fpu_req_if.ready = fpu_in_ready; assign fpu_commit_if.valid = fpu_out_valid; assign fpu_commit_if.issue_tag = fpu_out_tag; assign fpu_commit_if.data = fpu_result; - assign fpu_out_ready = fpu_commit_if.ready; - assign fpu_to_csr_if.valid = fpu_out_valid && fpu_req_if.ready; - assign fpu_to_csr_if.warp_num = rsp_warp_num_buf[fpu_out_tag]; - assign fpu_to_csr_if.fflags_NV = fpu_status.NV; - assign fpu_to_csr_if.fflags_DZ = fpu_status.DZ; - assign fpu_to_csr_if.fflags_OF = fpu_status.OF; - assign fpu_to_csr_if.fflags_UF = fpu_status.UF; - assign fpu_to_csr_if.fflags_NX = fpu_status.NX; + assign fpu_commit_if.upd_fflags = fflags_en_o; + assign fpu_commit_if.fflags_NV = fpu_status.NV; + assign fpu_commit_if.fflags_DZ = fpu_status.DZ; + assign fpu_commit_if.fflags_OF = fpu_status.OF; + assign fpu_commit_if.fflags_UF = fpu_status.UF; + assign fpu_commit_if.fflags_NX = fpu_status.NX; + + assign fpu_out_ready = fpu_commit_if.ready; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index 43e32009..fab66404 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -5,8 +5,6 @@ module VX_gpr_fp_ctrl ( input wire clk, input wire reset, - - VX_decode_if decode_if, input wire [`NUM_THREADS-1:0][31:0] rs1_int_data, input wire [`NUM_THREADS-1:0][31:0] rs2_int_data, @@ -17,10 +15,7 @@ module VX_gpr_fp_ctrl ( output wire [`NR_BITS-1:0] raddr1, output wire [`NR_BITS-1:0] raddr2, - VX_gpr_data_if gpr_data_if, - - input wire schedule_delay, - output wire gpr_delay + VX_gpr_read_if gpr_read_if ); // param localparam GPR_DELAY_WID = 1; @@ -32,63 +27,74 @@ module VX_gpr_fp_ctrl ( reg [`NUM_THREADS-1:0][31:0] rs2_data; reg [`NUM_THREADS-1:0][31:0] rs3_data; + wire gpr_delay; + + wire gpr_fire = gpr_read_if.valid && gpr_read_if.ready; + always @(posedge clk) begin if (reset) begin multi_cyc_state <= 0; - end else if (!schedule_delay) begin - multi_cyc_state <= decode_if.use_rs3 && (0 == multi_cyc_state); - end else begin + end else if (gpr_delay) begin + multi_cyc_state <= 1; + end else if (gpr_fire) begin multi_cyc_state <= 0; end end // select rs1 data + always @(posedge clk) begin if (reset) begin tmp_rs1_data <= 0; end else begin - if (decode_if.rs1_is_fp) begin - tmp_rs1_data <= rs1_fp_data; - end else begin - tmp_rs1_data <= rs1_int_data; - end + if (gpr_delay) begin + if (gpr_read_if.rs1_is_fp) begin + tmp_rs1_data <= rs1_fp_data; + end else begin + tmp_rs1_data <= rs1_int_data; + end + end end end // select rs2 data + always @(posedge clk) begin if(reset) begin tmp_rs2_data <= 0; end else begin - if (decode_if.rs2_is_fp) begin - tmp_rs2_data <= rs2_fp_data; - end else begin - tmp_rs2_data <= rs2_int_data; - end + if (gpr_delay) begin + if (gpr_read_if.rs2_is_fp) begin + tmp_rs2_data <= rs2_fp_data; + end else begin + tmp_rs2_data <= rs2_int_data; + end + end end end // outputs - assign gpr_delay = decode_if.use_rs3 && (0 == multi_cyc_state); + assign gpr_delay = gpr_read_if.valid && gpr_read_if.use_rs3 && (0 == multi_cyc_state); - assign raddr1 = multi_cyc_state ? decode_if.rs3 : decode_if.rs1; - assign raddr2 = decode_if.rs2; + assign raddr1 = multi_cyc_state ? gpr_read_if.rs3 : gpr_read_if.rs1; + assign raddr2 = gpr_read_if.rs2; always @(*) begin - if (decode_if.use_rs3) begin + if (gpr_read_if.use_rs3) begin rs1_data = tmp_rs1_data; rs2_data = tmp_rs2_data; rs3_data = rs1_fp_data; end else begin - rs1_data = decode_if.rs1_is_fp ? rs1_fp_data : rs1_int_data; - rs2_data = decode_if.rs2_is_fp ? rs2_fp_data : rs2_int_data; + rs1_data = gpr_read_if.rs1_is_fp ? rs1_fp_data : rs1_int_data; + rs2_data = gpr_read_if.rs2_is_fp ? rs2_fp_data : rs2_int_data; rs3_data = {`NUM_THREADS{32'h8000_0000}}; // default value: -0 in single fp end end - assign gpr_data_if.rs1_data = rs1_data; - assign gpr_data_if.rs2_data = rs2_data; - assign gpr_data_if.rs3_data = rs3_data; + assign gpr_read_if.ready = ~gpr_delay; + assign gpr_read_if.rs1_data = rs1_data; + assign gpr_read_if.rs2_data = rs2_data; + assign gpr_read_if.rs3_data = rs3_data; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 33044f30..5bb71a32 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -7,14 +7,10 @@ module VX_gpr_stage #( input wire reset, // inputs - VX_wb_if writeback_if, - VX_decode_if decode_if, + VX_wb_if writeback_if, // outputs - VX_gpr_data_if gpr_data_if, - - input wire schedule_delay, - output wire gpr_delay + VX_gpr_read_if gpr_read_if ); `UNUSED_VAR (reset) @@ -63,27 +59,24 @@ module VX_gpr_stage #( .clk (clk), .reset (reset), - //inputs - .decode_if (decode_if), - .rs1_int_data (rs1_int_data[decode_if.warp_num]), - .rs2_int_data (rs2_int_data[decode_if.warp_num]), - .rs1_fp_data (rs1_fp_data[decode_if.warp_num]), - .rs2_fp_data (rs2_fp_data[decode_if.warp_num]), + //inputs + .rs1_int_data (rs1_int_data[gpr_read_if.warp_num]), + .rs2_int_data (rs2_int_data[gpr_read_if.warp_num]), + .rs1_fp_data (rs1_fp_data[gpr_read_if.warp_num]), + .rs2_fp_data (rs2_fp_data[gpr_read_if.warp_num]), // outputs .raddr1 (raddr1), .raddr2 (raddr2), - .gpr_data_if (gpr_data_if), - .schedule_delay (schedule_delay), - .gpr_delay (gpr_delay) + .gpr_read_if (gpr_read_if) ); `else - assign raddr1 = decode_if.rs1; - assign raddr2 = decode_if.rs2; - assign gpr_data_if.rs1_data = rs1_int_data[decode_if.warp_num]; - assign gpr_data_if.rs2_data = rs2_int_data[decode_if.warp_num]; - assign gpr_data_if.rs3_data = 0; + assign raddr1 = gpr_read_if.rs1; + assign raddr2 = gpr_read_if.rs2; + assign gpr_read_if.rs1_data = rs1_int_data[gpr_read_if.warp_num]; + assign gpr_read_if.rs2_data = rs2_int_data[gpr_read_if.warp_num]; + assign gpr_read_if.rs3_data = 0; assign gpr_delay = 0; `UNUSED_VAR (schedule_delay) `endif diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 0f23353e..a445022f 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -8,7 +8,7 @@ module VX_issue #( VX_decode_if decode_if, VX_wb_if writeback_if, - VX_commit_is_if commit_is_if, + VX_cmt_to_issue_if cmt_to_issue_if, VX_alu_req_if alu_req_if, VX_lsu_req_if lsu_req_if, @@ -17,11 +17,19 @@ module VX_issue #( VX_fpu_req_if fpu_req_if, VX_gpu_req_if gpu_req_if ); - VX_gpr_data_if gpr_data_if(); - wire schedule_delay; - wire gpr_delay; + VX_gpr_read_if gpr_read_if(); + assign gpr_read_if.valid = decode_if.valid; + assign gpr_read_if.warp_num = decode_if.warp_num; + assign gpr_read_if.rs1 = decode_if.rs1; + assign gpr_read_if.rs2 = decode_if.rs2; + assign gpr_read_if.rs3 = decode_if.rs3; + assign gpr_read_if.rs1_is_fp = decode_if.rs1_is_fp; + assign gpr_read_if.rs2_is_fp = decode_if.rs2_is_fp; + assign gpr_read_if.use_rs3 = decode_if.use_rs3; + wire [`ISTAG_BITS-1:0] issue_tag, issue_tmp_tag; + wire gpr_busy = ~gpr_read_if.ready; wire alu_busy = ~alu_req_if.ready; wire lsu_busy = ~lsu_req_if.ready; wire csr_busy = ~csr_req_if.ready; @@ -36,16 +44,15 @@ module VX_issue #( .reset (reset), .decode_if (decode_if), .writeback_if (writeback_if), - .commit_is_if (commit_is_if), - .gpr_busy (gpr_delay), + .cmt_to_issue_if(cmt_to_issue_if), + .gpr_busy (gpr_busy), .alu_busy (alu_busy), .lsu_busy (lsu_busy), .csr_busy (csr_busy), .mul_busy (mul_busy), .fpu_busy (fpu_busy), .gpu_busy (gpu_busy), - .issue_tag (issue_tag), - .schedule_delay (schedule_delay), + .issue_tag (issue_tag), `UNUSED_PIN (is_empty) ); @@ -53,19 +60,16 @@ module VX_issue #( .CORE_ID(CORE_ID) ) gpr_stage ( .clk (clk), - .reset (reset), - .decode_if (decode_if), + .reset (reset), .writeback_if (writeback_if), - .gpr_data_if (gpr_data_if), - .schedule_delay (schedule_delay), - .gpr_delay (gpr_delay) + .gpr_read_if (gpr_read_if) ); VX_decode_if decode_tmp_if(); - VX_gpr_data_if gpr_data_tmp_if(); + VX_gpr_read_if gpr_data_tmp_if(); - wire stall = ~alu_req_if.ready || schedule_delay; - wire flush = alu_req_if.ready && schedule_delay; + wire stall = ~alu_req_if.ready || ~decode_if.ready; + wire flush = alu_req_if.ready && ~decode_if.ready; VX_generic_register #( .N(1 + `ISTAG_BITS + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + 1 + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) @@ -74,13 +78,13 @@ module VX_issue #( .reset (reset), .stall (stall), .flush (flush), - .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm, gpr_data_if.rs1_data, gpr_data_if.rs2_data, gpr_data_if.rs3_data}), + .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm, gpr_read_if.rs1_data, gpr_read_if.rs2_data, gpr_read_if.rs3_data}), .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.frm, gpr_data_tmp_if.rs1_data, gpr_data_tmp_if.rs2_data, gpr_data_tmp_if.rs3_data}) ); VX_issue_demux issue_demux ( .decode_if (decode_tmp_if), - .gpr_data_if (gpr_data_tmp_if), + .gpr_read_if (gpr_data_tmp_if), .issue_tag (issue_tmp_tag), .alu_req_if (alu_req_if), .lsu_req_if (lsu_req_if), diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index 09a73ddf..5e1e46f7 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -101,7 +101,7 @@ module VX_pipeline #( assign csr_io_rsp_data = csr_io_rsp_if.data; assign csr_io_rsp_if.ready = csr_io_rsp_ready; - VX_perf_cntrs_if perf_cntrs_if(); + VX_cmt_to_csr_if cmt_to_csr_if(); VX_decode_if decode_if(); VX_branch_ctl_if branch_ctl_if(); VX_warp_ctl_if warp_ctl_if(); @@ -113,14 +113,14 @@ module VX_pipeline #( VX_fpu_req_if fpu_req_if(); VX_gpu_req_if gpu_req_if(); VX_wb_if writeback_if(); - VX_commit_is_if commit_is_if(); + VX_cmt_to_issue_if cmt_to_issue_if(); VX_wstall_if wstall_if(); VX_join_if join_if(); VX_commit_if alu_commit_if(); VX_commit_if lsu_commit_if(); VX_commit_if csr_commit_if(); VX_commit_if mul_commit_if(); - VX_commit_if fpu_commit_if(); + VX_fpu_to_cmt_if fpu_commit_if(); VX_commit_if gpu_commit_if(); VX_fetch #( @@ -157,7 +157,7 @@ module VX_pipeline #( .decode_if (decode_if), .writeback_if (writeback_if), - .commit_is_if (commit_is_if), + .cmt_to_issue_if (cmt_to_issue_if), .alu_req_if (alu_req_if), .lsu_req_if (lsu_req_if), @@ -180,7 +180,7 @@ module VX_pipeline #( .csr_io_req_if (csr_io_req_if), .csr_io_rsp_if (csr_io_rsp_if), - .perf_cntrs_if (perf_cntrs_if), + .cmt_to_csr_if (cmt_to_csr_if), .alu_req_if (alu_req_if), .lsu_req_if (lsu_req_if), @@ -214,9 +214,9 @@ module VX_pipeline #( .fpu_commit_if (fpu_commit_if), .gpu_commit_if (gpu_commit_if), - .commit_is_if (commit_is_if), + .cmt_to_issue_if(cmt_to_issue_if), .writeback_if (writeback_if), - .perf_cntrs_if (perf_cntrs_if) + .cmt_to_csr_if (cmt_to_csr_if) ); assign dcache_req_valid = core_dcache_req_if.valid; diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index e20ece07..19055311 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -3,22 +3,21 @@ module VX_scheduler #( parameter CORE_ID = 0 ) ( - input wire clk, - input wire reset, + input wire clk, + input wire reset, - VX_decode_if decode_if, - VX_wb_if writeback_if, - VX_commit_is_if commit_is_if, - input wire gpr_busy, - input wire alu_busy, - input wire lsu_busy, - input wire csr_busy, - input wire mul_busy, - input wire fpu_busy, - input wire gpu_busy, + VX_decode_if decode_if, + VX_wb_if writeback_if, + VX_cmt_to_issue_if cmt_to_issue_if, + input wire gpr_busy, + input wire alu_busy, + input wire lsu_busy, + input wire csr_busy, + input wire mul_busy, + input wire fpu_busy, + input wire gpu_busy, output wire [`ISTAG_BITS-1:0] issue_tag, - output wire schedule_delay, - output wire is_empty + output wire is_empty ); localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); @@ -53,7 +52,7 @@ module VX_scheduler #( wire rs3_inuse_qual = rs3_inuse && decode_if.use_rs3; wire rd_inuse_qual = rd_inuse && decode_if.wb; - wire rename_valid = (rs1_inuse_qual || rs2_inuse_qual || rs3_inuse_qual || rd_inuse_qual); + wire inuse_valid = (rd_inuse_qual || rs1_inuse_qual || rs2_inuse_qual || rs3_inuse_qual); wire ex_stalled = ((gpr_busy) || (alu_busy && (decode_if.ex_type == `EX_ALU)) @@ -63,9 +62,9 @@ module VX_scheduler #( || (fpu_busy && (decode_if.ex_type == `EX_FPU)) || (gpu_busy && (decode_if.ex_type == `EX_GPU))); - wire iq_full; + wire issue_buf_full; - wire stall = (ex_stalled || rename_valid || iq_full) && decode_if.valid; + wire stall = (ex_stalled || inuse_valid || issue_buf_full) && decode_if.valid; wire acquire_rd = decode_if.valid && (decode_if.wb != 0) && ~stall; @@ -85,7 +84,7 @@ module VX_scheduler #( inuse_table[w][i] <= 0; end end - count_valid <= 0; + count_valid <= 0; end else begin if (acquire_rd) begin inuse_registers[decode_if.warp_num][read_rd] <= decode_if.thread_mask; @@ -103,19 +102,19 @@ module VX_scheduler #( wire ib_acquire = decode_if.valid && ~stall; `DEBUG_BLOCK( - wire [`NW_BITS-1:0] cis_alu_warp_num = commit_is_if.alu_data.warp_num; - wire [`NUM_THREADS-1:0] cis_alu_thread_mask = commit_is_if.alu_data.thread_mask; - wire [31:0] cis_alu_curr_PC = commit_is_if.alu_data.curr_PC; - wire [`NR_BITS-1:0] cis_alu_rd = commit_is_if.alu_data.rd; - wire cis_alu_rd_is_fp = commit_is_if.alu_data.rd_is_fp; - wire cis_alu_wb = commit_is_if.alu_data.wb; + wire [`NW_BITS-1:0] cis_alu_warp_num = cmt_to_issue_if.alu_data.warp_num; + wire [`NUM_THREADS-1:0] cis_alu_thread_mask = cmt_to_issue_if.alu_data.thread_mask; + wire [31:0] cis_alu_curr_PC = cmt_to_issue_if.alu_data.curr_PC; + wire [`NR_BITS-1:0] cis_alu_rd = cmt_to_issue_if.alu_data.rd; + wire cis_alu_rd_is_fp = cmt_to_issue_if.alu_data.rd_is_fp; + wire cis_alu_wb = cmt_to_issue_if.alu_data.wb; - wire [`NW_BITS-1:0] cis_fpu_warp_num = commit_is_if.fpu_data.warp_num; - wire [`NUM_THREADS-1:0] cis_fpu_thread_mask = commit_is_if.fpu_data.thread_mask; - wire [31:0] cis_fpu_curr_PC = commit_is_if.fpu_data.curr_PC; - wire [`NR_BITS-1:0] cis_fpu_rd = commit_is_if.fpu_data.rd; - wire cis_fpu_rd_is_fp = commit_is_if.fpu_data.rd_is_fp; - wire cis_fpu_wb = commit_is_if.fpu_data.wb; + wire [`NW_BITS-1:0] cis_fpu_warp_num = cmt_to_issue_if.fpu_data.warp_num; + wire [`NUM_THREADS-1:0] cis_fpu_thread_mask = cmt_to_issue_if.fpu_data.thread_mask; + wire [31:0] cis_fpu_curr_PC = cmt_to_issue_if.fpu_data.curr_PC; + wire [`NR_BITS-1:0] cis_fpu_rd = cmt_to_issue_if.fpu_data.rd; + wire cis_fpu_rd_is_fp = cmt_to_issue_if.fpu_data.rd_is_fp; + wire cis_fpu_wb = cmt_to_issue_if.fpu_data.wb; ) VX_cam_buffer #( @@ -128,22 +127,22 @@ module VX_scheduler #( .write_data ({decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.rd_is_fp, decode_if.wb}), .write_addr (issue_tag), .acquire_slot (ib_acquire), - .release_slot ({commit_is_if.alu_valid, commit_is_if.lsu_valid, commit_is_if.csr_valid, commit_is_if.mul_valid, commit_is_if.fpu_valid, commit_is_if.gpu_valid}), - .read_addr ({commit_is_if.alu_tag, commit_is_if.lsu_tag, commit_is_if.csr_tag, commit_is_if.mul_tag, commit_is_if.fpu_tag, commit_is_if.gpu_tag}), - .read_data ({commit_is_if.alu_data, commit_is_if.lsu_data, commit_is_if.csr_data, commit_is_if.mul_data, commit_is_if.fpu_data, commit_is_if.gpu_data}), - .full (iq_full) + .release_slot ({cmt_to_issue_if.alu_valid, cmt_to_issue_if.lsu_valid, cmt_to_issue_if.csr_valid, cmt_to_issue_if.mul_valid, cmt_to_issue_if.fpu_valid, cmt_to_issue_if.gpu_valid}), + .read_addr ({cmt_to_issue_if.alu_tag, cmt_to_issue_if.lsu_tag, cmt_to_issue_if.csr_tag, cmt_to_issue_if.mul_tag, cmt_to_issue_if.fpu_tag, cmt_to_issue_if.gpu_tag}), + .read_data ({cmt_to_issue_if.alu_data, cmt_to_issue_if.lsu_data, cmt_to_issue_if.csr_data, cmt_to_issue_if.mul_data, cmt_to_issue_if.fpu_data, cmt_to_issue_if.gpu_data}), + .full (issue_buf_full) ); assign decode_if.ready = ~stall; - assign schedule_delay = stall; - assign is_empty = (0 == count_valid); `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (stall) begin - $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, iq_full=%b, inuse=%b%b%b%b, alu=%b, lsu=%b, csr=%b, mul=%b, fpu=%b, gpu=%b", $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, iq_full, rd_inuse_qual, rs1_inuse_qual, rs2_inuse_qual, rs3_inuse_qual, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); + $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, gpr=%b, alu=%b, lsu=%b, csr=%b, mul=%b, fpu=%b, gpu=%b", + $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, rd_inuse_qual, rs1_inuse_qual, + rs2_inuse_qual, rs3_inuse_qual, gpr_busy, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); end end `endif diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index dd87330c..606be34e 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -10,19 +10,19 @@ module VX_writeback #( VX_commit_if alu_commit_if, VX_commit_if lsu_commit_if, VX_commit_if mul_commit_if, - VX_commit_if fpu_commit_if, + VX_fpu_to_cmt_if fpu_commit_if, VX_commit_if csr_commit_if, - VX_commit_is_if commit_is_if, + VX_cmt_to_issue_if cmt_to_issue_if, // outputs VX_wb_if writeback_if ); - wire alu_valid = alu_commit_if.valid && commit_is_if.alu_data.wb; - wire lsu_valid = lsu_commit_if.valid && commit_is_if.lsu_data.wb; - wire csr_valid = csr_commit_if.valid && commit_is_if.csr_data.wb; - wire mul_valid = mul_commit_if.valid && commit_is_if.mul_data.wb; - wire fpu_valid = fpu_commit_if.valid && commit_is_if.fpu_data.wb; + wire alu_valid = alu_commit_if.valid && cmt_to_issue_if.alu_data.wb; + wire lsu_valid = lsu_commit_if.valid && cmt_to_issue_if.lsu_data.wb; + wire csr_valid = csr_commit_if.valid && cmt_to_issue_if.csr_data.wb; + wire mul_valid = mul_commit_if.valid && cmt_to_issue_if.mul_data.wb; + wire fpu_valid = fpu_commit_if.valid && cmt_to_issue_if.fpu_data.wb; VX_wb_if writeback_tmp_if(); @@ -33,39 +33,39 @@ module VX_writeback #( fpu_valid ? fpu_commit_if.valid : 0; - assign writeback_tmp_if.warp_num = alu_valid ? commit_is_if.alu_data.warp_num : - lsu_valid ? commit_is_if.lsu_data.warp_num : - csr_valid ? commit_is_if.csr_data.warp_num : - mul_valid ? commit_is_if.mul_data.warp_num : - fpu_valid ? commit_is_if.fpu_data.warp_num : + assign writeback_tmp_if.warp_num = alu_valid ? cmt_to_issue_if.alu_data.warp_num : + lsu_valid ? cmt_to_issue_if.lsu_data.warp_num : + csr_valid ? cmt_to_issue_if.csr_data.warp_num : + mul_valid ? cmt_to_issue_if.mul_data.warp_num : + fpu_valid ? cmt_to_issue_if.fpu_data.warp_num : 0; - assign writeback_tmp_if.curr_PC = alu_valid ? commit_is_if.alu_data.curr_PC : - lsu_valid ? commit_is_if.lsu_data.curr_PC : - csr_valid ? commit_is_if.csr_data.curr_PC : - mul_valid ? commit_is_if.mul_data.curr_PC : - fpu_valid ? commit_is_if.fpu_data.curr_PC : + assign writeback_tmp_if.curr_PC = alu_valid ? cmt_to_issue_if.alu_data.curr_PC : + lsu_valid ? cmt_to_issue_if.lsu_data.curr_PC : + csr_valid ? cmt_to_issue_if.csr_data.curr_PC : + mul_valid ? cmt_to_issue_if.mul_data.curr_PC : + fpu_valid ? cmt_to_issue_if.fpu_data.curr_PC : 0; - assign writeback_tmp_if.thread_mask = alu_valid ? commit_is_if.alu_data.thread_mask : - lsu_valid ? commit_is_if.lsu_data.thread_mask : - csr_valid ? commit_is_if.csr_data.thread_mask : - mul_valid ? commit_is_if.mul_data.thread_mask : - fpu_valid ? commit_is_if.fpu_data.thread_mask : + assign writeback_tmp_if.thread_mask = alu_valid ? cmt_to_issue_if.alu_data.thread_mask : + lsu_valid ? cmt_to_issue_if.lsu_data.thread_mask : + csr_valid ? cmt_to_issue_if.csr_data.thread_mask : + mul_valid ? cmt_to_issue_if.mul_data.thread_mask : + fpu_valid ? cmt_to_issue_if.fpu_data.thread_mask : 0; - assign writeback_tmp_if.rd = alu_valid ? commit_is_if.alu_data.rd : - lsu_valid ? commit_is_if.lsu_data.rd : - csr_valid ? commit_is_if.csr_data.rd : - mul_valid ? commit_is_if.mul_data.rd : - fpu_valid ? commit_is_if.fpu_data.rd : + assign writeback_tmp_if.rd = alu_valid ? cmt_to_issue_if.alu_data.rd : + lsu_valid ? cmt_to_issue_if.lsu_data.rd : + csr_valid ? cmt_to_issue_if.csr_data.rd : + mul_valid ? cmt_to_issue_if.mul_data.rd : + fpu_valid ? cmt_to_issue_if.fpu_data.rd : 0; assign writeback_tmp_if.rd_is_fp = alu_valid ? 0 : - lsu_valid ? commit_is_if.lsu_data.rd_is_fp : + lsu_valid ? cmt_to_issue_if.lsu_data.rd_is_fp : csr_valid ? 0 : mul_valid ? 0 : - fpu_valid ? commit_is_if.fpu_data.rd_is_fp : + fpu_valid ? cmt_to_issue_if.fpu_data.rd_is_fp : 0; assign writeback_tmp_if.data = alu_valid ? alu_commit_if.data : @@ -94,11 +94,11 @@ module VX_writeback #( assign mul_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid; assign fpu_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid && !mul_valid; - // special workaround to control RISC-V benchmarks termination on Verilator - reg [31:0] last_data_wb /* verilator public */; + // special workaround to get RISC-V tests Pass status on Verilator + reg [31:0] last_data_wb [`NUM_REGS-1:0] /* verilator public */; always @(posedge clk) begin - if (writeback_tmp_if.valid && ~stall && (writeback_tmp_if.rd == 28)) begin - last_data_wb <= writeback_tmp_if.data[0]; + if (writeback_tmp_if.valid && ~stall) begin + last_data_wb[writeback_tmp_if.rd] <= writeback_tmp_if.data[0]; end end diff --git a/hw/rtl/interfaces/VX_cmt_to_csr_if.v b/hw/rtl/interfaces/VX_cmt_to_csr_if.v new file mode 100644 index 00000000..7badc5bf --- /dev/null +++ b/hw/rtl/interfaces/VX_cmt_to_csr_if.v @@ -0,0 +1,21 @@ +`ifndef VX_CMT_TO_CSR_IF +`define VX_CMT_TO_CSR_IF + +`include "VX_define.vh" + +interface VX_cmt_to_csr_if (); + + wire valid; + wire [`NE_BITS:0] num_commits; + + wire upd_fflags; + wire [`NW_BITS-1:0] fpu_warp_num; + wire fflags_NV; + wire fflags_DZ; + wire fflags_OF; + wire fflags_UF; + wire fflags_NX; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_commit_is_if.v b/hw/rtl/interfaces/VX_cmt_to_issue_if.v similarity index 91% rename from hw/rtl/interfaces/VX_commit_is_if.v rename to hw/rtl/interfaces/VX_cmt_to_issue_if.v index da6aea23..2e9135c1 100644 --- a/hw/rtl/interfaces/VX_commit_is_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_issue_if.v @@ -1,5 +1,5 @@ -`ifndef VX_COMMIT_IS_IF -`define VX_COMMIT_IS_IF +`ifndef VX_CMT_TO_ISSUE_IF +`define VX_CMT_TO_ISSUE_IF `include "VX_define.vh" @@ -13,7 +13,7 @@ typedef struct packed { } is_data_t; -interface VX_commit_is_if (); +interface VX_cmt_to_issue_if (); wire alu_valid; wire lsu_valid; diff --git a/hw/rtl/interfaces/VX_fpu_from_csr_if.v b/hw/rtl/interfaces/VX_csr_to_fpu_if.v similarity index 52% rename from hw/rtl/interfaces/VX_fpu_from_csr_if.v rename to hw/rtl/interfaces/VX_csr_to_fpu_if.v index 096b576c..c6e3b3bd 100644 --- a/hw/rtl/interfaces/VX_fpu_from_csr_if.v +++ b/hw/rtl/interfaces/VX_csr_to_fpu_if.v @@ -1,5 +1,5 @@ -`ifndef VX_FPU_FROM_CSR_IF -`define VX_FPU_FROM_CSR_IF +`ifndef VX_CSR_TO_FPU_IF +`define VX_CSR_TO_FPU_IF `include "VX_define.vh" @@ -7,9 +7,9 @@ `IGNORE_WARNINGS_BEGIN `endif -interface VX_fpu_from_csr_if (); +interface VX_csr_to_fpu_if (); - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] warp_num; wire [`FRM_BITS-1:0] frm; endinterface diff --git a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v new file mode 100644 index 00000000..ca2cb619 --- /dev/null +++ b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v @@ -0,0 +1,21 @@ +`ifndef VX_FPU_TO_CMT_IF +`define VX_FPU_TO_CMT_IF + +`include "VX_define.vh" + +interface VX_fpu_to_cmt_if (); + + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NUM_THREADS-1:0][31:0] data; + wire upd_fflags; + wire fflags_NV; + wire fflags_DZ; + wire fflags_OF; + wire fflags_UF; + wire fflags_NX; + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_gpr_data_if.v b/hw/rtl/interfaces/VX_gpr_data_if.v deleted file mode 100644 index e3a1a311..00000000 --- a/hw/rtl/interfaces/VX_gpr_data_if.v +++ /dev/null @@ -1,14 +0,0 @@ -`ifndef VX_GPR_DATA_IF -`define VX_GPR_DATA_IF - -`include "VX_define.vh" - -interface VX_gpr_data_if (); - - wire [`NUM_THREADS-1:0][31:0] rs1_data; - wire [`NUM_THREADS-1:0][31:0] rs2_data; - wire [`NUM_THREADS-1:0][31:0] rs3_data; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_gpr_read_if.v b/hw/rtl/interfaces/VX_gpr_read_if.v new file mode 100644 index 00000000..44d2475c --- /dev/null +++ b/hw/rtl/interfaces/VX_gpr_read_if.v @@ -0,0 +1,29 @@ +`ifndef VX_GPR_READ_IF +`define VX_GPR_READ_IF + +`include "VX_define.vh" + +interface VX_gpr_read_if (); + + wire valid; + + wire [`NW_BITS-1:0] warp_num; + + wire [`NR_BITS-1:0] rs1; + wire [`NR_BITS-1:0] rs2; + wire [`NR_BITS-1:0] rs3; + + wire use_rs3; + + wire rs1_is_fp; + wire rs2_is_fp; + + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + wire [`NUM_THREADS-1:0][31:0] rs3_data; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_perf_cntrs_if.v b/hw/rtl/interfaces/VX_perf_cntrs_if.v deleted file mode 100644 index daad411f..00000000 --- a/hw/rtl/interfaces/VX_perf_cntrs_if.v +++ /dev/null @@ -1,13 +0,0 @@ -`ifndef VX_PERF_CNTRS_IF -`define VX_PERF_CNTRS_IF - -`include "VX_define.vh" - -interface VX_perf_cntrs_if (); - - wire [63:0] total_cycles; - wire [63:0] total_instrs; - -endinterface - -`endif \ No newline at end of file diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index 4ea6866a..821e3525 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -237,7 +237,7 @@ void Simulator::flush_caches(uint32_t mem_addr, uint32_t size) { #endif } -bool Simulator::run() { +void Simulator::run() { #ifndef NDEBUG std::cout << timestamp << ": [sim] run()" << std::endl; #endif @@ -252,20 +252,18 @@ bool Simulator::run() { } // wait 5 cycles to flush the pipeline - this->wait(5); + this->wait(5); +} +int Simulator::get_status(int reg) { // check riscv-tests PASSED/FAILED status -#if (NUM_CLUSTERS == 1 && NUM_CORES == 1) - int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb & 0xf; -#else -#if (NUM_CLUSTERS == 1) - int status = (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb & 0xf; -#else - int status = (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb & 0xf; -#endif -#endif - - return (status == 1); + #if (NUM_CLUSTERS == 1 && NUM_CORES == 1) + return (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb[reg]; + #elif (NUM_CLUSTERS == 1) + return (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb[reg]; + #else + return (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb[reg]; + #endif } void Simulator::load_bin(const char* program_file) { diff --git a/hw/simulate/simulator.h b/hw/simulate/simulator.h index 6839f12e..26c29fd6 100644 --- a/hw/simulate/simulator.h +++ b/hw/simulate/simulator.h @@ -43,7 +43,8 @@ public: void attach_ram(RAM* ram); - bool run(); + void run(); + int get_status(int reg); void print_stats(std::ostream& out); private: diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index b18dc11a..c1176e37 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -9,9 +9,8 @@ int main(int argc, char **argv) #ifdef ALL_TESTS bool passed = true; - std::string tests[] = { - "../../../benchmarks/riscv_tests/rv32uf-p-fadd.hex", - /*"../../../benchmarks/riscv_tests/rv32ui-p-add.hex", + std::string tests[] = {/* + "../../../benchmarks/riscv_tests/rv32ui-p-add.hex", "../../../benchmarks/riscv_tests/rv32ui-p-addi.hex", "../../../benchmarks/riscv_tests/rv32ui-p-and.hex", "../../../benchmarks/riscv_tests/rv32ui-p-andi.hex", @@ -58,20 +57,23 @@ int main(int argc, char **argv) "../../../benchmarks/riscv_tests/rv32um-p-mulhu.hex", "../../../benchmarks/riscv_tests/rv32um-p-rem.hex", "../../../benchmarks/riscv_tests/rv32um-p-remu.hex", -#endif +#endif*/ + }; + + std::string tests_fp[] = { #ifdef EXT_F_ENABLE - "../../../benchmarks/riscv_tests/rv32uf-p-fadd.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-fdiv.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-fmadd.hex" - "../../../benchmarks/riscv_tests/rv32uf-p-fmin.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-fcmp.hex", + //"../../../benchmarks/riscv_tests/rv32uf-p-fadd.hex", + //"../../../benchmarks/riscv_tests/rv32uf-p-fdiv.hex", + //"../../../benchmarks/riscv_tests/rv32uf-p-fmadd.hex", + //"../../../benchmarks/riscv_tests/rv32uf-p-fmin.hex", + //"../../../benchmarks/riscv_tests/rv32uf-p-fcmp.hex", "../../../benchmarks/riscv_tests/rv32uf-p-fclass.hex", "../../../benchmarks/riscv_tests/rv32uf-p-ldst.hex", "../../../benchmarks/riscv_tests/rv32uf-p-fcvt.hex", "../../../benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex", "../../../benchmarks/riscv_tests/rv32uf-p-move.hex", "../../../benchmarks/riscv_tests/rv32uf-p-recoding.hex", -#endif*/ +#endif }; for (std::string test : tests) { @@ -83,7 +85,30 @@ int main(int argc, char **argv) Simulator simulator; simulator.attach_ram(&ram); simulator.load_ihex(test.c_str()); - bool status = simulator.run(); + simulator.run(); + + bool status = (1 == simulator.get_status(28)); + + if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; + if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; + std::cerr << DEFAULT; + passed = passed && status; + if (!passed) + break; + } + + for (std::string test : tests_fp) { + std::cerr << DEFAULT << "\n---------------------------------------\n"; + + std::cerr << test << std::endl; + + RAM ram; + Simulator simulator; + simulator.attach_ram(&ram); + simulator.load_ihex(test.c_str()); + simulator.run(); + + bool status = (1 == simulator.get_status(3)); if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; @@ -113,7 +138,9 @@ int main(int argc, char **argv) Simulator simulator; simulator.attach_ram(&ram); simulator.load_ihex(test); - bool status = simulator.run(); + simulator.run(); + + bool status = (1 == simulator.get_status(28)); if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; From f01afcc5cdb818732ffd7068c0c13e7ed2f91940 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 02:19:11 -0400 Subject: [PATCH 16/94] floating point support fixes + riscv-tests update --- benchmarks/riscv_tests/C.ADD.elf.hex | 50 - benchmarks/riscv_tests/C.ADDI.elf.hex | 45 - benchmarks/riscv_tests/C.ADDI16SP.elf.hex | 29 - benchmarks/riscv_tests/C.ADDI4SPN.elf.hex | 29 - benchmarks/riscv_tests/C.AND.elf.hex | 50 - benchmarks/riscv_tests/C.ANDI.elf.hex | 45 - benchmarks/riscv_tests/C.BEQZ.elf.hex | 33 - benchmarks/riscv_tests/C.BNEZ.elf.hex | 30 - benchmarks/riscv_tests/C.J.elf.hex | 32 - benchmarks/riscv_tests/C.JAL.elf.hex | 32 - benchmarks/riscv_tests/C.JALR.elf.hex | 35 - benchmarks/riscv_tests/C.JR.elf.hex | 35 - benchmarks/riscv_tests/C.LI.elf.hex | 45 - benchmarks/riscv_tests/C.LUI.elf.hex | 45 - benchmarks/riscv_tests/C.LW.elf.hex | 39 - benchmarks/riscv_tests/C.LWSP.elf.hex | 40 - benchmarks/riscv_tests/C.MV.elf.hex | 50 - benchmarks/riscv_tests/C.OR.elf.hex | 50 - benchmarks/riscv_tests/C.SLLI.elf.hex | 45 - benchmarks/riscv_tests/C.SRAI.elf.hex | 45 - benchmarks/riscv_tests/C.SRLI.elf.hex | 45 - benchmarks/riscv_tests/C.SUB.elf.hex | 50 - benchmarks/riscv_tests/C.SW.elf.hex | 41 - benchmarks/riscv_tests/C.SWSP.elf.hex | 41 - benchmarks/riscv_tests/C.XOR.elf.hex | 50 - benchmarks/riscv_tests/DIV.elf.hex | 52 - benchmarks/riscv_tests/DIVU.elf.hex | 52 - benchmarks/riscv_tests/I-ADD-01.elf.hex | 65 - benchmarks/riscv_tests/I-ADDI-01.elf.hex | 56 - benchmarks/riscv_tests/I-AND-01.elf.hex | 66 - benchmarks/riscv_tests/I-ANDI-01.elf.hex | 56 - benchmarks/riscv_tests/I-AUIPC-01.elf.hex | 42 - benchmarks/riscv_tests/I-BEQ-01.elf.hex | 72 - benchmarks/riscv_tests/I-BGE-01.elf.hex | 72 - benchmarks/riscv_tests/I-BGEU-01.elf.hex | 72 - benchmarks/riscv_tests/I-BLT-01.elf.hex | 72 - benchmarks/riscv_tests/I-BLTU-01.elf.hex | 72 - benchmarks/riscv_tests/I-BNE-01.elf.hex | 72 - benchmarks/riscv_tests/I-CSRRC-01.elf.hex | 39 - benchmarks/riscv_tests/I-CSRRCI-01.elf.hex | 25 - benchmarks/riscv_tests/I-CSRRS-01.elf.hex | 38 - benchmarks/riscv_tests/I-CSRRSI-01.elf.hex | 24 - benchmarks/riscv_tests/I-CSRRW-01.elf.hex | 30 - benchmarks/riscv_tests/I-CSRRWI-01.elf.hex | 16 - .../riscv_tests/I-DELAY_SLOTS-01.elf.hex | 29 - benchmarks/riscv_tests/I-EBREAK-01.elf.hex | 15 - benchmarks/riscv_tests/I-ECALL-01.elf.hex | 15 - benchmarks/riscv_tests/I-ENDIANESS-01.elf.hex | 17 - benchmarks/riscv_tests/I-FENCE.I-01.elf.hex | 16 - benchmarks/riscv_tests/I-IO.elf.hex | 65 - benchmarks/riscv_tests/I-JAL-01.elf.hex | 46 - benchmarks/riscv_tests/I-JALR-01.elf.hex | 60 - benchmarks/riscv_tests/I-LB-01.elf.hex | 51 - benchmarks/riscv_tests/I-LBU-01.elf.hex | 51 - benchmarks/riscv_tests/I-LH-01.elf.hex | 39 - benchmarks/riscv_tests/I-LHU-01.elf.hex | 39 - benchmarks/riscv_tests/I-LUI-01.elf.hex | 27 - benchmarks/riscv_tests/I-LW-01.elf.hex | 33 - .../riscv_tests/I-MISALIGN_JMP-01.elf.hex | 53 - .../riscv_tests/I-MISALIGN_LDST-01.elf.hex | 44 - benchmarks/riscv_tests/I-NOP-01.elf.hex | 37 - benchmarks/riscv_tests/I-OR-01.elf.hex | 66 - benchmarks/riscv_tests/I-ORI-01.elf.hex | 56 - benchmarks/riscv_tests/I-RF_size-01.elf.hex | 45 - benchmarks/riscv_tests/I-RF_width-01.elf.hex | 57 - benchmarks/riscv_tests/I-RF_x0-01.elf.hex | 29 - benchmarks/riscv_tests/I-SB-01.elf.hex | 45 - benchmarks/riscv_tests/I-SH-01.elf.hex | 41 - benchmarks/riscv_tests/I-SLL-01.elf.hex | 64 - benchmarks/riscv_tests/I-SLLI-01.elf.hex | 50 - benchmarks/riscv_tests/I-SLT-01.elf.hex | 63 - benchmarks/riscv_tests/I-SLTI-01.elf.hex | 51 - benchmarks/riscv_tests/I-SLTIU-01.elf.hex | 51 - benchmarks/riscv_tests/I-SLTU-01.elf.hex | 63 - benchmarks/riscv_tests/I-SRA-01.elf.hex | 64 - benchmarks/riscv_tests/I-SRAI-01.elf.hex | 50 - benchmarks/riscv_tests/I-SRL-01.elf.hex | 64 - benchmarks/riscv_tests/I-SRLI-01.elf.hex | 50 - benchmarks/riscv_tests/I-SUB-01.elf.hex | 65 - benchmarks/riscv_tests/I-SW-01.elf.hex | 34 - benchmarks/riscv_tests/I-XOR-01.elf.hex | 66 - benchmarks/riscv_tests/I-XORI-01.elf.hex | 56 - benchmarks/riscv_tests/MUL.elf.hex | 52 - benchmarks/riscv_tests/MULH.elf.hex | 52 - benchmarks/riscv_tests/MULHSU.elf.hex | 52 - benchmarks/riscv_tests/MULHU.elf.hex | 52 - benchmarks/riscv_tests/REM.elf.hex | 52 - benchmarks/riscv_tests/REMU.elf.hex | 52 - .../benchmarks/dhrystone.riscv.hex | 756 +++ .../riscv_tests/benchmarks/median.riscv.hex | 688 +++ .../riscv_tests/benchmarks/multiply.riscv.hex | 566 ++ .../riscv_tests/benchmarks/pmp.riscv.hex | 558 ++ .../riscv_tests/benchmarks/qsort.riscv.hex | 1532 ++++++ .../riscv_tests/benchmarks/rsort.riscv.hex | 1558 ++++++ .../riscv_tests/benchmarks/spmv.riscv.hex | 3202 +++++++++++ .../riscv_tests/benchmarks/towers.riscv.hex | 553 ++ .../riscv_tests/benchmarks/vvadd.riscv.hex | 715 +++ benchmarks/riscv_tests/debugPlugin.hex | 6 - .../riscv_tests/debugPluginExternal.hex | 39 - benchmarks/riscv_tests/dhrystoneO3.hex | 917 ---- benchmarks/riscv_tests/dhrystoneO3C.hex | 848 --- benchmarks/riscv_tests/dhrystoneO3M.hex | 851 --- benchmarks/riscv_tests/dhrystoneO3MC.hex | 785 --- benchmarks/riscv_tests/freeRTOS_demo.hex | 2479 --------- .../riscv_tests/isa/rv32mi-p-breakpoint.hex | 49 + benchmarks/riscv_tests/isa/rv32mi-p-csr.hex | 57 + .../riscv_tests/isa/rv32mi-p-illegal.hex | 81 + .../riscv_tests/isa/rv32mi-p-ma_addr.hex | 73 + .../riscv_tests/isa/rv32mi-p-ma_fetch.hex | 52 + benchmarks/riscv_tests/isa/rv32mi-p-mcsr.hex | 36 + .../riscv_tests/isa/rv32mi-p-sbreak.hex | 32 + benchmarks/riscv_tests/isa/rv32mi-p-scall.hex | 36 + benchmarks/riscv_tests/isa/rv32mi-p-shamt.hex | 36 + benchmarks/riscv_tests/isa/rv32si-p-csr.hex | 49 + benchmarks/riscv_tests/isa/rv32si-p-dirty.hex | 53 + .../riscv_tests/isa/rv32si-p-ma_fetch.hex | 48 + .../riscv_tests/isa/rv32si-p-sbreak.hex | 32 + benchmarks/riscv_tests/isa/rv32si-p-scall.hex | 36 + benchmarks/riscv_tests/isa/rv32si-p-wfi.hex | 32 + .../riscv_tests/isa/rv32ua-p-amoadd_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amoand_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amomax_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amomaxu_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amomin_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amominu_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amoor_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amoswap_w.hex | 36 + .../riscv_tests/isa/rv32ua-p-amoxor_w.hex | 36 + benchmarks/riscv_tests/isa/rv32ua-p-lrsc.hex | 109 + .../riscv_tests/isa/rv32ua-v-amoadd_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amoand_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amomax_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amomaxu_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amomin_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amominu_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amoor_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amoswap_w.hex | 275 + .../riscv_tests/isa/rv32ua-v-amoxor_w.hex | 276 + benchmarks/riscv_tests/isa/rv32ua-v-lrsc.hex | 351 ++ .../riscv_tests/{ => isa}/rv32uc-p-rvc.hex | 0 benchmarks/riscv_tests/isa/rv32uc-v-rvc.hex | 1091 ++++ benchmarks/riscv_tests/isa/rv32ud-p-fadd.hex | 92 + .../riscv_tests/isa/rv32ud-p-fclass.hex | 53 + benchmarks/riscv_tests/isa/rv32ud-p-fcmp.hex | 118 + benchmarks/riscv_tests/isa/rv32ud-p-fcvt.hex | 63 + .../rv32ud-p-fcvt_w.hex} | 0 benchmarks/riscv_tests/isa/rv32ud-p-fdiv.hex | 80 + benchmarks/riscv_tests/isa/rv32ud-p-fmadd.hex | 104 + benchmarks/riscv_tests/isa/rv32ud-p-fmin.hex | 144 + benchmarks/riscv_tests/isa/rv32ud-p-ldst.hex | 49 + .../rv32ud-p-recoding.hex} | 0 benchmarks/riscv_tests/isa/rv32ud-v-fadd.hex | 332 ++ .../riscv_tests/isa/rv32ud-v-fclass.hex | 292 + benchmarks/riscv_tests/isa/rv32ud-v-fcmp.hex | 356 ++ benchmarks/riscv_tests/isa/rv32ud-v-fcvt.hex | 301 ++ .../riscv_tests/isa/rv32ud-v-fcvt_w.hex | 351 ++ benchmarks/riscv_tests/isa/rv32ud-v-fdiv.hex | 320 ++ benchmarks/riscv_tests/isa/rv32ud-v-fmadd.hex | 345 ++ benchmarks/riscv_tests/isa/rv32ud-v-fmin.hex | 382 ++ benchmarks/riscv_tests/isa/rv32ud-v-ldst.hex | 289 + .../riscv_tests/isa/rv32ud-v-recoding.hex | 279 + .../riscv_tests/{ => isa}/rv32uf-p-fadd.hex | 0 .../riscv_tests/{ => isa}/rv32uf-p-fclass.hex | 0 .../riscv_tests/{ => isa}/rv32uf-p-fcmp.hex | 0 .../riscv_tests/{ => isa}/rv32uf-p-fcvt.hex | 0 .../riscv_tests/isa/rv32uf-p-fcvt_w.hex | 111 + .../riscv_tests/{ => isa}/rv32uf-p-fdiv.hex | 0 .../riscv_tests/{ => isa}/rv32uf-p-fmadd.hex | 0 .../riscv_tests/{ => isa}/rv32uf-p-fmin.hex | 0 .../riscv_tests/{ => isa}/rv32uf-p-ldst.hex | 0 .../riscv_tests/{ => isa}/rv32uf-p-move.hex | 0 .../riscv_tests/isa/rv32uf-p-recoding.hex | 41 + .../riscv_tests/{ => isa}/rv32uf-v-fadd.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-fclass.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-fcmp.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-fcvt.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-fcvt_w.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-fdiv.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-fmadd.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-fmin.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-ldst.hex | 0 .../riscv_tests/{ => isa}/rv32uf-v-move.hex | 0 .../{ => isa}/rv32uf-v-recoding.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-add.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-addi.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-and.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-andi.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-auipc.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-beq.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-bge.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-bgeu.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-blt.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-bltu.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-bne.hex | 0 .../{ => isa}/rv32ui-p-fence_i.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-jal.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-jalr.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-lb.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-lbu.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-lh.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-lhu.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-lui.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-lw.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-or.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-ori.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sb.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sh.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-simple.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sll.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-slli.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-slt.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-slti.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sltiu.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sltu.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sra.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-srai.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-srl.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-srli.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sub.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-sw.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-xor.hex | 0 .../riscv_tests/{ => isa}/rv32ui-p-xori.hex | 0 benchmarks/riscv_tests/isa/rv32ui-v-add.hex | 347 ++ benchmarks/riscv_tests/isa/rv32ui-v-addi.hex | 310 ++ benchmarks/riscv_tests/isa/rv32ui-v-and.hex | 345 ++ benchmarks/riscv_tests/isa/rv32ui-v-andi.hex | 297 + benchmarks/riscv_tests/isa/rv32ui-v-auipc.hex | 274 + benchmarks/riscv_tests/isa/rv32ui-v-beq.hex | 313 ++ benchmarks/riscv_tests/isa/rv32ui-v-bge.hex | 319 ++ benchmarks/riscv_tests/isa/rv32ui-v-bgeu.hex | 322 ++ benchmarks/riscv_tests/isa/rv32ui-v-blt.hex | 313 ++ benchmarks/riscv_tests/isa/rv32ui-v-bltu.hex | 316 ++ benchmarks/riscv_tests/isa/rv32ui-v-bne.hex | 313 ++ .../riscv_tests/isa/rv32ui-v-fence_i.hex | 290 + benchmarks/riscv_tests/isa/rv32ui-v-jal.hex | 274 + benchmarks/riscv_tests/isa/rv32ui-v-jalr.hex | 282 + benchmarks/riscv_tests/isa/rv32ui-v-lb.hex | 307 ++ benchmarks/riscv_tests/isa/rv32ui-v-lbu.hex | 307 ++ benchmarks/riscv_tests/isa/rv32ui-v-lh.hex | 309 ++ benchmarks/riscv_tests/isa/rv32ui-v-lhu.hex | 310 ++ benchmarks/riscv_tests/isa/rv32ui-v-lui.hex | 275 + benchmarks/riscv_tests/isa/rv32ui-v-lw.hex | 311 ++ benchmarks/riscv_tests/isa/rv32ui-v-or.hex | 345 ++ benchmarks/riscv_tests/isa/rv32ui-v-ori.hex | 299 + benchmarks/riscv_tests/isa/rv32ui-v-sb.hex | 333 ++ benchmarks/riscv_tests/isa/rv32ui-v-sh.hex | 343 ++ .../riscv_tests/isa/rv32ui-v-simple.hex | 268 + benchmarks/riscv_tests/isa/rv32ui-v-sll.hex | 354 ++ benchmarks/riscv_tests/isa/rv32ui-v-slli.hex | 309 ++ benchmarks/riscv_tests/isa/rv32ui-v-slt.hex | 346 ++ benchmarks/riscv_tests/isa/rv32ui-v-slti.hex | 308 ++ benchmarks/riscv_tests/isa/rv32ui-v-sltiu.hex | 308 ++ benchmarks/riscv_tests/isa/rv32ui-v-sltu.hex | 346 ++ benchmarks/riscv_tests/isa/rv32ui-v-sra.hex | 359 ++ benchmarks/riscv_tests/isa/rv32ui-v-srai.hex | 313 ++ benchmarks/riscv_tests/isa/rv32ui-v-srl.hex | 357 ++ benchmarks/riscv_tests/isa/rv32ui-v-srli.hex | 311 ++ benchmarks/riscv_tests/isa/rv32ui-v-sub.hex | 345 ++ benchmarks/riscv_tests/isa/rv32ui-v-sw.hex | 344 ++ benchmarks/riscv_tests/isa/rv32ui-v-xor.hex | 345 ++ benchmarks/riscv_tests/isa/rv32ui-v-xori.hex | 299 + .../riscv_tests/{ => isa}/rv32um-p-div.hex | 0 .../riscv_tests/{ => isa}/rv32um-p-divu.hex | 0 .../riscv_tests/{ => isa}/rv32um-p-mul.hex | 0 .../riscv_tests/{ => isa}/rv32um-p-mulh.hex | 0 .../riscv_tests/{ => isa}/rv32um-p-mulhsu.hex | 0 .../riscv_tests/{ => isa}/rv32um-p-mulhu.hex | 0 .../riscv_tests/{ => isa}/rv32um-p-rem.hex | 0 .../riscv_tests/{ => isa}/rv32um-p-remu.hex | 0 benchmarks/riscv_tests/isa/rv32um-v-div.hex | 283 + benchmarks/riscv_tests/isa/rv32um-v-divu.hex | 283 + benchmarks/riscv_tests/isa/rv32um-v-mul.hex | 346 ++ benchmarks/riscv_tests/isa/rv32um-v-mulh.hex | 346 ++ .../riscv_tests/isa/rv32um-v-mulhsu.hex | 346 ++ benchmarks/riscv_tests/isa/rv32um-v-mulhu.hex | 346 ++ benchmarks/riscv_tests/isa/rv32um-v-rem.hex | 283 + benchmarks/riscv_tests/isa/rv32um-v-remu.hex | 283 + benchmarks/riscv_tests/machineCsr.hex | 4597 ---------------- .../riscv_tests/machineCsrCompressed.hex | 37 - benchmarks/riscv_tests/mmu.hex | 4791 ----------------- benchmarks/riscv_tests/rv32mi-p-csr.dump | 262 - benchmarks/riscv_tests/rv32mi-p-illegal.dump | 368 -- benchmarks/riscv_tests/rv32mi-p-sbreak.dump | 123 - benchmarks/riscv_tests/rv32mi-p-scall.dump | 140 - benchmarks/riscv_tests/rv32ui-p-add.dump | 504 -- benchmarks/riscv_tests/rv32ui-p-addi.dump | 308 -- benchmarks/riscv_tests/rv32ui-p-and.dump | 460 -- benchmarks/riscv_tests/rv32ui-p-andi.dump | 240 - benchmarks/riscv_tests/rv32ui-p-auipc.dump | 149 - benchmarks/riscv_tests/rv32ui-p-beq.dump | 318 -- benchmarks/riscv_tests/rv32ui-p-bge.dump | 364 -- benchmarks/riscv_tests/rv32ui-p-bgeu.dump | 383 -- benchmarks/riscv_tests/rv32ui-p-blt.dump | 318 -- benchmarks/riscv_tests/rv32ui-p-bltu.dump | 337 -- benchmarks/riscv_tests/rv32ui-p-bne.dump | 317 -- benchmarks/riscv_tests/rv32ui-p-fence_i.dump | 179 - benchmarks/riscv_tests/rv32ui-p-jal.dump | 153 - benchmarks/riscv_tests/rv32ui-p-jalr.dump | 191 - benchmarks/riscv_tests/rv32ui-p-lb.dump | 331 -- benchmarks/riscv_tests/rv32ui-p-lbu.dump | 331 -- benchmarks/riscv_tests/rv32ui-p-lh.dump | 320 -- benchmarks/riscv_tests/rv32ui-p-lhu.dump | 315 -- benchmarks/riscv_tests/rv32ui-p-lui.dump | 152 - benchmarks/riscv_tests/rv32ui-p-lui.hex.hex | 29 - benchmarks/riscv_tests/rv32ui-p-lw.dump | 344 -- benchmarks/riscv_tests/rv32ui-p-or.dump | 457 -- benchmarks/riscv_tests/rv32ui-p-ori.dump | 265 - benchmarks/riscv_tests/rv32ui-p-sb.dump | 440 -- benchmarks/riscv_tests/rv32ui-p-sh.dump | 473 -- benchmarks/riscv_tests/rv32ui-p-simple.dump | 105 - benchmarks/riscv_tests/rv32ui-p-sll.dump | 548 -- benchmarks/riscv_tests/rv32ui-p-slli.dump | 309 -- benchmarks/riscv_tests/rv32ui-p-slt.dump | 478 -- benchmarks/riscv_tests/rv32ui-p-slti.dump | 313 -- benchmarks/riscv_tests/rv32ui-p-sltiu.dump | 320 -- benchmarks/riscv_tests/rv32ui-p-sltu.dump | 485 -- benchmarks/riscv_tests/rv32ui-p-sra.dump | 563 -- benchmarks/riscv_tests/rv32ui-p-srai.dump | 328 -- benchmarks/riscv_tests/rv32ui-p-srl.dump | 544 -- benchmarks/riscv_tests/rv32ui-p-srli.dump | 309 -- benchmarks/riscv_tests/rv32ui-p-sub.dump | 478 -- benchmarks/riscv_tests/rv32ui-p-sw.dump | 469 -- benchmarks/riscv_tests/rv32ui-p-xor.dump | 458 -- benchmarks/riscv_tests/rv32ui-p-xori.dump | 263 - benchmarks/riscv_tests/rv32um-p-div.dump | 167 - benchmarks/riscv_tests/rv32um-p-divu.dump | 166 - benchmarks/riscv_tests/rv32um-p-mul.dump | 482 -- benchmarks/riscv_tests/rv32um-p-mulh.dump | 478 -- benchmarks/riscv_tests/rv32um-p-mulhsu.dump | 478 -- benchmarks/riscv_tests/rv32um-p-mulhu.dump | 478 -- benchmarks/riscv_tests/rv32um-p-rem.dump | 167 - benchmarks/riscv_tests/rv32um-p-remu.dump | 167 - benchmarks/riscv_tests/testA.hex | 29 - hw/rtl/VX_fpu_unit.v | 42 +- hw/rtl/VX_writeback.v | 6 +- hw/simulate/simulator.cpp | 11 +- hw/simulate/simulator.h | 2 +- hw/simulate/testbench.cpp | 127 +- 338 files changed, 34269 insertions(+), 36690 deletions(-) delete mode 100644 benchmarks/riscv_tests/C.ADD.elf.hex delete mode 100644 benchmarks/riscv_tests/C.ADDI.elf.hex delete mode 100644 benchmarks/riscv_tests/C.ADDI16SP.elf.hex delete mode 100644 benchmarks/riscv_tests/C.ADDI4SPN.elf.hex delete mode 100644 benchmarks/riscv_tests/C.AND.elf.hex delete mode 100644 benchmarks/riscv_tests/C.ANDI.elf.hex delete mode 100644 benchmarks/riscv_tests/C.BEQZ.elf.hex delete mode 100644 benchmarks/riscv_tests/C.BNEZ.elf.hex delete mode 100644 benchmarks/riscv_tests/C.J.elf.hex delete mode 100644 benchmarks/riscv_tests/C.JAL.elf.hex delete mode 100644 benchmarks/riscv_tests/C.JALR.elf.hex delete mode 100644 benchmarks/riscv_tests/C.JR.elf.hex delete mode 100644 benchmarks/riscv_tests/C.LI.elf.hex delete mode 100644 benchmarks/riscv_tests/C.LUI.elf.hex delete mode 100644 benchmarks/riscv_tests/C.LW.elf.hex delete mode 100644 benchmarks/riscv_tests/C.LWSP.elf.hex delete mode 100644 benchmarks/riscv_tests/C.MV.elf.hex delete mode 100644 benchmarks/riscv_tests/C.OR.elf.hex delete mode 100644 benchmarks/riscv_tests/C.SLLI.elf.hex delete mode 100644 benchmarks/riscv_tests/C.SRAI.elf.hex delete mode 100644 benchmarks/riscv_tests/C.SRLI.elf.hex delete mode 100644 benchmarks/riscv_tests/C.SUB.elf.hex delete mode 100644 benchmarks/riscv_tests/C.SW.elf.hex delete mode 100644 benchmarks/riscv_tests/C.SWSP.elf.hex delete mode 100644 benchmarks/riscv_tests/C.XOR.elf.hex delete mode 100644 benchmarks/riscv_tests/DIV.elf.hex delete mode 100644 benchmarks/riscv_tests/DIVU.elf.hex delete mode 100644 benchmarks/riscv_tests/I-ADD-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-ADDI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-AND-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-ANDI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-AUIPC-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-BEQ-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-BGE-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-BGEU-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-BLT-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-BLTU-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-BNE-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-CSRRC-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-CSRRCI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-CSRRS-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-CSRRSI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-CSRRW-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-CSRRWI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-DELAY_SLOTS-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-EBREAK-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-ECALL-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-ENDIANESS-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-FENCE.I-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-IO.elf.hex delete mode 100644 benchmarks/riscv_tests/I-JAL-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-JALR-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-LB-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-LBU-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-LH-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-LHU-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-LUI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-LW-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-MISALIGN_JMP-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-MISALIGN_LDST-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-NOP-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-OR-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-ORI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-RF_size-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-RF_width-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-RF_x0-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SB-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SH-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SLL-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SLLI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SLT-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SLTI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SLTIU-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SLTU-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SRA-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SRAI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SRL-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SRLI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SUB-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-SW-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-XOR-01.elf.hex delete mode 100644 benchmarks/riscv_tests/I-XORI-01.elf.hex delete mode 100644 benchmarks/riscv_tests/MUL.elf.hex delete mode 100644 benchmarks/riscv_tests/MULH.elf.hex delete mode 100644 benchmarks/riscv_tests/MULHSU.elf.hex delete mode 100644 benchmarks/riscv_tests/MULHU.elf.hex delete mode 100644 benchmarks/riscv_tests/REM.elf.hex delete mode 100644 benchmarks/riscv_tests/REMU.elf.hex create mode 100644 benchmarks/riscv_tests/benchmarks/dhrystone.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/median.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/multiply.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/pmp.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/qsort.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/rsort.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/spmv.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/towers.riscv.hex create mode 100644 benchmarks/riscv_tests/benchmarks/vvadd.riscv.hex delete mode 100644 benchmarks/riscv_tests/debugPlugin.hex delete mode 100644 benchmarks/riscv_tests/debugPluginExternal.hex delete mode 100644 benchmarks/riscv_tests/dhrystoneO3.hex delete mode 100644 benchmarks/riscv_tests/dhrystoneO3C.hex delete mode 100644 benchmarks/riscv_tests/dhrystoneO3M.hex delete mode 100644 benchmarks/riscv_tests/dhrystoneO3MC.hex delete mode 100644 benchmarks/riscv_tests/freeRTOS_demo.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-breakpoint.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-csr.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-illegal.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-ma_addr.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-ma_fetch.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-mcsr.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-sbreak.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-scall.hex create mode 100644 benchmarks/riscv_tests/isa/rv32mi-p-shamt.hex create mode 100644 benchmarks/riscv_tests/isa/rv32si-p-csr.hex create mode 100644 benchmarks/riscv_tests/isa/rv32si-p-dirty.hex create mode 100644 benchmarks/riscv_tests/isa/rv32si-p-ma_fetch.hex create mode 100644 benchmarks/riscv_tests/isa/rv32si-p-sbreak.hex create mode 100644 benchmarks/riscv_tests/isa/rv32si-p-scall.hex create mode 100644 benchmarks/riscv_tests/isa/rv32si-p-wfi.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amoadd_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amoand_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amomax_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amomaxu_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amomin_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amominu_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amoor_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amoswap_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-amoxor_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-p-lrsc.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amoadd_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amoand_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amomax_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amomaxu_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amomin_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amominu_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amoor_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amoswap_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-amoxor_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ua-v-lrsc.hex rename benchmarks/riscv_tests/{ => isa}/rv32uc-p-rvc.hex (100%) create mode 100644 benchmarks/riscv_tests/isa/rv32uc-v-rvc.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-fadd.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-fclass.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-fcmp.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-fcvt.hex rename benchmarks/riscv_tests/{rv32uf-p-fcvt_w.hex => isa/rv32ud-p-fcvt_w.hex} (100%) create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-fdiv.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-fmadd.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-fmin.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-p-ldst.hex rename benchmarks/riscv_tests/{rv32uf-p-recoding.hex => isa/rv32ud-p-recoding.hex} (100%) create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fadd.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fclass.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fcmp.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fcvt.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fcvt_w.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fdiv.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fmadd.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-fmin.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-ldst.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ud-v-recoding.hex rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-fadd.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-fclass.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-fcmp.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-fcvt.hex (100%) create mode 100644 benchmarks/riscv_tests/isa/rv32uf-p-fcvt_w.hex rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-fdiv.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-fmadd.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-fmin.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-ldst.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-p-move.hex (100%) create mode 100644 benchmarks/riscv_tests/isa/rv32uf-p-recoding.hex rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fadd.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fclass.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fcmp.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fcvt.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fcvt_w.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fdiv.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fmadd.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-fmin.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-ldst.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-move.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32uf-v-recoding.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-add.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-addi.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-and.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-andi.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-auipc.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-beq.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-bge.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-bgeu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-blt.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-bltu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-bne.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-fence_i.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-jal.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-jalr.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-lb.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-lbu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-lh.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-lhu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-lui.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-lw.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-or.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-ori.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sb.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sh.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-simple.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sll.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-slli.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-slt.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-slti.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sltiu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sltu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sra.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-srai.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-srl.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-srli.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sub.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-sw.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-xor.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32ui-p-xori.hex (100%) create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-add.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-addi.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-and.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-andi.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-auipc.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-beq.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-bge.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-bgeu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-blt.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-bltu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-bne.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-fence_i.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-jal.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-jalr.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-lb.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-lbu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-lh.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-lhu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-lui.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-lw.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-or.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-ori.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sb.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sh.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-simple.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sll.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-slli.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-slt.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-slti.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sltiu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sltu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sra.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-srai.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-srl.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-srli.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sub.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-sw.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-xor.hex create mode 100644 benchmarks/riscv_tests/isa/rv32ui-v-xori.hex rename benchmarks/riscv_tests/{ => isa}/rv32um-p-div.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32um-p-divu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32um-p-mul.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32um-p-mulh.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32um-p-mulhsu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32um-p-mulhu.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32um-p-rem.hex (100%) rename benchmarks/riscv_tests/{ => isa}/rv32um-p-remu.hex (100%) create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-div.hex create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-divu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-mul.hex create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-mulh.hex create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-mulhsu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-mulhu.hex create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-rem.hex create mode 100644 benchmarks/riscv_tests/isa/rv32um-v-remu.hex delete mode 100644 benchmarks/riscv_tests/machineCsr.hex delete mode 100644 benchmarks/riscv_tests/machineCsrCompressed.hex delete mode 100644 benchmarks/riscv_tests/mmu.hex delete mode 100644 benchmarks/riscv_tests/rv32mi-p-csr.dump delete mode 100644 benchmarks/riscv_tests/rv32mi-p-illegal.dump delete mode 100644 benchmarks/riscv_tests/rv32mi-p-sbreak.dump delete mode 100644 benchmarks/riscv_tests/rv32mi-p-scall.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-add.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-addi.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-and.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-andi.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-auipc.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-beq.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-bge.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-bgeu.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-blt.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-bltu.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-bne.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-fence_i.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-jal.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-jalr.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-lb.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-lbu.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-lh.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-lhu.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-lui.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-lui.hex.hex delete mode 100644 benchmarks/riscv_tests/rv32ui-p-lw.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-or.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-ori.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sb.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sh.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-simple.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sll.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-slli.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-slt.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-slti.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sltiu.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sltu.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sra.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-srai.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-srl.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-srli.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sub.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-sw.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-xor.dump delete mode 100644 benchmarks/riscv_tests/rv32ui-p-xori.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-div.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-divu.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-mul.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-mulh.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-mulhsu.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-mulhu.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-rem.dump delete mode 100644 benchmarks/riscv_tests/rv32um-p-remu.dump delete mode 100644 benchmarks/riscv_tests/testA.hex diff --git a/benchmarks/riscv_tests/C.ADD.elf.hex b/benchmarks/riscv_tests/C.ADD.elf.hex deleted file mode 100644 index 6d134388..00000000 --- a/benchmarks/riscv_tests/C.ADD.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F10142814192910EC081441F -:100100000544269422C201469305F0FFB2952EC401 -:100110000147B78600009386F6FFBA9636C60148B7 -:10012000A167C2973EC8171100001301E1EE05490F -:100130008148CA9846C0054A8549D2994EC2054BA6 -:10014000930AF0FFDA9A56C4054CB78B0000938BE4 -:10015000FBFFE29B5EC6054DA16CEA9C66C81711C9 -:1001600000001301A1EC130EF0FF814DF29D6EC053 -:10017000130FF0FF854EFA9E76C29301F0FF930FA6 -:10018000F0FF8E9F7EC41304F0FF3782000013023D -:10019000F2FF229212C69305F0FFA164AE9426C826 -:1001A000171100001301C1E9B78600009386F6FF1E -:1001B0000146369632C0B78700009387F7FF0547A0 -:1001C0003E973AC2B78800009388F8FF1308F0FF03 -:1001D000469842C4B78900009389F9FF3789000027 -:1001E0001309F9FF4E994AC6B78A0000938AFAFFAD -:1001F000216A569A52C8171100001301A1E5A16B9C -:10020000014B5E9B5AC0A16C054C669C62C2A16DFD -:10021000130DF0FF6E9D6AC4A16E378E0000130EA1 -:10022000FEFF769E72C6A16F216F7E9F7AC817155A -:100230000000130525DD971500009385A5E337061B -:1002400010F01306C6F2630CB500544514C21445F1 -:1002500014C2544114C2144114C24105EDB737050C -:1002600010F0130505F22320050000000000000037 -:0202700000008C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.ADDI.elf.hex b/benchmarks/riscv_tests/C.ADDI.elf.hex deleted file mode 100644 index a8a4139d..00000000 --- a/benchmarks/riscv_tests/C.ADDI.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814185010EC00142090276 -:1001000012C201443D0422C48144C10426C6814573 -:10011000FD052EC817110000130101F00546050664 -:1001200032C08546890636C205473D073AC4854731 -:10013000C1073EC605487D0842C8171100001301DB -:10014000E1EE9308F0FF850846C01309F0FF0909A6 -:100150004AC29309F0FFBD094EC4130AF0FF410AD9 -:1001600052C6930AF0FFFD0A56C81711000013018A -:1001700021ED370B0800130BFBFF050B5AC0B70B23 -:100180000800938BFBFF890B5EC2370C0800130C31 -:10019000FCFF3D0C62C4B70C0800938CFCFFC10C43 -:1001A00066C6370D0800130DFDFF7D0D6AC81711D7 -:1001B0000000130121EAB70D0800850D6EC0370E4F -:1001C0000800090E72C2B70E0800BD0E76C4370FC4 -:1001D0000800410F7AC6B70F0800FD0F7EC817153B -:1001E0000000130525E2971500009385A5E8370662 -:1001F00010F01306C6F2630CB500544514C2144542 -:1002000014C2544114C2144114C24105EDB737055C -:1002100010F0130505F22320050000000000000087 -:020220000000DC -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.ADDI16SP.elf.hex b/benchmarks/riscv_tests/C.ADDI16SP.elf.hex deleted file mode 100644 index 09bccd73..00000000 --- a/benchmarks/riscv_tests/C.ADDI16SP.elf.hex +++ /dev/null @@ -1,29 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E0000100010001000100010001000100971062 -:1000F0000000938020F1410123A020009710000010 -:10010000938080F0056123A0200097100000938069 -:10011000E0EF216123A0200097100000938040EFC2 -:100120007D6123A02000971000009380A0EE017154 -:1001300023A02000171500001305C5EC971500003B -:10014000938545EE370610F01306C6F2630CB50032 -:10015000544514C2144514C2544114C2144114C26B -:100160004105EDB7370510F0130505F22320050012 -:0201700000008D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.ADDI4SPN.elf.hex b/benchmarks/riscv_tests/C.ADDI4SPN.elf.hex deleted file mode 100644 index f2c24161..00000000 --- a/benchmarks/riscv_tests/C.ADDI4SPN.elf.hex +++ /dev/null @@ -1,29 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E0000100010001000100010001000100971062 -:1000F0000000938020F1500023A0C0009710000062 -:10010000938080F0340023A0D000971000009380EB -:10011000E0EF780023A0E00097100000938040EF0C -:100120001C0823A0F000971000009380A0EEE01FB1 -:1001300023A08000171500001305C5EC97150000DB -:10014000938545EE370610F01306C6F2630CB50032 -:10015000544514C2144514C2544114C2144114C26B -:100160004105EDB7370510F0130505F22320050012 -:0201700000008D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.AND.elf.hex b/benchmarks/riscv_tests/C.AND.elf.hex deleted file mode 100644 index 0a92a0bc..00000000 --- a/benchmarks/riscv_tests/C.AND.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F181458144ED8C26C0814629 -:100100000546758E32C281471307F0FF7D8F3AC4D2 -:100110008144378400001304F4FF658C22C6014635 -:10012000A165F18D2EC8171100001301E1EE0547FE -:100130008146F98E36C005448547E18F3EC285452C -:100140009304F0FFED8C26C4854637860000130625 -:10015000F6FF758E32C6854721677D8F3AC8171125 -:1001600000001301A1EC9304F0FF0144658C22C050 -:100170001306F0FF8545F18D2EC21307F0FF93069D -:10018000F0FFF98E36C41304F0FFB78700009387A1 -:10019000F7FFE18F3EC69305F0FFA164ED8C26C802 -:1001A000171100001301C1E9B78600009386F6FF1E -:1001B0000146758E32C0B78700009387F7FF054769 -:1001C0007D8F3AC2B78400009384F4FF1304F0FFDC -:1001D000658C22C4378600001306F6FFB785000041 -:1001E0009385F5FFF18D2EC6378700001307F7FFC3 -:1001F000A166F98E36C8171100001301A1E521642C -:100200008147E18F3EC0A1658544ED8C26C2A16681 -:100210001306F0FF758E32C4A167378700001307FD -:10022000F7FF7D8F3AC6A1642164658C22C817153B -:100230000000130525DD971500009385A5E337061B -:1002400010F01306C6F2630CB500544514C21445F1 -:1002500014C2544114C2144114C24105EDB737050C -:1002600010F0130505F22320050000000000000037 -:0202700000008C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.ANDI.elf.hex b/benchmarks/riscv_tests/C.ANDI.elf.hex deleted file mode 100644 index 841633f9..00000000 --- a/benchmarks/riscv_tests/C.ANDI.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814581892EC00146058A46 -:1001000032C28146C18A36C401477D8B3AC68147D7 -:10011000859B3EC817110000130101F005440188BA -:1001200022C08544858826C28545C1892EC40546DE -:100130007D8A32C68546859A36C81711000013019C -:10014000E1EE1307F0FF018B3AC09307F0FF858BB8 -:100150003EC21304F0FF418822C49304F0FFFD88DF -:1001600026C69305F0FF85992EC8171100001301CC -:1001700021ED370608001306F6FF018A32C0B706E4 -:1001800008009386F6FF858A36C2370708001307F2 -:10019000F7FF418B3AC4B70708009387F7FFFD8B41 -:1001A0003EC6370408001304F4FF059822C817114F -:1001B0000000130121EAB7040800818826C0B705B2 -:1001C000080085892EC237060800418A32C4B70666 -:1001D0000800FD8A36C637070800059B3AC8171580 -:1001E0000000130525E2971500009385A5E8370662 -:1001F00010F01306C6F2630CB500544514C2144542 -:1002000014C2544114C2144114C24105EDB737055C -:1002100010F0130505F22320050000000000000087 -:020220000000DC -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.BEQZ.elf.hex b/benchmarks/riscv_tests/C.BEQZ.elf.hex deleted file mode 100644 index bfc304af..00000000 --- a/benchmarks/riscv_tests/C.BEQZ.elf.hex +++ /dev/null @@ -1,33 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F181479D8F89C7B7270100B7 -:100100009387B73A3EC0171100001301E1EF054491 -:10011000018C09C4372401001304B43A22C017111A -:1001200000001301A1EEFD54858C89C4B7240100A1 -:100130009384B43A26C017110000130161EDB7850E -:1001400000009385F5FF8D8D89C5B7250100938546 -:10015000B53A2EC0171100001301C1EB2166118EB4 -:1001600009C6372601001306B63A32C0171500003B -:10017000130545E9971500009385C5EA370610F089 -:100180001306C6F2630CB500544514C2144514C2DC -:10019000544114C2144114C24105EDB7370510F0A3 -:1001A000130505F2232005000000000000000000F8 -:0201B00000004D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.BNEZ.elf.hex b/benchmarks/riscv_tests/C.BNEZ.elf.hex deleted file mode 100644 index 584372dd..00000000 --- a/benchmarks/riscv_tests/C.BNEZ.elf.hex +++ /dev/null @@ -1,30 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814691E2814636C01711BB -:100100000000130161F0054711E301473AC01711E0 -:1001100000001301A1EFFD5791E381473EC0171185 -:1001200000001301E1EE378400001304F4FF11E036 -:10013000014422C0171100001301C1EDA16491E038 -:10014000814426C0171500001305C5EB9715000064 -:10015000938545ED370610F01306C6F2630CB50023 -:10016000544514C2144514C2544114C2144114C25B -:100170004105EDB7370510F0130505F22320050002 -:0201800000007D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.J.elf.hex b/benchmarks/riscv_tests/C.J.elf.hex deleted file mode 100644 index 2a0b0743..00000000 --- a/benchmarks/riscv_tests/C.J.elf.hex +++ /dev/null @@ -1,32 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814529A0B7250100938556 -:10010000B53A2EC017110000130101F0054629A0D1 -:10011000372601001306B63A32C01711000013014A -:10012000E1EEFD5629A0B72601009386B63A36C007 -:10013000171100001301C1ED378700001307F7FF07 -:1001400029A0372701001307B73A3AC0171100005A -:10015000130141ECA16729A0B72701009387B73AA3 -:100160003EC0171500001305E5E9971500009385BB -:1001700065EB370610F01306C6F2630CB500544564 -:1001800014C2144514C2544114C2144114C241058E -:10019000EDB7370510F0130505F223200500000028 -:0201A00000005D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.JAL.elf.hex b/benchmarks/riscv_tests/C.JAL.elf.hex deleted file mode 100644 index 77d4b064..00000000 --- a/benchmarks/riscv_tests/C.JAL.elf.hex +++ /dev/null @@ -1,32 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F101442920372401001304D9 -:10010000B43A22C017110000130101F085442920E0 -:10011000B72401009384B43A26C0171100001301DC -:10012000E1EEFD552920B72501009385B53A2EC093 -:10013000171100001301C1ED378600001306F6FF0A -:100140002920372601001306B63A32C017110000E5 -:10015000130141ECA1662920B72601009386B63A27 -:1001600036C0171500001305E5E9971500009385C3 -:1001700065EB370610F01306C6F2630CB500544564 -:1001800014C2144514C2544114C2144114C241058E -:10019000EDB7370510F0130505F223200500000028 -:0201A00000005D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.JALR.elf.hex b/benchmarks/riscv_tests/C.JALR.elf.hex deleted file mode 100644 index f81d7a1a..00000000 --- a/benchmarks/riscv_tests/C.JALR.elf.hex +++ /dev/null @@ -1,35 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F10145170600001306260137 -:100100000296372501001305B53A32C017110000D9 -:10011000130181EF0545970600009386260182961C -:10012000372501001305B53A36C017110000130139 -:10013000E1ED7D55170700001307270102973725CA -:1001400001001305B53A3AC017110000130141EC44 -:10015000378500001305F5FF9707000093872701F7 -:100160008297372501001305B53A3EC017110000EC -:10017000130141EA216517080000130828010298BD -:10018000372501001305B53A42C0171500001305C5 -:1001900065E7971500009385E5E8370610F013062C -:1001A000C6F2630CB500544514C2144514C2544140 -:1001B00014C2144114C24105EDB7370510F0130500 -:1001C00005F22320050000000000000000000000F0 -:0201D00000002D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.JR.elf.hex b/benchmarks/riscv_tests/C.JR.elf.hex deleted file mode 100644 index f1f43210..00000000 --- a/benchmarks/riscv_tests/C.JR.elf.hex +++ /dev/null @@ -1,35 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F101459701000093812101C6 -:100100008281372501001305B53A0EC01711000092 -:10011000130181EF0545170200001302220102823C -:10012000372501001305B53A12C01711000013015D -:10013000E1ED7D55170400001304240102843725E6 -:1001400001001305B53A22C017110000130141EC5C -:10015000378500001305F5FF970400009384240100 -:100160008284372501001305B53A26C01711000017 -:10017000130141EA216597050000938525018285D9 -:10018000372501001305B53A2EC0171500001305D9 -:1001900065E7971500009385E5E8370610F013062C -:1001A000C6F2630CB500544514C2144514C2544140 -:1001B00014C2144114C24105EDB7370510F0130500 -:1001C00005F22320050000000000000000000000F0 -:0201D00000002D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000000000000000000D4 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.LI.elf.hex b/benchmarks/riscv_tests/C.LI.elf.hex deleted file mode 100644 index 487d914c..00000000 --- a/benchmarks/riscv_tests/C.LI.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814181410EC001420542FE -:1001000012C20144414422C48144FD4426C68145B3 -:1001100085552EC817110000130101F00546014650 -:1001200032C08546854636C2054741473AC48547B1 -:10013000FD473EC60548055842C817110000130187 -:10014000E1EE9308F0FF814846C01309F0FF05492E -:100150004AC29309F0FFC1494EC4130AF0FF7D4A19 -:1001600052C6930AF0FF855A56C8171100001301B2 -:1001700021ED370B0800130BFBFF014B5AC0B70BE7 -:100180000800938BFBFF854B5EC2370C0800130CF5 -:10019000FCFF414C62C4B70C0800938CFCFFFD4C83 -:1001A00066C6370D0800130DFDFF055D6AC81711FF -:1001B0000000130121EAB70D0800814D6EC0370E13 -:1001C0000800054E72C2B70E0800C14E76C4370F44 -:1001D00008007D4F7AC6B70F0800855F7EC81715E7 -:1001E0000000130525E2971500009385A5E8370662 -:1001F00010F01306C6F2630CB500544514C2144542 -:1002000014C2544114C2144114C24105EDB737055C -:1002100010F0130505F22320050000000000000087 -:020220000000DC -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.LUI.elf.hex b/benchmarks/riscv_tests/C.LUI.elf.hex deleted file mode 100644 index 052bcc3b..00000000 --- a/benchmarks/riscv_tests/C.LUI.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814185610EC001420962B6 -:1001000012C201443D6422C48144FD6426C6814577 -:10011000FD752EC817110000130101F00546056694 -:1001200032C08546896636C205473D673AC4854771 -:10013000FD673EC605487D7842C8171100001301CF -:10014000E1EE9308F0FF856846C01309F0FF0969E6 -:100150004AC29309F0FFBD694EC4130AF0FF7D6ADD -:1001600052C6930AF0FFFD7A56C81711000013011A -:1001700021ED370B0800130BFBFF056B5AC0B70BC3 -:100180000800938BFBFF896B5EC2370C0800130CD1 -:10019000FCFF3D6C62C4B70C0800938CFCFFFD6C47 -:1001A00066C6370D0800130DFDFF7D7D6AC8171167 -:1001B0000000130121EAB70D0800856D6EC0370EEF -:1001C0000800096E72C2B70E0800BD6E76C4370F04 -:1001D00008007D6F7AC6B70F0800FD7F7EC817152F -:1001E0000000130525E2971500009385A5E8370662 -:1001F00010F01306C6F2630CB500544514C2144542 -:1002000014C2544114C2144114C24105EDB737055C -:1002100010F0130505F22320050000000000000087 -:020220000000DC -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.LW.elf.hex b/benchmarks/riscv_tests/C.LW.elf.hex deleted file mode 100644 index e96e6c5c..00000000 --- a/benchmarks/riscv_tests/C.LW.elf.hex +++ /dev/null @@ -1,39 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1171700001307E7F118435F -:100100003AC017110000130121F0971700009387E0 -:10011000A7F0DC433EC017110000130121EF1714B4 -:100120000000130464EF004422C017110000130103 -:1001300021EE97140000938424EEE45026C017119A -:100140000000130121ED971600009386E6ECF45EA3 -:1001500036C0171500001305E5EA971500009385D2 -:1001600065F4370610F01306C6F2630CB50054456B -:1001700014C2144514C2544114C2144114C241059E -:10018000EDB7370510F0130505F223200500000038 -:0201900000006D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000100000002000000D1 -:1010200003000000040000000500000006000000AE -:101030000700000008000000090000000A0000008E -:101040000B0000000C0000000D0000000E0000006E -:101050000F0000001000000011000000120000004E -:10106000130000001400000015000000160000002E -:101070001700000018000000190000001A0000000E -:101080001B0000001C0000001D0000001E000000EE -:101090001F00000000000000000000000000000031 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.LWSP.elf.hex b/benchmarks/riscv_tests/C.LWSP.elf.hex deleted file mode 100644 index 06251c26..00000000 --- a/benchmarks/riscv_tests/C.LWSP.elf.hex +++ /dev/null @@ -1,40 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E0000100010001000100010001000100971062 -:1000F0000000938020F1171100001301E1F102428A -:1001000023A0400097100000938000F0171100001A -:10011000130181F0124423A0800097100000938007 -:10012000E0EE17110000130121EF224823A0000187 -:10013000971000009380C0ED171100001301C1ED6E -:10014000F65F23A0F001971000009380A0EC171138 -:100150000000130161ECFE5A23A0500117150000A6 -:10016000130545EA971500009385C5F3370610F08F -:100170001306C6F2630CB500544514C2144514C2EC -:10018000544114C2144114C24105EDB7370510F0B3 -:10019000130505F223200500000000000000000008 -:0201A00000005D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFF000000000100000002000000D1 -:1010200003000000040000000500000006000000AE -:101030000700000008000000090000000A0000008E -:101040000B0000000C0000000D0000000E0000006E -:101050000F0000001000000011000000120000004E -:10106000130000001400000015000000160000002E -:101070001700000018000000190000001A0000000E -:101080001B0000001C0000001D0000001E000000EE -:101090001F00000000000000000000000000000031 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.MV.elf.hex b/benchmarks/riscv_tests/C.MV.elf.hex deleted file mode 100644 index 7c5c0d3d..00000000 --- a/benchmarks/riscv_tests/C.MV.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F101468145B2852EC0014760 -:100100008546BA8636C201449307F0FFA2873EC4F3 -:100110008145B78400009384F4FFAE8426C68146EF -:100120002166368632C8171100001301E1EE8547BB -:1001300001473E873AC085440544268422C20546CD -:100140009305F0FFB2852EC40547B786000093865D -:10015000F6FFBA8636C60544A167A2873EC81711C6 -:1001600000001301A1EC9305F0FF8144AE8426C08A -:100170009306F0FF0546368632C29307F0FF130759 -:10018000F0FF3E873AC49304F0FF37840000130465 -:10019000F4FF268422C61306F0FFA165B2852EC89F -:1001A000171100001301C1E9378700001307F7FF9B -:1001B0008146BA8636C0378400001304F4FF8547B1 -:1001C000A2873EC2B78500009385F5FF9304F0FF38 -:1001D000AE8426C4B78600009386F6FF37860000FB -:1001E0001306F6FF368632C6B78700009387F7FFFF -:1001F00021673E873AC8171100001301A1E5A164E9 -:100200000144268422C021668545B2852EC221671D -:100210009306F0FFBA8636C42164B787000093873F -:10022000F7FFA2873EC6A165A164AE8426C8171554 -:100230000000130525DD971500009385A5E337061B -:1002400010F01306C6F2630CB500544514C21445F1 -:1002500014C2544114C2144114C24105EDB737050C -:1002600010F0130505F22320050000000000000037 -:0202700000008C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.OR.elf.hex b/benchmarks/riscv_tests/C.OR.elf.hex deleted file mode 100644 index c1ede6c4..00000000 --- a/benchmarks/riscv_tests/C.OR.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F101448147C18F3EC08145B9 -:100100008544CD8C26C281461306F0FF558E32C43D -:100110008147378700001307F7FF5D8F3AC6814498 -:100120002164458C22C8171100001301E1EE054639 -:100130008145D18D2EC005478546D98E36C20544EE -:100140009307F0FFC18F3EC48545B78400009384B8 -:10015000F4FFCD8C26C685462166558E32C8171110 -:1001600000001301A1EC9307F0FF01475D8F3AC037 -:100170009304F0FF0544458C22C21306F0FF93055B -:10018000F0FFD18D2EC41307F0FFB78600009386D1 -:10019000F6FFD98E36C61304F0FFA167C18F3EC8A3 -:1001A000171100001301C1E9B78500009385F5FF21 -:1001B0008144CD8C26C0B78600009386F6FF0546A5 -:1001C000558E32C2B78700009387F7FF1307F0FF01 -:1001D0005D8F3AC4B78400009384F4FF3784000035 -:1001E0001304F4FF458C22C6378600001306F6FF81 -:1001F000A165D18D2EC8171100001301A1E521675B -:100200008146D98E36C021648547C18F3EC2A16523 -:100210009304F0FFCD8C26C4A16637860000130638 -:10022000F6FF558E32C6A16721675D8F3AC8171554 -:100230000000130525DD971500009385A5E337061B -:1002400010F01306C6F2630CB500544514C21445F1 -:1002500014C2544114C2144114C24105EDB737050C -:1002600010F0130505F22320050000000000000037 -:0202700000008C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.SLLI.elf.hex b/benchmarks/riscv_tests/C.SLLI.elf.hex deleted file mode 100644 index 575e5318..00000000 --- a/benchmarks/riscv_tests/C.SLLI.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814186010EC001420A0274 -:1001000012C201443E0422C48144C20426C6814571 -:10011000FE052EC817110000130101F00546060662 -:1001200032C085468A0636C205473E073AC485472F -:10013000C2073EC605487E0842C8171100001301D9 -:10014000E1EE9308F0FF860846C01309F0FF0A09A4 -:100150004AC29309F0FFBE094EC4130AF0FF420AD7 -:1001600052C6930AF0FFFE0A56C817110000130189 -:1001700021ED370B0800130BFBFF060B5AC0B70B22 -:100180000800938BFBFF8A0B5EC2370C0800130C30 -:10019000FCFF3E0C62C4B70C0800938CFCFFC20C41 -:1001A00066C6370D0800130DFDFF7E0D6AC81711D6 -:1001B0000000130121EAB70D0800860D6EC0370E4E -:1001C00008000A0E72C2B70E0800BE0E76C4370FC2 -:1001D0000800420F7AC6B70F0800FE0F7EC8171539 -:1001E0000000130525E2971500009385A5E8370662 -:1001F00010F01306C6F2630CB500544514C2144542 -:1002000014C2544114C2144114C24105EDB737055C -:1002100010F0130505F22320050000000000000087 -:020220000000DC -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.SRAI.elf.hex b/benchmarks/riscv_tests/C.SRAI.elf.hex deleted file mode 100644 index 4b3fe72c..00000000 --- a/benchmarks/riscv_tests/C.SRAI.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F18144858426C08145898552 -:100100002EC201463D8632C48146C18636C60147AD -:100110007D873AC817110000130101F085478587D4 -:100120003EC00544098422C28544BD8426C4854559 -:10013000C1852EC605467D8632C817110000130101 -:10014000E1EE9306F0FF858636C01307F0FF0987BE -:100150003AC29307F0FFBD873EC41304F0FF418409 -:1001600022C69304F0FFFD8426C817110000130176 -:1001700021EDB70508009385F5FF85852EC037066C -:1001800008001306F6FF098632C2B70608009386F8 -:10019000F6FFBD8636C4370708001307F7FF41870F -:1001A0003AC6B70708009387F7FFFD873EC81711C7 -:1001B0000000130121EA37040800058422C0B704B7 -:1001C0000800898426C2B7050800BD852EC43706FD -:1001D0000800418632C6B7060800FD8636C81715E6 -:1001E0000000130525E2971500009385A5E8370662 -:1001F00010F01306C6F2630CB500544514C2144542 -:1002000014C2544114C2144114C24105EDB737055C -:1002100010F0130505F22320050000000000000087 -:020220000000DC -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.SRLI.elf.hex b/benchmarks/riscv_tests/C.SRLI.elf.hex deleted file mode 100644 index 7d388709..00000000 --- a/benchmarks/riscv_tests/C.SRLI.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1014705833AC0814789833C -:100100003EC201443D8022C48144C18026C681454F -:10011000FD812EC817110000130101F0054605826C -:1001200032C08546898236C205473D833AC4854739 -:10013000C1833EC605447D8022C81711000013010B -:10014000E1EE9304F0FF858026C09305F0FF8981DE -:100150002EC21306F0FF3D8232C49306F0FFC18227 -:1001600036C61307F0FF7D833AC81711000013014C -:1001700021EDB70708009387F7FF85833EC037045A -:1001800008001304F4FF098022C2B7040800938416 -:10019000F4FFBD8026C4B70508009385F5FFC18133 -:1001A0002EC6370608001306F6FF7D8232C81711E7 -:1001B0000000130121EAB7060800858236C0370720 -:1001C000080009833AC2B7070800BD833EC437045C -:1001D0000800418022C6B7040800FD8026C8171514 -:1001E0000000130525E2971500009385A5E8370662 -:1001F00010F01306C6F2630CB500544514C2144542 -:1002000014C2544114C2144114C24105EDB737055C -:1002100010F0130505F22320050000000000000087 -:020220000000DC -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.SUB.elf.hex b/benchmarks/riscv_tests/C.SUB.elf.hex deleted file mode 100644 index 60914583..00000000 --- a/benchmarks/riscv_tests/C.SUB.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F1814581448D8C26C0814689 -:100100000546158E32C281471307F0FF1D8F3AC492 -:100110008144378400001304F4FF058C22C6014695 -:10012000A165918D2EC8171100001301E1EE05475E -:100130008146998E36C005448547818F3EC28545EC -:100140009304F0FF8D8C26C4854637860000130685 -:10015000F6FF158E32C6854721671D8F3AC81711E5 -:1001600000001301A1EC9304F0FF0144058C22C0B0 -:100170001306F0FF8545918D2EC21307F0FF9306FD -:10018000F0FF998E36C41304F0FFB7870000938701 -:10019000F7FF818F3EC69305F0FFA1648D8C26C8C2 -:1001A000171100001301C1E9B78600009386F6FF1E -:1001B0000146158E32C0B78700009387F7FF0547C9 -:1001C0001D8F3AC2B78400009384F4FF1304F0FF3C -:1001D000058C22C4378600001306F6FFB7850000A1 -:1001E0009385F5FF918D2EC6378700001307F7FF23 -:1001F000A166998E36C8171100001301A1E521648C -:100200008147818F3EC0A16585448D8C26C2A16641 -:100210001306F0FF158E32C4A1673787000013075D -:10022000F7FF1D8F3AC6A1642164058C22C81715FB -:100230000000130525DD971500009385A5E337061B -:1002400010F01306C6F2630CB500544514C21445F1 -:1002500014C2544114C2144114C24105EDB737050C -:1002600010F0130505F22320050000000000000037 -:0202700000008C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.SW.elf.hex b/benchmarks/riscv_tests/C.SW.elf.hex deleted file mode 100644 index 32f87503..00000000 --- a/benchmarks/riscv_tests/C.SW.elf.hex +++ /dev/null @@ -1,41 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F10144171600001306C6F198 -:1001000000C2004222C0171100001301E1EF854434 -:1001100097170000938747F0C4C3C44326C0171144 -:1001200000001301A1EE7D55971400009384C4EEE6 -:1001300088C488442AC017110000130161EDB786F6 -:1001400000009386F6FF171700001307E7EC14CBA7 -:10015000144B36C0171100001301C1EBA16717162D -:100160000000130666EB7CDE7C5E3EC017150000C7 -:10017000130545E9971500009385C5F2370610F081 -:100180001306C6F2630CB500544514C2144514C2DC -:10019000544114C2144114C24105EDB7370510F0A3 -:1001A000130505F2232005000000000000000000F8 -:0201B00000004D -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFF00000000000000000000000054 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.SWSP.elf.hex b/benchmarks/riscv_tests/C.SWSP.elf.hex deleted file mode 100644 index 269b8d9d..00000000 --- a/benchmarks/riscv_tests/C.SWSP.elf.hex +++ /dev/null @@ -1,41 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E0000100010001000100010001000100971062 -:1000F0000000938020F1171100001301E1F181410C -:100100000EC0824123A03000971000009380C0EF02 -:1001100017110000130141F0054212C2124223A040 -:10012000400097100000938060EE1711000013014B -:10013000A1EE7D58C2C0064823A000019710000020 -:10014000938000ED17110000130101ED378C0000C2 -:10015000130CFCFFE2DC665C23A08001971000001A -:10016000938040EB17110000130101EBA16FFEDF3C -:10017000FE5F23A0F001171500001305A5E89715F1 -:100180000000938525F2370610F01306C6F2630CC3 -:10019000B500544514C2144514C2544114C214414C -:1001A00014C24105EDB7370510F0130505F2232001 -:0201B000050048 -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFF00000000000000000000000054 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/C.XOR.elf.hex b/benchmarks/riscv_tests/C.XOR.elf.hex deleted file mode 100644 index dea9ef2d..00000000 --- a/benchmarks/riscv_tests/C.XOR.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:1000000001000100010001000100010001000100E8 -:1000100001000100010001000100010001000100D8 -:1000200001000100010001000100010001000100C8 -:1000300001000100010001000100010001000100B8 -:1000400001000100010001000100010001000100A8 -:100050000100010001000100010001000100010098 -:100060000100010001000100010001000100010088 -:100070000100010001000100010001000100010078 -:100080000100010001000100010001000100010068 -:100090000100010001000100010001000100010058 -:1000A0000100010001000100010001000100010048 -:1000B0000100010001000100010001000100010038 -:1000C0000100010001000100010001000100010028 -:1000D0000100010001000100010001000100010018 -:1000E00001000100010001000100010001001711E1 -:1000F0000000130121F181440144258C22C00146F6 -:100100008545B18D2EC201479306F0FFB98E36C4E6 -:100110000144B78700009387F7FFA18F3EC6814552 -:10012000A164AD8C26C8171100001301E1EE8546CD -:100130000146358E32C0854705473D8F3AC285441A -:100140001304F0FF258C22C40546B7850000938573 -:10015000F5FFB18D2EC60547A166B98E36C81711B9 -:1001600000001301A1EC1304F0FF8147A18F3EC0F2 -:100170009305F0FF8544AD8C26C29306F0FF13066D -:10018000F0FF358E32C49307F0FF37870000130766 -:10019000F7FF3D8F3AC69304F0FF2164258C22C8F7 -:1001A000171100001301C1E9378600001306F6FF9E -:1001B0008145B18D2EC0378700001307F7FF8546B4 -:1001C000B98E36C2378400001304F4FF9307F0FFA2 -:1001D000A18F3EC4B78500009385F5FFB78400006A -:1001E0009384F4FFAD8C26C6B78600009386F6FF95 -:1001F0002166358E32C8171100001301A1E5A167F1 -:1002000001473D8F3AC0A1640544258C22C2216676 -:100210009305F0FFB18D2EC42167B7860000938649 -:10022000F6FFB98E36C62164A167A18F3EC81715A7 -:100230000000130525DD971500009385A5E337061B -:1002400010F01306C6F2630CB500544514C21445F1 -:1002500014C2544114C2144114C24105EDB737050C -:1002600010F0130505F22320050000000000000037 -:0202700000008C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFF00000000000000000000000084 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/DIV.elf.hex b/benchmarks/riscv_tests/DIV.elf.hex deleted file mode 100644 index 3b01cf9a..00000000 --- a/benchmarks/riscv_tests/DIV.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B348190323201101130A000093091000AB -:10002000B3493A0323223101130B0000930AF0FF76 -:10003000B34A5B0323245101130C0000B70B00806B -:10004000938BFBFFB34B7C0323267101130D000040 -:10005000B70C0080B34C9D032328910117110000B9 -:10006000130181FB130E1000930D0000B34DBE036E -:100070002320B101130F1000930E1000B34EDF03C5 -:100080002322D10193011000930FF0FFB3CFF103AE -:100090002324F10113041000370200801302F2FF41 -:1000A000334244022326410093051000B704008028 -:1000B000B3C495022328910017110000130101F722 -:1000C0009306F0FF1306000033C6C6022320C100CA -:1000D0009307F0FF1307100033C7E7022322E10064 -:1000E0009308F0FF1308F0FF33C80803232401012D -:1000F0009309F0FF370900801309F9FF33C9290379 -:1001000023262101930AF0FF370A008033CA4A03ED -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B000033CB6B032320610188 -:10013000B70C0080938CFCFF130C100033CC8C03A5 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:1001500033CDAD032324A101B70E0080938EFEFFA3 -:10016000370E0080130EFEFF33CECE032326C101CF -:10017000B70F0080938FFFFF370F008033CFEF035F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B341320223203100B7040080F4 -:1001A0001304100033C48402232281003706008028 -:1001B0009305F0FFB345B6022324B1003707008052 -:1001C000B70600809386F6FFB346D7022326D100F8 -:1001D00037080080B7070080B347F8022328F100F2 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/DIVU.elf.hex b/benchmarks/riscv_tests/DIVU.elf.hex deleted file mode 100644 index 59987dce..00000000 --- a/benchmarks/riscv_tests/DIVU.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B358190323201101130A0000930910009B -:10002000B3593A0323223101130B0000930AF0FF66 -:10003000B35A5B0323245101130C0000B70B00805B -:10004000938BFBFFB35B7C0323267101130D000030 -:10005000B70C0080B35C9D032328910117110000A9 -:10006000130181FB130E1000930D0000B35DBE035E -:100070002320B101130F1000930E1000B35EDF03B5 -:100080002322D10193011000930FF0FFB3DFF1039E -:100090002324F10113041000370200801302F2FF41 -:1000A000335244022326410093051000B704008018 -:1000B000B3D495022328910017110000130101F712 -:1000C0009306F0FF1306000033D6C6022320C100BA -:1000D0009307F0FF1307100033D7E7022322E10054 -:1000E0009308F0FF1308F0FF33D80803232401011D -:1000F0009309F0FF370900801309F9FF33D9290369 -:1001000023262101930AF0FF370A008033DA4A03DD -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B000033DB6B032320610178 -:10013000B70C0080938CFCFF130C100033DC8C0395 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:1001500033DDAD032324A101B70E0080938EFEFF93 -:10016000370E0080130EFEFF33DECE032326C101BF -:10017000B70F0080938FFFFF370F008033DFEF034F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B351320223203100B7040080E4 -:1001A0001304100033D48402232281003706008018 -:1001B0009305F0FFB355B6022324B1003707008042 -:1001C000B70600809386F6FFB356D7022326D100E8 -:1001D00037080080B7070080B357F8022328F100E2 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-ADD-01.elf.hex b/benchmarks/riscv_tests/I-ADD-01.elf.hex deleted file mode 100644 index 038e1f0f..00000000 --- a/benchmarks/riscv_tests/I-ADD-01.elf.hex +++ /dev/null @@ -1,65 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF3704008033824100DD -:10003000B382510033836100B38371003384810044 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FE03A400009304000097 -:10007000130510009305F0FF370600801306F6FF06 -:10008000B7060080B30494003305A400B305B400A0 -:100090003306C400B306D40023208100232291003C -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181FA5A -:1000C00083A6000013070000930710001308F0FF39 -:1000D000B70800809388F8FF370900803387E6006F -:1000E000B387F60033880601B388160133892601E9 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F603A9000093090000E4 -:10012000130A1000930AF0FF370B0080130BFBFF3C -:10013000B70B0080B3093901330A4901B30A5901E9 -:10014000330B6901B30B79012320210123223101F3 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F23B -:1001700083AB0000130C0000930C1000130DF0FF74 -:10018000B70D0080938DFDFF370E0080338C8B01FF -:10019000B38C9B01338DAB01B38DBB01338ECB018F -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101971C0000938CCCE5B0 -:1001C000171D0000130D8DEE03AE0C00930D1000F3 -:1001D000B30EBE01338FBE01B30FBF01B380BF01A9 -:1001E0003381B001B301B1012320BD012322CD0130 -:1001F0002324DD012326ED012328FD01232A1D00F0 -:10020000232C2D00232E3D0097100000938000E149 -:1002100017110000130181EB03AE0000B79DFFF73B -:10022000938D8D813300BE012320010097100000C3 -:10023000938000DF17110000130181E903AE000075 -:10024000B79DFFF7938D8D813300BE01B30200008F -:10025000232001002322510097100000938080DCAE -:1002600017110000130141E783A100003382010050 -:10027000B30202003303500033070300B307070043 -:1002800033880700B30C0001330D9001B30D0D004E -:10029000232041002322A1012324B10117150000CE -:1002A000130545D9971500009385C5E3370610F06F -:1002B0001306C6F26306B5028326C5002320D600C6 -:1002C000832685002320D600832645002320D600E0 -:1002D000832605002320D600130505016FF09FFD3E -:1002E000370510F0130505F223200500000000007B -:0402F000000000000A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080CDAB00007856341298BADCFE98 -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-ADDI-01.elf.hex b/benchmarks/riscv_tests/I-ADDI-01.elf.hex deleted file mode 100644 index 672d384f..00000000 --- a/benchmarks/riscv_tests/I-ADDI-01.elf.hex +++ /dev/null @@ -1,56 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A10000138211009382F17F1383F1FF0B -:1000200093830100138401802320310023224100A7 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101007D -:1000500003A40000930414001305F47F9305F4FF38 -:1000600013060400930604802320810023229100BC -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FD84 -:1000900083A60000138716009387F67F1388F6FF68 -:1000A00093880600138906802320D1002322E100D3 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000971000009380C0F417110000130101FB8A -:1000D00003A9000093091900130AF97F930AF9FF95 -:1000E000130B0900930B09802320210123223101E6 -:1000F000232441012326510123286101232A710170 -:1001000097100000938000F117110000130181F88F -:1001100083AB0000138C1B00938CFB7F138DFBFFC4 -:10012000938D0B00138E0B802320710123228101FC -:10013000232491012326A1012328B101232AC101EF -:10014000171D0000130D4DED971D0000938D0DF64A -:10015000032E0D00930E1E00138F1E00930F1F0021 -:1001600093801F00138110009301110023A0CD0183 -:1001700023A2DD0123A4ED0123A6FD0123A81D0078 -:1001800023AA2D0023AC3D0097100000938000E9C6 -:1001900017110000130141F383A200001380120025 -:1001A0002320010097100000938080E717110000C2 -:1001B0001301C1F183A2000013801200930210000A -:1001C000232001002322510097100000938080E536 -:1001D00017110000130101F083A100001382010038 -:1001E0009302020013830200130703009307070022 -:1001F00013880700930C0800138D0C00930D0D005D -:1002000023203100232241002324A1012326B10110 -:1002100017150000130505E297150000938585EC7E -:10022000370610F01306C6F26306B5028326C50032 -:100230002320D600832685002320D6008326450070 -:100240002320D600832605002320D60013050501B0 -:100250006FF09FFD370510F0130505F22320050010 -:04026000000000009A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080CDAB00007856341298BADCFE98 -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-AND-01.elf.hex b/benchmarks/riscv_tests/I-AND-01.elf.hex deleted file mode 100644 index 5ac425d0..00000000 --- a/benchmarks/riscv_tests/I-AND-01.elf.hex +++ /dev/null @@ -1,66 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF3704008033F241006D -:10003000B3F2510033F36100B3F3710033F4810084 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FE03A400009304000097 -:10007000130510009305F0FF370600801306F6FF06 -:10008000B7060080B37494003375A400B375B40050 -:100090003376C400B376D40023208100232291005C -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181FA5A -:1000C00083A6000013070000930710001308F0FF39 -:1000D000B70800809388F8FF3709008033F7E600FF -:1000E000B3F7F60033F80601B3F8160133F9260129 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F603A9000093090000E4 -:10012000130A1000930AF0FF370B0080130BFBFF3C -:10013000B70B0080B3793901337A4901B37A590199 -:10014000337B6901B37B7901232021012322310113 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F23B -:1001700083AB0000130C0000930C1000130DF0FF74 -:10018000B70D0080938DFDFF370E008033FC8B018F -:10019000B3FC9B0133FDAB01B3FDBB0133FECB01CF -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101971C0000938CCCE5B0 -:1001C000171D0000130D8DEE03AE0C001302F00797 -:1001D0009302F0031303F0019303F0001304700083 -:1001E00093043000B37E4E0033FF5E00B37F6F0098 -:1001F000B3F07F0033F18000B371910023204D00F4 -:100200002322CD012324DD012326ED012328FD0136 -:10021000232A1D00232C2D00232E3D0097100000C3 -:100220009380C0DF17110000130141EA03AE000004 -:10023000B79DFFF7938D8D813370BE0123200100A0 -:10024000971000009380C0DD17110000130141E8F2 -:1002500003AE0000B79DFFF7938D8D813370BE0113 -:10026000B3720000232001002322510097100000E8 -:10027000938040DB17110000130101E683A1000009 -:100280009303F0FF33F27100B372720033F3530043 -:1002900033777300B377770033F87700B3FC03014B -:1002A00033FD9301B37D7D00232041002322A10172 -:1002B0002324B101171500001305C5D797150000B9 -:1002C000938545E2370610F01306C6F26306B502C1 -:1002D0008326C5002320D600832685002320D60050 -:1002E000832645002320D600832605002320D60040 -:1002F000130505016FF09FFD370510F0130505F29A -:0403000023200500B1 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFCDAB7856341298BADCFE9A -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-ANDI-01.elf.hex b/benchmarks/riscv_tests/I-ANDI-01.elf.hex deleted file mode 100644 index ffcf1642..00000000 --- a/benchmarks/riscv_tests/I-ANDI-01.elf.hex +++ /dev/null @@ -1,56 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013F2110093F2F17F13F3F1FFBB -:1000200093F3010013F401802320310023224100C7 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101007D -:1000500003A40000937414001375F47F9375F4FFE8 -:1000600013760400937604802320810023229100DC -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FD84 -:1000900083A6000013F7160093F7F67F13F8F6FF18 -:1000A00093F8060013F906802320D1002322E100F3 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000971000009380C0F417110000130101FB8A -:1000D00003A9000093791900137AF97F937AF9FF45 -:1000E000137B0900937B0980232021012322310106 -:1000F000232441012326510123286101232A710170 -:1001000097100000938000F117110000130181F88F -:1001100083AB000013FC1B0093FCFB7F13FDFBFF74 -:1001200093FD0B0013FE0B8023207101232281011C -:10013000232491012326A1012328B101232AC101EF -:10014000171D0000130D4DED971D0000938D0DF64A -:10015000032E0D00937EFE0713FFFE03937FFF0126 -:1001600093F0FF0013F170009371310023A0CD01D3 -:1001700023A2DD0123A4ED0123A6FD0123A81D0078 -:1001800023AA2D0023AC3D0097100000938000E9C6 -:1001900017110000130141F383A2000013F01200B5 -:1001A0002320010097100000938080E717110000C2 -:1001B0001301C1F183A2000013F01200937210002A -:1001C000232001002322510097100000938080E536 -:1001D00017110000130101F083A1000013F2F1FFD9 -:1001E0009372F2FF13F3F2FF1377F3FF9377F7FFA6 -:1001F00013F8F7FF937CF8FF13FDFCFF937DFDFFE1 -:1002000023203100232241002324A1012326B10110 -:1002100017150000130505E297150000938585EC7E -:10022000370610F01306C6F26306B5028326C50032 -:100230002320D600832685002320D6008326450070 -:100240002320D600832605002320D60013050501B0 -:100250006FF09FFD370510F0130505F22320050010 -:04026000000000009A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFCDAB7856341298BADCFE9A -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-AUIPC-01.elf.hex b/benchmarks/riscv_tests/I-AUIPC-01.elf.hex deleted file mode 100644 index 2846a05f..00000000 --- a/benchmarks/riscv_tests/I-AUIPC-01.elf.hex +++ /dev/null @@ -1,42 +0,0 @@ -:0200000480007A -:100000001717000013070700971700009387870151 -:10001000832007003711000013014100B7F1FFFFF3 -:100020009381810037F2FF7F1302C200B702008084 -:100030009382020133812000B3813000338240007B -:10004000B3825000170300009713000017F8FFFF5A -:1000500097FEFF7F970F008033431300B3C3230045 -:1000600033483800B3CE4E00B3CF5F0023A0670003 -:1000700023A2770023A4070123A6D70123A8F70111 -:1000800097180000938848F8171800001308C8FA5A -:10009000B710111193801011372122221301212250 -:1000A000B737333393873733374E4444130E4E44B8 -:1000B000375F5555130F5F5583A108003702008045 -:1000C000B7F2FF7F9382420013038000B713000052 -:1000D0009383C30037F4FFFF13040401338241000C -:1000E000B382510033836100B38371003384810094 -:1000F0009700008017F1FF7F97070000171E000090 -:1001000017FFFFFFB3C0400033415100B3C7670082 -:10011000334E7E00334F8F00232018002322280007 -:100120002324F8002326C8012328E801171900001A -:100130001309C9ED97180000938848F1832009003E -:10014000032149008321890017020000130242FFA6 -:100150009707000093878701170F0000130F0F0404 -:10016000970200009382C2FD1708000013080800E0 -:10017000970F0000938F8F0233421200B3C72700FE -:10018000334F3F00B382124033482800B3CF3F00C3 -:1001900023A0480023A2F80023A4E80123A65800C6 -:1001A00023A8080123AAF80117150000130585E705 -:1001B00097150000938505EB370610F01306C6F27D -:1001C0006306B5028326C5002320D600832685005A -:1001D0002320D600832645002320D6008326050051 -:1001E0002320D600130505016FF09FFD370510F0A1 -:1001F000130505F2232005000000000000000000A8 -:0402000000000000FA -:1010000044000080F00000803C0100806801008006 -:1010100098010080000000000000000000000000B7 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-BEQ-01.elf.hex b/benchmarks/riscv_tests/I-BEQ-01.elf.hex deleted file mode 100644 index 233692bc..00000000 --- a/benchmarks/riscv_tests/I-BEQ-01.elf.hex +++ /dev/null @@ -1,72 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF37040080930F000031 -:100030006384410093EF1F006384510093EF2F000E -:100040006384610093EF4F006384710093EF8F002E -:100050006384810093EF0F012320310023224100AC -:10006000232451002326610023287100232A8100C4 -:10007000232CF10197100000938000F91711000064 -:10008000130101FC03A300009303000013041000FC -:100090009304F0FF370500801305F5FFB7050080D6 -:1000A000930F00006304730093EF1F006304830049 -:1000B00093EF2F006304930093EF4F006304A300BA -:1000C00093EF8F006304B30093EF0F0123206100CF -:1000D0002322710023248100232691002328A100DC -:1000E000232AB100232CF10197100000938000F225 -:1000F00017110000130181F603A60000930600000B -:10010000130710009307F0FF370800801308F8FF6B -:10011000B7080080930F00006304D60093EF1F0020 -:100120006304E60093EF2F006304F60093EF4F00A3 -:100130006304060193EF8F006304160193EF0F0130 -:100140002320C1002322D1002324E1002326F10033 -:1001500023280101232A1101232CF101971000000B -:10016000938000EB17110000130101F103A90000B7 -:1001700093090000130A1000930AF0FF370B008068 -:10018000130BFBFFB70B0080930F000063043901D2 -:1001900093EF1F006304490193EF2F00630459019B -:1001A00093EF4F006304690193EF8F0063047901BB -:1001B00093EF0F0123202101232231012324410148 -:1001C0002326510123286101232A7101232CF101E7 -:1001D00097100000938000E417110000130181EBD9 -:1001E00003AC0000930C0000130D1000930DF0FF02 -:1001F000370E0080130EFEFFB70E0080930F000035 -:1002000063049C0193EF1F006304AC0193EF2F0084 -:100210006304BC0193EF4F006304CC0193EF8F00A4 -:100220006304DC0193EF0F0123208101232291015C -:100230002324A1012326B1012328C101232AD101AE -:10024000232CF101971D0000938D8DE69300000093 -:10025000130110009301F0FF370200801302F2FF38 -:10026000B7020080930F00006384000093EF1F002B -:100270006304010093EF2F006384010093EF4F00AC -:100280006304020093EF8F006384020093EF0F0179 -:100290006304100093EF0F026304200093EF0F0438 -:1002A0006304300093EF0F086304400093EF0F10D6 -:1002B0006304500093EF0F2023A0FD01971A000064 -:1002C000938A8AD5171B0000130BCBDE83AF0A007D -:1002D0001301F0FF9301F0FF37D2ED0F130292BA32 -:1002E00063840F0213010000930100001302000059 -:1002F000B74165879381113263840F0213010000B7 -:10030000930100001302000037E1BC9A130101EFD2 -:10031000E3800FFE130100009301000013020000B0 -:1003200023200B0023222B0023243B0023264B00F9 -:1003300017150000130505CF97150000938585D884 -:10034000370610F01306C6F26306B5028326C50011 -:100350002320D600832685002320D600832645004F -:100360002320D600832605002320D600130505018F -:100370006FF09FFD370510F0130505F223200500EF -:040380000000000079 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:101010000000008000000000000000000000000050 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-BGE-01.elf.hex b/benchmarks/riscv_tests/I-BGE-01.elf.hex deleted file mode 100644 index bb6b931a..00000000 --- a/benchmarks/riscv_tests/I-BGE-01.elf.hex +++ /dev/null @@ -1,72 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF37040080930F000031 -:1000300063D4410093EF1F0063D4510093EF2F006E -:1000400063D4610093EF4F0063D4710093EF8F008E -:1000500063D4810093EF0F0123203100232241005C -:10006000232451002326610023287100232A8100C4 -:10007000232CF10197100000938000F91711000064 -:10008000130101FC03A300009303000013041000FC -:100090009304F0FF370500801305F5FFB7050080D6 -:1000A000930F00006354730093EF1F0063548300A9 -:1000B00093EF2F006354930093EF4F006354A3001A -:1000C00093EF8F006354B30093EF0F01232061007F -:1000D0002322710023248100232691002328A100DC -:1000E000232AB100232CF10197100000938000F225 -:1000F00017110000130181F603A60000930600000B -:10010000130710009307F0FF370800801308F8FF6B -:10011000B7080080930F00006354D60093EF1F00D0 -:100120006354E60093EF2F006354F60093EF4F0003 -:100130006354060193EF8F006354160193EF0F0190 -:100140002320C1002322D1002324E1002326F10033 -:1001500023280101232A1101232CF101971000000B -:10016000938000EB17110000130101F103A90000B7 -:1001700093090000130A1000930AF0FF370B008068 -:10018000130BFBFFB70B0080930F00006354390182 -:1001900093EF1F006354490193EF2F0063545901FB -:1001A00093EF4F006354690193EF8F00635479011B -:1001B00093EF0F0123202101232231012324410148 -:1001C0002326510123286101232A7101232CF101E7 -:1001D00097100000938000E417110000130181EBD9 -:1001E00003AC0000930C0000130D1000930DF0FF02 -:1001F000370E0080130EFEFFB70E0080930F000035 -:1002000063549C0193EF1F006354AC0193EF2F00E4 -:100210006354BC0193EF4F006354CC0193EF8F0004 -:100220006354DC0193EF0F0123208101232291010C -:100230002324A1012326B1012328C101232AD101AE -:10024000232CF101971D0000938D8DE69300000093 -:10025000130110009301F0FF370200801302F2FF38 -:10026000B7020080930F000063D4000093EF1F00DB -:100270006354010093EF2F0063D4010093EF4F000C -:100280006354020093EF8F0063D4020093EF0F01D9 -:100290006354100093EF0F026354200093EF0F0498 -:1002A0006354300093EF0F086354400093EF0F1036 -:1002B0006354500093EF0F2023A0FD01971A000014 -:1002C000938A8AD5171B0000130BCBDE83AF0A007D -:1002D0001301F0FF9301F0FF37D2ED0F130292BA32 -:1002E00063D40F0213010000930100001302000009 -:1002F000B74165879381113263D40F021301000067 -:10030000930100001302000037E1BC9A130101EFD2 -:10031000E3D00FFE13010000930100001302000060 -:1003200023200B0023222B0023243B0023264B00F9 -:1003300017150000130505CF97150000938585D884 -:10034000370610F01306C6F26306B5028326C50011 -:100350002320D600832685002320D600832645004F -:100360002320D600832605002320D600130505018F -:100370006FF09FFD370510F0130505F223200500EF -:040380000000000079 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:10101000000000800100000000000000000000004F -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-BGEU-01.elf.hex b/benchmarks/riscv_tests/I-BGEU-01.elf.hex deleted file mode 100644 index d4a61753..00000000 --- a/benchmarks/riscv_tests/I-BGEU-01.elf.hex +++ /dev/null @@ -1,72 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF37040080930F000031 -:1000300063F4410093EF1F0063F4510093EF2F002E -:1000400063F4610093EF4F0063F4710093EF8F004E -:1000500063F4810093EF0F0123203100232241003C -:10006000232451002326610023287100232A8100C4 -:10007000232CF10197100000938000F91711000064 -:10008000130101FC03A300009303000013041000FC -:100090009304F0FF370500801305F5FFB7050080D6 -:1000A000930F00006374730093EF1F006374830069 -:1000B00093EF2F006374930093EF4F006374A300DA -:1000C00093EF8F006374B30093EF0F01232061005F -:1000D0002322710023248100232691002328A100DC -:1000E000232AB100232CF10197100000938000F225 -:1000F00017110000130181F603A60000930600000B -:10010000130710009307F0FF370800801308F8FF6B -:10011000B7080080930F00006374D60093EF1F00B0 -:100120006374E60093EF2F006374F60093EF4F00C3 -:100130006374060193EF8F006374160193EF0F0150 -:100140002320C1002322D1002324E1002326F10033 -:1001500023280101232A1101232CF101971000000B -:10016000938000EB17110000130101F103A90000B7 -:1001700093090000130A1000930AF0FF370B008068 -:10018000130BFBFFB70B0080930F00006374390162 -:1001900093EF1F006374490193EF2F0063745901BB -:1001A00093EF4F006374690193EF8F0063747901DB -:1001B00093EF0F0123202101232231012324410148 -:1001C0002326510123286101232A7101232CF101E7 -:1001D00097100000938000E417110000130181EBD9 -:1001E00003AC0000930C0000130D1000930DF0FF02 -:1001F000370E0080130EFEFFB70E0080930F000035 -:1002000063749C0193EF1F006374AC0193EF2F00A4 -:100210006374BC0193EF4F006374CC0193EF8F00C4 -:100220006374DC0193EF0F012320810123229101EC -:100230002324A1012326B1012328C101232AD101AE -:10024000232CF101971D0000938D8DE69300000093 -:10025000130110009301F0FF370200801302F2FF38 -:10026000B7020080930F000063F4000093EF1F00BB -:100270006374010093EF2F0063F4010093EF4F00CC -:100280006374020093EF8F0063F4020093EF0F0199 -:100290006374100093EF0F026374200093EF0F0458 -:1002A0006374300093EF0F086374400093EF0F10F6 -:1002B0006374500093EF0F2023A0FD01971A0000F4 -:1002C000938A8AD5171B0000130BCBDE83AF0A007D -:1002D0001301F0FF9301F0FF37D2ED0F130292BA32 -:1002E00063F40F02130100009301000013020000E9 -:1002F000B74165879381113263F40F021301000047 -:10030000930100001302000037E1BC9A130101EFD2 -:10031000E3F00FFE13010000930100001302000040 -:1003200023200B0023222B0023243B0023264B00F9 -:1003300017150000130505CF97150000938585D884 -:10034000370610F01306C6F26306B5028326C50011 -:100350002320D600832685002320D600832645004F -:100360002320D600832605002320D600130505018F -:100370006FF09FFD370510F0130505F223200500EF -:040380000000000079 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:10101000000000800100000000000000000000004F -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-BLT-01.elf.hex b/benchmarks/riscv_tests/I-BLT-01.elf.hex deleted file mode 100644 index 80906cc8..00000000 --- a/benchmarks/riscv_tests/I-BLT-01.elf.hex +++ /dev/null @@ -1,72 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF37040080930F000031 -:1000300063C4410093EF1F0063C4510093EF2F008E -:1000400063C4610093EF4F0063C4710093EF8F00AE -:1000500063C4810093EF0F0123203100232241006C -:10006000232451002326610023287100232A8100C4 -:10007000232CF10197100000938000F91711000064 -:10008000130101FC03A300009303000013041000FC -:100090009304F0FF370500801305F5FFB7050080D6 -:1000A000930F00006344730093EF1F0063448300C9 -:1000B00093EF2F006344930093EF4F006344A3003A -:1000C00093EF8F006344B30093EF0F01232061008F -:1000D0002322710023248100232691002328A100DC -:1000E000232AB100232CF10197100000938000F225 -:1000F00017110000130181F603A60000930600000B -:10010000130710009307F0FF370800801308F8FF6B -:10011000B7080080930F00006344D60093EF1F00E0 -:100120006344E60093EF2F006344F60093EF4F0023 -:100130006344060193EF8F006344160193EF0F01B0 -:100140002320C1002322D1002324E1002326F10033 -:1001500023280101232A1101232CF101971000000B -:10016000938000EB17110000130101F103A90000B7 -:1001700093090000130A1000930AF0FF370B008068 -:10018000130BFBFFB70B0080930F00006344390192 -:1001900093EF1F006344490193EF2F00634459011B -:1001A00093EF4F006344690193EF8F00634479013B -:1001B00093EF0F0123202101232231012324410148 -:1001C0002326510123286101232A7101232CF101E7 -:1001D00097100000938000E417110000130181EBD9 -:1001E00003AC0000930C0000130D1000930DF0FF02 -:1001F000370E0080130EFEFFB70E0080930F000035 -:1002000063449C0193EF1F006344AC0193EF2F0004 -:100210006344BC0193EF4F006344CC0193EF8F0024 -:100220006344DC0193EF0F0123208101232291011C -:100230002324A1012326B1012328C101232AD101AE -:10024000232CF101971D0000938D8DE69300000093 -:10025000130110009301F0FF370200801302F2FF38 -:10026000B7020080930F000063C4000093EF1F00EB -:100270006344010093EF2F0063C4010093EF4F002C -:100280006344020093EF8F0063C4020093EF0F01F9 -:100290006344100093EF0F026344200093EF0F04B8 -:1002A0006344300093EF0F086344400093EF0F1056 -:1002B0006344500093EF0F2023A0FD01971A000024 -:1002C000938A8AD5171B0000130BCBDE83AF0A007D -:1002D0001301F0FF9301F0FF37D2ED0F130292BA32 -:1002E00063C40F0213010000930100001302000019 -:1002F000B74165879381113263C40F021301000077 -:10030000930100001302000037E1BC9A130101EFD2 -:10031000E3C00FFE13010000930100001302000070 -:1003200023200B0023222B0023243B0023264B00F9 -:1003300017150000130505CF97150000938585D884 -:10034000370610F01306C6F26306B5028326C50011 -:100350002320D600832685002320D600832645004F -:100360002320D600832605002320D600130505018F -:100370006FF09FFD370510F0130505F223200500EF -:040380000000000079 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFFFFF000000000000000054 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-BLTU-01.elf.hex b/benchmarks/riscv_tests/I-BLTU-01.elf.hex deleted file mode 100644 index 12719083..00000000 --- a/benchmarks/riscv_tests/I-BLTU-01.elf.hex +++ /dev/null @@ -1,72 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF37040080930F000031 -:1000300063E4410093EF1F0063E4510093EF2F004E -:1000400063E4610093EF4F0063E4710093EF8F006E -:1000500063E4810093EF0F0123203100232241004C -:10006000232451002326610023287100232A8100C4 -:10007000232CF10197100000938000F91711000064 -:10008000130101FC03A300009303000013041000FC -:100090009304F0FF370500801305F5FFB7050080D6 -:1000A000930F00006364730093EF1F006364830089 -:1000B00093EF2F006364930093EF4F006364A300FA -:1000C00093EF8F006364B30093EF0F01232061006F -:1000D0002322710023248100232691002328A100DC -:1000E000232AB100232CF10197100000938000F225 -:1000F00017110000130181F603A60000930600000B -:10010000130710009307F0FF370800801308F8FF6B -:10011000B7080080930F00006364D60093EF1F00C0 -:100120006364E60093EF2F006364F60093EF4F00E3 -:100130006364060193EF8F006364160193EF0F0170 -:100140002320C1002322D1002324E1002326F10033 -:1001500023280101232A1101232CF101971000000B -:10016000938000EB17110000130101F103A90000B7 -:1001700093090000130A1000930AF0FF370B008068 -:10018000130BFBFFB70B0080930F00006364390172 -:1001900093EF1F006364490193EF2F0063645901DB -:1001A00093EF4F006364690193EF8F0063647901FB -:1001B00093EF0F0123202101232231012324410148 -:1001C0002326510123286101232A7101232CF101E7 -:1001D00097100000938000E417110000130181EBD9 -:1001E00003AC0000930C0000130D1000930DF0FF02 -:1001F000370E0080130EFEFFB70E0080930F000035 -:1002000063649C0193EF1F006364AC0193EF2F00C4 -:100210006364BC0193EF4F006364CC0193EF8F00E4 -:100220006364DC0193EF0F012320810123229101FC -:100230002324A1012326B1012328C101232AD101AE -:10024000232CF101971D0000938D8DE69300000093 -:10025000130110009301F0FF370200801302F2FF38 -:10026000B7020080930F000063E4000093EF1F00CB -:100270006364010093EF2F0063E4010093EF4F00EC -:100280006364020093EF8F0063E4020093EF0F01B9 -:100290006364100093EF0F026364200093EF0F0478 -:1002A0006364300093EF0F086364400093EF0F1016 -:1002B0006364500093EF0F2023A0FD01971A000004 -:1002C000938A8AD5171B0000130BCBDE83AF0A007D -:1002D0001301F0FF9301F0FF37D2ED0F130292BA32 -:1002E0006364F00313010000930100001302000097 -:1002F000B7416587938111326364F00313010000F5 -:10030000930100001302000037E1BC9A130101EFD2 -:10031000E360F0FF130100009301000013020000EE -:1003200023200B0023222B0023243B0023264B00F9 -:1003300017150000130505CF97150000938585D884 -:10034000370610F01306C6F26306B5028326C50011 -:100350002320D600832685002320D600832645004F -:100360002320D600832605002320D600130505018F -:100370006FF09FFD370510F0130505F223200500EF -:040380000000000079 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:10101000000000800100000000000000000000004F -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-BNE-01.elf.hex b/benchmarks/riscv_tests/I-BNE-01.elf.hex deleted file mode 100644 index 31f96bfe..00000000 --- a/benchmarks/riscv_tests/I-BNE-01.elf.hex +++ /dev/null @@ -1,72 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF37040080930F000031 -:100030006394410093EF1F006394510093EF2F00EE -:100040006394610093EF4F006394710093EF8F000E -:100050006394810093EF0F0123203100232241009C -:10006000232451002326610023287100232A8100C4 -:10007000232CF10197100000938000F91711000064 -:10008000130101FC03A300009303000013041000FC -:100090009304F0FF370500801305F5FFB7050080D6 -:1000A000930F00006314730093EF1F006314830029 -:1000B00093EF2F006314930093EF4F006314A3009A -:1000C00093EF8F006314B30093EF0F0123206100BF -:1000D0002322710023248100232691002328A100DC -:1000E000232AB100232CF10197100000938000F225 -:1000F00017110000130181F603A60000930600000B -:10010000130710009307F0FF370800801308F8FF6B -:10011000B7080080930F00006314D60093EF1F0010 -:100120006314E60093EF2F006314F60093EF4F0083 -:100130006314060193EF8F006314160193EF0F0110 -:100140002320C1002322D1002324E1002326F10033 -:1001500023280101232A1101232CF101971000000B -:10016000938000EB17110000130101F103A90000B7 -:1001700093090000130A1000930AF0FF370B008068 -:10018000130BFBFFB70B0080930F000063143901C2 -:1001900093EF1F006314490193EF2F00631459017B -:1001A00093EF4F006314690193EF8F00631479019B -:1001B00093EF0F0123202101232231012324410148 -:1001C0002326510123286101232A7101232CF101E7 -:1001D00097100000938000E417110000130181EBD9 -:1001E00003AC0000930C0000130D1000930DF0FF02 -:1001F000370E0080130EFEFFB70E0080930F000035 -:1002000063149C0193EF1F006314AC0193EF2F0064 -:100210006314BC0193EF4F006314CC0193EF8F0084 -:100220006314DC0193EF0F0123208101232291014C -:100230002324A1012326B1012328C101232AD101AE -:10024000232CF101971D0000938D8DE69300000093 -:10025000130110009301F0FF370200801302F2FF38 -:10026000B7020080930F00006394000093EF1F001B -:100270006314010093EF2F006394010093EF4F008C -:100280006314020093EF8F006394020093EF0F0159 -:100290006314100093EF0F026314200093EF0F0418 -:1002A0006314300093EF0F086314400093EF0F10B6 -:1002B0006314500093EF0F2023A0FD01971A000054 -:1002C000938A8AD5171B0000130BCBDE83AF0A007D -:1002D0001301F0FF9301F0FF37D2ED0F130292BA32 -:1002E00063940F0213010000930100001302000049 -:1002F000B74165879381113263940F0213010000A7 -:10030000930100001302000037E1BC9A130101EFD2 -:10031000E3900FFE130100009301000013020000A0 -:1003200023200B0023222B0023243B0023264B00F9 -:1003300017150000130505CF97150000938585D884 -:10034000370610F01306C6F26306B5028326C50011 -:100350002320D600832685002320D600832645004F -:100360002320D600832605002320D600130505018F -:100370006FF09FFD370510F0130505F223200500EF -:040380000000000079 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFFFFF000000000000000054 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-CSRRC-01.elf.hex b/benchmarks/riscv_tests/I-CSRRC-01.elf.hex deleted file mode 100644 index 6d1beab8..00000000 --- a/benchmarks/riscv_tests/I-CSRRC-01.elf.hex +++ /dev/null @@ -1,39 +0,0 @@ -:0200000480007A -:10000000971700009387070093001000130100006A -:10001000B701F17F9381F1FF370200809302F0FF77 -:1000200073900234F3B00034F3900234733101342E -:1000300073910234F3B10134F39102347332023418 -:1000400073920234F3B20234F312003423A0070097 -:1000500023A2170023A4270023A6370023A84700C4 -:1000600023AA570097120000938242FB93051000C9 -:1000700013060000B706F17F9386F6FF370700806E -:100080009307F0FF73900734F3B5053473360634E5 -:10009000F3B6063473370734F3B7073473380034D4 -:1000A00023A0B20023A2C20023A4D20023A6E20010 -:1000B00023A8F20023AA0201171D0000130D8DF7DB -:1000C000B75A3412938A8A67130AF0FF73100A34FE -:1000D00073BB0A34F33A0B34F31B0A3473BC0B348E -:1000E000F33C003423205D0123226D0123247D0194 -:1000F00023268D0123289D01971000009380C0F4D2 -:10010000377F7242130FFFE673100F3473300F34D2 -:1001100023A0000023A2E00117110000130141F306 -:10012000B79FFFF7938F8F8173900F347330003434 -:1001300073300034F33F0034232001002322F10107 -:1001400017110000130141F11302F0FFB752389666 -:1001500093824227B7531632938383497310023434 -:10016000F3B20234F3B30334733404342320510064 -:10017000232271002324810017150000130585E850 -:1001800097150000938505EE370610F01306C6F2AA -:100190006306B5028326C5002320D600832685008A -:1001A0002320D600832645002320D6008326050081 -:1001B0002320D600130505016FF09FFD370510F0D1 -:1001C000130505F2232005000000000000000000D8 -:0401D000000000002B -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-CSRRCI-01.elf.hex b/benchmarks/riscv_tests/I-CSRRCI-01.elf.hex deleted file mode 100644 index a8ee8bde..00000000 --- a/benchmarks/riscv_tests/I-CSRRCI-01.elf.hex +++ /dev/null @@ -1,25 +0,0 @@ -:0200000480007A -:1000000097170000938707001304F0FF7310043460 -:10001000F3F00034F31004347371003473110434BA -:10002000F3F10F34F311043473720834731204348F -:10003000F3F20734F312043423A0070023A21700BD -:1000400023A4270023A6370023A8470023AA57008C -:1000500023AC870097120000938282FC1304F0FF08 -:1000600073100434F3F5003473760034F3F60F3470 -:1000700073770834F3F707347378003423A0B200A1 -:1000800023A2C20023A4D20023A6E20023A8F200E8 -:1000900023AA020123AC820097100000938000FA8B -:1000A000375A1632130A8A4973100A3473F0073428 -:1000B000731A0A3423A0000023A240011715000080 -:1000C000130545F4971500009385C5F7370610F022 -:1000D0001306C6F26306B5028326C5002320D600A8 -:1000E000832685002320D600832645002320D600C2 -:1000F000832605002320D600130505016FF09FFD20 -:10010000370510F0130505F223200500000000005C -:0401100000000000EB -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-CSRRS-01.elf.hex b/benchmarks/riscv_tests/I-CSRRS-01.elf.hex deleted file mode 100644 index 73785395..00000000 --- a/benchmarks/riscv_tests/I-CSRRS-01.elf.hex +++ /dev/null @@ -1,38 +0,0 @@ -:0200000480007A -:10000000971700009387070093001000130100006A -:10001000B701F17F9381F1FF370200809302F0FF77 -:1000200073100034F3A00034F31000347321013452 -:1000300073110034F3A10134F3110034732202343C -:1000400073120034F3A20234F312003423A0070029 -:1000500023A2170023A4270023A6370023A84700C4 -:1000600023AA570097120000938242FB93051000C9 -:1000700013060000B706F17F9386F6FF370700806E -:100080009307F0FF73100034F3A50534732606348C -:10009000F3A6063473270734F3A707347328003414 -:1000A00023A0B20023A2C20023A4D20023A6E20010 -:1000B00023A8F20023AA0201171D0000130D8DF7DB -:1000C000B75A3412938A8A677310003473AB0A34B8 -:1000D000F32B0B34F31B003473AC0B34F32C0034D0 -:1000E00023205D0123226D0123247D0123268D0120 -:1000F00023289D0197100000938000F5377F7242FE -:10010000130FFFE673100F3473200F3423A0000089 -:1001100023A2E00117110000130181F3B79FFFF73D -:10012000938F8F8173900F347320003473200034C9 -:10013000F32F0034232001002322F10117110000C6 -:10014000130181F1B753163293838349B75238961E -:100150009382422773100034F3A20234F3A30334D2 -:1001600073240434232051002322710023248100AE -:1001700017150000130505E997150000938585EE16 -:10018000370610F01306C6F26306B5028326C500D3 -:100190002320D600832685002320D6008326450011 -:1001A0002320D600832605002320D6001305050151 -:1001B0006FF09FFD370510F0130505F223200500B1 -:0401C000000000003B -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-CSRRSI-01.elf.hex b/benchmarks/riscv_tests/I-CSRRSI-01.elf.hex deleted file mode 100644 index 509c6386..00000000 --- a/benchmarks/riscv_tests/I-CSRRSI-01.elf.hex +++ /dev/null @@ -1,24 +0,0 @@ -:0200000480007A -:10000000971700009387070073100034F3E0003463 -:10001000F31000347361003473110034F3E10F34D2 -:10002000F31100347362083473120034F3E20734BE -:10003000F312003423A0070023A2170023A42700F3 -:1000400023A6370023A8470023AA570097120000D1 -:100050009382C2FC73100034F3E5003473660034FD -:10006000F3E60F3473670834F3E70734736800343A -:1000700023A0020023A2B20023A4C20023A6D20020 -:1000800023A8E20023AAF20023AC0201971000008B -:10009000938080FA375A1632130A8A4973100A3449 -:1000A00073E00734F31A0A3423A0000023A250019E -:1000B00023A44001171500001305C5F4971500008F -:1000C000938545F8370610F01306C6F26306B502AD -:1000D0008326C5002320D600832685002320D60052 -:1000E000832645002320D600832605002320D60042 -:1000F000130505016FF09FFD370510F0130505F29C -:0401000023200500B3 -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-CSRRW-01.elf.hex b/benchmarks/riscv_tests/I-CSRRW-01.elf.hex deleted file mode 100644 index 703d98c2..00000000 --- a/benchmarks/riscv_tests/I-CSRRW-01.elf.hex +++ /dev/null @@ -1,30 +0,0 @@ -:0200000480007A -:1000000097170000938707009300100093010000EA -:100010009302F0FFB70D0080938DFDFFB70E0080B7 -:10002000731000347391003473920134739302346B -:10003000739E0D34739F0E34F31F003423A02700EA -:1000400023A2470023A4670023A6C70123A8E70132 -:1000500023AAF701171D0000130D4DFCB7503412F1 -:100060009380806737E1BC9A130101EF73900034ED -:10007000F311013473920134F31202347313003418 -:1000800023203D0023224D0023245D0023266D0004 -:1000900097100000938080F9377172421301F1E6E6 -:1000A000731001347310003423A0000017110000F6 -:1000B000130101F8B79DFFF7938D8D8173900D3477 -:1000C0007310003473100034F31200342320010045 -:1000D0002322510017110000130101F6B753163205 -:1000E000938383493763721413036383B75238963B -:1000F0009382422773100334F3920234F393033450 -:100100007314003423205100232271002324810022 -:1001100017150000130505EF97150000938585F26C -:10012000370610F01306C6F26306B5028326C50033 -:100130002320D600832685002320D6008326450071 -:100140002320D600832605002320D60013050501B1 -:100150006FF09FFD370510F0130505F22320050011 -:04016000000000009B -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-CSRRWI-01.elf.hex b/benchmarks/riscv_tests/I-CSRRWI-01.elf.hex deleted file mode 100644 index 4b277a47..00000000 --- a/benchmarks/riscv_tests/I-CSRRWI-01.elf.hex +++ /dev/null @@ -1,16 +0,0 @@ -:0200000480007A -:1000000097170000938707007310003473D10034F2 -:100010007352003473D30F3473DE0734735F0834C4 -:10002000F35F003423A0070023A2270023A4470086 -:1000300023A6670023A8C70123AAE70123ACF70181 -:10004000971000009380C0FD73D0073473500034C4 -:1000500023A00000171500001305C5FA971500002E -:10006000938545FC370610F01306C6F26306B50209 -:100070008326C5002320D600832685002320D600B2 -:10008000832645002320D600832605002320D600A2 -:10009000130505016FF09FFD370510F0130505F2FC -:0400A0002320050014 -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-DELAY_SLOTS-01.elf.hex b/benchmarks/riscv_tests/I-DELAY_SLOTS-01.elf.hex deleted file mode 100644 index fa7daddb..00000000 --- a/benchmarks/riscv_tests/I-DELAY_SLOTS-01.elf.hex +++ /dev/null @@ -1,29 +0,0 @@ -:0200000480007A -:100000009710000093800000371111111301111196 -:100010006F0080001301000023A020009710000053 -:10002000938080FE37212222130121221702000033 -:1000300013020201670002001301000023A0200048 -:1000400097100000938080FC93025000130360001F -:10005000373133331301313363845200130100000D -:1000600023A0200097100000938080FA9302500094 -:100070001303600037414444130141446394620018 -:100080001301000023A0200097100000938080F847 -:100090009302500013036000375155551301515519 -:1000A00063C462001301000023A020009710000029 -:1000B000938080F6930250001303600037616666F8 -:1000C0001301616663E462001301000023A02000B5 -:1000D00097100000938080F4930250001303600097 -:1000E0003771777713017177635453001301000060 -:1000F00023A0200097100000938080F2930250000C -:10010000130360003791888813018188637453005A -:100110001301000023A0200017150000130585EE31 -:1001200097150000938505F0370610F01306C6F208 -:100130006306B5028326C5002320D60083268500EA -:100140002320D600832645002320D60083260500E1 -:100150002320D600130505016FF09FFD370510F031 -:10016000130505F223200500000000000000000038 -:04017000000000008B -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-EBREAK-01.elf.hex b/benchmarks/riscv_tests/I-EBREAK-01.elf.hex deleted file mode 100644 index 9454b063..00000000 --- a/benchmarks/riscv_tests/I-EBREAK-01.elf.hex +++ /dev/null @@ -1,15 +0,0 @@ -:0200000480007A -:10000000970000009380C002F39F503097100000CB -:10001000938040FF3711111113011111730010006B -:1000200023A0000073905F306F008002732F1034A4 -:10003000130F4F0073101F34732F203423A0E001DF -:1000400023A2200023A400009380C000730020306E -:1000500017150000130505FB97150000938585FB18 -:10006000370610F01306C6F26306B5028326C500F4 -:100070002320D600832685002320D6008326450032 -:100080002320D600832605002320D6001305050172 -:100090006FF09FFD370510F0130505F223200500D2 -:0400A000000000005C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-ECALL-01.elf.hex b/benchmarks/riscv_tests/I-ECALL-01.elf.hex deleted file mode 100644 index 06c1ba8c..00000000 --- a/benchmarks/riscv_tests/I-ECALL-01.elf.hex +++ /dev/null @@ -1,15 +0,0 @@ -:0200000480007A -:10000000970000009380C002F39F503097100000CB -:10001000938040FF3711111113011111730000007B -:1000200023A0000073905F306F008002732F1034A4 -:10003000130F4F0073101F34732F203423A0E001DF -:1000400023A2200023A400009380C000730020306E -:1000500017150000130505FB97150000938585FB18 -:10006000370610F01306C6F26306B5028326C500F4 -:100070002320D600832685002320D6008326450032 -:100080002320D600832605002320D6001305050172 -:100090006FF09FFD370510F0130505F223200500D2 -:0400A000000000005C -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-ENDIANESS-01.elf.hex b/benchmarks/riscv_tests/I-ENDIANESS-01.elf.hex deleted file mode 100644 index 643a59d2..00000000 --- a/benchmarks/riscv_tests/I-ENDIANESS-01.elf.hex +++ /dev/null @@ -1,17 +0,0 @@ -:0200000480007A -:10000000171800001308480097180000938888000C -:100010008320080003510800835128000342F8FFA1 -:100020008342080003431800834328000344380038 -:1000300023A0180023A2280023A4380023A64800E8 -:1000400023A8580023AA680023AC780023AE8800B8 -:1000500017150000130505FC97150000938585FD15 -:10006000370610F01306C6F26306B5028326C500F4 -:100070002320D600832685002320D6008326450032 -:100080002320D600832605002320D6001305050172 -:100090006FF09FFD370510F0130505F223200500D2 -:0400A000000000005C -:10100000EFCDAB8967452301000000000000000020 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-FENCE.I-01.elf.hex b/benchmarks/riscv_tests/I-FENCE.I-01.elf.hex deleted file mode 100644 index e15c2ec9..00000000 --- a/benchmarks/riscv_tests/I-FENCE.I-01.elf.hex +++ /dev/null @@ -1,16 +0,0 @@ -:0200000480007A -:10000000171800001308480097180000938888000C -:10001000930100008320080003214800171A000004 -:10002000130A4AFE970A0000938A4A0183270A00AE -:1000300023A0FA000F1000003701000023A01800D1 -:1000400023A2280023A4380023A6F80017150000D7 -:10005000130545FC971500009385C5FC370610F085 -:100060001306C6F26306B5028326C5002320D60018 -:10007000832685002320D600832645002320D60032 -:10008000832605002320D600130505016FF09FFD90 -:10009000370510F0130505F22320050000000000CD -:0400A000000000005C -:10100000B3011100300000001200000000000000D9 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-IO.elf.hex b/benchmarks/riscv_tests/I-IO.elf.hex deleted file mode 100644 index 038e1f0f..00000000 --- a/benchmarks/riscv_tests/I-IO.elf.hex +++ /dev/null @@ -1,65 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF3704008033824100DD -:10003000B382510033836100B38371003384810044 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FE03A400009304000097 -:10007000130510009305F0FF370600801306F6FF06 -:10008000B7060080B30494003305A400B305B400A0 -:100090003306C400B306D40023208100232291003C -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181FA5A -:1000C00083A6000013070000930710001308F0FF39 -:1000D000B70800809388F8FF370900803387E6006F -:1000E000B387F60033880601B388160133892601E9 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F603A9000093090000E4 -:10012000130A1000930AF0FF370B0080130BFBFF3C -:10013000B70B0080B3093901330A4901B30A5901E9 -:10014000330B6901B30B79012320210123223101F3 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F23B -:1001700083AB0000130C0000930C1000130DF0FF74 -:10018000B70D0080938DFDFF370E0080338C8B01FF -:10019000B38C9B01338DAB01B38DBB01338ECB018F -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101971C0000938CCCE5B0 -:1001C000171D0000130D8DEE03AE0C00930D1000F3 -:1001D000B30EBE01338FBE01B30FBF01B380BF01A9 -:1001E0003381B001B301B1012320BD012322CD0130 -:1001F0002324DD012326ED012328FD01232A1D00F0 -:10020000232C2D00232E3D0097100000938000E149 -:1002100017110000130181EB03AE0000B79DFFF73B -:10022000938D8D813300BE012320010097100000C3 -:10023000938000DF17110000130181E903AE000075 -:10024000B79DFFF7938D8D813300BE01B30200008F -:10025000232001002322510097100000938080DCAE -:1002600017110000130141E783A100003382010050 -:10027000B30202003303500033070300B307070043 -:1002800033880700B30C0001330D9001B30D0D004E -:10029000232041002322A1012324B10117150000CE -:1002A000130545D9971500009385C5E3370610F06F -:1002B0001306C6F26306B5028326C5002320D600C6 -:1002C000832685002320D600832645002320D600E0 -:1002D000832605002320D600130505016FF09FFD3E -:1002E000370510F0130505F223200500000000007B -:0402F000000000000A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080CDAB00007856341298BADCFE98 -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-JAL-01.elf.hex b/benchmarks/riscv_tests/I-JAL-01.elf.hex deleted file mode 100644 index e92f828c..00000000 --- a/benchmarks/riscv_tests/I-JAL-01.elf.hex +++ /dev/null @@ -1,46 +0,0 @@ -:0200000480007A -:10000000971000009380000137513412130181676B -:100010006F0080001301000023A0000023A2200035 -:1000200097100000938080FF1301F0FF9301F0FF11 -:1000300037D2ED0F130292BA6F0080021301000055 -:100040009301000013020000B741658793811132CC -:100050006F008002130100009301000013020000F2 -:1000600037E1BC9A130101EF6FF01FFE130100008E -:10007000930100001302000023A0000023A220002F -:1000800023A4300023A6400097140000938484F733 -:1000900017150000130585F91301F0FF9301F0FF18 -:1000A0001302F0FF9302F0FF3753555513035355D6 -:1000B00083AC040003AC4400EF00C001B72122224E -:1000C00093812122EF0F0003B742444493824244BC -:1000D0006F004004371111111301111167800000E6 -:1000E00013010000930100001302000093020000BE -:1000F00013030000373233331302323367800F00AB -:10010000130100009301000013020000930200009D -:1001100013030000B3C3900133C48F0123202500D3 -:10012000232235002324450023265500232865007B -:10013000232A7500232C850097140000938404ED76 -:1001400017150000130545F01301F0FF9301F0FFB0 -:100150001302F0FF9302F0FF1303F0FF03AC04005F -:1001600083AC44006F004002B77177779381717759 -:1001700067800F00130100009301000013020000CC -:100180009302000013030000376166661301616685 -:10019000EFFF9FFD3792888813028288EF000001ED -:1001A00037B3AAAA1303A3AA6F004002B7A2999972 -:1001B0009382929967800000130100009301000070 -:1001C000130200009302000013030000B3C38F0169 -:1001D00033C4900123202500232235002324450029 -:1001E0002326550023286500232A7500232C85002B -:1001F00017150000130505E297150000938585E6A5 -:10020000370610F01306C6F26306B5028326C50052 -:100210002320D600832685002320D6008326450090 -:100220002320D600832605002320D60013050501D0 -:100230006FF09FFD370510F0130505F22320050030 -:0402400000000000BA -:10100000BC000080C800008094010080A001008026 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-JALR-01.elf.hex b/benchmarks/riscv_tests/I-JALR-01.elf.hex deleted file mode 100644 index aa5d0821..00000000 --- a/benchmarks/riscv_tests/I-JALR-01.elf.hex +++ /dev/null @@ -1,60 +0,0 @@ -:0200000480007A -:10000000971000009380000137513412130181676B -:100010009701000093810101678001001301000036 -:1000200023A0000023A2200097100000938000FF6F -:100030001301F0FF9301F0FF37D2ED0F130292BAD4 -:10004000970F0000938F8F0367800F00130100004C -:100050009301000013020000B741658793811132BC -:100060009702000093828203678002001301000060 -:10007000930100001302000037E1BC9A130101EF65 -:1000800097070000938787FD678007001301000032 -:10009000930100001302000023A0000023A220000F -:1000A00023A4300023A6400097140000938484F515 -:1000B00017150000130585F71301F0FF9301F0FFFA -:1000C0001302F0FF9302F0FF3753555513035355B6 -:1000D00083AC040003AC4400970300009383430304 -:1000E000E7800300B7212222938121221704000018 -:1000F00013040404E70F0400B742444493824244CB -:10010000170F0000130FCF0467000F0037111111F4 -:10011000130111116780000013010000930100001A -:100120001302000093020000130300003732333340 -:100130001302323367800F001301000093010000A7 -:10014000130200009302000013030000B3C39001E8 -:1001500033C48F01232025002322350023244500AA -:100160002326550023286500232A7500232C8500AB -:1001700097140000938484E9171500001305C5EC5B -:100180001301F0FF9301F0FF1302F0FF9302F0FF61 -:100190001303F0FF03AC040083AC44009707000096 -:1001A0009387C70267800700B7717777938171776C -:1001B00067801F001301000093010000130200007C -:1001C0009302000013030000376166661301616645 -:1001D000970F0000938F9FFDE78F0F00379288885D -:1001E000130282889700000093801002E7800000CD -:1001F00037B3AAAA1303A3AA170F0000130FCF0245 -:1002000067000F00B7A299999382929967801000B6 -:10021000130100009301000013020000930200008C -:1002200013030000B3C38F0133C4900123202500C2 -:10023000232235002324450023265500232865006A -:10024000232A7500232C850097100000938080E1FD -:100250003712111113021211970100009381F1005E -:100260006780110013020000B7222222938222220B -:1002700097010000938111016780F1FF9302000054 -:1002800037333333130333339701000093811181E4 -:100290006780F17F13030000B743444493834344D2 -:1002A0009711000093810181678001809303000012 -:1002B00023A0400023A2500023A4600023A67000C6 -:1002C00017150000130505D597150000938585DAED -:1002D000370610F01306C6F26306B5028326C50082 -:1002E0002320D600832685002320D60083264500C0 -:1002F0002320D600832605002320D6001305050100 -:100300006FF09FFD370510F0130505F2232005005F -:0403100000000000E9 -:10100000E4000080F8000080DC010080F001008036 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-LB-01.elf.hex b/benchmarks/riscv_tests/I-LB-01.elf.hex deleted file mode 100644 index b6c419c5..00000000 --- a/benchmarks/riscv_tests/I-LB-01.elf.hex +++ /dev/null @@ -1,51 +0,0 @@ -:0200000480007A -:10000000971F0000938F0F00171100001301810349 -:1000100083810F0003821F0083822F0003833F0030 -:100020002320310023224100232451002326610094 -:10003000171C0000130C5CFD9712000093828201D4 -:10004000830CFCFF030D0C00830D1C00030E2C0021 -:1000500023A0920123A2A20123A4B20123A6C201DC -:1000600097130000938373FA17140000130484FF9E -:10007000038F1300838F23008380330003814300A9 -:100080002320E4012322F401232414002326240046 -:10009000171500001305C57797150000938585FD9A -:1000A00003060580830615800307258083073580B6 -:1000B00023A0C50023A2D50023A4E50023A6F500B4 -:1000C000970600009386467517170000130787FBF5 -:1000D0008387C67F0388D67F8388E67F0389F67F80 -:1000E0002320F700232207012324170123262701B9 -:1000F00017180000130888F297180000938888F9F1 -:100100000309C8FF8309D8FF030AE8FF830AF8FF41 -:10011000030B0800830B1800030C2800830C380025 -:10012000030D4800830D5800030E6800830E78000D -:1001300023A0280123A2380123A4480123A65801A3 -:1001400023A8680123AA780123AC880123AE980173 -:1001500023A0A80323A2B80323A4C80323A6D8037B -:10016000971A0000938A0AEC171B0000130B8BF5FB -:1001700003800A0023200B00971A0000938ACAEA22 -:10018000171B0000130B4BF483AB0A00038C0B000E -:10019000930C0C0023209B01971C0000938C4CE9CE -:1001A000171D0000130D8DF2838C0C0023209D0180 -:1001B000971D0000938D1DE8171E0000130E4EF1D1 -:1001C000838DFDFF2320BE0117150000130585E771 -:1001D00097150000938505F0370610F01306C6F258 -:1001E0006306B5028326C5002320D600832685003A -:1001F0002320D600832645002320D6008326050031 -:100200002320D600130505016FF09FFD370510F080 -:10021000130505F223200500000000000000000087 -:0402200000000000DA -:1010000022F2F111F44433F366F6F555F88877F7D8 -:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 -:101020007856341228100080F0DEBC9A10325476C4 -:1010300098BADCFE00000000000000000000000084 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-LBU-01.elf.hex b/benchmarks/riscv_tests/I-LBU-01.elf.hex deleted file mode 100644 index 58afd19b..00000000 --- a/benchmarks/riscv_tests/I-LBU-01.elf.hex +++ /dev/null @@ -1,51 +0,0 @@ -:0200000480007A -:10000000971F0000938F0F00171100001301810349 -:1000100083C10F0003C21F0083C22F0003C33F0030 -:100020002320310023224100232451002326610094 -:10003000171C0000130C5CFD9712000093828201D4 -:10004000834CFCFF034D0C00834D1C00034E2C0021 -:1000500023A0920123A2A20123A4B20123A6C201DC -:1000600097130000938373FA17140000130484FF9E -:1000700003CF130083CF230083C0330003C14300A9 -:100080002320E4012322F401232414002326240046 -:10009000171500001305C57797150000938585FD9A -:1000A00003460580834615800347258083473580B6 -:1000B00023A0C50023A2D50023A4E50023A6F500B4 -:1000C000970600009386467517170000130787FBF5 -:1000D00083C7C67F03C8D67F83C8E67F03C9F67F80 -:1000E0002320F700232207012324170123262701B9 -:1000F00017180000130888F297180000938888F9F1 -:100100000349C8FF8349D8FF034AE8FF834AF8FF41 -:10011000034B0800834B1800034C2800834C380025 -:10012000034D4800834D5800034E6800834E78000D -:1001300023A0280123A2380123A4480123A65801A3 -:1001400023A8680123AA780123AC880123AE980173 -:1001500023A0A80323A2B80323A4C80323A6D8037B -:10016000971A0000938A0AEC171B0000130B8BF5FB -:1001700003C00A0023200B00971A0000938ACAEAE2 -:10018000171B0000130B4BF483AB0A0003CC0B00CE -:10019000930C0C0023209B01971C0000938C4CE9CE -:1001A000171D0000130D8DF283CC0C0023209D0140 -:1001B000971D0000938D1DE8171E0000130E4EF1D1 -:1001C00083CDFDFF2320BE0117150000130585E731 -:1001D00097150000938505F0370610F01306C6F258 -:1001E0006306B5028326C5002320D600832685003A -:1001F0002320D600832645002320D6008326050031 -:100200002320D600130505016FF09FFD370510F080 -:10021000130505F223200500000000000000000087 -:0402200000000000DA -:1010000022F2F111F44433F366F6F555F88877F7D8 -:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 -:101020007856341228100080F0DEBC9A10325476C4 -:1010300098BADCFE00000000000000000000000084 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-LH-01.elf.hex b/benchmarks/riscv_tests/I-LH-01.elf.hex deleted file mode 100644 index f19fef6e..00000000 --- a/benchmarks/riscv_tests/I-LH-01.elf.hex +++ /dev/null @@ -1,39 +0,0 @@ -:0200000480007A -:10000000971F0000938F0F00171100001301810349 -:1000100083910F0003922F002320310023224100FF -:10002000171C0000130C5CFE971200009382020262 -:10003000831CFCFF031D1C0023A0920123A2A2012C -:1000400097130000938373FC1714000013048400BB -:10005000039F1300839F33002320E4012322F40134 -:10006000171500001305C57A97150000938505FF45 -:10007000031605808316258023A0C50023A2D50082 -:10008000970600009386367917170000130787FD3F -:100090008397D67F0398F67F2320F700232207015A -:1000A00017180000130888F797180000938808FCB9 -:1000B0000319C8FF8319E8FF031A0800831A2800F0 -:1000C000031B4800831B680023A0280123A23801DA -:1000D00023A4480123A6580123A8680123AA780174 -:1000E000971A0000938A0AF4171B0000130B8BF970 -:1000F00003900A0023200B00971A0000938ACAF28B -:10010000171B0000130B4BF883AB0A00039C0B007A -:10011000930C0C0023209B01971C0000938C4CF146 -:10012000171D0000130D8DF6839C0C0023209D01EC -:10013000971D0000938D1DF0171E0000130E4EF545 -:10014000839DFDFF2320BE0117150000130585EFD9 -:1001500097150000938505F4370610F01306C6F2D4 -:100160006306B5028326C5002320D60083268500BA -:100170002320D600832645002320D60083260500B1 -:100180002320D600130505016FF09FFD370510F001 -:10019000130505F223200500000000000000000008 -:0401A000000000005B -:1010000022F2F111F44433F366F6F555F88877F7D8 -:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 -:101020007856341228100080F0DEBC9A10325476C4 -:1010300098BADCFE00000000000000000000000084 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-LHU-01.elf.hex b/benchmarks/riscv_tests/I-LHU-01.elf.hex deleted file mode 100644 index 604d6773..00000000 --- a/benchmarks/riscv_tests/I-LHU-01.elf.hex +++ /dev/null @@ -1,39 +0,0 @@ -:0200000480007A -:10000000971F0000938F0F00171100001301810349 -:1000100083D10F0003D22F0023203100232241007F -:10002000171C0000130C5CFE971200009382020262 -:10003000835CFCFF035D1C0023A0920123A2A201AC -:1000400097130000938373FC1714000013048400BB -:1000500003DF130083DF33002320E4012322F401B4 -:10006000171500001305C57A97150000938505FF45 -:10007000035605808356258023A0C50023A2D50002 -:10008000970600009386367917170000130787FD3F -:1000900083D7D67F03D8F67F2320F70023220701DA -:1000A00017180000130888F797180000938808FCB9 -:1000B0000359C8FF8359E8FF035A0800835A2800F0 -:1000C000035B4800835B680023A0280123A238015A -:1000D00023A4480123A6580123A8680123AA780174 -:1000E000971A0000938A0AF4171B0000130B8BF970 -:1000F00003D00A0023200B00971A0000938ACAF24B -:10010000171B0000130B4BF883AB0A0003DC0B003A -:10011000930C0C0023209B01971C0000938C4CF146 -:10012000171D0000130D8DF683DC0C0023209D01AC -:10013000971D0000938D1DF0171E0000130E4EF545 -:1001400083DDFDFF2320BE0117150000130585EF99 -:1001500097150000938505F4370610F01306C6F2D4 -:100160006306B5028326C5002320D60083268500BA -:100170002320D600832645002320D60083260500B1 -:100180002320D600130505016FF09FFD370510F001 -:10019000130505F223200500000000000000000008 -:0401A000000000005B -:1010000022F2F111F44433F366F6F555F88877F7D8 -:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 -:101020007856341228100080F0DEBC9A10325476C4 -:1010300098BADCFE00000000000000000000000084 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-LUI-01.elf.hex b/benchmarks/riscv_tests/I-LUI-01.elf.hex deleted file mode 100644 index cd34ac8c..00000000 --- a/benchmarks/riscv_tests/I-LUI-01.elf.hex +++ /dev/null @@ -1,27 +0,0 @@ -:0200000480007A -:100000009717000093870701B7000000B7110000A1 -:10001000B7F2FFFFB7FEFF7FB70F008023A01700E6 -:1000200023A2370023A4570023A6D70123A8F70152 -:1000300097170000938707FD171800001308C8FEE4 -:1000400003A1070003A2070003A3070003AE0700F4 -:1000500003AF07003701008037F2FF7F370300004E -:10006000371E000037FFFFFF23202800232248000F -:10007000232468002326C8012328E80197180000DC -:100080009388C8FBB77072429380F0E6B75734127A -:100090009387876737EFBC9A130F0FEF3771724260 -:1000A0001301F1E63758341213088867B7EFBC9A8A -:1000B000938F0FEF23A0180023A2F80023A4E801D8 -:1000C00023A6280023A8080123AAF8011715000079 -:1000D000130545F4971500009385C5F7370610F012 -:1000E0001306C6F26306B5028326C5002320D60098 -:1000F000832685002320D600832645002320D600B2 -:10010000832605002320D600130505016FF09FFD0F -:10011000370510F0130505F223200500000000004C -:0401200000000000DB -:10100000111111110000000000000000000000009C -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-LW-01.elf.hex b/benchmarks/riscv_tests/I-LW-01.elf.hex deleted file mode 100644 index cf664b49..00000000 --- a/benchmarks/riscv_tests/I-LW-01.elf.hex +++ /dev/null @@ -1,33 +0,0 @@ -:0200000480007A -:10000000971F0000938F0F00171100001301810349 -:1000100083A10F0023203100171C0000130CDCFE0D -:100020009712000093824202832CFCFF23A09201CE -:1000300097130000938373FD171400001304040149 -:1000400083AF13002320F401171500001305457C2E -:10005000971500009385C5FF0326058023A0C500E2 -:10006000970600009386167B17170000130787FE7C -:1000700083A7F67F2320F70017180000130808FA5B -:1000800097180000938848FD0329C8FF83290800BA -:10009000032A480023A0280123A2380123A44801F1 -:1000A000971A0000938A0AF8171B0000130B8BFBAA -:1000B00003A00A0023200B00971A0000938ACAF6B7 -:1000C000171B0000130B4BFA83AB0A0003AC0B00A9 -:1000D000930C0C0023209B01971C0000938C4CF583 -:1000E000171D0000130D8DF883AC0C0023209D011B -:1000F000971D0000938D1DF4171E0000130E4EF780 -:1001000083ADFDFF2320BE0117150000130585F305 -:1001100097150000938505F6370610F01306C6F212 -:100120006306B5028326C5002320D60083268500FA -:100130002320D600832645002320D60083260500F1 -:100140002320D600130505016FF09FFD370510F041 -:10015000130505F223200500000000000000000048 -:04016000000000009B -:1010000022F2F111F44433F366F6F555F88877F7D8 -:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 -:101020007856341228100080F0DEBC9A10325476C4 -:1010300098BADCFE00000000000000000000000084 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-MISALIGN_JMP-01.elf.hex b/benchmarks/riscv_tests/I-MISALIGN_JMP-01.elf.hex deleted file mode 100644 index 89c1e387..00000000 --- a/benchmarks/riscv_tests/I-MISALIGN_JMP-01.elf.hex +++ /dev/null @@ -1,53 +0,0 @@ -:0200000480007A -:100000009700000093808020F39F5030737012306F -:1000100097100000938000FF371111111301111187 -:100020006F00A0001301000097100000938040FEB5 -:10003000372122221301212217020000130212018C -:10004000670002001301000023A0200093804000FD -:100050003731333313013133170200001302020129 -:10006000670012001301000023A0200093804000CD -:100070003741444413014144170200001302420176 -:100080006700D2FF1301000023A0200093804000EE -:1000900097100000938080F8375155551301515542 -:1000A0001702000013022201670002001301000082 -:1000B00037616666130161661702000013023201A0 -:1000C0006700020013010000377177771301717721 -:1000D0001702000013020201670022001301000052 -:1000E00037918888130181881702000013020201EA -:1000F000670032001301000097100000938000F5A4 -:1001000093025000130360006387620037A199993E -:100110001301919913000000130000006385520041 -:100120001301000097100000938000F39302500029 -:10013000130360006397520037B1AAAA1301A1AA62 -:10014000130000001300000063956200130100001B -:1001500097100000938000F1930250001303600099 -:100160006347530037C1BBBB1301B1BB1300000091 -:100170001300000063C56200130100009710000027 -:10018000938000EF930250001303600063675300F5 -:1001900037D1CCCC1301C1CC1300000013000000F8 -:1001A00063E562001301000097100000938000EDEA -:1001B000930250001303600063D7620037E1DDDD76 -:1001C0001301D1DD1300000013000000635553003C -:1001D0001301000097100000938000EB9302500081 -:1001E0001303600063F7620037F1EEEE1301E1EEF6 -:1001F000130000001300000063755300130100009A -:1002000073905F306F000003732F3034130FEFFFD4 -:1002100073101F34732F3034137F3F0023A0E0018D -:10022000732F203423A2E00123A420009380C00078 -:1002300073002030171500001305C5DC971500006A -:10024000938545E5370610F01306C6F26306B5023E -:100250008326C5002320D600832685002320D600D0 -:10026000832645002320D600832605002320D600C0 -:10027000130505016FF09FFD370510F0130505F21A -:040280002320050032 -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-MISALIGN_LDST-01.elf.hex b/benchmarks/riscv_tests/I-MISALIGN_LDST-01.elf.hex deleted file mode 100644 index 2f0c69de..00000000 --- a/benchmarks/riscv_tests/I-MISALIGN_LDST-01.elf.hex +++ /dev/null @@ -1,44 +0,0 @@ -:0200000480007A -:100000009700000093804014F39F50309711000038 -:10001000938141FF171100001301C1FF97100000E9 -:1000200093804000930250001303600003A201007C -:100030002320410003A211002322410003A221003A -:100040002324410003A23100232641009711000020 -:10005000938181FB17110000130141FE97100000EE -:100060009380C0FF930250001303600003920100CD -:10007000232041000392110023224100039221001A -:1000800023244100039231002326410003D20100C2 -:100090002328410003D21100232A410003D221006A -:1000A000232C410003D23100232E41001711000000 -:1000B0001301C1FC97100000938040FD1303000062 -:1000C000B7A299999382929923205100232251003B -:1000D00023245100232651002320610013014100F5 -:1000E000A32061001301410023216100130141009D -:1000F000A3216100171100001301C1FA971000003D -:10010000938040FB13030000B7A2999993829299C0 -:100110002320510023225100232451002326510083 -:100120002310610013014100A3106100130141007D -:100130002311610013014100A311610073905F302E -:100140006F00C002732F1034130F4F0073101F3451 -:10015000732F3034137F3F0023A0E001732F20342E -:1001600023A2E00193808000730020301715000067 -:10017000130545EA971500009385C5F4370610F07E -:100180001306C6F26306B5028326C5002320D600F7 -:10019000832685002320D600832645002320D60011 -:1001A000832605002320D600130505016FF09FFD6F -:1001B000370510F0130505F22320050000000000AC -:0401C000000000003B -:10100000C1B1A19102F2E2D2000000000000000094 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-NOP-01.elf.hex b/benchmarks/riscv_tests/I-NOP-01.elf.hex deleted file mode 100644 index 25945e1b..00000000 --- a/benchmarks/riscv_tests/I-NOP-01.elf.hex +++ /dev/null @@ -1,37 +0,0 @@ -:0200000480007A -:10000000971000009380000013012000930130003E -:10001000130240009302500013036000930370002A -:1000200013048000930490001305A0009305B00012 -:100030001306C0009306D0001307E0009307F000FA -:1000400013080001930810011309200193093001DE -:10005000130A4001930A5001130B6001930B7001C6 -:10006000130C8001930C9001130DA001930DB001AE -:10007000130EC001930ED001130FE001930FF00196 -:100080001300000013000000130000001300000024 -:10009000130000001300000023A0000023A2200092 -:1000A00023A4300023A6400023A8500023AA600008 -:1000B00023AC700023AE800023A0900223A2A002F4 -:1000C00023A4B00223A6C00223A8D00223AAE002E0 -:1000D00023ACF00223AE000323A0100523A22005C9 -:1000E00023A4300523A6400523A8500523AA6005B4 -:1000F00023AC700523AE800523A0900723A2A007A0 -:1001000023A4B00723A6C00723A8D00723AAE0078B -:1001100023ACF00797110000938181F617040000CB -:100120001300000013000000130000001300000083 -:100130001300000097040000B384844023A09100C2 -:1001400017150000130505EC97150000938585F33E -:10015000370610F01306C6F26306B5028326C50003 -:100160002320D600832685002320D6008326450041 -:100170002320D600832605002320D6001305050181 -:100180006FF09FFD370510F0130505F223200500E1 -:04019000000000006B -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-OR-01.elf.hex b/benchmarks/riscv_tests/I-OR-01.elf.hex deleted file mode 100644 index ddd72d6a..00000000 --- a/benchmarks/riscv_tests/I-OR-01.elf.hex +++ /dev/null @@ -1,66 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF3704008033E241007D -:10003000B3E2510033E36100B3E3710033E48100C4 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FE03A400009304000097 -:10007000130510009305F0FF370600801306F6FF06 -:10008000B7060080B36494003365A400B365B40080 -:100090003366C400B366D40023208100232291007C -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181FA5A -:1000C00083A6000013070000930710001308F0FF39 -:1000D000B70800809388F8FF3709008033E7E6000F -:1000E000B3E7F60033E80601B3E8160133E9260169 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F603A9000093090000E4 -:10012000130A1000930AF0FF370B0080130BFBFF3C -:10013000B70B0080B3693901336A4901B36A5901C9 -:10014000336B6901B36B7901232021012322310133 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F23B -:1001700083AB0000130C0000930C1000130DF0FF74 -:10018000B70D0080938DFDFF370E008033EC8B019F -:10019000B3EC9B0133EDAB01B3EDBB0133EECB010F -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101971C0000938CCCE5B0 -:1001C000171D0000130D8DEE03AE0C00130200018D -:1001D00093020002130300049303000813040010A9 -:1001E00093040080B36E4E0033EF5E00B36F6F0078 -:1001F000B3E07F0033E18000B361910023204D0024 -:100200002322CD012324DD012326ED012328FD0136 -:10021000232A1D00232C2D00232E3D0097100000C3 -:100220009380C0DF17110000130141EA03AE000004 -:10023000B79DFFF7938D8D813360BE0123200100B0 -:10024000971000009380C0DD17110000130141E8F2 -:1002500003AE0000B79DFFF7938D8D813360BE0123 -:10026000B3620000232001002322510097100000F8 -:10027000938040DB17110000130101E683A1000009 -:1002800033E20100B36202003363500033670300BE -:10029000B367070033E80700B36C0001336D9001CA -:1002A000B36D0D00232041002322A1012324B101BD -:1002B00017150000130505D897150000938585E2F2 -:1002C000370610F01306C6F26306B5028326C50092 -:1002D0002320D600832685002320D60083264500D0 -:1002E0002320D600832605002320D6001305050110 -:1002F0006FF09FFD370510F0130505F22320050070 -:0403000000000000F9 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:10101000000000800D0000007856341298BADCFE03 -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-ORI-01.elf.hex b/benchmarks/riscv_tests/I-ORI-01.elf.hex deleted file mode 100644 index f5e0eec7..00000000 --- a/benchmarks/riscv_tests/I-ORI-01.elf.hex +++ /dev/null @@ -1,56 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013E2110093E2F17F13E3F1FFEB -:1000200093E3010013E401802320310023224100E7 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101007D -:1000500003A40000936414001365F47F9365F4FF18 -:1000600013660400936604802320810023229100FC -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FD84 -:1000900083A6000013E7160093E7F67F13E8F6FF48 -:1000A00093E8060013E906802320D1002322E10013 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000971000009380C0F417110000130101FB8A -:1000D00003A9000093691900136AF97F936AF9FF75 -:1000E000136B0900936B0980232021012322310126 -:1000F000232441012326510123286101232A710170 -:1001000097100000938000F117110000130181F88F -:1001100083AB000013EC1B0093ECFB7F13EDFBFFA4 -:1001200093ED0B0013EE0B8023207101232281013C -:10013000232491012326A1012328B101232AC101EF -:10014000171D0000130D4DED971D0000938D0DF64A -:10015000032E0D00936E0E0113EF0E02936F0F042A -:1001600093E00F0813E100109361018023A0CD01FB -:1001700023A2DD0123A4ED0123A6FD0123A81D0078 -:1001800023AA2D0023AC3D0097100000938000E9C6 -:1001900017110000130141F383A2000013E01200C5 -:1001A0002320010097100000938080E717110000C2 -:1001B0001301C1F183A2000013E01200936210004A -:1001C000232001002322510097100000938080E536 -:1001D00017110000130101F083A1000013E20100D8 -:1001E0009362020013E302001367030093670700A2 -:1001F00013E80700936C080013ED0C00936D0D00DD -:1002000023203100232241002324A1012326B10110 -:1002100017150000130505E297150000938585EC7E -:10022000370610F01306C6F26306B5028326C50032 -:100230002320D600832685002320D6008326450070 -:100240002320D600832605002320D60013050501B0 -:100250006FF09FFD370510F0130505F22320050010 -:04026000000000009A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:10101000000000800D0000007856341298BADCFE03 -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-RF_size-01.elf.hex b/benchmarks/riscv_tests/I-RF_size-01.elf.hex deleted file mode 100644 index c4aecb21..00000000 --- a/benchmarks/riscv_tests/I-RF_size-01.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:100000001718000013080800377072421300F0E65A -:10001000B7303356938090243721562D1301210594 -:10002000B77169529381313637826B731302029232 -:10003000B7627473938222573753206E1303F3E62B -:10004000B773694D938313C63764646F1304341711 -:10005000B744796B93843406377565741305352777 -:10006000B7756E28938535F737266B6513068604BA -:10007000B76652209386461637376D6F1307C792BF -:10008000B7377069938737E62320080023221800CA -:10009000232428002326380023284800232A580038 -:1000A000232C6800232E7800232088022322980224 -:1000B0002324A8022326B8022328C802232AD80210 -:1000C000232CE802232EF80217120000130282F7F5 -:1000D00037686F6313081846B778656A938808B461 -:1000E0003779282013091986B7696A619389B95647 -:1000F000376A7661130A0A52B75A202E938A5AC673 -:10010000377B6F63130B9BD2B77B6973938BEB02C7 -:10011000378C2066130CFC96B72C6567938C9C0675 -:10012000377D7365130D1D36B72D7375938DDD0601 -:10013000371E293A130EAED0B77E6968938E0E3201 -:10014000372F6461130F4F07B77F2075938F5F269A -:10015000232002012322120123242201232632011B -:1001600023284201232A5201232C6201232E7201EB -:1001700023208203232292032324A2032326B203F3 -:100180002328C203232AD203232CE203232EF203C3 -:1001900017120000130202EF232002002322120094 -:1001A000232422002326320017150000130585E5BD -:1001B00097150000938505EE370610F01306C6F27A -:1001C0006306B5028326C5002320D600832685005A -:1001D0002320D600832645002320D6008326050051 -:1001E0002320D600130505016FF09FFD370510F0A1 -:1001F000130505F2232005000000000000000000A8 -:0402000000000000FA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-RF_width-01.elf.hex b/benchmarks/riscv_tests/I-RF_width-01.elf.hex deleted file mode 100644 index 4dd79e84..00000000 --- a/benchmarks/riscv_tests/I-RF_width-01.elf.hex +++ /dev/null @@ -1,57 +0,0 @@ -:0200000480007A -:1000000017180000130808001300100093001000D8 -:10001000130110009301100013021000930210004E -:100020001303100093031000130410009304100036 -:10003000130510009305100013061000930610001E -:1000400013071000930710009390F00163C40000A1 -:10005000930000001311F10163440100130100003B -:100060009391F10163C40100930100001312F201A6 -:1000700063440200130200009392F20163C4020081 -:10008000930200001313F301634403001303000001 -:100090009393F30163C40300930300001314F4016A -:1000A00063440400130400009394F40163C4040047 -:1000B000930400001315F5016344050013050000C7 -:1000C0009395F50163C40500930500001316F6012E -:1000D00063440600130600009396F60163C406000D -:1000E000930600001317F70163440700130700008D -:1000F0009397F70163C407009307000023200800CB -:10010000232218002324280023263800232848000F -:10011000232A5800232C6800232E780023208802ED -:10012000232298022324A8022326B8022328C802E7 -:10013000232AD802232CE802232EF802971000006D -:10014000938040F01308100093081000130910006A -:1001500093091000130A1000930A1000130B1000EB -:10016000930B1000130C1000930C1000130D1000D3 -:10017000930D1000130E1000930E1000130F1000BB -:10018000930F10001318F8016344080013080000CF -:100190009398F80163C40800930800001319F9014B -:1001A00063440900130900009399F90163C409002D -:1001B00093090000131AFA0163440A00130A0000AD -:1001C000939AFA0163C40A00930A0000131BFB010F -:1001D00063440B00130B0000939BFB0163C40B00F3 -:1001E000930B0000131CFC0163440C00130C000073 -:1001F000939CFC0163C40C00930C0000131DFD01D3 -:1002000063440D00130D0000939DFD0163C40D00B8 -:10021000930D0000131EFE0163440E00130E000038 -:10022000939EFE0163C40E00930E0000131FFF0196 -:1002300063440F00130F0000939FFF0163C40F007E -:10024000930F000023A0000123A2100123A420018A -:1002500023A6300123A8400123AA500123AC60014A -:1002600023AE700123A0800323A2900323A4A00344 -:1002700023A6B00323A8C00323AAD00323ACE00322 -:1002800023AEF003171500001305C5D7971500001E -:10029000938545DF370610F01306C6F26306B502F4 -:1002A0008326C5002320D600832685002320D60080 -:1002B000832645002320D600832605002320D60070 -:1002C000130505016FF09FFD370510F0130505F2CA -:0402D00023200500E2 -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-RF_x0-01.elf.hex b/benchmarks/riscv_tests/I-RF_x0-01.elf.hex deleted file mode 100644 index d06e51cf..00000000 --- a/benchmarks/riscv_tests/I-RF_x0-01.elf.hex +++ /dev/null @@ -1,29 +0,0 @@ -:0200000480007A -:10000000971F0000938F0F0137E0CDAB1300100056 -:100010001360007F1370F0531340308013105000B2 -:10002000135020401350400023A00F00971F0000E2 -:10003000938F8FFE930010001301007F9301F05304 -:1000400013023080930250001303200093034000FA -:100050001304800117E0CDAB3300100033602000A3 -:100060003370300033404000331050003350604054 -:10007000335070003300804023A00F00971F000012 -:10008000938FCFF9930010001301200033A02000BC -:1000900023A00F0033B0200023A20F0013A02000E4 -:1000A00023A40F0013B0200023A60F00971F000009 -:1000B000938FCFF76F00400023A00F009700000040 -:1000C0009380C0006780000023A20F0097100000FB -:1000D000938040F3971F0000938FCFF503A000009B -:1000E00023A00F000390000023A20F000380000054 -:1000F00023A40F0003C0000023A60F001715000063 -:10010000130545F1971500009385C5F3370610F0E8 -:100110001306C6F26306B5028326C5002320D60067 -:10012000832685002320D600832645002320D60081 -:10013000832605002320D600130505016FF09FFDDF -:10014000370510F0130505F223200500000000001C -:0401500000000000AB -:101000004F4E5242000000000000000000000000AF -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SB-01.elf.hex b/benchmarks/riscv_tests/I-SB-01.elf.hex deleted file mode 100644 index 2a997038..00000000 --- a/benchmarks/riscv_tests/I-SB-01.elf.hex +++ /dev/null @@ -1,45 +0,0 @@ -:0200000480007A -:100000009710000093800001B7CFAAAA938FBFBBBF -:1000100023A0F00137F1F1111301212223802000E8 -:1000200097120000938252FFA3AF02FEB74C33F346 -:10003000938C4C4FA38F92FF171400001304F4FD10 -:10004000A3200400B7FFF555938F6F66A300F4015A -:10005000971500009385C57C23A00580379677F718 -:100060001306868F2380C580170700001307977B30 -:10007000A32F077EB71709999387A7AAA30FF77E27 -:1000800097180000938888FA371911111309C910BD -:10009000B72922229389C92C373A3333130ABA3B42 -:1000A000B74A4444938ABA40375B5555130BEB5E0D -:1000B000B76B6666938BEB60377C7777130CDC70DD -:1000C000B79C8888938CDC8D37AD9999130D0D9F63 -:1000D000B7BDAAAA938D0DA037CEBBBB130EFEBF32 -:1000E000B7DECCCC938EFEC0238E28FFA38E38FFC4 -:1000F000238F48FFA38F58FF23806801A3807801D6 -:1001000023818801A38198012382A801A382B801D9 -:100110002383C801A383D801171B0000130B8BF1A5 -:10012000B74065879380103223201B00375034126C -:100130001300806723000B00971A0000938A8AEC53 -:1001400083A00A0023A00000B73922119389493403 -:1001500083AB0A0023803B01971B0000938BCBEA03 -:10016000171C0000130C8CED23200C0083AC0B003B -:1001700023009C01171D0000130D8DEC23200D00A2 -:10018000B73C5476938C0C2123009D01930C000006 -:10019000171E0000130E0EEB23200E00B7DDAB89F7 -:1001A000938DFDDE2300BE01130ECEFF971E0000CF -:1001B000938E8EE923A00E0023A20E00B76D721459 -:1001C000938D6D832380BE0103AF0E002382EE0169 -:1001D000971000009380C0E723A0000037513896A5 -:1001E00013011120B751812593813196238020007E -:1001F00023803000171500001305C5E19715000096 -:10020000938545E5370610F01306C6F26306B5027E -:100210008326C5002320D600832685002320D60010 -:10022000832645002320D600832605002320D60000 -:10023000130505016FF09FFD370510F0130505F25A -:040240002320050072 -:1010000034100080F0DEBC9A0000000000000000F8 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SH-01.elf.hex b/benchmarks/riscv_tests/I-SH-01.elf.hex deleted file mode 100644 index fc744e03..00000000 --- a/benchmarks/riscv_tests/I-SH-01.elf.hex +++ /dev/null @@ -1,41 +0,0 @@ -:0200000480007A -:100000009710000093800001B7CFAAAA938FBFBBBF -:1000100023A0F00137F1F1111301212223902000D8 -:1000200097120000938252FFA3AF02FEB74C33F346 -:10003000938C4C4FA39F92FF171400001304F4FD00 -:10004000A3200400B7FFF555938F6F66A310F4014A -:10005000971500009385C57C23A00580379677F718 -:100060001306868F2390C580170700001307977B20 -:10007000A32F077EB71709999387A7AAA31FF77E17 -:1000800097180000938888FA37D911111309C9C04D -:10009000B71922229389B9BB371A3333130AEAEE10 -:1000A000B7EA4444938ADAD0370B7777130B0B0FF8 -:1000B000B71B6666938BFBFF239E28FF239F38FFA9 -:1000C00023904801239158012392680123937801DA -:1000D000171B0000130B0BF6B74065879380103297 -:1000E00023201B00375034121300806723100B00AD -:1000F000971A0000938A0AF183A00A0023A0000047 -:10010000B73922119389493483AB0A0023903B010C -:10011000971B0000938B4BEF171C0000130C0CF285 -:1001200023200C0083AC0B0023109C01171D000042 -:10013000130D0DF123200D00B73C5476938C0C2148 -:1001400023109D01930C0000171E0000130E8EEF6C -:1001500023200E00B7DDAB89938DFDDE2310BE0199 -:10016000130ECEFF971E0000938E0EEE23A00E00FE -:1001700023A20E00B76D7214938D6D832390BE0180 -:1001800003AF0E002392EE0197100000938040EC25 -:1001900023A000003751389613011120B751812553 -:1001A0009381319623902000239030001715000092 -:1001B000130545E6971500009385C5E9370610F04D -:1001C0001306C6F26306B5028326C5002320D600B7 -:1001D000832685002320D600832645002320D600D1 -:1001E000832605002320D600130505016FF09FFD2F -:1001F000370510F0130505F223200500000000006C -:0402000000000000FA -:1010000034100080F0DEBC9A0000000000000000F8 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SLL-01.elf.hex b/benchmarks/riscv_tests/I-SLL-01.elf.hex deleted file mode 100644 index 27411821..00000000 --- a/benchmarks/riscv_tests/I-SLL-01.elf.hex +++ /dev/null @@ -1,64 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A10000130210009302F0001303F0010B -:10002000930300001304000133924100B392510086 -:1000300033936100B3937100339481002320310026 -:10004000232241002324510023266100232871002C -:10005000232A810097100000938000FB17110000F5 -:100060001301C1FE03A40000930410001305F00067 -:100070009305F0011306000093060001B3149400E9 -:100080003315A400B315B4003316C400B316D4005E -:1000900023208100232291002324A1002326B100E4 -:1000A0002328C100232AD10097100000938000F676 -:1000B00017110000130101FB83A6000013071000B5 -:1000C0009307F0001308F0019308000013090001E2 -:1000D0003397E600B397F60033980601B3981601FC -:1000E000339926012320D1002322E1002324F100AB -:1000F0002326010123281101232A210117160000BC -:10010000130606F197160000938646F703290600AA -:1001100093091000130AF000930AF001130B00007A -:10012000930B0001B3193901331A4901B31A59016C -:10013000331B6901B31B790123A0260123A23601D9 -:1001400023A4460123A6560123A8660123AA76010B -:1001500017160000130606EC97160000938686F328 -:10016000832B0600130C1000930CF000130DF0010C -:10017000930D0000130E0001339C8B01B39C9B0177 -:10018000339DAB01B39DBB01339ECB0123A0760110 -:1001900023A2860123A4960123A6A60123A8B601C3 -:1001A00023AAC601971C0000938C0CE7171D0000C2 -:1001B000130DCDEF03AE0C00930D1000B31EBE0166 -:1001C000339FBE01B31FBF01B390BF013391B00194 -:1001D000B311B1012320CD012322DD012324ED0140 -:1001E0002326FD0123281D00232A2D00232C3D005A -:1001F00097100000938080E2171100001301C1ECFA -:1002000083A20000930D10003390B201232001005F -:10021000971000009380C0E017110000130101EB5C -:1002200083A20000930D10003390B201B312B0010D -:10023000232001002322510097100000938080DECC -:1002400017110000130101E983A10000370200101B -:10025000130202FEB7020010938212FE3703001051 -:100260001303F3FEB70300109383F3FF33924100AF -:10027000B392510033936100B39371002320410086 -:10028000232251002324610023267100171500004A -:10029000130545DA971500009385C5E4370610F07D -:1002A0001306C6F26306B5028326C5002320D600D6 -:1002B000832685002320D600832645002320D600F0 -:1002C000832605002320D600130505016FF09FFD4E -:1002D000370510F0130505F223200500000000008B -:0402E000000000001A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:101010000000008010EFCDAB7856341298BADCFE99 -:101020002143658700000000000000000000000070 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SLLI-01.elf.hex b/benchmarks/riscv_tests/I-SLLI-01.elf.hex deleted file mode 100644 index 7fbd1a2e..00000000 --- a/benchmarks/riscv_tests/I-SLLI-01.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A10000139211009392F1001393F10158 -:100020009393010013940101232031002322410006 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101FF7E -:1000500003A40000931414001315F4009315F40185 -:10006000131604009316040123208100232291001B -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FC85 -:1000900083A60000139716009397F6001398F601B5 -:1000A00093980600139906012320D1002322E10032 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000171600001306C6F497160000938606FA6A -:1000D0000329060093191900131AF900931AF9015C -:1000E000131B0900931B090123A0260123A236013B -:1000F00023A4460123A6560123A8660123AA76015C -:1001000017160000130606F197160000938686F76F -:10011000832B0600139C1B00939CFB00139DFB018B -:10012000939D0B00139E0B0123A0760123A2860151 -:1001300023A4960123A6A60123A8B60123AAC601DB -:10014000171D0000130D4DED971D0000938D0DF54B -:10015000032E0D00931E1E00139F1E00931F1F00F1 -:1001600093901F00139110009311110023A0CD0153 -:1001700023A2DD0123A4ED0123A6FD0123A81D0078 -:1001800023AA2D0023AC3D0097100000938000E9C6 -:1001900017110000130141F283A200001390120016 -:1001A0002320010097100000938080E717110000C2 -:1001B0001301C1F083A200001390120093121000EB -:1001C000232001002322510017150000130585E5A7 -:1001D00097150000938505EF370610F01306C6F259 -:1001E0006306B5028326C5002320D600832685003A -:1001F0002320D600832645002320D6008326050031 -:100200002320D600130505016FF09FFD370510F080 -:10021000130505F223200500000000000000000087 -:0402200000000000DA -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:101010000000008010EFCDAB7856341298BADCFE99 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SLT-01.elf.hex b/benchmarks/riscv_tests/I-SLT-01.elf.hex deleted file mode 100644 index baa45a4d..00000000 --- a/benchmarks/riscv_tests/I-SLT-01.elf.hex +++ /dev/null @@ -1,63 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013021000B70200809382F2FF58 -:100020001303F0FF930300003704008033A2410064 -:10003000B3A2510033A36100B3A3710033A48100C4 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FD03A400009304100088 -:10007000370500801305F5FF9305F0FF1306000018 -:10008000B7060080B32494003325A400B325B40040 -:100090003326C400B326D4002320810023229100FC -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181F95B -:1000C00083A6000013071000B70700809387F7FF8F -:1000D0001308F0FF930800003709008033A7E600FB -:1000E000B3A7F60033A80601B3A8160133A9260169 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F503A9000093091000D5 -:10012000370A0080130AFAFF930AF0FF130B00004E -:10013000B70B0080B3293901332A4901B32A590189 -:10014000332B6901B32B79012320210123223101B3 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F13C -:1001700083AB0000130C1000B70C0080938CFCFFC5 -:10018000130DF0FF930D0000370E008033AC8B0190 -:10019000B3AC9B0133ADAB01B3ADBB0133AECB010F -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101171D0000130DCDE52D -:1001C000971D0000938D8DED83200D00130110000D -:1001D00033A0200023A00D0023A21D0023A42D0086 -:1001E000971F0000938F4FEC930010001301F07FD6 -:1001F0009301F0FF130200009302008033231000EC -:10020000B323200033243000B324400033255000B2 -:10021000B3A5000033260100B3A601003327020076 -:10022000B3A7020023A06F0023A27F0023A48F00A6 -:1002300023A69F0023A8AF0023AABF0023ACCF00B2 -:1002400023AEDF0023A0EF0223A2FF02971F0000CE -:10025000938F0FE893011000B320300033A13000DA -:10026000332E3100B32E3E0033AF3E0023A01F00DB -:1002700023A22F0023A4CF0123A6DF0123A8EF018F -:1002800017150000130505DA97150000938585E51D -:10029000370610F01306C6F26306B5028326C500C2 -:1002A0002320D600832685002320D6008326450000 -:1002B0002320D600832605002320D6001305050140 -:1002C0006FF09FFD370510F0130505F223200500A0 -:0402D000000000002A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFFFFF000000000000000054 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SLTI-01.elf.hex b/benchmarks/riscv_tests/I-SLTI-01.elf.hex deleted file mode 100644 index ec0ffbb0..00000000 --- a/benchmarks/riscv_tests/I-SLTI-01.elf.hex +++ /dev/null @@ -1,51 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013A2110093A2F17F13A3F1FFAB -:1000200093A3010013A40180232031002322410067 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101FF7E -:1000500003A40000932414001325F47F9325F4FFD8 -:10006000132604009326048023208100232291007C -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FC85 -:1000900083A6000013A7160093A7F67F13A8F6FF08 -:1000A00093A8060013A906802320D1002322E10093 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000971000009380C0F417110000130101FA8B -:1000D00003A9000093291900132AF97F932AF9FF35 -:1000E000132B0900932B09802320210123223101A6 -:1000F000232441012326510123286101232A710170 -:1001000097100000938000F117110000130181F790 -:1001100083AB000013AC1B0093ACFB7F13ADFBFF64 -:1001200093AD0B0013AE0B802320710123228101BC -:10013000232491012326A1012328B101232AC101EF -:10014000171D0000130D4DED971D0000938D0DF54B -:1001500083200D0013A0100023A01D0023A20D007A -:10016000971F0000938F0FF4932010001321F07F4E -:100170009321F0FF132200009322008023A00F00A0 -:1001800023A21F0023A42F0023A63F0023A84F0073 -:1001900023AA5F00971F0000938F4FF29320100057 -:1001A00013A11000132E1100932E1E0013AF1E007A -:1001B00023A00F0023A21F0023A42F0023A6CF01FA -:1001C00023A8DF0123AAEF0117150000130585E519 -:1001D00097150000938505F0370610F01306C6F258 -:1001E0006306B5028326C5002320D600832685003A -:1001F0002320D600832645002320D6008326050031 -:100200002320D600130505016FF09FFD370510F080 -:10021000130505F223200500000000000000000087 -:0402200000000000DA -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFFFFF000000000000000054 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SLTIU-01.elf.hex b/benchmarks/riscv_tests/I-SLTIU-01.elf.hex deleted file mode 100644 index eff8f76e..00000000 --- a/benchmarks/riscv_tests/I-SLTIU-01.elf.hex +++ /dev/null @@ -1,51 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013B2110093B2F17F13B3F1FF7B -:1000200093B3010013B40180232031002322410047 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101FF7E -:1000500003A40000933414001335F47F9335F4FFA8 -:10006000133604009336048023208100232291005C -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FC85 -:1000900083A6000013B7160093B7F67F13B8F6FFD8 -:1000A00093B8060013B906802320D1002322E10073 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000971000009380C0F417110000130101FA8B -:1000D00003A9000093391900133AF97F933AF9FF05 -:1000E000133B0900933B0980232021012322310186 -:1000F000232441012326510123286101232A710170 -:1001000097100000938000F117110000130181F790 -:1001100083AB000013BC1B0093BCFB7F13BDFBFF34 -:1001200093BD0B0013BE0B8023207101232281019C -:10013000232491012326A1012328B101232AC101EF -:10014000171D0000130D4DED971D0000938D0DF54B -:1001500083200D0013B0F0FF23A01D0023A20D008B -:10016000971F0000938F0FF4933010001331F07F2E -:100170009331F0FF133200009332008023A00F0070 -:1001800023A21F0023A42F0023A63F0023A84F0073 -:1001900023AA5F00971F0000938F4FF29330100047 -:1001A00013B11000133E1100933E1E0013BF1E003A -:1001B00023A00F0023A21F0023A42F0023A6CF01FA -:1001C00023A8DF0123AAEF0117150000130585E519 -:1001D00097150000938505F0370610F01306C6F258 -:1001E0006306B5028326C5002320D600832685003A -:1001F0002320D600832645002320D6008326050031 -:100200002320D600130505016FF09FFD370510F080 -:10021000130505F223200500000000000000000087 -:0402200000000000DA -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:10101000000000800100000000000000000000004F -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SLTU-01.elf.hex b/benchmarks/riscv_tests/I-SLTU-01.elf.hex deleted file mode 100644 index 1278fbfa..00000000 --- a/benchmarks/riscv_tests/I-SLTU-01.elf.hex +++ /dev/null @@ -1,63 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013021000B70200809382F2FF58 -:100020001303F0FF930300003704008033B2410054 -:10003000B3B2510033B36100B3B3710033B4810084 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FD03A400009304100088 -:10007000370500801305F5FF9305F0FF1306000018 -:10008000B7060080B33494003335A400B335B40010 -:100090003336C400B336D4002320810023229100DC -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181F95B -:1000C00083A6000013071000B70700809387F7FF8F -:1000D0001308F0FF930800003709008033B7E600EB -:1000E000B3B7F60033B80601B3B8160133B9260129 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F503A9000093091000D5 -:10012000370A0080130AFAFF930AF0FF130B00004E -:10013000B70B0080B3393901333A4901B33A590159 -:10014000333B6901B33B7901232021012322310193 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F13C -:1001700083AB0000130C1000B70C0080938CFCFFC5 -:10018000130DF0FF930D0000370E008033BC8B0180 -:10019000B3BC9B0133BDAB01B3BDBB0133BECB01CF -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101171D0000130DCDE52D -:1001C000971D0000938D8DED83200D001301F0FF2E -:1001D00033B0200023A00D0023A21D0023A42D0076 -:1001E000971F0000938F4FEC930010001301F07FD6 -:1001F0009301F0FF130200009302008033331000DC -:10020000B333200033343000B33440003335500072 -:10021000B3B5000033360100B3B601003337020036 -:10022000B3B7020023A06F0023A27F0023A48F0096 -:1002300023A69F0023A8AF0023AABF0023ACCF00B2 -:1002400023AEDF0023A0EF0223A2FF02971F0000CE -:10025000938F0FE893011000B330300033B13000BA -:10026000333E3100B33E3E0033BF3E0023A01F00AB -:1002700023A22F0023A4CF0123A6DF0123A8EF018F -:1002800017150000130505DA97150000938585E51D -:10029000370610F01306C6F26306B5028326C500C2 -:1002A0002320D600832685002320D6008326450000 -:1002B0002320D600832605002320D6001305050140 -:1002C0006FF09FFD370510F0130505F223200500A0 -:0402D000000000002A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:10101000000000800100000000000000000000004F -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SRA-01.elf.hex b/benchmarks/riscv_tests/I-SRA-01.elf.hex deleted file mode 100644 index 43ccca13..00000000 --- a/benchmarks/riscv_tests/I-SRA-01.elf.hex +++ /dev/null @@ -1,64 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A10000130210009302F0001303F0010B -:10002000930300001304000133D24140B3D2514086 -:1000300033D36140B3D3714033D4814023203100A6 -:10004000232241002324510023266100232871002C -:10005000232A810097100000938000FB17110000F5 -:100060001301C1FE03A40000930410001305F00067 -:100070009305F0011306000093060001B354944069 -:100080003355A440B355B4403356C440B356D4405E -:1000900023208100232291002324A1002326B100E4 -:1000A0002328C100232AD10097100000938000F676 -:1000B00017110000130101FB83A6000013071000B5 -:1000C0009307F0001308F0019308000013090001E2 -:1000D00033D7E640B3D7F64033D80641B3D81641FC -:1000E00033D926412320D1002322E1002324F1002B -:1000F0002326010123281101232A210117160000BC -:10010000130606F197160000938646F703290600AA -:1001100093091000130AF000930AF001130B00007A -:10012000930B0001B3593941335A4941B35A5941EC -:10013000335B6941B35B794123A0260123A23601D9 -:1001400023A4460123A6560123A8660123AA76010B -:1001500017160000130606EC97160000938686F328 -:10016000832B0600130C1000930CF000130DF0010C -:10017000930D0000130E000133DC8B41B3DC9B4177 -:1001800033DDAB41B3DDBB4133DECB4123A0760190 -:1001900023A2860123A4960123A6A60123A8B601C3 -:1001A00023AAC601971C0000938C0CE7171D0000C2 -:1001B000130DCDEF03AE0C00930D1000B35EBE41E6 -:1001C00033DFBE41B35FBF41B3D0BF4133D1B04194 -:1001D000B351B1412320CD012322DD012324ED01C0 -:1001E0002326FD0123281D00232A2D00232C3D005A -:1001F00097100000938080E2171100001301C1ECFA -:1002000083A20000930D100033D0B24123200100DF -:10021000971000009380C0E017110000130101EB5C -:1002200083A20000930D100033D0B241B352B0410D -:10023000232001002322510097100000938080DECC -:1002400017110000130101E983A10000370200101B -:10025000130202FEB7020010938212FE3703001051 -:100260001303F3FEB70300109383F3FF33D241402F -:10027000B3D2514033D36140B3D371402320410006 -:10028000232251002324610023267100171500004A -:10029000130545DA971500009385C5E4370610F07D -:1002A0001306C6F26306B5028326C5002320D600D6 -:1002B000832685002320D600832645002320D600F0 -:1002C000832605002320D600130505016FF09FFD4E -:1002D000370510F0130505F223200500000000008B -:0402E000000000001A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:101010000000008010EFCDAB7856341298BADCFE99 -:101020002143658700000000000000000000000070 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SRAI-01.elf.hex b/benchmarks/riscv_tests/I-SRAI-01.elf.hex deleted file mode 100644 index d21d270d..00000000 --- a/benchmarks/riscv_tests/I-SRAI-01.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013D2114093D2F14013D3F141D8 -:1000200093D3014013D40141232031002322410006 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101FF7E -:1000500003A40000935414401355F4409355F44105 -:10006000135604409356044123208100232291001B -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FC85 -:1000900083A6000013D7164093D7F64013D8F64135 -:1000A00093D8064013D906412320D1002322E10032 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000171600001306C6F497160000938606FA6A -:1000D0000329060093591940135AF940935AF941DC -:1000E000135B0940935B094123A0260123A236013B -:1000F00023A4460123A6560123A8660123AA76015C -:1001000017160000130606F197160000938686F76F -:10011000832B060013DC1B4093DCFB4013DDFB410B -:1001200093DD0B4013DE0B4123A0760123A2860151 -:1001300023A4960123A6A60123A8B60123AAC601DB -:10014000171D0000130D4DED971D0000938D0DF54B -:10015000032E0D00935E1E4013DF1E40935F1F4071 -:1001600093D01F4013D110409351114023A0CD01D3 -:1001700023A2DD0123A4ED0123A6FD0123A81D0078 -:1001800023AA2D0023AC3D0097100000938000E9C6 -:1001900017110000130141F283A2000013D0124096 -:1001A0002320010097100000938080E717110000C2 -:1001B0001301C1F083A2000013D0124093521040EB -:1001C000232001002322510017150000130585E5A7 -:1001D00097150000938505EF370610F01306C6F259 -:1001E0006306B5028326C5002320D600832685003A -:1001F0002320D600832645002320D6008326050031 -:100200002320D600130505016FF09FFD370510F080 -:10021000130505F223200500000000000000000087 -:0402200000000000DA -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:101010000000008010EFCDAB7856341298BADCFE99 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SRL-01.elf.hex b/benchmarks/riscv_tests/I-SRL-01.elf.hex deleted file mode 100644 index a57abaee..00000000 --- a/benchmarks/riscv_tests/I-SRL-01.elf.hex +++ /dev/null @@ -1,64 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A10000130210009302F0001303F0010B -:10002000930300001304000133D24100B3D2510006 -:1000300033D36100B3D3710033D481002320310066 -:10004000232241002324510023266100232871002C -:10005000232A810097100000938000FB17110000F5 -:100060001301C1FE03A40000930410001305F00067 -:100070009305F0011306000093060001B3549400A9 -:100080003355A400B355B4003356C400B356D4005E -:1000900023208100232291002324A1002326B100E4 -:1000A0002328C100232AD10097100000938000F676 -:1000B00017110000130101FB83A6000013071000B5 -:1000C0009307F0001308F0019308000013090001E2 -:1000D00033D7E600B3D7F60033D80601B3D81601FC -:1000E00033D926012320D1002322E1002324F1006B -:1000F0002326010123281101232A210117160000BC -:10010000130606F197160000938646F703290600AA -:1001100093091000130AF000930AF001130B00007A -:10012000930B0001B3593901335A4901B35A5901AC -:10013000335B6901B35B790123A0260123A2360159 -:1001400023A4460123A6560123A8660123AA76010B -:1001500017160000130606EC97160000938686F328 -:10016000832B0600130C1000930CF000130DF0010C -:10017000930D0000130E000133DC8B01B3DC9B01F7 -:1001800033DDAB01B3DDBB0133DECB0123A0760150 -:1001900023A2860123A4960123A6A60123A8B601C3 -:1001A00023AAC601971C0000938C0CE7171D0000C2 -:1001B000130DCDEF03AE0C00930D1000B35EBE0126 -:1001C00033DFBE01B35FBF01B3D0BF0133D1B00194 -:1001D000B351B1012320CD012322DD012324ED0100 -:1001E0002326FD0123281D00232A2D00232C3D005A -:1001F00097100000938080E2171100001301C1ECFA -:1002000083A20000930D100033D0B201232001001F -:10021000971000009380C0E017110000130101EB5C -:1002200083A20000930D100033D0B201B352B0018D -:10023000232001002322510097100000938080DECC -:1002400017110000130101E983A10000370200101B -:10025000130202FEB7020010938212FE3703001051 -:100260001303F3FEB70300109383F3FF33D241006F -:10027000B3D2510033D36100B3D3710023204100C6 -:10028000232251002324610023267100171500004A -:10029000130545DA971500009385C5E4370610F07D -:1002A0001306C6F26306B5028326C5002320D600D6 -:1002B000832685002320D600832645002320D600F0 -:1002C000832605002320D600130505016FF09FFD4E -:1002D000370510F0130505F223200500000000008B -:0402E000000000001A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:101010000000008010EFCDAB7856341298BADCFE99 -:101020002143658700000000000000000000000070 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SRLI-01.elf.hex b/benchmarks/riscv_tests/I-SRLI-01.elf.hex deleted file mode 100644 index b4203fc7..00000000 --- a/benchmarks/riscv_tests/I-SRLI-01.elf.hex +++ /dev/null @@ -1,50 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810178 -:1000100083A1000013D2110093D2F10013D3F10198 -:1000200093D3010013D40101232031002322410086 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101FF7E -:1000500003A40000935414001355F4009355F401C5 -:10006000135604009356040123208100232291009B -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FC85 -:1000900083A6000013D7160093D7F60013D8F601F5 -:1000A00093D8060013D906012320D1002322E100B2 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000171600001306C6F497160000938606FA6A -:1000D0000329060093591900135AF900935AF9019C -:1000E000135B0900935B090123A0260123A23601BB -:1000F00023A4460123A6560123A8660123AA76015C -:1001000017160000130606F197160000938686F76F -:10011000832B060013DC1B0093DCFB0013DDFB01CB -:1001200093DD0B0013DE0B0123A0760123A28601D1 -:1001300023A4960123A6A60123A8B60123AAC601DB -:10014000171D0000130D4DED971D0000938D0DF54B -:10015000032E0D00935E1E0013DF1E00935F1F0031 -:1001600093D01F0013D110009351110023A0CD0193 -:1001700023A2DD0123A4ED0123A6FD0123A81D0078 -:1001800023AA2D0023AC3D0097100000938000E9C6 -:1001900017110000130141F283A2000013D01200D6 -:1001A0002320010097100000938080E717110000C2 -:1001B0001301C1F083A2000013D01200935210006B -:1001C000232001002322510017150000130585E5A7 -:1001D00097150000938505EF370610F01306C6F259 -:1001E0006306B5028326C5002320D600832685003A -:1001F0002320D600832645002320D6008326050031 -:100200002320D600130505016FF09FFD370510F080 -:10021000130505F223200500000000000000000087 -:0402200000000000DA -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:101010000000008010EFCDAB7856341298BADCFE99 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SUB-01.elf.hex b/benchmarks/riscv_tests/I-SUB-01.elf.hex deleted file mode 100644 index 90859695..00000000 --- a/benchmarks/riscv_tests/I-SUB-01.elf.hex +++ /dev/null @@ -1,65 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF37040080338241409D -:10003000B382514033836140B38371403384814044 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FE03A400009304000097 -:10007000130510009305F0FF370600801306F6FF06 -:10008000B7060080B30494403305A440B305B440E0 -:100090003306C440B306D4402320810023229100BC -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181FA5A -:1000C00083A6000013070000930710001308F0FF39 -:1000D000B70800809388F8FF370900803387E6402F -:1000E000B387F64033880641B388164133892641E9 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F603A9000093090000E4 -:10012000130A1000930AF0FF370B0080130BFBFF3C -:10013000B70B0080B3093941330A4941B30A594129 -:10014000330B6941B30B7941232021012322310173 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F23B -:1001700083AB0000130C0000930C1000130DF0FF74 -:10018000B70D0080938DFDFF370E0080338C8B41BF -:10019000B38C9B41338DAB41B38DBB41338ECB418F -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101971C0000938CCCE5B0 -:1001C000171D0000130D8DEE03AE0C00930D1000F3 -:1001D000B30EBE41338FBE41B30FBF41B380BF41A9 -:1001E0003381B041B301B1412320BD012322CD01B0 -:1001F0002324DD012326ED012328FD01232A1D00F0 -:10020000232C2D00232E3D0097100000938000E149 -:1002100017110000130181EB03AE0000B79DFFF73B -:10022000938D8D813300BE41232001009710000083 -:10023000938000DF17110000130181E903AE000075 -:10024000B79DFFF7938D8D813300BE41B30200400F -:10025000232001002322510097100000938080DCAE -:1002600017110000130141E783A100003382014010 -:10027000B30202403303504033070340B307074043 -:1002800033880740B30C0041330D9041B30D0D404E -:10029000232041002322A1012324B10117150000CE -:1002A000130545D9971500009385C5E3370610F06F -:1002B0001306C6F26306B5028326C5002320D600C6 -:1002C000832685002320D600832645002320D600E0 -:1002D000832605002320D600130505016FF09FFD3E -:1002E000370510F0130505F223200500000000007B -:0402F000000000000A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080CDAB00007856341298BADCFE98 -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-SW-01.elf.hex b/benchmarks/riscv_tests/I-SW-01.elf.hex deleted file mode 100644 index 7cca4e1f..00000000 --- a/benchmarks/riscv_tests/I-SW-01.elf.hex +++ /dev/null @@ -1,34 +0,0 @@ -:0200000480007A -:10000000971000009380000137F1F11113012122B4 -:1000100023A020009712000093821200B74C33F304 -:10002000938C4C4FA3AF92FF171400001304F4FEFF -:10003000B7FFF555938F6F66A320F4019715000065 -:100040009385057E379677F71306868F23A0C580A4 -:10005000170700001307177DB71709999387A7AAF9 -:10006000A32FF77E97180000938848FC37D9BB0B65 -:100070001309C9C0B7190DDD9389E9EE370AFF0FDF -:10008000130A0A0F23AE28FF23A0380123A2480138 -:10009000171B0000130B0BFA375034121300806744 -:1000A00023200B00971A0000938ACAF5B739221152 -:1000B0009389493483AB0A0023A03B01971B0000BE -:1000C000938B8BF4171C0000130C4CF783AC0B00C4 -:1000D00023209C01171D0000130D8DF6B73C5476AC -:1000E000938C0C2123209D01930C0000171E00000F -:1000F000130E4EF5B7DDAB89938DFDDE2320BE01D7 -:10010000130ECEFF971E0000938E0EF4B76D72147F -:10011000938D6D8323A0BE0103AF0E0023A2EE01D9 -:10012000971000009380C0F23751389613011120C8 -:10013000B75181259381319623A0200023A0300060 -:1001400017150000130505ED97150000938585F040 -:10015000370610F01306C6F26306B5028326C50003 -:100160002320D600832685002320D6008326450041 -:100170002320D600832605002320D6001305050181 -:100180006FF09FFD370510F0130505F223200500E1 -:04019000000000006B -:1010000034100080F0DEBC9A0000000000000000F8 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-XOR-01.elf.hex b/benchmarks/riscv_tests/I-XOR-01.elf.hex deleted file mode 100644 index 71e033d4..00000000 --- a/benchmarks/riscv_tests/I-XOR-01.elf.hex +++ /dev/null @@ -1,66 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013020000930210001303F0FFFD -:10002000B70300809383F3FF3704008033C241009D -:10003000B3C2510033C36100B3C3710033C4810044 -:100040002320310023224100232451002326610074 -:1000500023287100232A8100971000009380C0FAA2 -:1000600017110000130181FE03A400009304000097 -:10007000130510009305F0FF370600801306F6FF06 -:10008000B7060080B34494003345A400B345B400E0 -:100090003346C400B346D4002320810023229100BC -:1000A0002324A1002326B1002328C100232AD10044 -:1000B00097100000938080F517110000130181FA5A -:1000C00083A6000013070000930710001308F0FF39 -:1000D000B70800809388F8FF3709008033C7E6002F -:1000E000B3C7F60033C80601B3C8160133C92601E9 -:1000F0002320D1002322E1002324F1002326010143 -:1001000023281101232A210197100000938040F039 -:1001100017110000130181F603A9000093090000E4 -:10012000130A1000930AF0FF370B0080130BFBFF3C -:10013000B70B0080B3493901334A4901B34A590129 -:10014000334B6901B34B7901232021012322310173 -:10015000232441012326510123286101232A71010F -:1001600097100000938000EB17110000130181F23B -:1001700083AB0000130C0000930C1000130DF0FF74 -:10018000B70D0080938DFDFF370E008033CC8B01BF -:10019000B3CC9B0133CDAB01B3CDBB0133CECB018F -:1001A0002320710123228101232491012326A1010F -:1001B0002328B101232AC101971C0000938CCCE5B0 -:1001C000171D0000130D8DEE03AE0C001302F00797 -:1001D0009302F0031303F0019303F0001304700083 -:1001E00093043000B34E4E0033CF5E00B34F6F0028 -:1001F000B3C07F0033C18000B341910023204D0084 -:100200002322CD012324DD012326ED012328FD0136 -:10021000232A1D00232C2D00232E3D0097100000C3 -:100220009380C0DF17110000130141EA03AE000004 -:10023000B79DFFF7938D8D813340BE0123200100D0 -:10024000971000009380C0DD17110000130141E8F2 -:1002500003AE0000B79DFFF7938D8D813340BE0143 -:10026000B342000023200100232251009710000018 -:10027000938040DB17110000130101E683A1000009 -:1002800033C20100B342020033435000334703003E -:10029000B347070033C80700B34C0001334D90014A -:1002A000B34D0D00232041002322A1012324B101DD -:1002B00017150000130505D897150000938585E2F2 -:1002C000370610F01306C6F26306B5028326C50092 -:1002D0002320D600832685002320D60083264500D0 -:1002E0002320D600832605002320D6001305050110 -:1002F0006FF09FFD370510F0130505F22320050070 -:0403000000000000F9 -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFCDAB7856341298BADCFE9A -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/I-XORI-01.elf.hex b/benchmarks/riscv_tests/I-XORI-01.elf.hex deleted file mode 100644 index 4269ce4a..00000000 --- a/benchmarks/riscv_tests/I-XORI-01.elf.hex +++ /dev/null @@ -1,56 +0,0 @@ -:0200000480007A -:100000009710000093800000171100001301810277 -:1000100083A1000013C2110093C2F17F13C3F1FF4B -:1000200093C3010013C40180232031002322410027 -:10003000232451002326610023287100232A8100F4 -:1000400097100000938040FC17110000130101007D -:1000500003A40000934414001345F47F9345F4FF78 -:10006000134604009346048023208100232291003C -:100070002324A1002326B1002328C100232AD10074 -:1000800097100000938080F817110000130181FD84 -:1000900083A6000013C7160093C7F67F13C8F6FFA8 -:1000A00093C8060013C906802320D1002322E10053 -:1000B0002324F1002326010123281101232A2101F1 -:1000C000971000009380C0F417110000130101FB8A -:1000D00003A9000093491900134AF97F934AF9FFD5 -:1000E000134B0900934B0980232021012322310166 -:1000F000232441012326510123286101232A710170 -:1001000097100000938000F117110000130181F88F -:1001100083AB000013CC1B0093CCFB7F13CDFBFF04 -:1001200093CD0B0013CE0B8023207101232281017C -:10013000232491012326A1012328B101232AC101EF -:10014000171D0000130D4DED971D0000938D0DF64A -:10015000032E0D00934EFE0713CFFE03934FFF01B6 -:1001600093C0FF0013C170009341310023A0CD0163 -:1001700023A2DD0123A4ED0123A6FD0123A81D0078 -:1001800023AA2D0023AC3D0097100000938000E9C6 -:1001900017110000130141F383A2000013C01200E5 -:1001A0002320010097100000938080E717110000C2 -:1001B0001301C1F183A2000013C01200934210008A -:1001C000232001002322510097100000938080E536 -:1001D00017110000130101F083A1000013C20100F8 -:1001E0009342020013C30200134703009347070022 -:1001F00013C80700934C080013CD0C00934D0D005D -:1002000023203100232241002324A1012326B10110 -:1002100017150000130505E297150000938585EC7E -:10022000370610F01306C6F26306B5028326C50032 -:100230002320D600832685002320D6008326450070 -:100240002320D600832605002320D60013050501B0 -:100250006FF09FFD370510F0130505F22320050010 -:04026000000000009A -:101000000000000001000000FFFFFFFFFFFFFF7F67 -:1010100000000080FFFFCDAB7856341298BADCFE9A -:10102000145892360000000000000000000000008C -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/MUL.elf.hex b/benchmarks/riscv_tests/MUL.elf.hex deleted file mode 100644 index 8c2cbdca..00000000 --- a/benchmarks/riscv_tests/MUL.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B308190323201101130A000093091000EB -:10002000B3093A0323223101130B0000930AF0FFB6 -:10003000B30A5B0323245101130C0000B70B0080AB -:10004000938BFBFFB30B7C0323267101130D000080 -:10005000B70C0080B30C9D032328910117110000F9 -:10006000130181FB130E1000930D0000B30DBE03AE -:100070002320B101130F1000930E1000B30EDF0305 -:100080002322D10193011000930FF0FFB38FF103EE -:100090002324F10113041000370200801302F2FF41 -:1000A000330244022326410093051000B704008068 -:1000B000B38495022328910017110000130101F762 -:1000C0009306F0FF130600003386C6022320C1000A -:1000D0009307F0FF130710003387E7022322E100A4 -:1000E0009308F0FF1308F0FF33880803232401016D -:1000F0009309F0FF370900801309F9FF33892903B9 -:1001000023262101930AF0FF370A0080338A4A032D -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B0000338B6B0323206101C8 -:10013000B70C0080938CFCFF130C1000338C8C03E5 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:10015000338DAD032324A101B70E0080938EFEFFE3 -:10016000370E0080130EFEFF338ECE032326C1010F -:10017000B70F0080938FFFFF370F0080338FEF039F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B301320223203100B704008034 -:1001A0001304100033848402232281003706008068 -:1001B0009305F0FFB305B6022324B1003707008092 -:1001C000B70600809386F6FFB306D7022326D10038 -:1001D00037080080B7070080B307F8022328F10032 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/MULH.elf.hex b/benchmarks/riscv_tests/MULH.elf.hex deleted file mode 100644 index b219406f..00000000 --- a/benchmarks/riscv_tests/MULH.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B318190323201101130A000093091000DB -:10002000B3193A0323223101130B0000930AF0FFA6 -:10003000B31A5B0323245101130C0000B70B00809B -:10004000938BFBFFB31B7C0323267101130D000070 -:10005000B70C0080B31C9D032328910117110000E9 -:10006000130181FB130E1000930D0000B31DBE039E -:100070002320B101130F1000930E1000B31EDF03F5 -:100080002322D10193011000930FF0FFB39FF103DE -:100090002324F10113041000370200801302F2FF41 -:1000A000331244022326410093051000B704008058 -:1000B000B39495022328910017110000130101F752 -:1000C0009306F0FF130600003396C6022320C100FA -:1000D0009307F0FF130710003397E7022322E10094 -:1000E0009308F0FF1308F0FF33980803232401015D -:1000F0009309F0FF370900801309F9FF33992903A9 -:1001000023262101930AF0FF370A0080339A4A031D -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B0000339B6B0323206101B8 -:10013000B70C0080938CFCFF130C1000339C8C03D5 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:10015000339DAD032324A101B70E0080938EFEFFD3 -:10016000370E0080130EFEFF339ECE032326C101FF -:10017000B70F0080938FFFFF370F0080339FEF038F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B311320223203100B704008024 -:1001A0001304100033948402232281003706008058 -:1001B0009305F0FFB315B6022324B1003707008082 -:1001C000B70600809386F6FFB316D7022326D10028 -:1001D00037080080B7070080B317F8022328F10022 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/MULHSU.elf.hex b/benchmarks/riscv_tests/MULHSU.elf.hex deleted file mode 100644 index 048d50b4..00000000 --- a/benchmarks/riscv_tests/MULHSU.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B328190323201101130A000093091000CB -:10002000B3293A0323223101130B0000930AF0FF96 -:10003000B32A5B0323245101130C0000B70B00808B -:10004000938BFBFFB32B7C0323267101130D000060 -:10005000B70C0080B32C9D032328910117110000D9 -:10006000130181FB130E1000930D0000B32DBE038E -:100070002320B101130F1000930E1000B32EDF03E5 -:100080002322D10193011000930FF0FFB3AFF103CE -:100090002324F10113041000370200801302F2FF41 -:1000A000332244022326410093051000B704008048 -:1000B000B3A495022328910017110000130101F742 -:1000C0009306F0FF1306000033A6C6022320C100EA -:1000D0009307F0FF1307100033A7E7022322E10084 -:1000E0009308F0FF1308F0FF33A80803232401014D -:1000F0009309F0FF370900801309F9FF33A9290399 -:1001000023262101930AF0FF370A008033AA4A030D -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B000033AB6B0323206101A8 -:10013000B70C0080938CFCFF130C100033AC8C03C5 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:1001500033ADAD032324A101B70E0080938EFEFFC3 -:10016000370E0080130EFEFF33AECE032326C101EF -:10017000B70F0080938FFFFF370F008033AFEF037F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B321320223203100B704008014 -:1001A0001304100033A48402232281003706008048 -:1001B0009305F0FFB325B6022324B1003707008072 -:1001C000B70600809386F6FFB326D7022326D10018 -:1001D00037080080B7070080B327F8022328F10012 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/MULHU.elf.hex b/benchmarks/riscv_tests/MULHU.elf.hex deleted file mode 100644 index 0093b3ca..00000000 --- a/benchmarks/riscv_tests/MULHU.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B338190323201101130A000093091000BB -:10002000B3393A0323223101130B0000930AF0FF86 -:10003000B33A5B0323245101130C0000B70B00807B -:10004000938BFBFFB33B7C0323267101130D000050 -:10005000B70C0080B33C9D032328910117110000C9 -:10006000130181FB130E1000930D0000B33DBE037E -:100070002320B101130F1000930E1000B33EDF03D5 -:100080002322D10193011000930FF0FFB3BFF103BE -:100090002324F10113041000370200801302F2FF41 -:1000A000333244022326410093051000B704008038 -:1000B000B3B495022328910017110000130101F732 -:1000C0009306F0FF1306000033B6C6022320C100DA -:1000D0009307F0FF1307100033B7E7022322E10074 -:1000E0009308F0FF1308F0FF33B80803232401013D -:1000F0009309F0FF370900801309F9FF33B9290389 -:1001000023262101930AF0FF370A008033BA4A03FD -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B000033BB6B032320610198 -:10013000B70C0080938CFCFF130C100033BC8C03B5 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:1001500033BDAD032324A101B70E0080938EFEFFB3 -:10016000370E0080130EFEFF33BECE032326C101DF -:10017000B70F0080938FFFFF370F008033BFEF036F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B331320223203100B704008004 -:1001A0001304100033B48402232281003706008038 -:1001B0009305F0FFB335B6022324B1003707008062 -:1001C000B70600809386F6FFB336D7022326D10008 -:1001D00037080080B7070080B337F8022328F10002 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/REM.elf.hex b/benchmarks/riscv_tests/REM.elf.hex deleted file mode 100644 index 74e7dd5e..00000000 --- a/benchmarks/riscv_tests/REM.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B368190323201101130A0000930910008B -:10002000B3693A0323223101130B0000930AF0FF56 -:10003000B36A5B0323245101130C0000B70B00804B -:10004000938BFBFFB36B7C0323267101130D000020 -:10005000B70C0080B36C9D03232891011711000099 -:10006000130181FB130E1000930D0000B36DBE034E -:100070002320B101130F1000930E1000B36EDF03A5 -:100080002322D10193011000930FF0FFB3EFF1038E -:100090002324F10113041000370200801302F2FF41 -:1000A000336244022326410093051000B704008008 -:1000B000B3E495022328910017110000130101F702 -:1000C0009306F0FF1306000033E6C6022320C100AA -:1000D0009307F0FF1307100033E7E7022322E10044 -:1000E0009308F0FF1308F0FF33E80803232401010D -:1000F0009309F0FF370900801309F9FF33E9290359 -:1001000023262101930AF0FF370A008033EA4A03CD -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B000033EB6B032320610168 -:10013000B70C0080938CFCFF130C100033EC8C0385 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:1001500033EDAD032324A101B70E0080938EFEFF83 -:10016000370E0080130EFEFF33EECE032326C101AF -:10017000B70F0080938FFFFF370F008033EFEF033F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B361320223203100B7040080D4 -:1001A0001304100033E48402232281003706008008 -:1001B0009305F0FFB365B6022324B1003707008032 -:1001C000B70600809386F6FFB366D7022326D100D8 -:1001D00037080080B7070080B367F8022328F100D2 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/REMU.elf.hex b/benchmarks/riscv_tests/REMU.elf.hex deleted file mode 100644 index 5bcc0e05..00000000 --- a/benchmarks/riscv_tests/REMU.elf.hex +++ /dev/null @@ -1,52 +0,0 @@ -:0200000480007A -:1000000017110000130101001309000093080000FC -:10001000B378190323201101130A0000930910007B -:10002000B3793A0323223101130B0000930AF0FF46 -:10003000B37A5B0323245101130C0000B70B00803B -:10004000938BFBFFB37B7C0323267101130D000010 -:10005000B70C0080B37C9D03232891011711000089 -:10006000130181FB130E1000930D0000B37DBE033E -:100070002320B101130F1000930E1000B37EDF0395 -:100080002322D10193011000930FF0FFB3FFF1037E -:100090002324F10113041000370200801302F2FF41 -:1000A000337244022326410093051000B7040080F8 -:1000B000B3F495022328910017110000130101F7F2 -:1000C0009306F0FF1306000033F6C6022320C1009A -:1000D0009307F0FF1307100033F7E7022322E10034 -:1000E0009308F0FF1308F0FF33F8080323240101FD -:1000F0009309F0FF370900801309F9FF33F9290349 -:1001000023262101930AF0FF370A008033FA4A03BD -:100110002328410117110000130181F2B70B008061 -:10012000938BFBFF130B000033FB6B032320610158 -:10013000B70C0080938CFCFF130C100033FC8C0375 -:1001400023228101B70D0080938DFDFF130DF0FF79 -:1001500033FDAD032324A101B70E0080938EFEFF73 -:10016000370E0080130EFEFF33FECE032326C1019F -:10017000B70F0080938FFFFF370F008033FFEF032F -:100180002328E101171100001301C1EC37020080A0 -:1001900093010000B371320223203100B7040080C4 -:1001A0001304100033F484022322810037060080F8 -:1001B0009305F0FFB375B6022324B1003707008022 -:1001C000B70600809386F6FFB376D7022326D100C8 -:1001D00037080080B7070080B377F8022328F100C2 -:1001E00017150000130505E297150000938585EEAD -:1001F000370610F01306C6F26306B5028326C50063 -:100200002320D600832685002320D60083264500A0 -:100210002320D600832605002320D60013050501E0 -:100220006FF09FFD370510F0130505F22320050040 -:0402300000000000CA -:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:1010C000FFFFFFFFFFFFFFFF000000000000000028 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/dhrystone.riscv.hex b/benchmarks/riscv_tests/benchmarks/dhrystone.riscv.hex new file mode 100644 index 00000000..8af57338 --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/dhrystone.riscv.hex @@ -0,0 +1,756 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A00097020000938242047390523097510000EF +:1000B0009381413F177200001302B244137202FC95 +:1000C000732540F1930510006370B500130115000E +:1000D0001311110133014100131615013302C2003F +:1000E0006F209041130101EF2322110023242100EE +:1000F0002326310023284100232A5100232C6100AC +:10010000232E710023208102232291022324A102A5 +:100110002326B1022328C102232AD102232CE10283 +:10012000232EF1022320010523221105232421057A +:100130002326310523284105232A5105232C610557 +:10014000232E710523208107232291072324A10751 +:100150002326B1072328C107232AD107232CE1072F +:10016000232EF10773252034F325103413060100E4 +:10017000EF20901173101534B72200009382028093 +:1001800073A0023083204100032181008321C1003C +:100190000322010183224101032381018323C10141 +:1001A0000324010283244102032581028325C10225 +:1001B0000326010383264103032781038327C10309 +:1001C0000328010483284104032981048329C104ED +:1001D000032A0105832A4105032B8105832BC105D1 +:1001E000032C0106832C4106032D8106832DC106B5 +:1001F000032E0107832E4107032F8107832FC10799 +:0802000013010111730020300D +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000013052500B305B5002320B6006780000046 +:10201000130756001308800C330807031316260015 +:10202000931727003305F5002320D500232CE50660 +:102030002322D500B307C800B387F50083A60701A4 +:1020400023AAE70023ACE7001387160023A8E700C4 +:1020500003270500B3850501B385C500B717000048 +:10206000B385B7009307500023AAE5FA173700009D +:10207000232CF7C4678000001375F50F93F5F50F57 +:102080006306B50013050000678000009737000065 +:10209000A388A7C21305100067800000130101FF89 +:1020A000232481002322910023261100130405001C +:1020B0009384050083C5340003452400EFF0DFFB63 +:1020C000E31A05FE9385040013050400EF00505940 +:1020D00093070000635AA0009307A0001737000081 +:1020E0002324F7BE930710008320C100032481003E +:1020F000832441001385070013010101678000005C +:102100001305E5FF1335150067800000130101FF7B +:1021100023248100232291001304050023261100AB +:1021200093840500EFF0DFFD9307040063140500BE +:102130009307300023A0F40093072000630AF404FF +:1021400063E88702630A0400173700000327C7B754 +:102150009307400663DCE70423A004008320C1004A +:1021600003248100832441001301010167800000E2 +:1021700013074000E314E4FE8320C1000324810020 +:1021800023A0F400832441001301010167800000B3 +:102190008320C100032481009307100023A0F400D2 +:1021A0008324410013010101678000008320C100E6 +:1021B000032481009307300023A0F400832441000E +:1021C0001301010167800000130101FE2322B10009 +:1021D0002324C1002326D1002328E100232AF10073 +:1021E000232C0101232E110113010102678000003D +:1021F000173700000347D7AC930710046304F700B8 +:102200006780000083270500173700000327C7AB4E +:1022100093879700B387E7402320F500678000008D +:10222000973700009387C7AA03A607006308060034 +:10223000032706002320E50003A607001306C600B7 +:102240009735000083A545A81305A0006FF05FDB5C +:10225000130101FF2320210117390000130949A7A9 +:1022600083270900232481000324050003A7070016 +:1022700083AE470003AE870003A3070183A847018D +:1022800003A8870183A5070203A6470283A6870246 +:1022900023229100232611009304050003A5C70102 +:1022A00083A7C7022320E40003A70400232EA40071 +:1022B0002326F4022322D401930750002324C401CF +:1022C00023286400232A1401232C04012320B402B0 +:1022D0002322C4022324D40223A6F4002326F400DC +:1022E0002320E40013050400EFF09FF3832744004C +:1022F0006380070883A704008320C10003248100B2 +:1023000083AF070003AF470083AE870003AEC7006B +:1023100003A3070183A8470103A8870183A5C70179 +:1023200003A6070283A6470203A7870283A7C70263 +:1023300023A0F40123A2E40123A4D40123A6C40111 +:1023400023A8640023AA140123AC040123AEB40023 +:1023500023A0C40223A2D40223A4E40223A6F402ED +:10236000032901008324410013010101678000005B +:1023700003A5840093076000930584002326F400DE +:10238000EFF0DFD8832709000325C4001306C4003B +:1023900083A707008320C100832441002320F40089 +:1023A00003248100032901009305A000130101010A +:1023B0006FF01FC5173700001307C790832607006B +:1023C0009737000083C7D78F9387F7FB93B7170022 +:1023D000B3E7D7002320F700930720041737000046 +:1023E0002300F78E67800000930710041737000062 +:1023F000A308F78C9737000023A6078C678000009E +:10240000130101EB23229113B70C00409387FCFFCB +:10241000232481142322911423202115232A5113CC +:1024200023261114232E3113232C41132328611347 +:1024300023267113232481132320A113232EB111EA +:102440001309050093840500130406002324D1001A +:10245000930A50022326F1006F0040016304050631 +:102460009385040013041400E700090003450400E9 +:10247000E31655FF83461400930D140013870D00D7 +:10248000930B00029309F0FF130AF0FF930500007D +:1024900013065005130590009387D6FD93F7F70FA9 +:1024A00013041700636CF60617280000130808557C +:1024B00093972700B387070183A70700B387070116 +:1024C000678007008320C1140324811483244114EE +:1024D000032901148329C113032A8113832A411379 +:1024E000032B0113832BC112032C8112832C411265 +:1024F000032D0112832DC111130101156780000006 +:10250000938B06008346170013070400130417007B +:102510009387D6FD93F7F70FE378F6F893850400D9 +:1025200013055002E700090013840D006FF01FF43B +:1025300003481700938906FD13070400930708FD5D +:10254000930608006366F50293972900B389370163 +:102550001307170093991900B3890901034807006D +:10256000938909FD930708FD93060800E37EF5FCB7 +:10257000E3540AF2138A09009309F0FF6FF0DFF1C8 +:1025800083461700130704006FF01FF193850400C2 +:1025900013055002E70009006FF05FED832781000B +:1025A000834617001307040083A907009387470099 +:1025B0002324F1006FF0DFFB130500039385040073 +:1025C000E70009009385040013058007E700090070 +:1025D00083278100130C0001232201001387470089 +:1025E00083278100930D000083A907002324E100C5 +:1025F00013060C00930600001385090093850D0057 +:10260000EF10001C2328A10093070000930C050085 +:102610006380B723130B4101130D100013060C0048 +:10262000930600001385090093850D00EF001056F6 +:1026300013060C009306000093090500938D050016 +:10264000EF100018832741002320AB002320A101B5 +:10265000930C0500130B4B00130D1D00E390B7FD09 +:10266000E3FE89FB635C4D01130AFAFF93850400C6 +:1026700013850B00E7000900E3484DFF83270100A5 +:102680000327C10093099000338AE700131A2A0038 +:1026900093070101338A47016F00C000832C0A00B1 +:1026A000130ACAFFB3B79901B307F04093F7770253 +:1026B000938707033385970193850400E70009009A +:1026C0009307C100E39C47FD6FF05FDA93071000AA +:1026D00063CCB7160327810093074700638605186C +:1026E000832907002324F10013DCF941634E0C1801 +:1026F000930D0C0023220100130CA0006FF05FEF7C +:10270000130C0001232201009307100063C2B710CD +:1027100083278100138747006FF09FEC8327810098 +:1027200083AD0700138B470063840D18635840097D +:102730009307D002639EFB0403C50D0063080502E6 +:10274000930BF0FF63C609009389F9FF638E79014B +:1027500093850400938D1D00E700090003C50D005B +:10276000130AFAFFE31005FE635C4001130AFAFF47 +:102770009385040013050002E7000900E3180AFE30 +:10278000232461016FF09FCE972D0000938D0D23C0 +:1027900093870D00B3863D01639809006F004013D5 +:1027A000938717006386D70003C70700E31A07FE65 +:1027B000B387B741330AFA40634C401103C50D009B +:1027C000E30005FC930BF0FF6FF0DFF79347FAFF90 +:1027D00093D7F74183461700337AFA0013070400B2 +:1027E0006FF09FCB832781009385040003A507002A +:1027F000138B4700E7000900232461016FF01FC716 +:102800008346170093851500130704006FF0DFC897 +:1028100083278100138B7700137B8BFF93078B003B +:1028200083290B00832D4B002324F1006FF05FDC24 +:10283000E3F289DF9307100023200100130D10003D +:10284000E3C447E36FF09FE383278100138B770096 +:10285000137B8BFF93078B0083290B00032C4B000A +:102860002324F1006FF09FE8032781006FF05FE7FA +:10287000130C8000232201006FF01FE9130CA0004D +:10288000232201006FF05FE8938504001305D00256 +:10289000E700090033373001B3078041B309304105 +:1028A000B38DE740130CA000232201006FF05FD42A +:1028B000635640019307D002E398FBEC972D00008C +:1028C000938DCD0F13058002930BF0FF6FF09FE700 +:1028D000130AFAFF9385040013850B00E700090033 +:1028E000E30E0AEC130AFAFF9385040013850B002C +:1028F000E7000900E31E0AFC6FF05FEC83A7050008 +:102900002380A70083A705009387170023A0F50065 +:1029100067800000130101F81308F103137808FC25 +:10292000130700042320E800930700002322F80087 +:10293000130710002324E800930700002326F80063 +:102940002328A800232AB800232CC800232ED8004F +:102950000F00F00F97E6FFFF9386C66A23A00601DB +:102960009307000023A2F60097E6FFFF9386866D8B +:1029700003A7060083A746003367F700E30A07FEB4 +:102980001307000023A0E6009307000023A2F6002F +:102990000F00F00F032508008325480013010108EC +:1029A00067800000130101FF2324810083250204B6 +:1029B0009307020023261100B387B7001386150082 +:1029C0002380A7002320C2049307A0006300F50220 +:1029D00093070004630CF6008320C10003248100E8 +:1029E0001305000013010101678000009356F641B2 +:1029F0001305020093050000EFF0DFF18320C10012 +:102A000023200204032481001305000013010101A7 +:102A100067800000732700B0972700009387072C7A +:102A2000631E050083A6070017260000130686F91B +:102A30009725000023A0C52A3307D74023A0E7002D +:102A4000732720B0631E050083A6470017260000E9 +:102A50001306C6F79725000023A0C5283307D740E3 +:102A600023A2E700678000009316150013E7160005 +:102A700097E6FFFF938606599307000023A0E60020 +:102A800023A2F6006F0000003716000097E7FFFF53 +:102A900093874757130636A79306000023A0C70065 +:102AA00023A2D7006F000000130101FF23261100AD +:102AB000EFF09FFB97E7FFFF9387C7541306D010F3 +:102AC0009306000023A0C70023A2D7006F000000D8 +:102AD000834705006382070213060500834716003B +:102AE00013061600E39C07FE3306A640930600007B +:102AF000930500006FF01FE213060000930600002C +:102B0000930500006FF01FE163100500678000006F +:102B1000130101FD13070500232611021305C1004F +:102B20001306B101130890006F00800013860700A0 +:102B30009377F700B337F800B307F04093F77702C5 +:102B40009376F70093870703B387F6002300F60018 +:102B50009396C501135747009307F6FF33E7E60046 +:102B600093D54500E314C5FC230E0100EFF05FF69A +:102B70008320C1021301010367800000130101FCDF +:102B800013034102130E05002322B1022324C102C4 +:102B90002326D10217050000130505E19306030063 +:102BA00013060E0093050000232E11002328E102D6 +:102BB000232AF102232C0103232E11032326610073 +:102BC000EFF01F848320C1011305000013010104ED +:102BD00067800000130101FB13038103232481029A +:102BE0002326A100232CC102232ED10213040500A9 +:102BF0001386050017050000130585D09305C10055 +:102C000093060300232611022322F1042320E1046A +:102C10002324010523261105232E6100EFF04FFE2A +:102C20008327C100238007000325C1008320C10240 +:102C300033058540032481021301010567800000EC +:102C4000B3E7C500B367F50093F73700B306C500D7 +:102C5000638407023386C50093070500637ED502AF +:102C600003C705009385150093871700A38FE7FE20 +:102C7000E318B6FE67800000E37ED5FE93070500EB +:102C800003A70500938747009385450023AEE7FE21 +:102C9000E3E8D7FE6780000067800000B367C500E7 +:102CA00093F737003306C5006380070293F5F50FED +:102CB000930705006370C50493871700A38FB7FEC1 +:102CC000E31CF6FE6780000093F5F50F139785006F +:102CD00033E7E500931707013367F700E374C5FE98 +:102CE000930705009387470023AEE7FEE3ECC7FE9A +:102CF0006780000067800000130101F6974700001D +:102D00009387C77B23244109174A0000130A0A7BD3 +:102D100023263109B309FA40232A910823282109DF +:102D2000930405001389050013050200938507002D +:102D300013860900232E1108232C81082322510910 +:102D4000930A0200EFF0DFEF174600001306C67B80 +:102D5000330646419305000033853A01EFF01FF436 +:102D60009305090013850400EFF01FDA93050000B6 +:102D700013050000EF00D06517290000130909F6BC +:102D8000832609001304F103137404FC9304050063 +:102D900063940604832649006396060013850400A5 +:102DA000EFF09FCC1309040097290000938989F262 +:102DB00003A649001305090097250000938545C324 +:102DC000EFF05FE13309A900E30A24FD13050400D5 +:102DD000EFF01FD06FF09FFC97290000938989EFD7 +:102DE00003A6090097250000938585C013050400FC +:102DF000EFF05FDE832649003309A400E38606FC7A +:102E00006FF01FFB83470500638E070093070500E3 +:102E100003C7170093871700E31C07FE3385A740FD +:102E2000678000001305000067800000130605009E +:102E3000B306B600138505009307060063980500E6 +:102E40006F00C001938717006388F60003C707006F +:102E5000E31A07FE3385C7406780000067800000E3 +:102E600083470500938515001305150003C7F5FF7B +:102E700063880700E386E7FE3385E740678000004C +:102E8000930700006FF05FFF9307050003C705007D +:102E90009387170093851500A38FE7FEE31807FEBD +:102EA00067800000034705009306000293070500B2 +:102EB0006318D70003C7170093871700E30CD7FEEA +:102EC0009306D0026300D7069306B0026300D704CE +:102ED00083C6070093050000638206041305000003 +:102EE00093871700138606FD1317250083C6070076 +:102EF0003305A700131515003305A600E39206FE5F +:102F0000638005023305A0406780000083C6170078 +:102F10009305000093871700E39206FC1305000059 +:102F20006780000083C61700930510009387170081 +:102F3000E39606FA130500006FF09FFE138F05005D +:102F40001308000063DC0500B337A000B305B040F0 +:102F5000338FF5403305A0401308F0FF63DA060015 +:102F6000B335C0003307D040B306B7403306C04086 +:102F700093080600138706009307050093050F00CA +:102F800063940624B7560080938606B56376CF0E09 +:102F9000370301006378660C1303F00F6374C300FA +:102FA000130780003353E600B386660003CE0600A5 +:102FB000330EEE00130700023303C741630CC70151 +:102FC000B3156F00335EC501B3186600B365BE006C +:102FD000B317650013D60801B3F6C50213950801AF +:102FE0001355050113D70701B3D5C5029396060102 +:102FF00033E7E600B305B502637AB700330717017C +:10300000636617016374B700330717013307B740CE +:10301000B376C7029397070193D707013357C702C7 +:103020003307E50213950601B367F50063FAE7007D +:10303000B387170163E6170163F4E700B38717014D +:10304000B387E74033D5670093050000630A0800A3 +:10305000B337A000B306B040B385F6403305A040B7 +:10306000678000003703000113070001E36C66F27C +:10307000130780016FF01FF363160600930810001A +:10308000B3D8E8023706010063F6C8121306F00F42 +:10309000637416011307800033D6E800B386C600B8 +:1030A00003CE0600B3051F41330EEE0013070002E6 +:1030B0003303C7416306C709B3986800B35ECF0105 +:1030C000B3176500335EC50113D50801B3156F0052 +:1030D000336EBE009395080193D5050113560E017A +:1030E000B3D6AE0233F7AE02B386D502131707018B +:1030F0003367C700637AD700330717016366170188 +:103100006374D700330717013306D7403377A6021D +:10311000131E0E01135E0E013356A602131707018C +:103120003386C502B365C70163FAC500B3851501CF +:1031300063E6150163F4C500B3851501B385C54089 +:1031400093D6080133F7D5021395080113550501ED +:1031500013D60701B3D5D502131707013367C7008C +:10316000B305B502637AB700330717016366170129 +:103170006374B70033071701B305B74033F7D502BF +:103180009397070193D70701B3D5D502B305B502CD +:1031900013150701B367F50063FAB700B38717018A +:1031A00063E6170163F4B700B3871701B387B7402D +:1031B0006FF05FE93706000113070001E3EEC8EC8A +:1031C000130780016FF05FEDE362DFE8370701006E +:1031D00063FAE604930EF00F33B7DE0013173700DF +:1031E000B758008033D3E600938808B5B3886800E9 +:1031F00083CE0800B38EEE0013070002330ED741D2 +:10320000631CD70363E4E601636AC500B307C540E6 +:10321000B305DF403335F500B385A54013850700BE +:103220006FF0DFE2B708000113070001E3EA16FBC5 +:10323000130780016FF0DFFA3357D601B396C6014A +:10324000B36FD700B357DF0113D70F0133F3E70292 +:10325000B315CF01B356D501B3E6B60093950F0170 +:1032600093D5050193D806013316C6013315C50160 +:10327000B3D7E70213130301B3681301338FF502C9 +:103280001383070063FEE801B388F8011383F7FF97 +:1032900063E8F80163F6E8011383E7FFB388F801F8 +:1032A000B388E84133FFE8029396060193D60601FE +:1032B000B3D8E802131F0F01336FDF00B385150386 +:1032C00093870800637EBF00330FFF019387F8FFE9 +:1032D0006368FF016376BF009387E8FF330FFF0148 +:1032E000B305BF4013130301370F01003363F3002D +:1032F0009307FFFFB378F3009356060113530301BE +:10330000B377F6003387F802B307F302B388D80225 +:103310003303D302B388F80093560701B38616012E +:1033200063F4F6003303E30193D7060133836700A8 +:10333000B70701009387F7FFB3F6F60093960601EF +:103340003377F7003387E60063E66500639E650028 +:10335000637CE5003306C7403337C7003307F70106 +:103360003303E340130706003307E5403335E50038 +:10337000B3856540B385A540B397D5013357C701E1 +:1033800033E5E700B3D5C5016FF05FCC93080500C6 +:1033900093870500130806001385060013830800B1 +:1033A00063940628B7560080938606B563F6C50E6B +:1033B000370701006378E60C1307F00F3337C700B7 +:1033C000131737003355E600B386A60083C6060000 +:1033D000130500023387E600B306E540630CE50001 +:1033E000B397D70033D7E8003318D600B365F7009A +:1033F0003393D80093580801B3D715031316080167 +:103400001356060113570301B3F61503138507007E +:10341000B305F6029396060133E7E600637EB70034 +:10342000330707011385F7FF636807016376B70069 +:103430001385E7FF330707013307B740B377170357 +:103440001313030113530301335717039397070112 +:1034500033E36700B306E60213060700637CD3007C +:10346000330368001306F7FF636603016374D30038 +:103470001306E7FF131505013365C500930500002A +:103480006F00400E3705000113070001E36CA6F240 +:10349000130780016FF01FF3631606001307100077 +:1034A0003358C702370701006370E80C1307F00FA9 +:1034B00063740701130580003357A800B386E60044 +:1034C00003C70600130600023307A700B306E64051 +:1034D0006316E60AB3870741930510009358080165 +:1034E000131608011356060113570301B3F6170309 +:1034F000B3D717039396060133E7E600330EF602BF +:1035000013850700637EC701330707011385F7FFA3 +:10351000636807016376C7011385E7FF3307070177 +:103520003307C741B3771703131303011353030181 +:10353000335717039397070133E36700B306E60297 +:1035400013060700637CD300330368001306F7FFFC +:10355000636603016374D3001306E7FF13150501C7 +:103560003365C500678000003707000113050001BF +:10357000E364E8F4130580016FF01FF43318D800FA +:10358000B3D5E7003393D800B397D70033D7E8001B +:10359000935808013366F70033F7150393170801B2 +:1035A00093D7070113550601B3D515031317070168 +:1035B0003367A700B386B70213850500637ED70083 +:1035C000330707011385F5FF636807016376D700AA +:1035D0001385E5FF33070701B306D74033F716031A +:1035E0001316060113560601B3D616031317070167 +:1035F000B388D702B367C7001387060063FE1701BD +:10360000B38707011387F6FF63E8070163F6170125 +:103610001387E6FFB387070193150501B3871741A9 +:10362000B3E5E5006FF09FEB63E6D51837070100BF +:1036300063F4E6041307F00FB335D7009395350014 +:103640003757008033D5B600130707B53307A700F7 +:1036500003470700130500023307B700B305E54031 +:103660006316E50213051000E3EEF6EE33B5C8006D +:10367000134515006FF01FEF370700019305000198 +:10368000E3E0E6FC930580016FF09FFB3353E60017 +:10369000B396B6003363D30013550301B31EB600CF +:1036A00033D6E700B376A602B397B70033D7E80066 +:1036B0003368F7009317030193D7070113570801E5 +:1036C0003356A6029396060133E7E600338FC7020E +:1036D000130E0600637EE70133076700130EF6FF43 +:1036E000636867006376E701130EE6FF3307670040 +:1036F0003307E741B376A7023357A7029396060133 +:103700003386E7029317080193D70701B3E7F60062 +:103710009306070063FEC700B38767009306F7FFB1 +:1037200063E8670063F6C7009306E7FFB3876700A7 +:1037300013150E01370E01003365D5009306FEFF09 +:103740003378D500B387C740B3F6DE0013560501C2 +:1037500093DE0E013303D802B306D60213570301DA +:103760003308D8033308D800330707013306D603DC +:103770006374D7003306C601935607013386C6002B +:1037800063E6C702E39CC7CEB70701009387F7FF44 +:103790003377F700131707013373F300B398B800BA +:1037A0003307670093050000E3FEE8DA1305F5FF31 +:1037B0006FF0DFCC93050000130500006FF09FDA77 +:1037C0009308060013870600930705001388050079 +:1037D000639C0622B7560080938606B563FCC50C31 +:1037E00037030100637E660A1303F00F6374C3009E +:1037F000130780003353E600B386660003CE06004D +:10380000330EEE00130700023303C741630CC701F8 +:10381000B3956500335EC501B31866003368BE001A +:10382000B317650013D608013377C8021395080152 +:103830001355050193D607013358C8021317070122 +:10384000B366D7003308050363FA0601B386160191 +:1038500063E6160163F40601B3861601B3860641DA +:1038600033F7C6029397070193D70701B3D6C60271 +:10387000B306D50213150701B367F50063FAD70045 +:10388000B387170163E6170163F4D700B387170105 +:10389000B387D74033D567009305000067800000E9 +:1038A0003703000113070001E36666F41307800184 +:1038B0006FF05FF46316060013061000B35816038A +:1038C0003706010063F2C80A1306F00F637416018D +:1038D0001307800033D6E800B386C60003CE060087 +:1038E000330EEE00130700023303C7416318C70904 +:1038F000B385154113D70801139508011355050128 +:1039000013D60701B3F6E502B3D5E5029396060197 +:10391000B3E6C600B305B50263FAB600B386160176 +:1039200063E6160163F4B600B3861601B385B640AC +:10393000B3F6E5029397070193D70701B3D5E502E4 +:10394000B305B50213950601B367F50063FAB70036 +:10395000B387170163E6170163F4B700B387170154 +:10396000B387B7406FF01FF337060001130700015C +:10397000E3E2C8F6130780016FF0DFF5B398680043 +:1039800033D7C501B3176500335EC50113D50801F0 +:10399000B376A702B3956500336EBE009395080118 +:1039A00093D5050113560E013357A70293960601CE +:1039B000B3E6C6003387E50263FAE600B386160174 +:1039C00063E6160163F4E600B38616013386E6402B +:1039D000B376A602131E0E01135E0E013356A60225 +:1039E000939606013386C502B3E5C60163FAC500A6 +:1039F000B385150163E6150163F4C500B3851501B0 +:103A0000B385C5406FF01FEFE3EAD5E83707010043 +:103A100063FCE604130EF00F3337DE001317370094 +:103A2000B758008033D3E600938808B5B3886800A0 +:103A300003CE0800330EEE00130700023303C74124 +:103A4000631EC70363E4B600636AC500B307C540DD +:103A5000B385D5403335F5003388A540138507007D +:103A6000930508006FF09FE3B708000113070001FA +:103A7000E3E816FB130780016FF09FFA3357C60186 +:103A8000B3966600336FD700B3D7C50113570F0144 +:103A9000B3F8E702B39565003358C5013368B80041 +:103AA00093150F0193D5050193560801331666004F +:103AB00033156500B3D7E70293980801B3E6D80041 +:103AC000B38EF5029388070063FED601B386E60144 +:103AD0009388F7FF63E8E60163F6D6019388E7FF72 +:103AE000B386E601B386D641B3FEE6021318080199 +:103AF00013580801B3D6E602939E0E01B3EE0E01F1 +:103B0000B385D5029387060063FEBE00B38EEE0137 +:103B10009387F6FF63E8EE0163F6BE009387E6FF46 +:103B2000B38EEE01B385BE4093980801B70E010035 +:103B3000B3E8F8009387FEFF33F8F80093560601C8 +:103B400093D80801B377F6003307F802B387F80279 +:103B50003308D802B388D8023308F8009356070117 +:103B6000B386060163F4F600B388D801B7070100F5 +:103B70009387F7FF13D80601B3F6F6009396060174 +:103B80003377F700B30818013387E60063E61501C1 +:103B9000639E1501637CE5003306C7403337C700D9 +:103BA0003307E701B388E840130706003307E54011 +:103BB0003335E500B3851541B385A540B397C501FD +:103BC0003357670033E5E700B3D565006FF01FCDCD +:103BD000130101F6232E1108232C8108232A9108B2 +:103BE0001304010A2328210923263109232441092A +:103BF0002322510923206109232E7107232C8107D9 +:103C0000232A91072328A1072326B107971700002D +:103C100093874780130101FC83A207009306F100FC +:103C2000130101FC03AF470083AE870003AEC7005A +:103C300003A3070183A8470103A8870183D5C70110 +:103C400003C6E7019307F10093F707FF171700007A +:103C50001307C7D0832F070093F606FF23A857004A +:103C600093032000971200009382420623A0D20003 +:103C700023A0D70023A4770097160000938646055B +:103C80009303800223A6770023A0F60023A2070057 +:103C9000032547002320F4F923AAE70123ACD70129 +:103CA00023AEC70123A0670223A2170323A407039F +:103CB0002396B7022387C7028347E70103238700C0 +:103CC0008328C700032807018325470103268701AE +:103CD0008356C7012322A4F8171700001307070D06 +:103CE000171500001305C599230FF4F89307A000DA +:103CF000232EF764232464F8232614F9232804F9D7 +:103D0000232AB4F8232CC4F8231ED4F8EFE0CFCB39 +:103D1000970500009385057217050000130585724D +:103D2000EFE08FCA9717000083A747F96388076AF7 +:103D30001705000013054573EFE00FC937460F0064 +:103D400013060624970500009385C5771705000024 +:103D500013050578EFE04FC71715000013054592CE +:103D6000EFE08FC69307401F2326F4F6171A0000D2 +:103D7000130ACAC09717000023A007F49719000080 +:103D8000938909F4971C0000938C0CF4171D000014 +:103D9000130DCD0197140000938444C00329C4F689 +:103DA000170500001305057493050900EFE0CFC166 +:103DB00013051000EFE01FC6F32700B0171700002F +:103DC000130747EF930D1900930A10002320F70003 +:103DD00013092000EFE04FE1EFE0CFDD8347EA0178 +:103DE0000357CA01832E0A00032E4A0003238A00C8 +:103DF0008328CA0003280A0103264A0183268A0170 +:103E0000230FF4FA930504FA93071000130504F83E +:103E1000231EE4FA232EF4F6232A24F72320D4FBCE +:103E20002322C4FB232464FA232614FB232804FB47 +:103E3000232AC4FA232CD4FAEFE04FA693070500F7 +:103E4000032544F793B7170017170000130787E7F8 +:103E50002320F7006348A90293172500B387A70022 +:103E60009387D7FF130684F793053000232CF4F6CD +:103E7000EFE00F99032544F713051500232AA4F654 +:103E8000E35CA9FC832684F71306050093050D0067 +:103E900013850184EFE0CF9797170000938747E3DE +:103EA00003A50700EFE0CFBA03C70900930700049A +:103EB00063F2E74E130B1004930B30006F004001C8 +:103EC00083C70900130B1B00137BFB0F63E2670919 +:103ED0009305300413050B00EFE00F9A8327C4F716 +:103EE000E310F5FE9305C4F713050000EFE00FA201 +:103EF00083C7E40103A3040083A8440003A884004B +:103F000003A5C40083A5040103A6440183A684017C +:103F100003D7C401230FF4FA83C70900130B1B0056 +:103F2000232064FA232214FB232404FB2326A4FA6F +:103F30002328B4FA232AC4FA232CD4FA231EE4FA41 +:103F400023A05C01137BFB0F938B0A00E3F267F95C +:103F5000032B44F7032C84F7938A1A00338B6B03EB +:103F6000130544F7B34B8B03232A74F7EFE04FA8F4 +:103F7000E3925DE7F32700B017170000130747D35C +:103F800013050000130907002320F700EFE09FA8A6 +:103F900017170000130707D203270700832709001C +:103FA000B387E74017170000130747D02320F70017 +:103FB0006356F03E93071000171700001307C7CF92 +:103FC0002320F7001705000013058557EFE0CF9F6A +:103FD000170500001305C56AEFE00F9F83A50C00CD +:103FE000170500001305455917190000130949CE9C +:103FF000EFE08F9D930550001705000013058559CC +:10400000EFE08F9C971700009387C7CB83A507002D +:10401000170500001305C559330B8B41EFE0CF9A0C +:1040200093051000170500001305C556EFE0CF9962 +:104030009715000083C5D5C817050000130505595D +:10404000EFE08F9893051004170500001305C5597C +:10405000EFE08F9783C50900170500001305855A07 +:1040600097140000938404C4EFE00F969305200496 +:104070001705000013054557EFE00F9583A501864E +:10408000170500001305C559EFE00F949305700064 +:104090001705000013050550EFE00F939717000078 +:1040A0009387C7D083A5C765170500001305055979 +:1040B000EFE08F91170500001305055AEFE0CF9050 +:1040C000170500001305055CEFE00F90832709003A +:1040D000170500001305C55B83A50700EFE0CF8E31 +:1040E000170500001305855CEFE00F8E832709009C +:1040F000170500001305C55E83A54700EFE0CF8CD0 +:1041000093050000170500001305C548EFE0CF8BAD +:1041100083270900170500001305455E83A5870066 +:10412000EFE08F8A930520001705000013058546F0 +:10413000EFE08F8983270900170500001305C55D8F +:1041400083A5C700EFE04F88930510011705000015 +:1041500013054544EFE04F8783250900170500004C +:104160001305455D17190000130949B6938505012C +:10417000EFE08F85170500001305855DEFE0CF8424 +:104180001705000013054560EFE00F848327090041 +:10419000170500001305C54F83A50700EFE0CF8288 +:1041A000170500001305855FEFE00F8283270900E4 +:1041B000170500001305C55283A54700EFE0CF8027 +:1041C00093050000170500001305C53CEFD0DFFF85 +:1041D00083270900170500001305455283A58700B2 +:1041E000EFD09FFE93051000170500001305853AD8 +:1041F000EFD09FFD83270900170500001305C55167 +:1042000083A5C700EFD05FFC9305200117050000D0 +:1042100013054538EFD05FFB832509001705000023 +:104220001305455193850501EFD01FFA17050000CE +:1042300013050552EFD05FF9832544F717050000F9 +:104240001305C559EFD05FF893055000170500001E +:1042500013054534EFD05FF793173B00338B67416D +:10426000B3057B411705000013050559EFD0DFF5B5 +:104270009305D000170500001305C531EFD0DFF41A +:10428000832584F7170500001305C558EFD0DFF329 +:1042900093057000170500001305C52FEFD0DFF25E +:1042A0008325C4F71705000013058558EFD0DFF10B +:1042B000170500001305052E93051000EFD0DFF061 +:1042C000930504F81705000013054558EFD0DFEFFC +:1042D0001705000013054559EFD01FEF930504FAA9 +:1042E000170500001305C55BEFD01FEE1705000092 +:1042F0001305C55CEFD05FED1705000013054538C9 +:10430000EFD09FEC8326C4F6B7470F0093870724AE +:10431000B387F60217170000130747990327070012 +:10432000170500001305055DB345D702B3C7E702C3 +:1043300017170000232AB79623A0F400EFE01F848C +:1043400083A50400170500001305055EEFE01F8339 +:10435000130104F68320C109032481098324410940 +:10436000032901098329C108032A8108832A4108F6 +:10437000032B0108832BC107032C8107832C4107E2 +:10438000032D0107832DC106130500001301010A47 +:1043900067800000930B30006FF09FBB1705000093 +:1043A00013058516EFE08FFD0327C4F617050000FF +:1043B0001305052D93172700B387E7009397170080 +:1043C0002326F4F6EFE08FFB971700009387C78E44 +:1043D00083A70700E384079C6FF0DFBE170500008A +:1043E0001305450BEFD05FDE6FF05F95130101FF02 +:1043F000170500001305455E23261100EFE04FED81 +:104400008320C1001305F0FF130101016780000044 +:104410004448525953544F4E452050524F475241F1 +:104420004D2C20534F4D4520535452494E470000C8 +:10443000432C2056657273696F6E20322E32000055 +:104440004468727973746F6E652042656E63686D3F +:1044500061726B2C2056657273696F6E2025730A2A +:104460000000000050726F6772616D20636F6D70A5 +:10447000696C656420776974682027726567697361 +:1044800074657227206174747269627574650A00BC +:1044900050726F6772616D20636F6D70696C6564D7 +:1044A00020776974686F7574202772656769737403 +:1044B000657227206174747269627574650A000000 +:1044C00072646379636C6528290000005573696E16 +:1044D000672025732C20485A3D25640A00000000FF +:1044E000547279696E672025642072756E7320742A +:1044F00068726F756768204468727973746F6E654F +:104500003A0A00004D656173757265642074696DC7 +:104510006520746F6F20736D616C6C20746F206FF9 +:10452000627461696E206D65616E696E6766756C37 +:1045300020726573756C74730A00000046696E61C1 +:104540006C2076616C756573206F662074686520D9 +:104550007661726961626C65732075736564206948 +:104560006E207468652062656E63686D61726B3A77 +:104570000A000000496E745F476C6F623A20202089 +:1045800020202020202020202025640A0000000078 +:10459000202020202020202073686F756C6420620A +:1045A000653A20202025640A00000000426F6F6CED +:1045B0005F476C6F623A202020202020202020209E +:1045C0002025640A0000000043685F315F476C6F7C +:1045D000623A202020202020202020202025630A4D +:1045E00000000000202020202020202073686F750C +:1045F0006C642062653A20202025630A00000000D8 +:1046000043685F325F476C6F623A20202020202091 +:10461000202020202025630A000000004172725FE4 +:10462000315F476C6F625B385D3A2020202020208C +:104630002025640A000000004172725F325F476CFF +:104640006F625B385D5B375D3A2020202025640A6D +:1046500000000000202020202020202073686F759B +:104660006C642062653A2020204E756D6265725F31 +:104670004F665F52756E73202B2031300A000000A8 +:104680005074725F476C6F622D3E0A002020507498 +:10469000725F436F6D703A20202020202020202060 +:1046A0002025640A00000000202020202020202057 +:1046B00073686F756C642062653A20202028696DEC +:1046C000706C656D656E746174696F6E2D64657074 +:1046D000656E64656E74290A00000000202044693C +:1046E0007363723A202020202020202020202020C8 +:1046F0002025640A000000002020456E756D5F4390 +:104700006F6D703A20202020202020202025640A70 +:10471000000000002020496E745F436F6D703A20E6 +:1047200020202020202020202025640A00000000D6 +:1047300020205374725F436F6D703A202020202038 +:10474000202020202025730A0000000020202020A7 +:104750002020202073686F756C642062653A2020E9 +:10476000204448525953544F4E452050524F4752BF +:10477000414D2C20534F4D4520535452494E470A2A +:10478000000000004E6578745F5074725F476C6F74 +:10479000622D3E0A00000000202020202020202042 +:1047A00073686F756C642062653A20202028696DFB +:1047B000706C656D656E746174696F6E2D64657083 +:1047C000656E64656E74292C2073616D652061735C +:1047D0002061626F76650A00496E745F315F4C6FCD +:1047E000633A202020202020202020202025640A39 +:1047F00000000000496E745F325F4C6F633A202006 +:1048000020202020202020202025640A00000000F5 +:10481000496E745F335F4C6F633A20202020202064 +:10482000202020202025640A00000000456E756DC0 +:104830005F4C6F633A202020202020202020202061 +:104840002025640A000000005374725F315F4C6FD2 +:10485000633A202020202020202020202025730AB9 +:1048600000000000202020202020202073686F7589 +:104870006C642062653A2020204448525953544FBA +:104880004E452050524F4752414D2C203127535412 +:1048900020535452494E470A000000005374725F7F +:1048A000325F4C6F633A20202020202020202020DF +:1048B0002025730A00000000202020202020202036 +:1048C00073686F756C642062653A202020444852FA +:1048D0005953544F4E452050524F4752414D2C2072 +:1048E00032274E4420535452494E470A00000000DC +:1048F0004D6963726F7365636F6E647320666F7268 +:10490000206F6E652072756E207468726F756768AF +:10491000204468727973746F6E653A20256C640A5E +:10492000000000004468727973746F6E65732070C4 +:104930006572205365636F6E643A2020202020202A +:104940002020202020202020202020202020202067 +:10495000256C640A000000004448525953544F4EDD +:10496000452050524F4752414D2C2031275354205F +:10497000535452494E4700004448525953544F4EE5 +:10498000452050524F4752414D2C2032274E442053 +:10499000535452494E4700004448525953544F4EC5 +:1049A000452050524F4752414D2C2033275244202E +:1049B000535452494E470000286E756C6C29000014 +:1049C0006D6379636C6500006D696E7374726574F4 +:1049D00000000000496D706C656D656E74206D613E +:1049E000696E28292C20666F6F210A002573203DEF +:0549F0002025640A000F +:1049F80088DBFFFF24DBFFFF94DBFFFF24DBFFFFE7 +:104A080024DBFFFF24DBFFFF24DBFFFFA4DBFFFF2A +:104A180024DBFFFF24DBFFFF08DBFFFFD4DDFFFF04 +:104A280024DBFFFF08DBFFFF38DBFFFF38DBFFFF7E +:104A380038DBFFFF38DBFFFF38DBFFFF38DBFFFF2A +:104A480038DBFFFF38DBFFFF38DBFFFF24DBFFFF2E +:104A580024DBFFFF24DBFFFF24DBFFFF24DBFFFF5A +:104A680024DBFFFF24DBFFFF24DBFFFF24DBFFFF4A +:104A780024DBFFFF24DBFFFF24DBFFFF24DBFFFF3A +:104A880024DBFFFF24DBFFFF24DBFFFF24DBFFFF2A +:104A980024DBFFFF24DBFFFF24DBFFFF24DBFFFF1A +:104AA80024DBFFFF24DBFFFF24DBFFFF24DBFFFF0A +:104AB80024DBFFFF24DBFFFF24DBFFFF24DBFFFFFA +:104AC80024DBFFFF24DBFFFF24DBFFFF24DBFFFFEA +:104AD80024DBFFFF24DBFFFF24DBFFFF24DBFFFFDA +:104AE80024DBFFFF24DBFFFF24DBFFFF24DBFFFFCA +:104AF800ECDDFFFFD4DCFFFF24DBFFFF24DBFFFF3F +:104B080024DBFFFF24DBFFFF24DBFFFF24DBFFFFA9 +:104B180024DBFFFF08DEFFFF24DBFFFF24DBFFFFB2 +:104B280078DEFFFFC0DBFFFF24DBFFFF24DBFFFF96 +:104B380024DDFFFF24DBFFFF84DEFFFF24DBFFFF14 +:104B480024DBFFFF08DDFFFF00010202030303036C +:104B58000404040404040404050505050505050505 +:104B680005050505050505050606060606060606E5 +:104B780006060606060606060606060606060606CD +:104B880006060606060606060707070707070707B5 +:104B9800070707070707070707070707070707079D +:104BA800070707070707070707070707070707078D +:104BB800070707070707070707070707070707077D +:104BC8000707070707070707080808080808080865 +:104BD800080808080808080808080808080808084D +:104BE800080808080808080808080808080808083D +:104BF800080808080808080808080808080808082D +:104C0800080808080808080808080808080808081C +:104C1800080808080808080808080808080808080C +:104C280008080808080808080808080808080808FC +:104C380008080808080808080808080808080808EC +:084C4800080808080808080824 +:104C50001000000000000000037A5200017C0101F6 +:104C60001B0D02001000000018000000D0E2FFFF42 +:104C70005004000000000000100000002C000000A4 +:104C80000CE7FFFF340400000000000010000000EB +:104C9000400000002CEBFFFF1004000000000000AB +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/median.riscv.hex b/benchmarks/riscv_tests/benchmarks/median.riscv.hex new file mode 100644 index 00000000..3821a960 --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/median.riscv.hex @@ -0,0 +1,688 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A000970200009382020473905230975100002F +:1000B0009381C1FA13827186137202FC732540F199 +:1000C000930510006370B5001301150013111101A1 +:1000D00033014100131615013302C2006F2090084E +:1000E000130101EF232211002324210023263100D4 +:1000F00023284100232A5100232C6100232E710064 +:1001000023208102232291022324A1022326B1026B +:100110002328C102232AD102232CE102232EF1023B +:10012000232001052322110523242105232631053F +:1001300023284105232A5105232C6105232E71050F +:1001400023208107232291072324A1072326B10717 +:100150002328C107232AD107232CE107232EF107E7 +:1001600073252034F325103413060100EF20805846 +:1001700073101534B72200009382028073A00230FE +:1001800083204100032181008321C100032201015A +:1001900083224101032381018323C101032401023E +:1001A00083244102032581028325C1020326010322 +:1001B00083264103032781038327C1030328010406 +:1001C00083284104032981048329C104032A0105EA +:1001D000832A4105032B8105832BC105032C0106CE +:1001E000832C4106032D8106832DC106032E0107B2 +:1001F000832E4107032F8107832FC10713010111AC +:040200007300203037 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000931725009387C7FF3307F60023200600A8 +:102010002320070013072000635CA7023385B70065 +:10202000130646001305C5FF03A7050083A7450057 +:1020300083A685006350F70263C6D70263D0E60229 +:102040002320E6009385450013064600E39EA5FC89 +:1020500067800000E346D7FE63C6F6002320D60063 +:102060006FF05FFE2320F6006FF0DFFD130101EB40 +:1020700023229113B70C00409387FCFF2324811483 +:102080002322911423202115232A511323261114CE +:10209000232E3113232C411323286113232671137C +:1020A000232481132320A113232EB111130905002A +:1020B00093840500130406002324D100930A5002E0 +:1020C0002326F1006F004001630405069385040098 +:1020D00013041400E700090003450400E31655FF4C +:1020E00083461400930D140013870D00930B000218 +:1020F0009309F0FF130AF0FF930500001306500543 +:10210000130590009387D6FD93F7F70F130417007C +:10211000636CF606172800001308C8819397270000 +:10212000B387070183A70700B3870701678007000C +:102130008320C1140324811483244114032901142E +:102140008329C113032A8113832A4113032B01130B +:10215000832BC112032C8112832C4112032D0112F7 +:10216000832DC1111301011567800000938B0600B8 +:102170008346170013070400130417009387D6FD46 +:1021800093F7F70FE378F6F89385040013055002F0 +:10219000E700090013840D006FF01FF403481700D7 +:1021A000938906FD13070400930708FD93060800B2 +:1021B0006366F50293972900B38937011307170067 +:1021C00093991900B389090103480700938909FD10 +:1021D000930708FD93060800E37EF5FCE3540AF23A +:1021E000138A09009309F0FF6FF0DFF183461700AF +:1021F000130704006FF01FF19385040013055002CC +:10220000E70009006FF05FED832781008346170028 +:102210001307040083A90700938747002324F100D4 +:102220006FF0DFFB1305000393850400E70009004E +:102230009385040013058007E700090083278100C8 +:10224000130C00012322010013874700832781001C +:10225000930D000083A907002324E10013060C005E +:10226000930600001385090093850D00EF10C01B35 +:102270002328A10093070000930C05006380B72377 +:10228000130B4101130D100013060C009306000000 +:102290001385090093850D00EF00D05513060C003F +:1022A0009306000093090500938D0500EF10C017F9 +:1022B000832741002320AB002320A101930C0500BC +:1022C000130B4B00130D1D00E390B7FDE3FE89FBDC +:1022D000635C4D01130AFAFF9385040013850B001C +:1022E000E7000900E3484DFF832701000327C100F1 +:1022F00093099000338AE700131A2A00930701011B +:10230000338A47016F00C000832C0A00130ACAFFFA +:10231000B3B79901B307F04093F7770293870703A8 +:102320003385970193850400E70009009307C100F6 +:10233000E39C47FD6FF05FDA9307100063CCB7169C +:102340000327810093074700638605188329070048 +:102350002324F10013DCF941634E0C18930D0C009B +:1023600023220100130CA0006FF05FEF130C00019B +:10237000232201009307100063C2B7108327810056 +:10238000138747006FF09FEC8327810083AD070020 +:10239000138B470063840D18635840099307D002DC +:1023A000639EFB0403C50D0063080502930BF0FF59 +:1023B00063C609009389F9FF638E79019385040050 +:1023C000938D1D00E700090003C50D00130AFAFFF5 +:1023D000E31005FE635C4001130AFAFF93850400D5 +:1023E00013050002E7000900E3180AFE2324610137 +:1023F0006FF09FCE971D0000938DCD4F93870D00FA +:10240000B3863D01639809006F004013938717005E +:102410006386D70003C70700E31A07FEB387B741F7 +:10242000330AFA40634C401103C50D00E30005FC7C +:10243000930BF0FF6FF0DFF79347FAFF93D7F74165 +:1024400083461700337AFA00130704006FF09FCB1E +:10245000832781009385040003A50700138B4700A1 +:10246000E7000900232461016FF01FC783461700AE +:1024700093851500130704006FF0DFC883278100E0 +:10248000138B7700137B8BFF93078B0083290B0043 +:10249000832D4B002324F1006FF05FDCE3F289DF32 +:1024A0009307100023200100130D1000E3C447E33D +:1024B0006FF09FE383278100138B7700137B8BFFE3 +:1024C00093078B0083290B00032C4B002324F1007E +:1024D0006FF09FE8032781006FF05FE7130C800027 +:1024E000232201006FF01FE9130CA000232201003A +:1024F0006FF05FE8938504001305D002E700090040 +:1025000033373001B3078041B3093041B38DE74021 +:10251000130CA000232201006FF05FD4635640012A +:102520009307D002E398FBEC971D0000938D8D3C40 +:1025300013058002930BF0FF6FF09FE7130AFAFF79 +:102540009385040013850B00E7000900E30E0AECF5 +:10255000130AFAFF9385040013850B00E7000900B6 +:10256000E31E0AFC6FF05FEC83A705002380A70041 +:1025700083A705009387170023A0F500678000005C +:10258000130101F81308F103137808FC1307000482 +:102590002320E800930700002322F800130710000F +:1025A0002324E800930700002326F8002328A8002E +:1025B000232AB800232CC800232ED8000F00F00FC8 +:1025C00097F6FFFF938606A423A006019307000059 +:1025D00023A2F60097F6FFFF9386C6A603A7060080 +:1025E00083A746003367F700E30A07FE13070000DE +:1025F00023A0E6009307000023A2F6000F00F00FCF +:1026000003250800832548001301010867800000A6 +:10261000130101FF23248100832502049307020094 +:1026200023261100B387B700138615002380A70067 +:102630002320C2049307A0006300F502930700045F +:10264000630CF6008320C100032481001305000001 +:1026500013010101678000009356F6411305020043 +:1026600093050000EFF0DFF18320C1002320020476 +:10267000032481001305000013010101678000009D +:10268000732700B0972700009387C71D631E0500BE +:1026900083A607001716000013064626972500009C +:1026A00023AEC51A3307D74023A0E700732720B015 +:1026B000631E050083A64700171600001306862434 +:1026C0009725000023AEC5183307D74023A2E700A3 +:1026D000678000009316150013E7160097F6FFFFBA +:1026E000938646929307000023A0E60023A2F600FB +:1026F0006F0000003716000097F7FFFF9387879061 +:10270000130636A79306000023A0C70023A2D70014 +:102710006F000000130101FF23261100EFF09FFB63 +:1027200097F7FFFF9387078E1306D01093060000DC +:1027300023A0C70023A2D7006F0000008347050035 +:10274000638207021306050083471600130616006E +:10275000E39C07FE3306A6409306000093050000A5 +:102760006FF01FE2130600009306000093050000BF +:102770006FF01FE16310050067800000130101FD89 +:1027800013070500232611021305C1001306B1012A +:10279000130890006F008000138607009377F700FE +:1027A000B337F800B307F04093F777029376F7005A +:1027B00093870703B387F6002300F6009396C501BD +:1027C000135747009307F6FF33E7E60093D545001C +:1027D000E314C5FC230E0100EFF05FF68320C10275 +:1027E0001301010367800000130101FC1303410280 +:1027F000130E05002322B1022324C1022326D10295 +:1028000017050000130505E19306030013060E00EB +:1028100093050000232E11002328E102232AF10250 +:10282000232C0103232E110323266100EFF01F84C4 +:102830008320C1011305000013010104678000001B +:10284000130101FB13038103232481022326A1002A +:10285000232CC102232ED102130405001386050088 +:1028600017050000130585D09305C10093060300EA +:10287000232611022322F1042320E104232401054D +:1028800023261105232E6100EFF04FFE8327C100A0 +:10289000238007000325C1008320C1023305854042 +:1028A000032481021301010567800000B3E7C5001E +:1028B000B367F50093F73700B306C50063840702DA +:1028C0003386C50093070500637ED50203C7050064 +:1028D0009385150093871700A38FE7FEE318B6FED4 +:1028E00067800000E37ED5FE9307050003A705007F +:1028F000938747009385450023AEE7FEE3E8D7FEC4 +:102900006780000067800000B367C50093F7370059 +:102910003306C5006380070293F5F50F93070500A2 +:102920006370C50493871700A38FB7FEE31CF6FE00 +:102930006780000093F5F50F1397850033E7E500F6 +:10294000931707013367F700E374C5FE930705008B +:102950009387470023AEE7FEE3ECC7FE67800000E5 +:1029600067800000130101F697270000938707F0A6 +:1029700023244109172A0000130A4AEF23263109AC +:10298000B309FA40232A910823282109930405005A +:1029900013890500130502009385070013860900BB +:1029A000232E1108232C810823225109930A0200A7 +:1029B000EFF0DFEF1386C186330646419305000032 +:1029C00033853A01EFF05FF49305090013850400A5 +:1029D000EFF05FDA9305000013050000EF00D0650B +:1029E00017290000130909E8832609001304F103DD +:1029F000137404FC930405006394060483264900C1 +:102A00006396060013850400EFF0DFCC1309040081 +:102A100097290000938989E403A64900130509005A +:102A200097150000938545F0EFF09FE13309A90069 +:102A3000E30A24FD13050400EFF05FD06FF09FFC64 +:102A400097290000938989E103A6090097150000E2 +:102A5000938585ED13050400EFF09FDE8326490082 +:102A60003309A400E38606FC6FF01FFB83470500D3 +:102A7000638E07009307050003C7170093871700AD +:102A8000E31C07FE3385A7406780000013050000A4 +:102A90006780000013060500B306B6001385050025 +:102AA00093070600639805006F00C0019387170025 +:102AB0006388F60003C70700E31A07FE3385C740A3 +:102AC000678000006780000083470500938515003C +:102AD0001305150003C7F5FF63880700E386E7FECB +:102AE0003385E74067800000930700006FF05FFFC9 +:102AF0009307050003C7050093871700938515000A +:102B0000A38FE7FEE31807FE678000000347050078 +:102B100093060002930705006318D70003C7170048 +:102B200093871700E30CD7FE9306D0026300D70605 +:102B30009306B0026300D70483C607009305000024 +:102B4000638206041305000093871700138606FDB1 +:102B50001317250083C607003305A70013151500BA +:102B60003305A600E39206FE638005023305A0400C +:102B70006780000083C61700930500009387170045 +:102B8000E39206FC130500006780000083C617006F +:102B90009305100093871700E39606FA13050000CB +:102BA0006FF09FFE138F05001308000063DC050023 +:102BB000B337A000B305B040338FF5403305A040D4 +:102BC0001308F0FF63DA0600B335C0003307D040C6 +:102BD000B306B7403306C0409308060013870600CB +:102BE0009307050093050F0063940624B746008001 +:102BF000938686A86376CF0E370301006378660C50 +:102C00001303F00F6374C300130780003353E6000F +:102C1000B386660003CE0600330EEE0013070002F3 +:102C20003303C741630CC701B3156F00335EC501A1 +:102C3000B3186600B365BE00B317650013D608016C +:102C4000B3F6C502139508011355050113D7070103 +:102C5000B3D5C5029396060133E7E600B305B50286 +:102C6000637AB70033071701636617016374B7000F +:102C7000330717013307B740B376C70293970701AD +:102C800093D707013357C7023307E50213950601AF +:102C9000B367F50063FAE700B387170163E617012E +:102CA00063F4E700B3871701B387E74033D56700C4 +:102CB00093050000630A0800B337A000B306B040D4 +:102CC000B385F6403305A04067800000370300015C +:102CD00013070001E36C66F2130780016FF01FF326 +:102CE0006316060093081000B3D8E8023706010007 +:102CF00063F6C8121306F00F637416011307800001 +:102D000033D6E800B386C60003CE0600B3051F41E4 +:102D1000330EEE00130700023303C7416306C709F1 +:102D2000B3986800B35ECF01B3176500335EC50189 +:102D300013D50801B3156F00336EBE0093950801DB +:102D400093D5050113560E01B3D6AE0233F7AE028A +:102D5000B386D502131707013367C700637AD7001C +:102D600033071701636617016374D7003307170130 +:102D70003306D7403377A602131E0E01135E0E01F1 +:102D80003356A602131707013386C502B365C70180 +:102D900063FAC500B385150163E6150163F4C50048 +:102DA000B3851501B385C54093D6080133F7D50225 +:102DB000139508011355050113D60701B3D5D502A4 +:102DC000131707013367C700B305B502637AB7006D +:102DD00033071701636617016374B70033071701E0 +:102DE000B305B74033F7D5029397070193D707018F +:102DF000B3D5D502B305B50213150701B367F500C6 +:102E000063FAB700B387170163E6170163F4B700ED +:102E1000B3871701B387B7406FF05FE9370600014A +:102E200013070001E3EEC8EC130780016FF05FEDBC +:102E3000E362DFE83707010063FAE604930EF00F60 +:102E400033B7DE0013173700B748008033D3E600EE +:102E5000938888A8B388680083CE0800B38EEE00FC +:102E600013070002330ED741631CD70363E4E60166 +:102E7000636AC500B307C540B305DF403335F500CD +:102E8000B385A540138507006FF0DFE2B7080001A6 +:102E900013070001E3EA16FB130780016FF0DFFA66 +:102EA0003357D601B396C601B36FD700B357DF01CE +:102EB00013D70F0133F3E702B315CF01B356D50192 +:102EC000B3E6B60093950F0193D5050193D806019B +:102ED0003316C6013315C501B3D7E7021313030137 +:102EE000B3681301338FF5021383070063FEE80113 +:102EF000B388F8011383F7FF63E8F80163F6E8018C +:102F00001383E7FFB388F801B388E84133FFE80291 +:102F10009396060193D60601B3D8E802131F0F015A +:102F2000336FDF00B385150393870800637EBF000E +:102F3000330FFF019387F8FF6368FF016376BF00DB +:102F40009387E8FF330FFF01B305BF40131303015D +:102F5000370F01003363F3009307FFFFB378F300EB +:102F60009356060113530301B377F6003387F80233 +:102F7000B307F302B388D8023303D302B388F8004F +:102F800093560701B386160163F4F6003303E30199 +:102F900093D7060133836700B70701009387F7FFD4 +:102FA000B3F6F600939606013377F7003387E60011 +:102FB00063E66500639E6500637CE5003306C740F9 +:102FC0003337C7003307F7013303E3401307060025 +:102FD0003307E5403335E500B3856540B385A5404B +:102FE000B397D5013357C70133E5E700B3D5C50122 +:102FF0006FF05FCC93080500938705001308060067 +:10300000138506001383080063940628B7460080E2 +:10301000938686A863F6C50E370701006378E60C31 +:103020001307F00F3337C700131737003355E60087 +:10303000B386A60083C60600130500023387E600A8 +:10304000B306E540630CE500B397D70033D7E8003B +:103050003318D600B365F7003393D80093580801AE +:10306000B3D71503131608011356060113570301AE +:10307000B3F6150313850700B305F6029396060110 +:1030800033E7E600637EB700330707011385F7FFD8 +:10309000636807016376B7001385E7FF330707010D +:1030A0003307B740B3771703131303011353030117 +:1030B000335717039397070133E36700B306E6021C +:1030C00013060700637CD300330368001306F7FF81 +:1030D000636603016374D3001306E7FF131505014C +:1030E0003365C500930500006F00400E37050001F1 +:1030F00013070001E36CA6F2130780016FF01FF3C2 +:1031000063160600130710003358C7023707010083 +:103110006370E80C1307F00F637407011305800058 +:103120003357A800B386E60003C706001306000263 +:103130003307A700B306E6406316E60AB3870741E4 +:103140009305100093580801131608011356060141 +:1031500013570301B3F61703B3D71703939606016A +:1031600033E7E600330EF60213850700637EC701DE +:10317000330707011385F7FF636807016376C7010B +:103180001385E7FF330707013307C741B3771703F9 +:1031900013130301135303013357170393970701C5 +:1031A00033E36700B306E60213060700637CD3002F +:1031B000330368001306F7FF636603016374D300EB +:1031C0001306E7FF131505013365C500678000008E +:1031D0003707000113050001E364E8F413058001DB +:1031E0006FF01FF43318D800B3D5E7003393D8003D +:1031F000B397D70033D7E800935808013366F70038 +:1032000033F715039317080193D7070113550601E8 +:10321000B3D51503131707013367A700B386B702A9 +:1032200013850500637ED700330707011385F5FF7B +:10323000636807016376D7001385E5FF330707014D +:10324000B306D74033F716031316060113560601CB +:10325000B3D6160313170701B388D702B367C700A5 +:103260001387060063FE1701B38707011387F6FF74 +:1032700063E8070163F617011387E6FFB3870701C9 +:1032800093150501B3871741B3E5E5006FF09FEB98 +:1032900063E6D5183707010063F4E6041307F00F5F +:1032A000B335D700939535003747008033D5B60046 +:1032B000130787A83307A700034707001305000279 +:1032C0003307B700B305E5406316E50213051000A8 +:1032D000E3EEF6EE33B5C800134515006FF01FEFAF +:1032E0003707000193050001E3E0E6FC9305800148 +:1032F0006FF09FFB3353E600B396B6003363D30001 +:1033000013550301B31EB60033D6E700B376A60209 +:10331000B397B70033D7E8003368F700931703017A +:1033200093D70701135708013356A6029396060157 +:1033300033E7E600338FC702130E0600637EE70112 +:1033400033076700130EF6FF636867006376E701D3 +:10335000130EE6FF330767003307E741B376A70292 +:103360003357A702939606013386E70293170801A5 +:1033700093D70701B3E7F6009306070063FEC70083 +:10338000B38767009306F7FF63E8670063F6C7003B +:103390009306E7FFB387670013150E01370E010090 +:1033A0003365D5009306FEFF3378D500B387C74059 +:1033B000B3F6DE001356050193DE0E013303D80287 +:1033C000B306D602135703013308D8033308D800D5 +:1033D000330707013306D6036374D7003306C601EB +:1033E000935607013386C60063E6C702E39CC7CE47 +:1033F000B70701009387F7FF3377F700131707012B +:103400003373F300B398B8003307670093050000E7 +:10341000E3FEE8DA1305F5FF6FF0DFCC930500005B +:10342000130500006FF09FDA93080600138706006B +:103430009307050013880500639C0622B7460080A9 +:10344000938686A863FCC50C37030100637E660A79 +:103450001303F00F6374C300130780003353E600B7 +:10346000B386660003CE0600330EEE00130700029B +:103470003303C741630CC701B3956500335EC501D3 +:10348000B31866003368BE00B317650013D6080191 +:103490003377C802139508011355050193D6070128 +:1034A0003358C80213170701B366D7003308050362 +:1034B00063FA0601B386160163E6160163F406019A +:1034C000B3861601B386064133F7C6029397070108 +:1034D00093D70701B3D6C602B306D5021315070169 +:1034E000B367F50063FAD700B387170163E61701E6 +:1034F00063F4D700B3871701B387D74033D567008C +:1035000093050000678000003703000113070001E6 +:10351000E36666F4130780016FF05FF4631606003C +:1035200013061000B35816033706010063F2C80AE9 +:103530001306F00F637416011307800033D6E800FA +:10354000B386C60003CE0600330EEE00130700025A +:103550003303C7416318C709B385154113D7080161 +:10356000139508011355050113D60701B3F6E502BB +:10357000B3D5E50293960601B3E6C600B305B502DE +:1035800063FAB600B386160163E6160163F4B6006B +:10359000B3861601B385B640B3F6E50293970701EB +:1035A00093D70701B3D5E502B305B502139506011C +:1035B000B367F50063FAB700B387170163E6170135 +:1035C00063F4B700B3871701B387B7406FF01FF3F9 +:1035D0003706000113070001E3E2C8F61307800174 +:1035E0006FF0DFF5B398680033D7C501B3176500F6 +:1035F000335EC50113D50801B376A702B395650004 +:10360000336EBE009395080193D5050113560E0144 +:103610003357A70293960601B3E6C6003387E50247 +:1036200063FAE600B386160163E6160163F4E6006A +:10363000B38616013386E640B376A602131E0E014A +:10364000135E0E013356A602939606013386C50219 +:10365000B3E5C60163FAC500B385150163E615013C +:1036600063F4C500B3851501B385C5406FF01FEF46 +:10367000E3EAD5E83707010063FCE604130EF00F18 +:103680003337DE0013173700B748008033D3E60026 +:10369000938888A8B388680003CE0800330EEE0034 +:1036A000130700023303C741631EC70363E4B60078 +:1036B000636AC500B307C540B385D5403335F5000F +:1036C0003388A54013850700930508006FF09FE33A +:1036D000B708000113070001E3E816FB1307800198 +:1036E0006FF09FFA3357C601B3966600336FD70069 +:1036F000B3D7C50113570F01B3F8E702B3956500BF +:103700003358C5013368B80093150F0193D50501EF +:10371000935608013316660033156500B3D7E702E8 +:1037200093980801B3E6D800B38EF502938807009A +:1037300063FED601B386E6019388F7FF63E8E601EE +:1037400063F6D6019388E7FFB386E601B386D641D8 +:10375000B3FEE6021318080113580801B3D6E602B7 +:10376000939E0E01B3EE0E01B385D502938706003A +:1037700063FEBE00B38EEE019387F6FF63E8EE01B1 +:1037800063F6BE009387E6FFB38EEE01B385BE40BD +:1037900093980801B70E0100B3E8F8009387FEFF85 +:1037A00033F8F8009356060193D80801B377F60072 +:1037B0003307F802B387F8023308D802B388D80277 +:1037C0003308F80093560701B386060163F4F60048 +:1037D000B388D801B70701009387F7FF13D8060114 +:1037E000B3F6F600939606013377F700B308180195 +:1037F0003387E60063E61501639E1501637CE500EF +:103800003306C7403337C7003307E701B388E840C2 +:10381000130706003307E5403335E500B38515414E +:10382000B385A540B397C5013357670033E5E7007B +:08383000B3D565006FF01FCD58 +:103838001301019B970500009385C5391306010004 +:103848001305001923261164EFE00FFB1305100080 +:10385800EFE09FE213060100970500009385853786 +:1038680013050019EFE04FF913050000EFE0DFE062 +:1038780093070100171700001307C79913050000E5 +:103888009306001983A807000328070083A54700AB +:10389800032647006394080313052500639AC500AF +:1038A8009387870013078700E31ED5FC13050000E4 +:1038B8008320C164130101656780000013051500AA +:1038C8006FF01FFF130101FF170500001305C50363 +:1038D80023261100EFE01FE68320C1001305F0FF47 +:0838E8001301010167800000DB +:1038F000286E756C6C2900006D6379636C6500003F +:103900006D696E737472657400000000496D706CAF +:10391000656D656E74206D61696E28292C20666F57 +:0D3920006F210A002573203D2025640A0058 +:10393000BCE8FFFF58E8FFFFC8E8FFFF58E8FFFFBB +:1039400058E8FFFF58E8FFFF58E8FFFFD8E8FFFFFF +:1039500058E8FFFF58E8FFFF3CE8FFFF08EBFFFFD8 +:1039600058E8FFFF3CE8FFFF6CE8FFFF6CE8FFFF53 +:103970006CE8FFFF6CE8FFFF6CE8FFFF6CE8FFFFFF +:103980006CE8FFFF6CE8FFFF6CE8FFFF58E8FFFF03 +:1039900058E8FFFF58E8FFFF58E8FFFF58E8FFFF2F +:1039A00058E8FFFF58E8FFFF58E8FFFF58E8FFFF1F +:1039B00058E8FFFF58E8FFFF58E8FFFF58E8FFFF0F +:1039C00058E8FFFF58E8FFFF58E8FFFF58E8FFFFFF +:1039D00058E8FFFF58E8FFFF58E8FFFF58E8FFFFEF +:1039E00058E8FFFF58E8FFFF58E8FFFF58E8FFFFDF +:1039F00058E8FFFF58E8FFFF58E8FFFF58E8FFFFCF +:103A000058E8FFFF58E8FFFF58E8FFFF58E8FFFFBE +:103A100058E8FFFF58E8FFFF58E8FFFF58E8FFFFAE +:103A200058E8FFFF58E8FFFF58E8FFFF58E8FFFF9E +:103A300020EBFFFF08EAFFFF58E8FFFF58E8FFFF11 +:103A400058E8FFFF58E8FFFF58E8FFFF58E8FFFF7E +:103A500058E8FFFF3CEBFFFF58E8FFFF58E8FFFF87 +:103A6000ACEBFFFFF4E8FFFF58E8FFFF58E8FFFF6B +:103A700058EAFFFF58E8FFFFB8EBFFFF58E8FFFFE9 +:103A800058E8FFFF3CEAFFFF0001020203030303C3 +:103A900004040404040404040505050505050505DE +:103AA00005050505050505050606060606060606BE +:103AB00006060606060606060606060606060606A6 +:103AC000060606060606060607070707070707078E +:103AD0000707070707070707070707070707070776 +:103AE0000707070707070707070707070707070766 +:103AF0000707070707070707070707070707070756 +:103B0000070707070707070708080808080808083D +:103B10000808080808080808080808080808080825 +:103B20000808080808080808080808080808080815 +:103B30000808080808080808080808080808080805 +:103B400008080808080808080808080808080808F5 +:103B500008080808080808080808080808080808E5 +:103B600008080808080808080808080808080808D5 +:103B700008080808080808080808080808080808C5 +:083B80000808080808080808FD +:103B88001000000000000000037A5200017C0101CF +:103B98001B0D0200100000001800000000F0FFFFDD +:103BA8005004000000000000100000002C0000007D +:103BB8003CF4FFFF34040000000000001000000087 +:103BC800400000005CF8FFFF100400000000000047 +:103BD80029000000C6010000410300004F01000059 +:103BE8003402000001000000BB000000DD030000FB +:103BF800ED0200006D0100005E0100003C020000C3 +:103C08008400000040000000B50300009900000097 +:103C180048020000D8000000250300008C000000C6 +:103C28006D020000D2000000060000003C02000007 +:103C3800A3030000530100007A03000051020000B2 +:103C48008801000082030000B6020000E4000000C2 +:103C5800C10300000C0000006E00000073030000A8 +:103C680074000000EE020000280100008602000037 +:103C7800AA010000F40100003A010000B4010000AC +:103C880093020000BD020000060300002C030000A0 +:103C98003F010000D5030000A602000096000000C6 +:103CA8006B030000B8020000780100003402000035 +:103CB800DA01000010010000AA0300000201000060 +:103CC8001B0200008702000039020000FD0100000D +:103CD800CB0000005800000018010000BF020000DF +:103CE800F70200009D0200005E020000770100005C +:103CF800FF0100002702000091020000A803000055 +:103D0800C30000005002000051000000390200000A +:103D18000B010000B8030000E500000020030000CC +:103D28005101000048020000B003000083020000B7 +:103D38008603000070010000F1000000E9010000A6 +:103D480091030000480100003A0300003901000017 +:103D5800A503000050020000D90300008401000000 +:103D6800C30000001F020000C00300008902000019 +:103D780036020000D30300005E010000E5030000E6 +:103D8800890200002E030000910200004F0000008D +:103D9800B5000000D00000006F000000E60300003E +:103DA8005B03000075020000410000004F030000A3 +:103DB80020010000C00200005D010000E5030000D2 +:103DC8008D000000FD00000089030000CB02000008 +:103DD80076030000AE010000080100009F0100000A +:103DE800400200001A020000D3030000BC020000D9 +:103DF800F902000004000000F1000000EE010000DC +:103E0800DE01000064000000F30100006003000010 +:103E180093010000B5020000DE000000A0010000D0 +:103E2800BC01000028010000D10200001D010000B3 +:103E3800A40200006C0200003D0100004E000000DA +:103E4800E00000005F010000A90300001C02000060 +:103E5800200100008602000077000000A900000091 +:103E6800670200000F0200005E020000210100004E +:103E7800850100001C0300005F0100002103000011 +:103E8800C7010000D002000016010000F602000081 +:103E98006F010000E9020000660100005C000000FC +:103EA80048020000DD0300003E0000000F01000092 +:103EB800D90300005503000093010000140300001B +:103EC8005A0100001302000005020000DE00000095 +:103ED8002F020000CD0100008C030000F10000005B +:103EE8000703000066010000FF0000004C0100000D +:103EF8000A030000AC02000056020000E4020000C1 +:103F08008F000000BE010000210000003701000002 +:103F18007D000000E7020000AD0300002D02000054 +:103F2800A5030000DF0100001F0300002D020000B0 +:103F3800290200009D030000AF0100001C030000DF +:103F48008802000065010000B80300007B03000040 +:103F58001F0100009A020000130000000202000086 +:103F6800310000002D02000056000000660300002A +:103F78005F00000055030000B9010000B80100000F +:103F88004B0200003D00000066020000A60200008F +:103F98007E0100008C0100001801000009000000EB +:103FA8002803000011000000CB030000AA00000055 +:103FB8003303000023010000580100007C010000C9 +:103FC800C20100001802000000020000B900000051 +:103FD800C5030000950300005B0100001B02000000 +:103FE80028030000D70300007203000077030000D5 +:103FF8001902000036000000B2030000640200004D +:10400800BD020000B703000064010000DF010000EA +:1040180037020000970000007B0300000700000043 +:104028001600000081020000380200004F01000065 +:1040380099020000DA020000A70100005F000000FA +:10404800B2010000D80200009E0000001801000024 +:10405800020000008B01000054000000B0020000C4 +:10406800F70000008F03000031000000DC010000B1 +:10407800B30100002F03000018030000D90200005C +:104088006503000009010000E60100007F00000050 +:104098009E010000EC00000071010000D600000045 +:1040A80024020000B4000000060200000600000020 +:1040B80078030000F7010000AA0200005402000083 +:1040C8001C010000AD000000080100008302000090 +:1040D800F30100005A01000022010000570200000D +:1040E8008103000044000000D700000051030000D5 +:1040F800DB02000092020000B00200006B02000028 +:10410800FB0000007900000012030000830000009B +:104118002B0200003C0300002E0100009B0200005F +:1041280010020000B101000020020000E7010000B9 +:1041380042010000F1020000B30300007D0000000E +:104148001F01000072020000380300000E0000008A +:10415800300100000A000000140300009301000071 +:10416800DD0200006A000000BF030000BF0200007B +:104178006E01000032030000D2020000C4030000F8 +:104188002601000096010000CF0300006A0300002A +:104198008D02000058030000EC02000056000000E9 +:1041A8005B0000003C0000007A010000940200005F +:1041B800690000009B0200006600000099000000F2 +:1041C8007D010000790000008B0200006200000001 +:1041D800390300009C01000048030000EC000000C7 +:1041E800640100000C00000094000000A70100001A +:1041F80036000000C50300008C000000D800000055 +:10420800BB0300006D0200005701000069010000B7 +:1042180000000000C6010000C601000034020000D2 +:104228004F010000BB000000BB000000ED020000D1 +:10423800ED0200006D0100006D0100005E0100004C +:10424800840000008400000099000000480200007B +:10425800D800000048020000D80000006D020000ED +:10426800D2000000D2000000D20000003C02000092 +:104278003C0200007A0300005102000051020000D5 +:1042880051020000B6020000B6020000B6020000AB +:10429800E40000006E0000006E00000074000000E2 +:1042A800EE0200002801000086020000AA010000BA +:1042B800F4010000AA010000B4010000B4010000EC +:1042C80093020000BD020000060300000603000080 +:1042D8002C030000A6020000A6020000A6020000AF +:1042E800B8020000B802000034020000DA01000041 +:1042F800DA010000DA010000100100001B020000D2 +:104308001B0200003902000039020000FD01000014 +:10431800CB000000CB00000018010000BF02000025 +:10432800BF0200009D0200005E020000FF010000C5 +:10433800FF01000027020000910200009102000026 +:1043480050020000C3000000390200000B01000009 +:10435800390200000B010000200300005101000099 +:1043680048020000480200008302000086030000A3 +:10437800830200007001000070010000E9010000E4 +:10438800E90100003A030000480100003A03000078 +:1043980050020000A5030000500200008401000044 +:1043A800840100001F020000890200008902000049 +:1043B8008902000036020000D303000089020000D1 +:1043C8002E0300009102000091020000B5000000D9 +:1043D800B5000000B5000000D00000005B0300003D +:1043E8005B03000075020000750200002001000058 +:1043F800C00200005D010000C00200005D01000075 +:10440800FD000000FD000000CB0200007603000064 +:10441800CB020000AE0100009F0100009F010000D8 +:104428001A02000040020000BC020000F90200006D +:10443800BC020000F1000000F1000000DE010000F5 +:10444800DE010000DE010000F3010000F3010000BE +:10445800B502000093010000A0010000A0010000C7 +:10446800A0010000BC01000028010000A402000017 +:104478006C0200006C0200003D010000E00000003A +:10448800E00000005F0100001C0200001C020000A8 +:104498001C02000020010000A9000000A900000083 +:1044A8000F0200005E0200000F02000085010000FC +:1044B80085010000850100001C030000C701000001 +:1044C800D0020000C7010000D00200006F01000008 +:1044D800E90200006F0100006601000066010000AB +:1044E80048020000480200000F0100000F01000010 +:1044F8005503000055030000140300009301000059 +:104508001302000005020000050200000502000079 +:10451800CD0100002F020000CD01000007030000BC +:1045280066010000660100004C0100004C0100001B +:10453800AC020000AC020000AC0200005602000011 +:10454800BE0100008F000000370100007D00000060 +:1045580037010000E7020000E7020000A5030000A1 +:104568002D0200001F0300002D0200002D02000094 +:104578002D020000290200001C0300008802000030 +:1045880088020000880200007B0300007B03000013 +:104598009A0200001F010000020200003100000022 +:1045A80002020000560000002D0200005F0000001B +:1045B80055030000B9010000B9010000B90100006D +:1045C800B80100004B02000066020000660200000D +:1045D8008C0100007E010000180100001801000095 +:1045E8001100000028030000AA00000033030000A7 +:1045F8002301000058010000580100007C01000060 +:10460800C2010000000200000002000000020000D9 +:1046180095030000950300001B0200001B02000028 +:1046280028030000720300007703000072030000F3 +:10463800190200001902000064020000BD02000017 +:10464800BD020000BD020000DF010000DF01000024 +:10465800DF0100003702000097000000160000008C +:10466800160000003802000038020000380200007E +:104678009902000099020000A7010000A7010000AC +:10468800B2010000B2010000180100009E00000005 +:1046980018010000540000008B010000F700000022 +:1046A800B0020000F7000000DC010000B3010000C8 +:1046B800DC010000180300001803000018030000C4 +:1046C800D9020000E6010000090100009E01000077 +:1046D800EC00000071010000EC0000007101000016 +:1046E800D600000006020000B40000000602000028 +:1046F800F7010000AA020000540200005402000062 +:104708001C0100000801000008010000F30100007E +:10471800F30100005A0100005A010000570200008E +:1047280057020000D7000000D7000000DB0200009D +:10473800DB020000B0020000920200006B020000E1 +:10474800FB000000FB000000830000002B020000BB +:104758002B0200002B0200009B0200001002000048 +:104768001002000010020000E7010000E70100004D +:10477800E7010000F1020000F10200001F01000043 +:104788001F010000720200007202000030010000E8 +:104798000E0000003001000093010000DD0200005F +:1047A80093010000DD020000BF020000BF0200000C +:1047B800BF020000D202000032030000D202000053 +:1047C80096010000960100006A0300006A030000D9 +:1047D80058030000EC020000EC0200005B0000003F +:1047E800560000005B0000007A0100007A0100001A +:1047F8009402000069000000990000009900000080 +:10480800990000007D010000790000008B02000083 +:104818009C010000390300009C01000064010000B5 +:10482800EC000000940000009400000094000000D8 +:10483800A70100008C000000D8000000D80000008C +:104848006D0200006D020000690100000000000018 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/multiply.riscv.hex b/benchmarks/riscv_tests/benchmarks/multiply.riscv.hex new file mode 100644 index 00000000..84bc23ba --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/multiply.riscv.hex @@ -0,0 +1,566 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A000970200009382020473905230975100002F +:1000B0009381018113823188137202FC732540F110 +:1000C000930510006370B5001301150013111101A1 +:1000D00033014100131615013302C2006F20900452 +:1000E000130101EF232211002324210023263100D4 +:1000F00023284100232A5100232C6100232E710064 +:1001000023208102232291022324A1022326B1026B +:100110002328C102232AD102232CE102232EF1023B +:10012000232001052322110523242105232631053F +:1001300023284105232A5105232C6105232E71050F +:1001400023208107232291072324A1072326B10717 +:100150002328C107232AD107232CE107232EF107E7 +:1001600073252034F325103413060100EF2080544A +:1001700073101534B72200009382028073A00230FE +:1001800083204100032181008321C100032201015A +:1001900083224101032381018323C101032401023E +:1001A00083244102032581028325C1020326010322 +:1001B00083264103032781038327C1030328010406 +:1001C00083284104032981048329C104032A0105EA +:1001D000832A4105032B8105832BC105032C0106CE +:1001E000832C4106032D8106832DC106032E0107B2 +:1001F000832E4107032F8107832FC10713010111AC +:040200007300203037 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000013070500930600021305000093771700DD +:102010009386F6FF638407003305B5001357174016 +:1020200093951500E39406FE67800000130101EB11 +:1020300023229113B70C00409387FCFF23248114C3 +:102040002322911423202115232A5113232611140E +:10205000232E3113232C41132328611323267113BC +:10206000232481132320A113232EB111130905006A +:1020700093840500130406002324D100930A500220 +:102080002326F1006F0040016304050693850400D8 +:1020900013041400E700090003450400E31655FF8C +:1020A00083461400930D140013870D00930B000258 +:1020B0009309F0FF130AF0FF930500001306500583 +:1020C000130590009387D6FD93F7F70F13041700BD +:1020D000636CF606172800001308088993972700F9 +:1020E000B387070183A70700B3870701678007004D +:1020F0008320C1140324811483244114032901146F +:102100008329C113032A8113832A4113032B01134B +:10211000832BC112032C8112832C4112032D011237 +:10212000832DC1111301011567800000938B0600F8 +:102130008346170013070400130417009387D6FD86 +:1021400093F7F70FE378F6F8938504001305500230 +:10215000E700090013840D006FF01FF40348170017 +:10216000938906FD13070400930708FD93060800F2 +:102170006366F50293972900B389370113071700A7 +:1021800093991900B389090103480700938909FD50 +:10219000930708FD93060800E37EF5FCE3540AF27A +:1021A000138A09009309F0FF6FF0DFF183461700EF +:1021B000130704006FF01FF193850400130550020C +:1021C000E70009006FF05FED832781008346170069 +:1021D0001307040083A90700938747002324F10015 +:1021E0006FF0DFFB1305000393850400E70009008F +:1021F0009385040013058007E70009008327810009 +:10220000130C00012322010013874700832781005C +:10221000930D000083A907002324E10013060C009E +:10222000930600001385090093850D00EF10C01B75 +:102230002328A10093070000930C05006380B723B7 +:10224000130B4101130D100013060C009306000040 +:102250001385090093850D00EF00D05513060C007F +:102260009306000093090500938D0500EF10C01739 +:10227000832741002320AB002320A101930C0500FC +:10228000130B4B00130D1D00E390B7FDE3FE89FB1C +:10229000635C4D01130AFAFF9385040013850B005C +:1022A000E7000900E3484DFF832701000327C10031 +:1022B00093099000338AE700131A2A00930701015B +:1022C000338A47016F00C000832C0A00130ACAFF3B +:1022D000B3B79901B307F04093F7770293870703E9 +:1022E0003385970193850400E70009009307C10037 +:1022F000E39C47FD6FF05FDA9307100063CCB716DD +:102300000327810093074700638605188329070088 +:102310002324F10013DCF941634E0C18930D0C00DB +:1023200023220100130CA0006FF05FEF130C0001DB +:10233000232201009307100063C2B7108327810096 +:10234000138747006FF09FEC8327810083AD070060 +:10235000138B470063840D18635840099307D0021C +:10236000639EFB0403C50D0063080502930BF0FF99 +:1023700063C609009389F9FF638E79019385040090 +:10238000938D1D00E700090003C50D00130AFAFF35 +:10239000E31005FE635C4001130AFAFF9385040015 +:1023A00013050002E7000900E3180AFE2324610177 +:1023B0006FF09FCE971D0000938D0D5793870D00F2 +:1023C000B3863D01639809006F004013938717009F +:1023D0006386D70003C70700E31A07FEB387B74138 +:1023E000330AFA40634C401103C50D00E30005FCBD +:1023F000930BF0FF6FF0DFF79347FAFF93D7F741A6 +:1024000083461700337AFA00130704006FF09FCB5E +:10241000832781009385040003A50700138B4700E1 +:10242000E7000900232461016FF01FC783461700EE +:1024300093851500130704006FF0DFC88327810020 +:10244000138B7700137B8BFF93078B0083290B0083 +:10245000832D4B002324F1006FF05FDCE3F289DF72 +:102460009307100023200100130D1000E3C447E37D +:102470006FF09FE383278100138B7700137B8BFF23 +:1024800093078B0083290B00032C4B002324F100BE +:102490006FF09FE8032781006FF05FE7130C800067 +:1024A000232201006FF01FE9130CA000232201007A +:1024B0006FF05FE8938504001305D002E700090080 +:1024C00033373001B3078041B3093041B38DE74062 +:1024D000130CA000232201006FF05FD4635640016B +:1024E0009307D002E398FBEC971D0000938DCD433A +:1024F00013058002930BF0FF6FF09FE7130AFAFFBA +:102500009385040013850B00E7000900E30E0AEC35 +:10251000130AFAFF9385040013850B00E7000900F6 +:10252000E31E0AFC6FF05FEC83A705002380A70081 +:1025300083A705009387170023A0F500678000009C +:10254000130101F81308F103137808FC13070004C2 +:102550002320E800930700002322F800130710004F +:102560002324E800930700002326F8002328A8006E +:10257000232AB800232CC800232ED8000F00F00F08 +:1025800097F6FFFF938606A823A006019307000095 +:1025900023A2F60097F6FFFF9386C6AA03A70600BC +:1025A00083A746003367F700E30A07FE130700001E +:1025B00023A0E6009307000023A2F6000F00F00F0F +:1025C00003250800832548001301010867800000E7 +:1025D000130101FF232481008325020493070200D5 +:1025E00023261100B387B700138615002380A700A8 +:1025F0002320C2049307A0006300F50293070004A0 +:10260000630CF6008320C100032481001305000041 +:1026100013010101678000009356F6411305020083 +:1026200093050000EFF0DFF18320C10023200204B6 +:1026300003248100130500001301010167800000DD +:10264000732700B097270000938707A8631E050033 +:1026500083A60700171600001306862D9725000095 +:1026600023A0C5A63307D74023A0E700732720B0D7 +:10267000631E050083A64700171600001306C62B2D +:102680009725000023A0C5A43307D74023A2E70065 +:10269000678000009316150013E7160097F6FFFFFA +:1026A000938646969307000023A0E60023A2F60037 +:1026B0006F0000003716000097F7FFFF938787949D +:1026C000130636A79306000023A0C70023A2D70055 +:1026D0006F000000130101FF23261100EFF09FFBA4 +:1026E00097F7FFFF938707921306D0109306000019 +:1026F00023A0C70023A2D7006F0000008347050076 +:1027000063820702130605008347160013061600AE +:10271000E39C07FE3306A6409306000093050000E5 +:102720006FF01FE2130600009306000093050000FF +:102730006FF01FE16310050067800000130101FDC9 +:1027400013070500232611021305C1001306B1016A +:10275000130890006F008000138607009377F7003E +:10276000B337F800B307F04093F777029376F7009A +:1027700093870703B387F6002300F6009396C501FD +:10278000135747009307F6FF33E7E60093D545005C +:10279000E314C5FC230E0100EFF05FF68320C102B5 +:1027A0001301010367800000130101FC13034102C0 +:1027B000130E05002322B1022324C1022326D102D5 +:1027C00017050000130505E19306030013060E002C +:1027D00093050000232E11002328E102232AF10291 +:1027E000232C0103232E110323266100EFF01F8405 +:1027F0008320C1011305000013010104678000005C +:10280000130101FB13038103232481022326A1006A +:10281000232CC102232ED1021304050013860500C8 +:1028200017050000130585D09305C100930603002A +:10283000232611022322F1042320E104232401058D +:1028400023261105232E6100EFF04FFE8327C100E0 +:10285000238007000325C1008320C1023305854082 +:10286000032481021301010567800000B3E7C5005E +:10287000B367F50093F73700B306C500638407021A +:102880003386C50093070500637ED50203C70500A4 +:102890009385150093871700A38FE7FEE318B6FE14 +:1028A00067800000E37ED5FE9307050003A70500BF +:1028B000938747009385450023AEE7FEE3E8D7FE04 +:1028C0006780000067800000B367C50093F737009A +:1028D0003306C5006380070293F5F50F93070500E3 +:1028E0006370C50493871700A38FB7FEE31CF6FE41 +:1028F0006780000093F5F50F1397850033E7E50037 +:10290000931707013367F700E374C5FE93070500CB +:102910009387470023AEE7FEE3ECC7FE6780000025 +:1029200067800000130101F6971700009387477A2C +:1029300023244109171A0000130A8A792326310932 +:10294000B309FA40232A910823282109930405009A +:1029500013890500130502009385070013860900FB +:10296000232E1108232C810823225109930A0200E7 +:10297000EFF0DFEF138681883306464193050000B0 +:1029800033853A01EFF05FF49305090013850400E5 +:10299000EFF05FDA9305000013050000EF00D0654B +:1029A0001719000013094972832609001304F10363 +:1029B000137404FC93040500639406048326490001 +:1029C0006396060013850400EFF0DFCC13090400C2 +:1029D000971900009389C96E03A6490013050900E1 +:1029E00097150000938585F7EFF09FE13309A90063 +:1029F000E30A24FD13050400EFF05FD06FF09FFCA5 +:102A0000971900009389C96B03A609009715000068 +:102A10009385C5F413050400EFF09FDE832649007B +:102A20003309A400E38606FC6FF01FFB8347050013 +:102A3000638E07009307050003C7170093871700ED +:102A4000E31C07FE3385A7406780000013050000E4 +:102A50006780000013060500B306B6001385050065 +:102A600093070600639805006F00C0019387170065 +:102A70006388F60003C70700E31A07FE3385C740E3 +:102A8000678000006780000083470500938515007C +:102A90001305150003C7F5FF63880700E386E7FE0B +:102AA0003385E74067800000930700006FF05FFF09 +:102AB0009307050003C7050093871700938515004A +:102AC000A38FE7FEE31807FE6780000003470500B9 +:102AD00093060002930705006318D70003C7170089 +:102AE00093871700E30CD7FE9306D0026300D70646 +:102AF0009306B0026300D70483C607009305000065 +:102B0000638206041305000093871700138606FDF1 +:102B10001317250083C607003305A70013151500FA +:102B20003305A600E39206FE638005023305A0404C +:102B30006780000083C61700930500009387170085 +:102B4000E39206FC130500006780000083C61700AF +:102B50009305100093871700E39606FA130500000B +:102B60006FF09FFE138F05001308000063DC050063 +:102B7000B337A000B305B040338FF5403305A04014 +:102B80001308F0FF63DA0600B335C0003307D04006 +:102B9000B306B7403306C04093080600138706000B +:102BA0009307050093050F0063940624B746008041 +:102BB0009386C6AB6376CF0E370301006378660C4D +:102BC0001303F00F6374C300130780003353E60050 +:102BD000B386660003CE0600330EEE001307000234 +:102BE0003303C741630CC701B3156F00335EC501E2 +:102BF000B3186600B365BE00B317650013D60801AD +:102C0000B3F6C502139508011355050113D7070143 +:102C1000B3D5C5029396060133E7E600B305B502C6 +:102C2000637AB70033071701636617016374B7004F +:102C3000330717013307B740B376C70293970701ED +:102C400093D707013357C7023307E50213950601EF +:102C5000B367F50063FAE700B387170163E617016E +:102C600063F4E700B3871701B387E74033D5670004 +:102C700093050000630A0800B337A000B306B04014 +:102C8000B385F6403305A04067800000370300019C +:102C900013070001E36C66F2130780016FF01FF366 +:102CA0006316060093081000B3D8E8023706010047 +:102CB00063F6C8121306F00F637416011307800041 +:102CC00033D6E800B386C60003CE0600B3051F4125 +:102CD000330EEE00130700023303C7416306C70932 +:102CE000B3986800B35ECF01B3176500335EC501CA +:102CF00013D50801B3156F00336EBE00939508011C +:102D000093D5050113560E01B3D6AE0233F7AE02CA +:102D1000B386D502131707013367C700637AD7005C +:102D200033071701636617016374D7003307170170 +:102D30003306D7403377A602131E0E01135E0E0131 +:102D40003356A602131707013386C502B365C701C0 +:102D500063FAC500B385150163E6150163F4C50088 +:102D6000B3851501B385C54093D6080133F7D50265 +:102D7000139508011355050113D60701B3D5D502E4 +:102D8000131707013367C700B305B502637AB700AD +:102D900033071701636617016374B7003307170120 +:102DA000B305B74033F7D5029397070193D70701CF +:102DB000B3D5D502B305B50213150701B367F50006 +:102DC00063FAB700B387170163E6170163F4B7002E +:102DD000B3871701B387B7406FF05FE9370600018B +:102DE00013070001E3EEC8EC130780016FF05FEDFD +:102DF000E362DFE83707010063FAE604930EF00FA1 +:102E000033B7DE0013173700B748008033D3E6002E +:102E10009388C8ABB388680083CE0800B38EEE00F9 +:102E200013070002330ED741631CD70363E4E601A6 +:102E3000636AC500B307C540B305DF403335F5000D +:102E4000B385A540138507006FF0DFE2B7080001E6 +:102E500013070001E3EA16FB130780016FF0DFFAA6 +:102E60003357D601B396C601B36FD700B357DF010E +:102E700013D70F0133F3E702B315CF01B356D501D2 +:102E8000B3E6B60093950F0193D5050193D80601DB +:102E90003316C6013315C501B3D7E7021313030177 +:102EA000B3681301338FF5021383070063FEE80153 +:102EB000B388F8011383F7FF63E8F80163F6E801CC +:102EC0001383E7FFB388F801B388E84133FFE802D2 +:102ED0009396060193D60601B3D8E802131F0F019B +:102EE000336FDF00B385150393870800637EBF004F +:102EF000330FFF019387F8FF6368FF016376BF001C +:102F00009387E8FF330FFF01B305BF40131303019D +:102F1000370F01003363F3009307FFFFB378F3002B +:102F20009356060113530301B377F6003387F80273 +:102F3000B307F302B388D8023303D302B388F8008F +:102F400093560701B386160163F4F6003303E301D9 +:102F500093D7060133836700B70701009387F7FF14 +:102F6000B3F6F600939606013377F7003387E60051 +:102F700063E66500639E6500637CE5003306C74039 +:102F80003337C7003307F7013303E3401307060065 +:102F90003307E5403335E500B3856540B385A5408B +:102FA000B397D5013357C70133E5E700B3D5C50162 +:102FB0006FF05FCC930805009387050013080600A7 +:102FC000138506001383080063940628B746008023 +:102FD0009386C6AB63F6C50E370701006378E60C2F +:102FE0001307F00F3337C700131737003355E600C8 +:102FF000B386A60083C60600130500023387E600E9 +:10300000B306E540630CE500B397D70033D7E8007B +:103010003318D600B365F7003393D80093580801EE +:10302000B3D71503131608011356060113570301EE +:10303000B3F6150313850700B305F6029396060150 +:1030400033E7E600637EB700330707011385F7FF18 +:10305000636807016376B7001385E7FF330707014D +:103060003307B740B3771703131303011353030157 +:10307000335717039397070133E36700B306E6025C +:1030800013060700637CD300330368001306F7FFC1 +:10309000636603016374D3001306E7FF131505018C +:1030A0003365C500930500006F00400E3705000131 +:1030B00013070001E36CA6F2130780016FF01FF302 +:1030C00063160600130710003358C70237070100C4 +:1030D0006370E80C1307F00F637407011305800099 +:1030E0003357A800B386E60003C7060013060002A4 +:1030F0003307A700B306E6406316E60AB387074125 +:103100009305100093580801131608011356060181 +:1031100013570301B3F61703B3D7170393960601AA +:1031200033E7E600330EF60213850700637EC7011E +:10313000330707011385F7FF636807016376C7014B +:103140001385E7FF330707013307C741B377170339 +:103150001313030113530301335717039397070105 +:1031600033E36700B306E60213060700637CD3006F +:10317000330368001306F7FF636603016374D3002B +:103180001306E7FF131505013365C50067800000CE +:103190003707000113050001E364E8F4130580011B +:1031A0006FF01FF43318D800B3D5E7003393D8007D +:1031B000B397D70033D7E800935808013366F70078 +:1031C00033F715039317080193D707011355060129 +:1031D000B3D51503131707013367A700B386B702EA +:1031E00013850500637ED700330707011385F5FFBC +:1031F000636807016376D7001385E5FF330707018E +:10320000B306D74033F7160313160601135606010B +:10321000B3D6160313170701B388D702B367C700E5 +:103220001387060063FE1701B38707011387F6FFB4 +:1032300063E8070163F617011387E6FFB387070109 +:1032400093150501B3871741B3E5E5006FF09FEBD8 +:1032500063E6D5183707010063F4E6041307F00F9F +:10326000B335D700939535003747008033D5B60086 +:103270001307C7AB3307A700034707001305000276 +:103280003307B700B305E5406316E50213051000E8 +:10329000E3EEF6EE33B5C800134515006FF01FEFEF +:1032A0003707000193050001E3E0E6FC9305800188 +:1032B0006FF09FFB3353E600B396B6003363D30041 +:1032C00013550301B31EB60033D6E700B376A6024A +:1032D000B397B70033D7E8003368F70093170301BB +:1032E00093D70701135708013356A6029396060198 +:1032F00033E7E600338FC702130E0600637EE70153 +:1033000033076700130EF6FF636867006376E70113 +:10331000130EE6FF330767003307E741B376A702D2 +:103320003357A702939606013386E70293170801E5 +:1033300093D70701B3E7F6009306070063FEC700C3 +:10334000B38767009306F7FF63E8670063F6C7007B +:103350009306E7FFB387670013150E01370E0100D0 +:103360003365D5009306FEFF3378D500B387C74099 +:10337000B3F6DE001356050193DE0E013303D802C7 +:10338000B306D602135703013308D8033308D80015 +:10339000330707013306D6036374D7003306C6012B +:1033A000935607013386C60063E6C702E39CC7CE87 +:1033B000B70701009387F7FF3377F700131707016B +:1033C0003373F300B398B800330767009305000028 +:1033D000E3FEE8DA1305F5FF6FF0DFCC930500009C +:1033E000130500006FF09FDA9308060013870600AC +:1033F0009307050013880500639C0622B7460080EA +:103400009386C6AB63FCC50C37030100637E660A76 +:103410001303F00F6374C300130780003353E600F7 +:10342000B386660003CE0600330EEE0013070002DB +:103430003303C741630CC701B3956500335EC50113 +:10344000B31866003368BE00B317650013D60801D1 +:103450003377C802139508011355050193D6070168 +:103460003358C80213170701B366D70033080503A2 +:1034700063FA0601B386160163E6160163F40601DA +:10348000B3861601B386064133F7C6029397070148 +:1034900093D70701B3D6C602B306D50213150701A9 +:1034A000B367F50063FAD700B387170163E6170126 +:1034B00063F4D700B3871701B387D74033D56700CC +:1034C0009305000067800000370300011307000127 +:1034D000E36666F4130780016FF05FF4631606007D +:1034E00013061000B35816033706010063F2C80A2A +:1034F0001306F00F637416011307800033D6E8003B +:10350000B386C60003CE0600330EEE00130700029A +:103510003303C7416318C709B385154113D70801A1 +:10352000139508011355050113D60701B3F6E502FB +:10353000B3D5E50293960601B3E6C600B305B5021E +:1035400063FAB600B386160163E6160163F4B600AB +:10355000B3861601B385B640B3F6E502939707012B +:1035600093D70701B3D5E502B305B502139506015C +:10357000B367F50063FAB700B387170163E6170175 +:1035800063F4B700B3871701B387B7406FF01FF339 +:103590003706000113070001E3E2C8F613078001B4 +:1035A0006FF0DFF5B398680033D7C501B317650036 +:1035B000335EC50113D50801B376A702B395650044 +:1035C000336EBE009395080193D5050113560E0185 +:1035D0003357A70293960601B3E6C6003387E50288 +:1035E00063FAE600B386160163E6160163F4E600AB +:1035F000B38616013386E640B376A602131E0E018B +:10360000135E0E013356A602939606013386C50259 +:10361000B3E5C60163FAC500B385150163E615017C +:1036200063F4C500B3851501B385C5406FF01FEF86 +:10363000E3EAD5E83707010063FCE604130EF00F58 +:103640003337DE0013173700B748008033D3E60066 +:103650009388C8ABB388680003CE0800330EEE0031 +:10366000130700023303C741631EC70363E4B600B8 +:10367000636AC500B307C540B385D5403335F5004F +:103680003388A54013850700930508006FF09FE37A +:10369000B708000113070001E3E816FB13078001D8 +:1036A0006FF09FFA3357C601B3966600336FD700A9 +:1036B000B3D7C50113570F01B3F8E702B3956500FF +:1036C0003358C5013368B80093150F0193D5050130 +:1036D000935608013316660033156500B3D7E70229 +:1036E00093980801B3E6D800B38EF50293880700DB +:1036F00063FED601B386E6019388F7FF63E8E6012F +:1037000063F6D6019388E7FFB386E601B386D64118 +:10371000B3FEE6021318080113580801B3D6E602F7 +:10372000939E0E01B3EE0E01B385D502938706007A +:1037300063FEBE00B38EEE019387F6FF63E8EE01F1 +:1037400063F6BE009387E6FFB38EEE01B385BE40FD +:1037500093980801B70E0100B3E8F8009387FEFFC5 +:1037600033F8F8009356060193D80801B377F600B2 +:103770003307F802B387F8023308D802B388D802B7 +:103780003308F80093560701B386060163F4F60088 +:10379000B388D801B70701009387F7FF13D8060154 +:1037A000B3F6F600939606013377F700B3081801D5 +:1037B0003387E60063E61501639E1501637CE5002F +:1037C0003306C7403337C7003307E701B388E84003 +:1037D000130706003307E5403335E500B38515418F +:1037E000B385A540B397C5013357670033E5E700BC +:0837F000B3D565006FF01FCD99 +:1037F800130101E52324811A2320211B23286119A1 +:103808001709000013094959170400001304C43F9D +:10381800130B01002322911A232E3119232C41194D +:10382800232A51192326111A930A0900130A0B0097 +:10383800930909009304040083A5090003A5040063 +:103848009384440093894900EFE00FFB2320AA00EA +:10385800130A4A00E39254FF13051000EFE0DFDD7E +:1038680093040B0083250900032504001304440076 +:1038780013094900EFE04FF823A0A4009384440003 +:10388800E31254FF13050000EFE01FDB9707000069 +:1038980093878769130500001308400683260B00E9 +:1038A80003A7070083254B0003A647006392E6049D +:1038B80013052500639AC500130B8B0093878700B7 +:1038C800E31E05FD130500008320C11A0324811A95 +:1038D8008324411A0329011A8329C119032A81194A +:1038E800832A4119032B01191301011B678000006A +:1038F800130515006FF05FFD130101FF17050000A8 +:103908001305C50323261100EFE0DFDE8320C10085 +:0C3918001305F0FF13010101678000009F +:10392400286E756C6C2900006D6379636C6500000A +:103934006D696E737472657400000000496D706C7B +:10394400656D656E74206D61696E28292C20666F23 +:0D3954006F210A002573203D2025640A0024 +:1039640048E8FFFFE4E7FFFF54E8FFFFE4E7FFFF59 +:10397400E4E7FFFFE4E7FFFFE4E7FFFF64E8FFFF9E +:10398400E4E7FFFFE4E7FFFFC8E7FFFF94EAFFFF78 +:10399400E4E7FFFFC8E7FFFFF8E7FFFFF8E7FFFFF3 +:1039A400F8E7FFFFF8E7FFFFF8E7FFFFF8E7FFFF9F +:1039B400F8E7FFFFF8E7FFFFF8E7FFFFE4E7FFFFA3 +:1039C400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFFCF +:1039D400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFFBF +:1039E400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFFAF +:1039F400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF9F +:103A0400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF8E +:103A1400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF7E +:103A2400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF6E +:103A3400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF5E +:103A4400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF4E +:103A5400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF3E +:103A6400ACEAFFFF94E9FFFFE4E7FFFFE4E7FFFFB1 +:103A7400E4E7FFFFE4E7FFFFE4E7FFFFE4E7FFFF1E +:103A8400E4E7FFFFC8EAFFFFE4E7FFFFE4E7FFFF27 +:103A940038EBFFFF80E8FFFFE4E7FFFFE4E7FFFF09 +:103AA400E4E9FFFFE4E7FFFF44EBFFFFE4E7FFFF88 +:103AB400E4E7FFFFC8E9FFFF000102020303030379 +:103AC40004040404040404040505050505050505AA +:103AD400050505050505050506060606060606068A +:103AE4000606060606060606060606060606060672 +:103AF400060606060606060607070707070707075A +:103B04000707070707070707070707070707070741 +:103B14000707070707070707070707070707070731 +:103B24000707070707070707070707070707070721 +:103B34000707070707070707080808080808080809 +:103B440008080808080808080808080808080808F1 +:103B540008080808080808080808080808080808E1 +:103B640008080808080808080808080808080808D1 +:103B740008080808080808080808080808080808C1 +:103B840008080808080808080808080808080808B1 +:103B940008080808080808080808080808080808A1 +:103BA4000808080808080808080808080808080891 +:083BB4000808080808080808C9 +:103BBC001000000000000000037A5200017C01019B +:103BCC001B0D020010000000180000008CEFFFFF1E +:103BDC005004000000000000100000002C00000049 +:103BEC00C8F3FFFF340400000000000010000000C8 +:103BFC0040000000E8F7FFFF100400000000000088 +:103C0C0029000000C6010000410300004F01000024 +:103C1C003402000001000000BB000000DD030000C6 +:103C2C00ED0200006D0100005E0100003C0200008E +:103C3C008400000040000000B50300009900000063 +:103C4C0048020000D8000000250300008C00000092 +:103C5C006D020000D2000000060000003C020000D3 +:103C6C00A3030000530100007A030000510200007E +:103C7C008801000082030000B6020000E40000008E +:103C8C00C10300000C0000006E0000007303000074 +:103C9C0074000000EE020000280100008602000003 +:103CAC00AA010000F40100003A010000B401000078 +:103CBC0093020000BD020000060300002C0300006C +:103CCC003F010000D5030000A60200009600000092 +:103CDC006B030000B8020000780100003402000001 +:103CEC00DA01000010010000AA030000020100002C +:103CFC001B0200008702000039020000FD010000D9 +:103D0C00CB0000005800000018010000BF020000AA +:103D1C00F70200009D0200005E0200007701000027 +:103D2C00FF0100002702000091020000A803000020 +:103D3C00C3000000500200005100000039020000D6 +:103D4C000B010000B8030000E50000002003000098 +:103D5C005101000048020000B00300008302000083 +:103D6C008603000070010000F1000000E901000072 +:103D7C0091030000480100003A03000039010000E3 +:103D8C00A503000050020000D903000084010000CC +:103D9C00C30000001F020000C003000089020000E5 +:103DAC0036020000D30300005E010000E5030000B2 +:103DBC00890200002E030000910200004F00000059 +:103DCC00B5000000D00000006F000000E60300000A +:103DDC005B03000075020000410000004F0300006F +:103DEC0020010000C00200005D010000E50300009E +:103DFC008D000000FD00000089030000CB020000D4 +:103E0C0076030000AE010000080100009F010000D5 +:103E1C00400200001A020000D3030000BC020000A4 +:103E2C00F902000004000000F1000000EE010000A7 +:103E3C00DE01000064000000F301000060030000DC +:103E4C0093010000B5020000DE000000A00100009C +:103E5C00BC01000028010000D10200001D0100007F +:103E6C00A40200006C0200003D0100004E000000A6 +:103E7C00E00000005F010000A90300001C0200002C +:103E8C00200100008602000077000000A90000005D +:103E9C00670200000F0200005E020000210100001A +:103EAC00850100001C0300005F01000021030000DD +:103EBC00C7010000D002000016010000F60200004D +:103ECC006F010000E9020000660100005C000000C8 +:103EDC0048020000DD0300003E0000000F0100005E +:103EEC00D9030000550300009301000014030000E7 +:103EFC005A0100001302000005020000DE00000061 +:103F0C002F020000CD0100008C030000F100000026 +:103F1C000703000066010000FF0000004C010000D8 +:103F2C003B1F0000FAC20300C0330C0047510300D2 +:103F3C00F8DE0400D3030000AAFF0000B10B0F0051 +:103F4C00D56A0700968804003E82030084B0000006 +:103F5C00545D0000003400007B9B0100765402008D +:103F6C0098A70700B812020065CC000034CF0100FE +:103F7C00A0BA0200804102002E080000ACB3080079 +:103F8C00C7000200074F01004A4A0C003B780600AC +:103F9C00B04C05005CE40500B0CB02009C71010044 +:103FAC004072080038190000AAA40100746E0900C0 +:103FBC00D4580100B80B0000A816010094DE0400D0 +:103FCC006C1B030050C300000E64020080BF050090 +:103FDC00690D0400A1690700349F020080270500C9 +:103FEC0044290200486E040086750700FEA60000F6 +:103FFC008C060900A095060098D10100D8AB0000F2 +:10400C00C09E0100F07401003A690D0038200200D6 +:10401C00605E0200AA6006007F08010005500100E6 +:10402C00ADE7010028B50000D09602009F190300EF +:10403C00538104002C200800E23E03005795040035 +:10404C00398C0300B00D060076C9020070D30A004B +:10405C008D170100D0BA0600467100007CCC000020 +:10406C0018610200D85D0E0076370000E04E0300A8 +:10407C00A9100500E899070010CE05003CBB07000D +:10408C001CC3040050FB0200B5E601000EA80100A1 +:10409C009FC90700A84E0200B8710B00A9260100A9 +:1040AC0083080B00E03B030027D5030030F7010029 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/pmp.riscv.hex b/benchmarks/riscv_tests/benchmarks/pmp.riscv.hex new file mode 100644 index 00000000..6c0f539f --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/pmp.riscv.hex @@ -0,0 +1,558 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A00097020000938242047390523097410000FF +:1000B0009381C179178200001302B2F8137202FC17 +:1000C000732540F1930510006370B500130115000E +:1000D0001311110133014100131615013302C2003F +:1000E0006F20904C130101EF2322110023242100E3 +:1000F0002326310023284100232A5100232C6100AC +:10010000232E710023208102232291022324A102A5 +:100110002326B1022328C102232AD102232CE10283 +:10012000232EF1022320010523221105232421057A +:100130002326310523284105232A5105232C610557 +:10014000232E710523208107232291072324A10751 +:100150002326B1072328C107232AD107232CE1072F +:10016000232EF10773252034F325103413060100E4 +:10017000EF20C02D73101534B72200009382028047 +:1001800073A0023083204100032181008321C1003C +:100190000322010183224101032381018323C10141 +:1001A0000324010283244102032581028325C10225 +:1001B0000326010383264103032781038327C10309 +:1001C0000328010483284104032981048329C104ED +:1001D000032A0105832A4105032B8105832BC105D1 +:1001E000032C0106832C4106032D8106832DC106B5 +:1001F000032E0107832E4107032F8107832FC10799 +:0802000013010111730020300D +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000130101FEB7F3FFFF232E1100232C8100E3 +:10201000232A910023282101232631012324410171 +:1020200023225101B30375003717000063F2E33830 +:10203000974F0000938F0FFDB38FAF00B384F5016E +:10204000138A050013DF2F0093D42400F327003AEE +:10205000B706FFFF9386F60FB3F7D7007390073AE2 +:1020600073100F3B7390143B13070790B3E7E7001F +:102070007390073A73000012B302B500637A550CEF +:1020800017430000130343F837E4FDFFB7150200C0 +:10209000131F2F00939424003303A300938E030097 +:1020A00093880F009306050013084000B71900003D +:1020B000172E0000130E8EF91304F47F938505800C +:1020C00013092000130710009307F7FFB3F7D70099 +:1020D0006392070663FE3E2D63E6E80B63F4980AFD +:1020E0006374E80E6362E30F6370930E930740001E +:1020F000138647003336E6002320CE00F327003056 +:10210000B3F78700B3E7B7006308270B6308070935 +:10211000F3970730038006007390073083270E0083 +:1021200063980708131717009307F7FFB3F7D70053 +:10213000E38207FA13171700E378E8F8938646005E +:1021400093884800938E4E0013034300E3EC56F649 +:102150009307FAFF33674501B3F7E700638A070681 +:102160008320C1010324810183244101032901014A +:102170008329C100032A8100832A4100130101023F +:102180006780000013060000E378E8F6E366E3F7F3 +:10219000E37493F6138647006FF0DFF5F39707308B +:1021A00003A006007390073083270E00E38807F82A +:1021B00013052000EF00501AF39707300390060034 +:1021C000739007306FF09FF5130640006FF09FF299 +:1021D0009307400063E64713B71700009387071083 +:1021E000130E100193581A009388F8FFB388F80172 +:1021F00093D828007327003AB706FFFF9386F60F9F +:102200003377D7007310073A7350003B7390183B35 +:10221000B3E7E7007390073A73000012E37255F4D6 +:1022200017480000130848DE37EFFDFFB71E020015 +:102230003308A80093054000137E8E011309800126 +:10224000B714000017230000130343E0130FFF7FB0 +:10225000938E0E801304200093091000938AF9FFD7 +:10226000B3FAAA00639E0A0693870800930610003B +:1022700063062E0FB386F6009396260093972700E9 +:1022800063F8931263E6FF0863F0DF0A63FE35111B +:10229000636CF810637AD810930A400093874A0061 +:1022A000B3B737012320F300F3270030B3F7E7017A +:1022B000B3E7D701638C8908638CB90CF3970730B7 +:1022C000030005007390073083270300E39207EEB5 +:1022D00093991900938AF9FFB3FAAA00E3860AF8E2 +:1022E00093991900E3FC35F713054500938F4F00D0 +:1022F0009383430013084800E36055F66FF05FE6F0 +:10230000B727000093870790130E90016FF09FEDA1 +:1023100063F235036360F80293070000E374D8F8B2 +:1023200093874A006FF0DFF763F635016364F800C6 +:10233000E366D8F6930700002320F300F32700306C +:10234000B3F7E701B3E7D701E39889F6F3970730CE +:1023500003100500739007306FF01FF7130600029B +:1023600093062000130710006F00C001134AF7FF07 +:102370001306F6FFB3F747019396160013171700DD +:10238000E30A06EE337AF700E3120AFE6FF09FEEDF +:10239000F39707300320050073900730832703006D +:1023A000E38407F46FF0DFE0930740006FF05FEF26 +:1023B00013053000EF00407A130101FE2324410190 +:1023C000232E1100130A0502232C8100232A9100D9 +:1023D0002328210123263101232251011305450021 +:1023E000930710006364AA0093078000B309F040CC +:1023F000939929009389090293040002930A3000FB +:1024000033099A401304400063FC9A0093050400CA +:102410001305090013044400EFF09FBEE3F884FEA7 +:102420009384C4FFE39E34FD8320C1010324810112 +:1024300083244101032901018329C100032A81006A +:10244000832A41001301010267800000130101FF8C +:1024500023261100930720006304F504972700004A +:1024600083A7C7BE6382070493075000631EF5026B +:1024700083D705008320C10017270000232807BC4D +:1024800093F73700B337F000B307F04093F7270016 +:10249000938727003385F500130101016780000051 +:1024A00013050000EF00406B13051000EF00C06A39 +:1024B000130101EB23229113B70C00409387FCFF1B +:1024C000232481142322911423202115232A51131C +:1024D00023261114232E3113232C41132328611397 +:1024E00023267113232481132320A113232EB1113A +:1024F0001309050093840500130406002324D1006A +:10250000930A50022326F1006F0040016304050680 +:102510009385040013041400E70009000345040038 +:10252000E31655FF83461400930D140013870D0026 +:10253000930B00029309F0FF130AF0FF93050000CC +:1025400013065005130590009387D6FD93F7F70FF8 +:1025500013041700636CF60617280000130888841C +:1025600093972700B387070183A70700B387070165 +:10257000678007008320C11403248114832441143D +:10258000032901148329C113032A8113832A4113C8 +:10259000032B0113832BC112032C8112832C4112B4 +:1025A000032D0112832DC111130101156780000055 +:1025B000938B0600834617001307040013041700CB +:1025C0009387D6FD93F7F70FE378F6F89385040029 +:1025D00013055002E700090013840D006FF01FF48B +:1025E00003481700938906FD13070400930708FDAD +:1025F000930608006366F50293972900B3893701B3 +:102600001307170093991900B389090103480700BC +:10261000938909FD930708FD93060800E37EF5FC06 +:10262000E3540AF2138A09009309F0FF6FF0DFF117 +:1026300083461700130704006FF01FF19385040011 +:1026400013055002E70009006FF05FED832781005A +:10265000834617001307040083A9070093874700E8 +:102660002324F1006FF0DFFB1305000393850400C2 +:10267000E70009009385040013058007E7000900BF +:1026800083278100130C00012322010013874700D8 +:1026900083278100930D000083A907002324E10014 +:1026A00013060C00930600001385090093850D00A6 +:1026B000EF10001C2328A10093070000930C0500D5 +:1026C0006380B723130B4101130D100013060C0098 +:1026D000930600001385090093850D00EF00105646 +:1026E00013060C009306000093090500938D050066 +:1026F000EF100018832741002320AB002320A10105 +:10270000930C0500130B4B00130D1D00E390B7FD58 +:10271000E3FE89FB635C4D01130AFAFF9385040015 +:1027200013850B00E7000900E3484DFF83270100F4 +:102730000327C10093099000338AE700131A2A0087 +:1027400093070101338A47016F00C000832C0A0000 +:10275000130ACAFFB3B79901B307F04093F77702A2 +:10276000938707033385970193850400E7000900E9 +:102770009307C100E39C47FD6FF05FDA93071000F9 +:1027800063CCB716032781009307470063860518BB +:10279000832907002324F10013DCF941634E0C1850 +:1027A000930D0C0023220100130CA0006FF05FEFCB +:1027B000130C0001232201009307100063C2B7101D +:1027C00083278100138747006FF09FEC83278100E8 +:1027D00083AD0700138B470063840D1863584009CD +:1027E0009307D002639EFB0403C50D006308050236 +:1027F000930BF0FF63C609009389F9FF638E79019B +:1028000093850400938D1D00E700090003C50D00AA +:10281000130AFAFFE31005FE635C4001130AFAFF96 +:102820009385040013050002E7000900E3180AFE7F +:10283000232461016FF09FCE971D0000938D8D5270 +:1028400093870D00B3863D01639809006F00401324 +:10285000938717006386D70003C70700E31A07FEB4 +:10286000B387B741330AFA40634C401103C50D00EA +:10287000E30005FC930BF0FF6FF0DFF79347FAFFDF +:1028800093D7F74183461700337AFA001307040001 +:102890006FF09FCB832781009385040003A5070079 +:1028A000138B4700E7000900232461016FF01FC765 +:1028B0008346170093851500130704006FF0DFC8E7 +:1028C00083278100138B7700137B8BFF93078B008B +:1028D00083290B00832D4B002324F1006FF05FDC74 +:1028E000E3F289DF9307100023200100130D10008D +:1028F000E3C447E36FF09FE383278100138B7700E6 +:10290000137B8BFF93078B0083290B00032C4B0059 +:102910002324F1006FF09FE8032781006FF05FE749 +:10292000130C8000232201006FF01FE9130CA0009C +:10293000232201006FF05FE8938504001305D002A5 +:10294000E700090033373001B3078041B309304154 +:10295000B38DE740130CA000232201006FF05FD479 +:10296000635640019307D002E398FBEC971D0000EB +:10297000938D4D3F13058002930BF0FF6FF09FE79F +:10298000130AFAFF9385040013850B00E700090082 +:10299000E30E0AEC130AFAFF9385040013850B007B +:1029A000E7000900E31E0AFC6FF05FEC83A7050057 +:1029B0002380A70083A705009387170023A0F500B5 +:1029C00067800000130101F81308F103137808FC75 +:1029D000130700042320E800930700002322F800D7 +:1029E000130710002324E800930700002326F800B3 +:1029F0002328A800232AB800232CC800232ED8009F +:102A00000F00F00F97E6FFFF9386C65F23A0060135 +:102A10009307000023A2F60097E6FFFF93868662E5 +:102A200003A7060083A746003367F700E30A07FE03 +:102A30001307000023A0E6009307000023A2F6007E +:102A40000F00F00F0325080083254800130101083B +:102A500067800000130101FF232481008325020405 +:102A60009307020023261100B387B70013861500D1 +:102A70002380A7002320C2049307A0006300F5026F +:102A800093070004630CF6008320C1000324810037 +:102A90001305000013010101678000009356F64101 +:102AA0001305020093050000EFF0DFF18320C10061 +:102AB00023200204032481001305000013010101F7 +:102AC00067800000732700B0971700009387C758EE +:102AD000631E050083A607001716000013060629CB +:102AE0009715000023A6C5563307D74023A0E7005B +:102AF000732720B0631E050083A647001716000049 +:102B0000130646279715000023A6C5543307D74060 +:102B100023A2E700678000009316150013E7160054 +:102B200097E6FFFF9386064E9307000023A0E6007A +:102B300023A2F6006F0000003716000097E7FFFFA2 +:102B40009387474C130636A79306000023A0C700BF +:102B500023A2D7006F000000130101FF23261100FC +:102B6000EFF09FFB97E7FFFF9387C7491306D0104D +:102B70009306000023A0C70023A2D7006F00000027 +:102B8000834705006382070213060500834716008A +:102B900013061600E39C07FE3306A64093060000CA +:102BA000930500006FF01FE213060000930600007B +:102BB000930500006FF01FE16310050067800000BF +:102BC000130101FD13070500232611021305C1009F +:102BD0001306B101130890006F00800013860700F0 +:102BE0009377F700B337F800B307F04093F7770215 +:102BF0009376F70093870703B387F6002300F60068 +:102C00009396C501135747009307F6FF33E7E60095 +:102C100093D54500E314C5FC230E0100EFF05FF6E9 +:102C20008320C1021301010367800000130101FC2E +:102C300013034102130E05002322B1022324C10213 +:102C40002326D10217050000130505E193060300B2 +:102C500013060E0093050000232E11002328E10225 +:102C6000232AF102232C0103232E110323266100C2 +:102C7000EFF01F848320C10113050000130101043C +:102C800067800000130101FB1303810323248102E9 +:102C90002326A100232CC102232ED10213040500F8 +:102CA0001386050017050000130585D09305C100A4 +:102CB00093060300232611022322F1042320E104BA +:102CC0002324010523261105232E6100EFF04FFE7A +:102CD0008327C100238007000325C1008320C10290 +:102CE000330585400324810213010105678000003C +:102CF000B3E7C500B367F50093F73700B306C50027 +:102D0000638407023386C50093070500637ED502FE +:102D100003C705009385150093871700A38FE7FE6F +:102D2000E318B6FE67800000E37ED5FE930705003A +:102D300003A70500938747009385450023AEE7FE70 +:102D4000E3E8D7FE6780000067800000B367C50036 +:102D500093F737003306C5006380070293F5F50F3C +:102D6000930705006370C50493871700A38FB7FE10 +:102D7000E31CF6FE6780000093F5F50F13978500BE +:102D800033E7E500931707013367F700E374C5FEE7 +:102D9000930705009387470023AEE7FEE3ECC7FEE9 +:102DA0006780000067800000130101F6975700005C +:102DB0009387472523244109175A0000130A8A24C0 +:102DC00023263109B309FA40232A9108232821092F +:102DD000930405001389050013050200938507007D +:102DE00013860900232E1108232C81082322510960 +:102DF000930A0200EFF0DFEF175600001306C62417 +:102E0000330646419305000033853A01EFF01FF485 +:102E10009305090013850400EFF01FDA9305000005 +:102E200013050000EF00D065171900001309C9222F +:102E3000832609001304F103137404FC93040500B2 +:102E400063940604832649006396060013850400F4 +:102E5000EFF09FCC13090400971900009389491FD4 +:102E600003A6490013050900971500009385C5F2D4 +:102E7000EFF05FE13309A900E30A24FD1305040024 +:102E8000EFF01FD06FF09FFC971900009389491C49 +:102E900003A6090097150000938505F013050400AB +:102EA000EFF05FDE832649003309A400E38606FCC9 +:102EB0006FF01FFB83470500638E07009307050033 +:102EC00003C7170093871700E31C07FE3385A7404D +:102ED00067800000130500006780000013060500EE +:102EE000B306B60013850500930706006398050036 +:102EF0006F00C001938717006388F60003C70700BF +:102F0000E31A07FE3385C740678000006780000032 +:102F100083470500938515001305150003C7F5FFCA +:102F200063880700E386E7FE3385E740678000009B +:102F3000930700006FF05FFF9307050003C70500CC +:102F40009387170093851500A38FE7FEE31807FE0C +:102F50006780000003470500930600029307050001 +:102F60006318D70003C7170093871700E30CD7FE39 +:102F70009306D0026300D7069306B0026300D7041D +:102F800083C6070093050000638206041305000052 +:102F900093871700138606FD1317250083C60700C5 +:102FA0003305A700131515003305A600E39206FEAE +:102FB000638005023305A0406780000083C61700C8 +:102FC0009305000093871700E39206FC13050000A9 +:102FD0006780000083C617009305100093871700D1 +:102FE000E39606FA130500006FF09FFE138F0500AD +:102FF0001308000063DC0500B337A000B305B04040 +:10300000338FF5403305A0401308F0FF63DA060064 +:10301000B335C0003307D040B306B7403306C040D5 +:1030200093080600138706009307050093050F0019 +:1030300063940624B7460080938686EF6376CF0EAE +:10304000370301006378660C1303F00F6374C30049 +:10305000130780003353E600B386660003CE0600F4 +:10306000330EEE00130700023303C741630CC701A0 +:10307000B3156F00335EC501B3186600B365BE00BB +:10308000B317650013D60801B3F6C50213950801FE +:103090001355050113D70701B3D5C5029396060151 +:1030A00033E7E600B305B502637AB70033071701CB +:1030B000636617016374B700330717013307B7401E +:1030C000B376C7029397070193D707013357C70217 +:1030D0003307E50213950601B367F50063FAE700CD +:1030E000B387170163E6170163F4E700B38717019D +:1030F000B387E74033D5670093050000630A0800F3 +:10310000B337A000B306B040B385F6403305A04006 +:10311000678000003703000113070001E36C66F2CB +:10312000130780016FF01FF3631606009308100069 +:10313000B3D8E8023706010063F6C8121306F00F91 +:10314000637416011307800033D6E800B386C60007 +:1031500003CE0600B3051F41330EEE001307000235 +:103160003303C7416306C709B3986800B35ECF0154 +:10317000B3176500335EC50113D50801B3156F00A1 +:10318000336EBE009395080193D5050113560E01C9 +:10319000B3D6AE0233F7AE02B386D50213170701DA +:1031A0003367C700637AD7003307170163661701D7 +:1031B0006374D700330717013306D7403377A6026D +:1031C000131E0E01135E0E013356A60213170701DC +:1031D0003386C502B365C70163FAC500B38515011F +:1031E00063E6150163F4C500B3851501B385C540D9 +:1031F00093D6080133F7D50213950801135505013D +:1032000013D60701B3D5D502131707013367C700DB +:10321000B305B502637AB700330717016366170178 +:103220006374B70033071701B305B74033F7D5020E +:103230009397070193D70701B3D5D502B305B5021C +:1032400013150701B367F50063FAB700B3871701D9 +:1032500063E6170163F4B700B3871701B387B7407C +:103260006FF05FE93706000113070001E3EEC8ECD9 +:10327000130780016FF05FEDE362DFE837070100BD +:1032800063FAE604930EF00F33B7DE00131737002E +:10329000B748008033D3E600938888EFB38868008E +:1032A00083CE0800B38EEE0013070002330ED74121 +:1032B000631CD70363E4E601636AC500B307C54036 +:1032C000B305DF403335F500B385A540138507000E +:1032D0006FF0DFE2B708000113070001E3EA16FB15 +:1032E000130780016FF0DFFA3357D601B396C6019A +:1032F000B36FD700B357DF0113D70F0133F3E702E2 +:10330000B315CF01B356D501B3E6B60093950F01BF +:1033100093D5050193D806013316C6013315C501AF +:10332000B3D7E70213130301B3681301338FF50218 +:103330001383070063FEE801B388F8011383F7FFE6 +:1033400063E8F80163F6E8011383E7FFB388F80147 +:10335000B388E84133FFE8029396060193D606014D +:10336000B3D8E802131F0F01336FDF00B3851503D5 +:1033700093870800637EBF00330FFF019387F8FF38 +:103380006368FF016376BF009387E8FF330FFF0197 +:10339000B305BF4013130301370F01003363F3007C +:1033A0009307FFFFB378F30093560601135303010D +:1033B000B377F6003387F802B307F302B388D80275 +:1033C0003303D302B388F80093560701B38616017E +:1033D00063F4F6003303E30193D7060133836700F8 +:1033E000B70701009387F7FFB3F6F600939606013F +:1033F0003377F7003387E60063E66500639E650078 +:10340000637CE5003306C7403337C7003307F70155 +:103410003303E340130706003307E5403335E50087 +:10342000B3856540B385A540B397D5013357C70130 +:1034300033E5E700B3D5C5016FF05FCC9308050015 +:103440009387050013080600138506001383080000 +:1034500063940628B7460080938686EF63F6C50E10 +:10346000370701006378E60C1307F00F3337C70006 +:10347000131737003355E600B386A60083C606004F +:10348000130500023387E600B306E540630CE50050 +:10349000B397D70033D7E8003318D600B365F700E9 +:1034A0003393D80093580801B3D7150313160801B6 +:1034B0001356060113570301B3F6150313850700CE +:1034C000B305F6029396060133E7E600637EB70084 +:1034D000330707011385F7FF636807016376B700B9 +:1034E0001385E7FF330707013307B740B3771703A7 +:1034F0001313030113530301335717039397070162 +:1035000033E36700B306E60213060700637CD300CB +:10351000330368001306F7FF636603016374D30087 +:103520001306E7FF131505013365C5009305000079 +:103530006F00400E3705000113070001E36CA6F28F +:10354000130780016FF01FF36316060013071000C6 +:103550003358C702370701006370E80C1307F00FF8 +:1035600063740701130580003357A800B386E60093 +:1035700003C70600130600023307A700B306E640A0 +:103580006316E60AB38707419305100093580801B4 +:10359000131608011356060113570301B3F6170358 +:1035A000B3D717039396060133E7E600330EF6020E +:1035B00013850700637EC701330707011385F7FFF3 +:1035C000636807016376C7011385E7FF33070701C7 +:1035D0003307C741B37717031313030113530301D1 +:1035E000335717039397070133E36700B306E602E7 +:1035F00013060700637CD300330368001306F7FF4C +:10360000636603016374D3001306E7FF1315050116 +:103610003365C5006780000037070001130500010E +:10362000E364E8F4130580016FF01FF43318D80049 +:10363000B3D5E7003393D800B397D70033D7E8006A +:10364000935808013366F70033F715039317080101 +:1036500093D7070113550601B3D5150313170701B7 +:103660003367A700B386B70213850500637ED700D2 +:10367000330707011385F5FF636807016376D700F9 +:103680001385E5FF33070701B306D74033F7160369 +:103690001316060113560601B3D6160313170701B6 +:1036A000B388D702B367C7001387060063FE17010C +:1036B000B38707011387F6FF63E8070163F6170175 +:1036C0001387E6FFB387070193150501B3871741F9 +:1036D000B3E5E5006FF09FEB63E6D518370701000F +:1036E00063F4E6041307F00FB335D7009395350064 +:1036F0003747008033D5B600130787EF3307A7009D +:1037000003470700130500023307B700B305E54080 +:103710006316E50213051000E3EEF6EE33B5C800BC +:10372000134515006FF01FEF3707000193050001E7 +:10373000E3E0E6FC930580016FF09FFB3353E60066 +:10374000B396B6003363D30013550301B31EB6001E +:1037500033D6E700B376A602B397B70033D7E800B5 +:103760003368F7009317030193D707011357080134 +:103770003356A6029396060133E7E600338FC7025D +:10378000130E0600637EE70133076700130EF6FF92 +:10379000636867006376E701130EE6FF330767008F +:1037A0003307E741B376A7023357A7029396060182 +:1037B0003386E7029317080193D70701B3E7F600B2 +:1037C0009306070063FEC700B38767009306F7FF01 +:1037D00063E8670063F6C7009306E7FFB3876700F7 +:1037E00013150E01370E01003365D5009306FEFF59 +:1037F0003378D500B387C740B3F6DE001356050112 +:1038000093DE0E013303D802B306D6021357030129 +:103810003308D8033308D800330707013306D6032B +:103820006374D7003306C601935607013386C6007A +:1038300063E6C702E39CC7CEB70701009387F7FF93 +:103840003377F700131707013373F300B398B80009 +:103850003307670093050000E3FEE8DA1305F5FF80 +:103860006FF0DFCC93050000130500006FF09FDAC6 +:1038700093080600138706009307050013880500C8 +:10388000639C0622B7460080938686EF63FCC50CD6 +:1038900037030100637E660A1303F00F6374C300ED +:1038A000130780003353E600B386660003CE06009C +:1038B000330EEE00130700023303C741630CC70148 +:1038C000B3956500335EC501B31866003368BE006A +:1038D000B317650013D608013377C80213950801A2 +:1038E0001355050193D607013358C8021317070172 +:1038F000B366D7003308050363FA0601B3861601E1 +:1039000063E6160163F40601B3861601B386064129 +:1039100033F7C6029397070193D70701B3D6C602C0 +:10392000B306D50213150701B367F50063FAD70094 +:10393000B387170163E6170163F4D700B387170154 +:10394000B387D74033D56700930500006780000038 +:103950003703000113070001E36666F413078001D3 +:103960006FF05FF46316060013061000B3581603D9 +:103970003706010063F2C80A1306F00F63741601DC +:103980001307800033D6E800B386C60003CE0600D6 +:10399000330EEE00130700023303C7416318C70953 +:1039A000B385154113D70801139508011355050177 +:1039B00013D60701B3F6E502B3D5E50293960601E7 +:1039C000B3E6C600B305B50263FAB600B3861601C6 +:1039D00063E6160163F4B600B3861601B385B640FC +:1039E000B3F6E5029397070193D70701B3D5E50234 +:1039F000B305B50213950601B367F50063FAB70086 +:103A0000B387170163E6170163F4B700B3871701A3 +:103A1000B387B7406FF01FF33706000113070001AB +:103A2000E3E2C8F6130780016FF0DFF5B398680092 +:103A300033D7C501B3176500335EC50113D508013F +:103A4000B376A702B3956500336EBE009395080167 +:103A500093D5050113560E013357A702939606011D +:103A6000B3E6C6003387E50263FAE600B3861601C3 +:103A700063E6160163F4E600B38616013386E6407A +:103A8000B376A602131E0E01135E0E013356A60274 +:103A9000939606013386C502B3E5C60163FAC500F5 +:103AA000B385150163E6150163F4C500B3851501FF +:103AB000B385C5406FF01FEFE3EAD5E83707010093 +:103AC00063FCE604130EF00F3337DE0013173700E4 +:103AD000B748008033D3E600938888EFB388680046 +:103AE00003CE0800330EEE00130700023303C74174 +:103AF000631EC70363E4B600636AC500B307C5402D +:103B0000B385D5403335F5003388A54013850700CC +:103B1000930508006FF09FE3B70800011307000149 +:103B2000E3E816FB130780016FF09FFA3357C601D5 +:103B3000B3966600336FD700B3D7C50113570F0193 +:103B4000B3F8E702B39565003358C5013368B80090 +:103B500093150F0193D5050193560801331666009E +:103B600033156500B3D7E70293980801B3E6D80090 +:103B7000B38EF5029388070063FED601B386E60193 +:103B80009388F7FF63E8E60163F6D6019388E7FFC1 +:103B9000B386E601B386D641B3FEE60213180801E8 +:103BA00013580801B3D6E602939E0E01B3EE0E0140 +:103BB000B385D5029387060063FEBE00B38EEE0187 +:103BC0009387F6FF63E8EE0163F6BE009387E6FF96 +:103BD000B38EEE01B385BE4093980801B70E010085 +:103BE000B3E8F8009387FEFF33F8F8009356060118 +:103BF00093D80801B377F6003307F802B387F802C9 +:103C00003308D802B388D8023308F8009356070166 +:103C1000B386060163F4F600B388D801B707010044 +:103C20009387F7FF13D80601B3F6F60093960601C3 +:103C30003377F700B30818013387E60063E6150110 +:103C4000639E1501637CE5003306C7403337C70028 +:103C50003307E701B388E840130706003307E54060 +:103C60003335E500B3851541B385A540B397C5014C +:103C70003357670033E5E700B3D565006FF01FCD1C +:103C8000973700009387073817160000130686370A +:103C900093D7C700130101FF1357C6009397A700DE +:103CA0002326110023248100232291009725000060 +:103CB0009385453593E7770C1317A7001367170013 +:103CC00093D6C5002322F600B707008023A0E500A5 +:103CD000B3E7F600739007189307F0FF7390273B44 +:103CE000B70719007390073A37150000EFE0CFECE3 +:103CF000B7240000138504FEEFE00FECB7150000B9 +:103D000037150000EFE0CFAF3714000093050480B3 +:103D100037150000EFE0CFAE1385048093050480D3 +:103D2000EFE00FAE8320C100032481008324410013 +:103D3000130500001301010167800000130101FF5A +:103D4000170500001305C50323261100EFE05FE30C +:103D50008320C1001305F0FF1301010167800000FB +:103D6000286E756C6C2900006D6379636C650000CA +:103D70006D696E737472657400000000496D706C3B +:103D8000656D656E74206D61696E28292C20666FE3 +:0D3D90006F210A002573203D2025640A00E4 +:103DA00090E8FFFF2CE8FFFF9CE8FFFF2CE8FFFFF7 +:103DB0002CE8FFFF2CE8FFFF2CE8FFFFACE8FFFF3B +:103DC0002CE8FFFF2CE8FFFF10E8FFFFDCEAFFFF15 +:103DD0002CE8FFFF10E8FFFF40E8FFFF40E8FFFF8F +:103DE00040E8FFFF40E8FFFF40E8FFFF40E8FFFF3B +:103DF00040E8FFFF40E8FFFF40E8FFFF2CE8FFFF3F +:103E00002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFF6A +:103E10002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFF5A +:103E20002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFF4A +:103E30002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFF3A +:103E40002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFF2A +:103E50002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFF1A +:103E60002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFF0A +:103E70002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFFFA +:103E80002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFFEA +:103E90002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFFDA +:103EA000F4EAFFFFDCE9FFFF2CE8FFFF2CE8FFFF4F +:103EB0002CE8FFFF2CE8FFFF2CE8FFFF2CE8FFFFBA +:103EC0002CE8FFFF10EBFFFF2CE8FFFF2CE8FFFFC3 +:103ED00080EBFFFFC8E8FFFF2CE8FFFF2CE8FFFFA7 +:103EE0002CEAFFFF2CE8FFFF8CEBFFFF2CE8FFFF25 +:103EF0002CE8FFFF10EAFFFF0001020203030303A7 +:103F00000404040404040404050505050505050569 +:103F10000505050505050505060606060606060649 +:103F20000606060606060606060606060606060631 +:103F30000606060606060606070707070707070719 +:103F40000707070707070707070707070707070701 +:103F500007070707070707070707070707070707F1 +:103F600007070707070707070707070707070707E1 +:103F700007070707070707070808080808080808C9 +:103F800008080808080808080808080808080808B1 +:103F900008080808080808080808080808080808A1 +:103FA0000808080808080808080808080808080891 +:103FB0000808080808080808080808080808080881 +:103FC0000808080808080808080808080808080871 +:103FD0000808080808080808080808080808080861 +:103FE0000808080808080808080808080808080851 +:083FF000080808080808080889 +:103FF8001000000000000000037A5200017C01015B +:104008001B0D02001000000018000000D8EFFFFF91 +:104018005004000000000000100000002C00000008 +:1040280014F4FFFF3404000000000000100000003A +:104038004000000034F8FFFF1004000000000000FA +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/qsort.riscv.hex b/benchmarks/riscv_tests/benchmarks/qsort.riscv.hex new file mode 100644 index 00000000..9918f607 --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/qsort.riscv.hex @@ -0,0 +1,1532 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A00097020000938202047390523097810000FF +:1000B000938181471382B185137202FC732540F14D +:1000C000930510006370B5001301150013111101A1 +:1000D00033014100131615013302C2006F20D01EF8 +:1000E000130101EF232211002324210023263100D4 +:1000F00023284100232A5100232C6100232E710064 +:1001000023208102232291022324A1022326B1026B +:100110002328C102232AD102232CE102232EF1023B +:10012000232001052322110523242105232631053F +:1001300023284105232A5105232C6105232E71050F +:1001400023208107232291072324A1072326B10717 +:100150002328C107232AD107232CE107232EF107E7 +:1001600073252034F325103413060100EF20C06EF0 +:1001700073101534B72200009382028073A00230FE +:1001800083204100032181008321C100032201015A +:1001900083224101032381018323C101032401023E +:1001A00083244102032581028325C1020326010322 +:1001B00083264103032781038327C1030328010406 +:1001C00083284104032981048329C104032A0105EA +:1001D000832A4105032B8105832BC105032C0106CE +:1001E000832C4106032D8106832DC106032E0107B2 +:1001F000832E4107032F8107832FC10713010111AC +:040200007300203037 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000009307050017470000130707D213050000C8 +:102010000326070083A607000328470083A547007F +:102020006312D6021305250093060580631AB800D3 +:102030001307870093878700E39C06FC13050000C5 +:10204000678000001305150067800000130101F38D +:1020500013152500130F8100B70F0040938E050064 +:10206000B388A50013030F0093854500130E4002AB +:10207000938FFFFFB387B8406348FE041386C5FF04 +:1020800063F8150383A60500938705006F00000120 +:1020900023A0E7009387C7FF6306F60003A7C7FFE7 +:1020A000E3C8E6FE23A0D70093854500E3EC15FDC9 +:1020B000630CE311832803008325C3FF130383FF0D +:1020C000B387B840E35CFEFAB387D5413387D84184 +:1020D00093D72740135727403387E7009357F701DB +:1020E000B387E70093D71740B387F701939727008B +:1020F00003A70500B387FE0083A6070023A0E7001F +:1021000003A7C5FF23A0D50083A7C8FF63DAE700B4 +:1021100023AEF5FE23AEE8FE83A605009307070075 +:1021200063D8D70023A0F50023AED8FE83A6050010 +:1021300083A7C5FF63D8F60023AED5FE23A0F50024 +:102140009386070013854500938708000328050040 +:1021500013054500E34CD8FE03A787FF138607004D +:102160009387C7FFE3CAE6FE63E8A700232EE5FED8 +:1021700023AE07FF6FF09FFD3388A84023A0E50042 +:10218000135728403388B74023AED7FE9307170074 +:102190001357284093068300130686FF63CCE7009D +:1021A000232413012322A3009308060013830600AF +:1021B0006FF05FEC2322B3002324C30093050500D6 +:1021C000138306006FF01FEB1301010D6780000001 +:1021D000130101EB23229113B70C00409387FCFFFE +:1021E000232481142322911423202115232A5113FF +:1021F00023261114232E3113232C4113232861137A +:1022000023267113232481132320A113232EB1111C +:102210001309050093840500130406002324D1004C +:10222000930A50022326F1006F0040016304050663 +:102230009385040013041400E7000900034504001B +:10224000E31655FF83461400930D140013870D0009 +:10225000930B00029309F0FF130AF0FF93050000AF +:1022600013065005130590009387D6FD93F7F70FDB +:1022700013041700636CF606172800001308488043 +:1022800093972700B387070183A70700B387070148 +:10229000678007008320C114032481148324411420 +:1022A000032901148329C113032A8113832A4113AB +:1022B000032B0113832BC112032C8112832C411297 +:1022C000032D0112832DC111130101156780000038 +:1022D000938B0600834617001307040013041700AE +:1022E0009387D6FD93F7F70FE378F6F8938504000C +:1022F00013055002E700090013840D006FF01FF46E +:1023000003481700938906FD13070400930708FD8F +:10231000930608006366F50293972900B389370195 +:102320001307170093991900B3890901034807009F +:10233000938909FD930708FD93060800E37EF5FCE9 +:10234000E3540AF2138A09009309F0FF6FF0DFF1FA +:1023500083461700130704006FF01FF193850400F4 +:1023600013055002E70009006FF05FED832781003D +:10237000834617001307040083A9070093874700CB +:102380002324F1006FF0DFFB1305000393850400A5 +:10239000E70009009385040013058007E7000900A2 +:1023A00083278100130C00012322010013874700BB +:1023B00083278100930D000083A907002324E100F7 +:1023C00013060C00930600001385090093850D0089 +:1023D000EF10C01B2328A10093070000930C0500F9 +:1023E0006380B723130B4101130D100013060C007B +:1023F000930600001385090093850D00EF00D0556A +:1024000013060C009306000093090500938D050048 +:10241000EF10C017832741002320AB002320A10128 +:10242000930C0500130B4B00130D1D00E390B7FD3B +:10243000E3FE89FB635C4D01130AFAFF93850400F8 +:1024400013850B00E7000900E3484DFF83270100D7 +:102450000327C10093099000338AE700131A2A006A +:1024600093070101338A47016F00C000832C0A00E3 +:10247000130ACAFFB3B79901B307F04093F7770285 +:10248000938707033385970193850400E7000900CC +:102490009307C100E39C47FD6FF05FDA93071000DC +:1024A00063CCB7160327810093074700638605189E +:1024B000832907002324F10013DCF941634E0C1833 +:1024C000930D0C0023220100130CA0006FF05FEFAE +:1024D000130C0001232201009307100063C2B71000 +:1024E00083278100138747006FF09FEC83278100CB +:1024F00083AD0700138B470063840D1863584009B0 +:102500009307D002639EFB0403C50D006308050218 +:10251000930BF0FF63C609009389F9FF638E79017D +:1025200093850400938D1D00E700090003C50D008D +:10253000130AFAFFE31005FE635C4001130AFAFF79 +:102540009385040013050002E7000900E3180AFE62 +:10255000232461016FF09FCE971D0000938D4D4E97 +:1025600093870D00B3863D01639809006F00401307 +:10257000938717006386D70003C70700E31A07FE97 +:10258000B387B741330AFA40634C401103C50D00CD +:10259000E30005FC930BF0FF6FF0DFF79347FAFFC2 +:1025A00093D7F74183461700337AFA0013070400E4 +:1025B0006FF09FCB832781009385040003A507005C +:1025C000138B4700E7000900232461016FF01FC748 +:1025D0008346170093851500130704006FF0DFC8CA +:1025E00083278100138B7700137B8BFF93078B006E +:1025F00083290B00832D4B002324F1006FF05FDC57 +:10260000E3F289DF9307100023200100130D10006F +:10261000E3C447E36FF09FE383278100138B7700C8 +:10262000137B8BFF93078B0083290B00032C4B003C +:102630002324F1006FF09FE8032781006FF05FE72C +:10264000130C8000232201006FF01FE9130CA0007F +:10265000232201006FF05FE8938504001305D00288 +:10266000E700090033373001B3078041B309304137 +:10267000B38DE740130CA000232201006FF05FD45C +:10268000635640019307D002E398FBEC971D0000CE +:10269000938D0D3B13058002930BF0FF6FF09FE7C6 +:1026A000130AFAFF9385040013850B00E700090065 +:1026B000E30E0AEC130AFAFF9385040013850B005E +:1026C000E7000900E31E0AFC6FF05FEC83A705003A +:1026D0002380A70083A705009387170023A0F50098 +:1026E00067800000130101F81308F103137808FC58 +:1026F000130700042320E800930700002322F800BA +:10270000130710002324E800930700002326F80095 +:102710002328A800232AB800232CC800232ED80081 +:102720000F00F00F97F6FFFF9386C68D23A00601DA +:102730009307000023A2F60097F6FFFF938686908A +:1027400003A7060083A746003367F700E30A07FEE6 +:102750001307000023A0E6009307000023A2F60061 +:102760000F00F00F0325080083254800130101081E +:1027700067800000130101FF2324810083250204E8 +:102780009307020023261100B387B70013861500B4 +:102790002380A7002320C2049307A0006300F50252 +:1027A00093070004630CF6008320C100032481001A +:1027B0001305000013010101678000009356F641E4 +:1027C0001305020093050000EFF0DFF18320C10044 +:1027D00023200204032481001305000013010101DA +:1027E00067800000732700B0975700009387475415 +:1027F000631E050083A60700171600001306C624F3 +:102800009755000023A2C5523307D74023A0E70005 +:10281000732720B0631E050083A64700171600002B +:10282000130606239755000023A2C5503307D7404F +:1028300023A2E700678000009316150013E7160037 +:1028400097E6FFFF9386067C9307000023A0E6002F +:1028500023A2F6006F0000003716000097E7FFFF85 +:102860009387477A130636A79306000023A0C70074 +:1028700023A2D7006F000000130101FF23261100DF +:10288000EFF09FFB97E7FFFF9387C7771306D01002 +:102890009306000023A0C70023A2D7006F0000000A +:1028A000834705006382070213060500834716006D +:1028B00013061600E39C07FE3306A64093060000AD +:1028C000930500006FF01FE213060000930600005E +:1028D000930500006FF01FE16310050067800000A2 +:1028E000130101FD13070500232611021305C10082 +:1028F0001306B101130890006F00800013860700D3 +:102900009377F700B337F800B307F04093F77702F7 +:102910009376F70093870703B387F6002300F6004A +:102920009396C501135747009307F6FF33E7E60078 +:1029300093D54500E314C5FC230E0100EFF05FF6CC +:102940008320C1021301010367800000130101FC11 +:1029500013034102130E05002322B1022324C102F6 +:102960002326D10217050000130505E19306030095 +:1029700013060E0093050000232E11002328E10208 +:10298000232AF102232C0103232E110323266100A5 +:10299000EFF01F848320C10113050000130101041F +:1029A00067800000130101FB1303810323248102CC +:1029B0002326A100232CC102232ED10213040500DB +:1029C0001386050017050000130585D09305C10087 +:1029D00093060300232611022322F1042320E1049D +:1029E0002324010523261105232E6100EFF04FFE5D +:1029F0008327C100238007000325C1008320C10273 +:102A0000330585400324810213010105678000001E +:102A1000B3E7C500B367F50093F73700B306C50009 +:102A2000638407023386C50093070500637ED502E1 +:102A300003C705009385150093871700A38FE7FE52 +:102A4000E318B6FE67800000E37ED5FE930705001D +:102A500003A70500938747009385450023AEE7FE53 +:102A6000E3E8D7FE6780000067800000B367C50019 +:102A700093F737003306C5006380070293F5F50F1F +:102A8000930705006370C50493871700A38FB7FEF3 +:102A9000E31CF6FE6780000093F5F50F13978500A1 +:102AA00033E7E500931707013367F700E374C5FECA +:102AB000930705009387470023AEE7FEE3ECC7FECC +:102AC0006780000067800000130101F6975700003F +:102AD0009387872623244109175A0000130ACA2521 +:102AE00023263109B309FA40232A91082328210912 +:102AF0009304050013890500130502009385070060 +:102B000013860900232E1108232C81082322510942 +:102B1000930A0200EFF0DFEF138601863306464189 +:102B20009305000033853A01EFF05FF49305090047 +:102B300013850400EFF05FDA930500001305000031 +:102B4000EF00D065175900001309891E832609007C +:102B50001304F103137404FC930405006394060446 +:102B6000832649006396060013850400EFF0DFCC4E +:102B700013090400975900009389091B03A6490013 +:102B800013050900971500009385C5EEEFF09FE14E +:102B90003309A900E30A24FD13050400EFF05FD018 +:102BA0006FF09FFC975900009389091803A609004C +:102BB00097150000938505EC13050400EFF09FDEE8 +:102BC000832649003309A400E38606FC6FF01FFB4F +:102BD00083470500638E07009307050003C71700AE +:102BE00093871700E31C07FE3385A740678000002A +:102BF000130500006780000013060500B306B60049 +:102C00001385050093070600639805006F00C00157 +:102C1000938717006388F60003C70700E31A07FECF +:102C20003385C74067800000678000008347050048 +:102C3000938515001305150003C7F5FF638807008A +:102C4000E386E7FE3385E7406780000093070000D6 +:102C50006FF05FFF9307050003C705009387170018 +:102C600093851500A38FE7FEE31807FE6780000039 +:102C70000347050093060002930705006318D70079 +:102C800003C7170093871700E30CD7FE9306D00203 +:102C90006300D7069306B0026300D70483C607001B +:102CA0009305000063820604130500009387170054 +:102CB000138606FD1317250083C607003305A700FA +:102CC000131515003305A600E39206FE6380050286 +:102CD0003305A0406780000083C6170093050000FD +:102CE00093871700E39206FC13050000678000003D +:102CF00083C617009305100093871700E39606FA22 +:102D0000130500006FF09FFE138F050013080000ED +:102D100063DC0500B337A000B305B040338FF54046 +:102D20003305A0401308F0FF63DA0600B335C00096 +:102D30003307D040B306B7403306C04093080600BF +:102D4000138706009307050093050F00639406247C +:102D5000B7460080938646BD6376CF0E37030100E9 +:102D60006378660C1303F00F6374C30013078000CD +:102D70003353E600B386660003CE0600330EEE0042 +:102D8000130700023303C741630CC701B3156F007B +:102D9000335EC501B3186600B365BE00B3176500A6 +:102DA00013D60801B3F6C5021395080113550501A2 +:102DB00013D70701B3D5C5029396060133E7E600A2 +:102DC000B305B502637AB7003307170163661701CD +:102DD0006374B700330717013307B740B376C702F0 +:102DE0009397070193D707013357C7023307E502CB +:102DF00013950601B367F50063FAE700B38717017F +:102E000063E6170163F4E700B3871701B387E74070 +:102E100033D5670093050000630A0800B337A000AC +:102E2000B306B040B385F6403305A040678000008C +:102E30003703000113070001E36C66F213078001FA +:102E40006FF01FF36316060093081000B3D8E80272 +:102E50003706010063F6C8121306F00F63741601FB +:102E60001307800033D6E800B386C60003CE060001 +:102E7000B3051F41330EEE00130700023303C741B1 +:102E80006306C709B3986800B35ECF01B317650046 +:102E9000335EC50113D50801B3156F00336EBE0054 +:102EA0009395080193D5050113560E01B3D6AE02D2 +:102EB00033F7AE02B386D502131707013367C70095 +:102EC000637AD70033071701636617016374D7006D +:102ED000330717013306D7403377A602131E0E01BE +:102EE000135E0E013356A602131707013386C5027F +:102EF000B365C70163FAC500B385150163E6150123 +:102F000063F4C500B3851501B385C54093D60801A8 +:102F100033F7D502139508011355050113D60701A0 +:102F2000B3D5D502131707013367C700B305B50240 +:102F3000637AB70033071701636617016374B7003C +:102F400033071701B305B74033F7D502939707014D +:102F500093D70701B3D5D502B305B5021315070101 +:102F6000B367F50063FAB700B387170163E617018B +:102F700063F4B700B3871701B387B7406FF05FE919 +:102F80003706000113070001E3EEC8EC13078001C8 +:102F90006FF05FEDE362DFE83707010063FAE604F4 +:102FA000930EF00F33B7DE0013173700B7480080D9 +:102FB00033D3E600938848BDB388680083CE080009 +:102FC000B38EEE0013070002330ED741631CD70304 +:102FD00063E4E601636AC500B307C540B305DF409B +:102FE0003335F500B385A540138507006FF0DFE2A8 +:102FF000B708000113070001E3EA16FB130780017D +:103000006FF0DFFA3357D601B396C601B36FD7001E +:10301000B357DF0113D70F0133F3E702B315CF0125 +:10302000B356D501B3E6B60093950F0193D50501CC +:1030300093D806013316C6013315C501B3D7E7028D +:1030400013130301B3681301338FF50213830700D1 +:1030500063FEE801B388F8011383F7FF63E8F80122 +:1030600063F6E8011383E7FFB388F801B388E8410A +:1030700033FFE8029396060193D60601B3D8E8021F +:10308000131F0F01336FDF00B3851503938708000B +:10309000637EBF00330FFF019387F8FF6368FF0172 +:1030A0006376BF009387E8FF330FFF01B305BF408E +:1030B00013130301370F01003363F3009307FFFF7E +:1030C000B378F3009356060113530301B377F60068 +:1030D0003387F802B307F302B388D8023303D3026D +:1030E000B388F80093560701B386160163F4F6001F +:1030F0003303E30193D7060133836700B707010069 +:103100009387F7FFB3F6F600939606013377F7003F +:103110003387E60063E66500639E6500637CE50037 +:103120003306C7403337C7003307F7013303E340A3 +:10313000130706003307E5403335E500B3856540E6 +:10314000B385A540B397D5013357C70133E5E700F1 +:10315000B3D5C5016FF05FCC9308050093870500D8 +:1031600013080600138506001383080063940628DD +:10317000B7460080938646BD63F6C50E370701004B +:103180006378E60C1307F00F3337C70013173700C7 +:103190003355E600B386A60083C606001305000279 +:1031A0003387E600B306E540630CE500B397D7002C +:1031B00033D7E8003318D600B365F7003393D8004F +:1031C00093580801B3D715031316080113560601C7 +:1031D00013570301B3F6150313850700B305F60271 +:1031E0009396060133E7E600637EB70033070701D5 +:1031F0001385F7FF636807016376B7001385E7FF60 +:10320000330707013307B740B377170313130301DD +:1032100013530301335717039397070133E36700F1 +:10322000B306E60213060700637CD300330368008D +:103230001306F7FF636603016374D3001306E7FF09 +:10324000131505013365C500930500006F00400E9E +:103250003705000113070001E36CA6F21307800194 +:103260006FF01FF363160600130710003358C702F0 +:10327000370701006370E80C1307F00F6374070150 +:10328000130580003357A800B386E60003C7060085 +:10329000130600023307A700B306E6406316E60AEA +:1032A000B3870741930510009358080113160801CE +:1032B0001356060113570301B3F61703B3D71703C9 +:1032C0009396060133E7E600330EF60213850700F6 +:1032D000637EC701330707011385F7FF63680701A2 +:1032E0006376C7011385E7FF330707013307C7413B +:1032F000B377170313130301135303013357170352 +:103300009397070133E36700B306E602130607004D +:10331000637CD300330368001306F7FF6366030181 +:103320006374D3001306E7FF131505013365C50069 +:10333000678000003707000113050001E364E8F42B +:10334000130580016FF01FF43318D800B3D5E700E0 +:103350003393D800B397D70033D7E80093580801C8 +:103360003366F70033F715039317080193D7070166 +:1033700013550601B3D51503131707013367A700CB +:10338000B386B70213850500637ED70033070701B4 +:103390001385F5FF636807016376D7001385E5FFA2 +:1033A00033070701B306D74033F716031316060198 +:1033B00013560601B3D6160313170701B388D702B5 +:1033C000B367C7001387060063FE1701B3870701C1 +:1033D0001387F6FF63E8070163F617011387E6FF1B +:1033E000B387070193150501B3871741B3E5E500DE +:1033F0006FF09FEB63E6D5183707010063F4E6042E +:103400001307F00FB335D700939535003747008089 +:1034100033D5B600130747BD3307A700034707009E +:10342000130500023307B700B305E5406316E50254 +:1034300013051000E3EEF6EE33B5C8001345150092 +:103440006FF01FEF3707000193050001E3E0E6FC92 +:10345000930580016FF09FFB3353E600B396B600EF +:103460003363D30013550301B31EB60033D6E70010 +:10347000B376A602B397B70033D7E8003368F700F6 +:103480009317030193D70701135708013356A60278 +:103490009396060133E7E600338FC702130E06004A +:1034A000637EE70133076700130EF6FF636867006A +:1034B0006376E701130EE6FF330767003307E74142 +:1034C000B376A7023357A702939606013386E70225 +:1034D0009317080193D70701B3E7F6009306070097 +:1034E00063FEC700B38767009306F7FF63E86700D2 +:1034F00063F6C7009306E7FFB387670013150E0155 +:10350000370E01003365D5009306FEFF3378D500F2 +:10351000B387C740B3F6DE001356050193DE0E01F4 +:103520003303D802B306D602135703013308D80376 +:103530003308D800330707013306D6036374D70076 +:103540003306C601935607013386C60063E6C702F9 +:10355000E39CC7CEB70701009387F7FF3377F700E7 +:10356000131707013373F300B398B80033076700EC +:1035700093050000E3FEE8DA1305F5FF6FF0DFCCFA +:1035800093050000130500006FF09FDA9308060012 +:10359000138706009307050013880500639C062225 +:1035A000B7460080938646BD63FCC50C3703010017 +:1035B000637E660A1303F00F6374C3001307800071 +:1035C0003353E600B386660003CE0600330EEE00EA +:1035D000130700023303C741630CC701B3956500AD +:1035E000335EC501B31866003368BE00B3176500CB +:1035F00013D608013377C802139508011355050146 +:1036000093D607013358C80213170701B366D700D2 +:103610003308050363FA0601B386160163E6160153 +:1036200063F40601B3861601B386064133F7C6027A +:103630009397070193D70701B3D6C602B306D50205 +:1036400013150701B367F50063FAD700B3871701B5 +:1036500063E6170163F4D700B3871701B387D74038 +:1036600033D5670093050000678000003703000131 +:1036700013070001E36666F4130780016FF05FF43F +:103680006316060013061000B35816033706010030 +:1036900063F2C80A1306F00F637416011307800063 +:1036A00033D6E800B386C60003CE0600330EEE0024 +:1036B000130700023303C7416318C709B3851541D7 +:1036C00013D70801139508011355050113D60701F7 +:1036D000B3F6E502B3D5E50293960601B3E6C6005C +:1036E000B305B50263FAB600B386160163E61601A8 +:1036F00063F4B600B3861601B385B640B3F6E502AF +:103700009397070193D70701B3D5E502B305B50237 +:1037100013950601B367F50063FAB700B387170185 +:1037200063E6170163F4B700B3871701B387B740A7 +:103730006FF01FF33706000113070001E3E2C8F63C +:10374000130780016FF0DFF5B398680033D7C50128 +:10375000B3176500335EC50113D50801B376A70220 +:10376000B3956500336EBE009395080193D50501AE +:1037700013560E013357A70293960601B3E6C6000F +:103780003387E50263FAE600B386160163E61601A5 +:1037900063F4E600B38616013386E640B376A602EC +:1037A000131E0E01135E0E013356A60293960601F8 +:1037B0003386C502B3E5C60163FAC500B3851501BA +:1037C00063E6150163F4C500B3851501B385C540F3 +:1037D0006FF01FEFE3EAD5E83707010063FCE6046A +:1037E000130EF00F3337DE0013173700B748008091 +:1037F00033D3E600938848BDB388680003CE080041 +:10380000330EEE00130700023303C741631EC703E4 +:1038100063E4B600636AC500B307C540B385D5400D +:103820003335F5003388A54013850700930508005C +:103830006FF09FE3B708000113070001E3E816FBF0 +:10384000130780016FF09FFA3357C601B3966600E5 +:10385000336FD700B3D7C50113570F01B3F8E70291 +:10386000B39565003358C5013368B80093150F014F +:1038700093D505019356080133166600331565008C +:10388000B3D7E70293980801B3E6D800B38EF502E8 +:103890009388070063FED601B386E6019388F7FF9D +:1038A00063E8E60163F6D6019388E7FFB386E60195 +:1038B000B386D641B3FEE602131808011358080177 +:1038C000B3D6E602939E0E01B3EE0E01B385D50288 +:1038D0009387060063FEBE00B38EEE019387F6FF6A +:1038E00063E8EE0163F6BE009387E6FFB38EEE0158 +:1038F000B385BE4093980801B70E0100B3E8F80005 +:103900009387FEFF33F8F8009356060193D8080119 +:10391000B377F6003307F802B387F8023308D8020A +:10392000B388D8023308F80093560701B38606011E +:1039300063F4F600B388D801B70701009387F7FF57 +:1039400013D80601B3F6F600939606013377F70015 +:10395000B30818013387E60063E61501639E15017D +:10396000637CE5003306C7403337C7003307E70100 +:10397000B388E840130706003307E5403335E50018 +:10398000B3851541B385A540B397C501335767008B +:0C39900033E5E700B3D565006FF01FCDF4 +:10399C00130101FF23248100371400001305048058 +:1039AC00970500009385853723261100EFE04FE93A +:1039BC001725000013058536EFE0CFE3630C0500F7 +:1039CC008320C100032481001305100013010101A1 +:1039DC006780000013051000EFE01FE01305048062 +:1039EC009725000093858533EFE08FE513050000E4 +:1039FC00EFE09FDE032481008320C1001705000047 +:103A0C001305C531130101016FE0CFDE130101FF76 +:103A1C00170500001305C50323261100EFE09FE7EF +:103A2C008320C1001305F0FF130101016780000022 +:103A3C00286E756C6C2900006D6379636C650000F1 +:103A4C006D696E737472657400000000496D706C62 +:103A5C00656D656E74206D61696E28292C20666F0A +:0D3A6C006F210A002573203D2025640A000B +:103A7C00D4E8FFFF70E8FFFFE0E8FFFF70E8FFFF0E +:103A8C0070E8FFFF70E8FFFF70E8FFFFF0E8FFFF52 +:103A9C0070E8FFFF70E8FFFF54E8FFFF20EBFFFF2B +:103AAC0070E8FFFF54E8FFFF84E8FFFF84E8FFFFA6 +:103ABC0084E8FFFF84E8FFFF84E8FFFF84E8FFFF52 +:103ACC0084E8FFFF84E8FFFF84E8FFFF70E8FFFF56 +:103ADC0070E8FFFF70E8FFFF70E8FFFF70E8FFFF82 +:103AEC0070E8FFFF70E8FFFF70E8FFFF70E8FFFF72 +:103AFC0070E8FFFF70E8FFFF70E8FFFF70E8FFFF62 +:103B0C0070E8FFFF70E8FFFF70E8FFFF70E8FFFF51 +:103B1C0070E8FFFF70E8FFFF70E8FFFF70E8FFFF41 +:103B2C0070E8FFFF70E8FFFF70E8FFFF70E8FFFF31 +:103B3C0070E8FFFF70E8FFFF70E8FFFF70E8FFFF21 +:103B4C0070E8FFFF70E8FFFF70E8FFFF70E8FFFF11 +:103B5C0070E8FFFF70E8FFFF70E8FFFF70E8FFFF01 +:103B6C0070E8FFFF70E8FFFF70E8FFFF70E8FFFFF1 +:103B7C0038EBFFFF20EAFFFF70E8FFFF70E8FFFF64 +:103B8C0070E8FFFF70E8FFFF70E8FFFF70E8FFFFD1 +:103B9C0070E8FFFF54EBFFFF70E8FFFF70E8FFFFDA +:103BAC00C4EBFFFF0CE9FFFF70E8FFFF70E8FFFFBD +:103BBC0070EAFFFF70E8FFFFD0EBFFFF70E8FFFF3C +:103BCC0070E8FFFF54EAFFFF000102020303030346 +:103BDC000404040404040404050505050505050591 +:103BEC000505050505050505060606060606060671 +:103BFC000606060606060606060606060606060659 +:103C0C000606060606060606070707070707070740 +:103C1C000707070707070707070707070707070728 +:103C2C000707070707070707070707070707070718 +:103C3C000707070707070707070707070707070708 +:103C4C0007070707070707070808080808080808F0 +:103C5C0008080808080808080808080808080808D8 +:103C6C0008080808080808080808080808080808C8 +:103C7C0008080808080808080808080808080808B8 +:103C8C0008080808080808080808080808080808A8 +:103C9C000808080808080808080808080808080898 +:103CAC000808080808080808080808080808080888 +:103CBC000808080808080808080808080808080878 +:083CCC000808080808080808B0 +:103CD4001000000000000000037A5200017C010182 +:103CE4001B0D0200100000001800000018F0FFFF78 +:103CF4005004000000000000100000002C00000030 +:103D040054F4FFFF34040000000000001000000021 +:103D14004000000074F8FFFF1004000000000000E1 +:103D2400278B0A00F4BE0D00C4832100629B260089 +:103D34006F35300092BE3500EFE53900BC823D009E +:103D4400D602510004D7510033909400F91DAF00FE +:103D54009677C2004010C400536AC5001D1FC900F5 +:103D6400BBE7D3004C8BD7009545D900D86BFA003C +:103D74000F632501B9FF3A0132D94401F5C7510156 +:103D8400EE545B015B5B6301AD00740195FA8A013B +:103D9400B0309101CB369701FEBEA1011894A40165 +:103DA400852AAF012453B701C7E9D801D75CDB01E9 +:103DB400A5C8E1013421E20142241F02342B23026D +:103DC400FCD63402ADBD3602364C4D0266827C020E +:103DD400CA318102DEB69E02A6B6CD027D12D4029D +:103DE400023ED402A72EE1025842E802E35C060335 +:103DF40002B8090325C3140386F635032E474E0380 +:103E04005C707703E055780382238A03CDB69B0365 +:103E140022B9AD031F3EB503EA08C50310B4DC03A1 +:103E240069EAF70307A10E04F4AA1E04586F2A04D2 +:103E3400932C2C04C2C43904A8824F0431E25604E2 +:103E4400C6F65804DAB27604247E8604B68698044C +:103E5400B6499E04F280AB041C9CC904EADECA0481 +:103E64004B73D2048B19DA0428A4F00481D90F050A +:103E740071353D0552554B05A42454055F415E053B +:103E8400A4416F055CF27F05BF458505DAEF88051F +:103E940067FB8D0507EFA5052012B505116EEE052C +:103EA400EDA43C0640033E061F094806D4D554063B +:103EB400B7845A068327620622246306C447700621 +:103EC400D63A75067F4176065F89790600C17F067A +:103ED400E43E87064886AD069DE1B6068B4BC306D5 +:103EE4007018C5062896CE06E202DB06C3B7F506AF +:103EF400C03FFD06218FFD069FF70407D6251C074A +:103F0400EED121073F7A470793345A07BF67620708 +:103F14003F199F07E9AFA107FCA8BF074515D507BF +:103F2400387BF9077398030815220C08CA49160848 +:103F3400172A2B08689B3608698450089B6C600814 +:103F440071DAAD08DBD3B308FD09D4086B5BDA087A +:103F5400112CE4085737FE08306D060985811309D2 +:103F6400E5034A09C1F953094FF9570960899F09C3 +:103F7400B654A009B6B5BC097730FE0930410F0A22 +:103F84009B37170A45D31D0A154A260A1A2F420AD7 +:103F940003BA500AD9535C0AD248600A4FC46D0A66 +:103FA4007FC9790A30297B0A25EA7D0A74588E0A6A +:103FB40099D0A90A91F5C20AA3BCC30A4281D20AC4 +:103FC400AE3AE20A5ABAF20A33E90F0BE8EA100BE6 +:103FD40060D3150BE0DB170BD0DC180B92E8340B25 +:103FE400E376560B9A5A5B0B267C5F0B14488E0BB8 +:103FF400663FA50B0ADBB40B20B4CC0BB916D00B6F +:1040040060CDD00B1909ED0B169FEF0BEAF2110CE2 +:1040140057A6300CEC2C380C6349510CE245680C63 +:10402400C06F6C0C28D9850CFFC48F0C6E36920CB3 +:10403400C090A30C9165AF0C0975CC0C80EAD00C30 +:10404400A18AE60CEC68E80C9FCCFA0CE9A7080DF1 +:104054000A3B310D4B49360DD188430D8B9E6A0DB9 +:10406400CD18770D037E770D1485830DD490830DC1 +:104074007C50860DAF89870DD3438E0DAC05950D0D +:1040840011A9A50D0015B40DCAB6BA0D3A32BF0D6B +:10409400118DC70D55A4D60DB127F30D4F121E0E69 +:1040A4001BA5200EE0D8330E243B380E98F64D0E97 +:1040B400E38C570E31B6640E8A93650E1D3A680E72 +:1040C40048F8950EC9069A0EB2839F0E4BA1BC0EFA +:1040D40014BEBF0E68C3BF0EC71EE20E530BE70E1D +:1040E40091ABE80E66DBF10EDACFF30E00CDFD0ED8 +:1040F4003E2F220FDA73360F0E76450FF6614F0FFF +:10410400B79E5C0F737B630FB1C17B0FBDDC7B0F6C +:10411400C45F830FB782890F3893890FBF5F8B0FFA +:104124006E09970FFE1ED10FDCC2EC0FDCB0FA0F44 +:104134004E2D0B103D231E10234D24101FF8341058 +:10414400254C6010F5458A10290F9110B20DA51069 +:104154009A8FC410AFCEE4107989F710E6DD2211EE +:104164000F5D2B11C843441136DC5C11EC7E7811D1 +:104174000200891127829F11C84FCF112618DA1126 +:10418400E88DE411E012EB11A63FF611BD04FB111A +:10419400612BFB1142820312F6511C12B4AC2012A3 +:1041A40074E421121C3225121F673512436339123D +:1041B40095C85B12BE6366124667681220C968120E +:1041C40008647E12B56D8B124417DD128300F4125D +:1041D400AABFFF1241E71413ACC03C13412453138C +:1041E4009B0E6413CB486913D84D9513B2E49C130A +:1041F40086DBA7136AA2B213C700BF132FFECC132A +:1042040036B4E513E302E7133801E91394A7FE1368 +:1042140077370A14AE982D1455864714D6BD4A1420 +:10422400A2815A14D78B5D14A34F62145E5A721480 +:1042340027967314082E7C142AE2881430268E14D0 +:10424400A7ACA8148A10C014331FD114EB5BDF147D +:10425400D626F714AECA18151E3F321542774015FC +:10426400DBDF4115A5634215E21F7115F1D17E15FF +:10427400E0189F1540B4AA15E72FBB15D0A9BB15AC +:10428400D1A7C515167FCE15B268DB15890FEE15BB +:10429400E77EF7152FCEFC15D6122916C18D3016E0 +:1042A4002D5F33165FEB331661FD3E16F22F401679 +:1042B4009A376716423975161FBF9516FC429E162B +:1042C400D26AA716D60AB7164B53BE16E5D8C3163C +:1042D400AB4ECB168109001792160D172116121733 +:1042E40047541517357B1A17A3752D17263A33171C +:1042F400E3464A174B185317D5B790174C39BC17D8 +:104304004ABBBC17DAE6C61759FFC917BD3ACF171F +:10431400C661D7174097ED17ECEE0218D2100B18B0 +:10432400EF1A4E188D8E8C1856C69E18CEA1D21830 +:104334007596E318FE3DFA18DE19FB1880B20019D1 +:10434400F04F0A19CBFA1A1944ED2719530A3B19ED +:10435400BFB14E198BB5A219C95CC1198019C9190D +:104364006BE9CE19F159D519F14AEB196D30F119F0 +:10437400F2F8F1198618041A00AF051A4773061AE1 +:10438400E9EF161AA234261A8066721A3E6A7C1A5B +:104394003F199B1AA145B81A74C1BE1A998FE81A1D +:1043A400D588FE1AB4FB141B782E161BD3E01A1BF7 +:1043B40052D22B1BBF0F351B86FB601B6375711B11 +:1043C40066AB781B160F811BF35A821B3EE8941BC5 +:1043D40032A6961B77B1AA1B3F38B41BD528B91B4C +:1043E4000903051CD0842D1CAB742F1C5543361CAB +:1043F400004B731C60A9741CA9B4881CC50AB41CA6 +:10440400D412B41C55BBC81C3B4ECF1C0D00F51C6C +:10441400054CFA1CA188FA1C6595141D5FDA421D2F +:1044240082105B1DBC71771D0997821DEADAAC1DF1 +:104434002998B91D5FD7CB1D2425D31DF59AD81D06 +:10444400448AEF1DF9DAF01D486EF41DC9C9001E37 +:104454001DD5081E6B0F301EDE25451E6280461ECC +:104464002B19481E467F581E4116621EE8476D1ED2 +:104474002C936D1E6E0B8C1E11E9931E0D549C1E05 +:1044840063A79C1EC449A61E7DF8B01EAC98B81E36 +:1044940050A9BE1E1081DC1E322DE11E5548F21EAD +:1044A400C390F41E23FDF91E0699031F7E5E061FAA +:1044B400393D091F05891F1F7150231FE77D401FC8 +:1044C400491C541F3902791FB7778B1FFD96981F1B +:1044D400EEB1B71F53CDBC1F617BC61FDE0DDA1FC3 +:1044E400F916F01FC6ADF31FBB731F204C0C272019 +:1044F400A7DD2E20D7D72F208C2C3120F4463E2048 +:10450400D18E5720B80D6C20D87F7A20300D7D20B5 +:10451400ED3A8520C97F9020D478B3201DF3BC20C8 +:104524001875D02061CFFB2003E52821787059212C +:10453400520B6B21309D8E21DE81AF21AF03BF2151 +:104544005DA1D7216EF1E421E7BBF8217D7512222C +:10455400F3B11B22E4273A2230E36222A72E6A2217 +:1045640062956A22F7967F220A8185224B2E992230 +:1045740091AA9C220896C12281FBE02260ABEA2228 +:10458400A92F1C23DF3935232B4E49234AC94C2339 +:104594003B8F68238E27742370ED8123C5049C23ED +:1045A4004D03A523306AE723F2A2EF23A67CF3236D +:1045B400C1E3FE23AB810424EA370F241C493524CC +:1045C4004AB439243ECD7E240D499C24CD3EA224F8 +:1045D400B55CB324C366D2248BDDD524FD81D824F5 +:1045E4007653E024FABBEB24363AEC24F905F424A0 +:1045F4003D0BFC24BDC3112585B61425EA90152571 +:10460400C0762C25B018302548DC3A255F623C255D +:1046140083D03F25D6E04F2503527525F00A932514 +:104624009EA39C258D64A2259B97AA2578E3B42597 +:1046340007F9BB254A7BBE2586FFEF254FEB0126F4 +:10464400BDA90926AE5F322640256726A9836F26B9 +:10465400C1AF8B26E978BA26600BC626E2A9D52617 +:1046640086EDD826C4EBDD2648E8E2263FC4EC26D6 +:10467400DD8AF526D82A092780920D27BA4F1127FB +:10468400C2532827C7DB2C275CEC6A27B6BF9927BF +:104694003B47AC27FDE2BB27D0DFF827C7980B28A0 +:1046A400ADD6122827BD1B2811FE2828A549352878 +:1046B400F81044285BD0452889915D286FB670288E +:1046C4004DA38028FD9B8A28F0C5A628B4C1BB2829 +:1046D40053F1BD28555DD42831B4EF28EA250129CA +:1046E400E7370729646C092903682B295DDE2C2927 +:1046F40037C62D29904131295DFC4B2957985929FA +:10470400AE287C295BFD7E2932F4822915D59529B2 +:10471400A0DA97296B9898297BB6A429A739C429CC +:10472400330ED729227ADD29E5EAE829BA350D2A9C +:104734008F71122A85281A2ADA4E212AE3A5222A01 +:10474400C26A4C2A6F6B8F2A82BC952A5163AC2AA9 +:10475400F274CA2A2C83EF2A284DFA2A1997012BBE +:1047640027540B2BEDD00C2B1F260E2BECDE162B17 +:104774002A0B1D2BBE4D262B120C482B8824532BA1 +:104784004B1C5E2B8DE57A2BA26F7B2B814D842BEA +:10479400C870872B0D5D892BE1D18F2BA06C9B2BCF +:1047A4004ED29D2B495DA72BDC35A82B496AE52BFE +:1047B400207DF32B05A3F52BC064072C6758152C1B +:1047C400CCAE232C57F52B2CB8942D2CABDA3C2CE7 +:1047D4007903522C03A8542C3D986A2CADAA732C4F +:1047E400AB5C8F2C229F9D2C452CAB2C8AB8BD2C06 +:1047F400AB1EC22CC4DDD02C4988D82C2766E62CED +:10480400726BF42C84E5F42CEACEFE2C21D9082D0D +:1048140006900C2D73EA2A2D8C8C2D2D26D4302D48 +:10482400A1ED682D5BD1732DB67C972D49FE972D94 +:10483400DEDD9E2D55ACA32D760FBB2D89ECC42D4A +:10484400C495C92DE017D62DBF91EB2DCBDFF32DE9 +:1048540047B2042EB69D072EEF770B2EBB0D162EF6 +:104864007FB0562E7C0F6A2E3B136C2E8A07702E57 +:10487400E226B22EB43BD02E4040D92EC1F2DD2E1A +:10488400F80DE22E4B49EA2EF5DEF02E4687F52E82 +:10489400D89BF62E1F5B1A2F269F242F5992282F60 +:1048A400A6912B2F64EF4B2F64B4702F502C822FC2 +:1048B4002650972FCBD1A72FD4B6AA2FD70FB82F16 +:1048C400DC21B92F13FEBE2FEB9AC72F4FDECA2F60 +:1048D40066B3D82FFBAFF12F33731030E753143086 +:1048E400B7DB1430EE944130C8864D30E5814F304B +:1048F400FD93673064896A3009286B3001347D3058 +:10490400B2468930149995305FCDB8305E73EE307D +:10491400D4D0F630F46A0831651D163173995231DA +:104924004B6970313F6A76315EE08131A32E8C3160 +:10493400E7398C317A8C9831C5DFA6318316BC31C6 +:10494400EC0FC63196D1CC31740AD931EE58E3312B +:1049540047FAE3310A10EC3175DE09324B001332A9 +:10496400716E4A32F7494F327656683284E06E32BD +:1049740086DD7632A61980321E9E8D32839991325D +:10498400DE2DA232FF24BE32B629C43265A5CD3253 +:10499400746ACE32323DD5327E12E0321B43EE329F +:1049A40015E8F732D4FF0E338A4B12333B6D2233B2 +:1049B40069BB2433FC57263385303933BCA33C33DD +:1049C4000B1048335FBF7833B1377A3344999F3340 +:1049D400AA69A533C926AB3370D5AC331DF6B633FB +:1049E40096E7D833CB42F833477012343BD41734AC +:1049F400A9861A3487C92E341DB038347AC75F3477 +:104A04005E9360344EB76234FF476A3498E76C347F +:104A1400A8E071344EB37A34973B7E343FFB913433 +:104A2400938F963407A79934285BCD344436DE340B +:104A34004163EB34CE5C1335956B2635C59933351C +:104A4400882E39359FB73E35C63643358BB6483543 +:104A54002C1A5535EDA8573558D75935503161358D +:104A6400A2059435AE35C0351154E635132F0E36F4 +:104A7400BFD715367F2D1836D9693236C9933436E7 +:104A840020D44736DED56136945B8836AD429836FD +:104A9400512B9A36AE10B0369357BD369711D23695 +:104AA4001A18EE362A71F736F72A0B373F950F3767 +:104AB40019621B37AC992B37B94231376EB434378E +:104AC400B8F73F37FF98413755E54837C7E65237BF +:104AD40043ED5C378EC864379B477437B1A893376E +:104AE40027A7A53703BCA637E574AC37C066B6372D +:104AF4007475C237F7B8C337A57DC537B34EC93708 +:104B040058B9DA376C62E837398CE8373498FF37AC +:104B1400EAB61D38CDB334388E574238F1204A38BE +:104B24002D09623867916738024D6938274A6A3817 +:104B3400C9CF8B3845C190382FFC9338DAFF9F38A2 +:104B4400D105B338733CB9383DF2CA38467BD33803 +:104B54003102DB387CA0E3389CDBEA389242EB3844 +:104B6400033B0B3926BD253961952E39D46C473961 +:104B7400D6C97A39C4358C3973508D39CF87993970 +:104B84007C73BF39C3EEC239686DC6397F3BC73900 +:104B94004367C939F6FDD3398E70F0393568043A64 +:104BA4003E49063AE256063A2B8C0A3AF4CE2C3A9F +:104BB400868A2D3A58C6423ABBAE493A5CDE4E3A32 +:104BC400EC56743A85C9763A8B0E983AEB90BA3A19 +:104BD4003BD4C83AFE0AE03A6143EA3AB7E5133BEC +:104BE400F1CE1E3BFDFA263BC5FD373B5CFC3B3B4F +:104BF40076AF433B02ED763BCE7C8A3BE4078F3BAA +:104C0400DED0903B8F40993BB03E063CC1E4393C3A +:104C1400EC02493C19DE493CBDBD4B3C763A5B3C59 +:104C24006BE86E3C5217963C1752983C6A8BCC3C0E +:104C3400B971DB3C41A1F73C010D1A3DE5BF2C3DA8 +:104C4400BE542D3DE15A423DF762423D741D4E3D36 +:104C54000C8D523DD656543D3AFB573D2A745A3D6D +:104C6400FC00623D2A597D3DC47F8E3DA305913DE4 +:104C7400E638A03DA0FFB13D5371BF3DAD50D73DD7 +:104C840028E9DE3D2E4CEB3D77B7273E4D0A2A3E00 +:104C94007FF6383E43873B3EF703533ED179533E7C +:104CA40014176D3EEC99853EB0B88D3EE86C9B3E82 +:104CB400758B9D3EADCCA73E72C5D33E2699003F71 +:104CC4007F221A3F751B1E3FEEC54A3F4C20663FAC +:104CD4006871673F7CD1673F3CE5683F1EB17C3F0C +:104CE40025F4813F6E158A3F4BE3953F7DF6A43F43 +:104CF400A85AB13FB191B43FBA83BE3FFD4AFF3FCA +:104D040046FA014029120740C8D51E40407E25407E +:104D14005BFD43409B5A5D4050A085405C348B4012 +:104D240051768B40FFC4B0408548CD402D0DCE4018 +:104D3400F224CE4041CCD2407AA1D540EA0DEF40D6 +:104D44005EA9F34038ADF94065F8FD4047D8FE4010 +:104D5400636F1C41870A24416A6F3941B23A3D416D +:104D6400AE884A41F0588E41A04B9141D4079241FC +:104D7400EFF2AA41E42BAE4164A7B541FF65B84107 +:104D840014A5BE41BA94F64197292F4226C73B4247 +:104D9400E2A0484295F05242809E6142868DD04204 +:104DA400A3B4D7421350DD42AFC0DF426416EC42D5 +:104DB400A1ACF4423619F842E7BC0F43F5B11A43EB +:104DC400A4AB1D43994D2F43D18F3A438894494353 +:104DD40081676743ABC773433A0F824315708F43B0 +:104DE400F2199643DC4A9A435FD6B2435403BA435A +:104DF400746DBB43E40BCD43B709E4433432E6435B +:104E04007F24F343F922FE43125C2344CA992844C5 +:104E140032D02D44185130443A463A44A30B6344EB +:104E240061EF694407C2774402147E44A882974420 +:104E3400F23CAF44AB79B044D57ED54486E8DE4439 +:104E4400F334E04430BEF3440F980045F53E1F456B +:104E5400254E2045A0A5224566BF2445A708274521 +:104E6400A38E2845FB47294538672C45904F3C4580 +:104E7400C2144D45414F7745DA398345AC2D9245EF +:104E8400335EA5457585B245EA91C4451E60C845A3 +:104E940078D3CC454B2BDA45E3BADF45D860F745E8 +:104EA400C222F84588C60246492409462D9516466D +:104EB400822B38468CD53A46AE204E465855564637 +:104EC4009B645D46B48D67467A3A8A4654FA9A469C +:104ED400FF42AE46139DD04613DDDA4678DBE0464A +:104EE400B8A1E3469E8AFB46836CFE46380E05470E +:104EF400E5DA0E477D9F2B47AAD03547C5476B4758 +:104F0400D3EA6B47491B75479C227C470FB69747EA +:104F1400A3209847B4DD9F474037A547D58AA747C4 +:104F24005415BA472405C247F5B8D2475FD0DA47CB +:104F34008682E04732B7E647F3D91B4825011F486C +:104F4400B33D474851854C48EEF46148B0AD6A48DA +:104F540059656C4841036D48B7F28148F536964867 +:104F6400612DA148EFB5BF486DB0C548C4A2C8487B +:104F74004F10D248B3B2DE481EC1EC48D33BEE48D2 +:104F84002C66EE486F453E493C2B5749F244614933 +:104F94002DD96149535F63493D526949F5CC6D4947 +:104FA4006B7D774954F77D49B96F7E4939C18F4983 +:104FB40042C39B49A1CBE349B049ED49ABB0414A57 +:104FC40023A05B4A9F8C734A3506754A96FD864A30 +:104FD40059CAD54A9946DD4A105CDF4AD6BAE24A34 +:104FE4004E0AF44A8B31274B6DAF3E4BAF86874B4D +:104FF4007233AE4BEC91C74BBBD9E34B8C05EF4BF3 +:10500400839BF24B1F5CF64B0C04044CD297064C6A +:10501400C258114CCE8C2D4C3F98384CB4DA384CD5 +:10502400C7EE3C4C9EF64A4C5F46614CB27D9B4CAD +:1050340000E8B54CDAACB84C0BBBC24C36C2CF4C12 +:105044006847D94C4371ED4C49A0F24C647BF34C56 +:10505400A02BF44CD2CAF94C4C1E034DDBAA084DCC +:105064003303134D5F342E4D9B794C4D48F8604DFE +:10507400B85B774D901A9F4D51FEA54D296FB54DE4 +:10508400C0CEC94D67CF034EA4B8174E0482344E28 +:1050940050B83A4EA78D444E07914C4E0818504EC6 +:1050A4006169724E7602814E29E7824ED2948F4E08 +:1050B40014D29C4E4F87AA4E858FCA4E7E68D04E1E +:1050C400E3BED64E2491E74EEA85EC4EB6AEF54EDD +:1050D4003B05FA4E0A2DFB4E086B094F9FD42B4F0C +:1050E4002C2E354F144C5B4FE3825E4F0C7E6A4F7F +:1050F400F6D66B4F642E6E4F3701734F6106804FA7 +:10510400444E904F7E17964FD908974FFF6E9C4F91 +:10511400109F9F4F8164A34FC694A94F7132B74F1C +:1051240094A3C14FA0FDD34F3144ED4FADB91D50F1 +:105134005F492B50ACD83050B36638509F253A5055 +:1051440035ED4D500D5C5E50A58D5E501556815069 +:10515400D69AA2509658A7506663B45005FCC45022 +:10516400AEA0C950EFDADF50D5671F5162672051F6 +:1051740062B5625198EB85517B9D8D513299B05146 +:105184003AA6C951A13FE551827CE7519E04FC51E6 +:105194007A8B225287D2355241E63852ED10415271 +:1051A400F534665223086752D70F685206496D5288 +:1051B4003E9A7352F3AD7852AFF68252A9B9975220 +:1051C400DE9EA052EA47A252688CAC529023B95298 +:1051D40054CBC6523B79D6521B06D9526354DA5289 +:1051E400D4E6DD524966DE52A102E15278BCE352B4 +:1051F400BB70EA529298F55266B7FA52F7EE24530E +:105204000F6128536C6E2A537C5F3F53F6506D53E5 +:105214007D167053CF617353377C8053D37582539B +:10522400808790539E099C53EF3AA35366DAAB539D +:10523400B570BA539BCBC8532F3ECA53408DDE532F +:105244008BA8F853D0A9FB5388A831544CCE4554AD +:105254008D144A5475604A5416245D54000C7C54D1 +:105264003CE17E5442D7AF549CAFEC54B4A2ED540D +:10527400DF6A06558EFC155501F62055089B4855E6 +:10528400AFD8525507C05755A7CF795597C6825501 +:105294002E7B95559C1FA9552AE1D655624CF05595 +:1052A400876E1256B0DD12567F652456E2352556B8 +:1052B400C25426563FA0465680D74C5638DC7A5600 +:1052C4003FBD805690428356E617A156F35FBE5603 +:1052D400B216C5563E26DF564D1CF856B9B0F856E0 +:1052E4006834FE56C10B00573848275711022C5713 +:1052F400003A3057816A3257E3B93757FF086B5782 +:1053040049C16B5783647657115587575DC6A257B9 +:105314006EB0AF572BB8B457B2CEB6573C97C557FB +:1053240073BCCE572E6AD757E673F4579A2E3B5860 +:1053340056F53B58C8B03D58A086645850988E58CE +:10534400EAA09B58E34AAB58AB01CB586F23E6580D +:105354003434EF587D91F5584B582C59D6622F5957 +:105364009BCA4459DD8A4859E21F5259BFBF695943 +:10537400F0357A5912C48A59C4098E599A358F590D +:105384000E93A55940D1B45997BABB5926ADCE59FD +:10539400459AD9599204ED5914CE025A315C215AD6 +:1053A40046CA215A7172325A8E0F425AC3B2465AB1 +:1053B4004CE4495AFA11515A2022555AEC505B5A7E +:1053C400345D8A5AFD8BA35AA2E4A65A43F6AD5A19 +:1053D4008CB3BC5ABD7ED65A52E6DD5A1A8AEC5AB0 +:1053E4007285045B4BE8135B238C665B8E4E675BB4 +:1053F4005B08745B3AC3905B54C5A35B9813AD5BC5 +:10540400A1FEB15B3BD4C35B57B7DB5B85D2DB5BEF +:105414006220E25BE14F1F5CB7F7265C74AE275C49 +:105424004A753F5CB3964D5C40E1505C7E4F635CD3 +:10543400188F655CE3236B5CB4216E5CE77A7C5C5B +:105444007442995C24C9A15C5162B45CFD7DB95C71 +:10545400F0ECE05C1DCFE75CF0E2FD5CDB340E5D5C +:1054640000CF0E5DB96B115DA71E165D3370345D00 +:105474003BAE395DB652515D8FB0525DBDAC645DDB +:105484001E79785D49D07B5D1E86835DF85C8C5DFA +:1054940034259E5D35AFAC5D7F10B65D0467E65D77 +:1054A400B2A3FF5DAAB10D5EA2B1285E01183D5EF4 +:1054B40049F43D5E295F485E4026705E86F2795E5F +:1054C400CE58AA5EABDEB15E602FB95E9F85CC5E1E +:1054D400983DD15EBEBAF85E2707005FE2FE0B5F1F +:1054E40028AE215F878E2D5F3002385F3536465FE8 +:1054F400AB70575FF22D5C5FA26A5E5F3197655FA8 +:10550400A05E6F5F3E18715F85BF765F6A79845FC6 +:105514009534895F6B588B5FD65E925FC225A05F1E +:105524001A8EA05F77D8AE5FAFFCAF5FC5FDCB5FCF +:10553400B6BED05F7276D25F8E37D35F55F9F55F12 +:105544005760FA5F46E2FE5F4E8C0D60546F0E604A +:10555400404A1060493B1E60BB791E6010993F6051 +:105564001EF564604F807660781C89603AC6896055 +:1055740000D29760F87E9B600C54B860A152B96069 +:10558400993DD6609E7AFF60283A0F617D400F6195 +:10559400EA3B2261E0862661C44E2C618BAC336108 +:1055A40069453D61085B4561A96C5D610DA86B614E +:1055B400ABA68261C87C866122839061C1F3CE610F +:1055C400AD19E461646DEC61CA52FD6148D90262AF +:1055D4000E801B621DB626628043436203FE4E6248 +:1055E400E0B94F6278BB6662F92A796213D98B629B +:1055F400EB86A9623299BC6207D6C36245A5D36221 +:10560400AB8BE3626F6DE4629CF0FB62D2E62063D5 +:1056140097F22C639DD64B633A464E6358F65D630E +:10562400DDC3666331A1AB6323C1BC6359E7C763C0 +:10563400B10CDB632603DE6345DAFB636F0313649B +:105644008B741864B25E1F64259A2664164227641C +:10565400DD3F3F64EFF94B64B4835E6429166064F4 +:1056640041697464C87C7C64DC9C8164FFA08564AB +:105674001F078764EAD29564A0F09B647DC9A66481 +:105684006A8BBA64F0E9BD642409D2646EEFD46411 +:105694008E930A6521111165B8A23065A1F278656F +:1056A400C28A99658702A665150FAE65028FB76534 +:1056B4004C0ECE6571A3CF653EEFCF654F92DD658D +:1056C40055EBE76548D5E965F231F165C3790466C0 +:1056D40086C0066677660766B277076653270F6645 +:1056E4006D431066272F1D66368E2166F4122E66D2 +:1056F4000E163D66E59B3E668BF63E662A19556698 +:10570400A2027666B39C7E665716A0662E15B56611 +:105714006EACD966FCBCEF664CD4F8667ACA2267D4 +:10572400D9B52867C2723B67B0A63C676612516759 +:10573400CD795A6767BC9667CE2A9D67EFCEB76767 +:10574400DD2DC267FD3FC267CB4DD5678C6FDB672C +:10575400245D0668CD9608686BE00A684303166802 +:105764009A1E196864A61F68293F2E688C774E68B4 +:10577400C8E65168BAA45568C3775D6897BE6E6879 +:10578400D6427268AA86766809927E6883BE926859 +:10579400B04C9E685A1FBA684160D4689776F46822 +:1057A400B924FB684F3A2169F1292B69D12D396954 +:1057B4007E6E40692614586982AC6D693AA5876982 +:1057C4003AB09869326B9D69A42DAA69736CC0695B +:1057D400C00AC7694840C9699C67D16929A2D569CB +:1057E400F9A2D86972CFE2692ABBE769266E026A18 +:1057F40050782B6A9E80356A95FA496AE1CF546ADB +:105804002E18606A9F9F886A2A6F896ABBA6986A65 +:10581400BCBDB96A644ADB6A2CECE16A986AEA6A3C +:105824006ED3256BFCC53D6B4DA94C6B4FCB516BB7 +:1058340047596B6BE2566D6B22657A6B7150A66BA0 +:1058440050F1B56BCB44B76B5E84C76BA002F36BAE +:10585400EEF0346C4BC0476C269A4F6C884A7F6CD0 +:10586400E89D916C9DCB926C54C89D6C28DAA26C17 +:105874000295A96C328EDF6C2822E06C13FCE36C79 +:1058840029C1EF6C14A8496D9F924A6DF714536DAA +:105894008282546DFBFA546D0979556D9F8B566D58 +:1058A40005A15D6D38FA626D3E006D6DB2CC6E6D12 +:1058B400EEF5706D1FAC826DD7FB906D0FE29D6DA0 +:1058C400C7D8B96DA0F7106EEBD8246EEAA2306E7B +:1058D400EB0E3D6E0B8A3F6E51D03F6EC00D666E6F +:1058E4001889966E2E8FC86E8112CD6EF582D86E91 +:1058F400A4FEE36E0328EA6E643C096F4EEC286F45 +:1059040057563A6F8DBC596F41D55B6F92B56A6F2C +:105914003334796FC20E836F7A1D866FD2A38F6F73 +:10592400BB73B16FDB60B36F1708C06F4162D56F93 +:1059340088E1F36FACA4F66FCBF70870FAE7157043 +:10594400CB551770DEA72170A1E03E701C8C4B7004 +:105954006CED6E7037AFB4700E6FB57069FCBF70CC +:10596400C12DC4702E48CB704058D670813311714C +:105974005B781C7100C51F71EC122A710F2F4271E4 +:10598400BF0D49711F2957714CDF6571824D6771D5 +:10599400F4748071E1948471E1888571307F887139 +:1059A4000C429071FC86A071529EB6718D32BB710F +:1059B4002A6CD3714436E771AECEF7717A880D72D2 +:1059C40024EE0E72B532147273FD2072C9AD2172C9 +:1059D40050392B72F2063D728DC5577225A9737228 +:1059E400641FB772EA5FD7726149E17202ACEF7269 +:1059F400A258F372F090137328E6167355061D73BC +:105A04003840207325A42973D45C3F73AD53457388 +:105A140070E65973B7356F73FB7A87738B379D7351 +:105A2400B2EEC17310EED173C7C2D9730B75E973AB +:105A34006007F073E2AAFD7375FA1D748610397459 +:105A440009893C7497634D746ADD5B7429B75E748D +:105A540065746574C04B6F749873767413968D7403 +:105A6400FA8FB074C8D7B274D7C3BA74D85BC7748A +:105A7400EC6DC87414F2EB74835CEC74CD43FC7469 +:105A840010D001755DFF2475EC912C75A2CE48757C +:105A94009B93567581CE56756EAE67755FFA7775B2 +:105AA400DE768275D0108575B4D4E3753B801276AA +:105AB400E6011B7691F8377650A043761BC44376F3 +:105AC400325C5E769C036E76C46691763BDEC97664 +:105AD400872BE076979D0D77D1B44577608A6177FF +:105AE40005C07C77BC5D7E775931827711D78B777F +:105AF400C3568E7736079677EB339E77F9A4C27731 +:105B04001A8BD677B60DEA77B1960C788C2C0D7873 +:105B14000763277812302C7841D0307867E63B78D9 +:105B2400BC5E4D7865B88978551F9478FA239C78C3 +:105B34008AD0B078AE5DD87824FDDD78AA35DE78D9 +:105B44007171DF78079AE278AF20F27886F7FD78F2 +:105B5400442C2D7959C439799817487930D55B7913 +:105B64004D57667936EE6C79E989877927DE88792D +:105B74003B93B5797799C379D035D5794F71EA7963 +:105B840022C1F0795A13FF79FFD7027A577C0E7A33 +:105B94009923157A0D8D1A7A61EC2B7AF9F0537AE0 +:105BA400120E547A8B48547A9A036C7AD4CB707A56 +:105BB40042C4887A46E5D77A9C93DA7AD31CFD7A74 +:105BC400905C087B16D90A7B8B5F2B7B31DE317BA3 +:105BD4003F73357BE98A3B7BD269487BC1844E7B2A +:105BE400E926557B15D2687BF3EF867B76D6967BC8 +:105BF4003A8DAB7B8E67AC7BFB97C67B08B1D67BBB +:105C0400D7D2E37B2C8AF27BF580057C01DA117C08 +:105C1400A467247C3BDF457C34824B7CAB2D6F7CBA +:105C2400D6277D7CE85B807C66EE827CE396927C62 +:105C34005B42937CAD299B7C20919B7CE14E9D7CB7 +:105C44002CAEAB7C26DAC77C8335D17C3155D27C33 +:105C540064EDD87C2D17DD7CD08EFE7C3399197DC4 +:105C6400940D337D76D95C7D26A87C7DC17D817DB4 +:105C7400C8B7827D962F847D663BAC7DD697B57D73 +:105C8400F7E1BC7D51C7C17D5875F87D8F0B0A7E45 +:105C9400F723177E7C28277EC7483C7E8838417EC0 +:105CA400EEB8447EC4694A7EBDA64A7E88DE537E31 +:105CB4002B287F7E5F2A887E1433907E691BA57E05 +:105CC400B98EB77EF8A1B87E3E8BC67E97E3C67EBA +:105CD4005EE5D77E6850E37E31CCED7E5429F47EB8 +:105CE400B712F97ECDA5027F3118107F05A6107F6B +:105CF4003404247F5EC94B7F1F738D7F85338F7F70 +:105D04009958997F1517A67FF2C8B17F7689C07F0D +:105D1400D0D2C07F7F5DCA7F0039DB7F464EE87FEB +:105D2400A4245405F4CE2C3A644ADB6A1997012B57 +:105D3400EEF46148EFE53900ECEE02183E8BC67EC6 +:105D4400404A1060F80DE22E726BF42C535F6349E5 +:105D54007989F710689B36083B93B57986DBA713DE +:105D640059CAD54AD528B91BC2723B67BD04FB1179 +:105D7400109F9F4FD588FE1A4C8BD7002DD96149AF +:105D8400608A6177E1D18F2B24EE0E720C04044CEF +:105D9400716E4A3255061D737D91F5585FDA421DC6 +:105DA40031DE317B95FA8A01E0D8330EEC122A7188 +:105DB40066DBF10E493B1E604FEB012654CBC65205 +:105DC400512B9A36C8D51E40F8104428398CE83730 +:105DD400000C7C549204ED5997F22C639A1E1968B6 +:105DE40031B4EF28F7E1BC7D6834FE5641245313E7 +:105DF400DEA72170D6622F59C8864D3051854C4894 +:105E04006A8BCC3C81FBE02267E63B7803E52821E2 +:105E140066BF2445BB70EA522C66EE486A6F39416E +:105E240000AF051AE376560BA67CF3237172325A3F +:105E3400085B45612AE1D655296FB54DE753143007 +:105E4400A04B9141FF42AE468D144A54B1960C7852 +:105E540080B200198C05EF4B7FC9790A1EC1EC484A +:105E6400E4273A225A13FF7982105B1D5716A06665 +:105E7400120C482B105CDF4A86F7FD78F534665225 +:105E84008B379D735992282F23FDF91EADCCA73E65 +:105E9400CD43FC74E3A5222A72CFE26927BD1B28F7 +:105EA400C3568E77839BF24B88DE537EEC0FC6314C +:105EB400CBFA1A197585B245905C087B7C5F3F5319 +:105EC400612DA148C17D817D84E5F42C7F5DCA7F6D +:105ED4006C6E2A53BAA4556888A83154154A260A08 +:105EE400263A3317A145B81AE38C570E464EE87F7D +:105EF400A0F7106E6663B4509B6C60089DCB926CE7 +:105F0400F905F4248E0F425AAB1EC22CD0D2C07FA6 +:105F14001C322512300D7D20E2AAFD739813AD5B6F +:105F2400307F887119621B375DA1D7219FB73E3539 +:105F3400A1CBE3490F980045962F847D97BABB59AE +:105F4400C87C866133909400322DE11E6871673FEE +:105F54003AFB573D80EAD00C46FA01408112CD6EDF +:105F6400AA69A5336F23E65860A9741C50316135C2 +:105F74007CA0E338BDA90926188F655CCD3EA22418 +:105F8400E617A156444E904F53F1BD2830410F0AF5 +:105F9400C50AB41C06900C2D12302C78C2144D4541 +:105FA400FABBEB244966DE52F6614F0FD1A7C51543 +:105FB4007E68D04EDC4A9A4351FEA54DBDC31125DF +:105FC4000A10EC3177660766EACEFE2C2E15B5660C +:105FD4005CDE4E3A40E1505C4D03A52369453D61CA +:105FE400269F242F6A79845FCBDFF32DB916D00B5B +:105FF4009946DD4AF8A1B87E15220C080896C122FC +:106004008838417E9F8B566D70D5AC338E930A656C +:106014003D986A2CCA99284495F05242A9B4881C28 +:10602400D58AA747B7E5133B29B75E74C390F41E1E +:1060340058F65D63BF91EB2DD478B3206F6B8F2A34 +:1060440059E7C763B2CEB65700E8B54C983DD15E68 +:106054004667681261952E3931E25604D0DFF8277D +:106064004E2D0B103536465FFA239C78C5476B4797 +:10607400EB339E77FC00623DA2027666D3EA6B475F +:1060840013DDDA46C466917655E54837B27707667C +:10609400F7EE2453E017D62DFFD7027A50392B722E +:1060A4007653E02407C05755CA318102BA94F641A9 +:1060B400222463069C227C4733E90F0B3334796F27 +:1060C400EC2C380C0979556DC9CF8B38679167383A +:1060D4006DAF3E4B4515D507858FCA4EB9B0F856FE +:1060E400D4D0F630746ACE32C1E3FE23B9FF3A014C +:1060F40067BC9667ADBD3602D6277D7CB268DB15DA +:10610400B924FB68D6E04F2557F52B2C5FCDB8306A +:10611400686DC639AB79B044E42BAE41BD3ACF17B4 +:106124008E67AC7BDE768275AB5C8F2CFB47294592 +:10613400CE2A9D675875F87D813311718D32BB71FC +:10614400F334E0449FF70407981748796169724E65 +:10615400459AD9594F71EA79DEDD9E2D2A597D3D44 +:106164006DB0C548CB486913F2063D72D86BFA008E +:10617400023ED402ED104152C4A2C848284DFA2A66 +:10618400AFD85255F85C8C5DC993343657A6300CA1 +:1061940003BCA6378FB0525DD78B5D14F2A2EF23F8 +:1061A400D6025100DE2DA232A3BCC30AC8B03D58AA +:1061B40053CDBC1FD7C3BA74D4D55406010D1A3DB0 +:1061C400A57DC53797BE6E68C28A996549D07B5D47 +:1061D40041D55B6FE7BBF821D179533E254C601064 +:1061E400CE5C1335DE25451E64EF4B2F66AB781B62 +:1061F400AE204E46A3752D17809E6142BBE7D300A7 +:106204002A6CD37150A08540FF086B575F46614CE0 +:106214003ECD7E24F22F40166EF1E421F3AD785288 +:10622400FD4AFF3FADAA732C83D03F256847D94C64 +:10623400A258F372FD09D4083EE8941B13FCE36CE6 +:1062440035AFAC5D16245D549A2E3B58E3825E4F05 +:10625400D7D72F206E09970FF0E9BD64AFCEE410B5 +:10626400AAD0354750782B6AE978BA26A7CF795552 +:106274005FD6B243B1A893371E60C845EC99853EFA +:106284005DFC4B2900D297604D5766793D231E1063 +:106294008BDDD52435ED4D503AB09869C7E9D80166 +:1062A400BA4F1127EE545B01211111651DF6B63367 +:1062B400B2A3FF5DAC05950DD31CFD7A46CA215AE5 +:1062C400D89BF62E4160D4687442995CF3EF867BC8 +:1062D40078E3B42547701234D08EFE7CCBF7087077 +:1062E400B570BA53C7D8B96D55F9F55FE0DB170B34 +:1062F4000ADBB40BFCA8BF07B246893042D7AF54BF +:106304007C50860D2E7B95550A3B310DB2E49C13CF +:106314005E73EE30BF5F8B0FD37582536E36920C73 +:10632400C00AC7694436DE3450F1B56B2B19481ED8 +:10633400760FBB2DCB369701AABFFF1220D4473668 +:10634400C03FFD063A8DAB7BA63FF6113F38B41B28 +:106354009A036C7AD908974F05A3F52B7FB0562E74 +:10636400A30B6344E6011B767D400F6154C5A35B18 +:10637400A3B4D74266B7FA524FCB516B4025672678 +:10638400BBD9E34BFC86A071852AAF0183647657A1 +:106394002D5F3316F280AB04CA491608EEC54A3F96 +:1063A400C45F830F54FA9A46E6DD2211D57ED544A4 +:1063B400E08626613BDF457CD4B6AA2F23086752CA +:1063C40022C1F07927A7A53781D90F05882E393541 +:1063D400B20DA51086EDD826243B380ECDB3343843 +:1063E40028DAA26C51D03F6E3498FF374773061AEF +:1063F4001DF3BC20D656543D0A818522691BA57E17 +:106404004EB37A34904283561556815074AE275C4D +:1064140069BB243331CCED7EB48D67464B1C5E2BB7 +:10642400781C8960C3EEC239B33D47486267205186 +:10643400E77EF715E302E71366827C02D4E6DD52B9 +:106444003370345D2B8C0A3A5BFD43409357BD3661 +:1064540031A1AB63B23A3D41BF458505B98EB77EE4 +:10646400F87E9B60AD4298364FC46D0AFEBEA10112 +:106474006D30F1192E4CEB3DF714536D4363391213 +:106484006AA2B2130D5D892B0DA86B614B00133208 +:1064940089ECC42DE43E870624FDDD78890FEE15D2 +:1064A40091F837763303134D8F71122A1485830DB7 +:1064B4007DF6A43FA467247C733CB938B782890F66 +:1064C40026C73B4269FCBF7087D2355225EA7D0A54 +:1064D4008E277423C20E836F6A8BBA6449A0F24C70 +:1064E400C9069A0E9B794C4DA002F36BBB73B16F36 +:1064F40086103974529EB6712B4E492350B83A4EC9 +:106504004116621E96E7D833C2C43904C9C9001EB5 +:10651400FFA085646B588B5FB0AD6A48ABC773430B +:10652400C495C92D4AC94C234CD4F8662FFC933822 +:106534009776F4686595141D10993F604F807660D6 +:10654400306AE723079AE2785ABAF20A00CF0E5D5E +:106554003BD4C83A1A8AEC5ABBAE493A8019C919D5 +:106564004BE8135BC3B7F506FE0AE03AC44E2C6150 +:106574005F415E052896CE06B80D6C2015E8F7320B +:1065840009286B3052554B05870A2441B4AC2012BC +:1065940040D1B4592C1A5535EB0E3D6EB6BED05FC2 +:1065A400C47F8E3DAB742F1CBEBAF85EF762423DC9 +:1065B4002912074007D6C36252E6DD5A2116121784 +:1065C4008327620628E9DE3D2650972FEAA09B58D0 +:1065D400ACA4F66F1DCFE75C442C2D7961FD3E160B +:1065E4003404247FC661D7173A0F82435DFF2475B4 +:1065F400E77A7C5C92BE3500B34EC93715D2687B0E +:10660400F59AD81D617BC61FB191B43FCE7C8A3BFD +:10661400BFBF69598A07702E69EAF703AFC0DF422A +:10662400452CAB2CF9DAF01DBB731F20B1C17B0FD5 +:106634002766E62C71353D054C0C2720B10CDB6335 +:1066440054F77D49F04F0A1941697464A7ACA81442 +:106654005760FA5F3002385F9B5A5D40F1204A3838 +:106664003AA5876949FE972D2ABBE769C926AB334A +:10667400167FCE1574E4211230268E14D5671F516F +:1066840038DC7A56EA901525932C2C04DD3F3F64C0 +:10669400F2F8F119EA250129BE63661298EB8551D7 +:1066A400FBFA546DDA73360F14488E0B9F924A6DC1 +:1066B4008399913285811309118DC70D83BE926828 +:1066C400D7FB906D8316BC310015B40DF9F0537AE5 +:1066D400AE982D14B6499E04536AC500342B230288 +:1066E4000E801B62F0357A59A234261A4B582C5965 +:1066F400DE19FB18B216C55642C39B49DAACB84C36 +:106704000903051C0F2F427181676743A42DAA69F1 +:106714004B53BE16AFFCAF5F7DF8B01E76AF433B64 +:106724009A358F59F0588E419E7AFF6007C277449C +:10673400345D8A5A274A6A38B7845A061A18EE36DC +:106744004281D20A0467E65DB39C7E66A71E165D8D +:1067540025A9737214CE025AFF65B8412D951646C9 +:1067640066B3D82F60D3150B751B1E3F2A195566C7 +:106774003421E20132A6961BFF6E9C4FA6B6CD02D1 +:1067840099D0A90AF6506D53D188430DE9AFA107FA +:106794003EEFCF653F950F373B8012764CCE455484 +:1067A400D70F6852E245680C2E48CB702CAEAB7CF8 +:1067B4002CECE16A3CE17E5450A9BE1EFB97C67BDB +:1067C400C5FD373B994D2F43B2839F0E7398030841 +:1067D40032B7E647ADB91D503432E643E2A9D526B7 +:1067E400F5C751013AC3905B7689C07FA8E0713444 +:1067F4000B75E973D6251C077A8C9831BDAC645DA2 +:106804001DB03834C2532827D490830D6C62E83706 +:106814004037A547FB7A87738C2C0D781F5CF64BA9 +:1068240064A7B54150988E5898E76C3453270F6687 +:10683400600BC626A85AB13FF14AEB19AB4ECB16F2 +:106844009711D23665B889784F87AA4E1F738D7F0A +:1068540047B2042EE638A03D868DD04255864714B3 +:106864006EB0AF57261458697D12D4020818504EE2 +:1068740059FFC917816A3257C7980B28A5C8E10187 +:10688400CAB6BA0D98F64D0EDF393523F4122E66CA +:10689400C5DFA6314ABBBC1705891F1FF4BE0D0016 +:1068A400F703533EE14F1F5CAF89870DC06F6C0C3B +:1068B400C4098E594E8C0D60AD534573ABDEB15E89 +:1068C400EB86A9628C774E68DE9EA0527475C2373F +:1068D400D9535C0A227ADD298A10C0148B19DA0490 +:1068E40087C92E34C6F6580459C43979901A9F4D75 +:1068F40010B4DC031A8BD677F92A7962E055780351 +:10690400D2A38F6F9A5A5B0B48F8950E45C1903805 +:1069140041E714138DE57A2B387BF907CCAE232C91 +:106924004417DD12380E054747596B6BB43BD02E24 +:106934004BC0476C120E547A9B477437827CE751E4 +:10694400F6511C12323DD532B4FB141B3118107FA2 +:106954005A1FBA68C6ADF31FD12D39698824532B49 +:10696400F3D91B48BCBDB96AE226B22E8335D17C6B +:106974002491E74E84E06E3225F4813FF3B11B226B +:106984006BE00A68EC02493C5FFA7775229F9D2C04 +:10699400279673142A0B1D2BB9423137AE35C035F7 +:1069A400FCBCEF66F916F01F357B1A1777B1AA1BEA +:1069B400EA91C445DA398345CB44B76BB2EEC1736F +:1069C400EB90BA3A7B9D8D512409D2641E86835D77 +:1069D4004162D56F3506754AF231F1654F3A216946 +:1069E40066125167B0DD1256EA3B226126A87C7D0F +:1069F4008B9E6A0DA20594355FBF7833624CF055C7 +:106A0400C97F9020B4D4E3757C28277E4F10D248E8 +:106A1400EC7E781185BF765F1E79785D9CAFEC546F +:106A2400D6BAE24AC84FCF114C0ECE654B697031CD +:106A3400956B2635872BE0765403BA43C18D301607 +:106A4400FD8BA35A8B0E983A836CFE46FD9B8A28D5 +:106A540001347D30D5B7901780434362E5BF2C3DA8 +:106A6400940D337D44ED2719467F581EBCA33C3357 +:106A740036EE6C7958D75935BC71771DB0A63C6792 +:106A84001E3F32151517A67FF224CE4091AA9C22F0 +:106A9400037E770D01183D5EFA11515A9BCA445981 +:106AA40086C006664840C969612BFB11746DBB43FF +:106AB4003FC4EC2600C17F0648D5E9653144ED4F5B +:106AC40062B5625186E8DE442405C24792E8340B7D +:106AD4000E76450F07F9BB250F6325014EEC286F91 +:106AE40032D02D441BA5200EC8E651688A4B1233C0 +:106AF4001C9CC9048B7418644E0AF44A6354DA5219 +:106B04009F85CC5E33731030144C5B4FAA35DE780E +:106B1400E0B94F6202ACEF72E15A423DAF86874B57 +:106B2400BF6762072012B50546E5D77A363AEC24EA +:106B3400DC9C8164269A4F6CBDA64A7E878E2D5FAD +:106B44004DA94C6B9165AF0C5CEC6A27A1ACF44287 +:106B5400DBD3B3083102DB38326B9D698EC86437EE +:106B6400F2C8B17FDBDF411546E2FE5FD1B4457761 +:106B74002FCEFC151F3EB50329A2D569FDFA263B8D +:106B84008164A34F32F4822936B4E51360ABEA2260 +:106B9400F9A2D869EE94413067FB8D05DC35A82B4A +:106BA4003434EF58F0901373D248600AD6BD4A14B7 +:106BB4006280461EE0189F15C5FDCB5F467BD33827 +:106BC400F22D5C5FCEA1D2187D751222EFDADF5070 +:106BD400DCC2EC0FB60DEA777F10B65DA92F1C233B +:106BE4008AD0B078259A2664945B8836DAE6C6178C +:106BF40064B4702FF6D66B4F646C09290352752563 +:106C0400F7967F2236079677AC2D924577370A148C +:106C1400C1F3CE61266E026A1EF56460267C5F0BAA +:106C24009B9356755F2A887ED75CDB019658A750E4 +:106C3400C48321000F61285375FA1D74F4AA1E043D +:106C440085338F7F629B2600DD2DC2673E18715FFE +:106C54008682E047FC57263388E1F36FA2CE48755D +:106C6400AD299B7CA1F2786585B61425E5DA0E473B +:106C7400AE884A41F723177E0FB69747F922FE43A1 +:106C840034824B7C647BF34CCB42F833B1377A3398 +:106C9400ABB0414A115587579EA39C25904F3C4564 +:106CA400A7DD2E2010EED1732822E06CBDDC7B0F13 +:106CB400F5458A109958997FE256063A1350DD42F9 +:106CC4003BD4C35B7132B74FD0DC180B55BBC81C27 +:106CD4004D1CF856641FB772E3464A177F24F343EA +:106CE4001081DC1EF1292B69EDD00C2B377C8053ED +:106CF400028FB765054CFA1C41E638526349510CC2 +:106D04006F353000DE81AF21E7370729D33BEE48EA +:106D14002B287F7E11E9931E78BCE3521FF83410B0 +:106D24000C54B860A78D444E9C93DA7A8D8E8C18DF +:106D3400E9EF161A63A79C1E1F673512272F1D66DD +:106D4400475415171F295771A9836F26F5CC6D4930 +:106D5400A563421555A4D60D228390614282031285 +:106D640064EDD87CB8A23065A102E15214A8496D43 +:106D74005415BA4702B809030C7E6A4FC3B2465A87 +:106D8400D9693236C9AD2172520B6B21A305913DED +:106D9400B7F281488B4BC306414F7745D70FB82FC5 +:106DA4007F221A3FC95CC11905A6107F49240946F0 +:106DB4009534895F4EB762343F199B1AB79E5C0FB6 +:106DC400DC21B92F9023B952BC5D7E77E4078F3B59 +:106DD40001F6205530297B0ADAB27604F00A9325AD +:106DE40061EF69449DE1B606741D4E3DC12DC4702A +:106DF40098737674D412B41C8618041AA05E6F5F5C +:106E0400A8824F0449F43D5E6375711BE188857166 +:106E1400C1F2DD2EE21F71158DC55772BC823D0093 +:106E2400B25E1F64185130443848275737C62D299D +:106E3400EC505B5A40B4AA1556F53B5843873B3E89 +:106E440030D55B79E9A7080D5EE08131E5D8C3163A +:106E5400D63A75065CF27F059FCCFA0C8CB3BC5A0B +:106E6400B971DB3C408DDE533B6D223381CE5675C8 +:106E7400C10B00575F492B50C26A4C2A7E5E061F25 +:106E84000D8D1A7A82AC6D696BE86E3C55EBE76543 +:106E9400BE542D3D7A8B2252F0E2FD5CD18E5720F8 +:106EA4005B08745B3902791F076327789B0E6413B0 +:106EB400E40BCD431C8C4B707A1D866F5163AC2A56 +:106EC4007730FE094C1E034DE3BADF45BC5E4D78B6 +:106ED40097634D743A464E6305A15D6D1B43EE32D4 +:106EE40020C96812486EF41DC8B7827D993DD660EA +:106EF400C449A61E868A2D3AD3438E0DDED561364B +:106F04004040D92E998FE81AC090A30CC1844E7BBF +:106F1400218FFD06B7356F73FFC48F0C1BC44376F6 +:106F24002D096238D0A9FB5348D90262B709E4435A +:106F34006FB67028C7EE3C4CBE4D262B663FA50BA2 +:106F4400E21F5259DED0903B9DD64B632E6AD75731 +:106F5400B96B115D306D0609A0DA9729A152B960A9 +:106F64004AB43924586F2A04F23CAF444C20663F9B +:106F740094A3C14F2E474E03CE8C2D4C47FAE331D8 +:106F840073FD2072B0B88D3EB654A009EADECA047F +:106F94005F623C25FF476A344BE3953F9E04FC51F6 +:106FA400DB340E5D82238A03CF879939D035D579B6 +:106FB400822B3846254E204536DC5C1103BA500A34 +:106FC400A9B99752C4EBDD26E2566D6BFD7DB95C21 +:106FD400B0183025A2B1285E03FE4E62234D241062 +:106FE400EB5BDF14139DD0468BB64835DE0DDA1FFC +:106FF4002699003F3A32BF0DC7483C7E3B136C2EA6 +:10700400DACFF30EEDA43C069FD42B4F92B56A6FF2 +:10701400EBD8246EB56D8B126B0F301E5E84C76B7C +:107024001C493524F0ECE05C6F453E492C83EF2A83 +:1070340010D0017519DE493CF5B8D247AF03BF2122 +:10704400FE3DFA18207DF32B0699031FEFCEB76798 +:10705400EFF94B64F35FBE56C4694A7EA26F7B2B83 +:10706400B652515D1F260E2B6758152C938F9634FC +:107074006EB434378F40993BD2948F4E3F7A470792 +:10708400A96C5D617233AE4BD26AA7167FF6383EA7 +:107094003B47AC273BD41734F274CA2A5EC94B7FF2 +:1070A400A1ED682DC225A05FFDE2BB270D549C1EF7 +:1070B4000E93A55988944943116EEE05ECDE162B08 +:1070C40014176D3E1875D0205C348B40C8434411AE +:1070D400EC68E80C88C602467656683224C9A15C7E +:1070E40062956A221F5B1A2F5BD04528AF20F27885 +:1070F40060899F0911A9A50D03A8542CD69AA25002 +:107104001433907E65A5CD32A02BF44C74C1BE1A05 +:10711400C04B6F74F72A0B3773995231A4AB1D43DC +:1071240020B4CC0B9A8FC4104B2BDA45B67C972D28 +:1071340070ED81235429F47E9C1FA9553FA0465627 +:1071440021D9082DCDA5027F38FA626D4A753F5CBE +:107154001889966EC4358C39ADD61228AE3AE20A37 +:10716400A18AE60CB6AEF54E3A463A44782E161B82 +:10717400EFB5BF48A2E4A65A6ED3256B86F2795EBA +:10718400502C822FE89D916C5EE5D77E3568043AD9 +:10719400F1CE1E3B4DA38028835CEC743155D27C28 +:1071A4004B1853171A8EA05F30E362226D431066AA +:1071B4002AE288146416EC42AB8BE3622C2E354F22 +:1071C4005842E80268C3BF0EEEF5706D3BAE395D00 +:1071D400EA47A2520D00F51CFCD634024277401552 +:1071E4002603DE638BB5A219D85BC7742E18606AB8 +:1071F4000FE29D6D28AE215F27829F11D2100B18DC +:107204008F0B0A7E2022555A6220E25B876E12564B +:1072140041036D48A0F09B64B7F7265C0C42907163 +:10722400D87F7A20E926557B7DC9A66475604A54C7 +:107234002FFECC139B97AA25530A3B193701734F92 +:10724400ED3A852008647E12D46C47395FEB33161F +:10725400D45C3F73C3790466F91DAF00E5034A09A2 +:10726400A739C4293E26DF560A2DFB4E1A2F420A9F +:10727400B6BF99278702A665423975163C97C5574C +:10728400082E7C143299B051FE1ED10F2C8AF27B49 +:1072940022657A6B5548F21EA1FEB15B384020731B +:1072A4007A3A8A46AB01CB580997821D13FEBE2F4A +:1072B40074588E0ADBAA084DA58D5E50E3236B5CDF +:1072C40015D59529D4FF0E333BDEC97678DBE0462D +:1072D4004B49360D4FF95709364C4D029A3767160C +:1072E400D7D2E37B76D95C7DA34F62147BB6A42905 +:1072F400D60AB716A3209847D297064C4C39BC1728 +:10730400EB9AC72F41CCD24086DD7632EAA2306EAA +:107314000BBBC24CCF617353D65E925FB96F7E498B +:10732400E5814F3003682B29A4FEE36E8AB8BD2C97 +:10733400EC91C74B0B104833B8A1E346B532147235 +:10734400024D6938EEF0346C7903522C4CDF6571D0 +:10735400C258114C11D78B7748DC3A25663BAC7D7B +:107364006ADD5B74D6C97A3978D3CC4597E3C67E97 +:1073740064896A305F897906EC56743A82BC952A2E +:107384006F03136470E659734F121E0E85D2DB5BD4 +:107394006E158A3F7276D25FEA5FD7729242EB38FB +:1073A400CD795A679545D90026ADCE591E9E8D32AA +:1073B4008CD53A460D499C24A06C9B2B315C215AF8 +:1073C400EA08C5037C73BF39E1CF546A9E099C5314 +:1073D400AEA0C9506F6DE462C222F8454D0A2A3E40 +:1073E40014D29C4E02147E445B42937CB4DD9F47CE +:1073F400530BE70EA0FFB13DA549352865F8FD40C4 +:10740400C7C2D973E574AC37AB2D6F7CC064072C4D +:10741400C0CEC94DA4416F0571A3CF65C87C7C64FF +:10742400E72FBB150328EA6E6149E172132F0E366C +:1074340047D8FE40C59933356EAE6775DB60B36FD0 +:10744400FF984137A0A52245C870872B331FD1145C +:107454008300F412CD18770D3B4ECF1C5371BF3D02 +:107464008A93650E9EF64A4C23A05B4A14BEBF0E57 +:10747400986AEA6A4988D82C0F5D2B1176D6967BD8 +:1074840027DE8879C366D224F159D5195FD7CB1D7D +:10749400758B9D3EC700BF13FF24BE325F342E4D53 +:1074A400E59B3E66F53E1F452A745A3DAE5DD8788D +:1074B40013D98B621708C06F39C18F493893890F6C +:1074C40077B7273E80879053814D842BCD960868EB +:1074D400B4216E5C8E37D35F4367C9397C0F6A2E43 +:1074E4007E6E40694ED29D2BA26A5E5FFA8FB074A5 +:1074F400278B0A003E6A7C1A3F98384C3D526949F2 +:10750400C5049C232D0DCE40737B630F26DAC77C04 +:10751400003A30573F73357B283A0F615BD1732DA6 +:107524007D9F2B470D5C5E5054C89D6C328EDF6C82 +:10753400E2A04842E85B807C14999530C8D7B274C5 +:107544008548CD403FFB91346007F0733299BC62AB +:10755400B7778B1F172A2B087150231FCB55177031 +:10756400A6198032B629C432AC992B37AD50D73D19 +:10757400F35A821B642E6E4F491C541F3B79D6521A +:10758400D18F3A43491B754785303933DA4E212A66 +:10759400D612291671DAAD0880920D27BF0D4971F4 +:1075A4006106804FEFF2AA41B4DA384CE396927C3C +:1075B400A88297441D1FC90012C48A5914A5BE414C +:1075C4005E5A721400C51F71BB791E6025011F48E5 +:1075D400FD3FC267CA52FD6158C6423A4687F52E3E +:1075E400B6B5BC097AA1D540169FEF0B6EEFD464F3 +:1075F400F1D17E159F9F886A42241F02F46A0831E4 +:107604008282546D3AA6C9517CD1673F3E49063AFD +:107614006B989829C1F953099B37170A91F5C20A47 +:107624004886AD063F199F071D3A680E05C07C7752 +:107634005B5B6301979D0D77496AE52B9C036E762E +:1076440034259E5DE98A3B7BE3B937576B5BDA08E7 +:10765400FD81D8240E163D668B5F2B7BEEB8447EED +:1076640060CDD00B3E006D6DB3663850824D6771AE +:1076740014F2EB74D2CAF94C3B05FA4EEE58E331DE +:107684000B8A3F6E2425D31DAB70575F150FAE6573 +:107694003197655F92160D170C8D523DD2E620632B +:1076A400E3BED64EA0866458636F1C41DDC3666397 +:1076B400EC912C753CE5683FCB4DD567E88DE41122 +:1076C4003D0BFC241DD5081E2D17DD7CC7E6523763 +:1076D400290F911045DAFB639F8C734ACBD1A72FF6 +:1076E40058555646A72EE10257563A6F2F3ECA53B5 +:1076F40051C7C17DE2FE0B5F4B2E9922AA867668A4 +:10770400A0FDD34F2A71F73666DAAB532618DA1187 +:107714009F253A5048F8604D6850E37E89915D2872 +:10772400E7398C31B8942D2C5BFD7E29AECEF771F0 +:107734005217963CF0C5A628AECA18157870592180 +:10774400AC98B81EC00D666EEF1A4E18FD936730E4 +:10775400F582D86ED40792412998B91DDD8AF526A1 +:1077640055ACA32D5737FE08D84D9513B68698040B +:107774009C67D169B2CC6E6D85281A2AB049ED494F +:1077840075DE093272C5D33E0295A96C330ED72932 +:1077940028A4F00448E8E22644999F33B8F73F3719 +:1077A400086B094F293F2E68D860F745BD7ED65A2D +:1077B4008066721A96D1CC3104D75100D269487BC5 +:1077C400B4835E64F580057C7A880D72D105B33884 +:1077D400D64272681F094806BBA6986A2A6F896A4E +:1077E400089B4855F4463E2007A799345DDE2C29B2 +:1077F400EAF2110C2707005FFD96981F8109001714 +:10780400BFD715361FBF9516D3E01A1B00CDFD0E4A +:107814003FBD8056F5B11A4332D94401646DEC6121 +:10782400FBAFF12F9923157AAE10B0364CE4495AC8 +:1078340069845008125C2344E202DB067ACA226798 +:107844008BAC3361E35C0603245D066807914C4E00 +:10785400407E2540884A7F6CEAB61D38B7DB143079 +:1078640027540B2B1FAC826DBA350D2A66EE827C31 +:107874002C936D1E25C31403C6364335A13FE55131 +:10788400B03E063C555DD4282BB8B4575162B45C65 +:1078940059656C48B4A2ED54C7DB2C279298F55275 +:1078A40073508D39AB810424B27D9B4CA2815A1450 +:1078B400020089114A7BBE255B781C71F4748071C7 +:1078C400651D1631AAB10D5E41D03078643C096F54 +:1078D400A72E6A22763A5B3C4BA1BC0E86FFEF25AD +:1078E4006574657480D74C56C44770061752983C2B +:1078F400577C0E7A8E574238F5DEF02E9677C2000A +:107904007E12E0323801E91361CFFB20EA0DEF402B +:10791400EADAAC1DE989877997C682554371ED4C43 +:10792400247E8604033B0B39B712F97E004B731C8B +:107934003DF2CA381F07876486FB601BC4DDD02C68 +:10794400740AD9317171DF782453B701ACC03C1388 +:107954007E17964F4B49EA2E7018C5069CDBEA3811 +:107964007602814EB85B774DF9A4C277B3964D5C2D +:1079740061EC2B7A495DA72B9E80356AE14E9D7C94 +:107984005CFC3B3BEC6DC874C694A94F9041312913 +:1079940064A61F68F7B8C3373619F8427F417606E4 +:1079A400C254265645D31D0A93345A07ABA68261A6 +:1079B40011FE28287799C37973EA2A2D6E0B8C1E41 +:1079C400EED121075C70770320919B7CA188FA1C7F +:1079D4003AC689606BE9CE19EDA85735FC429E166C +:1079E4000E6FB5706CED6E702E8FC86E7F3BC7390D +:1079F4003C2B574937AFB470D626F7140975CC0C15 +:107A04007E4F635C95C85B12B030910107A10E04F0 +:107A14003E9A73524303166838ADF94045A5D362C4 +:107A240001DA117C15708F4316422764E86C9B3E83 +:107A34007150A66B368E2166393D091F7596E31881 +:107A440005FCC4508D64A2258C6FDB6708B1D67B1E +:107A54004F92DD653B8F682358B9DA37ABDA3C2C9B +:107A6400E19484714163EB3436C2CF4CBFB14E19FB +:107A7400DD8A48593F6A7631AFF6825291ABE80EFF +:107A84001909ED0B579859297285045B11022C577B +:107A9400EAD2956430BEF34431B6640E9E8AFB4646 +:107AA40096FD864A16D90A7B1894A401FAE7157044 +:107AB40050A0437640033E06EA85EC4E5EA9F340AF +:107AC400EF3AA35328E61673BB0D162EA7082745D5 +:107AD400309D8E211EB17C3F448AEF1DAD19E461B7 +:107AE400A4B8174ED9B52867E673F457B55CB32428 +:107AF40038672C4543ED5C373E2F220FFCC53D6BA8 +:107B04005FD0DA4756C69E18602FB95E736CC069A1 +:107B1400DEB69E0223C1BC63B4C1BB288B31274BA4 +:107B24003399197DEF770B2E6B7D774926D4302D51 +:107B3400A32E8C3177D8AE5F9CF0FB62AD0074014C +:107B4400DF6A0655546F0E60FFC4B0404010C40095 +:107B540052D22B1B7AC75F344436E77106496D5203 +:107B640009893C74DAFF9F381154E635A6912B2F0E +:107B74004026705E28D9850C97292F42D0A9BB15C1 +:107B840086F63503B69D072ED0842D1CF219964334 +:107B94008BF63E667F65245657B7DB5B112CE408F1 +:107BA4008E70F0394058D670E34AAB58AE5F322637 +:107BB4005DC6A257C1AF8B266143EA3AE5EAE829DC +:107BC40009927E68325C5E76AE287C2995FA496A11 +:107BD40029E7824EB04C9E68EEB1B71FBA83BE3F10 +:107BE400C71EE20EE77D401F8C8C2D2DD697B57DE8 +:107BF400EA370F24D0108575CE58AA5E8E4E675B87 +:107C0400C0762C259BCBC85313968D7451768B402C +:107C1400688CAC52A9861A34ACD83050335EA54572 +:107C240059318277B127F30D5543361CD82A0927D9 +:107C340073BCCE5702ED763B4FDECA2F8B48547A85 +:107C4400A1E03E70E8EA100B1B06D9526EACD9666F +:107C5400285BCD3426BD2539D4CB707ACDB69B03B1 +:107C64008EFC1555A38E284529C1EF6C8BA8F853BB +:107C74002916606422B9AD03F7494F32BDBD4B3CB0 +:107C840043F6AD5A295F485E7F2D1836551F947808 +:107C9400E7BC0F430482344E49C16B57F6FDD33918 +:107CA4004B73D204E235255694A7FE13E8476D1EA4 +:107CB400DAEF88051DB6266278BB6662238C665BA4 +:107CC400DCB0FA0F973B7E349B645D468DBC596FE4 +:107CD400C3775D684097ED178C2C312041A1F73CA8 +:107CE400160F811BB3B2DE48BF0F351B07EFA50586 +:107CF400F24461490039DB7F25A42973E012EB11BA +:107D040042C4887A85C9763A67CF034EC1E4393CC8 +:107D14007D167053F5369648C066B6375E93603468 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/rsort.riscv.hex b/benchmarks/riscv_tests/benchmarks/rsort.riscv.hex new file mode 100644 index 00000000..00097c6e --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/rsort.riscv.hex @@ -0,0 +1,1558 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A00097020000938242047390523097810000BF +:1000B0009381C16117A200001302B2E8137202FC1F +:1000C000732540F1930510006370B500130115000E +:1000D0001311110133014100131615013302C2003F +:1000E0006F209037130101EF2322110023242100F8 +:1000F0002326310023284100232A5100232C6100AC +:10010000232E710023208102232291022324A102A5 +:100110002326B1022328C102232AD102232CE10283 +:10012000232EF1022320010523221105232421057A +:100130002326310523284105232A5105232C610557 +:10014000232E710523208107232291072324A10751 +:100150002326B1072328C107232AD107232CE1072F +:10016000232EF10773252034F325103413060100E4 +:10017000EF20900773101534B7220000938202809D +:1001800073A0023083204100032181008321C1003C +:100190000322010183224101032381018323C10141 +:1001A0000324010283244102032581028325C10225 +:1001B0000326010383264103032781038327C10309 +:1001C0000328010483284104032981048329C104ED +:1001D000032A0105832A4105032B8105832BC105D1 +:1001E000032C0106832C4106032D8106832DC106B5 +:1001F000032E0107832E4107032F8107832FC10799 +:0802000013010111730020300D +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000009307050017470000130747EC130500006E +:102010000326070083A607000328470083A547007F +:102020006312D6021305250093060580631AB800D3 +:102030001307870093878700E39C06FC13050000C5 +:10204000678000001305150067800000131325004A +:10205000130733FF930703FF130101BD937E07FFAF +:1020600093C7F7FF13050600930343FF130603000E +:102070001308010023268142232491422322214375 +:1020800023203143232E4141232C5141232A6141F6 +:102090002328714123268141232491412322A141F8 +:1020A000938205001303C3FF930F880013070840B2 +:1020B00093080000938E0E0113FE07FF130F00021A +:1020C0009307080023A0070093874700E39CE7FEDF +:1020D0003389750063F225299384050083A90400E0 +:1020E00003A4440083A68400B3D9190193F9F90F1E +:1020F00093992900B309380103AA09003354140144 +:102100001374F40F130A1A001314240083A7C400D5 +:102110003304880023A0490183290400B3D61601A3 +:1021200093F6F60F93891900939626002320340125 +:10213000B306D80003A40600B3D7170193F7F70F2F +:10214000130414009397270023A08600B307F80018 +:1021500083A60700938404019386160023A0D7006A +:10216000E3EE24F7B386D501B384C50063F6960287 +:1021700083A7060093864600B3D7170193F7F70F9E +:1021800093972700B307F80003A407001304140073 +:1021900023A08700E3EE96FC032448008326080072 +:1021A00093870F003304D4002322880083A60700FE +:1021B00083A4470093878700B306D4003384960036 +:1021C00023ACD7FE23AE87FEE392E7FE338965009A +:1021D0009389C5006362390D13040900832A040042 +:1021E000032AC4FF832484FFB3D61A0193F6F60FA3 +:1021F00093962600B306D80003AC0600B3571A0125 +:1022000093F7F70F930BFCFF93972700032B44FFE3 +:10221000B307F80023A0760183AC0700B3D61401FE +:1022200093F6F60F938BFCFF9396260023A077017D +:10223000B306D80083AB0600B3571B0193F7F70F23 +:10224000138DFBFF9397270023A0A601B307F80087 +:1022500083A60700131C2C00330C8501138DF6FF99 +:1022600023A0A701939C2C00232E5CFFB30C9501A7 +:10227000939B2B0023AE4CFFB30B75019396260066 +:1022800023AE9BFEB306D50023AE66FF130404FF06 +:10229000E37634F53309C901636EB9028327090077 +:1022A0001309C9FFB3D7170193F7F70F93972700C7 +:1022B000B307F80083A607009386F6FF23A0D70094 +:1022C0008327490093962600B306D50023A0F60085 +:1022D000E376B9FC93888800638AE8019387050058 +:1022E00093050500138507006FF09FDD638CA20244 +:1022F0000324C142832481420329414283290142AC +:10230000032AC141832A8141032B4141832B01418F +:10231000032CC140832C8140032D41401301014314 +:102320006F0010080324C1428324814203294142E3 +:1023300083290142032AC141832A8141032B414160 +:10234000832B0141032CC140832C8140032D41404C +:102350001301014367800000938605006FF0DFE002 +:10236000130101EB23229113B70C00409387FCFF6C +:10237000232481142322911423202115232A51136D +:1023800023261114232E3113232C411323286113E8 +:1023900023267113232481132320A113232EB1118B +:1023A0001309050093840500130406002324D100BB +:1023B000930A50022326F1006F00400163040506D2 +:1023C0009385040013041400E7000900034504008A +:1023D000E31655FF83461400930D140013870D0078 +:1023E000930B00029309F0FF130AF0FF930500001E +:1023F00013065005130590009387D6FD93F7F70F4A +:1024000013041700636CF606172800001308888170 +:1024100093972700B387070183A70700B3870701B6 +:10242000678007008320C11403248114832441148E +:10243000032901148329C113032A8113832A411319 +:10244000032B0113832BC112032C8112832C411205 +:10245000032D0112832DC1111301011567800000A6 +:10246000938B06008346170013070400130417001C +:102470009387D6FD93F7F70FE378F6F8938504007A +:1024800013055002E700090013840D006FF01FF4DC +:1024900003481700938906FD13070400930708FDFE +:1024A000930608006366F50293972900B389370104 +:1024B0001307170093991900B3890901034807000E +:1024C000938909FD930708FD93060800E37EF5FC58 +:1024D000E3540AF2138A09009309F0FF6FF0DFF169 +:1024E00083461700130704006FF01FF19385040063 +:1024F00013055002E70009006FF05FED83278100AC +:10250000834617001307040083A907009387470039 +:102510002324F1006FF0DFFB130500039385040013 +:10252000E70009009385040013058007E700090010 +:1025300083278100130C0001232201001387470029 +:1025400083278100930D000083A907002324E10065 +:1025500013060C00930600001385090093850D00F7 +:10256000EF10001C2328A10093070000930C050026 +:102570006380B723130B4101130D100013060C00E9 +:10258000930600001385090093850D00EF00105697 +:1025900013060C009306000093090500938D0500B7 +:1025A000EF100018832741002320AB002320A10156 +:1025B000930C0500130B4B00130D1D00E390B7FDAA +:1025C000E3FE89FB635C4D01130AFAFF9385040067 +:1025D00013850B00E7000900E3484DFF8327010046 +:1025E0000327C10093099000338AE700131A2A00D9 +:1025F00093070101338A47016F00C000832C0A0052 +:10260000130ACAFFB3B79901B307F04093F77702F3 +:10261000938707033385970193850400E70009003A +:102620009307C100E39C47FD6FF05FDA930710004A +:1026300063CCB7160327810093074700638605180C +:10264000832907002324F10013DCF941634E0C18A1 +:10265000930D0C0023220100130CA0006FF05FEF1C +:10266000130C0001232201009307100063C2B7106E +:1026700083278100138747006FF09FEC8327810039 +:1026800083AD0700138B470063840D18635840091E +:102690009307D002639EFB0403C50D006308050287 +:1026A000930BF0FF63C609009389F9FF638E7901EC +:1026B00093850400938D1D00E700090003C50D00FC +:1026C000130AFAFFE31005FE635C4001130AFAFFE8 +:1026D0009385040013050002E7000900E3180AFED1 +:1026E000232461016FF09FCE971D0000938D8D4FC5 +:1026F00093870D00B3863D01639809006F00401376 +:10270000938717006386D70003C70700E31A07FE05 +:10271000B387B741330AFA40634C401103C50D003B +:10272000E30005FC930BF0FF6FF0DFF79347FAFF30 +:1027300093D7F74183461700337AFA001307040052 +:102740006FF09FCB832781009385040003A50700CA +:10275000138B4700E7000900232461016FF01FC7B6 +:102760008346170093851500130704006FF0DFC838 +:1027700083278100138B7700137B8BFF93078B00DC +:1027800083290B00832D4B002324F1006FF05FDCC5 +:10279000E3F289DF9307100023200100130D1000DE +:1027A000E3C447E36FF09FE383278100138B770037 +:1027B000137B8BFF93078B0083290B00032C4B00AB +:1027C0002324F1006FF09FE8032781006FF05FE79B +:1027D000130C8000232201006FF01FE9130CA000EE +:1027E000232201006FF05FE8938504001305D002F7 +:1027F000E700090033373001B3078041B3093041A6 +:10280000B38DE740130CA000232201006FF05FD4CA +:10281000635640019307D002E398FBEC971D00003C +:10282000938D4D3C13058002930BF0FF6FF09FE7F3 +:10283000130AFAFF9385040013850B00E7000900D3 +:10284000E30E0AEC130AFAFF9385040013850B00CC +:10285000E7000900E31E0AFC6FF05FEC83A70500A8 +:102860002380A70083A705009387170023A0F50006 +:1028700067800000130101F81308F103137808FCC6 +:10288000130700042320E800930700002322F80028 +:10289000130710002324E800930700002326F80004 +:1028A0002328A800232AB800232CC800232ED800F0 +:1028B0000F00F00F97E6FFFF9386C67423A0060172 +:1028C0009307000023A2F60097E6FFFF9386867722 +:1028D00003A7060083A746003367F700E30A07FE55 +:1028E0001307000023A0E6009307000023A2F600D0 +:1028F0000F00F00F0325080083254800130101088D +:1029000067800000130101FF232481008325020456 +:102910009307020023261100B387B7001386150022 +:102920002380A7002320C2049307A0006300F502C0 +:1029300093070004630CF6008320C1000324810088 +:102940001305000013010101678000009356F64152 +:102950001305020093050000EFF0DFF18320C100B2 +:102960002320020403248100130500001301010148 +:1029700067800000732700B0975700009387875542 +:10298000631E050083A6070017160000130606261F +:102990009755000023ACC5523307D74023A0E7006A +:1029A000732720B0631E050083A64700171600009A +:1029B000130646249755000023ACC5503307D74073 +:1029C00023A2E700678000009316150013E71600A6 +:1029D00097E6FFFF938606639307000023A0E600B7 +:1029E00023A2F6006F0000003716000097E7FFFFF4 +:1029F00093874761130636A79306000023A0C700FC +:102A000023A2D7006F000000130101FF232611004D +:102A1000EFF09FFB97E7FFFF9387C75E1306D01089 +:102A20009306000023A0C70023A2D7006F00000078 +:102A300083470500638207021306050083471600DB +:102A400013061600E39C07FE3306A640930600001B +:102A5000930500006FF01FE21306000093060000CC +:102A6000930500006FF01FE1631005006780000010 +:102A7000130101FD13070500232611021305C100F0 +:102A80001306B101130890006F0080001386070041 +:102A90009377F700B337F800B307F04093F7770266 +:102AA0009376F70093870703B387F6002300F600B9 +:102AB0009396C501135747009307F6FF33E7E600E7 +:102AC00093D54500E314C5FC230E0100EFF05FF63B +:102AD0008320C1021301010367800000130101FC80 +:102AE00013034102130E05002322B1022324C10265 +:102AF0002326D10217050000130505E19306030004 +:102B000013060E0093050000232E11002328E10276 +:102B1000232AF102232C0103232E11032326610013 +:102B2000EFF01F848320C10113050000130101048D +:102B300067800000130101FB13038103232481023A +:102B40002326A100232CC102232ED1021304050049 +:102B50001386050017050000130585D09305C100F5 +:102B600093060300232611022322F1042320E1040B +:102B70002324010523261105232E6100EFF04FFECB +:102B80008327C100238007000325C1008320C102E1 +:102B9000330585400324810213010105678000008D +:102BA000B3E7C500B367F50093F73700B306C50078 +:102BB000638407023386C50093070500637ED50250 +:102BC00003C705009385150093871700A38FE7FEC1 +:102BD000E318B6FE67800000E37ED5FE930705008C +:102BE00003A70500938747009385450023AEE7FEC2 +:102BF000E3E8D7FE6780000067800000B367C50088 +:102C000093F737003306C5006380070293F5F50F8D +:102C1000930705006370C50493871700A38FB7FE61 +:102C2000E31CF6FE6780000093F5F50F139785000F +:102C300033E7E500931707013367F700E374C5FE38 +:102C4000930705009387470023AEE7FEE3ECC7FE3A +:102C50006780000067800000130101F6977700008D +:102C60009387C72723244109177A0000130A0A27EC +:102C700023263109B309FA40232A91082328210980 +:102C800093040500138905001305020093850700CE +:102C900013860900232E1108232C810823225109B1 +:102CA000930A0200EFF0DFEF177600001306C62943 +:102CB000330646419305000033853A01EFF01FF4D7 +:102CC0009305090013850400EFF01FDA9305000057 +:102CD00013050000EF00D065175900001309891F84 +:102CE000832609001304F103137404FC9304050004 +:102CF0006394060483264900639606001385040046 +:102D0000EFF09FCC13090400975900009389091C28 +:102D100003A6490013050900971500009385C5EF28 +:102D2000EFF05FE13309A900E30A24FD1305040075 +:102D3000EFF01FD06FF09FFC97590000938909199D +:102D400003A6090097150000938505ED13050400FF +:102D5000EFF05FDE832649003309A400E38606FC1A +:102D60006FF01FFB83470500638E07009307050084 +:102D700003C7170093871700E31C07FE3385A7409E +:102D8000678000001305000067800000130605003F +:102D9000B306B60013850500930706006398050087 +:102DA0006F00C001938717006388F60003C7070010 +:102DB000E31A07FE3385C740678000006780000084 +:102DC00083470500938515001305150003C7F5FF1C +:102DD00063880700E386E7FE3385E74067800000ED +:102DE000930700006FF05FFF9307050003C705001E +:102DF0009387170093851500A38FE7FEE31807FE5E +:102E00006780000003470500930600029307050052 +:102E10006318D70003C7170093871700E30CD7FE8A +:102E20009306D0026300D7069306B0026300D7046E +:102E300083C60700930500006382060413050000A3 +:102E400093871700138606FD1317250083C6070016 +:102E50003305A700131515003305A600E39206FEFF +:102E6000638005023305A0406780000083C6170019 +:102E70009305000093871700E39206FC13050000FA +:102E80006780000083C61700930510009387170022 +:102E9000E39606FA130500006FF09FFE138F0500FE +:102EA0001308000063DC0500B337A000B305B04091 +:102EB000338FF5403305A0401308F0FF63DA0600B6 +:102EC000B335C0003307D040B306B7403306C04027 +:102ED00093080600138706009307050093050F006B +:102EE00063940624B7460080938686D76376CF0E18 +:102EF000370301006378660C1303F00F6374C3009B +:102F0000130780003353E600B386660003CE060045 +:102F1000330EEE00130700023303C741630CC701F1 +:102F2000B3156F00335EC501B3186600B365BE000C +:102F3000B317650013D60801B3F6C502139508014F +:102F40001355050113D70701B3D5C50293960601A2 +:102F500033E7E600B305B502637AB700330717011C +:102F6000636617016374B700330717013307B7406F +:102F7000B376C7029397070193D707013357C70268 +:102F80003307E50213950601B367F50063FAE7001E +:102F9000B387170163E6170163F4E700B3871701EE +:102FA000B387E74033D5670093050000630A080044 +:102FB000B337A000B306B040B385F6403305A04058 +:102FC000678000003703000113070001E36C66F21D +:102FD000130780016FF01FF36316060093081000BB +:102FE000B3D8E8023706010063F6C8121306F00FE3 +:102FF000637416011307800033D6E800B386C60059 +:1030000003CE0600B3051F41330EEE001307000286 +:103010003303C7416306C709B3986800B35ECF01A5 +:10302000B3176500335EC50113D50801B3156F00F2 +:10303000336EBE009395080193D5050113560E011A +:10304000B3D6AE0233F7AE02B386D502131707012B +:103050003367C700637AD700330717016366170128 +:103060006374D700330717013306D7403377A602BE +:10307000131E0E01135E0E013356A602131707012D +:103080003386C502B365C70163FAC500B385150170 +:1030900063E6150163F4C500B3851501B385C5402A +:1030A00093D6080133F7D50213950801135505018E +:1030B00013D60701B3D5D502131707013367C7002D +:1030C000B305B502637AB7003307170163661701CA +:1030D0006374B70033071701B305B74033F7D50260 +:1030E0009397070193D70701B3D5D502B305B5026E +:1030F00013150701B367F50063FAB700B38717012B +:1031000063E6170163F4B700B3871701B387B740CD +:103110006FF05FE93706000113070001E3EEC8EC2A +:10312000130780016FF05FEDE362DFE8370701000E +:1031300063FAE604930EF00F33B7DE00131737007F +:10314000B748008033D3E600938888D7B3886800F7 +:1031500083CE0800B38EEE0013070002330ED74172 +:10316000631CD70363E4E601636AC500B307C54087 +:10317000B305DF403335F500B385A540138507005F +:103180006FF0DFE2B708000113070001E3EA16FB66 +:10319000130780016FF0DFFA3357D601B396C601EB +:1031A000B36FD700B357DF0113D70F0133F3E70233 +:1031B000B315CF01B356D501B3E6B60093950F0111 +:1031C00093D5050193D806013316C6013315C50101 +:1031D000B3D7E70213130301B3681301338FF5026A +:1031E0001383070063FEE801B388F8011383F7FF38 +:1031F00063E8F80163F6E8011383E7FFB388F80199 +:10320000B388E84133FFE8029396060193D606019E +:10321000B3D8E802131F0F01336FDF00B385150326 +:1032200093870800637EBF00330FFF019387F8FF89 +:103230006368FF016376BF009387E8FF330FFF01E8 +:10324000B305BF4013130301370F01003363F300CD +:103250009307FFFFB378F30093560601135303015E +:10326000B377F6003387F802B307F302B388D802C6 +:103270003303D302B388F80093560701B3861601CF +:1032800063F4F6003303E30193D706013383670049 +:10329000B70701009387F7FFB3F6F6009396060190 +:1032A0003377F7003387E60063E66500639E6500C9 +:1032B000637CE5003306C7403337C7003307F701A7 +:1032C0003303E340130706003307E5403335E500D9 +:1032D000B3856540B385A540B397D5013357C70182 +:1032E00033E5E700B3D5C5016FF05FCC9308050067 +:1032F0009387050013080600138506001383080052 +:1033000063940628B7460080938686D763F6C50E79 +:10331000370701006378E60C1307F00F3337C70057 +:10332000131737003355E600B386A60083C60600A0 +:10333000130500023387E600B306E540630CE500A1 +:10334000B397D70033D7E8003318D600B365F7003A +:103350003393D80093580801B3D715031316080107 +:103360001356060113570301B3F61503138507001F +:10337000B305F6029396060133E7E600637EB700D5 +:10338000330707011385F7FF636807016376B7000A +:103390001385E7FF330707013307B740B3771703F8 +:1033A00013130301135303013357170393970701B3 +:1033B00033E36700B306E60213060700637CD3001D +:1033C000330368001306F7FF636603016374D300D9 +:1033D0001306E7FF131505013365C50093050000CB +:1033E0006F00400E3705000113070001E36CA6F2E1 +:1033F000130780016FF01FF3631606001307100018 +:103400003358C702370701006370E80C1307F00F49 +:1034100063740701130580003357A800B386E600E4 +:1034200003C70600130600023307A700B306E640F1 +:103430006316E60AB3870741930510009358080105 +:10344000131608011356060113570301B3F61703A9 +:10345000B3D717039396060133E7E600330EF6025F +:1034600013850700637EC701330707011385F7FF44 +:10347000636807016376C7011385E7FF3307070118 +:103480003307C741B3771703131303011353030122 +:10349000335717039397070133E36700B306E60238 +:1034A00013060700637CD300330368001306F7FF9D +:1034B000636603016374D3001306E7FF1315050168 +:1034C0003365C50067800000370700011305000160 +:1034D000E364E8F4130580016FF01FF43318D8009B +:1034E000B3D5E7003393D800B397D70033D7E800BC +:1034F000935808013366F70033F715039317080153 +:1035000093D7070113550601B3D515031317070108 +:103510003367A700B386B70213850500637ED70023 +:10352000330707011385F5FF636807016376D7004A +:103530001385E5FF33070701B306D74033F71603BA +:103540001316060113560601B3D616031317070107 +:10355000B388D702B367C7001387060063FE17015D +:10356000B38707011387F6FF63E8070163F61701C6 +:103570001387E6FFB387070193150501B38717414A +:10358000B3E5E5006FF09FEB63E6D5183707010060 +:1035900063F4E6041307F00FB335D70093953500B5 +:1035A0003747008033D5B600130787D73307A70006 +:1035B00003470700130500023307B700B305E540D2 +:1035C0006316E50213051000E3EEF6EE33B5C8000E +:1035D000134515006FF01FEF370700019305000139 +:1035E000E3E0E6FC930580016FF09FFB3353E600B8 +:1035F000B396B6003363D30013550301B31EB60070 +:1036000033D6E700B376A602B397B70033D7E80006 +:103610003368F7009317030193D707011357080185 +:103620003356A6029396060133E7E600338FC702AE +:10363000130E0600637EE70133076700130EF6FFE3 +:10364000636867006376E701130EE6FF33076700E0 +:103650003307E741B376A7023357A70293960601D3 +:103660003386E7029317080193D70701B3E7F60003 +:103670009306070063FEC700B38767009306F7FF52 +:1036800063E8670063F6C7009306E7FFB387670048 +:1036900013150E01370E01003365D5009306FEFFAA +:1036A0003378D500B387C740B3F6DE001356050163 +:1036B00093DE0E013303D802B306D602135703017B +:1036C0003308D8033308D800330707013306D6037D +:1036D0006374D7003306C601935607013386C600CC +:1036E00063E6C702E39CC7CEB70701009387F7FFE5 +:1036F0003377F700131707013373F300B398B8005B +:103700003307670093050000E3FEE8DA1305F5FFD1 +:103710006FF0DFCC93050000130500006FF09FDA17 +:103720009308060013870600930705001388050019 +:10373000639C0622B7460080938686D763FCC50C3F +:1037400037030100637E660A1303F00F6374C3003E +:10375000130780003353E600B386660003CE0600ED +:10376000330EEE00130700023303C741630CC70199 +:10377000B3956500335EC501B31866003368BE00BB +:10378000B317650013D608013377C80213950801F3 +:103790001355050193D607013358C80213170701C3 +:1037A000B366D7003308050363FA0601B386160132 +:1037B00063E6160163F40601B3861601B38606417B +:1037C00033F7C6029397070193D70701B3D6C60212 +:1037D000B306D50213150701B367F50063FAD700E6 +:1037E000B387170163E6170163F4D700B3871701A6 +:1037F000B387D74033D5670093050000678000008A +:103800003703000113070001E36666F41307800124 +:103810006FF05FF46316060013061000B35816032A +:103820003706010063F2C80A1306F00F637416012D +:103830001307800033D6E800B386C60003CE060027 +:10384000330EEE00130700023303C7416318C709A4 +:10385000B385154113D708011395080113550501C8 +:1038600013D60701B3F6E502B3D5E5029396060138 +:10387000B3E6C600B305B50263FAB600B386160117 +:1038800063E6160163F4B600B3861601B385B6404D +:10389000B3F6E5029397070193D70701B3D5E50285 +:1038A000B305B50213950601B367F50063FAB700D7 +:1038B000B387170163E6170163F4B700B3871701F5 +:1038C000B387B7406FF01FF33706000113070001FD +:1038D000E3E2C8F6130780016FF0DFF5B3986800E4 +:1038E00033D7C501B3176500335EC50113D5080191 +:1038F000B376A702B3956500336EBE0093950801B9 +:1039000093D5050113560E013357A702939606016E +:10391000B3E6C6003387E50263FAE600B386160114 +:1039200063E6160163F4E600B38616013386E640CB +:10393000B376A602131E0E01135E0E013356A602C5 +:10394000939606013386C502B3E5C60163FAC50046 +:10395000B385150163E6150163F4C500B385150150 +:10396000B385C5406FF01FEFE3EAD5E837070100E4 +:1039700063FCE604130EF00F3337DE001317370035 +:10398000B748008033D3E600938888D7B3886800AF +:1039900003CE0800330EEE00130700023303C741C5 +:1039A000631EC70363E4B600636AC500B307C5407E +:1039B000B385D5403335F5003388A540138507001E +:1039C000930508006FF09FE3B7080001130700019B +:1039D000E3E816FB130780016FF09FFA3357C60127 +:1039E000B3966600336FD700B3D7C50113570F01E5 +:1039F000B3F8E702B39565003358C5013368B800E2 +:103A000093150F0193D505019356080133166600EF +:103A100033156500B3D7E70293980801B3E6D800E1 +:103A2000B38EF5029388070063FED601B386E601E4 +:103A30009388F7FF63E8E60163F6D6019388E7FF12 +:103A4000B386E601B386D641B3FEE6021318080139 +:103A500013580801B3D6E602939E0E01B3EE0E0191 +:103A6000B385D5029387060063FEBE00B38EEE01D8 +:103A70009387F6FF63E8EE0163F6BE009387E6FFE7 +:103A8000B38EEE01B385BE4093980801B70E0100D6 +:103A9000B3E8F8009387FEFF33F8F8009356060169 +:103AA00093D80801B377F6003307F802B387F8021A +:103AB0003308D802B388D8023308F80093560701B8 +:103AC000B386060163F4F600B388D801B707010096 +:103AD0009387F7FF13D80601B3F6F6009396060115 +:103AE0003377F700B30818013387E60063E6150162 +:103AF000639E1501637CE5003306C7403337C7007A +:103B00003307E701B388E840130706003307E540B1 +:103B10003335E500B3851541B385A540B397C5019D +:103B20003357670033E5E700B3D565006FF01FCD6D +:103B3000130101FF232481003714000013050480C2 +:103B4000174600001306863997050000938505384F +:103B500023261100EFE08FCF17250000130505374E +:103B6000EFE00FCA630C05008320C100032481002D +:103B700013051000130101016780000013051000F8 +:103B8000EFE05FDF130504801746000013060635DB +:103B90009725000093858533EFE04FCB1305000098 +:103BA000EFE05FDD032481008320C10017050000E2 +:103BB0001305C531130101016FE08FC4130101FF2B +:103BC000170500001305C50323261100EFE05FE68B +:103BD0008320C1001305F0FF13010101678000007D +:103BE000286E756C6C2900006D6379636C6500004C +:103BF0006D696E737472657400000000496D706CBD +:103C0000656D656E74206D61696E28292C20666F64 +:0D3C10006F210A002573203D2025640A0065 +:103C2000C0E8FFFF5CE8FFFFCCE8FFFF5CE8FFFFB8 +:103C30005CE8FFFF5CE8FFFF5CE8FFFFDCE8FFFFFC +:103C40005CE8FFFF5CE8FFFF40E8FFFF0CEBFFFFD5 +:103C50005CE8FFFF40E8FFFF70E8FFFF70E8FFFF50 +:103C600070E8FFFF70E8FFFF70E8FFFF70E8FFFFFC +:103C700070E8FFFF70E8FFFF70E8FFFF5CE8FFFF00 +:103C80005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFF2C +:103C90005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFF1C +:103CA0005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFF0C +:103CB0005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFFFC +:103CC0005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFFEC +:103CD0005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFFDC +:103CE0005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFFCC +:103CF0005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFFBC +:103D00005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFFAB +:103D10005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFF9B +:103D200024EBFFFF0CEAFFFF5CE8FFFF5CE8FFFF0E +:103D30005CE8FFFF5CE8FFFF5CE8FFFF5CE8FFFF7B +:103D40005CE8FFFF40EBFFFF5CE8FFFF5CE8FFFF84 +:103D5000B0EBFFFFF8E8FFFF5CE8FFFF5CE8FFFF68 +:103D60005CEAFFFF5CE8FFFFBCEBFFFF5CE8FFFFE6 +:103D70005CE8FFFF40EAFFFF0001020203030303C8 +:103D800004040404040404040505050505050505EB +:103D900005050505050505050606060606060606CB +:103DA00006060606060606060606060606060606B3 +:103DB000060606060606060607070707070707079B +:103DC0000707070707070707070707070707070783 +:103DD0000707070707070707070707070707070773 +:103DE0000707070707070707070707070707070763 +:103DF000070707070707070708080808080808084B +:103E00000808080808080808080808080808080832 +:103E10000808080808080808080808080808080822 +:103E20000808080808080808080808080808080812 +:103E30000808080808080808080808080808080802 +:103E400008080808080808080808080808080808F2 +:103E500008080808080808080808080808080808E2 +:103E600008080808080808080808080808080808D2 +:083E700008080808080808080A +:103E78001000000000000000037A5200017C0101DC +:103E88001B0D0200100000001800000008F0FFFFE2 +:103E98005004000000000000100000002C0000008A +:103EA80044F4FFFF3404000000000000100000008C +:103EB8004000000064F8FFFF10040000000000004C +:103EC800278B0A00F4BE0D00C4832100629B2600E4 +:103ED8006F35300092BE3500EFE53900BC823D00F9 +:103EE800D602510004D7510033909400F91DAF0059 +:103EF8009677C2004010C400536AC5001D1FC90050 +:103F0800BBE7D3004C8BD7009545D900D86BFA0096 +:103F18000F632501B9FF3A0132D94401F5C75101B0 +:103F2800EE545B015B5B6301AD00740195FA8A0195 +:103F3800B0309101CB369701FEBEA1011894A401BF +:103F4800852AAF012453B701C7E9D801D75CDB0143 +:103F5800A5C8E1013421E20142241F02342B2302C7 +:103F6800FCD63402ADBD3602364C4D0266827C0268 +:103F7800CA318102DEB69E02A6B6CD027D12D402F7 +:103F8800023ED402A72EE1025842E802E35C06038F +:103F980002B8090325C3140386F635032E474E03DA +:103FA8005C707703E055780382238A03CDB69B03C0 +:103FB80022B9AD031F3EB503EA08C50310B4DC03FC +:103FC80069EAF70307A10E04F4AA1E04586F2A042D +:103FD800932C2C04C2C43904A8824F0431E256043D +:103FE800C6F65804DAB27604247E8604B6869804A7 +:103FF800B6499E04F280AB041C9CC904EADECA04DC +:104008004B73D2048B19DA0428A4F00481D90F0564 +:1040180071353D0552554B05A42454055F415E0595 +:10402800A4416F055CF27F05BF458505DAEF880579 +:1040380067FB8D0507EFA5052012B505116EEE0586 +:10404800EDA43C0640033E061F094806D4D5540695 +:10405800B7845A068327620622246306C44770067B +:10406800D63A75067F4176065F89790600C17F06D4 +:10407800E43E87064886AD069DE1B6068B4BC3062F +:104088007018C5062896CE06E202DB06C3B7F50609 +:10409800C03FFD06218FFD069FF70407D6251C07A4 +:1040A800EED121073F7A470793345A07BF67620763 +:1040B8003F199F07E9AFA107FCA8BF074515D5071A +:1040C800387BF9077398030815220C08CA491608A3 +:1040D800172A2B08689B3608698450089B6C60086F +:1040E80071DAAD08DBD3B308FD09D4086B5BDA08D5 +:1040F800112CE4085737FE08306D0609858113092D +:10410800E5034A09C1F953094FF9570960899F091D +:10411800B654A009B6B5BC097730FE0930410F0A7C +:104128009B37170A45D31D0A154A260A1A2F420A31 +:1041380003BA500AD9535C0AD248600A4FC46D0AC0 +:104148007FC9790A30297B0A25EA7D0A74588E0AC4 +:1041580099D0A90A91F5C20AA3BCC30A4281D20A1E +:10416800AE3AE20A5ABAF20A33E90F0BE8EA100B40 +:1041780060D3150BE0DB170BD0DC180B92E8340B7F +:10418800E376560B9A5A5B0B267C5F0B14488E0B12 +:10419800663FA50B0ADBB40B20B4CC0BB916D00BC9 +:1041A80060CDD00B1909ED0B169FEF0BEAF2110C3D +:1041B80057A6300CEC2C380C6349510CE245680CBE +:1041C800C06F6C0C28D9850CFFC48F0C6E36920C0E +:1041D800C090A30C9165AF0C0975CC0C80EAD00C8B +:1041E800A18AE60CEC68E80C9FCCFA0CE9A7080D4C +:1041F8000A3B310D4B49360DD188430D8B9E6A0D14 +:10420800CD18770D037E770D1485830DD490830D1B +:104218007C50860DAF89870DD3438E0DAC05950D67 +:1042280011A9A50D0015B40DCAB6BA0D3A32BF0DC5 +:10423800118DC70D55A4D60DB127F30D4F121E0EC3 +:104248001BA5200EE0D8330E243B380E98F64D0EF1 +:10425800E38C570E31B6640E8A93650E1D3A680ECC +:1042680048F8950EC9069A0EB2839F0E4BA1BC0E54 +:1042780014BEBF0E68C3BF0EC71EE20E530BE70E77 +:1042880091ABE80E66DBF10EDACFF30E00CDFD0E32 +:104298003E2F220FDA73360F0E76450FF6614F0F59 +:1042A800B79E5C0F737B630FB1C17B0FBDDC7B0FC7 +:1042B800C45F830FB782890F3893890FBF5F8B0F55 +:1042C8006E09970FFE1ED10FDCC2EC0FDCB0FA0F9F +:1042D8004E2D0B103D231E10234D24101FF83410B3 +:1042E800254C6010F5458A10290F9110B20DA510C4 +:1042F8009A8FC410AFCEE4107989F710E6DD221149 +:104308000F5D2B11C843441136DC5C11EC7E78112B +:104318000200891127829F11C84FCF112618DA1180 +:10432800E88DE411E012EB11A63FF611BD04FB1174 +:10433800612BFB1142820312F6511C12B4AC2012FD +:1043480074E421121C3225121F6735124363391297 +:1043580095C85B12BE6366124667681220C9681268 +:1043680008647E12B56D8B124417DD128300F412B7 +:10437800AABFFF1241E71413ACC03C1341245313E6 +:104388009B0E6413CB486913D84D9513B2E49C1364 +:1043980086DBA7136AA2B213C700BF132FFECC1384 +:1043A80036B4E513E302E7133801E91394A7FE13C3 +:1043B80077370A14AE982D1455864714D6BD4A147B +:1043C800A2815A14D78B5D14A34F62145E5A7214DB +:1043D80027967314082E7C142AE2881430268E142B +:1043E800A7ACA8148A10C014331FD114EB5BDF14D8 +:1043F800D626F714AECA18151E3F32154277401557 +:10440800DBDF4115A5634215E21F7115F1D17E1559 +:10441800E0189F1540B4AA15E72FBB15D0A9BB1506 +:10442800D1A7C515167FCE15B268DB15890FEE1515 +:10443800E77EF7152FCEFC15D6122916C18D30163A +:104448002D5F33165FEB331661FD3E16F22F4016D3 +:104458009A376716423975161FBF9516FC429E1685 +:10446800D26AA716D60AB7164B53BE16E5D8C31696 +:10447800AB4ECB168109001792160D17211612178D +:1044880047541517357B1A17A3752D17263A331776 +:10449800E3464A174B185317D5B790174C39BC1732 +:1044A8004ABBBC17DAE6C61759FFC917BD3ACF177A +:1044B800C661D7174097ED17ECEE0218D2100B180B +:1044C800EF1A4E188D8E8C1856C69E18CEA1D2188B +:1044D8007596E318FE3DFA18DE19FB1880B200192C +:1044E800F04F0A19CBFA1A1944ED2719530A3B1948 +:1044F800BFB14E198BB5A219C95CC1198019C91968 +:104508006BE9CE19F159D519F14AEB196D30F1194A +:10451800F2F8F1198618041A00AF051A4773061A3B +:10452800E9EF161AA234261A8066721A3E6A7C1AB5 +:104538003F199B1AA145B81A74C1BE1A998FE81A77 +:10454800D588FE1AB4FB141B782E161BD3E01A1B51 +:1045580052D22B1BBF0F351B86FB601B6375711B6B +:1045680066AB781B160F811BF35A821B3EE8941B1F +:1045780032A6961B77B1AA1B3F38B41BD528B91BA6 +:104588000903051CD0842D1CAB742F1C5543361C05 +:10459800004B731C60A9741CA9B4881CC50AB41C00 +:1045A800D412B41C55BBC81C3B4ECF1C0D00F51CC7 +:1045B800054CFA1CA188FA1C6595141D5FDA421D8A +:1045C80082105B1DBC71771D0997821DEADAAC1D4C +:1045D8002998B91D5FD7CB1D2425D31DF59AD81D61 +:1045E800448AEF1DF9DAF01D486EF41DC9C9001E92 +:1045F8001DD5081E6B0F301EDE25451E6280461E27 +:104608002B19481E467F581E4116621EE8476D1E2C +:104618002C936D1E6E0B8C1E11E9931E0D549C1E5F +:1046280063A79C1EC449A61E7DF8B01EAC98B81E90 +:1046380050A9BE1E1081DC1E322DE11E5548F21E07 +:10464800C390F41E23FDF91E0699031F7E5E061F04 +:10465800393D091F05891F1F7150231FE77D401F22 +:10466800491C541F3902791FB7778B1FFD96981F75 +:10467800EEB1B71F53CDBC1F617BC61FDE0DDA1F1D +:10468800F916F01FC6ADF31FBB731F204C0C272073 +:10469800A7DD2E20D7D72F208C2C3120F4463E20A2 +:1046A800D18E5720B80D6C20D87F7A20300D7D2010 +:1046B800ED3A8520C97F9020D478B3201DF3BC2023 +:1046C8001875D02061CFFB2003E528217870592187 +:1046D800520B6B21309D8E21DE81AF21AF03BF21AC +:1046E8005DA1D7216EF1E421E7BBF8217D75122287 +:1046F800F3B11B22E4273A2230E36222A72E6A2272 +:1047080062956A22F7967F220A8185224B2E99228A +:1047180091AA9C220896C12281FBE02260ABEA2282 +:10472800A92F1C23DF3935232B4E49234AC94C2393 +:104738003B8F68238E27742370ED8123C5049C2347 +:104748004D03A523306AE723F2A2EF23A67CF323C7 +:10475800C1E3FE23AB810424EA370F241C49352426 +:104768004AB439243ECD7E240D499C24CD3EA22452 +:10477800B55CB324C366D2248BDDD524FD81D8244F +:104788007653E024FABBEB24363AEC24F905F424FA +:104798003D0BFC24BDC3112585B61425EA901525CB +:1047A800C0762C25B018302548DC3A255F623C25B8 +:1047B80083D03F25D6E04F2503527525F00A93256F +:1047C8009EA39C258D64A2259B97AA2578E3B425F2 +:1047D80007F9BB254A7BBE2586FFEF254FEB01264F +:1047E800BDA90926AE5F322640256726A9836F2614 +:1047F800C1AF8B26E978BA26600BC626E2A9D52672 +:1048080086EDD826C4EBDD2648E8E2263FC4EC2630 +:10481800DD8AF526D82A092780920D27BA4F112755 +:10482800C2532827C7DB2C275CEC6A27B6BF992719 +:104838003B47AC27FDE2BB27D0DFF827C7980B28FA +:10484800ADD6122827BD1B2811FE2828A5493528D2 +:10485800F81044285BD0452889915D286FB67028E8 +:104868004DA38028FD9B8A28F0C5A628B4C1BB2883 +:1048780053F1BD28555DD42831B4EF28EA25012924 +:10488800E7370729646C092903682B295DDE2C2981 +:1048980037C62D29904131295DFC4B295798592954 +:1048A800AE287C295BFD7E2932F4822915D595290D +:1048B800A0DA97296B9898297BB6A429A739C42927 +:1048C800330ED729227ADD29E5EAE829BA350D2AF7 +:1048D8008F71122A85281A2ADA4E212AE3A5222A5C +:1048E800C26A4C2A6F6B8F2A82BC952A5163AC2A04 +:1048F800F274CA2A2C83EF2A284DFA2A1997012B19 +:1049080027540B2BEDD00C2B1F260E2BECDE162B71 +:104918002A0B1D2BBE4D262B120C482B8824532BFB +:104928004B1C5E2B8DE57A2BA26F7B2B814D842B44 +:10493800C870872B0D5D892BE1D18F2BA06C9B2B29 +:104948004ED29D2B495DA72BDC35A82B496AE52B58 +:10495800207DF32B05A3F52BC064072C6758152C75 +:10496800CCAE232C57F52B2CB8942D2CABDA3C2C41 +:104978007903522C03A8542C3D986A2CADAA732CA9 +:10498800AB5C8F2C229F9D2C452CAB2C8AB8BD2C60 +:10499800AB1EC22CC4DDD02C4988D82C2766E62C47 +:1049A800726BF42C84E5F42CEACEFE2C21D9082D68 +:1049B80006900C2D73EA2A2D8C8C2D2D26D4302DA3 +:1049C800A1ED682D5BD1732DB67C972D49FE972DEF +:1049D800DEDD9E2D55ACA32D760FBB2D89ECC42DA5 +:1049E800C495C92DE017D62DBF91EB2DCBDFF32D44 +:1049F80047B2042EB69D072EEF770B2EBB0D162E51 +:104A08007FB0562E7C0F6A2E3B136C2E8A07702EB1 +:104A1800E226B22EB43BD02E4040D92EC1F2DD2E74 +:104A2800F80DE22E4B49EA2EF5DEF02E4687F52EDC +:104A3800D89BF62E1F5B1A2F269F242F5992282FBA +:104A4800A6912B2F64EF4B2F64B4702F502C822F1C +:104A58002650972FCBD1A72FD4B6AA2FD70FB82F70 +:104A6800DC21B92F13FEBE2FEB9AC72F4FDECA2FBA +:104A780066B3D82FFBAFF12F33731030E7531430E0 +:104A8800B7DB1430EE944130C8864D30E5814F30A5 +:104A9800FD93673064896A3009286B3001347D30B2 +:104AA800B2468930149995305FCDB8305E73EE30D8 +:104AB800D4D0F630F46A0831651D16317399523135 +:104AC8004B6970313F6A76315EE08131A32E8C31BB +:104AD800E7398C317A8C9831C5DFA6318316BC3121 +:104AE800EC0FC63196D1CC31740AD931EE58E33186 +:104AF80047FAE3310A10EC3175DE09324B00133204 +:104B0800716E4A32F7494F327656683284E06E3217 +:104B180086DD7632A61980321E9E8D3283999132B7 +:104B2800DE2DA232FF24BE32B629C43265A5CD32AD +:104B3800746ACE32323DD5327E12E0321B43EE32F9 +:104B480015E8F732D4FF0E338A4B12333B6D22330C +:104B580069BB2433FC57263385303933BCA33C3337 +:104B68000B1048335FBF7833B1377A3344999F339A +:104B7800AA69A533C926AB3370D5AC331DF6B63355 +:104B880096E7D833CB42F833477012343BD4173406 +:104B9800A9861A3487C92E341DB038347AC75F34D1 +:104BA8005E9360344EB76234FF476A3498E76C34DA +:104BB800A8E071344EB37A34973B7E343FFB91348E +:104BC800938F963407A79934285BCD344436DE3466 +:104BD8004163EB34CE5C1335956B2635C599333577 +:104BE800882E39359FB73E35C63643358BB648359E +:104BF8002C1A5535EDA8573558D7593550316135E8 +:104C0800A2059435AE35C0351154E635132F0E364E +:104C1800BFD715367F2D1836D9693236C993343641 +:104C280020D44736DED56136945B8836AD42983657 +:104C3800512B9A36AE10B0369357BD369711D236EF +:104C48001A18EE362A71F736F72A0B373F950F37C1 +:104C580019621B37AC992B37B94231376EB43437E8 +:104C6800B8F73F37FF98413755E54837C7E6523719 +:104C780043ED5C378EC864379B477437B1A89337C8 +:104C880027A7A53703BCA637E574AC37C066B63787 +:104C98007475C237F7B8C337A57DC537B34EC93762 +:104CA80058B9DA376C62E837398CE8373498FF3707 +:104CB800EAB61D38CDB334388E574238F1204A3819 +:104CC8002D09623867916738024D6938274A6A3872 +:104CD800C9CF8B3845C190382FFC9338DAFF9F38FD +:104CE800D105B338733CB9383DF2CA38467BD3385E +:104CF8003102DB387CA0E3389CDBEA389242EB389F +:104D0800033B0B3926BD253961952E39D46C4739BB +:104D1800D6C97A39C4358C3973508D39CF879939CA +:104D28007C73BF39C3EEC239686DC6397F3BC7395A +:104D38004367C939F6FDD3398E70F0393568043ABE +:104D48003E49063AE256063A2B8C0A3AF4CE2C3AF9 +:104D5800868A2D3A58C6423ABBAE493A5CDE4E3A8C +:104D6800EC56743A85C9763A8B0E983AEB90BA3A73 +:104D78003BD4C83AFE0AE03A6143EA3AB7E5133B46 +:104D8800F1CE1E3BFDFA263BC5FD373B5CFC3B3BA9 +:104D980076AF433B02ED763BCE7C8A3BE4078F3B04 +:104DA800DED0903B8F40993BB03E063CC1E4393C95 +:104DB800EC02493C19DE493CBDBD4B3C763A5B3CB4 +:104DC8006BE86E3C5217963C1752983C6A8BCC3C69 +:104DD800B971DB3C41A1F73C010D1A3DE5BF2C3D03 +:104DE800BE542D3DE15A423DF762423D741D4E3D91 +:104DF8000C8D523DD656543D3AFB573D2A745A3DC8 +:104E0800FC00623D2A597D3DC47F8E3DA305913D3E +:104E1800E638A03DA0FFB13D5371BF3DAD50D73D31 +:104E280028E9DE3D2E4CEB3D77B7273E4D0A2A3E5A +:104E38007FF6383E43873B3EF703533ED179533ED6 +:104E480014176D3EEC99853EB0B88D3EE86C9B3EDC +:104E5800758B9D3EADCCA73E72C5D33E2699003FCB +:104E68007F221A3F751B1E3FEEC54A3F4C20663F06 +:104E78006871673F7CD1673F3CE5683F1EB17C3F66 +:104E880025F4813F6E158A3F4BE3953F7DF6A43F9D +:104E9800A85AB13FB191B43FBA83BE3FFD4AFF3F24 +:104EA80046FA014029120740C8D51E40407E2540D9 +:104EB8005BFD43409B5A5D4050A085405C348B406D +:104EC80051768B40FFC4B0408548CD402D0DCE4073 +:104ED800F224CE4041CCD2407AA1D540EA0DEF4031 +:104EE8005EA9F34038ADF94065F8FD4047D8FE406B +:104EF800636F1C41870A24416A6F3941B23A3D41C8 +:104F0800AE884A41F0588E41A04B9141D407924156 +:104F1800EFF2AA41E42BAE4164A7B541FF65B84161 +:104F280014A5BE41BA94F64197292F4226C73B42A1 +:104F3800E2A0484295F05242809E6142868DD0425E +:104F4800A3B4D7421350DD42AFC0DF426416EC422F +:104F5800A1ACF4423619F842E7BC0F43F5B11A4345 +:104F6800A4AB1D43994D2F43D18F3A4388944943AD +:104F780081676743ABC773433A0F824315708F430A +:104F8800F2199643DC4A9A435FD6B2435403BA43B4 +:104F9800746DBB43E40BCD43B709E4433432E643B5 +:104FA8007F24F343F922FE43125C2344CA99284420 +:104FB80032D02D44185130443A463A44A30B634446 +:104FC80061EF694407C2774402147E44A88297447B +:104FD800F23CAF44AB79B044D57ED54486E8DE4494 +:104FE800F334E04430BEF3440F980045F53E1F45C6 +:104FF800254E2045A0A5224566BF2445A70827457C +:10500800A38E2845FB47294538672C45904F3C45DA +:10501800C2144D45414F7745DA398345AC2D924549 +:10502800335EA5457585B245EA91C4451E60C845FD +:1050380078D3CC454B2BDA45E3BADF45D860F74542 +:10504800C222F84588C60246492409462D951646C7 +:10505800822B38468CD53A46AE204E465855564691 +:105068009B645D46B48D67467A3A8A4654FA9A46F6 +:10507800FF42AE46139DD04613DDDA4678DBE046A4 +:10508800B8A1E3469E8AFB46836CFE46380E054768 +:10509800E5DA0E477D9F2B47AAD03547C5476B47B2 +:1050A800D3EA6B47491B75479C227C470FB6974745 +:1050B800A3209847B4DD9F474037A547D58AA7471F +:1050C8005415BA472405C247F5B8D2475FD0DA4726 +:1050D8008682E04732B7E647F3D91B4825011F48C7 +:1050E800B33D474851854C48EEF46148B0AD6A4835 +:1050F80059656C4841036D48B7F28148F5369648C2 +:10510800612DA148EFB5BF486DB0C548C4A2C848D5 +:105118004F10D248B3B2DE481EC1EC48D33BEE482C +:105128002C66EE486F453E493C2B5749F24461498D +:105138002DD96149535F63493D526949F5CC6D49A1 +:105148006B7D774954F77D49B96F7E4939C18F49DD +:1051580042C39B49A1CBE349B049ED49ABB0414AB1 +:1051680023A05B4A9F8C734A3506754A96FD864A8A +:1051780059CAD54A9946DD4A105CDF4AD6BAE24A8E +:105188004E0AF44A8B31274B6DAF3E4BAF86874BA7 +:105198007233AE4BEC91C74BBBD9E34B8C05EF4B4D +:1051A800839BF24B1F5CF64B0C04044CD297064CC5 +:1051B800C258114CCE8C2D4C3F98384CB4DA384C30 +:1051C800C7EE3C4C9EF64A4C5F46614CB27D9B4C08 +:1051D80000E8B54CDAACB84C0BBBC24C36C2CF4C6D +:1051E8006847D94C4371ED4C49A0F24C647BF34CB1 +:1051F800A02BF44CD2CAF94C4C1E034DDBAA084D27 +:105208003303134D5F342E4D9B794C4D48F8604D58 +:10521800B85B774D901A9F4D51FEA54D296FB54D3E +:10522800C0CEC94D67CF034EA4B8174E0482344E82 +:1052380050B83A4EA78D444E07914C4E0818504E20 +:105248006169724E7602814E29E7824ED2948F4E62 +:1052580014D29C4E4F87AA4E858FCA4E7E68D04E78 +:10526800E3BED64E2491E74EEA85EC4EB6AEF54E37 +:105278003B05FA4E0A2DFB4E086B094F9FD42B4F66 +:105288002C2E354F144C5B4FE3825E4F0C7E6A4FD9 +:10529800F6D66B4F642E6E4F3701734F6106804F01 +:1052A800444E904F7E17964FD908974FFF6E9C4FEC +:1052B800109F9F4F8164A34FC694A94F7132B74F77 +:1052C80094A3C14FA0FDD34F3144ED4FADB91D504C +:1052D8005F492B50ACD83050B36638509F253A50B0 +:1052E80035ED4D500D5C5E50A58D5E5015568150C4 +:1052F800D69AA2509658A7506663B45005FCC4507D +:10530800AEA0C950EFDADF50D5671F516267205150 +:1053180062B5625198EB85517B9D8D513299B051A0 +:105328003AA6C951A13FE551827CE7519E04FC5140 +:105338007A8B225287D2355241E63852ED104152CB +:10534800F534665223086752D70F685206496D52E2 +:105358003E9A7352F3AD7852AFF68252A9B997527A +:10536800DE9EA052EA47A252688CAC529023B952F2 +:1053780054CBC6523B79D6521B06D9526354DA52E3 +:10538800D4E6DD524966DE52A102E15278BCE3520E +:10539800BB70EA529298F55266B7FA52F7EE245368 +:1053A8000F6128536C6E2A537C5F3F53F6506D5340 +:1053B8007D167053CF617353377C8053D3758253F6 +:1053C800808790539E099C53EF3AA35366DAAB53F8 +:1053D800B570BA539BCBC8532F3ECA53408DDE538A +:1053E8008BA8F853D0A9FB5388A831544CCE455408 +:1053F8008D144A5475604A5416245D54000C7C542C +:105408003CE17E5442D7AF549CAFEC54B4A2ED5467 +:10541800DF6A06558EFC155501F62055089B485540 +:10542800AFD8525507C05755A7CF795597C682555B +:105438002E7B95559C1FA9552AE1D655624CF055EF +:10544800876E1256B0DD12567F652456E235255612 +:10545800C25426563FA0465680D74C5638DC7A565A +:105468003FBD805690428356E617A156F35FBE565D +:10547800B216C5563E26DF564D1CF856B9B0F8563A +:105488006834FE56C10B00573848275711022C576D +:10549800003A3057816A3257E3B93757FF086B57DC +:1054A80049C16B5783647657115587575DC6A25714 +:1054B8006EB0AF572BB8B457B2CEB6573C97C55756 +:1054C80073BCCE572E6AD757E673F4579A2E3B58BB +:1054D80056F53B58C8B03D58A086645850988E5829 +:1054E800EAA09B58E34AAB58AB01CB586F23E65868 +:1054F8003434EF587D91F5584B582C59D6622F59B2 +:105508009BCA4459DD8A4859E21F5259BFBF69599D +:10551800F0357A5912C48A59C4098E599A358F5967 +:105528000E93A55940D1B45997BABB5926ADCE5957 +:10553800459AD9599204ED5914CE025A315C215A30 +:1055480046CA215A7172325A8E0F425AC3B2465A0B +:105558004CE4495AFA11515A2022555AEC505B5AD8 +:10556800345D8A5AFD8BA35AA2E4A65A43F6AD5A73 +:105578008CB3BC5ABD7ED65A52E6DD5A1A8AEC5A0A +:105588007285045B4BE8135B238C665B8E4E675B0E +:105598005B08745B3AC3905B54C5A35B9813AD5B1F +:1055A800A1FEB15B3BD4C35B57B7DB5B85D2DB5B4A +:1055B8006220E25BE14F1F5CB7F7265C74AE275CA4 +:1055C8004A753F5CB3964D5C40E1505C7E4F635C2E +:1055D800188F655CE3236B5CB4216E5CE77A7C5CB6 +:1055E8007442995C24C9A15C5162B45CFD7DB95CCC +:1055F800F0ECE05C1DCFE75CF0E2FD5CDB340E5DB7 +:1056080000CF0E5DB96B115DA71E165D3370345D5A +:105618003BAE395DB652515D8FB0525DBDAC645D35 +:105628001E79785D49D07B5D1E86835DF85C8C5D54 +:1056380034259E5D35AFAC5D7F10B65D0467E65DD1 +:10564800B2A3FF5DAAB10D5EA2B1285E01183D5E4E +:1056580049F43D5E295F485E4026705E86F2795EB9 +:10566800CE58AA5EABDEB15E602FB95E9F85CC5E78 +:10567800983DD15EBEBAF85E2707005FE2FE0B5F79 +:1056880028AE215F878E2D5F3002385F3536465F42 +:10569800AB70575FF22D5C5FA26A5E5F3197655F02 +:1056A800A05E6F5F3E18715F85BF765F6A79845F21 +:1056B8009534895F6B588B5FD65E925FC225A05F79 +:1056C8001A8EA05F77D8AE5FAFFCAF5FC5FDCB5F2A +:1056D800B6BED05F7276D25F8E37D35F55F9F55F6D +:1056E8005760FA5F46E2FE5F4E8C0D60546F0E60A5 +:1056F800404A1060493B1E60BB791E6010993F60AC +:105708001EF564604F807660781C89603AC68960AF +:1057180000D29760F87E9B600C54B860A152B960C3 +:10572800993DD6609E7AFF60283A0F617D400F61EF +:10573800EA3B2261E0862661C44E2C618BAC336162 +:1057480069453D61085B4561A96C5D610DA86B61A8 +:10575800ABA68261C87C866122839061C1F3CE6169 +:10576800AD19E461646DEC61CA52FD6148D9026209 +:105778000E801B621DB626628043436203FE4E62A2 +:10578800E0B94F6278BB6662F92A796213D98B62F5 +:10579800EB86A9623299BC6207D6C36245A5D3627B +:1057A800AB8BE3626F6DE4629CF0FB62D2E6206330 +:1057B80097F22C639DD64B633A464E6358F65D6369 +:1057C800DDC3666331A1AB6323C1BC6359E7C7631B +:1057D800B10CDB632603DE6345DAFB636F031364F6 +:1057E8008B741864B25E1F64259A26641642276477 +:1057F800DD3F3F64EFF94B64B4835E64291660644F +:1058080041697464C87C7C64DC9C8164FFA0856405 +:105818001F078764EAD29564A0F09B647DC9A664DB +:105828006A8BBA64F0E9BD642409D2646EEFD4646B +:105838008E930A6521111165B8A23065A1F27865C9 +:10584800C28A99658702A665150FAE65028FB7658E +:105858004C0ECE6571A3CF653EEFCF654F92DD65E7 +:1058680055EBE76548D5E965F231F165C37904661A +:1058780086C0066677660766B277076653270F669F +:105888006D431066272F1D66368E2166F4122E662C +:105898000E163D66E59B3E668BF63E662A195566F2 +:1058A800A2027666B39C7E665716A0662E15B5666C +:1058B8006EACD966FCBCEF664CD4F8667ACA22672F +:1058C800D9B52867C2723B67B0A63C6766125167B4 +:1058D800CD795A6767BC9667CE2A9D67EFCEB767C2 +:1058E800DD2DC267FD3FC267CB4DD5678C6FDB6787 +:1058F800245D0668CD9608686BE00A68430316685D +:105908009A1E196864A61F68293F2E688C774E680E +:10591800C8E65168BAA45568C3775D6897BE6E68D3 +:10592800D6427268AA86766809927E6883BE9268B3 +:10593800B04C9E685A1FBA684160D4689776F4687C +:10594800B924FB684F3A2169F1292B69D12D3969AE +:105958007E6E40692614586982AC6D693AA58769DC +:105968003AB09869326B9D69A42DAA69736CC069B5 +:10597800C00AC7694840C9699C67D16929A2D56925 +:10598800F9A2D86972CFE2692ABBE769266E026A72 +:1059980050782B6A9E80356A95FA496AE1CF546A35 +:1059A8002E18606A9F9F886A2A6F896ABBA6986AC0 +:1059B800BCBDB96A644ADB6A2CECE16A986AEA6A97 +:1059C8006ED3256BFCC53D6B4DA94C6B4FCB516B12 +:1059D80047596B6BE2566D6B22657A6B7150A66BFB +:1059E80050F1B56BCB44B76B5E84C76BA002F36B09 +:1059F800EEF0346C4BC0476C269A4F6C884A7F6C2B +:105A0800E89D916C9DCB926C54C89D6C28DAA26C71 +:105A18000295A96C328EDF6C2822E06C13FCE36CD3 +:105A280029C1EF6C14A8496D9F924A6DF714536D04 +:105A38008282546DFBFA546D0979556D9F8B566DB2 +:105A480005A15D6D38FA626D3E006D6DB2CC6E6D6C +:105A5800EEF5706D1FAC826DD7FB906D0FE29D6DFA +:105A6800C7D8B96DA0F7106EEBD8246EEAA2306ED5 +:105A7800EB0E3D6E0B8A3F6E51D03F6EC00D666EC9 +:105A88001889966E2E8FC86E8112CD6EF582D86EEB +:105A9800A4FEE36E0328EA6E643C096F4EEC286F9F +:105AA80057563A6F8DBC596F41D55B6F92B56A6F87 +:105AB8003334796FC20E836F7A1D866FD2A38F6FCE +:105AC800BB73B16FDB60B36F1708C06F4162D56FEE +:105AD80088E1F36FACA4F66FCBF70870FAE715709E +:105AE800CB551770DEA72170A1E03E701C8C4B705F +:105AF8006CED6E7037AFB4700E6FB57069FCBF7027 +:105B0800C12DC4702E48CB704058D67081331171A6 +:105B18005B781C7100C51F71EC122A710F2F42713E +:105B2800BF0D49711F2957714CDF6571824D67712F +:105B3800F4748071E1948471E1888571307F887193 +:105B48000C429071FC86A071529EB6718D32BB7169 +:105B58002A6CD3714436E771AECEF7717A880D722C +:105B680024EE0E72B532147273FD2072C9AD217223 +:105B780050392B72F2063D728DC5577225A9737282 +:105B8800641FB772EA5FD7726149E17202ACEF72C3 +:105B9800A258F372F090137328E6167355061D7316 +:105BA8003840207325A42973D45C3F73AD534573E3 +:105BB80070E65973B7356F73FB7A87738B379D73AC +:105BC800B2EEC17310EED173C7C2D9730B75E97306 +:105BD8006007F073E2AAFD7375FA1D7486103974B4 +:105BE80009893C7497634D746ADD5B7429B75E74E8 +:105BF80065746574C04B6F749873767413968D745E +:105C0800FA8FB074C8D7B274D7C3BA74D85BC774E4 +:105C1800EC6DC87414F2EB74835CEC74CD43FC74C3 +:105C280010D001755DFF2475EC912C75A2CE4875D6 +:105C38009B93567581CE56756EAE67755FFA77750C +:105C4800DE768275D0108575B4D4E3753B80127604 +:105C5800E6011B7691F8377650A043761BC443764D +:105C6800325C5E769C036E76C46691763BDEC976BE +:105C7800872BE076979D0D77D1B44577608A617759 +:105C880005C07C77BC5D7E775931827711D78B77D9 +:105C9800C3568E7736079677EB339E77F9A4C2778B +:105CA8001A8BD677B60DEA77B1960C788C2C0D78CE +:105CB8000763277812302C7841D0307867E63B7834 +:105CC800BC5E4D7865B88978551F9478FA239C781E +:105CD8008AD0B078AE5DD87824FDDD78AA35DE7834 +:105CE8007171DF78079AE278AF20F27886F7FD784D +:105CF800442C2D7959C439799817487930D55B796E +:105D08004D57667936EE6C79E989877927DE887987 +:105D18003B93B5797799C379D035D5794F71EA79BD +:105D280022C1F0795A13FF79FFD7027A577C0E7A8D +:105D38009923157A0D8D1A7A61EC2B7AF9F0537A3A +:105D4800120E547A8B48547A9A036C7AD4CB707AB0 +:105D580042C4887A46E5D77A9C93DA7AD31CFD7ACE +:105D6800905C087B16D90A7B8B5F2B7B31DE317BFD +:105D78003F73357BE98A3B7BD269487BC1844E7B84 +:105D8800E926557B15D2687BF3EF867B76D6967B22 +:105D98003A8DAB7B8E67AC7BFB97C67B08B1D67B15 +:105DA800D7D2E37B2C8AF27BF580057C01DA117C63 +:105DB800A467247C3BDF457C34824B7CAB2D6F7C15 +:105DC800D6277D7CE85B807C66EE827CE396927CBD +:105DD8005B42937CAD299B7C20919B7CE14E9D7C12 +:105DE8002CAEAB7C26DAC77C8335D17C3155D27C8E +:105DF80064EDD87C2D17DD7CD08EFE7C3399197D1F +:105E0800940D337D76D95C7D26A87C7DC17D817D0E +:105E1800C8B7827D962F847D663BAC7DD697B57DCD +:105E2800F7E1BC7D51C7C17D5875F87D8F0B0A7E9F +:105E3800F723177E7C28277EC7483C7E8838417E1A +:105E4800EEB8447EC4694A7EBDA64A7E88DE537E8B +:105E58002B287F7E5F2A887E1433907E691BA57E5F +:105E6800B98EB77EF8A1B87E3E8BC67E97E3C67E14 +:105E78005EE5D77E6850E37E31CCED7E5429F47E12 +:105E8800B712F97ECDA5027F3118107F05A6107FC5 +:105E98003404247F5EC94B7F1F738D7F85338F7FCA +:105EA8009958997F1517A67FF2C8B17F7689C07F68 +:105EB800D0D2C07F7F5DCA7F0039DB7F464EE87F46 +:105EC800A4245405F4CE2C3A644ADB6A1997012BB2 +:105ED800EEF46148EFE53900ECEE02183E8BC67E21 +:105EE800404A1060F80DE22E726BF42C535F634940 +:105EF8007989F710689B36083B93B57986DBA71339 +:105F080059CAD54AD528B91BC2723B67BD04FB11D3 +:105F1800109F9F4FD588FE1A4C8BD7002DD9614909 +:105F2800608A6177E1D18F2B24EE0E720C04044C49 +:105F3800716E4A3255061D737D91F5585FDA421D20 +:105F480031DE317B95FA8A01E0D8330EEC122A71E2 +:105F580066DBF10E493B1E604FEB012654CBC6525F +:105F6800512B9A36C8D51E40F8104428398CE8378A +:105F7800000C7C549204ED5997F22C639A1E196810 +:105F880031B4EF28F7E1BC7D6834FE564124531341 +:105F9800DEA72170D6622F59C8864D3051854C48EE +:105FA8006A8BCC3C81FBE02267E63B7803E528213D +:105FB80066BF2445BB70EA522C66EE486A6F3941C9 +:105FC80000AF051AE376560BA67CF3237172325A9A +:105FD800085B45612AE1D655296FB54DE753143062 +:105FE800A04B9141FF42AE468D144A54B1960C78AD +:105FF80080B200198C05EF4B7FC9790A1EC1EC48A5 +:10600800E4273A225A13FF7982105B1D5716A066BF +:10601800120C482B105CDF4A86F7FD78F53466527F +:106028008B379D735992282F23FDF91EADCCA73EBF +:10603800CD43FC74E3A5222A72CFE26927BD1B2851 +:10604800C3568E77839BF24B88DE537EEC0FC631A6 +:10605800CBFA1A197585B245905C087B7C5F3F5373 +:10606800612DA148C17D817D84E5F42C7F5DCA7FC7 +:106078006C6E2A53BAA4556888A83154154A260A62 +:10608800263A3317A145B81AE38C570E464EE87FD7 +:10609800A0F7106E6663B4509B6C60089DCB926C41 +:1060A800F905F4248E0F425AAB1EC22CD0D2C07F01 +:1060B8001C322512300D7D20E2AAFD739813AD5BCA +:1060C800307F887119621B375DA1D7219FB73E3594 +:1060D800A1CBE3490F980045962F847D97BABB5909 +:1060E800C87C866133909400322DE11E6871673F49 +:1060F8003AFB573D80EAD00C46FA01408112CD6E3A +:10610800AA69A5336F23E65860A9741C503161351C +:106118007CA0E338BDA90926188F655CCD3EA22472 +:10612800E617A156444E904F53F1BD2830410F0A4F +:10613800C50AB41C06900C2D12302C78C2144D459B +:10614800FABBEB244966DE52F6614F0FD1A7C5159D +:106158007E68D04EDC4A9A4351FEA54DBDC3112539 +:106168000A10EC3177660766EACEFE2C2E15B56666 +:106178005CDE4E3A40E1505C4D03A52369453D6124 +:10618800269F242F6A79845FCBDFF32DB916D00BB5 +:106198009946DD4AF8A1B87E15220C080896C12256 +:1061A8008838417E9F8B566D70D5AC338E930A65C7 +:1061B8003D986A2CCA99284495F05242A9B4881C83 +:1061C800D58AA747B7E5133B29B75E74C390F41E79 +:1061D80058F65D63BF91EB2DD478B3206F6B8F2A8F +:1061E80059E7C763B2CEB65700E8B54C983DD15EC3 +:1061F8004667681261952E3931E25604D0DFF827D8 +:106208004E2D0B103536465FFA239C78C5476B47F1 +:10621800EB339E77FC00623DA2027666D3EA6B47B9 +:1062280013DDDA46C466917655E54837B2770766D6 +:10623800F7EE2453E017D62DFFD7027A50392B7288 +:106248007653E02407C05755CA318102BA94F64103 +:10625800222463069C227C4733E90F0B3334796F81 +:10626800EC2C380C0979556DC9CF8B386791673894 +:106278006DAF3E4B4515D507858FCA4EB9B0F85658 +:10628800D4D0F630746ACE32C1E3FE23B9FF3A01A6 +:1062980067BC9667ADBD3602D6277D7CB268DB1534 +:1062A800B924FB68D6E04F2557F52B2C5FCDB830C5 +:1062B800686DC639AB79B044E42BAE41BD3ACF170F +:1062C8008E67AC7BDE768275AB5C8F2CFB472945ED +:1062D800CE2A9D675875F87D813311718D32BB7157 +:1062E800F334E0449FF70407981748796169724EC0 +:1062F800459AD9594F71EA79DEDD9E2D2A597D3D9F +:106308006DB0C548CB486913F2063D72D86BFA00E8 +:10631800023ED402ED104152C4A2C848284DFA2AC0 +:10632800AFD85255F85C8C5DC993343657A6300CFB +:1063380003BCA6378FB0525DD78B5D14F2A2EF2352 +:10634800D6025100DE2DA232A3BCC30AC8B03D5804 +:1063580053CDBC1FD7C3BA74D4D55406010D1A3D0A +:10636800A57DC53797BE6E68C28A996549D07B5DA1 +:1063780041D55B6FE7BBF821D179533E254C6010BE +:10638800CE5C1335DE25451E64EF4B2F66AB781BBC +:10639800AE204E46A3752D17809E6142BBE7D30001 +:1063A8002A6CD37150A08540FF086B575F46614C3B +:1063B8003ECD7E24F22F40166EF1E421F3AD7852E3 +:1063C800FD4AFF3FADAA732C83D03F256847D94CBF +:1063D800A258F372FD09D4083EE8941B13FCE36C41 +:1063E80035AFAC5D16245D549A2E3B58E3825E4F60 +:1063F800D7D72F206E09970FF0E9BD64AFCEE41010 +:10640800AAD0354750782B6AE978BA26A7CF7955AC +:106418005FD6B243B1A893371E60C845EC99853E54 +:106428005DFC4B2900D297604D5766793D231E10BD +:106438008BDDD52435ED4D503AB09869C7E9D801C0 +:10644800BA4F1127EE545B01211111651DF6B633C1 +:10645800B2A3FF5DAC05950DD31CFD7A46CA215A3F +:10646800D89BF62E4160D4687442995CF3EF867B22 +:1064780078E3B42547701234D08EFE7CCBF70870D1 +:10648800B570BA53C7D8B96D55F9F55FE0DB170B8E +:106498000ADBB40BFCA8BF07B246893042D7AF5419 +:1064A8007C50860D2E7B95550A3B310DB2E49C132A +:1064B8005E73EE30BF5F8B0FD37582536E36920CCE +:1064C800C00AC7694436DE3450F1B56B2B19481E33 +:1064D800760FBB2DCB369701AABFFF1220D44736C3 +:1064E800C03FFD063A8DAB7BA63FF6113F38B41B83 +:1064F8009A036C7AD908974F05A3F52B7FB0562ECF +:10650800A30B6344E6011B767D400F6154C5A35B72 +:10651800A3B4D74266B7FA524FCB516B40256726D2 +:10652800BBD9E34BFC86A071852AAF0183647657FB +:106538002D5F3316F280AB04CA491608EEC54A3FF0 +:10654800C45F830F54FA9A46E6DD2211D57ED544FE +:10655800E08626613BDF457CD4B6AA2F2308675224 +:1065680022C1F07927A7A53781D90F05882E39359B +:10657800B20DA51086EDD826243B380ECDB334389D +:1065880028DAA26C51D03F6E3498FF374773061A49 +:106598001DF3BC20D656543D0A818522691BA57E71 +:1065A8004EB37A34904283561556815074AE275CA8 +:1065B80069BB243331CCED7EB48D67464B1C5E2B12 +:1065C800781C8960C3EEC239B33D474862672051E1 +:1065D800E77EF715E302E71366827C02D4E6DD5214 +:1065E8003370345D2B8C0A3A5BFD43409357BD36BC +:1065F80031A1AB63B23A3D41BF458505B98EB77E3F +:10660800F87E9B60AD4298364FC46D0AFEBEA1016C +:106618006D30F1192E4CEB3DF714536D436339126D +:106628006AA2B2130D5D892B0DA86B614B00133262 +:1066380089ECC42DE43E870624FDDD78890FEE152C +:1066480091F837763303134D8F71122A1485830D11 +:106658007DF6A43FA467247C733CB938B782890FC0 +:1066680026C73B4269FCBF7087D2355225EA7D0AAE +:106678008E277423C20E836F6A8BBA6449A0F24CCA +:10668800C9069A0E9B794C4DA002F36BBB73B16F90 +:1066980086103974529EB6712B4E492350B83A4E23 +:1066A8004116621E96E7D833C2C43904C9C9001E10 +:1066B800FFA085646B588B5FB0AD6A48ABC7734366 +:1066C800C495C92D4AC94C234CD4F8662FFC93387D +:1066D8009776F4686595141D10993F604F80766031 +:1066E800306AE723079AE2785ABAF20A00CF0E5DB9 +:1066F8003BD4C83A1A8AEC5ABBAE493A8019C91930 +:106708004BE8135BC3B7F506FE0AE03AC44E2C61AA +:106718005F415E052896CE06B80D6C2015E8F73265 +:1067280009286B3052554B05870A2441B4AC201216 +:1067380040D1B4592C1A5535EB0E3D6EB6BED05F1C +:10674800C47F8E3DAB742F1CBEBAF85EF762423D23 +:106758002912074007D6C36252E6DD5A21161217DE +:106768008327620628E9DE3D2650972FEAA09B582A +:10677800ACA4F66F1DCFE75C442C2D7961FD3E1665 +:106788003404247FC661D7173A0F82435DFF24750E +:10679800E77A7C5C92BE3500B34EC93715D2687B68 +:1067A800F59AD81D617BC61FB191B43FCE7C8A3B58 +:1067B800BFBF69598A07702E69EAF703AFC0DF4285 +:1067C800452CAB2CF9DAF01DBB731F20B1C17B0F30 +:1067D8002766E62C71353D054C0C2720B10CDB6390 +:1067E80054F77D49F04F0A1941697464A7ACA8149D +:1067F8005760FA5F3002385F9B5A5D40F1204A3893 +:106808003AA5876949FE972D2ABBE769C926AB33A4 +:10681800167FCE1574E4211230268E14D5671F51C9 +:1068280038DC7A56EA901525932C2C04DD3F3F641A +:10683800F2F8F119EA250129BE63661298EB855131 +:10684800FBFA546DDA73360F14488E0B9F924A6D1B +:106858008399913285811309118DC70D83BE926882 +:10686800D7FB906D8316BC310015B40DF9F0537A3F +:10687800AE982D14B6499E04536AC500342B2302E2 +:106888000E801B62F0357A59A234261A4B582C59BF +:10689800DE19FB18B216C55642C39B49DAACB84C90 +:1068A8000903051C0F2F427181676743A42DAA694C +:1068B8004B53BE16AFFCAF5F7DF8B01E76AF433BBF +:1068C8009A358F59F0588E419E7AFF6007C27744F7 +:1068D800345D8A5A274A6A38B7845A061A18EE3637 +:1068E8004281D20A0467E65DB39C7E66A71E165DE8 +:1068F80025A9737214CE025AFF65B8412D95164624 +:1069080066B3D82F60D3150B751B1E3F2A19556621 +:106918003421E20132A6961BFF6E9C4FA6B6CD022B +:1069280099D0A90AF6506D53D188430DE9AFA10754 +:106938003EEFCF653F950F373B8012764CCE4554DE +:10694800D70F6852E245680C2E48CB702CAEAB7C52 +:106958002CECE16A3CE17E5450A9BE1EFB97C67B35 +:10696800C5FD373B994D2F43B2839F0E739803089B +:1069780032B7E647ADB91D503432E643E2A9D52611 +:10698800F5C751013AC3905B7689C07FA8E071349E +:106998000B75E973D6251C077A8C9831BDAC645DFC +:1069A8001DB03834C2532827D490830D6C62E83761 +:1069B8004037A547FB7A87738C2C0D781F5CF64B04 +:1069C80064A7B54150988E5898E76C3453270F66E2 +:1069D800600BC626A85AB13FF14AEB19AB4ECB164D +:1069E8009711D23665B889784F87AA4E1F738D7F65 +:1069F80047B2042EE638A03D868DD042558647140E +:106A08006EB0AF57261458697D12D4020818504E3C +:106A180059FFC917816A3257C7980B28A5C8E101E1 +:106A2800CAB6BA0D98F64D0EDF393523F4122E6624 +:106A3800C5DFA6314ABBBC1705891F1FF4BE0D0070 +:106A4800F703533EE14F1F5CAF89870DC06F6C0C95 +:106A5800C4098E594E8C0D60AD534573ABDEB15EE3 +:106A6800EB86A9628C774E68DE9EA0527475C23799 +:106A7800D9535C0A227ADD298A10C0148B19DA04EA +:106A880087C92E34C6F6580459C43979901A9F4DCF +:106A980010B4DC031A8BD677F92A7962E0557803AB +:106AA800D2A38F6F9A5A5B0B48F8950E45C1903860 +:106AB80041E714138DE57A2B387BF907CCAE232CEC +:106AC8004417DD12380E054747596B6BB43BD02E7F +:106AD8004BC0476C120E547A9B477437827CE7513F +:106AE800F6511C12323DD532B4FB141B3118107FFD +:106AF8005A1FBA68C6ADF31FD12D39698824532BA4 +:106B0800F3D91B48BCBDB96AE226B22E8335D17CC5 +:106B18002491E74E84E06E3225F4813FF3B11B22C5 +:106B28006BE00A68EC02493C5FFA7775229F9D2C5E +:106B3800279673142A0B1D2BB9423137AE35C03551 +:106B4800FCBCEF66F916F01F357B1A1777B1AA1B44 +:106B5800EA91C445DA398345CB44B76BB2EEC173C9 +:106B6800EB90BA3A7B9D8D512409D2641E86835DD1 +:106B78004162D56F3506754AF231F1654F3A2169A0 +:106B880066125167B0DD1256EA3B226126A87C7D69 +:106B98008B9E6A0DA20594355FBF7833624CF05521 +:106BA800C97F9020B4D4E3757C28277E4F10D24843 +:106BB800EC7E781185BF765F1E79785D9CAFEC54CA +:106BC800D6BAE24AC84FCF114C0ECE654B69703128 +:106BD800956B2635872BE0765403BA43C18D301662 +:106BE800FD8BA35A8B0E983A836CFE46FD9B8A2830 +:106BF80001347D30D5B7901780434362E5BF2C3D03 +:106C0800940D337D44ED2719467F581EBCA33C33B1 +:106C180036EE6C7958D75935BC71771DB0A63C67EC +:106C28001E3F32151517A67FF224CE4091AA9C224A +:106C3800037E770D01183D5EFA11515A9BCA4459DB +:106C480086C006664840C969612BFB11746DBB4359 +:106C58003FC4EC2600C17F0648D5E9653144ED4FB5 +:106C680062B5625186E8DE442405C24792E8340BD7 +:106C78000E76450F07F9BB250F6325014EEC286FEB +:106C880032D02D441BA5200EC8E651688A4B12331A +:106C98001C9CC9048B7418644E0AF44A6354DA5273 +:106CA8009F85CC5E33731030144C5B4FAA35DE7869 +:106CB800E0B94F6202ACEF72E15A423DAF86874BB2 +:106CC800BF6762072012B50546E5D77A363AEC2445 +:106CD800DC9C8164269A4F6CBDA64A7E878E2D5F08 +:106CE8004DA94C6B9165AF0C5CEC6A27A1ACF442E2 +:106CF800DBD3B3083102DB38326B9D698EC8643749 +:106D0800F2C8B17FDBDF411546E2FE5FD1B44577BB +:106D18002FCEFC151F3EB50329A2D569FDFA263BE7 +:106D28008164A34F32F4822936B4E51360ABEA22BA +:106D3800F9A2D869EE94413067FB8D05DC35A82BA4 +:106D48003434EF58F0901373D248600AD6BD4A1411 +:106D58006280461EE0189F15C5FDCB5F467BD33881 +:106D6800F22D5C5FCEA1D2187D751222EFDADF50CA +:106D7800DCC2EC0FB60DEA777F10B65DA92F1C2395 +:106D88008AD0B078259A2664945B8836DAE6C617E6 +:106D980064B4702FF6D66B4F646C092903527525BD +:106DA800F7967F2236079677AC2D924577370A14E7 +:106DB800C1F3CE61266E026A1EF56460267C5F0B05 +:106DC8009B9356755F2A887ED75CDB019658A7503F +:106DD800C48321000F61285375FA1D74F4AA1E0498 +:106DE80085338F7F629B2600DD2DC2673E18715F59 +:106DF8008682E047FC57263388E1F36FA2CE4875B8 +:106E0800AD299B7CA1F2786585B61425E5DA0E4795 +:106E1800AE884A41F723177E0FB69747F922FE43FB +:106E280034824B7C647BF34CCB42F833B1377A33F2 +:106E3800ABB0414A115587579EA39C25904F3C45BE +:106E4800A7DD2E2010EED1732822E06CBDDC7B0F6D +:106E5800F5458A109958997FE256063A1350DD4253 +:106E68003BD4C35B7132B74FD0DC180B55BBC81C81 +:106E78004D1CF856641FB772E3464A177F24F34344 +:106E88001081DC1EF1292B69EDD00C2B377C805347 +:106E9800028FB765054CFA1C41E638526349510C1C +:106EA8006F353000DE81AF21E7370729D33BEE4845 +:106EB8002B287F7E11E9931E78BCE3521FF834100B +:106EC8000C54B860A78D444E9C93DA7A8D8E8C183A +:106ED800E9EF161A63A79C1E1F673512272F1D6638 +:106EE800475415171F295771A9836F26F5CC6D498B +:106EF800A563421555A4D60D2283906142820312E0 +:106F080064EDD87CB8A23065A102E15214A8496D9D +:106F18005415BA4702B809030C7E6A4FC3B2465AE1 +:106F2800D9693236C9AD2172520B6B21A305913D47 +:106F3800B7F281488B4BC306414F7745D70FB82F1F +:106F48007F221A3FC95CC11905A6107F492409464A +:106F58009534895F4EB762343F199B1AB79E5C0F10 +:106F6800DC21B92F9023B952BC5D7E77E4078F3BB3 +:106F780001F6205530297B0ADAB27604F00A932507 +:106F880061EF69449DE1B606741D4E3DC12DC47084 +:106F980098737674D412B41C8618041AA05E6F5FB6 +:106FA800A8824F0449F43D5E6375711BE1888571C1 +:106FB800C1F2DD2EE21F71158DC55772BC823D00EE +:106FC800B25E1F64185130443848275737C62D29F8 +:106FD800EC505B5A40B4AA1556F53B5843873B3EE4 +:106FE80030D55B79E9A7080D5EE08131E5D8C31695 +:106FF800D63A75065CF27F059FCCFA0C8CB3BC5A66 +:10700800B971DB3C408DDE533B6D223381CE567522 +:10701800C10B00575F492B50C26A4C2A7E5E061F7F +:107028000D8D1A7A82AC6D696BE86E3C55EBE7659D +:10703800BE542D3D7A8B2252F0E2FD5CD18E572052 +:107048005B08745B3902791F076327789B0E64130A +:10705800E40BCD431C8C4B707A1D866F5163AC2AB0 +:107068007730FE094C1E034DE3BADF45BC5E4D7810 +:1070780097634D743A464E6305A15D6D1B43EE322E +:1070880020C96812486EF41DC8B7827D993DD66044 +:10709800C449A61E868A2D3AD3438E0DDED56136A5 +:1070A8004040D92E998FE81AC090A30CC1844E7B1A +:1070B800218FFD06B7356F73FFC48F0C1BC4437651 +:1070C8002D096238D0A9FB5348D90262B709E443B5 +:1070D8006FB67028C7EE3C4CBE4D262B663FA50BFD +:1070E800E21F5259DED0903B9DD64B632E6AD7578C +:1070F800B96B115D306D0609A0DA9729A152B96004 +:107108004AB43924586F2A04F23CAF444C20663FF5 +:1071180094A3C14F2E474E03CE8C2D4C47FAE33132 +:1071280073FD2072B0B88D3EB654A009EADECA04D9 +:107138005F623C25FF476A344BE3953F9E04FC5150 +:10714800DB340E5D82238A03CF879939D035D57910 +:10715800822B3846254E204536DC5C1103BA500A8E +:10716800A9B99752C4EBDD26E2566D6BFD7DB95C7B +:10717800B0183025A2B1285E03FE4E62234D2410BC +:10718800EB5BDF14139DD0468BB64835DE0DDA1F56 +:107198002699003F3A32BF0DC7483C7E3B136C2E00 +:1071A800DACFF30EEDA43C069FD42B4F92B56A6F4D +:1071B800EBD8246EB56D8B126B0F301E5E84C76BD7 +:1071C8001C493524F0ECE05C6F453E492C83EF2ADE +:1071D80010D0017519DE493CF5B8D247AF03BF217D +:1071E800FE3DFA18207DF32B0699031FEFCEB767F3 +:1071F800EFF94B64F35FBE56C4694A7EA26F7B2BDE +:10720800B652515D1F260E2B6758152C938F963456 +:107218006EB434378F40993BD2948F4E3F7A4707EC +:10722800A96C5D617233AE4BD26AA7167FF6383E01 +:107238003B47AC273BD41734F274CA2A5EC94B7F4C +:10724800A1ED682DC225A05FFDE2BB270D549C1E51 +:107258000E93A55988944943116EEE05ECDE162B62 +:1072680014176D3E1875D0205C348B40C843441108 +:10727800EC68E80C88C602467656683224C9A15CD8 +:1072880062956A221F5B1A2F5BD04528AF20F278DF +:1072980060899F0911A9A50D03A8542CD69AA2505C +:1072A8001433907E65A5CD32A02BF44C74C1BE1A60 +:1072B800C04B6F74F72A0B3773995231A4AB1D4337 +:1072C80020B4CC0B9A8FC4104B2BDA45B67C972D83 +:1072D80070ED81235429F47E9C1FA9553FA0465682 +:1072E80021D9082DCDA5027F38FA626D4A753F5C19 +:1072F8001889966EC4358C39ADD61228AE3AE20A92 +:10730800A18AE60CB6AEF54E3A463A44782E161BDC +:10731800EFB5BF48A2E4A65A6ED3256B86F2795E14 +:10732800502C822FE89D916C5EE5D77E3568043A33 +:10733800F1CE1E3B4DA38028835CEC743155D27C82 +:107348004B1853171A8EA05F30E362226D43106604 +:107358002AE288146416EC42AB8BE3622C2E354F7C +:107368005842E80268C3BF0EEEF5706D3BAE395D5A +:10737800EA47A2520D00F51CFCD6340242774015AC +:107388002603DE638BB5A219D85BC7742E18606A12 +:107398000FE29D6D28AE215F27829F11D2100B1836 +:1073A8008F0B0A7E2022555A6220E25B876E1256A6 +:1073B80041036D48A0F09B64B7F7265C0C429071BE +:1073C800D87F7A20E926557B7DC9A66475604A5422 +:1073D8002FFECC139B97AA25530A3B193701734FED +:1073E800ED3A852008647E12D46C47395FEB33167A +:1073F800D45C3F73C3790466F91DAF00E5034A09FD +:10740800A739C4293E26DF560A2DFB4E1A2F420AF9 +:10741800B6BF99278702A665423975163C97C557A6 +:10742800082E7C143299B051FE1ED10F2C8AF27BA3 +:1074380022657A6B5548F21EA1FEB15B3840207375 +:107448007A3A8A46AB01CB580997821D13FEBE2FA4 +:1074580074588E0ADBAA084DA58D5E50E3236B5C39 +:1074680015D59529D4FF0E333BDEC97678DBE04687 +:107478004B49360D4FF95709364C4D029A37671666 +:10748800D7D2E37B76D95C7DA34F62147BB6A4295F +:10749800D60AB716A3209847D297064C4C39BC1782 +:1074A800EB9AC72F41CCD24086DD7632EAA2306E05 +:1074B8000BBBC24CCF617353D65E925FB96F7E49E6 +:1074C800E5814F3003682B29A4FEE36E8AB8BD2CF2 +:1074D800EC91C74B0B104833B8A1E346B532147290 +:1074E800024D6938EEF0346C7903522C4CDF65712B +:1074F800C258114C11D78B7748DC3A25663BAC7DD6 +:107508006ADD5B74D6C97A3978D3CC4597E3C67EF1 +:1075180064896A305F897906EC56743A82BC952A88 +:107528006F03136470E659734F121E0E85D2DB5B2E +:107538006E158A3F7276D25FEA5FD7729242EB3855 +:10754800CD795A679545D90026ADCE591E9E8D3204 +:107558008CD53A460D499C24A06C9B2B315C215A52 +:10756800EA08C5037C73BF39E1CF546A9E099C536E +:10757800AEA0C9506F6DE462C222F8454D0A2A3E9A +:1075880014D29C4E02147E445B42937CB4DD9F4728 +:10759800530BE70EA0FFB13DA549352865F8FD401E +:1075A800C7C2D973E574AC37AB2D6F7CC064072CA8 +:1075B800C0CEC94DA4416F0571A3CF65C87C7C645A +:1075C800E72FBB150328EA6E6149E172132F0E36C7 +:1075D80047D8FE40C59933356EAE6775DB60B36F2B +:1075E800FF984137A0A52245C870872B331FD114B7 +:1075F8008300F412CD18770D3B4ECF1C5371BF3D5D +:107608008A93650E9EF64A4C23A05B4A14BEBF0EB1 +:10761800986AEA6A4988D82C0F5D2B1176D6967B32 +:1076280027DE8879C366D224F159D5195FD7CB1DD7 +:10763800758B9D3EC700BF13FF24BE325F342E4DAD +:10764800E59B3E66F53E1F452A745A3DAE5DD878E7 +:1076580013D98B621708C06F39C18F493893890FC6 +:1076680077B7273E80879053814D842BCD96086845 +:10767800B4216E5C8E37D35F4367C9397C0F6A2E9D +:107688007E6E40694ED29D2BA26A5E5FFA8FB074FF +:10769800278B0A003E6A7C1A3F98384C3D5269494C +:1076A800C5049C232D0DCE40737B630F26DAC77C5F +:1076B800003A30573F73357B283A0F615BD1732D01 +:1076C8007D9F2B470D5C5E5054C89D6C328EDF6CDD +:1076D800E2A04842E85B807C14999530C8D7B27420 +:1076E8008548CD403FFB91346007F0733299BC6206 +:1076F800B7778B1F172A2B087150231FCB5517708C +:10770800A6198032B629C432AC992B37AD50D73D73 +:10771800F35A821B642E6E4F491C541F3B79D65274 +:10772800D18F3A43491B754785303933DA4E212AC0 +:10773800D612291671DAAD0880920D27BF0D49714E +:107748006106804FEFF2AA41B4DA384CE396927C96 +:10775800A88297441D1FC90012C48A5914A5BE41A6 +:107768005E5A721400C51F71BB791E6025011F483F +:10777800FD3FC267CA52FD6158C6423A4687F52E98 +:10778800B6B5BC097AA1D540169FEF0B6EEFD4644D +:10779800F1D17E159F9F886A42241F02F46A08313E +:1077A8008282546D3AA6C9517CD1673F3E49063A58 +:1077B8006B989829C1F953099B37170A91F5C20AA2 +:1077C8004886AD063F199F071D3A680E05C07C77AD +:1077D8005B5B6301979D0D77496AE52B9C036E7689 +:1077E80034259E5DE98A3B7BE3B937576B5BDA0842 +:1077F800FD81D8240E163D668B5F2B7BEEB8447E48 +:1078080060CDD00B3E006D6DB3663850824D677108 +:1078180014F2EB74D2CAF94C3B05FA4EEE58E33138 +:107828000B8A3F6E2425D31DAB70575F150FAE65CD +:107838003197655F92160D170C8D523DD2E6206385 +:10784800E3BED64EA0866458636F1C41DDC36663F1 +:10785800EC912C753CE5683FCB4DD567E88DE4117C +:107868003D0BFC241DD5081E2D17DD7CC7E65237BD +:10787800290F911045DAFB639F8C734ACBD1A72F50 +:1078880058555646A72EE10257563A6F2F3ECA530F +:1078980051C7C17DE2FE0B5F4B2E9922AA867668FE +:1078A800A0FDD34F2A71F73666DAAB532618DA11E2 +:1078B8009F253A5048F8604D6850E37E89915D28CD +:1078C800E7398C31B8942D2C5BFD7E29AECEF7714B +:1078D8005217963CF0C5A628AECA181578705921DB +:1078E800AC98B81EC00D666EEF1A4E18FD9367303F +:1078F800F582D86ED40792412998B91DDD8AF526FC +:1079080055ACA32D5737FE08D84D9513B686980465 +:107918009C67D169B2CC6E6D85281A2AB049ED49A9 +:1079280075DE093272C5D33E0295A96C330ED7298C +:1079380028A4F00448E8E22644999F33B8F73F3773 +:10794800086B094F293F2E68D860F745BD7ED65A87 +:107958008066721A96D1CC3104D75100D269487B1F +:10796800B4835E64F580057C7A880D72D105B338DE +:10797800D64272681F094806BBA6986A2A6F896AA8 +:10798800089B4855F4463E2007A799345DDE2C290C +:10799800EAF2110C2707005FFD96981F810900176E +:1079A800BFD715361FBF9516D3E01A1B00CDFD0EA5 +:1079B8003FBD8056F5B11A4332D94401646DEC617C +:1079C800FBAFF12F9923157AAE10B0364CE4495A23 +:1079D80069845008125C2344E202DB067ACA2267F3 +:1079E8008BAC3361E35C0603245D066807914C4E5B +:1079F800407E2540884A7F6CEAB61D38B7DB1430D4 +:107A080027540B2B1FAC826DBA350D2A66EE827C8B +:107A18002C936D1E25C31403C6364335A13FE5518B +:107A2800B03E063C555DD4282BB8B4575162B45CBF +:107A380059656C48B4A2ED54C7DB2C279298F552CF +:107A480073508D39AB810424B27D9B4CA2815A14AA +:107A5800020089114A7BBE255B781C71F474807121 +:107A6800651D1631AAB10D5E41D03078643C096FAE +:107A7800A72E6A22763A5B3C4BA1BC0E86FFEF2507 +:107A88006574657480D74C56C44770061752983C85 +:107A9800577C0E7A8E574238F5DEF02E9677C20064 +:107AA8007E12E0323801E91361CFFB20EA0DEF4086 +:107AB800EADAAC1DE989877997C682554371ED4C9E +:107AC800247E8604033B0B39B712F97E004B731CE6 +:107AD8003DF2CA381F07876486FB601BC4DDD02CC3 +:107AE800740AD9317171DF782453B701ACC03C13E3 +:107AF8007E17964F4B49EA2E7018C5069CDBEA386C +:107B08007602814EB85B774DF9A4C277B3964D5C87 +:107B180061EC2B7A495DA72B9E80356AE14E9D7CEE +:107B28005CFC3B3BEC6DC874C694A94F904131296D +:107B380064A61F68F7B8C3373619F8427F4176063E +:107B4800C254265645D31D0A93345A07ABA6826100 +:107B580011FE28287799C37973EA2A2D6E0B8C1E9B +:107B6800EED121075C70770320919B7CA188FA1CD9 +:107B78003AC689606BE9CE19EDA85735FC429E16C6 +:107B88000E6FB5706CED6E702E8FC86E7F3BC73967 +:107B98003C2B574937AFB470D626F7140975CC0C6F +:107BA8007E4F635C95C85B12B030910107A10E044B +:107BB8003E9A73524303166838ADF94045A5D3621F +:107BC80001DA117C15708F4316422764E86C9B3EDE +:107BD8007150A66B368E2166393D091F7596E318DC +:107BE80005FCC4508D64A2258C6FDB6708B1D67B79 +:107BF8004F92DD653B8F682358B9DA37ABDA3C2CF6 +:107C0800E19484714163EB3436C2CF4CBFB14E1955 +:107C1800DD8A48593F6A7631AFF6825291ABE80E59 +:107C28001909ED0B579859297285045B11022C57D5 +:107C3800EAD2956430BEF34431B6640E9E8AFB46A0 +:107C480096FD864A16D90A7B1894A401FAE715709E +:107C580050A0437640033E06EA85EC4E5EA9F34009 +:107C6800EF3AA35328E61673BB0D162EA70827452F +:107C7800309D8E211EB17C3F448AEF1DAD19E46111 +:107C8800A4B8174ED9B52867E673F457B55CB32482 +:107C980038672C4543ED5C373E2F220FFCC53D6B02 +:107CA8005FD0DA4756C69E18602FB95E736CC069FC +:107CB800DEB69E0223C1BC63B4C1BB288B31274BFF +:107CC8003399197DEF770B2E6B7D774926D4302DAC +:107CD800A32E8C3177D8AE5F9CF0FB62AD007401A7 +:107CE800DF6A0655546F0E60FFC4B0404010C400F0 +:107CF80052D22B1B7AC75F344436E77106496D525E +:107D080009893C74DAFF9F381154E635A6912B2F68 +:107D18004026705E28D9850C97292F42D0A9BB151B +:107D280086F63503B69D072ED0842D1CF21996438E +:107D38008BF63E667F65245657B7DB5B112CE4084B +:107D48008E70F0394058D670E34AAB58AE5F322691 +:107D58005DC6A257C1AF8B266143EA3AE5EAE82936 +:107D680009927E68325C5E76AE287C2995FA496A6B +:107D780029E7824EB04C9E68EEB1B71FBA83BE3F6A +:107D8800C71EE20EE77D401F8C8C2D2DD697B57D42 +:107D9800EA370F24D0108575CE58AA5E8E4E675BE1 +:107DA800C0762C259BCBC85313968D7451768B4087 +:107DB800688CAC52A9861A34ACD83050335EA545CD +:107DC80059318277B127F30D5543361CD82A092734 +:107DD80073BCCE5702ED763B4FDECA2F8B48547AE0 +:107DE800A1E03E70E8EA100B1B06D9526EACD966CA +:107DF800285BCD3426BD2539D4CB707ACDB69B030C +:107E08008EFC1555A38E284529C1EF6C8BA8F85315 +:107E18002916606422B9AD03F7494F32BDBD4B3C0A +:107E280043F6AD5A295F485E7F2D1836551F947862 +:107E3800E7BC0F430482344E49C16B57F6FDD33972 +:107E48004B73D204E235255694A7FE13E8476D1EFE +:107E5800DAEF88051DB6266278BB6662238C665BFE +:107E6800DCB0FA0F973B7E349B645D468DBC596F3E +:107E7800C3775D684097ED178C2C312041A1F73C02 +:107E8800160F811BB3B2DE48BF0F351B07EFA505E0 +:107E9800F24461490039DB7F25A42973E012EB1114 +:107EA80042C4887A85C9763A67CF034EC1E4393C23 +:107EB8007D167053F5369648C066B6375E936034C3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/spmv.riscv.hex b/benchmarks/riscv_tests/benchmarks/spmv.riscv.hex new file mode 100644 index 00000000..e94fba30 --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/spmv.riscv.hex @@ -0,0 +1,3202 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A00097020000938242047390523097510000EF +:1000B0009381C12017E200001302B254137202FCB4 +:1000C000732540F1930510006370B500130115000E +:1000D0001311110133014100131615013302C2003F +:1000E0006F20D032130101EF2322110023242100BD +:1000F0002326310023284100232A5100232C6100AC +:10010000232E710023208102232291022324A102A5 +:100110002326B1022328C102232AD102232CE10283 +:10012000232EF1022320010523221105232421057A +:100130002326310523284105232A5105232C610557 +:10014000232E710523208107232291072324A10751 +:100150002326B1072328C107232AD107232CE1072F +:10016000232EF10773252034F325103413060100E4 +:10017000EF20D00273101534B72200009382028062 +:1001800073A0023083204100032181008321C1003C +:100190000322010183224101032381018323C10141 +:1001A0000324010283244102032581028325C10225 +:1001B0000326010383264103032781038327C10309 +:1001C0000328010483284104032981048329C104ED +:1001D000032A0105832A4105032B8105832BC105D1 +:1001E000032C0106832C4106032D8106832DC106B5 +:1001F000032E0107832E4107032F8107832FC10799 +:0802000013010111730020300D +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000130101F9232611062324810623229106B8 +:1020100023202107232E3105232C4105232A510596 +:102020002328610523267105232481052322910598 +:102030002320A105232EB103232EB1002320C102AA +:102040006352A02813152500232AF100B307A70027 +:102050002324F10293870502938906002328E100D7 +:102060002326F1028327010183A6470003A7070067 +:10207000232CD1002326E1009387D6FF6352F72853 +:102080009387C6FFB387E74013FDC7FF330DED000D +:10209000131937002322F102931727000327C101E8 +:1020A000131D3D00930D0000330927010327010292 +:1020B000930C0000130C0000330AF7008327C102C1 +:1020C000130B0000930B0000330DFD00930A00007A +:1020D000930400001304000003270A0003260900EC +:1020E00083264900131737003387E90003250700CB +:1020F00083254700130A0A0113090902EF20002370 +:10210000130605009386050013850400930504005B +:10211000EF10501D03274AFF032689FE8326C9FEC0 +:10212000131737003387E900138405009304050073 +:102130008325470003250700EF20401F13060500F5 +:102140009386050013850B0093850A00EF10901904 +:1021500003278AFF032609FF832649FF1317370049 +:102160003387E900938A0500930B05008325470018 +:1021700003250700EF20801B13060500938605004A +:1021800013050C0093050B00EF10D0150327CAFFB1 +:10219000032689FF8326C9FF131737003387E90019 +:1021A000138B0500130C050083254700032507004A +:1021B000EF20C017130605009386050013850D0058 +:1021C00093850C00EF101012930D0500938C050001 +:1021D000E3142DF18327C10013060C0093060B00B6 +:1021E000138A47008327410293850A0013850B0059 +:1021F00093F7C7FFB38747012326F100EF10900E36 +:1022000013860D0093860C00EF10D00D930A050085 +:1022100013890500032781018327C10063D6E706E0 +:10222000139B3700139A2700931C37008327C101A3 +:1022300003270102338B6701330A4701B38C9701EF +:1022400083270A0003260B0083264B009397370051 +:10225000B387F90003A5070083A54700130B8B0084 +:10226000130A4A00EF20800C130605009386050030 +:102270001385040093050400EF10D00693040500B5 +:1022800013840500E39E6CFB13860A00138504008B +:102290009306090093050400EF10D0048327410141 +:1022A0000327010123A0A70023A2B700938787007B +:1022B000232AF10083278102130747002328E10026 +:1022C000E392E7DA8320C1060324810683244106D2 +:1022D000032901068329C105032A8105832A4105B3 +:1022E000032B0105832BC104032C8104832C41049F +:1022F000032D0104832DC103130101076780000032 +:10230000930A000013090000930400001304000066 +:102310006FF05FF0130101EB23229113B70C004023 +:102320009387FCFF23248114232291142320211559 +:10233000232A511323261114232E3113232C411346 +:102340002328611323267113232481132320A1132F +:10235000232EB11113090500938405001304060010 +:102360002324D100930A50022326F1006F0040017C +:10237000630405069385040013041400E7000900B4 +:1023800003450400E31655FF83461400930D140023 +:1023900013870D00930B00029309F0FF130AF0FF5F +:1023A0009305000013065005130590009387D6FD92 +:1023B00093F7F70F13041700636CF60617C80000B5 +:1023C000130848E993972700B387070183A70700FD +:1023D000B3870701678007008320C1140324811499 +:1023E00083244114032901148329C113032A81136F +:1023F000832A4113032B0113832BC112032C811257 +:10240000832C4112032D0112832DC11113010115DB +:1024100067800000938B06008346170013070400B3 +:10242000130417009387D6FD93F7F70FE378F6F8B8 +:102430009385040013055002E700090013840D0082 +:102440006FF01FF403481700938906FD130704007B +:10245000930708FD930608006366F5029397290029 +:10246000B38937011307170093991900B38909013C +:1024700003480700938909FD930708FD93060800A8 +:10248000E37EF5FCE3540AF2138A09009309F0FF96 +:102490006FF0DFF183461700130704006FF01FF1A0 +:1024A0009385040013055002E70009006FF05FED0B +:1024B00083278100834617001307040083A90700C0 +:1024C000938747002324F1006FF0DFFB130500031F +:1024D00093850400E7000900938504001305800735 +:1024E000E700090083278100130C0001232201006B +:1024F0001387470083278100930D000083A90700FD +:102500002324E10013060C00930600001385090044 +:1025100093850D00EF10001C2328A10093070000F5 +:10252000930C05006380B723130B4101130D1000BA +:1025300013060C00930600001385090093850D0017 +:10254000EF00105613060C009306000093090500D7 +:10255000938D0500EF100018832741002320AB0066 +:102560002320A101930C0500130B4B00130D1D003C +:10257000E390B7FDE3FE89FB635C4D01130AFAFFAC +:102580009385040013850B00E7000900E3484DFF25 +:10259000832701000327C10093099000338AE700D5 +:1025A000131A2A0093070101338A47016F00C00004 +:1025B000832C0A00130ACAFFB3B79901B307F0408E +:1025C00093F7770293870703338597019385040078 +:1025D000E70009009307C100E39C47FD6FF05FDA55 +:1025E0009307100063CCB7160327810093074700B9 +:1025F00063860518832907002324F10013DCF941C1 +:10260000634E0C18930D0C0023220100130CA00044 +:102610006FF05FEF130C00012322010093071000FD +:1026200063C2B71083278100138747006FF09FECC8 +:102630008327810083AD0700138B470063840D1847 +:10264000635840099307D002639EFB0403C50D0045 +:1026500063080502930BF0FF63C609009389F9FF35 +:10266000638E790193850400938D1D00E7000900B6 +:1026700003C50D00130AFAFFE31005FE635C400179 +:10268000130AFAFF9385040013050002E70009000E +:10269000E3180AFE232461016FF09FCE97CD00005E +:1026A000938D8DE493870D00B3863D0163980900F7 +:1026B0006F004013938717006386D70003C7070096 +:1026C000E31A07FEB387B741330AFA40634C40115F +:1026D00003C50D00E30005FC930BF0FF6FF0DFF77F +:1026E0009347FAFF93D7F74183461700337AFA00EE +:1026F000130704006FF09FCB8327810093850400AC +:1027000003A50700138B4700E7000900232461019C +:102710006FF01FC783461700938515001307040049 +:102720006FF0DFC883278100138B7700137B8BFF4B +:1027300093078B0083290B00832D4B002324F1008A +:102740006FF05FDCE3F289DF9307100023200100C4 +:10275000130D1000E3C447E36FF09FE3832781006C +:10276000138B7700137B8BFF93078B0083290B0060 +:10277000032C4B002324F1006FF09FE80327810016 +:102780006FF05FE7130C8000232201006FF01FE958 +:10279000130CA000232201006FF05FE89385040072 +:1027A0001305D002E700090033373001B307804139 +:1027B000B3093041B38DE740130CA0002322010080 +:1027C0006FF05FD4635640019307D002E398FBECAF +:1027D00097CD0000938D4DD113058002930BF0FF30 +:1027E0006FF09FE7130AFAFF9385040013850B002F +:1027F000E7000900E30E0AEC130AFAFF93850400D0 +:1028000013850B00E7000900E31E0AFC6FF05FEC84 +:1028100083A705002380A70083A7050093871700DF +:1028200023A0F50067800000130101F81308F103ED +:10283000137808FC130700042320E8009307000026 +:102840002322F800130710002324E8009307000058 +:102850002326F8002328A800232AB800232CC80028 +:10286000232ED8000F00F00F97E6FFFF938686799E +:1028700023A006019307000023A2F60097E6FFFFBE +:102880009386467C03A7060083A746003367F700BC +:10289000E30A07FE1307000023A0E60093070000E9 +:1028A00023A2F6000F00F00F03250800832548003F +:1028B0001301010867800000130101FF2324810038 +:1028C000832502049307020023261100B387B70073 +:1028D000138615002380A7002320C2049307A000BD +:1028E0006300F50293070004630CF6008320C10027 +:1028F000032481001305000013010101678000001B +:102900009356F6411305020093050000EFF0DFF146 +:102910008320C1002320020403248100130500004A +:102920001301010167800000732700B097C7000002 +:10293000938707C5631E050083A6070017C600001E +:10294000130606BB97C5000023A8C5C23307D740AE +:1029500023A0E700732720B0631E050083A647006D +:1029600017C60000130646B997C5000023A8C5C0C6 +:102970003307D74023A2E7006780000093161500B5 +:1029800013E7160097E6FFFF9386C66793070000DC +:1029900023A0E60023A2F6006F0000003716000017 +:1029A00097E7FFFF93870766130636A79306000095 +:1029B00023A0C70023A2D7006F000000130101FF6E +:1029C00023261100EFF09FFB97E7FFFF93878763B4 +:1029D0001306D0109306000023A0C70023A2D7003F +:1029E0006F0000008347050063820702130605009D +:1029F0008347160013061600E39C07FE3306A64025 +:102A000093060000930500006FF01FE2130600001C +:102A100093060000930500006FF01FE163100500AE +:102A200067800000130101FD130705002326110232 +:102A30001305C1001306B101130890006F00800058 +:102A4000138607009377F700B337F800B307F04019 +:102A500093F777029376F70093870703B387F6001F +:102A60002300F6009396C501135747009307F6FF1E +:102A700033E7E60093D54500E314C5FC230E0100BF +:102A8000EFF05FF68320C1021301010367800000AD +:102A9000130101FC13034102130E05002322B102AE +:102AA0002324C1022326D10217050000130505E1E6 +:102AB0009306030013060E0093050000232E110059 +:102AC0002328E102232AF102232C0103232E1103E0 +:102AD00023266100EFF01F848320C101130500004D +:102AE0001301010467800000130101FB130381033C +:102AF000232481022326A100232CC102232ED102EC +:102B0000130405001386050017050000130585D082 +:102B10009305C10093060300232611022322F1042A +:102B20002320E1042324010523261105232E61001F +:102B3000EFF04FFE8327C100238007000325C1006B +:102B40008320C1023305854003248102130101055E +:102B500067800000B3E7C500B367F50093F737005F +:102B6000B306C500638407023386C50093070500DA +:102B7000637ED50203C70500938515009387170070 +:102B8000A38FE7FEE318B6FE67800000E37ED5FE64 +:102B90009307050003A70500938747009385450029 +:102BA00023AEE7FEE3E8D7FE678000006780000001 +:102BB000B367C50093F737003306C500638007028B +:102BC00093F5F50F930705006370C504938717000D +:102BD000A38FB7FEE31CF6FE6780000093F5F50FA8 +:102BE0001397850033E7E500931707013367F70074 +:102BF000E374C5FE930705009387470023AEE7FE05 +:102C0000E3ECC7FE6780000067800000130101F657 +:102C100097C70000938747972324410917CA0000EC +:102C2000130A8A9623263109B309FA40232A910808 +:102C300023282109930405001389050013050200C8 +:102C40009385070013860900232E1108232C810881 +:102C500023225109930A0200EFF0DFEF17C60000AC +:102C60001306869A330646419305000033853A01E0 +:102C7000EFF01FF49305090013850400EFF01FDA4D +:102C80009305000013050000EF10504B17C900001A +:102C90001309098F832609001304F103137404FC3C +:102CA0009304050063940604832649006396060096 +:102CB00013850400EFF09FCC1309040097C90000AE +:102CC0009389898B03A649001305090097C5000065 +:102CD0009385C584EFF05FE13309A900E30A24FD81 +:102CE00013050400EFF01FD06FF09FFC97C90000A0 +:102CF0009389898803A6090097C5000093850582FA +:102D000013050400EFF05FDE832649003309A400B9 +:102D1000E38606FC6FF01FFB83470500638E070008 +:102D20009307050003C7170093871700E31C07FEEE +:102D30003385A7406780000013050000678000000E +:102D400013060500B306B6001385050093070600B9 +:102D5000639805006F00C001938717006388F60031 +:102D600003C70700E31A07FE3385C74067800000EA +:102D70006780000083470500938515001305150043 +:102D800003C7F5FF63880700E386E7FE3385E74066 +:102D900067800000930700006FF05FFF9307050056 +:102DA00003C705009387170093851500A38FE7FEDF +:102DB000E31807FE67800000034705009306000242 +:102DC000930705006318D70003C717009387170000 +:102DD000E30CD7FE9306D0026300D7069306B00239 +:102DE0006300D70483C607009305000063820604CE +:102DF0001305000093871700138606FD131725009F +:102E000083C607003305A700131515003305A60078 +:102E1000E39206FE638005023305A0406780000050 +:102E200083C617009305000093871700E39206FC02 +:102E3000130500006780000083C61700930510008B +:102E400093871700E39606FA130500006FF09FFEC4 +:102E5000138F05001308000063DC0500B337A000E2 +:102E6000B305B040338FF5403305A0401308F0FFA1 +:102E700063DA0600B335C0003307D040B306B7406D +:102E80003306C04093080600138706009307050029 +:102E900093050F0063940624B7E600809386463EB0 +:102EA0006376CF0E370301006378660C1303F00FCF +:102EB0006374C300130780003353E600B3866600D3 +:102EC00003CE0600330EEE00130700023303C741A2 +:102ED000630CC701B3156F00335EC501B3186600FC +:102EE000B365BE00B317650013D60801B3F6C5027B +:102EF000139508011355050113D70701B3D5C50272 +:102F00009396060133E7E600B305B502637AB7008E +:102F100033071701636617016374B700330717019E +:102F20003307B740B376C7029397070193D70701DA +:102F30003357C7023307E50213950601B367F5005F +:102F400063FAE700B387170163E6170163F4E7004C +:102F5000B3871701B387E74033D5670093050000B7 +:102F6000630A0800B337A000B306B040B385F6404B +:102F70003305A040678000003703000113070001FC +:102F8000E36C66F2130780016FF01FF3631606000F +:102F900093081000B3D8E8023706010063F6C812A0 +:102FA0001306F00F637416011307800033D6E80090 +:102FB000B386C60003CE0600B3051F41330EEE00F4 +:102FC000130700023303C7416306C709B3986800BB +:102FD000B35ECF01B3176500335EC50113D5080199 +:102FE000B3156F00336EBE009395080193D50501AC +:102FF00013560E01B3D6AE0233F7AE02B386D50236 +:10300000131707013367C700637AD7003307170127 +:10301000636617016374D700330717013306D7407F +:103020003377A602131E0E01135E0E013356A6025D +:10303000131707013386C502B365C70163FAC500DC +:10304000B385150163E6150163F4C500B385150169 +:10305000B385C54093D6080133F7D502139508010F +:103060001355050113D60701B3D5D5021317070170 +:103070003367C700B305B502637AB700330717019A +:10308000636617016374B70033071701B305B740D0 +:1030900033F7D5029397070193D70701B3D5D5022C +:1030A000B305B50213150701B367F50063FAB7005E +:1030B000B387170163E6170163F4B700B3871701FD +:1030C000B387B7406FF05FE93706000113070001CF +:1030D000E3EEC8EC130780016FF05FEDE362DFE819 +:1030E0003707010063FAE604930EF00F33B7DE00F2 +:1030F00013173700B7E8008033D3E6009388483EC3 +:10310000B388680083CE0800B38EEE001307000278 +:10311000330ED741631CD70363E4E601636AC5003D +:10312000B307C540B305DF403335F500B385A5408F +:10313000138507006FF0DFE2B708000113070001F5 +:10314000E3EA16FB130780016FF0DFFA3357D6016D +:10315000B396C601B36FD700B357DF0113D70F0182 +:1031600033F3E702B315CF01B356D501B3E6B6008A +:1031700093950F0193D5050193D806013316C60127 +:103180003315C501B3D7E70213130301B368130165 +:10319000338FF5021383070063FEE801B388F8015B +:1031A0001383F7FF63E8F80163F6E8011383E7FF91 +:1031B000B388F801B388E84133FFE802939606012B +:1031C00093D60601B3D8E802131F0F01336FDF0057 +:1031D000B385150393870800637EBF00330FFF019B +:1031E0009387F8FF6368FF016376BF009387E8FF6A +:1031F000330FFF01B305BF4013130301370F010065 +:103200003363F3009307FFFFB378F300935606018F +:1032100013530301B377F6003387F802B307F302C1 +:10322000B388D8023303D302B388F800935607015A +:10323000B386160163F4F6003303E30193D7060166 +:1032400033836700B70701009387F7FFB3F6F600F3 +:10325000939606013377F7003387E60063E665004F +:10326000639E6500637CE5003306C7403337C700C3 +:103270003307F7013303E340130706003307E54044 +:103280003335E500B3856540B385A540B397D501D7 +:103290003357C70133E5E700B3D5C5016FF05FCC05 +:1032A00093080500938705001308060013850600A0 +:1032B0001383080063940628B7E600809386463E91 +:1032C00063F6C50E370701006378E60C1307F00FAD +:1032D0003337C700131737003355E600B386A6000F +:1032E00083C60600130500023387E600B306E540F7 +:1032F000630CE500B397D70033D7E8003318D60046 +:10330000B365F7003393D80093580801B3D715037A +:10331000131608011356060113570301B3F61503DC +:1033200013850700B305F6029396060133E7E6001E +:10333000637EB700330707011385F7FF6368070152 +:103340006376B7001385E7FF330707013307B740FC +:10335000B3771703131303011353030133571703F1 +:103360009397070133E36700B306E60213060700ED +:10337000637CD300330368001306F7FF6366030121 +:103380006374D3001306E7FF131505013365C50009 +:10339000930500006F00400E370500011307000180 +:1033A000E36CA6F2130780016FF01FF363160600AB +:1033B000130710003358C702370701006370E80C89 +:1033C0001307F00F63740701130580003357A8003B +:1033D000B386E60003C70600130600023307A70002 +:1033E000B306E6406316E60AB3870741930510006B +:1033F00093580801131608011356060113570301C9 +:10340000B3F61703B3D717039396060133E7E60025 +:10341000330EF60213850700637EC70133070701E9 +:103420001385F7FF636807016376C7011385E7FF1C +:10343000330707013307C741B3771703131303019A +:1034400013530301335717039397070133E36700BF +:10345000B306E60213060700637CD300330368005B +:103460001306F7FF636603016374D3001306E7FFD7 +:10347000131505013365C50067800000370700019B +:1034800013050001E364E8F4130580016FF01FF4F5 +:103490003318D800B3D5E7003393D800B397D700DB +:1034A00033D7E800935808013366F70033F7150364 +:1034B0009317080193D7070113550601B3D51503D8 +:1034C000131707013367A700B386B70213850500FA +:1034D000637ED700330707011385F5FF6368070193 +:1034E0006376D7001385E5FF33070701B306D7409E +:1034F00033F716031316060113560601B3D6160347 +:1035000013170701B388D702B367C70013870600F4 +:1035100063FE1701B38707011387F6FF63E807010E +:1035200063F617011387E6FFB387070193150501BB +:10353000B3871741B3E5E5006FF09FEB63E6D5185D +:103540003707010063F4E6041307F00FB335D70023 +:103550009395350037E7008033D5B6001307473E13 +:103560003307A70003470700130500023307B7001E +:10357000B305E5406316E50213051000E3EEF6EE31 +:1035800033B5C800134515006FF01FEF3707000172 +:1035900093050001E3E0E6FC930580016FF09FFBDB +:1035A0003353E600B396B6003363D30013550301DB +:1035B000B31EB60033D6E700B376A602B397B700C2 +:1035C00033D7E8003368F7009317030193D7070157 +:1035D000135708013356A6029396060133E7E60017 +:1035E000338FC702130E0600637EE70133076700BF +:1035F000130EF6FF636867006376E701130EE6FFBC +:10360000330767003307E741B376A7023357A702B2 +:10361000939606013386E7029317080193D70701B3 +:10362000B3E7F6009306070063FEC700B3876700A1 +:103630009306F7FF63E8670063F6C7009306E7FFAA +:10364000B387670013150E01370E01003365D500EF +:103650009306FEFF3378D500B387C740B3F6DE008C +:103660001356050193DE0E013303D802B306D602CA +:10367000135703013308D8033308D8003307070171 +:103680003306D6036374D7003306C6019356070189 +:103690003386C60063E6C702E39CC7CEB7070100C6 +:1036A0009387F7FF3377F700131707013373F3009E +:1036B000B398B8003307670093050000E3FEE8DA2B +:1036C0001305F5FF6FF0DFCC930500001305000034 +:1036D0006FF09FDA93080600138706009307050032 +:1036E00013880500639C0622B7E600809386463E59 +:1036F00063FCC50C37030100637E660A1303F00FF9 +:103700006374C300130780003353E600B38666007A +:1037100003CE0600330EEE00130700023303C74149 +:10372000630CC701B3956500335EC501B31866002D +:103730003368BE00B317650013D608013377C8029B +:10374000139508011355050193D607013358C80294 +:1037500013170701B366D7003308050363FA0601A0 +:10376000B386160163E6160163F40601B3861601FB +:10377000B386064133F7C6029397070193D7070133 +:10378000B3D6C602B306D50213150701B367F50019 +:1037900063FAD700B387170163E6170163F4D70014 +:1037A000B3871701B387D74033D56700930500006F +:1037B000678000003703000113070001E36666F429 +:1037C000130780016FF05FF4631606001306100004 +:1037D000B35816033706010063F2C80A1306F00F48 +:1037E000637416011307800033D6E800B386C60061 +:1037F00003CE0600330EEE00130700023303C74169 +:103800006318C709B385154113D70801139508013B +:103810001355050113D60701B3F6E502B3D5E5024A +:1038200093960601B3E6C600B305B50263FAB60087 +:10383000B386160163E6160163F4B600B38616017B +:10384000B385B640B3F6E5029397070193D7070116 +:10385000B3D5E502B305B50213950601B367F500CC +:1038600063FAB700B387170163E6170163F4B70083 +:10387000B3871701B387B7406FF01FF33706000116 +:1038800013070001E3E2C8F6130780016FF0DFF5CC +:10389000B398680033D7C501B3176500335EC5011F +:1038A00013D50801B376A702B3956500336EBE0049 +:1038B0009395080193D5050113560E013357A702BE +:1038C00093960601B3E6C6003387E50263FAE60085 +:1038D000B386160163E6160163F4E600B3861601AB +:1038E0003386E640B376A602131E0E01135E0E0168 +:1038F0003356A602939606013386C502B3E5C60188 +:1039000063FAC500B385150163E6150163F4C500CC +:10391000B3851501B385C5406FF01FEFE3EAD5E825 +:103920003707010063FCE604130EF00F3337DE00A7 +:1039300013173700B7E8008033D3E6009388483E7A +:10394000B388680003CE0800330EEE0013070002B0 +:103950003303C741631EC70363E4B600636AC5004F +:10396000B307C540B385D5403335F5003388A5404E +:1039700013850700930508006FF09FE3B708000167 +:1039800013070001E3E816FB130780016FF09FFAAD +:103990003357C601B3966600336FD700B3D7C5015E +:1039A00013570F01B3F8E702B39565003358C5010B +:1039B0003368B80093150F0193D50501935608019C +:1039C0003316660033156500B3D7E70293980801F4 +:1039D000B3E6D800B38EF5029388070063FED601E4 +:1039E000B386E6019388F7FF63E8E60163F6D60144 +:1039F0009388E7FFB386E601B386D641B3FEE602BD +:103A00001318080113580801B3D6E602939E0E015D +:103A1000B3EE0E01B385D5029387060063FEBE00A8 +:103A2000B38EEE019387F6FF63E8EE0163F6BE0006 +:103A30009387E6FFB38EEE01B385BE4093980801ED +:103A4000B70E0100B3E8F8009387FEFF33F8F800E3 +:103A50009356060193D80801B377F6003307F802AE +:103A6000B387F8023308D802B388D8023308F800C5 +:103A700093560701B386060163F4F600B388D801B4 +:103A8000B70701009387F7FF13D80601B3F6F600D6 +:103A9000939606013377F700B30818013387E600E1 +:103AA00063E61501639E1501637CE5003306C7409C +:103AB0003337C7003307E701B388E8401307060030 +:103AC0003307E5403335E500B3851541B385A5409F +:103AD000B397C5013357670033E5E700B3D56500F9 +:103AE0006FF01FCD370810001308F8FF130101FE17 +:103AF000B377B80013D745013378D80093D846017F +:103B0000232C8100939737001374F77F1357D50147 +:103B1000232A9100B367F70093D4F5011357D60118 +:103B200093F8F87F93D5F60113183800232E11006F +:103B3000232821012326310113153500336707019E +:103B400013163600B30614416394B42C635ED01090 +:103B500063900804B365C7006388052A9385F6FF60 +:103B6000639005023306C5003335A600B387E7002E +:103B7000B387A70013050600130410006F000007A9 +:103B80001308F07F639006031304F07F6F00C020DA +:103B90009305F07F6302B420B70580003367B70058 +:103BA000938506009306800363CAB60A9306F00164 +:103BB00063CCB606130800023308B840B3160701F9 +:103BC000B358B60033160601B3E616013336C0000B +:103BD00033E6C6003357B7003306A6003307F700B5 +:103BE000B337A600B307F700130506001397870045 +:103BF0006354071A130414001307F07F6304E45C92 +:103C0000B70680FF9386F6FFB3F6D70093551500ED +:103C1000137515009397F60133E5A50033E5A7006A +:103C200093D716006F004017938605FE9308000295 +:103C3000B356D70013080000638815011308000469 +:103C4000B305B8403318B7003366C8003336C00038 +:103C500033E6C600130700006FF01FF83366C70095 +:103C60003336C0006FF01FFF6382060EB3858840B5 +:103C7000631E0402B3E6A700638606529386F5FF2F +:103C8000639C06003305C500B387E7003336C500E3 +:103C9000B387C7006FF05FEE1308F07F63920503F0 +:103CA00093070700130506006FF01FEE9306F07FE1 +:103CB000E388D8FEB7068000B3E7D70093860500F7 +:103CC0009305800363CED5069305F00163C0D50448 +:103CD000130800023308D8403353D500B3950701C9 +:103CE00033150501B3E565003335A00033E5A500C4 +:103CF000B3D6D7003305C500B387E6003336C50019 +:103D0000B387C700138408006FF05FEE938506FE4B +:103D100013030002B3D5B7001308000063886600E0 +:103D200013080004B306D8403398D7003365A800C1 +:103D30003335A00033E5A500930600006FF09FFB2C +:103D400033E5A7003335A0006FF01FFF9306140082 +:103D500093F5E67F63960508B3E6A70063120406B1 +:103D6000638A0644B366C700638806023306C5004B +:103D7000B387E7003335A600B387A7001397870002 +:103D800013050600635A0700370780FF1307F7FF84 +:103D9000B3F7E700130410001377750063080742B8 +:103DA0001377F500930640006302D742930645005F +:103DB00033B5A600B387A700138506006F00004146 +:103DC000E38006EE3366C700E30006DC93040000E0 +:103DD000B7074000130500001304F07F6F00003F99 +:103DE0009305F07F638EB63C3306C5003387E7004A +:103DF000B337A6003307F7001315F7011356160063 +:103E00003365C50093571700138406006FF0DFF881 +:103E1000635CD00E639E0808B365C700E38605FEA9 +:103E20009385F6FF639005023306C5403335C50020 +:103E3000B387E740B387A7401305060013041000BB +:103E40006F0040051308F07FE38006D593068003DA +:103E500063C6B60A9306F00163C8B60613080002EB +:103E60003308B840B3160701B358B600331606013D +:103E7000B3E616013336C00033E6C6003357B70049 +:103E80003306C5403387E740B337C500B307F74073 +:103E90001305060013978700E35007F037098000E9 +:103EA0001309F9FF33F92701930905006F00C020BA +:103EB0009305F07FE302B4EEB70580003367B700E7 +:103EC000938506006FF09FF8938605FE9308000225 +:103ED000B356D700130800006388150113080004C7 +:103EE000B305B8403318B7003366C8003336C00096 +:103EF00033E6C600130700006FF09FF83366C70073 +:103F00003336C0006FF01FFF6388060E3388884089 +:103F100063120404B3E6A700638206349306F8FF35 +:103F2000639E06003305A640B307F7403336A6006C +:103F3000B387C740938405006FF05FF01303F07FF1 +:103F40006314680293070700130506001304F07F4B +:103F50006F00000D9306F07FE386D8FEB706800061 +:103F6000B3E7D70093060800130880036340D8081E +:103F70001308F0016342D804130300023303D34053 +:103F8000335ED50033986700331565003368C80188 +:103F90003335A0003365A800B3D6D7003305A6405B +:103FA000B307D7403336A600B387C7401384080051 +:103FB000938405006FF01FEE138806FE130E0002B7 +:103FC00033D80701130300006388C60113030004FC +:103FD000B306D3403393D7003365A3003335A00035 +:103FE0003365A800930600006FF05FFB33E5A70080 +:103FF0003335A0006FF01FFF9306140093F6E67FA1 +:104000006396060833E8A700B366C700631004068A +:10401000631C0800638C0624930707001305060041 +:10402000938405006FF05FD7E38806D63308C54058 +:10403000B3380501B386E740B386164193988600EE +:1040400063DC08003305A640B307F7403336A6000B +:10405000B387C7406FF0DFFC3365D80063000522EB +:1040600093870600130508006FF01FD3631C080038 +:10407000638A062093070700130506009384050052 +:104080006FF09FB0E38206B06FF05FD4B309C54014 +:10409000B33635013389E7403309D9409316890097 +:1040A00063D40608B309A640B307F7403336360198 +:1040B0003389C7409384050063020908130509008A +:1040C000EF001003130785FF9307F00163C0E708B3 +:1040D00093060002B386E640B317E900B3D6D900D1 +:1040E000B3E6F6003395E9006344870A3307874057 +:1040F000930717001306F0016342F6061307000248 +:104100003307F740B355F5003396E6003315E50065 +:104110003366B6003335A0003365A600B3D7F6008A +:10412000130400006FF05FC733E52901E31605F8BB +:1041300093070000130400006F00C01313850900EB +:10414000EF00007B130505026FF0DFF7130585FD17 +:10415000B396A900130500006FF01FF9130717FEAF +:104160009305000233D7E600130600006388B7000A +:10417000130600043306F6403396C6003365C500C7 +:104180003335A0003365A700930700006FF05FF997 +:10419000B70780FF9387F7FF3304E440B3F7F600D7 +:1041A0006FF09FBF930707001305060013840500F7 +:1041B0006FF09FBE93070700130506006FF0DFBD89 +:1041C0001304F07F93070000130500001397870086 +:1041D000635E0700130414001307F07F630CE40A06 +:1041E000370780FF1307F7FFB3F7E7001397D701EF +:1041F000135535003365A7001307F07F93D73700B9 +:10420000631EE4003365F5009307000063080500B2 +:10421000B7070800130500009304000013174401BA +:10422000B706F07F9397C7008320C1010324810163 +:104230003377D70093D7C7009394F401B367F7009F +:1042400033E7970003290101832441018329C10039 +:104250009305070013010102678000009307070020 +:1042600013050600130408006FF09FDB930700009E +:1042700013050000930400006FF05FF59307000042 +:104280006FF05FFF1305000093040000B7074000C4 +:104290006FF09FB493070000130500006FF01FF547 +:1042A00013D74501B70710009387F7FF13D84601CE +:1042B00013030500930E05001377F77F1305F07FB6 +:1042C000B3F8B700130F0600B3F7D70093D5F50185 +:1042D0001378F87F93D6F601631CA70033EE6800CD +:1042E0001305100063140E006306E80067800000E9 +:1042F0006318A80033E6C70013051000E31806FE94 +:1043000013051000E31407FFE392F8FEE390EEFFBD +:10431000638AD500E31C07FC33E568003335A00051 +:10432000678000001305000067800000130101FD95 +:1043300093D745012324810223229102232E3101A8 +:10434000232C4101232A51019394C50023261102F5 +:10435000232021032328610123267101139757018C +:104360001304050093090600938A060093D4C40041 +:1043700013DAF5016306070A13FBF77F9307F07F53 +:104380006302FB109357D50193943400B3E4970074 +:10439000B7078000B3E4F40013193500130B1BC0FA +:1043A000930B000093D74A011394CA001397570147 +:1043B0001354C40013F5F77F93DAFA016300071072 +:1043C0009307F07F6300F51693D7D90113143400D7 +:1043D00033E48700B70780003364F400130515C089 +:1043E000939739001307000093962B00B3E6E6007D +:1043F0003305AB009386F6FF1308E00033465A01FD +:1044000093051500636CD81437E500809396260059 +:104410001305853AB386A60083A6060067800600CA +:1044200033E9A400630C09066380040413850400C7 +:10443000EF00004C130755FF9307C00163CCE70260 +:104440009307D001130985FFB387E740B394240194 +:10445000B357F400B3E4970033192401130BD0C011 +:10446000330BAB406FF0DFF3EF008048130505021C +:104470006FF05FFC930485FDB314940013090000F2 +:104480006FF0DFFD33E9A4006302090213090500A0 +:10449000130BF07F930B30006FF0DFF093040000FC +:1044A000130B0000930B10006FF0DFEF930400007C +:1044B000130BF07F930B20006FF0DFEEB367340136 +:1044C000638E07066300040413050400EF004042F6 +:1044D000930655FF9307C00163CED7021307D0019F +:1044E000930785FF3307D7403314F40033D7E9002F +:1044F00033648700B397F9001307D0C03305A74092 +:104500006FF05FEE13850900EF00803E1305050292 +:104510006FF01FFC130485FD33948900930700009E +:104520006FF09FFDB3673401638207029387090030 +:104530001305F07F130730006FF01FEB130400002A +:1045400013050000130710006FF01FEA13040000AA +:104550001305F07F130720006FF01FE9370F0100EC +:104560001307FFFF9356090113D307013379E900BD +:10457000B3F7E700B30823033308F902B38FF60259 +:10458000B38EF80193580801B388D801338E6602C0 +:1045900063F4F801330EEE0193D20801B3F8E8009A +:1045A0003378E800135F0401939808013374E40042 +:1045B000B3880801338786023308890233092F0341 +:1045C000B30EE900135908013309D901B386E60394 +:1045D0006376E90037070100B386E600935E0901C0 +:1045E000B38EDE00B7060100938FF6FF3379F90131 +:1045F0003378F80113D7040113190901B3F4F40156 +:10460000B383970233090901B3822201330893026D +:10461000B307F702B30FE3023303F80013D8030123 +:10462000330868006374F800B38FDF009357080104 +:10463000B7060100B38FF7019387F6FF3378F800D0 +:10464000B3F7F300B3039402131808013308F8001A +:1046500033048702B3049F023303EF02B384840060 +:1046600013D70301B304970063F484003303D3002A +:10467000B70701009387F7FFB3F6F400939606019E +:10468000B3F7F300330E5E00B386F60033392E0124 +:10469000B386D60133872601330E0E0133380E015F +:1046A000330FF701B3020F01B3B6D6013337270139 +:1046B00033E7E60033B8020193D40401B33FFF01AE +:1046C0003307970033E80F0193179E003307070164 +:1046D00033076700B3E7170113179700B337F000EC +:1046E000135E7E0113D47201B3E7C7019392920067 +:1046F0009316770033648700B3E7570063D406103E +:1047000013D7170093F71700B367F7001317F401D7 +:10471000B3E7E700135414009386F53F6358D00EB7 +:1047200013F777006300070213F7F7001305400043 +:10473000630AA70013874700B337F7003304F40078 +:104740009307070013177400635A0700370700FF29 +:104750001307F7FF3374E400938605401307E07FE7 +:104760006348D71613D737009317D401B3E7E70090 +:1047700013543400139746011314C400B706F07F96 +:104780003377D7001354C400336487001316F6013F +:104790008320C1023367C4000324810283244102C1 +:1047A000032901028329C101032A8101832A4101CE +:1047B000032B0101832BC10013850700930507001C +:1047C000130101036780000013060A00138404002C +:1047D0009307090013870B0093062000630AD70E86 +:1047E00093063000630CD70C93061000E316D7F243 +:1047F00013040000930700006F00800813860A006E +:104800006FF09FFD930505006FF01FF11305100079 +:104810003305D54013078003E34CA7FC1307F001D1 +:104820006344A7069385E5413317B400B3D6A700C8 +:10483000B397B7003367D700B337F000B367F7001B +:104840003354A40013F777006300070213F7F7004F +:1048500093064000630AD70013874700B337F70079 +:104860003304F4009307070013178400634A070614 +:104870001317D40193D73700B367F70013543400EC +:10488000930600006FF01FEF130710FE3307D740A9 +:10489000130800023357E400930600006306050185 +:1048A0009385E543B316B400B3E7F600B337F000E1 +:1048B000B367F700130400006FF0DFF83704080057 +:1048C000930700009306F07F130600006FF09FEA45 +:1048D00013040000930700009306F07F6FF09FE938 +:1048E0001304000093070000930610006FF09FE888 +:1048F000B7070100637AF5029307F00FB3B7A7007B +:104900009397370037E7008093060002B386F6409E +:104910003355F5009307473E3385A700034505004F +:104920003385A64067800000370700019307000128 +:0C493000E36AE5FC930780016FF0DFFCF8 +:10493C0013010181B71700002326117E2324817EE9 +:10494C002322917E2320217F232C417D232E317D18 +:10495C00232A617D2328717D37F4FFFF1301018326 +:10496C00938707FAB3872700130404063384870060 +:10497C001707000013074714972600009386468BF1 +:10498C00173600001306C68497550000938545DC46 +:10499C00930704001305401FEFD0CFE5130510005B +:1049AC00EFD0DFF79307040097550000938545DAA5 +:1049BC0017070000130747109726000093864687B9 +:1049CC00173600001306C6801305401FEFD08FE288 +:1049DC0013050000EFD09FF4970700009387470D55 +:1049EC0003A5070083A54700171900001309C98AFE +:1049FC0093040000130A401F03260400832644007E +:104A0C00032B8400832BC400EFF0DF88930905008F +:104A1C00832549000325090013060B0093860B0020 +:104A2C0093B91900EFF01F87630C050293841400EF +:104A3C00338534011301017D8320C17E0324817EE3 +:104A4C008324417E0329017E8329C17D032A817D34 +:104A5C00032B417D832B017D1301017F67800000B7 +:104A6C00E38609FC9384240013090901130404014F +:104A7C0063884401032589FF8325C9FF6FF0DFF7A5 +:104A8C00130500006FF01FFB130101FF17A50000B9 +:104A9C00130585A623261100EFD01FF48320C10037 +:0C4AAC001305F0FF1301010167800000FA +:084AB8000000000062FA384121 +:104AC0000000000004000000080000000A000000D0 +:104AD0000F000000160000001D0000002100000073 +:104AE0002200000024000000270000002C0000002D +:104AF0002C0000002F000000370000003D000000E7 +:104B000042000000440000004B0000005200000082 +:104B1000560000005B00000062000000680000001A +:104B20006D000000710000007E00000083000000A6 +:104B300086000000880000008F000000990000003F +:104B40009F000000A8000000AA000000AE000000C6 +:104B5000B0000000B4000000BB000000C000000076 +:104B6000C6000000C8000000CC000000D300000018 +:104B7000D5000000DE000000E1000000E4000000BD +:104B8000E9000000F1000000F7000000FD00000057 +:104B90000001000006010000080100000E010000F5 +:104BA00012010000150100001B010000200100009F +:104BB000260100002D010000330100003801000033 +:104BC0003B0100003F0100004501000049010000D9 +:104BD0004C01000052010000540100005601000089 +:104BE0005C01000061010000670100006A01000033 +:104BF0006E010000700100007601000083010000DA +:104C0000890100009001000093010000960100005E +:104C10009C010000A4010000A9010000AC010000FB +:104C2000B1010000B9010000BA010000C00100009C +:104C3000C8010000CE010000D4010000D501000031 +:104C4000DD010000DF010000E5010000EA010000D5 +:104C5000EF010000F5010000FC010000010200006E +:104C6000060200000C0200001402000017020000FF +:104C70001A0200001E0200002202000028020000AA +:104C80003102000033020000370200003B02000046 +:104C90003E02000040020000450200004802000001 +:104CA0004C020000500200005102000055020000BA +:104CB000570200005F02000064020000670200006B +:104CC0006B02000072020000790200008002000006 +:104CD000860200008A0200008D020000930200009C +:104CE000990200009E020000A1020000A60200003E +:104CF000AD020000B3020000B9020000BF020000D4 +:104D0000C4020000C8020000CD020000CF02000073 +:104D1000D2020000D5020000DC020000E002000028 +:104D2000E2020000E6020000EB020000F1020000D7 +:104D3000F5020000FB020000FF020000010300007A +:104D400001030000090300000C0300001003000031 +:104D5000160300001D030000270300002A030000C3 +:104D60002D0300002F030000310300003603000074 +:104D70003D0300003E030000430300004C0300001D +:104D80005003000053030000560300005E030000C0 +:104D900060030000690300006C0300007103000061 +:104DA00074030000780300007F0300008303000009 +:104DB00085030000880300008C03000090030000BE +:104DC000970300009F030000A3030000A903000055 +:104DD000AD030000B0030000B4030000B603000000 +:104DE000BB030000C0030000C3030000CA030000AF +:104DF000CF030000D3030000D7030000D903000055 +:104E0000E0030000E1030000E6030000E903000006 +:104E1000F0030000F4030000F6030000FA030000B2 +:104E2000FF030000060400000C0400001004000052 +:104E3000150400001C0400002204000025040000EA +:104E40002A0400002D0400002F0400003504000097 +:104E5000380400003C0400003F040000420400004D +:104E600044040000470400004C0400004E0400000D +:104E7000560400005D040000620400006A040000A3 +:104E80006D04000072040000760400007804000045 +:104E90007A040000810400008604000088040000F9 +:104EA0008F04000094040000980400009B0400009C +:104EB0009F040000A4040000A7040000A90400004F +:104EC000AC040000B4040000BA040000C0040000F8 +:104ED000C3040000C5040000C9040000CD040000A4 +:104EE000D2040000D4040000D7040000DC04000059 +:104EF000E0040000E5040000E8040000F004000005 +:104F0000F4040000F7040000F8040000FB040000B3 +:104F1000FE04000004050000070500000B0500006A +:104F20001005000014050000180500001A05000017 +:104F300021050000250500002A0500002E050000BF +:104F4000340500003805000040050000450500005C +:104F50004C050000530500005805000059050000ED +:104F60006205000065050000690500006C05000091 +:104F700073050000770500007F050000860500002E +:104F80008E05000091050000990500009B050000BA +:104F90009E0500009F050000A5050000A805000073 +:104FA000AA050000AD050000B0050000BE05000028 +:104FB000C0050000C3050000C9050000CF050000C2 +:104FC000D3050000D6050000D9050000DA05000071 +:104FD000DF050000E3050000E9050000ED05000025 +:104FE000F4050000F9050000FE05000006060000BB +:104FF0000B0600000E0600000E0600001006000062 +:105000001106000014060000170600001B06000031 +:1050100023060000290600002C06000031060000CF +:10502000360600003A0600003E060000400600007A +:10503000420600004A0600004F0600005406000029 +:105040005C060000620600006506000071060000B4 +:1050500074060000780600007E060000800600004E +:10506000860600008A0600008E06000097060000F3 +:10507000A1060000A8060000AD060000B30600006F +:10508000B8060000BD060000C0060000C80600000B +:10509000CC060000D3060000D6060000DA060000A9 +:1050A000E0060000E3060000E5060000ED06000053 +:1050B000F5060000F7060000FC06000003070000EC +:1050C0000A07000012070000170700001C07000075 +:1050D00020070000250700002C0700002F07000014 +:1050E0003307000037070000390700003E070000C3 +:1050F0004307000047070000510700005807000061 +:105100005A07000063070000670700006B070000F4 +:1051100070070000750700007A0700007F07000095 +:1051200083070000870700008C070000920700003B +:10513000970700009D070000A2070000A8070000D5 +:10514000AD070000B0070000B6070000BC07000074 +:10515000BF070000C6070000C8070000CB0700001B +:10516000D2070000DB070000E1070000E8070000AD +:10517000EC070000F3070000F5070000000800003E +:10518000070800000F0800001308000015080000C1 +:105190001E08000021080000250800002608000065 +:1051A0002A08000031080000350800003B08000014 +:1051B0003E080000400800004408000047080000C6 +:1051C0004A08000051080000580800005F0800006D +:1051D000620800006C080000720800007B080000F4 +:1051E0007F080000830800008A0800008D08000086 +:1051F00092080000960800009E080000A308000026 +:10520000A7080000AE080000B4080000BD080000B8 +:10521000C1080000C5080000D0080000D308000045 +:10522000DD080000E0080000E3080000E6080000D8 +:10523000E7080000E9080000EF080000F40800009B +:10524000F908000000090000070900000C0900002F +:105250000F09000012090000170900001D090000D5 +:105260002409000027090000290900002E09000078 +:10527000360900003D0900003D090000400900001A +:10528000450900004B090000540900005A090000BC +:105290005F090000000000000000000062FA3841D1 +:1052A00000000000C8283A41000000006069014188 +:1052B0000000000027903141000000009584394132 +:1052C000000000000A4A4541000000002115364157 +:1052D00000000000B0CF194100000000403ADE405D +:1052E000000000001E712F4100000000945F344157 +:1052F0000000000000000000000000002C792241A6 +:10530000000000801662414100000000C0352A41C3 +:105310000000000078F50D4100000000C4042D419C +:105320000000000068842541000000001805344199 +:10533000000000007C8B304100000000F6093C4179 +:105340000000000052563241000000002402424199 +:10535000000000002CB83641000000006400254128 +:1053600000000000DD14444100000000E49A3641D2 +:1053700000000000EC2A24410000000054251541E3 +:10538000000000004AFF2D4100000000175F35417A +:105390000000000069AE304100000000DACA45415B +:1053A000000000007E74304100000000E2643041E3 +:1053B00000000000B8AF21410000000050C83B4190 +:1053C00000000080842144410000000059A03F41BA +:1053D000000000007EE226410000000058FD24414C +:1053E0000000000010391D4100000000129E3641EF +:1053F00000000000156C324100000000FB513541F7 +:1054000000000000F83D28410000000012982E41E5 +:1054100000000000E63339410000000082652F41A2 +:10542000000000005E27324100000000ED16374109 +:1054300000000000EC89324100000000568926413E +:10544000000000005657234100000000026B32416B +:105450000000000032C7244100000000E4712B412D +:10546000000000000F604141000000002E9827411D +:10547000000000007F503E4100000000A0AF2B4123 +:105480000000000048B52B4100000000CB7B3741F5 +:105490000000000014D72F410000000004CE24417A +:1054A0000000000008D80A410000000032523541D7 +:1054B0000000008004AA404100000000B27437419F +:1054C00000000000E0471041000000007A2E21415A +:1054D0000000000045E43B410000000008E03041CE +:1054E000000000002C72414100000000DA152B4141 +:1054F0000000000064F2144100000000F0290D419A +:1055000000000000399C39410000008021D6434151 +:1055100000000000787B194100000000DFAA37413D +:1055200000000000825C284100000000FC5518418A +:1055300000000000B1623F4100000000BAC73341E3 +:105540000000000058FE2B410000000030420741DF +:10555000000000003CEB2A410000000003333E4104 +:1055600000000000A0B7E84000000000F2FC2F415E +:10557000000000009B063E41000000004F2C3D4112 +:1055800000000000D9ED3C4100000000C0CBD64037 +:1055900000000000DE48444100000000A0721141FC +:1055A00000000000D2572F410000000032C72D41FB +:1055B000000000802EFC424100000000C469294127 +:1055C00000000000C4C2294100000000100E354157 +:1055D0000000000021403B410000008073CB4241AD +:1055E00000000000BCE027410000000084FB2D41CA +:1055F00000000000B899224100000000968D25416E +:1056000000000000D73B3E410000000036673C41EF +:1056100000000080B560404100000000C0870E41DE +:1056200000000000CCCB314100000000AEC233418D +:1056300000000000F8240741000000002E192A4154 +:10564000000000002CB12E410000000074972D4195 +:10565000000000006296254100000000F220214178 +:1056600000000000001EF54000000000E2E82541B7 +:105670000000000070DEF7400000000006E53C413D +:1056800000000000BAC72741000000007C3A1A4120 +:1056900000000000C04EF840000000008D6F3C414B +:1056A00000000000044D41410000000014FE2C41A8 +:1056B0000000000038D327410000000000BD214158 +:1056C000000000000801184100000080A849404186 +:1056D000000000001CFE324100000000BBE93C411C +:1056E00000000000C81E2D41000000007EF535417D +:1056F00000000000F0C92741000000005744364177 +:1057000000000000B2E62A4100000080DDCC4041EC +:1057100000000000E915364100000000651133412A +:1057200000000000E059274100000000D0CC1D41DE +:10573000000000000E8C2941000000004BDE3241C9 +:1057400000000080956741410000000092733E41D7 +:1057500000000000C02DD94000000000084C20418E +:1057600000000000B3AD3641000000005B5B334138 +:105770000000000026B62A410000000024B926419E +:10578000000000001F85354100000000901C2741EB +:1057900000000000000000000000000043563D41F2 +:1057A00000000000485B184100000000A2BE364126 +:1057B00000000000C7833641000000006539384111 +:1057C00000000000B3DF39410000000084AB23413A +:1057D00000000000CC5B20410000000080610B4114 +:1057E00000000000A04619410000000015F63E41EF +:1057F0000000008088FC4D41000000002009174196 +:10580000000000000229304100000000E1E93D41B4 +:105810000000000057F7354100000000B481164138 +:10582000000000005C161C410000000063EA4241D9 +:105830000000000040AFF94000000000B3C3354154 +:1058400000000000C2D0234100000000D1BD404153 +:105850000000000070052C4100000000994838410C +:1058600000000000090241410000000060851A416B +:1058700000000000B0E3244100000000ECCC2E4109 +:105880000000000050360B4100000000C4542241CB +:105890000000000036E12E4100000000DA2934410A +:1058A000000000003E84294100000080B60643410C +:1058B00000000000E21A364100000000745E33412F +:1058C0000000000081E9334100000000A00FF84013 +:1058D00000000000017E424100000000B5F53741A4 +:1058E00000000000E8751241000000808E6845410C +:1058F00000000000346837410000000013563641B4 +:1059000000000000538E304100000000D089FD40AF +:105910000000000079F7394100000000E0EDFA4096 +:10592000000000007AA32C4100000000AD1B3241B2 +:1059300000000000C734414100000000A0FF1941F1 +:1059400000000000DCF716410000000048D61441BA +:1059500000000000D53130410000000083E63E41E8 +:105960000000000078E01F41000000009844224140 +:1059700000000000F08A2E4100000080703241419A +:105980000000000003583C4100000000E4241541E1 +:1059900000000000A386344100000000C2CC20417A +:1059A000000000001817334100000000D0CC2C414B +:1059B00000000000ACCC24410000000088F720412A +:1059C000000000008CCA274100000000504C12412A +:1059D00000000000830F36410000000064111C41EC +:1059E0000000000058A3274100000000A0DF1D4177 +:1059F00000000080865E424100000000F707384149 +:105A000000000000F4E0384100000000C51A3D41EC +:105A1000000000004AF02041000000009E073D41C8 +:105A200000000000FFE2314100000000D8660141A3 +:105A300000000000A0361B410000000097FF344129 +:105A400000000000055132410000000004FE134137 +:105A50000000000072A037410000000047E2304122 +:105A600000000000941E2B4100000000200FE440C5 +:105A700000000000560033410000000054CE2941D0 +:105A80000000000057CD324100000000C4A51741BE +:105A900000000000AC841A4100000000235F324186 +:105AA00000000000C5573441000000001485394152 +:105AB0000000000026542141000000000040C640C4 +:105AC000000000000C4223410000000062D333417B +:105AD00000000000F0F525410000000072CB2541D8 +:105AE000000000001C1C16410000000061F633415C +:105AF00000000000AE33204100000000E84D1841D6 +:105B0000000000008A052B41000000006BE34341C8 +:105B10000000000072AA344100000000A0C71A4132 +:105B20000000000080CB0741000000003EC125417D +:105B30000000000048D52E4100000000072241412E +:105B400000000000A4F3164100000000B4C22A4186 +:105B500000000000CCAF39410000000030252D418D +:105B600000000000EF41304100000000D43A2C4119 +:105B700000000000816C3A41000000000F953141A7 +:105B80000000000029F33F410000000039A332412A +:105B9000000000007C35234100000000185B3F41FD +:105BA00000000080B82A444100000000472E344124 +:105BB0000000000040C536410000000022253C41A5 +:105BC000000000008E803B410000000000388B4048 +:105BD000000000009C99344100000000DC852D414C +:105BE000000000002219274100000000D487214155 +:105BF00000000000F8C5334100000000AAB53B4199 +:105C000000000000068945410000008090CB404123 +:105C100000000000EED2444100000000A4CC22416C +:105C20000000000005B0414100000000B44E1441E6 +:105C30000000000004AE11410000000040E1F74008 +:105C4000000000008BB53C4100000000689D2E4123 +:105C500000000000847025410000000088FB18410E +:105C600000000000FCAF234100000080FDD04B414C +:105C700000000000A01626410000000058B51E419B +:105C8000000000004C8D384100000000AD22394179 +:105C9000000000005AED2141000000003675264149 +:105CA00000000000705724410000000080B6DA4078 +:105CB00000000000E4E42F4100000000FC4918410E +:105CC00000000000729630410000000070E9314190 +:105CD000000000000ADF384100000000F55B34419D +:105CE00000000000B4503C410000000005CC4541DC +:105CF00000000000047734410000000020911441AE +:105D000000000000000000000000000014D21F414D +:105D100000000000C0EFE940000000000CEA2A414A +:105D20000000000028E9024100000000ECC62C4100 +:105D30000000000084E2324100000000C80C29414C +:105D400000000000FEAF214100000000BDEC354125 +:105D5000000000002EE63E4100000000845C23416C +:105D600000000000C04D29410000000064311241D4 +:105D70000000000020120941000000004EC138411F +:105D8000000000006BDE31410000000086E4294184 +:105D900000000080B8704241000000005CC33E413A +:105DA00000000000B8D517410000000029C444419C +:105DB0000000000044F5154100000000B8DC12416D +:105DC0000000000092323041000000000821124122 +:105DD00000000000170434410000000064A21241DA +:105DE0000000000042172A4100000000BC0E3B41A9 +:105DF00000000080294444410000000074582B41F9 +:105E000000000000685030410000000015B237412A +:105E100000000000FDB1354100000000A8E81A4173 +:105E200000000000D8730A410000000050403941D2 +:105E300000000000A4D71F4100000000FCA328417F +:105E400000000000EAF5324100000000D04A344171 +:105E50000000000088CE124100000000FE1020412A +:105E6000000000004048DB40000000008622364170 +:105E700000000000E3BF38410000000064632841D7 +:105E800000000000F107354100000000DE39434109 +:105E9000000000007688314100000000C2B22141BC +:105EA0000000000099193C410000000087EA3C41D5 +:105EB00000000000A4CC2E410000000096543D419B +:105EC000000000008B9B434100000000800119414D +:105ED00000000000FC011B4100000000B0EF104179 +:105EE000000000002AE52D41000000009F3E3541E2 +:105EF00000000000C63D2F4100000000B2B63C414A +:105F0000000000805F8F4241000000001487414183 +:105F100000000000E68D20410000000024E0344134 +:105F200000000000306C29410000000038AE2F4115 +:105F300000000000D0A7264100000000AD883741D6 +:105F400000000000D503414100000000350F33413F +:105F50000000000068FA2A4100000000AB9F3341B6 +:105F60000000000047D2304100000000C13239413A +:105F700000000000C6473B41000000002AE8344111 +:105F8000000000002BDC444100000080E864464132 +:105F900000000000F44F1B4100000000B67C2641C9 +:105FA000000000004C4C2941000000001E9B3741BE +:105FB000000000004C602741000000003DC9354151 +:105FC00000000000002F0F4100000000B8760041E3 +:105FD000000000006A603841000000003E9440412B +:105FE00000000000D61D324100000000CE0A4241F0 +:105FF00000000000899E32410000000071DC3A413F +:10600000000000008054F24000000080B05C454178 +:10601000000000006ECD34410000000050E8414116 +:10602000000000005C9E1041000000004074E04051 +:1060300000000000753032410000000094E7144178 +:1060400000000000F0BB15410000000010AC004152 +:1060500000000000B8F4394100000000AEE9404102 +:1060600000000000F672344100000000B6453C41DB +:1060700000000000FCB9214100000000C8DD18410B +:1060800000000000FA623C4100000000487E084128 +:1060900000000000F61F2D4100000000CA292D411C +:1060A00000000000950B4141000000009AA23E4113 +:1060B0000000000086B9234100000080D5B14441B2 +:1060C00000000000EC363341000000004511424161 +:1060D000000000005FA8374100000000C7B6314152 +:1060E000000000007C252E41000000006AD82341FA +:1060F00000000000986D2941000000004078164122 +:10610000000000004D803E410000000054743A4100 +:1061100000000000900530410000000003333041D2 +:10612000000000004977314100000000AD3A3341E2 +:1061300000000000C6F829410000000028A13541F8 +:10614000000000005391454100000000162A304134 +:1061500000000000D7393741000000008EBC2F41FD +:1061600000000000BA7A254100000000FC952F4194 +:1061700000000000400CD34000000000C8D20941DC +:10618000000000006D4B36410000000083E6324104 +:1061900000000000A29435410000000099913141B7 +:1061A00000000080598C4041000000003CCD30418F +:1061B000000000005210314100000000007714413F +:1061C000000000003AEC3641000000000373354146 +:1061D0000000000099E43A4100000000442F2041F3 +:1061E00000000000E00A0E41000000009C931D41E9 +:1061F00000000000A882404100000000AFA238412A +:106200000000000000000000000000001C143641E7 +:1062100000000000B48F214100000000C12D3F416B +:106220000000000023643F41000000001CA427413F +:1062300000000000DC8A30410000000000088740B8 +:1062400000000000003880400000000000D08040C6 +:106250000000000000607E400000000000688140F7 +:106260000000000000003F40000000000058844093 +:106270000000000000405940000000000060734032 +:106280000000000000C88640000000000088864032 +:106290000000000000806440000000000008824010 +:1062A0000000000000B079400000000000005A40EB +:1062B0000000000000D88B400000000000E08E408D +:1062C00000000000002077400000000000A088408F +:1062D0000000000000108C40000000000000824020 +:1062E00000000000001085400000000000001C407D +:1062F00000000000000024400000000000C05640E4 +:106300000000000000A06F400000000000002240DC +:106310000000000000004B400000000000405A4018 +:1063200000000000000042400000000000F888402B +:10633000000000000080674000000000005884401A +:1063400000000000000057400000000000F08740FF +:106350000000000000A07840000000000000204085 +:106360000000000000B889400000000000406E40BE +:106370000000000000E074400000000000F88340CE +:106380000000000000E07C400000000000C05B4016 +:106390000000000000788A400000000000B88C4037 +:1063A00000000000004885400000000000807840A8 +:1063B000000000000088844000000000006076407B +:1063C00000000000006069400000000000507C40B8 +:1063D0000000000000088C400000000000288E40F3 +:1063E0000000000000C073400000000000B88740BB +:1063F0000000000000F08B400000000000E88B402F +:106400000000000000004640000000000038874007 +:1064100000000000000087400000000000508E4097 +:106420000000000000907D400000000000A06C40D3 +:106430000000000000005E400000000000507E40B0 +:106440000000000000C065400000000000507940DE +:1064500000000000001080400000000000C08E40DE +:106460000000000000006940000000000098864025 +:106470000000000000188B40000000000030704059 +:106480000000000000288F400000000000E067408E +:1064900000000000004075400000000000C05240B5 +:1064A0000000000000D88740000000000018824073 +:1064B0000000000000006B4000000000004063404E +:1064C0000000000000B07440000000000020754093 +:1064D00000000000000067400000000000908840BD +:1064E0000000000000004C400000000000606D4013 +:1064F0000000000000808B40000000000050894038 +:1065000000000000000081400000000000508040BA +:1065100000000000006076400000000000606B405A +:106520000000000000B081400000000000C0834077 +:106530000000000000607A400000000000E083409E +:106540000000000000C08740000000000088844078 +:106550000000000000405D4000000000004061407D +:106560000000000000806C400000000000606440FB +:1065700000000000000075400000000000E08140C5 +:1065800000000000009086400000000000607B409A +:1065900000000000008071400000000000406D40DD +:1065A0000000000000607C400000000000388E40C9 +:1065B00000000000008062400000000000507440B5 +:1065C0000000000000C061400000000000B08840F2 +:1065D00000000000000008400000000000107F40A4 +:1065E00000000000001088400000000000408D40C6 +:1065F00000000000004059400000000000C085403D +:106600000000000000005B400000000000E06F4060 +:1066100000000000008061400000000000007440A5 +:106620000000000000003D4000000000000042406B +:106630000000000000806C400000000000407D4031 +:1066400000000000000038400000000000E066404C +:106650000000000000608A40000000000008804048 +:106660000000000000C08A40000000000080594087 +:106670000000000000002240000000000070804088 +:1066800000000000000049400000000000405240AF +:106690000000000000E076400000000000B88240EA +:1066A0000000000000C06E400000000000B0844008 +:1066B0000000000000907D40000000000058844071 +:1066C0000000000000C081400000000000F8814090 +:1066D0000000000000608E400000000000007640D6 +:1066E00000000000005075400000000000088C40D1 +:1066F0000000000000002E4000000000004052405A +:106700000000000000E0874000000000000088401A +:106710000000000000788B400000000000B08B40BB +:106720000000000000508C40000000000070864017 +:1067300000000000006883400000000000888040E6 +:106740000000000000A07140000000000030754013 +:106750000000000000A06440000000000020614034 +:106760000000000000388F400000000000E06A4098 +:1067700000000000008040400000000000F883405E +:106780000000000000388F400000000000508C40E6 +:106790000000000000406A400000000000004F4080 +:1067A00000000000007884400000000000208F40BE +:1067B00000000000001885400000000000408140FB +:1067C0000000000000D0744000000000000066409F +:1067D0000000000000A07A400000000000D88B40BC +:1067E0000000000000F083400000000000D881405D +:1067F0000000000000588640000000000000324009 +:1068000000000000002086400000000000D8884002 +:106810000000000000003A400000000000003F407F +:106820000000000000406F40000000000000324007 +:106830000000000000A88D400000000000E066405D +:106840000000000000408E400000000000A07840E2 +:1068500000000000002082400000000000F087409F +:10686000000000000070854000000000004064400F +:106870000000000000C060400000000000206740F1 +:106880000000000000788D400000000000B88C403F +:1068900000000000000882400000000000D8804096 +:1068A000000000000080664000000000007087408B +:1068B0000000000000D0714000000000007882401D +:1068C0000000000000888B400000000000D07740EE +:1068D0000000000000805D400000000000A08A4031 +:1068E0000000000000C08540000000000048834018 +:1068F0000000000000688D400000000000F88740A4 +:106900000000000000808240000000000050844031 +:1069100000000000008052400000000000088E408F +:106920000000000000888B400000000000D88B4071 +:106930000000000000C051400000000000488C40F2 +:106940000000000000F881400000000000B082401C +:1069500000000000005880400000000000D07D4092 +:1069600000000000008881400000000000A08D4071 +:106970000000000000D087400000000000D08140EF +:106980000000000000288840000000000040624035 +:106990000000000000F08B40000000000060694033 +:1069A00000000000001083400000000000707D40E7 +:1069B0000000000000E884400000000000A06740E4 +:1069C0000000000000907D40000000000050844066 +:1069D0000000000000F0824000000000001078403D +:1069E00000000000000072400000000000807640BF +:1069F00000000000004084400000000000C05C4037 +:106A00000000000000208A4000000000006061409B +:106A100000000000009080400000000000006F4077 +:106A20000000000000B074400000000000E0714071 +:106A30000000000000888A400000000000608940DB +:106A400000000000004076400000000000A08B40E5 +:106A500000000000008040400000000000804C402A +:106A600000000000006062400000000000907240E2 +:106A70000000000000D089400000000000A08C4011 +:106A8000000000000028824000000000000000001C +:106A90000000000000B08C400000000000405440A6 +:106AA00000000000000028400000000000E08D40D1 +:106AB00000000000005073400000000000308140E2 +:106AC0000000000000002E400000000000606E404A +:106AD00000000000006072400000000000E88B40F1 +:106AE00000000000002072400000000000606C40C8 +:106AF0000000000000D089400000000000588A40DB +:106B00000000000000A8884000000000004087400E +:106B10000000000000E07E400000000000308740E0 +:106B200000000000001884400000000000805F406A +:106B30000000000000E88A400000000000C07B4028 +:106B40000000000000A07F400000000000107A401C +:106B50000000000000E06A400000000000C06E403D +:106B600000000000000022400000000000806E4095 +:106B70000000000000B0714000000000009882405A +:106B80000000000000D883400000000000E07E40CC +:106B90000000000000208340000000000008874043 +:106BA00000000000007073400000000000008C40F6 +:106BB0000000000000108A400000000000C06B4090 +:106BC0000000000000405E4000000000009882408D +:106BD00000000000004085400000000000507340AD +:106BE0000000000000C886400000000000707040F7 +:106BF0000000000000C0614000000000002089404B +:106C0000000000000060704000000000007075404F +:106C10000000000000606640000000000048844062 +:106C20000000000000805D40000000000080764011 +:106C30000000000000C080400000000000E8844028 +:106C40000000000000D07A40000000000070764094 +:106C50000000000000D88440000000000090734055 +:106C60000000000000F884400000000000A07F4009 +:106C70000000000000B88D400000000000D07C4003 +:106C800000000000003072400000000000707640FC +:106C90000000000000A06D400000000000B8864029 +:106CA0000000000000E061400000000000408E4055 +:106CB000000000000008884000000000004058402C +:106CC0000000000000508A40000000000080874063 +:106CD00000000000001889400000000000B0724071 +:106CE0000000000000406340000000000000784009 +:106CF00000000000000037400000000000B88140A4 +:106D00000000000000307540000000000050884086 +:106D10000000000000C07E400000000000005D4058 +:106D200000000000000074400000000000388E40A9 +:106D30000000000000708040000000000080504013 +:106D40000000000000C887400000000000608C4088 +:106D500000000000009075400000000000A88B407B +:106D600000000000002068400000000000F08B40A0 +:106D700000000000001881400000000000005F409B +:106D800000000000000032400000000000C06F4022 +:106D90000000000000988D400000000000006840E6 +:106DA0000000000000C05B400000000000007840D0 +:106DB00000000000008069400000000000207540D5 +:106DC0000000000000F081400000000000688740E3 +:106DD000000000000080894000000000006886403C +:106DE0000000000000907C40000000000010764091 +:106DF00000000000006064400000000000988E4029 +:106E00000000000000008C400000000000388540B9 +:106E100000000000006075400000000000208D4070 +:106E200000000000000059400000000000006B401E +:106E30000000000000988040000000000000744046 +:106E40000000000000805E400000000000908240D2 +:106E50000000000000E08D400000000000F08340D2 +:106E60000000000000207C400000000000E8864098 +:106E70000000000000188440000000000050724034 +:106E80000000000000D88B400000000000C88340D4 +:106E90000000000000288C400000000000788940BD +:106EA000000000000020854000000000003073401A +:106EB00000000000000062400000000000E071409F +:106EC0000000000000805A400000000000C0664042 +:106ED0000000000000E882400000000000F881404F +:106EE00000000000002060400000000000607840CA +:106EF0000000000000806A400000000000588A4046 +:106F00000000000000206C400000000000008140F4 +:106F10000000000000407D4000000000006069406B +:106F20000000000000E06B400000000000F08A401C +:106F30000000000000D8884000000000000042402F +:106F40000000000000C075400000000000388740CD +:106F500000000000008080400000000000408C40E5 +:106F60000000000000805F40000000000010894029 +:106F700000000000008054400000000000806340DA +:106F800000000000001077400000000000D08E409C +:106F90000000000000C074400000000000888E4027 +:106FA0000000000000D081400000000000507A4046 +:106FB00000000000009075400000000000107940C3 +:106FC0000000000000007E400000000000804F40F4 +:106FD00000000000003080400000000000D8844025 +:106FE0000000000000003F400000000000688C40EE +:106FF00000000000004081400000000000108F40B1 +:107000000000000000A073400000000000D88B408A +:1070100000000000001084400000000000707B4071 +:1070200000000000008060400000000000F084408C +:107030000000000000207940000000000070704057 +:107040000000000000806140000000000028814036 +:107050000000000000488C40000000000040864016 +:107060000000000000B072400000000000D08E4020 +:10707000000000000080554000000000002886400D +:1070800000000000009088400000000000804740A1 +:1070900000000000003885400000000000008B4028 +:1070A0000000000000002A40000000000080614055 +:1070B00000000000009884400000000000F07D40C7 +:1070C0000000000000308A400000000000E08E4018 +:1070D0000000000000708A400000000000B88A40F4 +:1070E0000000000000F076400000000000388D40F5 +:1070F00000000000008884400000000000507C4038 +:1071000000000000000079400000000000988A4064 +:1071100000000000006887400000000000407F4041 +:10712000000000000008854000000000005880407A +:1071300000000000002086400000000000C08140E8 +:10714000000000000000534000000000000032403A +:1071500000000000006882400000000000888540B8 +:1071600000000000006068400000000000807F40D8 +:1071700000000000002079400000000000188A4054 +:10718000000000000008864000000000006067402A +:1071900000000000003883400000000000207E4016 +:1071A0000000000000006440000000000008834070 +:1071B0000000000000C887400000000000588C401C +:1071C00000000000006072400000000000D080401D +:1071D0000000000000088140DC00000050010000B9 +:1071E0005B010000A60100002C00000080000000F0 +:1071F00091000000EA000000030100003B010000D4 +:1072000040000000670000007A010000D501000086 +:10721000DD010000210000006C0000007E00000085 +:10722000AD000000C4000000480100004B01000058 +:1072300034000000370000006D0000003201000043 +:10724000510100009C010000BB0100006C01000026 +:10725000C8010000E7010000F00100002B01000060 +:10726000170000000301000043000000C4000000FC +:1072700099010000330000004D0000009300000061 +:107280002D0100006A0100001A0000006A000000E1 +:10729000EF00000027000000510000007600000011 +:1072A000BB00000022010000530100008B01000020 +:1072B000BB010000240000002D000000C3000000FE +:1072C000D2000000F40000001101000016000000D0 +:1072D0005C000000D7000000320100006C010000DB +:1072E00042000000D8000000050000001900000066 +:1072F00091000000AB0000004A0100009101000075 +:107300009C0100004B00000094000000B40000004D +:10731000CC000000E7000000B0010000BB0100004D +:1073200064000000E800000090010000D3010000AC +:10733000720000001C0100002C0100004A01000046 +:10734000720100003100000087000000B70000005B +:10735000BF0000000C010000A7010000EB010000CD +:10736000680000001801000089010000BA01000057 +:10737000BB010000CD01000088000000AF0000004C +:10738000CD000000D8000000D20100000500000080 +:1073900055000000AD010000EB01000000000000FE +:1073A000240000004E0000005F000000A10000006B +:1073B000A9000000DB000000E7000000FA00000068 +:1073C000500100005501000068010000EF010000BD +:1073D0003B00000086000000D50000003F010000D7 +:1073E000990100005D00000068000000000100003D +:1073F000DF000000E2000000080000007300000051 +:10740000B9000000D8000000400100008F0100001A +:10741000CD0100000E0000003C00000057000000FD +:107420005D00000086000000AA0000008701000047 +:107430008F010000A0010000C70100000300000050 +:10744000560000006300000030010000D70100007A +:10745000E801000000000000660000008400000059 +:10746000B30000002F0100003801000039010000C6 +:10747000400100008501000017010000D901000053 +:10748000B40000002F01000036010000460100009A +:107490000700000088000000EF000000000100006D +:1074A000140100005E010000150000002000000033 +:1074B0004F000000D10000000E0100003A01000062 +:1074C000CF0100005700000086000000BC00000053 +:1074D000D4000000A20100000D0000004C000000DC +:1074E0007C000000B3000000990100009B01000037 +:1074F000130000002B010000CF0000000A01000073 +:1075000049010000D40100001D0000002D00000012 +:10751000090100003601000080010000AD010000FB +:10752000E0010000BF0000005B0100003D00000022 +:1075300042000000DB000000E40000001501000034 +:1075400021010000340100009201000099010000B7 +:10755000850000007E010000E8010000120000002C +:1075600036010000B7010000CE000000010100005C +:107570002201000064010000BB0100002B0000009C +:107580008C000000B8000000BB00000016010000E5 +:107590001E01000055010000620100007E00000095 +:1075A000C9000000D0000000EF000000C60100008C +:1075B000E50100002800000057000000DE00000088 +:1075C0006F0100008E010000C90100002B010000C6 +:1075D000A7010000B80100002C00000073000000AB +:1075E0007E00000093000000230100009B010000CA +:1075F00040000000E0010000010000004300000026 +:10760000500000005B000000A3000000EF0000003D +:107610002A0000005E01000069010000AB010000CB +:1076200043000000A90000000E0100000F00000050 +:107630002C000000DF0000007A010000C4010000FF +:10764000D70100001F0000004300000012010000ED +:1076500024010000C90100003A0000006B00000096 +:10766000B7000000DE0000005B0100009701000091 +:107670001B0000004100000054000000D00000008A +:107680001101000081010000B90100002B00000081 +:1076900061000000E200000031010000680100000C +:1076A000EC0100001A000000580000001C0100005E +:1076B00071010000DC010000150000003000000036 +:1076C000DE010000E6000000380100009901000022 +:1076D000DB0100002A000000350000004E00000021 +:1076E000030100000C010000E9010000030000009C +:1076F000250000003C0000008D0000008400000018 +:10770000960000009D00000048010000610100009B +:1077100065010000A6010000D2010000E0010000A8 +:107720009A000000C7010000270100009B01000033 +:10773000F900000040010000670100007D01000029 +:1077400091010000C3010000D2000000E70000002A +:10775000FD000000430100004A0100000500000098 +:10776000370000004F000000690000002A010000FF +:10777000F0010000A0000000E5000000A9010000E9 +:107780001E0000003F0000007300000081000000A8 +:1077900018010000CA0100001F00000044000000A2 +:1077A000FE00000068010000A4010000EA010000E2 +:1077B00002000000AC000000B4000000D100000096 +:1077C000DF000000E4000000090100006501000086 +:1077D000710100007C010000BB010000C501000038 +:1077E000E3010000240000006E00000081000000A2 +:1077F00087000000F60000003101000024000000B6 +:10780000D3000000EF000000FE000000880100002F +:1078100093010000EE010000FF0000004C01000099 +:10782000E50100006E00000068010000F2010000A8 +:10783000000000000B000000250000006A000000AE +:10784000B6000000340100000E0000002900000016 +:107850004B000000DA0000000001000003010000FE +:1078600026010000CE010000DA000000E700000061 +:10787000F800000088010000AB01000015000000C6 +:10788000EA000000960100001D000000AB000000AF +:10789000F8000000FF00000060010000220000006E +:1078A000390000007A000000AD000000FE0000007A +:1078B000340100007C010000890100001601000075 +:1078C0001C0000003E0000008100000028010000B4 +:1078D000C7010000DA0100000F0000002F000000C7 +:1078E00080000000850000002C01000086010000DF +:1078F000CB010000D4010000230000003000000094 +:10790000460000001F0100002B0100003E010000A6 +:10791000160000006C000000AB000000C300000077 +:10792000CC010000F0010000BC00000015000000C8 +:107930001F0000005600000052010000A4010000DA +:10794000A6010000E6010000EF010000F5000000C4 +:10795000BD01000016000000550000005C000000A2 +:10796000510100007D0100008301000007000000BC +:1079700009000000E7000000A9010000AE010000BE +:1079800038000000C400000058010000620100003F +:10799000790100005B0000006B000000B1000000F6 +:1079A000DD0000002701000041010000050000008B +:1079B00023000000300000005A00000022010000F7 +:1079C000B0010000BF0100003300000042010000D0 +:1079D000440100006C010000E20100003B000000D7 +:1079E0002F0100004E010000BC010000C201000098 +:1079F000370000007D0000003F0100007C01000016 +:107A00008A010000AF010000520000007000000079 +:107A10009D000000BB0000000501000046010000C1 +:107A20005B0100006E010000120000007C000000FD +:107A3000EA01000008000000DA0000002301000055 +:107A4000230000008400000042010000A9010000A2 +:107A50009300000096000000F2000000D801000032 +:107A6000BA000000C3000000C9000000D8000000F8 +:107A7000FB000000CA010000210000002E000000F1 +:107A800099000000290100002A01000037010000D0 +:107A9000420100008F010000AA0100004100000027 +:107AA000E600000009000000200000004500000082 +:107AB00087010000460000007E00000093000000E7 +:107AC000DE00000056000000050100009C010000DF +:107AD000B7000000DA0100006E0000007D00000029 +:107AE000AC000000B9000000920100006B01000032 +:107AF00093010000CE0100002800000012010000E8 +:107B000082010000C10100004D010000540100008D +:107B1000A5010000A80100009A0100001E0000005D +:107B2000560000000601000076010000170000006A +:107B300048000000090000002F000000560000006F +:107B40005D0000001E0100003001000092010000F5 +:107B5000A4010000760000000901000014010000EB +:107B60001B010000C70100001400000024000000F9 +:107B7000870100007300000089000000310100004F +:107B80004E0100000A000000BC000000ED000000F3 +:107B90000F01000089010000A6010000F1010000B2 +:107BA000150000001E000000630000006D000000D2 +:107BB000AF000000C6000000D30100000300000079 +:107BC000130000003F00000052000000730000009E +:107BD0009500000009010000180000009700000057 +:107BE000D9000000FC00000033010000A5010000E6 +:107BF000920000004D0100007D010000B201000074 +:107C00002000000037010000690100005D00000055 +:107C10008E000000980000008B010000A60100000B +:107C2000D30100005B000000B5000000F40000007C +:107C3000260100004C0100008601000061000000E8 +:107C4000B10000002801000043010000AC01000069 +:107C50001B000000D70000003E01000042000000B1 +:107C6000C1000000D80000004D010000A00100008C +:107C70007F000000AB000000D1000000DB0000002E +:107C80004D01000079010000910100000900000091 +:107C90006700000081000000870000002201000052 +:107CA000B6010000210000006B000000DD000000B4 +:107CB0005F01000088010000960100005B000000E9 +:107CC000AA000000B600000039010000A301000076 +:107CD000D10100001C0000004A000000AF000000BD +:107CE000E70000000E0100001E000000220000005E +:107CF000F0000000FD0000003F00000085000000D3 +:107D00005101000071010000A0010000FF0000000F +:107D1000BD010000910000005E010000A001000014 +:107D2000B7000000010100009E0100008800000073 +:107D3000A4000000FF0000002C010000B2010000C0 +:107D4000B6010000BF0100003C0000009D000000E3 +:107D50008C0100009C010000190000005701000088 +:107D60002A0000006900000069010000D80100003D +:107D7000220000004A00000088000000B40100005A +:107D8000DA0100005E000000B1000000CD0000003C +:107D9000E1000000E30000003F01000017000000C8 +:107DA000F50000007F010000AA0100001F00000094 +:107DB000BE000000D7000000E40000004401000005 +:107DC000A0010000070000000C00000004010000FA +:107DD000D60100000D000000220100000900000093 +:107DE0002C00000075000000A6000000BA00000092 +:107DF000040100006901000074010000E0000000BF +:107E0000F1000000710100000100000057000000B7 +:107E100029010000C90100001D00000062000000EF +:107E2000760000009E000000E20000001E0100003D +:107E30004A000000A7000000F10000004801000017 +:107E4000720100009C010000C6010000010000005A +:107E500025000000B7000000E4000000370100002A +:107E600050010000590100009D010000AE0100001A +:107E7000BE010000D30000004701000077010000B0 +:107E800054000000C3000000DB000000AE01000051 +:107E9000BF010000C30000008001000032000000AC +:107EA0005D000000E00000005D010000DF01000057 +:107EB00006000000380000006900000076000000A5 +:107EC000AA0000001E010000D4010000D201000041 +:107ED00099000000E0000000F000000090010000A8 +:107EE000BC0100003F0000009E000000C400000034 +:107EF000ED0000001C0100002801000095010000B9 +:107F000097010000E00100001A00000038000000A6 +:107F1000E9000000AC010000720100008E010000C9 +:107F2000EB0100009F000000B8000000E801000025 +:107F300083000000860000008A0000001401000099 +:107F40005801000074010000AC010000EE010000C7 +:107F50000D010000E6010000880000008B00000019 +:107F6000A3000000C9000000FD0000001001000097 +:107F7000760100008E010000E701000033010000DF +:107F800077010000E7010000A80000001C010000CC +:107F90005A010000A4010000C30100008600000097 +:107FA000AF0000001C010000580000006900000044 +:107FB0001E010000C001000060000000750000000C +:107FC000B1000000F00000001D01000045010000AC +:107FD000C701000033000000E40000002A01000097 +:107FE000A501000096000000B1010000B6000000ED +:107FF0006A0100009A0100003A000000060100003A +:1080000060010000B70100002B00000046000000E6 +:10801000860000001601000098000000D200000059 +:108020001B010000360100004D0100004E01000060 +:10803000D5010000140000002A00000045000000E7 +:10804000DE0000001B010000400100004A010000AA +:1080500078010000DA0000001D0100009D01000011 +:10806000B201000005000000AF000000B4000000F5 +:1080700009010000B8010000DA010000F100000071 +:10808000FF00000079010000DF0100003301000063 +:108090003D010000C901000000000000E8000000F0 +:1080A00056010000F001000019000000240100004A +:1080B00069000000A9000000D00000002C010000B1 +:1080C000B70100001500000041000000780000002A +:1080D000F900000011010000BF0000002E010000A7 +:1080E00078010000380000005C000000F000000093 +:1080F0007301000087010000BE010000E9010000DB +:1081000054000000F100000042010000D90100000D +:10811000DB010000100000005C000000D600000041 +:10812000EF000000320000009E000000AF000000E1 +:10813000C4010000330000006801000019000000C5 +:10814000270000005A0000006300000085000000C6 +:1081500098010000EB010000AE0100000C000000DF +:10816000400000004C000000BD000000E1010000E4 +:108170008000000032010000BA0100004D00000044 +:108180001401000051010000640100007C010000A6 +:1081900085010000BD0100003D0000009E000000C0 +:1081A000C2000000BD0100002F0100008E01000090 +:1081B0008F000000A3000000C7000000570100006E +:1081C000EC000000F6000000540100007E010000F9 +:1081D000BE010000260000009A000000C40000005C +:1081E000CA0000000A0100006F01000071010000D8 +:1081F0007500000088000000FA0000001001000077 +:108200009D010000E101000000000000C700000027 +:10821000CD0000009C01000027000000B10000001C +:10822000C600000071010000C00100005B000000FA +:1082300099000000A7000000BB000000CB00000078 +:108240000901000048010000DA000000DE00000023 +:10825000050100009D010000A3010000BF01000016 +:1082600080000000E4000000F201000000000000B7 +:1082700094000000C6000000E6010000F1010000CB +:10828000320000008E010000C90100001B01000047 +:10829000CC0100002B00000074000000F60000007C +:1082A000F800000031010000BF0100006A0000007A +:1082B000830000003D0100007E000000C7000000B8 +:1082C000EB00000025010000220000006C0000000F +:1082D000E2000000030000006C00000081000000CC +:1082E0009B000000AE000000A2000000EF000000B4 +:1082F000EA0100007C000000D60000005A010000E6 +:10830000D5010000F1010000120100003C01000055 +:108310007A0000009000000095000000220100009B +:10832000510100006A01000073010000D201000049 +:1083300043000000F8000000140100004C010000A0 +:108340006801000083010000950100001F0000008B +:1083500038000000410000005A000000C800000082 +:1083600040000000B0000000CB000000D70000007B +:10837000EC000000F0000000510100007F0100004F +:10838000C60000009B010000AF01000024000000B7 +:108390005A0000005E01000064010000F1010000CD +:1083A000210000007800000082000000B7000000FB +:1083B00099010000ED01000008000000230000000A +:1083C000FE00000015010000410100005501000001 +:1083D00084010000A7010000F10100008F000000EF +:1083E000A300000087010000BE010000EC010000B6 +:1083F000090000000E0100002A0000003400000007 +:10840000740000008C010000C8010000DE010000C3 +:10841000EB0100008F000000940000001E0100002E +:108420004801000080010000230000007F000000E0 +:108430005F010000C4010000070000002E000000E2 +:10844000030100002300000022010000720100006F +:10845000A4010000680000000201000016010000F5 +:1084600054010000E1010000A90000000801000023 +:1084700070010000E8000000D701000001000000CA +:1084800087000000D300000098000000AE0000004C +:10849000B1000000BB000000240100009B010000AF +:1084A000AE010000CD010000040000005C000000EF +:1084B000CD000000ED000000F70000004D010000BD +:1084C000350000005B000000210100004E010000AB +:1084D000A9010000EB01000076000000AF000000E1 +:1084E000EA010000240000006901000021000000F2 +:1084F000BA000000D5000000D70100000300000012 +:1085000049000000A300000099010000EB000000FA +:10851000800100009A010000D6010000E001000087 +:108520003B000000D5010000610000005801000080 +:1085300074010000210000006B000000B300000087 +:108540008D010000D601000023010000540100004D +:108550006901000081010000190000006F000000A7 +:108560009E0000004B010000D70100001C0000002D +:1085700057000000330100004500000069000000C2 +:108580009F0000001C0100003701000038010000BE +:1085900067010000D101000011000000850000000B +:1085A0002E010000440100001201000045010000FE +:1085B000A5010000FC0000000400000060000000B5 +:1085C00099010000CE000000F6000000200100002C +:1085D0003A0000005100000096000000E200000098 +:1085E000E80000007C010000A8000000E500000099 +:1085F0006F010000D2000000F800000095010000AB +:10860000A4010000A3000000D4000000400100000D +:1086100054010000C001000044000000DE00000022 +:10862000B7010000EE010000460000005E000000FF +:1086300074000000D70100001C0100007C01000054 +:108640000D0000001A000000780000001401000076 +:108650008A010000B0010000EC01000019010000D7 +:10866000290100002C010000630100001D00000032 +:10867000200000009C000000B6000000D3010000B4 +:10868000CB000000EA000000A4010000AD010000E2 +:10869000D2000000E0000000F8000000110100001E +:1086A000460100005D01000025000000CA00000036 +:1086B000790100007C0100002B0000003700000061 +:1086C0008B0000008D000000AA000000E800000000 +:1086D00024010000420100004D000000D60000000F +:1086E000F100000017010000460100001200000028 +:1086F0002E000000370000006B000000E3000000C7 +:10870000EE000000FA00000092000000A800000047 +:1087100092010000BC010000CB010000E701000055 +:10872000EF010000060000007900000000010000D9 +:108730002F010000C9010000CD010000450000002C +:108740007A000000C1000000CC000000F000000032 +:108750005B0100009C010000A2010000DC010000A0 +:10876000A9000000BB0000009001000061000000B3 +:10877000220100006C0100008A0100009900000045 +:10878000B8000000BB000000090000000D00000060 +:10879000410000005900000078000000DD000000EA +:1087A000E40100000600000078000000B4000000B2 +:1087B000A30100000F000000560000006800000048 +:1087C000C10000001401000044010000B5010000D8 +:1087D000BB0100003E00000061000000C10000007D +:1087E000200100003B0100003E0100009E0100004E +:1087F00018000000AA000000BD000000C400000036 +:10880000D8000000E40000000E010000A4010000F8 +:10881000D600000097010000D20100000200000015 +:108820004D0000007F000000BC000000E6000000DA +:1088300036010000D0010000D5010000500000000A +:10884000CC0000008A000000AB000000FC0000002B +:10885000A8010000000000005F0000006B010000A4 +:108860008B01000098010000AE01000060000000D4 +:108870008F0000002101000061000000B70000002F +:10888000550100008F010000CC01000054000000E1 +:10889000F3000000F20100001C0000004100000095 +:1088A0004D000000540000008B0000009300000009 +:1088B000AB000000D6000000000100005C010000D9 +:1088C00098010000BC010000C1010000C9010000C6 +:1088D000780000005601000026000000D9000000CA +:1088E000D101000008000000D40000000C010000CD +:1088F0005A010000E6010000EB0100003100000019 +:108900004D0000005A000000DE00000023010000BE +:108910007F0100008200000095010000AF0100000F +:10892000D90100004E000000220100005F0100009C +:10893000BD00000030010000F20100005001000005 +:108940000A000000DB0000000101000092010000AD +:10895000B50100004100000045000000A800000033 +:10896000C600000041000000F1000000F20000001D +:10897000220100006801000092010000FE000000DA +:10898000000100008E01000097010000420000007D +:1089900061000000A4000000DE0000003C010000B7 +:1089A00086010000AD010000180000005100000029 +:1089B00085000000CF0000003901000043000000E6 +:1089C0006C000000CC0000002F010000EE01000050 +:1089D0002B000000C2000000C60000001D010000C6 +:1089E000260100005B010000640100008A01000014 +:1089F000530000005C00000093000000A70000008E +:108A00008201000014000000E1000000900100005D +:108A1000AC0000006B01000063000000400000009B +:108A20007501000079010000060000003F00000011 +:108A3000CE0000006B00000095000000E600000082 +:108A4000AC01000029000000380000004D000000CB +:108A50004E000000370100009D010000DC01000015 +:108A6000DD010000510000008200000091000000C4 +:108A7000A7000000F7000000A0010000380000007F +:108A800021010000530100001B0000002F00000026 +:108A9000840000003501000088010000240000006F +:108AA000370000004900000060010000660100007E +:108AB000190000003A00000060010000AE01000053 +:108AC0003A000000AB000000DD0000004E01000095 +:108AD0007B010000C501000020010000DF01000053 +:108AE0006D000000860000008F000000AE00000056 +:108AF0001D01000039010000D4010000EF01000059 +:108B000002010000210100004E0100007E01000072 +:108B1000E30100002E0000008800000008010000B2 +:108B2000A1010000CA010000240000003B00000079 +:108B300058000000AD000000360100003C010000BC +:108B400062010000D70100002E000000E1000000DB +:108B5000060100004F0100006C010000D40100007C +:108B600079000000550100005D01000007000000D1 +:108B70000E000000150000006300000087000000E8 +:108B80008E000000CF000000D100000010010000A6 +:108B900026010000C8010000EB010000D000000029 +:108BA000F8000000410100002B00000081000000DF +:108BB000BC0000006A010000BF00000017010000B7 +:108BC0002601000033010000440100006A0100009A +:108BD0008C000000A601000038000000A900000081 +:108BE000BC000000E800000048010000C1010000D6 +:108BF0000E000000860000007101000077010000F7 +:108C000030000000A4000000E000000004010000AB +:108C1000140000005D0000009D000000DB0000006B +:108C200006010000120100006A010000D9010000E5 +:108C3000E4010000670000007D0000008C000000DF +:108C4000AE000000AF000000BF000000E200000026 +:108C50006601000098010000C2010000140000003D +:108C60005E00000021010000360100003701000015 +:108C7000C0010000DE01000024000000AF00000081 +:108C8000B900000051010000870100003000000021 +:108C900048000000B8000000E90000005901000091 +:108CA000E5010000E7000000F200000053010000B1 +:108CB000C3010000C8010000980000009E000000F1 +:108CC0008E010000CA010000E801000097000000CA +:108CD000F00000006501000001000000210000001C +:108CE0008B0000008D000000B1000000DF000000DC +:108CF00021010000DF0100005A00000073000000A5 +:108D0000CD010000E0010000180000001A00000082 +:108D10002C00000048000000D500000069010000A0 +:108D2000BD0100002200000077000000D601000015 +:108D3000130000003800000095010000D001000081 +:108D40002F00000070000000A3000000EB000000F6 +:108D500056010000CE01000067000000C0000000C6 +:108D6000E100000017000000CA01000044000000FC +:108D70000E0100006B010000A6010000AB01000025 +:108D8000C1010000C2010000DD0100006900000017 +:108D9000830000008B000000C6000000D40000002B +:108DA0009D010000AD010000B30100002B00000098 +:108DB000160100001300000071000000C000000058 +:108DC000470100005B0100002C0000004300000090 +:108DD000A0000000E1000000070100004A010000BF +:108DE000580100009E000000120100002F01000049 +:108DF0003D0100005E0100007B01000099010000C0 +:108E00002100000035000000D90000001101000021 +:108E10003001000060010000CD010000EF01000002 +:108E200065000000A8000000720100008B01000036 +:108E3000CA0100009C0000002D0100003F0100005D +:108E4000440100005B010000490000007F000000B9 +:108E5000FD0000001001000080000000D4000000B0 +:108E6000ED000000010100005F0100004D00000066 +:108E70006A000000D80000000E0100007001000030 +:108E80007301000090010000DF000000630100009A +:108E9000800100001E0000000C01000033010000F2 +:108EA000700100004F0000002C0100003D01000097 +:108EB000470100000F000000780100001F000000C3 +:108EC00050000000A0000000CE000000E300000001 +:108ED00067000000E7000000B3010000E1010000AE +:108EE000F3010000B6000000BA000000BD00000061 +:108EF000BA010000070000003B0000004100000034 +:108F000075000000E10000002A01000030010000AF +:108F10006C010000C9010000E9010000BA00000076 +:108F2000C6000000090100003501000050010000EA +:108F300087010000C90100003A010000A201000001 +:108F40005100000085000000BA000000BE000000D3 +:108F5000E30000000201000015010000A301000071 +:108F6000EC01000052000000DE000000EF000000F5 +:108F70003B010000470000005C0000007A00000098 +:108F8000DC000000FC0000001001000037010000C0 +:108F900087010000B10100006100000089000000AD +:108FA000F40000000B010000AA01000022000000F4 +:108FB000CA000000EA000000AA010000AC010000A5 +:108FC000330000006D0000000B010000790100007B +:108FD0007E0100006B000000A6000000CB00000036 +:108FE00051010000000000007F000000F7000000B9 +:108FF00094010000400000005E00000075010000C8 +:10900000AE010000C00100001100000025000000BA +:1090100039000000660000006001000062010000ED +:1090200072000000AE000000C1000000F10000006E +:109030001C0100004A0000005E000000D500000096 +:10904000EE000000DB010000DC0100008C000000ED +:10905000F7000000180100002E0100004801000088 +:1090600031000000C5000000C9000000DE00000063 +:1090700018010000C9010000A7000000BD010000A8 +:10908000D1010000DE010000F30100001900000022 +:10909000D7000000B60100000800000081000000B9 +:1090A00099000000AB0000003C01000048010000F6 +:1090B0009E000000D70000002F01000048010000C2 +:1090C00061010000DF0100003E000000FB00000025 +:1090D0000F010000040000007700000006010000FE +:1090E0002F0100003701000095010000A3010000DE +:1090F00015010000CD010000EC000000F8000000A8 +:10910000BD0100000F0000006C000000E300000043 +:10911000350100006A0100007A010000A80100008A +:109120004E0000005E0000006D00000076000000B0 +:109130007C000000F7000000FD0000003B01000083 +:10914000DE0100000D0000009A000000AA000000EF +:109150004B0100006D0100008201000008010000C9 +:109160000C0100002C01000031010000AD010000E5 +:10917000CF010000F301000034000000690000008E +:1091800087000000B50000006F0000009C00000098 +:10919000B7000000E70000005E010000840100004D +:1091A000CD01000023010000680100005000000014 +:1091B0006A0000008A000000C5000000F200000004 +:1091C000FF000000040100007D0100009F0100007D +:1091D000BF010000F3010000290000000A010000A7 +:1091E00055010000870100009A010000C001000045 +:1091F000EF0100003A000000920000001E01000094 +:109200005F010000A3010000B4010000D0010000D4 +:10921000E3010000FB000000FC000000BC010000B6 +:10922000EC010000B8000000C80000003900000098 +:109230004B000000AA000000BA000000BB000000C4 +:10924000130100003A0100006C01000097010000CA +:10925000A2000000AD000000E8000000D300000004 +:1092600063010000BD010000C001000034010000E6 +:1092700062000000180100008D010000AF01000035 +:10928000700000007A0000009D000000D100000086 +:109290005201000084010000AD01000070000000D8 +:1092A000D50000005D010000D6010000450000006F +:1092B0004600000077000000DE000000FB00000018 +:1092C000C501000051000000AD000000E2010000F7 +:1092D00069000000930000000A000000E5000000A3 +:1092E000CE010000D301000062000000A5010000D3 +:1092F000DF010000CB000000F2010000F3010000DC +:109300005D000000820000008E0000000E010000E1 +:109310001601000050010000A301000049000000F8 +:10932000860000008E000000B1000000C0000000B8 +:109330004F010000EA0100002D0000008C00000039 +:109340008F000000C3000000120100001C0100009B +:1093500044010000380000005E000000AB00000087 +:109360001C00000087000000020100001501000041 +:109370001C0100004D01000072010000A501000069 +:10938000B0010000D10100001F0000002E0000000D +:10939000DE0000004B01000083010000B00100006E +:1093A0001200000038000000520000005F000000C2 +:1093B0000201000005010000640100007A010000C4 +:1093C000E40100003C0000001D0100002A01000033 +:1093D0005B01000000000000C80000003301000035 +:1093E000740100000200000059000000C9000000E4 +:1093F000230100002A0100007E010000C7010000D7 +:1094000079000000910000009B0000002F00000088 +:10941000E2000000EC0000008C0100008E01000062 +:1094200089000000370100007D010000AD0100004F +:109430002D0000006D0000008D000000AD00000058 +:10944000CF000000D0010000D7010000F3010000B0 +:10945000250000002D0000000C010000BF010000ED +:10946000F001000029000000A300000083010000BB +:10947000E40100001E000000300000005B0000005E +:109480009200000005010000390100009101000078 +:109490000B0000004E0000007A0000009000000069 +:1094A000C2010000F30100004B0000005200000068 +:1094B00083000000DA000000010100001D0100002F +:1094C000260100006A010000BA010000D50000007A +:1094D000FF00000023010000EC0100003F0000003D +:1094E000500000001A010000A2010000010000006D +:1094F0003C00000057000000660000006F00000004 +:10950000B400000010010000190100004401000037 +:109510007C010000CA010000B9000000D800000072 +:10952000DB0100000C0000003E0000006D000000A8 +:109530008F000000C3000000010100000F010000C7 +:1095400044010000810100009A010000E2000000D7 +:109550004A01000094010000360000009E00000057 +:1095600076010000DD000000400100005401000011 +:10957000560000005D000000EC0000005E000000EE +:109580009F000000EE000000F20000003E0100001D +:1095900064010000280000004B000000A80000004B +:1095A000D30000002601000020000000A4000000FD +:1095B000AE000000C6000000A50100000D00000084 +:1095C000660000003A0100007B010000A2010000DB +:1095D000B7010000E50100000600000035000000B2 +:1095E000680000007B000000D0000000B401000013 +:1095F000C40100003B0000008D000000CC00000012 +:1096000092010000F2010000860000004F010000FE +:10961000AD010000F000000087010000CD01000056 +:109620000E000000100000002E000000730100007A +:109630007801000025000000AC000000E3000000FD +:10964000570100008D010000B30100002700000059 +:1096500088000000CA00000006010000530100005D +:10966000BD010000DA0100009100000010010000BF +:1096700056010000790000007F0000000C0000008F +:109680007D0000009B000000BA000000EA0000001E +:109690004000000060000000610000006C0000005D +:1096A000D50000005E0100009A010000E501000005 +:1096B000230000003800000039000000A70000006F +:1096C000A90000008F010000DE0100003C00000046 +:1096D00067000000330100005C000000680000002B +:1096E00096000000D3000000040100000800000004 +:1096F0004000000049000000DE00000011010000F1 +:10970000A7010000B3000000B8000000BE00000088 +:10971000C1000000090100000F010000310100003C +:109720003E010000580100000E0000004B00000048 +:109730007C0000003D010000570100009401000082 +:10974000040000008D000000A7000000D40000000D +:10975000F0010000000000000000000000B08140A7 +:109760000000000000C07F400000000000908A4020 +:1097700000000000006088400000000000808D4074 +:109780000000000000B0824000000000002088407F +:109790000000000000808B400000000000E08740D7 +:1097A0000000000000808440000000000040614094 +:1097B0000000000000A887400000000000088D4065 +:1097C0000000000000406D40000000000000654007 +:1097D0000000000000A883400000000000F8834063 +:1097E0000000000000207B400000000000888A404C +:1097F0000000000000C888400000000000606940D0 +:1098000000000000005889400000000000406F4048 +:10981000000000000010884000000000002074409C +:109820000000000000B880400000000000D0894027 +:1098300000000000000883400000000000188C4079 +:109840000000000000F08C400000000000606A4052 +:1098500000000000009887400000000000208C40BD +:1098600000000000009885400000000000207840C3 +:109870000000000000A889400000000000607C405B +:109880000000000000B888400000000000888A4006 +:1098900000000000000070400000000000A88940A7 +:1098A0000000000000003D4000000000003885403E +:1098B0000000000000808D400000000000804B4050 +:1098C00000000000008885400000000000507C403F +:1098D0000000000000B883400000000000F888404D +:1098E0000000000000B08A40000000000008814035 +:1098F00000000000004058400000000000107540CB +:1099000000000000002070400000000000B885400A +:109910000000000000D884400000000000288240C1 +:109920000000000000005A400000000000B07E402F +:1099300000000000002880400000000000C88740B0 +:1099400000000000001077400000000000C07340DD +:10995000000000000000454000000000008055406D +:109960000000000000007B400000000000D08D409F +:1099700000000000000087400000000000D074409C +:10998000000000000010744000000000000067406C +:109990000000000000C08C4000000000002070406B +:1099A0000000000000A88D400000000000E08240A0 +:1099B0000000000000588C40000000000080514072 +:1099C0000000000000507C400000000000E08840E3 +:1099D0000000000000805940000000000000084026 +:1099E0000000000000405A400000000000307740B6 +:1099F00000000000004078400000000000206340AC +:109A00000000000000608C40000000000000664084 +:109A10000000000000B881400000000000E0744039 +:109A20000000000000688E400000000000788C40BC +:109A30000000000000307440000000000048854035 +:109A40000000000000C07240000000000090704064 +:109A500000000000003886400000000000388B4005 +:109A60000000000000308B400000000000F07C404F +:109A70000000000000488E400000000000B8804058 +:109A800000000000008085400000000000407140A0 +:109A90000000000000608C400000000000007840E2 +:109AA0000000000000E08E40000000000000704058 +:109AB0000000000000007A4000000000002070401C +:109AC00000000000005880400000000000005440EA +:109AD0000000000000788C400000000000206E4074 +:109AE0000000000000E067400000000000B0794086 +:109AF0000000000000C05F400000000000F08B404C +:109B000000000000003070400000000000C08440F1 +:109B100000000000002060400000000000088340BA +:109B200000000000004062400000000000D88740B4 +:109B30000000000000405B40000000000010774083 +:109B40000000000000888B400000000000708B4087 +:109B50000000000000006C400000000000D88340BE +:109B60000000000000207F400000000000C07C409A +:109B70000000000000B076400000000000107E40B1 +:109B80000000000000C06B400000000000C88740DB +:109B90000000000000907E40000000000088874028 +:109BA0000000000000004F40000000000050704026 +:109BB00000000000005078400000000000F07540F8 +:109BC0000000000000A067400000000000F07340AB +:109BD0000000000000688140000000000000144008 +:109BE0000000000000507E4000000000003089406E +:109BF0000000000000C05D400000000000E0764072 +:109C000000000000004055400000000000C05E4021 +:109C10000000000000B08C400000000000805040B8 +:109C20000000000000A06940000000000090884093 +:109C300000000000009073400000000000588140C8 +:109C400000000000000036400000000000C0874017 +:109C50000000000000408C400000000000E06F4069 +:109C60000000000000808C400000000000B08D402B +:109C700000000000002085400000000000607540EA +:109C800000000000000087400000000000606F40FE +:109C900000000000004065400000000000D88C403B +:109CA0000000000000B08840000000000080734009 +:109CB000000000000060864000000000004084407A +:109CC0000000000000804C400000000000208540A3 +:109CD0000000000000608E400000000000406F4067 +:109CE0000000000000E06A400000000000C0884062 +:109CF0000000000000F088400000000000988C4048 +:109D00000000000000804E400000000000D07740BE +:109D10000000000000088C4000000000007085403A +:109D20000000000000C0814000000000009078406A +:109D30000000000000488E400000000000E88B405A +:109D40000000000000A0694000000000008886407C +:109D5000000000000060854000000000000043405B +:109D60000000000000D88440000000000000864091 +:109D700000000000007087400000000000C0764036 +:109D80000000000000C05E400000000000C0634012 +:109D90000000000000E08B40000000000020734045 +:109DA0000000000000907940000000000080674043 +:109DB0000000000000A0784000000000005081403A +:109DC0000000000000D082400000000000804D40F4 +:109DD00000000000000022400000000000D88E407B +:109DE0000000000000088C400000000000C074402B +:109DF0000000000000488B40000000000010884078 +:109E00000000000000C083400000000000207B40F4 +:109E10000000000000B082400000000000B8824056 +:109E20000000000000E069400000000000606A409F +:109E30000000000000A07940000000000000884001 +:109E400000000000002086400000000000E07C4090 +:109E500000000000007885400000000000C0724053 +:109E60000000000000008B400000000000388A4025 +:109E70000000000000E066400000000000003540E7 +:109E80000000000000A071400000000000F08E40C3 +:109E900000000000001082400000000000C08D4063 +:109EA00000000000000045400000000000A06240EB +:109EB0000000000000606D40000000000048884085 +:109EC00000000000008063400000000000C08140EE +:109ED0000000000000007940000000000078884089 +:109EE0000000000000C06D400000000000607840ED +:109EF0000000000000005B400000000000607A40AD +:109F000000000000008078400000000000E0794080 +:109F1000000000000020754000000000006080404C +:109F20000000000000B880400000000000E88B4006 +:109F30000000000000006440000000000060644079 +:109F40000000000000F088400000000000208A406F +:109F50000000000000B084400000000000A0664047 +:109F60000000000000908D4000000000003088409C +:109F70000000000000405C400000000000607B40EA +:109F800000000000008886400000000000B8834008 +:109F90000000000000088240000000000018874018 +:109FA0000000000000004F400000000000008D4055 +:109FB00000000000005880400000000000007640D3 +:109FC0000000000000D882400000000000708E40B9 +:109FD0000000000000307240000000000080474098 +:109FE0000000000000588B4000000000004070405E +:109FF00000000000009087400000000000002A40A0 +:10A000000000000000D08B400000000000E88E40FF +:10A010000000000000005A40000000000000364030 +:10A0200000000000000042400000000000188940CD +:10A0300000000000008043400000000000206E404F +:10A040000000000000C0574000000000006882408F +:10A050000000000000D882400000000000C06C40FA +:10A060000000000000707D400000000000908E4065 +:10A0700000000000004883400000000000D882403B +:10A080000000000000608440000000000000354037 +:10A09000000000000098874000000000006072404F +:10A0A0000000000000888740000000000008834096 +:10A0B0000000000000E07E4000000000004057402B +:10A0C00000000000003078400000000000606E409A +:10A0D00000000000000060400000000000488840D0 +:10A0E0000000000000E083400000000000F072402B +:10A0F0000000000000C884400000000000C8874045 +:10A10000000000000030764000000000001883408E +:10A110000000000000E8824000000000009883403A +:10A120000000000000108A40000000000040834052 +:10A130000000000000804D400000000000405B4037 +:10A140000000000000C070400000000000F08340EC +:10A150000000000000405D4000000000002075404D +:10A1600000000000004056400000000000C05740C2 +:10A1700000000000000010400000000000005040FF +:10A180000000000000F881400000000000C07240A4 +:10A1900000000000007888400000000000507C4073 +:10A1A0000000000000708B400000000000588D404F +:10A1B0000000000000C08E4000000000002075403C +:10A1C0000000000000807540000000000040614079 +:10A1D00000000000003072400000000000807B4062 +:10A1E0000000000000608740000000000050714047 +:10A1F0000000000000A083400000000000F07F404D +:10A200000000000000F08B40000000000000514002 +:10A210000000000000C079400000000000F08D4008 +:10A220000000000000E080400000000000008540C9 +:10A230000000000000388D400000000000C07340A6 +:10A2400000000000003880400000000000001040C6 +:10A2500000000000002883400000000000507F4004 +:10A260000000000000608C400000000000C08E4034 +:10A270000000000000A089400000000000807A403B +:10A280000000000000B08640000000000080824016 +:10A2900000000000007080400000000000288B409B +:10A2A0000000000000A074400000000000307A4070 +:10A2B0000000000000003C400000000000E0804082 +:10A2C0000000000000E061400000000000707140EC +:10A2D0000000000000C05340000000000040864025 +:10A2E0000000000000C08740000000000020734014 +:10A2F00000000000003089400000000000B07F40F6 +:10A300000000000000388940000000000060864026 +:10A310000000000000C886400000000000606440AB +:10A320000000000000E062400000000000007040FB +:10A330000000000000488B400000000000805640F4 +:10A340000000000000607740000000000040564020 +:10A350000000000000805E4000000000009889407E +:10A360000000000000A06F400000000000088E40C8 +:10A370000000000000004F400000000000006A40A4 +:10A380000000000000F089400000000000D076408E +:10A390000000000000E06C400000000000488C401D +:10A3A0000000000000088E400000000000407540E2 +:10A3B0000000000000008D400000000000788C408C +:10A3C0000000000000C054400000000000805D401C +:10A3D0000000000000008B4000000000006073409F +:10A3E0000000000000D885400000000000406140EF +:10A3F0000000000000A06B400000000000008D4045 +:10A40000000000000040604000000000003888406C +:10A410000000000000907A400000000000788840B2 +:10A4200000000000003880400000000000A08A40CA +:10A4300000000000006067400000000000D8884075 +:10A4400000000000002088400000000000988340C9 +:10A45000000000000028864000000000004054403A +:10A460000000000000807040000000000070764096 +:10A470000000000000A062400000000000A0854035 +:10A4800000000000004066400000000000E06E4058 +:10A4900000000000008049400000000000288B40C0 +:10A4A0000000000000003E400000000000988440D2 +:10A4B0000000000000C067400000000000E07E4097 +:10A4C00000000000000054400000000000988040A0 +:10A4D0000000000000988B400000000000688140F0 +:10A4E00000000000004065400000000000B8874008 +:10A4F0000000000000B074400000000000608240D6 +:10A500000000000000588D400000000000C88D4091 +:10A5100000000000007079400000000000507C4006 +:10A520000000000000E06B400000000000B88C401C +:10A5300000000000006062400000000000D0844085 +:10A540000000000000A0644000000000008069409E +:10A550000000000000E08C40000000000040664069 +:10A5600000000000009076400000000000F08740EE +:10A570000000000000707C400000000000006D4002 +:10A5800000000000008055400000000000406840CE +:10A590000000000000C080400000000000708D40FE +:10A5A0000000000000F88440000000000098824095 +:10A5B0000000000000407A400000000000F88040E9 +:10A5C0000000000000A07E400000000000D081409C +:10A5D00000000000001881400000000000107140E1 +:10A5E0000000000000107D40000000000040884096 +:10A5F0000000000000688A400000000000888740DA +:10A60000000000000078824000000000000036409A +:10A6100000000000000074400000000000C88140FD +:10A620000000000000208E400000000000E885408F +:10A630000000000000307E40000000000000594093 +:10A640000000000000A887400000000000108040CB +:10A650000000000000908A40000000000000494017 +:10A660000000000000307C400000000000088F4027 +:10A670000000000000C053400000000000C0534034 +:10A680000000000000B088400000000000A07940F9 +:10A6900000000000009079400000000000E07E40D3 +:10A6A0000000000000A06E400000000000888B4009 +:10A6B00000000000002085400000000000407E40B7 +:10A6C0000000000000A889400000000000E0664093 +:10A6D000000000000080464000000000007075404F +:10A6E00000000000000053400000000000707A40AD +:10A6F0000000000000B88A400000000000806740B1 +:10A7000000000000000030400000000000307640F3 +:10A710000000000000E063400000000000E06F4027 +:10A720000000000000088640000000000060624059 +:10A7300000000000000079400000000000288F4069 +:10A7400000000000008070400000000000F8894018 +:10A7500000000000002084400000000000607840FD +:10A760000000000000B078400000000000507E4073 +:10A770000000000000907C400000000000788B404A +:10A780000000000000E07D400000000000208C4040 +:10A7900000000000006067400000000000D8854015 +:10A7A0000000000000788140000000000048854063 +:10A7B0000000000000988D40000000000020614073 +:10A7C0000000000000E883400000000000C062407C +:10A7D0000000000000E085400000000000C8864046 +:10A7E0000000000000C064400000000000005E4067 +:10A7F00000000000005074400000000000488A4043 +:10A800000000000000E08D40000000000080524089 +:10A8100000000000000082400000000000A0804016 +:10A820000000000000C078400000000000A063406D +:10A8300000000000007074400000000000C882406A +:10A84000000000000018864000000000004885401D +:10A85000000000000068894000000000008882407D +:10A860000000000000407C400000000000804640E6 +:10A870000000000000408D400000000000207D40EE +:10A880000000000000108640000000000010814021 +:10A8900000000000009070400000000000088840A8 +:10A8A0000000000000C051400000000000F08A409D +:10A8B00000000000008042400000000000E08740EF +:10A8C0000000000000C05B400000000000407D4030 +:10A8D0000000000000608A400000000000A88540E1 +:10A8E00000000000002087400000000000006040E1 +:10A8F000000000000000334000000000001882400B +:10A900000000000000F08B400000000000008D40BF +:10A910000000000000006440000000000098884033 +:10A920000000000000607B400000000000708940D3 +:10A930000000000000207140000000000018854069 +:10A9400000000000000060400000000000307C407B +:10A9500000000000009083400000000000788B4061 +:10A960000000000000188D400000000000F08B4047 +:10A970000000000000804C400000000000A0664085 +:10A980000000000000388A400000000000405E40E7 +:10A990000000000000C086400000000000A07940D8 +:10A9A0000000000000C88840000000000040724025 +:10A9B0000000000000B081400000000000807D40E9 +:10A9C0000000000000E88B400000000000188240FA +:10A9D0000000000000D08E400000000000E0634056 +:10A9E00000000000004882400000000000004140DC +:10A9F0000000000000507E40000000000070714028 +:10AA00000000000000D083400000000000107640ED +:10AA100000000000009083400000000000807F40A4 +:10AA20000000000000F08140000000000000334002 +:10AA30000000000000004B400000000000907E403D +:10AA40000000000000E8894000000000000088408D +:10AA50000000000000C06E400000000000507A407E +:10AA60000000000000005D400000000000B07040E9 +:10AA700000000000000889400000000000B07240A3 +:10AA800000000000007071400000000000D078401D +:10AA90000000000000B074400000000000C07840DA +:10AAA00000000000000026400000000000005440AC +:10AAB000000000000050854000000000008087403A +:10AAC00000000000004059400000000000008A40E3 +:10AAD00000000000000885400000000000488040A1 +:10AAE00000000000000045400000000000988B407E +:10AAF0000000000000B884400000000000488C40C6 +:10AB00000000000000C071400000000000406B40E9 +:10AB10000000000000804D400000000000C08B409D +:10AB200000000000008055400000000000788340D5 +:10AB30000000000000708B400000000000405D40FD +:10AB40000000000000A063400000000000805140B1 +:10AB500000000000005073400000000000688B40BF +:10AB600000000000001889400000000000888040BC +:10AB70000000000000D08440000000000020714070 +:10AB800000000000000068400000000000D8844081 +:10AB900000000000007081400000000000508D4067 +:10ABA0000000000000F077400000000000F080404E +:10ABB0000000000000A06D40000000000090774001 +:10ABC0000000000000108540000000000078884070 +:10ABD0000000000000F083400000000000088340F7 +:10ABE0000000000000307A40000000000070764055 +:10ABF00000000000005073400000000000804A4048 +:10AC00000000000000405040000000000050714073 +:10AC100000000000007080400000000000A88A4092 +:10AC200000000000009884400000000000707040A8 +:10AC300000000000008071400000000000C074406F +:10AC40000000000000608D40000000000000754022 +:10AC500000000000006087400000000000288440E1 +:10AC60000000000000606C400000000000B07D406B +:10AC70000000000000888D400000000000E08C40D3 +:10AC80000000000000688A400000000000A06F4043 +:10AC90000000000000F088400000000000804840F4 +:10ACA0000000000000206E400000000000C8874047 +:10ACB0000000000000B077400000000000707A4003 +:10ACC00000000000004085400000000000288A408D +:10ACD0000000000000005D400000000000A0774080 +:10ACE0000000000000007A400000000000488140A1 +:10ACF00000000000001089400000000000388A4079 +:10AD000000000000003075400000000000807A4024 +:10AD100000000000000044400000000000405940D6 +:10AD200000000000004087400000000000308D401F +:10AD30000000000000C05D400000000000206B40EB +:10AD40000000000000E07D400000000000908A400C +:10AD50000000000000308F4000000000000880402C +:10AD600000000000000074400000000000308E4031 +:10AD70000000000000207340000000000030884008 +:10AD80000000000000A07B400000000000107A409E +:10AD9000000000000030844000000000006084409B +:10ADA0000000000000002E400000000000E883408A +:10ADB0000000000000E068400000000000688440DF +:10ADC00000000000002080400000000000C077402C +:10ADD0000000000000B88E400000000000907140AC +:10ADE00000000000008068400000000000688E4005 +:10ADF0000000000000E082400000000000A077405A +:10AE00000000000000C089400000000000288840C9 +:10AE10000000000000188A400000000000A08640EA +:10AE20000000000000207C40000000000010744082 +:10AE30000000000000E07B4000000000005088405F +:10AE40000000000000388D400000000000807240CB +:10AE500000000000008087400000000000003B4030 +:10AE60000000000000C089400000000000288D4064 +:10AE7000000000000020624000000000002086402A +:10AE800000000000009885400000000000107B409A +:10AE900000000000009883400000000000F07F40A8 +:10AEA00000000000005883400000000000F07940DE +:10AEB000000000000070704000000000004085406D +:10AEC0000000000000808B4000000000002069406E +:10AED0000000000000E085400000000000807B4092 +:10AEE00000000000001882400000000000088140BF +:10AEF0000000000000D07B400000000000307E40D9 +:10AF00000000000000307F400000000000C88D40BD +:10AF1000000000000030804000000000004053406E +:10AF20000000000000A06D400000000000A08E4066 +:10AF30000000000000D88C4000000000004889405C +:10AF40000000000000A080400000000000688B406E +:10AF50000000000000288E400000000000088B4028 +:10AF60000000000000A88240000000000028884087 +:10AF70000000000000A077400000000000206640B4 +:10AF800000000000004059400000000000188C4004 +:10AF90000000000000007C400000000000E07A405B +:10AFA0000000000000206B400000000000307940ED +:10AFB00000000000000035400000000000288A402A +:10AFC0000000000000A079400000000000907540E3 +:10AFD0000000000000F082400000000000507740B8 +:10AFE0000000000000606640000000000060734048 +:10AFF0000000000000D083400000000000F08B4003 +:10B0000000000000000080400000000000107240BE +:10B010000000000000908D400000000000606E40C5 +:10B020000000000000A886400000000000A07C4056 +:10B030000000000000408540000000000018824031 +:10B0400000000000000073400000000000E06840C5 +:10B05000000000000088864000000000000036402C +:10B060000000000000407C400000000000C8874055 +:10B070000000000000888D400000000000188140A2 +:10B080000000000000207A40000000000020614025 +:10B090000000000000206A400000000000708340B3 +:10B0A0000000000000C065400000000000407D403E +:10B0B0000000000000E06B400000000000688040DD +:10B0C00000000000000055400000000000607D40CE +:10B0D0000000000000A070400000000000608940F7 +:10B0E0000000000000B08D40000000000000324071 +:10B0F0000000000000B88E400000000000F0734027 +:10B100000000000000588A400000000000707A40F3 +:10B110000000000000F08A400000000000507D4068 +:10B120000000000000E88D400000000000B88C40E6 +:10B1300000000000003078400000000000208C403B +:10B140000000000000E0774000000000008881401F +:10B15000000000000010754000000000003886402C +:10B1600000000000000076400000000000C06940C0 +:10B1700000000000000887400000000000C0794087 +:10B1800000000000000044400000000000003140CA +:10B190000000000000988A400000000000C88940BC +:10B1A0000000000000708C400000000000388A4061 +:10B1B0000000000000E069400000000000788B40C3 +:10B1C000000000000060824000000000004053408A +:10B1D0000000000000188B400000000000E06F40FD +:10B1E0000000000000088240000000000000F03F66 +:10B1F00000000000000883400000000000907D4037 +:10B2000000000000000056400000000000206F40D9 +:10B210000000000000B07E4000000000008066409A +:10B2200000000000009082400000000000408B40C1 +:10B230000000000000308B400000000000808040D3 +:10B2400000000000000051400000000000003F40EE +:10B250000000000000006A400000000000B08A40CA +:10B260000000000000C067400000000000004040F7 +:10B2700000000000000069400000000000206C4059 +:10B2800000000000002074400000000000288B40F7 +:10B290000000000000907A400000000000004F40D5 +:10B2A00000000000006884400000000000B88C40EE +:10B2B00000000000004061400000000000C06E403F +:10B2C0000000000000507F400000000000188F4088 +:10B2D0000000000000A060400000000000A08A40C4 +:10B2E0000000000000388C400000000000B08540E5 +:10B2F0000000000000207E40000000000090894017 +:10B300000000000000A089400000000000D08C4038 +:10B310000000000000388A400000000000308B4030 +:10B3200000000000007078400000000000808B40AA +:10B330000000000000E07D400000000000D08240DE +:10B3400000000000003088400000000000E88E404F +:10B3500000000000006061400000000000907C40A0 +:10B360000000000000805C400000000000A0714070 +:10B370000000000000C083400000000000A06E40FC +:10B380000000000000407C400000000000D88E401B +:10B390000000000000C08C400000000000C06040C1 +:10B3A000000000000080574000000000009079403D +:10B3B0000000000000005F400000000000507840E6 +:10B3C00000000000000042400000000000207B4020 +:10B3D0000000000000A88B400000000000607E40DC +:10B3E0000000000000D070400000000000E07F403E +:10B3F0000000000000707E4000000000002084403B +:10B400000000000000805E4000000000002888402E +:10B410000000000000002A400000000000607440AE +:10B4200000000000001077400000000000806F4026 +:10B4300000000000007079400000000000B8824069 +:10B440000000000000C066400000000000F07340F3 +:10B450000000000000A06C4000000000006085407B +:10B460000000000000F88B400000000000C0874092 +:10B470000000000000F885400000000000B08E4091 +:10B480000000000000A0714000000000002884407F +:10B490000000000000188A400000000000F0794021 +:10B4A0000000000000C066400000000000C08840AE +:10B4B00000000000004885400000000000405C40A3 +:10B4C00000000000009884400000000000807340ED +:10B4D0000000000000308F400000000000D08D40D0 +:10B4E00000000000007884400000000000608240FE +:10B4F00000000000000008400000000000C0704094 +:10B500000000000000405F400000000000008A4092 +:10B510000000000000A075400000000000008A400C +:10B520000000000000608E400000000000807E40AF +:10B5300000000000002886400000000000B07E40AF +:10B540000000000000888C400000000000907B405C +:10B55000000000000060674000000000002066401E +:10B5600000000000008056400000000000804B40BA +:10B570000000000000F88D400000000000805F40E7 +:10B5800000000000004052400000000000907940A0 +:10B590000000000000F082400000000000E0864053 +:10B5A0000000000000C88E400000000000088A4033 +:10B5B0000000000000D077400000000000F0804054 +:10B5C000000000000078814000000000007077401B +:10B5D0000000000000E88940000000000000494031 +:10B5E0000000000000007B400000000000288140B7 +:10B5F0000000000000208F40000000000028804074 +:10B6000000000000000008400000000000E076405C +:10B61000000000000080404000000000000887405B +:10B620000000000000307C400000000000C05B40D3 +:10B630000000000000C077400000000000A076403D +:10B640000000000000A08B400000000000F07F40E0 +:10B650000000000000E06840000000000060704052 +:10B660000000000000388440000000000098804086 +:10B670000000000000688640000000000050894083 +:10B6800000000000001885400000000000908D4080 +:10B6900000000000003083400000000000907A406D +:10B6A0000000000000A071400000000000003F40CA +:10B6B0000000000000407B400000000000B8854012 +:10B6C0000000000000E885400000000000688440A1 +:10B6D0000000000000A883400000000000C071408E +:10B6E0000000000000405B400000000000A06D4032 +:10B6F0000000000000688C400000000000D0704096 +:10B700000000000000F07E400000000000207840B3 +:10B7100000000000007074400000000000608340E2 +:10B720000000000000988D4000000000007088407C +:10B730000000000000B884400000000000707D4060 +:10B7400000000000009089400000000000288040B8 +:10B7500000000000000088400000000000E07E4083 +:10B760000000000000206F400000000000788940C9 +:10B770000000000000A886400000000000B08940E2 +:10B7800000000000003083400000000000407440D2 +:10B790000000000000003640000000000018854056 +:10B7A0000000000000805D400000000000E06140FB +:10B7B0000000000000088D400000000000207F40D5 +:10B7C00000000000000077400000000000507D40B5 +:10B7D0000000000000207E400000000000208E409D +:10B7E00000000000005081400000000000388F4041 +:10B7F00000000000009070400000000000708540D4 +:10B8000000000000007088400000000000908740A9 +:10B810000000000000E06E400000000000405F40BB +:10B820000000000000008E40000000000040894041 +:10B830000000000000A088400000000000388440A4 +:10B8400000000000007883400000000000388340C2 +:10B850000000000000B886400000000000E88140C1 +:10B8600000000000006889400000000000006940FE +:10B8700000000000003077400000000000A06140A0 +:10B880000000000000E886400000000000207C402E +:10B8900000000000001880400000000000608D40A3 +:10B8A00000000000000073400000000000002A407B +:10B8B00000000000005080400000000000907E402A +:10B8C0000000000000A08D400000000000508C40EF +:10B8D00000000000008880400000000000407F4021 +:10B8E0000000000000805840000000000078864002 +:10B8F0000000000000C065400000000000D0704063 +:10B900000000000000406540000000000008834087 +:10B910000000000000A888400000000000206540F2 +:10B92000000000000028844000000000001080405B +:10B930000000000000607B400000000000C06F407D +:10B940000000000000C059400000000000508D4081 +:10B950000000000000207340000000000000834051 +:10B960000000000000F076400000000000C88B409E +:10B970000000000000D88440000000000068834000 +:10B9800000000000004071400000000000A0754071 +:10B9900000000000000087400000000000406A40F6 +:10B9A0000000000000002A40000000000040764037 +:10B9B0000000000000908C400000000000907740E4 +:10B9C0000000000000288340000000000050864076 +:10B9D0000000000000A88D4000000000002078401A +:10B9E00000000000001088400000000000108740A8 +:10B9F00000000000006073400000000000E077409D +:10BA00000000000000206240000000000060644070 +:10BA10000000000000607D40000000000000414088 +:10BA20000000000000B88A400000000000B88D400F +:10BA30000000000000008540000000000000684099 +:10BA40000000000000708D400000000000408D40AC +:10BA50000000000000D07A400000000000508C4040 +:10BA60000000000000A077400000000000E06340FC +:10BA70000000000000C884400000000000006A4090 +:10BA80000000000000E06B400000000000F8814072 +:10BA90000000000000888E400000000000488D403B +:10BAA000000000000040544000000000000038404A +:10BAB0000000000000407E400000000000688D4053 +:10BAC0000000000000006040000000000000814015 +:10BAD00000000000005889400000000000488C4031 +:10BAE0000000000000805B4000000000001886405D +:10BAF00000000000003089400000000000208F405E +:10BB00000000000000D07F400000000000B0714045 +:10BB10000000000000D07E400000000000708A405D +:10BB20000000000000207D40000000000040764042 +:10BB300000000000003889400000000000088F402D +:10BB400000000000004083400000000000B088407A +:10BB500000000000006064400000000000001C4085 +:10BB60000000000000188D400000000000A8844084 +:10BB700000000000001076400000000000307F4010 +:10BB800000000000004067400000000000507340CB +:10BB90000000000000C05A4000000000006081402A +:10BBA0000000000000005A400000000000F0854046 +:10BBB0000000000000804E400000000000188E4091 +:10BBC0000000000000E06F400000000000707140C5 +:10BBD0000000000000607C400000000000688D4014 +:10BBE00000000000008889400000000000F07B4059 +:10BBF00000000000009088400000000000A0884085 +:10BC000000000000004077400000000000B88C40B9 +:10BC10000000000000002C400000000000405C40DC +:10BC200000000000008044400000000000C0794097 +:10BC30000000000000408740000000000040774006 +:10BC40000000000000A0714000000000004084409F +:10BC50000000000000006F400000000000407E4037 +:10BC60000000000000F089400000000000005A4081 +:10BC700000000000003087400000000000907A4083 +:10BC800000000000001089400000000000006B4030 +:10BC900000000000008881400000000000C0594002 +:10BCA00000000000006888400000000000D08240D2 +:10BCB00000000000002069400000000000D0734038 +:10BCC00000000000008079400000000000D07C40AF +:10BCD0000000000000C056400000000000988540B1 +:10BCE00000000000000065400000000000908A4055 +:10BCF0000000000000388D4000000000006065403A +:10BD00000000000000088D400000000000207E4080 +:10BD10000000000000B088400000000000E88540FE +:10BD2000000000000040544000000000006081401E +:10BD30000000000000405540000000000060754019 +:10BD40000000000000F885400000000000C05840DE +:10BD50000000000000488D400000000000608140AD +:10BD60000000000000002C4000000000006069405E +:10BD70000000000000708E400000000000006940DC +:10BD80000000000000206240000000000040714000 +:10BD900000000000008079400000000000C0654005 +:10BDA0000000000000E881400000000000388840EA +:10BDB0000000000000E88B400000000000007C4014 +:10BDC00000000000000035400000000000507840F6 +:10BDD00000000000006889400000000000004F40A3 +:10BDE0000000000000C060400000000000788C40AF +:10BDF0000000000000C05D40000000000040614005 +:10BE000000000000002069400000000000006940C0 +:10BE10000000000000405A40000000000000000048 +:10BE20000000000000F08D400000000000707B402A +:10BE30000000000000D88340000000000098864009 +:10BE40000000000000108D400000000000907640CF +:10BE500000000000004887400000000000606F40C4 +:10BE60000000000000008340000000000060664009 +:10BE7000000000000000334000000000004065406A +:10BE800000000000005079400000000000D07C401D +:10BE900000000000001884400000000000288040DE +:10BEA0000000000000B077400000000000107E405D +:10BEB0000000000000188C400000000000008C40D2 +:10BEC0000000000000C0784000000000001885401D +:10BED0000000000000C080400000000000908E4084 +:10BEE00000000000000880400000000000B07C401E +:10BEF0000000000000607C40000000000000864060 +:10BF00000000000000E07840000000000000144045 +:10BF100000000000009088400000000000804640C3 +:10BF20000000000000588A4000000000001085401A +:10BF30000000000000B087400000000000B88C4006 +:10BF40000000000000406F400000000000788440C6 +:10BF50000000000000A08E400000000000A8884003 +:10BF60000000000000804B400000000000307D40D9 +:10BF70000000000000B07C400000000000C07140E4 +:10BF8000000000000000F03F0000000000B88D40FD +:10BF90000000000000F07B400000000000C8864068 +:10BFA0000000000000A08740000000000028824040 +:10BFB0000000000000008F400000000000088E40DC +:10BFC0000000000000408740000000000098804012 +:10BFD00000000000002065400000000000407E409E +:10BFE0000000000000A0754000000000001072403A +:10BFF00000000000000032400000000000E061404E +:10C0000000000000006884400000000000A06B40B9 +:10C010000000000000E884400000000000C88040EC +:10C020000000000000A881400000000000408140A6 +:10C030000000000000508B400000000000607F40C6 +:10C0400000000000000076400000000000A07C40DE +:10C050000000000000E066400000000000788E4014 +:10C060000000000000488040000000000000714017 +:10C0700000000000000075400000000000108D402E +:10C0800000000000002060400000000000308540FB +:10C090000000000000F084400000000000A889407B +:10C0A0000000000000A085400000000000F07C407F +:10C0B0000000000000E065400000000000F08D403E +:10C0C0000000000000805B4000000000009078400D +:10C0D0000000000000C05E400000000000C065409D +:10C0E0000000000000008840000000000080514077 +:10C0F0000000000000708D400000000000A06D40B6 +:10C1000000000000009888400000000000A0884067 +:10C110000000000000E07C400000000000707D4056 +:10C12000000000000000644000000000007080403B +:10C1300000000000001882400000000000188A4043 +:10C140000000000000C88B400000000000E08740B5 +:10C150000000000000708B400000000000A0804044 +:10C160000000000000E06240000000000060784035 +:10C170000000000000F88240000000000000714054 +:10C1800000000000008048400000000000C0644043 +:10C190000000000000F078400000000000B08D407A +:10C1A0000000000000B081400000000000108B4043 +:10C1B0000000000000E07B400000000000806740BD +:10C1C00000000000004081400000000000C08E40E0 +:10C1D0000000000000908040000000000038864011 +:10C1E0000000000000E880400000000000507640A1 +:10C1F0000000000000003E400000000000806A4097 +:10C20000000000000018854000000000007087401A +:10C2100000000000005087400000000000C05040B7 +:10C220000000000000804B4000000000000067405C +:10C230000000000000A088400000000000003B401B +:10C240000000000000A07340000000000050844087 +:10C25000000000000030794000000000000038407D +:10C2600000000000000052400000000000408B4031 +:10C27000000000000040704000000000009073408B +:10C280000000000000E07B400000000000606D4006 +:10C2900000000000003071400000000000607A40A3 +:10C2A0000000000000B886400000000000588840F0 +:10C2B00000000000000068400000000000E06A404C +:10C2C00000000000000057400000000000B0804067 +:10C2D000000000000058834000000000000068409B +:10C2E0000000000000607F4000000000006061402E +:10C2F0000000000000405F400000000000C88C40CB +:10C300000000000000C88D400000000000F07C40EC +:10C310000000000000688C400000000000088E4013 +:10C320000000000000E06740000000000090714045 +:10C3300000000000005883400000000000908E4084 +:10C340000000000000A06B400000000000488A4090 +:10C350000000000000E080400000000000F88D4078 +:10C360000000000000607A400000000000108340E0 +:10C3700000000000003074400000000000406440F5 +:10C380000000000000108440000000000088894088 +:10C390000000000000088E400000000000D885402A +:10C3A0000000000000D88D400000000000507540E3 +:10C3B0000000000000007E400000000000B0774058 +:10C3C0000000000000003C400000000000C062408F +:10C3D00000000000002078400000000000F07B40DA +:10C3E0000000000000388B400000000000B07E40DC +:10C3F0000000000000C083400000000000B887403B +:10C4000000000000008888400000000000D889403B +:10C4100000000000000049400000000000688B4060 +:10C4200000000000001888400000000000D07840A4 +:10C430000000000000C050400000000000D889400B +:10C440000000000000007C400000000000988340D5 +:10C4500000000000004055400000000000F089404E +:10C460000000000000308440000000000010764012 +:10C4700000000000000073400000000000F884404D +:10C480000000000000188E400000000000E087401F +:10C490000000000000004D4000000000000061406E +:10C4A0000000000000308A400000000000A8824028 +:10C4B0000000000000208D400000000000806A4065 +:10C4C000000000000070814000000000004071404A +:10C4D00000000000004052400000000000F08C40CE +:10C4E00000000000003079400000000000908D4006 +:10C4F0000000000000C070400000000000588840AC +:10C5000000000000007881400000000000B88B406F +:10C510000000000000A06A400000000000407B40D6 +:10C5200000000000008880400000000000088D40EE +:10C530000000000000707240000000000000534046 +:10C5400000000000008053400000000000B08E405A +:10C550000000000000405A400000000000808540BC +:10C560000000000000407A400000000000405A40F7 +:10C5700000000000007889400000000000E08140D9 +:10C580000000000000806540000000000040824084 +:10C590000000000000C079400000000000A07340CF +:10C5A0000000000000606B400000000000C066401A +:10C5B0000000000000C06D400000000000A888409E +:10C5C0000000000000688B400000000000608A400E +:10C5D0000000000000004F400000000000005F402D +:10C5E00000000000003886400000000000988840ED +:10C5F0000000000000B073400000000000D08D403B +:10C6000000000000008072400000000000507C40EC +:10C610000000000000508A400000000000488540F3 +:10C620000000000000A071400000000000888D4064 +:10C6300000000000008060400000000000B885405D +:10C640000000000000B07B400000000000288A408D +:10C65000000000000000574000000000000881407A +:10C660000000000000B076400000000000A06F4015 +:10C6700000000000001880400000000000507540DD +:10C680000000000000907940000000000088894010 +:10C6900000000000001082400000000000208B40DD +:10C6A0000000000000F080400000000000288940E9 +:10C6B0000000000000C07F400000000000D88E4055 +:10C6C0000000000000E071400000000000307C40ED +:10C6D0000000000000A063400000000000004D408A +:10C6E0000000000000805F4000000000001886404D +:10C6F0000000000000508B400000000000507F4010 +:10C700000000000000B08E400000000000D08E400D +:10C710000000000000E0774000000000008044407E +:10C720000000000000E88940000000000040834055 +:10C730000000000000F88B400000000000907F40E7 +:10C7400000000000009883400000000000D88840EE +:10C7500000000000005881400000000000308840C8 +:10C760000000000000408E40000000000090774074 +:10C770000000000000D087400000000000D073409F +:10C7800000000000003087400000000000D8834017 +:10C790000000000000107E400000000000908A4071 +:10C7A0000000000000E88E400000000000607B40B8 +:10C7B00000000000000052400000000000406A40FD +:10C7C00000000000001883400000000000307C40A2 +:10C7D00000000000004880400000000000607C4035 +:10C7E0000000000000405540000000000050714073 +:10C7F0000000000000E88840000000000060624087 +:10C800000000000000003F40000000000080524097 +:10C8100000000000006883400000000000C05D4090 +:10C8200000000000008066400000000000D8814049 +:10C830000000000000406D400000000000607640F5 +:10C8400000000000006060400000000000805140D7 +:10C850000000000000C88A400000000000A07440F2 +:10C860000000000000607B400000000000B0774046 +:10C870000000000000C06440000000000080404054 +:10C880000000000000C08C4000000000006061401B +:10C890000000000000C0734000000000004088401D +:10C8A0000000000000A070400000000000C07140C7 +:10C8B0000000000000E06E400000000000A88D4075 +:10C8C00000000000008885400000000000C88A4089 +:10C8D0000000000000B08040000000000030764002 +:10C8E00000000000004084400000000000E07240B2 +:10C8F0000000000000408A400000000000788A40EC +:10C900000000000000F08D4000000000000000402A +:10C910000000000000D082400000000000707C4059 +:10C9200000000000004077400000000000A06C40C4 +:10C9300000000000002077400000000000107A4056 +:10C940000000000000A06B400000000000C0884014 +:10C950000000000000C056400000000000206B40B6 +:10C9600000000000004063400000000000C07F4065 +:10C9700000000000008046400000000000D073402E +:10C980000000000000804040000000000098894046 +:10C9900000000000000048400000000000606E4001 +:10C9A0000000000000C8824000000000003072401B +:10C9B00000000000002883400000000000406E409E +:10C9C0000000000000D074400000000000907F4094 +:10C9D0000000000000C880400000000000D072404D +:10C9E0000000000000B072400000000000207D4008 +:10C9F0000000000000F88C400000000000005740DC +:10CA000000000000003888400000000000806A40FC +:10CA10000000000000C88E400000000000A065403B +:10CA2000000000000000404000000000009882402C +:10CA300000000000001884400000000000007A4060 +:10CA40000000000000788C400000000000F88D40DD +:10CA50000000000000806F400000000000008A40DD +:10CA600000000000004089400000000000588C4099 +:10CA70000000000000C88740000000000020814046 +:10CA800000000000003881400000000000C0844029 +:10CA90000000000000C086400000000000C06740A9 +:10CAA000000000000080714000000000000078409D +:10CAB0000000000000B089400000000000588640DF +:10CAC0000000000000108A400000000000E0674005 +:10CAD0000000000000507B400000000000206E407D +:10CAE00000000000008880400000000000C070408E +:10CAF00000000000000043400000000000E0624031 +:10CB00000000000000002C400000000000D0704039 +:10CB10000000000000388540000000000050764012 +:10CB20000000000000805B40000000000000694041 +:10CB300000000000009078400000000000288A40BB +:10CB40000000000000806A40000000000000474034 +:10CB50000000000000007540000000000020684058 +:10CB600000000000003072400000000000C88E404D +:10CB70000000000000788E4000000000006080404F +:10CB80000000000000A062400000000000B88240E9 +:10CB90000000000000807A400000000000A061401A +:10CBA0000000000000C886400000000000F885403A +:10CBB0000000000000C06D400000000000688240DE +:10CBC0000000000000A084400000000000707040E1 +:10CBD0000000000000F073400000000000908D4055 +:10CBE0000000000000C06D40000000000000774021 +:10CBF0000000000000C086400000000000A084404B +:10CC0000000000000000654000000000008050406F +:10CC100000000000003885400000000000407F4018 +:10CC2000000000000070764000000000009071409D +:10CC30000000000000E063400000000000A067402A +:10CC400000000000000083400000000000C8884091 +:10CC500000000000008069400000000000108640D5 +:10CC6000000000000000524000000000004053405F +:10CC70000000000000A08440000000000078874011 +:10CC8000000000000000434000000000004063403E +:10CC90000000000000507B400000000000005340F6 +:10CCA00000000000008070400000000000D88A40B2 +:10CCB0000000000000006B400000000000806340A6 +:10CCC0000000000000B88E400000000000B08B4063 +:10CCD00000000000001089400000000000E08C40CF +:10CCE00000000000000062400000000000188F40BB +:10CCF0000000000000188440000000000030834065 +:10CD000000000000007072400000000000A06C40B5 +:10CD10000000000000405F400000000000003D40B7 +:10CD20000000000000805A4000000000008883409E +:10CD30000000000000003B4000000000006069406F +:10CD400000000000007074400000000000188F40D8 +:10CD50000000000000C05E400000000000788E402F +:10CD60000000000000B0774000000000000082409A +:10CD700000000000002070400000000000406740FC +:10CD8000000000000008814000000000007886409C +:10CD900000000000009080400000000000008A4079 +:10CDA0000000000000188B400000000000006240FE +:10CDB0000000000000406240000000000058834076 +:10CDC00000000000007883400000000000805B400D +:10CDD0000000000000406B40000000000058884048 +:10CDE0000000000000107E40000000000090714034 +:10CDF0000000000000D089400000000000188840BA +:10CE00000000000000C881400000000000588C4075 +:10CE100000000000006075400000000000D073407A +:10CE200000000000001076400000000000001440E8 +:10CE300000000000008076400000000000507A40B2 +:10CE400000000000008051400000000000406040F1 +:10CE5000000000000000454000000000001080407D +:10CE60000000000000408440000000000090794075 +:10CE70000000000000688C400000000000107940B5 +:10CE80000000000000707E400000000000005240E2 +:10CE90000000000000208240000000000000104060 +:10CEA0000000000000005340000000000018804017 +:10CEB0000000000000E0774000000000000050404B +:10CEC00000000000002068400000000000806A4070 +:10CED00000000000000034400000000000E082403C +:10CEE0000000000000E07D400000000000288C40B1 +:10CEF00000000000008088400000000000507140E9 +:10CF00000000000000C88740000000000048854085 +:10CF10000000000000D07A400000000000607D406A +:10CF20000000000000804C400000000000408440F1 +:10CF300000000000000883400000000000288F402F +:10CF40000000000000C05140000000000048874081 +:10CF50000000000000608B400000000000804440A2 +:10CF60000000000000908D40000000000050804054 +:10CF700000000000003075400000000000E06E403E +:10CF80000000000000A06B400000000000108E4078 +:10CF90000000000000805B400000000000608A404C +:10CFA00000000000003885400000000000007A40CA +:10CFB00000000000005080400000000000D07A40D7 +:10CFC0000000000000F8874000000000000014404E +:10CFD00000000000009889400000000000207C4014 +:10CFE000000000000080504000000000002084404D +:10CFF00000000000009086400000000000488D40C6 +:10D000000000000000D880400000000000888E4032 +:10D010000000000000B886400000000000708A4058 +:10D020000000000000688E400000000000707840A2 +:10D030000000000000D8854000000000008084400F +:10D040000000000000007F400000000000C07B40A6 +:10D050000000000000A065400000000000F07940E2 +:10D0600000000000006886400000000000F07C40E6 +:10D070000000000000388D400000000000D08D400E +:10D080000000000000006F400000000000207C4015 +:10D090000000000000E08B400000000000E8864037 +:10D0A0000000000000C880400000000000207B401D +:10D0B0000000000000C08C400000000000F8844028 +:10D0C0000000000000E06B400000000000D88B4032 +:10D0D0000000000000806F400000000000907340DE +:10D0E0000000000000805E400000000000907840DA +:10D0F000000000000080634000000000006060400D +:10D1000000000000009882400000000000405440F1 +:10D110000000000000C051400000000000408D40B1 +:10D120000000000000508C400000000000708240B1 +:10D1300000000000006067400000000000508940CF +:10D1400000000000006089400000000000F88340FB +:10D1500000000000009083400000000000206D40AF +:10D160000000000000F07440000000000050754016 +:10D170000000000000A06F400000000000E08D40B3 +:10D180000000000000B076400000000000188F4052 +:10D190000000000000588E40000000000050894050 +:10D1A0000000000000E07D400000000000C0694079 +:10D1B0000000000000E077400000000000508B40BD +:10D1C000000000000020824000000000004073408A +:10D1D00000000000004066400000000000F08640B3 +:10D1E0000000000000108A400000000000008240A3 +:10D1F0000000000000508D400000000000805F40F3 +:10D200000000000000688B400000000000588D40C6 +:10D2100000000000002071400000000000C88840AD +:10D220000000000000C076400000000000005040F8 +:10D230000000000000B075400000000000607D406C +:10D240000000000000788E40000000000000364022 +:10D250000000000000002C40000000000090724020 +:10D260000000000000108540000000000000794030 +:10D27000000000000000204000000000002071407D +:10D280000000000000508A400000000000006040E4 +:10D2900000000000008059400000000000E06640EF +:10D2A0000000000000908E400000000000788540E3 +:10D2B00000000000003083400000000000088140B2 +:10D2C0000000000000108840000000000000324014 +:10D2D00000000000001076400000000000E08B40DD +:10D2E0000000000000D07240000000000070744098 +:10D2F0000000000000107F400000000000F07040BF +:10D300000000000000B089400000000000D07F4015 +:10D310000000000000406340000000000060824008 +:10D320000000000000F880400000000000888140FC +:10D330000000000000C08340000000000080564054 +:10D340000000000000D079400000000000003D40D7 +:10D350000000000000E07C400000000000E88C407D +:10D360000000000000D88440000000000060694018 +:10D370000000000000708A400000000000F07040D3 +:10D3800000000000001076400000000000388440DB +:10D390000000000000207B400000000000C08B4027 +:10D3A0000000000000807840000000000080544031 +:10D3B0000000000000D07B400000000000088B400F +:10D3C0000000000000288640000000000018804097 +:10D3D0000000000000E077400000000000F88840F6 +:10D3E00000000000000085400000000000788E4032 +:10D3F0000000000000207D400000000000207E4072 +:10D400000000000000006540000000000000244013 +:10D410000000000000C062400000000000D0734027 +:10D420000000000000F08240000000000030814059 +:10D430000000000000C064400000000000008540C3 +:10D4400000000000005080400000000000408E40BE +:10D450000000000000E882400000000000888D40CD +:10D460000000000000A88D400000000000A07F40E8 +:10D4700000000000001076400000000000488C40D2 +:10D480000000000000A084400000000000508C401C +:10D490000000000000A07E4000000000008052401C +:10D4A0000000000000D07E400000000000805440DA +:10D4B0000000000000804740000000000070804035 +:10D4C0000000000000908A40000000000010704042 +:10D4D00000000000004073400000000000606C404D +:10D4E00000000000007075400000000000C05740C0 +:10D4F00000000000004070400000000000D88040A4 +:10D5000000000000008882400000000000A0684089 +:10D5100000000000000073400000000000007840A0 +:10D5200000000000006882400000000000606640CB +:10D5300000000000004881400000000000507840DA +:10D540000000000000988A400000000000D88640DB +:10D550000000000000F8894000000000003886400C +:10D5600000000000005076400000000000508140A4 +:10D570000000000000B08E400000000000000040ED +:10D580000000000000F075400000000000788B40B3 +:10D59000000000000000454000000000000079404D +:10D5A0000000000000A069400000000000806C4006 +:10D5B00000000000008074400000000000A08940CE +:10D5C00000000000003071400000000000908A4020 +:10D5D00000000000000074400000000000A06F4048 +:10D5E00000000000006883400000000000488B40FD +:10D5F0000000000000508A400000000000708A40D7 +:10D600000000000000005B40000000000080664059 +:10D610000000000000C072400000000000108040C8 +:10D6200000000000009084400000000000606A409C +:10D6300000000000005077400000000000D0724061 +:10D6400000000000004069400000000000108D4014 +:10D650000000000000907E40000000000028824092 +:10D6600000000000007889400000000000E06540F4 +:10D6700000000000001087400000000000388140DA +:10D6800000000000003886400000000000088340D1 +:10D6900000000000007075400000000000F08240B3 +:10D6A0000000000000C05E400000000000B07940B3 +:10D6B0000000000000988A400000000000E069407F +:10D6C0000000000000308740000000000080724031 +:10D6D00000000000002887400000000000006740B4 +:10D6E0000000000000E065400000000000107F40E6 +:10D6F00000000000000040400000000000308140B9 +:10D7000000000000008042400000000000508E40F9 +:10D7100000000000007080400000000000E07A403F +:10D720000000000000F881400000000000406E4052 +:10D730000000000000308D400000000000B071408B +:10D740000000000000288E4000000000008881409A +:10D750000000000000F085400000000000708740DD +:10D760000000000000308C400000000000208E40CF +:10D770000000000000388640000000000000574014 +:10D780000000000000F084400000000000606E40D7 +:10D7900000000000008067400000000000107E4094 +:10D7A0000000000000C07C400000000000608140DC +:10D7B0000000000000B08B400000000000D08B4053 +:10D7C0000000000000607F400000000000907D40ED +:10D7D0000000000000002040000000000000724037 +:10D7E0000000000000804C40000000000040764037 +:10D7F00000000000008886400000000000005C403F +:10D8000000000000008889400000000000A0714076 +:10D810000000000000C05E400000000000408540A5 +:10D82000000000000080754000000000000035404E +:10D830000000000000388D400000000000004E4055 +:10D840000000000000F071400000000000C07B40BC +:10D850000000000000B070400000000000003E40EA +:10D860000000000000F07B400000000000607340FA +:10D870000000000000D08C400000000000C071409B +:10D880000000000000A07B40000000000058844021 +:10D890000000000000607C400000000000E08C40C0 +:10D8A00000000000001888400000000000188340BD +:10D8B0000000000000A08A400000000000D08E4060 +:10D8C0000000000000F076400000000000F078400A +:10D8D0000000000000C05C40000000000020774015 +:10D8E00000000000006074400000000000E8874075 +:10D8F0000000000000307440000000000000844080 +:10D900000000000000508C400000000000406E400D +:10D9100000000000007080400000000000608B40AC +:10D920000000000000188C400000000000808340D0 +:10D930000000000000C064400000000000E08840DB +:10D940000000000000806F400000000000F07A40FE +:10D950000000000000C0584000000000009083401C +:10D960000000000000308B400000000000008D40EF +:10D970000000000000388D400000000000A06C4056 +:10D980000000000000E07140000000000000344092 +:10D9900000000000004084400000000000D88040EB +:10D9A0000000000000A880400000000000B07740A8 +:10D9B00000000000000050400000000000606640D1 +:10D9C0000000000000D073400000000000008C4008 +:10D9D00000000000005072400000000000006240A3 +:10D9E0000000000000588E40000000000010794048 +:10D9F00000000000008086400000000000D08E4043 +:10DA00000000000000E07140000000000050714084 +:10DA10000000000000E089400000000000F88440A1 +:10DA200000000000008050400000000000B0814075 +:10DA30000000000000D07C400000000000788A4018 +:10DA40000000000000408C400000000000E0734037 +:10DA50000000000000804D4000000000006883408E +:10DA60000000000000F08D400000000000708240C7 +:10DA70000000000000488C400000000000888A4040 +:10DA8000000000000070864000000000002075408B +:10DA900000000000006075400000000000D08640DB +:10DAA00000000000000036400000000000808D40B3 +:10DAB000000000000000814000000000000039402C +:10DAC0000000000000C075400000000000804340DE +:10DAD000000000000078864000000000000886403A +:10DAE0000000000000A082400000000000608C40A8 +:10DAF00000000000002889400000000000908240E3 +:10DB00000000000000001C400000000000804740B2 +:10DB100000000000004087400000000000806240DC +:10DB200000000000002066400000000000C07D40B2 +:10DB30000000000000108B400000000000888A40B8 +:10DB400000000000000056400000000000C06E40D1 +:10DB50000000000000607B40000000000058804092 +:10DB600000000000008063400000000000B08B4017 +:10DB70000000000000B087400000000000E8824084 +:10DB800000000000008043400000000000206A40C8 +:10DB90000000000000003D40000000000030854013 +:10DBA00000000000008058400000000000788B401A +:10DBB0000000000000E071400000000000F07B4029 +:10DBC0000000000000405A400000000000008A40B1 +:10DBD0000000000000F072400000000000C067403C +:10DBE00000000000008064400000000000488E40FB +:10DBF0000000000000C06B400000000000188F40D3 +:10DC00000000000000B074400000000000C07E4032 +:10DC10000000000000F078400000000000C08940D3 +:10DC20000000000000002C4000000000005079407F +:10DC30000000000000F889400000000000A88240B9 +:10DC40000000000000F084400000000000C88A408E +:10DC50000000000000005E400000000000488B4013 +:10DC600000000000006065400000000000D08B4014 +:10DC70000000000000488C400000000000E88340E5 +:10DC80000000000000C05C400000000000E882408E +:10DC900000000000000075400000000000805C40B3 +:10DCA0000000000000E089400000000000C071405A +:10DCB0000000000000F072400000000000988B405F +:10DCC0000000000000C063400000000000E07E4053 +:10DCD0000000000000206340000000000028814098 +:10DCE0000000000000006D40000000000060814066 +:10DCF0000000000000B885400000000000004D401A +:10DD00000000000000003D400000000000807F4057 +:10DD10000000000000806F40000000000040534001 +:10DD200000000000008041400000000000308440FE +:10DD300000000000002061400000000000007C4066 +:10DD400000000000000079400000000000407D401D +:10DD50000000000000A06D400000000000207040A6 +:10DD60000000000000C88A400000000000C06240BF +:10DD70000000000000A88E400000000000A08740C6 +:10DD800000000000004083400000000000406140AF +:10DD90000000000000806740000000000020784084 +:10DDA000000000000088864000000000002077404E +:10DDB0000000000000C051400000000000788C40CE +:10DDC00000000000004052400000000000388E407B +:10DDD0000000000000C081400000000000807F4083 +:10DDE0000000000000806440000000000010884037 +:10DDF0000000000000005940000000000060664084 +:10DE000000000000008887400000000000388140CA +:10DE10000000000000C05040000000000088844066 +:10DE200000000000006084400000000000606E40C0 +:10DE30000000000000C07B400000000000E07840CF +:10DE40000000000000088B40000000000020884017 +:10DE50000000000000B07A40000000000020754083 +:10DE600000000000008082400000000000804F4061 +:10DE70000000000000C0804000000000003880402A +:10DE800000000000008886400000000000C05440F0 +:10DE90000000000000806A400000000000307C406C +:10DEA00000000000008062400000000000405D4073 +:10DEB00000000000008058400000000000C08B40BF +:10DEC0000000000000804E400000000000F086408E +:10DED00000000000000085400000000000607F405E +:10DEE0000000000000988640000000000078884094 +:10DEF0000000000000907540000000000020754008 +:10DF000000000000002087400000000000688C40F6 +:10DF10000000000000907F400000000000388A40B0 +:10DF20000000000000788E40000000000070844077 +:10DF3000000000000020894000000000001883401D +:10DF4000000000000040514000000000000026409A +:10DF500000000000005880400000000000A883403E +:10DF600000000000004079400000000000C08A402E +:10DF700000000000006083400000000000A07B4023 +:10DF800000000000001082400000000000F081400E +:10DF90000000000000A062400000000000E06040BF +:10DFA0000000000000508E400000000000508D4036 +:10DFB0000000000000C07E400000000000488640D5 +:10DFC0000000000000B08B400000000000F883401B +:10DFD0000000000000607C400000000000807740EE +:10DFE00000000000009082400000000000607740C8 +:10DFF00000000000009080400000000000D083403E +:10E0000000000000000065400000000000B08140FA +:10E0100000000000004889400000000000C070407F +:10E020000000000000805B400000000000F087401E +:10E030000000000000D07740000000000090874002 +:10E04000000000000080824000000000003082409C +:10E050000000000000B0714000000000000000005F +:10E060000000000000A072400000000000C06E40F0 +:10E070000000000000B08A40000000000000F03FF7 +:10E080000000000000B884400000000000E07A407A +:10E0900000000000000889400000000000E085400A +:10E0A0000000000000388040000000000050764072 +:10E0B000000000000020654000000000000020403B +:10E0C00000000000000061400000000000C06E4041 +:10E0D00000000000002883400000000000C07240E3 +:10E0E00000000000008062400000000000A08B40A3 +:10E0F000000000000098814000000000008078408F +:10E100000000000000C058400000000000708A407D +:10E110000000000000C089400000000000207440A2 +:10E1200000000000005072400000000000507540E8 +:10E1300000000000005881400000000000206840FE +:10E1400000000000007086400000000000D0814008 +:10E150000000000000B089400000000000C06B40DB +:10E160000000000000B08A400000000000002840CD +:10E170000000000000406C40000000000000304043 +:10E1800000000000002080400000000000C08C4023 +:10E190000000000000F883400000000000308A40CA +:10E1A0000000000000F08440000000000088804073 +:10E1B0000000000000507E400000000000F88D408C +:10E1C0000000000000808C400000000000F880404B +:10E1D00000000000001086400000000000688B4036 +:10E1E0000000000000F88A400000000000A08A4003 +:10E1F0000000000000F075400000000000808C402E +:10E20000000000000000844000000000000886407C +:10E210000000000000C88540000000000078854034 +:10E220000000000000206E400000000000F071407F +:10E2300000000000002072400000000000108D402F +:10E240000000000000208E40000000000000F03FB1 +:10E250004442FFFFE041FFFF5042FFFFE041FFFF6C +:10E26000E041FFFFE041FFFFE041FFFF6042FFFFB1 +:10E27000E041FFFFE041FFFFC441FFFF9044FFFF8B +:10E28000E041FFFFC441FFFFF441FFFFF441FFFF06 +:10E29000F441FFFFF441FFFFF441FFFFF441FFFFB2 +:10E2A000F441FFFFF441FFFFF441FFFFE041FFFFB6 +:10E2B000E041FFFFE041FFFFE041FFFFE041FFFFE2 +:10E2C000E041FFFFE041FFFFE041FFFFE041FFFFD2 +:10E2D000E041FFFFE041FFFFE041FFFFE041FFFFC2 +:10E2E000E041FFFFE041FFFFE041FFFFE041FFFFB2 +:10E2F000E041FFFFE041FFFFE041FFFFE041FFFFA2 +:10E30000E041FFFFE041FFFFE041FFFFE041FFFF91 +:10E31000E041FFFFE041FFFFE041FFFFE041FFFF81 +:10E32000E041FFFFE041FFFFE041FFFFE041FFFF71 +:10E33000E041FFFFE041FFFFE041FFFFE041FFFF61 +:10E34000E041FFFFE041FFFFE041FFFFE041FFFF51 +:10E35000A844FFFF9043FFFFE041FFFFE041FFFFC4 +:10E36000E041FFFFE041FFFFE041FFFFE041FFFF31 +:10E37000E041FFFFC444FFFFE041FFFFE041FFFF3A +:10E380003445FFFF7C42FFFFE041FFFFE041FFFF1C +:10E39000E043FFFFE041FFFF4045FFFFE041FFFF9B +:10E3A000E041FFFFC443FFFFD8470080D84700800B +:10E3B000FC470080CC470080CC470080BC480080F0 +:10E3C000FC470080CC470080BC480080CC470080E0 +:10E3D000FC470080C8470080C8470080C8470080CD +:10E3E000BC48008000010202030303030404040488 +:10E3F00004040404050505050505050505050505D1 +:10E4000005050505060606060606060606060606B0 +:10E41000060606060606060606060606060606069C +:10E420000606060607070707070707070707070780 +:10E43000070707070707070707070707070707076C +:10E44000070707070707070707070707070707075C +:10E45000070707070707070707070707070707074C +:10E460000707070708080808080808080808080830 +:10E47000080808080808080808080808080808081C +:10E48000080808080808080808080808080808080C +:10E4900008080808080808080808080808080808FC +:10E4A00008080808080808080808080808080808EC +:10E4B00008080808080808080808080808080808DC +:10E4C00008080808080808080808080808080808CC +:10E4D00008080808080808080808080808080808BC +:04E4E0000808080818 +:10E4E400286E756C6C2900006D6379636C6500009F +:10E4F4006D696E737472657400000000496D706C10 +:10E50400656D656E74206D61696E28292C20666FB7 +:0DE514006F210A002573203D2025640A00B8 +:10E524001000000000000000037A5200017C010189 +:10E534001B0D020010000000180000001049FFFF2E +:10E544005004000000000000100000002C00000037 +:10E554004C4DFFFF340400000000000010000000D8 +:10E56400400000006C51FFFF100400000000000098 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/towers.riscv.hex b/benchmarks/riscv_tests/benchmarks/towers.riscv.hex new file mode 100644 index 00000000..04b277d3 --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/towers.riscv.hex @@ -0,0 +1,553 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A000970200009382020473905230974100003F +:1000B000938141741382F188137202FC732540F11D +:1000C000930510006370B5001301150013111101A1 +:1000D00033014100131615013302C2006F20103E98 +:1000E000130101EF232211002324210023263100D4 +:1000F00023284100232A5100232C6100232E710064 +:1001000023208102232291022324A1022326B1026B +:100110002328C102232AD102232CE102232EF1023B +:10012000232001052322110523242105232631053F +:1001300023284105232A5105232C6105232E71050F +:1001400023208107232291072324A1072326B10717 +:100150002328C107232AD107232CE107232EF107E7 +:1001600073252034F325103413060100EF20100E00 +:1001700073101534B72200009382028073A00230FE +:1001800083204100032181008321C100032201015A +:1001900083224101032381018323C101032401023E +:1001A00083244102032581028325C1020326010322 +:1001B00083264103032781038327C1030328010406 +:1001C00083284104032981048329C104032A0105EA +:1001D000832A4105032B8105832BC105032C0106CE +:1001E000832C4106032D8106832DC106032E0107B2 +:1001F000832E4107032F8107832FC10713010111AC +:040200007300203037 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000003260500832785016398C7028327C5013E +:1020100063880702130700006F00C00083A7470012 +:102020006380070283A6070013071700E308D7FEA3 +:102030001305500067800000130540006780000012 +:1020400003274500930710003396C7001306F6FFD9 +:1020500013050000E300C7FE130560006780000061 +:1020600003250500678000002320050023220500CA +:1020700067800000972600009386C6F783A7460076 +:102080000327050003A647001307170023A2C60075 +:102090008326450023A2D7002322F50023A0B70002 +:1020A0002320E50067800000032745009307050013 +:1020B0008326050083254700032507001726000017 +:1020C000130646F323A2B700832546009386F6FF46 +:1020D0002322B7002322E60023A0D7006780000058 +:1020E000032705006358E00297260000938686F0D8 +:1020F000832745001307F7FF03A647002322C500E7 +:1021000003A6460023A2C70023A2F600E31207FE9F +:1021100023200500678000002320B500232205004E +:10212000232405002326050023280500232A050073 +:10213000232C0500232E05006352B004172800004D +:10214000130848EB83274800138705009306000017 +:102150006F0080009307060003A6470023A0E70056 +:1021600023A2D7001307F7FF93860700E31407FEA7 +:102170002322C8002326F5002324B5006780000031 +:1021800003278500635EE00297250000938585E6BE +:102190008327C50083A645006F00800093070600D3 +:1021A00003A647001307F7FF23A2D7009386070073 +:1021B000E31607FE23A2F5002326C500232405000D +:1021C00003270501635EE00297250000938585E201 +:1021D0008327450183A645006F0080009307060012 +:1021E00003A647001307F7FF23A2D7009386070033 +:1021F000E31607FE23A2F500232AC50023280500C5 +:1022000003278501635AE00297250000938585DE48 +:102210008327C50183A645006F0080009307060051 +:1022200003A647001307F7FF23A2D70093860700F2 +:10223000E31607FE23A2F50003280500232205006C +:10224000232405002326050023280500232A050052 +:10225000232C0500232E050063520005972500005E +:10226000938545D983A7450013070800930600000E +:102270006F0080009307060003A6470023A0E70035 +:1022800023A2D7001307F7FF93860700E31407FE86 +:1022900023A2C5002326F500232405016780000042 +:1022A000130101FE232C8100232A91002328210100 +:1022B0002326310123244101232E1100930710000E +:1022C000130A05001309060093090700938405000B +:1022D000138406006388F5049384F4FF9385040057 +:1022E00013050A001307040093860900130609006A +:1022F000EFF01FFB13870900930604001306090083 +:102300009305100013050A00EFF09FF993071000E2 +:1023100013070900638AF40013090400130407007B +:102320006FF09FFB130406008327440083260400FC +:1023300003274A0083A5470003A607009386F6FFFC +:102340002322B40083A549002320D40083A60900DA +:1023500023A2B70023A2F90023A0C7008320C10154 +:10236000032481019387160023A0F9009307170027 +:102370002322FA0083244101032901018329C1009A +:10238000032A8100130101026780000083250500F4 +:102390001307850193060501130685006FF05FF0B2 +:1023A000032785006318070083270501639807004A +:1023B0006FF01FC513052000678000001305300073 +:1023C00067800000130101EB23229113B70C00403A +:1023D0009387FCFF232481142322911423202115A9 +:1023E000232A511323261114232E3113232C411396 +:1023F0002328611323267113232481132320A1137F +:10240000232EB1111309050093840500130406005F +:102410002324D100930A50022326F1006F004001CB +:10242000630405069385040013041400E700090003 +:1024300003450400E31655FF83461400930D140072 +:1024400013870D00930B00029309F0FF130AF0FFAE +:102450009305000013065005130590009387D6FDE1 +:1024600093F7F70F13041700636CF60617280000A4 +:102470001308C88D93972700B387070183A7070028 +:10248000B3870701678007008320C11403248114E8 +:1024900083244114032901148329C113032A8113BE +:1024A000832A4113032B0113832BC112032C8112A6 +:1024B000832C4112032D0112832DC111130101152B +:1024C00067800000938B0600834617001307040003 +:1024D000130417009387D6FD93F7F70FE378F6F808 +:1024E0009385040013055002E700090013840D00D2 +:1024F0006FF01FF403481700938906FD13070400CB +:10250000930708FD930608006366F5029397290078 +:10251000B38937011307170093991900B38909018B +:1025200003480700938909FD930708FD93060800F7 +:10253000E37EF5FCE3540AF2138A09009309F0FFE5 +:102540006FF0DFF183461700130704006FF01FF1EF +:102550009385040013055002E70009006FF05FED5A +:1025600083278100834617001307040083A907000F +:10257000938747002324F1006FF0DFFB130500036E +:1025800093850400E7000900938504001305800784 +:10259000E700090083278100130C000123220100BA +:1025A0001387470083278100930D000083A907004C +:1025B0002324E10013060C00930600001385090094 +:1025C00093850D00EF10401B2328A1009307000006 +:1025D000930C05006380B723130B4101130D10000A +:1025E00013060C00930600001385090093850D0067 +:1025F000EF00505513060C009306000093090500E8 +:10260000938D0500EF104017832741002320AB0076 +:102610002320A101930C0500130B4B00130D1D008B +:10262000E390B7FDE3FE89FB635C4D01130AFAFFFB +:102630009385040013850B00E7000900E3484DFF74 +:10264000832701000327C10093099000338AE70024 +:10265000131A2A0093070101338A47016F00C00053 +:10266000832C0A00130ACAFFB3B79901B307F040DD +:1026700093F77702938707033385970193850400C7 +:10268000E70009009307C100E39C47FD6FF05FDAA4 +:102690009307100063CCB716032781009307470008 +:1026A00063860518832907002324F10013DCF94110 +:1026B000634E0C18930D0C0023220100130CA00094 +:1026C0006FF05FEF130C000123220100930710004D +:1026D00063C2B71083278100138747006FF09FEC18 +:1026E0008327810083AD0700138B470063840D1897 +:1026F000635840099307D002639EFB0403C50D0095 +:1027000063080502930BF0FF63C609009389F9FF84 +:10271000638E790193850400938D1D00E700090005 +:1027200003C50D00130AFAFFE31005FE635C4001C8 +:10273000130AFAFF9385040013050002E70009005D +:10274000E3180AFE232461016FF09FCE971D00005D +:10275000938DCD5B93870D00B3863D01639809008F +:102760006F004013938717006386D70003C70700E5 +:10277000E31A07FEB387B741330AFA40634C4011AE +:1027800003C50D00E30005FC930BF0FF6FF0DFF7CE +:102790009347FAFF93D7F74183461700337AFA003D +:1027A000130704006FF09FCB8327810093850400FB +:1027B00003A50700138B4700E700090023246101EC +:1027C0006FF01FC783461700938515001307040099 +:1027D0006FF0DFC883278100138B7700137B8BFF9B +:1027E00093078B0083290B00832D4B002324F100DA +:1027F0006FF05FDCE3F289DF930710002320010014 +:10280000130D1000E3C447E36FF09FE383278100BB +:10281000138B7700137B8BFF93078B0083290B00AF +:10282000032C4B002324F1006FF09FE80327810065 +:102830006FF05FE7130C8000232201006FF01FE9A7 +:10284000130CA000232201006FF05FE893850400C1 +:102850001305D002E700090033373001B307804188 +:10286000B3093041B38DE740130CA00023220100CF +:102870006FF05FD4635640019307D002E398FBECFE +:10288000971D0000938D8D4813058002930BF0FF78 +:102890006FF09FE7130AFAFF9385040013850B007E +:1028A000E7000900E30E0AEC130AFAFF938504001F +:1028B00013850B00E7000900E31E0AFC6FF05FECD4 +:1028C00083A705002380A70083A70500938717002F +:1028D00023A0F50067800000130101F81308F1033D +:1028E000137808FC130700042320E8009307000076 +:1028F0002322F800130710002324E80093070000A8 +:102900002326F8002328A800232AB800232CC80077 +:10291000232ED8000F00F00F97E6FFFF9386866EF8 +:1029200023A006019307000023A2F60097E6FFFF0D +:102930009386467103A7060083A746003367F70016 +:10294000E30A07FE1307000023A0E6009307000038 +:1029500023A2F6000F00F00F03250800832548008E +:102960001301010867800000130101FF2324810087 +:10297000832502049307020023261100B387B700C2 +:10298000138615002380A7002320C2049307A0000C +:102990006300F50293070004630CF6008320C10076 +:1029A000032481001305000013010101678000006A +:1029B0009356F6411305020093050000EFF0DFF196 +:1029C0008320C1002320020403248100130500009A +:1029D0001301010167800000732700B09717000002 +:1029E00093874762631E050083A607001716000041 +:1029F000130646329715000023A2C5603307D7405F +:102A000023A0E700732720B0631E050083A64700BC +:102A100017160000130686309715000023A2C55E26 +:102A20003307D74023A2E700678000009316150004 +:102A300013E7160097E6FFFF9386C65C9307000036 +:102A400023A0E60023A2F6006F0000003716000066 +:102A500097E7FFFF9387075B130636A793060000EF +:102A600023A0C70023A2D7006F000000130101FFBD +:102A700023261100EFF09FFB97E7FFFF938787580E +:102A80001306D0109306000023A0C70023A2D7008E +:102A90006F000000834705006382070213060500EC +:102AA0008347160013061600E39C07FE3306A64074 +:102AB00093060000930500006FF01FE2130600006C +:102AC00093060000930500006FF01FE163100500FE +:102AD00067800000130101FD130705002326110282 +:102AE0001305C1001306B101130890006F008000A8 +:102AF000138607009377F700B337F800B307F04069 +:102B000093F777029376F70093870703B387F6006E +:102B10002300F6009396C501135747009307F6FF6D +:102B200033E7E60093D54500E314C5FC230E01000E +:102B3000EFF05FF68320C1021301010367800000FC +:102B4000130101FC13034102130E05002322B102FD +:102B50002324C1022326D10217050000130505E135 +:102B60009306030013060E0093050000232E1100A8 +:102B70002328E102232AF102232C0103232E11032F +:102B800023266100EFF01F848320C101130500009C +:102B90001301010467800000130101FB130381038B +:102BA000232481022326A100232CC102232ED1023B +:102BB000130405001386050017050000130585D0D2 +:102BC0009305C10093060300232611022322F1047A +:102BD0002320E1042324010523261105232E61006F +:102BE000EFF04FFE8327C100238007000325C100BB +:102BF0008320C102330585400324810213010105AE +:102C000067800000B3E7C500B367F50093F73700AE +:102C1000B306C500638407023386C5009307050029 +:102C2000637ED50203C705009385150093871700BF +:102C3000A38FE7FEE318B6FE67800000E37ED5FEB3 +:102C40009307050003A70500938747009385450078 +:102C500023AEE7FEE3E8D7FE678000006780000050 +:102C6000B367C50093F737003306C50063800702DA +:102C700093F5F50F930705006370C504938717005C +:102C8000A38FB7FEE31CF6FE6780000093F5F50FF7 +:102C90001397850033E7E500931707013367F700C3 +:102CA000E374C5FE930705009387470023AEE7FE54 +:102CB000E3ECC7FE6780000067800000130101F6A7 +:102CC0009387018523244109138A0185232631092D +:102CD000B309FA40232A9108232821099304050007 +:102CE0001389050013050200938507001386090068 +:102CF000232E1108232C810823225109930A020054 +:102D0000EFF05FF0138641893306464193050000DA +:102D100033853A01EFF0DFF49305090013850400D1 +:102D2000EFF0DFDA9305000013050000EF00D06537 +:102D3000171900001309092D832609001304F10354 +:102D4000137404FC9304050063940604832649006D +:102D50006396060013850400EFF05FCD13090400AD +:102D6000971900009389892903A6490013050900D2 +:102D7000971500009385C5FCEFF01FE23309A90009 +:102D8000E30A24FD13050400EFF0DFD06FF09FFC91 +:102D9000971900009389892603A60900971500005A +:102DA000938505FA13050400EFF01FDF8326490021 +:102DB0003309A400E38606FC6FF01FFB8347050080 +:102DC000638E07009307050003C71700938717005A +:102DD000E31C07FE3385A740678000001305000051 +:102DE0006780000013060500B306B60013850500D2 +:102DF00093070600639805006F00C00193871700D2 +:102E00006388F60003C70700E31A07FE3385C7404F +:102E100067800000678000008347050093851500E8 +:102E20001305150003C7F5FF63880700E386E7FE77 +:102E30003385E74067800000930700006FF05FFF75 +:102E40009307050003C705009387170093851500B6 +:102E5000A38FE7FEE31807FE678000000347050025 +:102E600093060002930705006318D70003C71700F5 +:102E700093871700E30CD7FE9306D0026300D706B2 +:102E80009306B0026300D70483C6070093050000D1 +:102E9000638206041305000093871700138606FD5E +:102EA0001317250083C607003305A7001315150067 +:102EB0003305A600E39206FE638005023305A040B9 +:102EC0006780000083C617009305000093871700F2 +:102ED000E39206FC130500006780000083C617001C +:102EE0009305100093871700E39606FA1305000078 +:102EF0006FF09FFE138F05001308000063DC0500D0 +:102F0000B337A000B305B040338FF5403305A04080 +:102F10001308F0FF63DA0600B335C0003307D04072 +:102F2000B306B7403306C040930806001387060077 +:102F30009307050093050F0063940624B7460080AD +:102F4000938606EA6376CF0E370301006378660C3A +:102F50001303F00F6374C300130780003353E600BC +:102F6000B386660003CE0600330EEE0013070002A0 +:102F70003303C741630CC701B3156F00335EC5014E +:102F8000B3186600B365BE00B317650013D6080119 +:102F9000B3F6C502139508011355050113D70701B0 +:102FA000B3D5C5029396060133E7E600B305B50233 +:102FB000637AB70033071701636617016374B700BC +:102FC000330717013307B740B376C702939707015A +:102FD00093D707013357C7023307E502139506015C +:102FE000B367F50063FAE700B387170163E61701DB +:102FF00063F4E700B3871701B387E74033D5670071 +:1030000093050000630A0800B337A000B306B04080 +:10301000B385F6403305A040678000003703000108 +:1030200013070001E36C66F2130780016FF01FF3D2 +:103030006316060093081000B3D8E80237060100B3 +:1030400063F6C8121306F00F6374160113078000AD +:1030500033D6E800B386C60003CE0600B3051F4191 +:10306000330EEE00130700023303C7416306C7099E +:10307000B3986800B35ECF01B3176500335EC50136 +:1030800013D50801B3156F00336EBE009395080188 +:1030900093D5050113560E01B3D6AE0233F7AE0237 +:1030A000B386D502131707013367C700637AD700C9 +:1030B00033071701636617016374D70033071701DD +:1030C0003306D7403377A602131E0E01135E0E019E +:1030D0003356A602131707013386C502B365C7012D +:1030E00063FAC500B385150163E6150163F4C500F5 +:1030F000B3851501B385C54093D6080133F7D502D2 +:10310000139508011355050113D60701B3D5D50250 +:10311000131707013367C700B305B502637AB70019 +:1031200033071701636617016374B700330717018C +:10313000B305B74033F7D5029397070193D707013B +:10314000B3D5D502B305B50213150701B367F50072 +:1031500063FAB700B387170163E6170163F4B7009A +:10316000B3871701B387B7406FF05FE937060001F7 +:1031700013070001E3EEC8EC130780016FF05FED69 +:10318000E362DFE83707010063FAE604930EF00F0D +:1031900033B7DE0013173700B748008033D3E6009B +:1031A000938808EAB388680083CE0800B38EEE00E7 +:1031B00013070002330ED741631CD70363E4E60113 +:1031C000636AC500B307C540B305DF403335F5007A +:1031D000B385A540138507006FF0DFE2B708000153 +:1031E00013070001E3EA16FB130780016FF0DFFA13 +:1031F0003357D601B396C601B36FD700B357DF017B +:1032000013D70F0133F3E702B315CF01B356D5013E +:10321000B3E6B60093950F0193D5050193D8060147 +:103220003316C6013315C501B3D7E70213130301E3 +:10323000B3681301338FF5021383070063FEE801BF +:10324000B388F8011383F7FF63E8F80163F6E80138 +:103250001383E7FFB388F801B388E84133FFE8023E +:103260009396060193D60601B3D8E802131F0F0107 +:10327000336FDF00B385150393870800637EBF00BB +:10328000330FFF019387F8FF6368FF016376BF0088 +:103290009387E8FF330FFF01B305BF40131303010A +:1032A000370F01003363F3009307FFFFB378F30098 +:1032B0009356060113530301B377F6003387F802E0 +:1032C000B307F302B388D8023303D302B388F800FC +:1032D00093560701B386160163F4F6003303E30146 +:1032E00093D7060133836700B70701009387F7FF81 +:1032F000B3F6F600939606013377F7003387E600BE +:1033000063E66500639E6500637CE5003306C740A5 +:103310003337C7003307F7013303E34013070600D1 +:103320003307E5403335E500B3856540B385A540F7 +:10333000B397D5013357C70133E5E700B3D5C501CE +:103340006FF05FCC93080500938705001308060013 +:10335000138506001383080063940628B74600808F +:10336000938606EA63F6C50E370701006378E60C1C +:103370001307F00F3337C700131737003355E60034 +:10338000B386A60083C60600130500023387E60055 +:10339000B306E540630CE500B397D70033D7E800E8 +:1033A0003318D600B365F7003393D800935808015B +:1033B000B3D715031316080113560601135703015B +:1033C000B3F6150313850700B305F60293960601BD +:1033D00033E7E600637EB700330707011385F7FF85 +:1033E000636807016376B7001385E7FF33070701BA +:1033F0003307B740B37717031313030113530301C4 +:10340000335717039397070133E36700B306E602C8 +:1034100013060700637CD300330368001306F7FF2D +:10342000636603016374D3001306E7FF13150501F8 +:103430003365C500930500006F00400E370500019D +:1034400013070001E36CA6F2130780016FF01FF36E +:1034500063160600130710003358C7023707010030 +:103460006370E80C1307F00F637407011305800005 +:103470003357A800B386E60003C706001306000210 +:103480003307A700B306E6406316E60AB387074191 +:1034900093051000935808011316080113560601EE +:1034A00013570301B3F61703B3D717039396060117 +:1034B00033E7E600330EF60213850700637EC7018B +:1034C000330707011385F7FF636807016376C701B8 +:1034D0001385E7FF330707013307C741B3771703A6 +:1034E0001313030113530301335717039397070172 +:1034F00033E36700B306E60213060700637CD300DC +:10350000330368001306F7FF636603016374D30097 +:103510001306E7FF131505013365C500678000003A +:103520003707000113050001E364E8F41305800187 +:103530006FF01FF43318D800B3D5E7003393D800E9 +:10354000B397D70033D7E800935808013366F700E4 +:1035500033F715039317080193D707011355060195 +:10356000B3D51503131707013367A700B386B70256 +:1035700013850500637ED700330707011385F5FF28 +:10358000636807016376D7001385E5FF33070701FA +:10359000B306D74033F71603131606011356060178 +:1035A000B3D6160313170701B388D702B367C70052 +:1035B0001387060063FE1701B38707011387F6FF21 +:1035C00063E8070163F617011387E6FFB387070176 +:1035D00093150501B3871741B3E5E5006FF09FEB45 +:1035E00063E6D5183707010063F4E6041307F00F0C +:1035F000B335D700939535003747008033D5B600F3 +:10360000130707EA3307A700034707001305000263 +:103610003307B700B305E5406316E5021305100054 +:10362000E3EEF6EE33B5C800134515006FF01FEF5B +:103630003707000193050001E3E0E6FC93058001F4 +:103640006FF09FFB3353E600B396B6003363D300AD +:1036500013550301B31EB60033D6E700B376A602B6 +:10366000B397B70033D7E8003368F7009317030127 +:1036700093D70701135708013356A6029396060104 +:1036800033E7E600338FC702130E0600637EE701BF +:1036900033076700130EF6FF636867006376E70180 +:1036A000130EE6FF330767003307E741B376A7023F +:1036B0003357A702939606013386E7029317080152 +:1036C00093D70701B3E7F6009306070063FEC70030 +:1036D000B38767009306F7FF63E8670063F6C700E8 +:1036E0009306E7FFB387670013150E01370E01003D +:1036F0003365D5009306FEFF3378D500B387C74006 +:10370000B3F6DE001356050193DE0E013303D80233 +:10371000B306D602135703013308D8033308D80081 +:10372000330707013306D6036374D7003306C60197 +:10373000935607013386C60063E6C702E39CC7CEF3 +:10374000B70701009387F7FF3377F70013170701D7 +:103750003373F300B398B800330767009305000094 +:10376000E3FEE8DA1305F5FF6FF0DFCC9305000008 +:10377000130500006FF09FDA930806001387060018 +:103780009307050013880500639C0622B746008056 +:10379000938606EA63FCC50C37030100637E660A64 +:1037A0001303F00F6374C300130780003353E60064 +:1037B000B386660003CE0600330EEE001307000248 +:1037C0003303C741630CC701B3956500335EC50180 +:1037D000B31866003368BE00B317650013D608013E +:1037E0003377C802139508011355050193D60701D5 +:1037F0003358C80213170701B366D700330805030F +:1038000063FA0601B386160163E6160163F4060146 +:10381000B3861601B386064133F7C60293970701B4 +:1038200093D70701B3D6C602B306D5021315070115 +:10383000B367F50063FAD700B387170163E6170192 +:1038400063F4D700B3871701B387D74033D5670038 +:103850009305000067800000370300011307000193 +:10386000E36666F4130780016FF05FF463160600E9 +:1038700013061000B35816033706010063F2C80A96 +:103880001306F00F637416011307800033D6E800A7 +:10389000B386C60003CE0600330EEE001307000207 +:1038A0003303C7416318C709B385154113D708010E +:1038B000139508011355050113D60701B3F6E50268 +:1038C000B3D5E50293960601B3E6C600B305B5028B +:1038D00063FAB600B386160163E6160163F4B60018 +:1038E000B3861601B385B640B3F6E5029397070198 +:1038F00093D70701B3D5E502B305B50213950601C9 +:10390000B367F50063FAB700B387170163E61701E1 +:1039100063F4B700B3871701B387B7406FF01FF3A5 +:103920003706000113070001E3E2C8F61307800120 +:103930006FF0DFF5B398680033D7C501B3176500A2 +:10394000335EC50113D50801B376A702B3956500B0 +:10395000336EBE009395080193D5050113560E01F1 +:103960003357A70293960601B3E6C6003387E502F4 +:1039700063FAE600B386160163E6160163F4E60017 +:10398000B38616013386E640B376A602131E0E01F7 +:10399000135E0E013356A602939606013386C502C6 +:1039A000B3E5C60163FAC500B385150163E61501E9 +:1039B00063F4C500B3851501B385C5406FF01FEFF3 +:1039C000E3EAD5E83707010063FCE604130EF00FC5 +:1039D0003337DE0013173700B748008033D3E600D3 +:1039E000938808EAB388680003CE0800330EEE001F +:1039F000130700023303C741631EC70363E4B60025 +:103A0000636AC500B307C540B385D5403335F500BB +:103A10003388A54013850700930508006FF09FE3E6 +:103A2000B708000113070001E3E816FB1307800144 +:103A30006FF09FFA3357C601B3966600336FD70015 +:103A4000B3D7C50113570F01B3F8E702B39565006B +:103A50003358C5013368B80093150F0193D505019C +:103A6000935608013316660033156500B3D7E70295 +:103A700093980801B3E6D800B38EF5029388070047 +:103A800063FED601B386E6019388F7FF63E8E6019B +:103A900063F6D6019388E7FFB386E601B386D64185 +:103AA000B3FEE6021318080113580801B3D6E60264 +:103AB000939E0E01B3EE0E01B385D50293870600E7 +:103AC00063FEBE00B38EEE019387F6FF63E8EE015E +:103AD00063F6BE009387E6FFB38EEE01B385BE406A +:103AE00093980801B70E0100B3E8F8009387FEFF32 +:103AF00033F8F8009356060193D80801B377F6001F +:103B00003307F802B387F8023308D802B388D80223 +:103B10003308F80093560701B386060163F4F600F4 +:103B2000B388D801B70701009387F7FF13D80601C0 +:103B3000B3F6F600939606013377F700B308180141 +:103B40003387E60063E61501639E1501637CE5009B +:103B50003306C7403337C7003307E701B388E8406F +:103B6000130706003307E5403335E500B3851541FB +:103B7000B385A540B397C5013357670033E5E70028 +:083B8000B3D565006FF01FCD05 +:103B8800130101FD23A601842326110297070000D3 +:103B9800938747479306300623A8D7029706000065 +:103BA8009386C64623A2D7009706000023AC064496 +:103BB800970600009386064623A6D70093061000B2 +:103BC80023A4D700970600009386464523AAD7006A +:103BD8009306200023A8D700970600009386864402 +:103BE80023AED7009306300023ACD7009386018418 +:103BF80023A2D7029306400023A0D702938681848C +:103C080013077000970800009388483E23A6D70240 +:103C18009306500023A4D70223A0E8002320E10044 +:103C28002322010023280100232A0100232C01005C +:103C3800232E0100930600006F0080009307080000 +:103C480003A8470023A0E70023A2D7001307F7FF24 +:103C580093860700E31407FE93057000130781019C +:103C68009306010113068100130501002326F100C4 +:103C7800930770002324F10023A20801EFE0CFE1AD +:103C880013050100EFE04FCF13051000EFE05FD4FC +:103C980083250100130781019306010113068100A2 +:103CA80013050100EFE04FDF13050000EFE05FD2DE +:103CB8008327810013052000639C070083270101E7 +:103CC800130530006396070013050100EFE0CFB23B +:103CD8008320C1021301010367800000130101FF63 +:103CE800170500001305C50323261100EFE01FDAAE +:103CF8008320C1001305F0FF130101016780000054 +:103D0800286E756C6C2900006D6379636C65000022 +:103D18006D696E737472657400000000496D706C93 +:103D2800656D656E74206D61696E28292C20666F3B +:0D3D38006F210A002573203D2025640A003C +:103D4800FCE7FFFF98E7FFFF08E8FFFF98E7FFFFA2 +:103D580098E7FFFF98E7FFFF98E7FFFF18E8FFFFE6 +:103D680098E7FFFF98E7FFFF7CE7FFFF48EAFFFFC0 +:103D780098E7FFFF7CE7FFFFACE7FFFFACE7FFFF3B +:103D8800ACE7FFFFACE7FFFFACE7FFFFACE7FFFFE7 +:103D9800ACE7FFFFACE7FFFFACE7FFFF98E7FFFFEB +:103DA80098E7FFFF98E7FFFF98E7FFFF98E7FFFF17 +:103DB80098E7FFFF98E7FFFF98E7FFFF98E7FFFF07 +:103DC80098E7FFFF98E7FFFF98E7FFFF98E7FFFFF7 +:103DD80098E7FFFF98E7FFFF98E7FFFF98E7FFFFE7 +:103DE80098E7FFFF98E7FFFF98E7FFFF98E7FFFFD7 +:103DF80098E7FFFF98E7FFFF98E7FFFF98E7FFFFC7 +:103E080098E7FFFF98E7FFFF98E7FFFF98E7FFFFB6 +:103E180098E7FFFF98E7FFFF98E7FFFF98E7FFFFA6 +:103E280098E7FFFF98E7FFFF98E7FFFF98E7FFFF96 +:103E380098E7FFFF98E7FFFF98E7FFFF98E7FFFF86 +:103E480060EAFFFF48E9FFFF98E7FFFF98E7FFFFF9 +:103E580098E7FFFF98E7FFFF98E7FFFF98E7FFFF66 +:103E680098E7FFFF7CEAFFFF98E7FFFF98E7FFFF6F +:103E7800ECEAFFFF34E8FFFF98E7FFFF98E7FFFF52 +:103E880098E9FFFF98E7FFFFF8EAFFFF98E7FFFFD1 +:103E980098E7FFFF7CE9FFFF000102020303030329 +:103EA80004040404040404040505050505050505C2 +:103EB80005050505050505050606060606060606A2 +:103EC800060606060606060606060606060606068A +:103ED8000606060606060606070707070707070772 +:103EE800070707070707070707070707070707075A +:103EF800070707070707070707070707070707074A +:103F08000707070707070707070707070707070739 +:103F18000707070707070707080808080808080821 +:103F28000808080808080808080808080808080809 +:103F380008080808080808080808080808080808F9 +:103F480008080808080808080808080808080808E9 +:103F580008080808080808080808080808080808D9 +:103F680008080808080808080808080808080808C9 +:103F780008080808080808080808080808080808B9 +:103F880008080808080808080808080808080808A9 +:083F98000808080808080808E1 +:103FA0001000000000000000037A5200017C0101B3 +:103FB0001B0D0200100000001800000038EFFFFF8A +:103FC0005004000000000000100000002C00000061 +:103FD00074F3FFFF34040000000000001000000034 +:103FE0004000000094F7FFFF1004000000000000F4 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/benchmarks/vvadd.riscv.hex b/benchmarks/riscv_tests/benchmarks/vvadd.riscv.hex new file mode 100644 index 00000000..a92461c8 --- /dev/null +++ b/benchmarks/riscv_tests/benchmarks/vvadd.riscv.hex @@ -0,0 +1,715 @@ +:0200000480007A +:1000000093000000130100009301000013020000A0 +:100010009302000013030000930300001304000088 +:100020009304000013050000930500001306000070 +:100030009306000013070000930700001308000058 +:10004000930800001309000093090000130A000040 +:10005000930A0000130B0000930B0000130C000028 +:10006000930C0000130D0000930D0000130E000010 +:10007000930E0000130F0000930F0000B7E2010081 +:1000800073A00230930210009392F20163CA02003F +:10009000130510009712000023A6A2F66FF05FFF71 +:1000A000970200009382020473905230975100002F +:1000B0009381C11513827187137202FC732540F17D +:1000C000930510006370B5001301150013111101A1 +:1000D00033014100131615013302C2006F20D00412 +:1000E000130101EF232211002324210023263100D4 +:1000F00023284100232A5100232C6100232E710064 +:1001000023208102232291022324A1022326B1026B +:100110002328C102232AD102232CE102232EF1023B +:10012000232001052322110523242105232631053F +:1001300023284105232A5105232C6105232E71050F +:1001400023208107232291072324A1072326B10717 +:100150002328C107232AD107232CE107232EF107E7 +:1001600073252034F325103413060100EF20C0540A +:1001700073101534B72200009382028073A00230FE +:1001800083204100032181008321C100032201015A +:1001900083224101032381018323C101032401023E +:1001A00083244102032581028325C1020326010322 +:1001B00083264103032781038327C1030328010406 +:1001C00083284104032981048329C104032A0105EA +:1001D000832A4105032B8105832BC105032C0106CE +:1001E000832C4106032D8106832DC106032E0107B2 +:1001F000832E4107032F8107832FC10713010111AC +:040200007300203037 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000006356A002131525003385A50083A705009C +:10201000032706009385450013064600B387E700B3 +:1020200023A0F60093864600E392A5FE6780000099 +:10203000130101EB23229113B70C00409387FCFF9F +:10204000232481142322911423202115232A5113A0 +:1020500023261114232E3113232C4113232861131B +:1020600023267113232481132320A113232EB111BE +:102070001309050093840500130406002324D100EE +:10208000930A50022326F1006F0040016304050605 +:102090009385040013041400E700090003450400BD +:1020A000E31655FF83461400930D140013870D00AB +:1020B000930B00029309F0FF130AF0FF9305000051 +:1020C00013065005130590009387D6FD93F7F70F7D +:1020D00013041700636CF60617280000130888879E +:1020E00093972700B387070183A70700B3870701EA +:1020F000678007008320C1140324811483244114C2 +:10210000032901148329C113032A8113832A41134C +:10211000032B0113832BC112032C8112832C411238 +:10212000032D0112832DC1111301011567800000D9 +:10213000938B06008346170013070400130417004F +:102140009387D6FD93F7F70FE378F6F893850400AD +:1021500013055002E700090013840D006FF01FF40F +:1021600003481700938906FD13070400930708FD31 +:10217000930608006366F50293972900B389370137 +:102180001307170093991900B38909010348070041 +:10219000938909FD930708FD93060800E37EF5FC8B +:1021A000E3540AF2138A09009309F0FF6FF0DFF19C +:1021B00083461700130704006FF01FF19385040096 +:1021C00013055002E70009006FF05FED83278100DF +:1021D000834617001307040083A90700938747006D +:1021E0002324F1006FF0DFFB130500039385040047 +:1021F000E70009009385040013058007E700090044 +:1022000083278100130C000123220100138747005C +:1022100083278100930D000083A907002324E10098 +:1022200013060C00930600001385090093850D002A +:10223000EF10C01B2328A10093070000930C05009A +:102240006380B723130B4101130D100013060C001C +:10225000930600001385090093850D00EF00D0550B +:1022600013060C009306000093090500938D0500EA +:10227000EF10C017832741002320AB002320A101CA +:10228000930C0500130B4B00130D1D00E390B7FDDD +:10229000E3FE89FB635C4D01130AFAFF938504009A +:1022A00013850B00E7000900E3484DFF8327010079 +:1022B0000327C10093099000338AE700131A2A000C +:1022C00093070101338A47016F00C000832C0A0085 +:1022D000130ACAFFB3B79901B307F04093F7770227 +:1022E000938707033385970193850400E70009006E +:1022F0009307C100E39C47FD6FF05FDA930710007E +:1023000063CCB7160327810093074700638605183F +:10231000832907002324F10013DCF941634E0C18D4 +:10232000930D0C0023220100130CA0006FF05FEF4F +:10233000130C0001232201009307100063C2B710A1 +:1023400083278100138747006FF09FEC832781006C +:1023500083AD0700138B470063840D186358400951 +:102360009307D002639EFB0403C50D0063080502BA +:10237000930BF0FF63C609009389F9FF638E79011F +:1023800093850400938D1D00E700090003C50D002F +:10239000130AFAFFE31005FE635C4001130AFAFF1B +:1023A0009385040013050002E7000900E3180AFE04 +:1023B000232461016FF09FCE971D0000938D8D55F2 +:1023C00093870D00B3863D01639809006F004013A9 +:1023D000938717006386D70003C70700E31A07FE39 +:1023E000B387B741330AFA40634C401103C50D006F +:1023F000E30005FC930BF0FF6FF0DFF79347FAFF64 +:1024000093D7F74183461700337AFA001307040085 +:102410006FF09FCB832781009385040003A50700FD +:10242000138B4700E7000900232461016FF01FC7E9 +:102430008346170093851500130704006FF0DFC86B +:1024400083278100138B7700137B8BFF93078B000F +:1024500083290B00832D4B002324F1006FF05FDCF8 +:10246000E3F289DF9307100023200100130D100011 +:10247000E3C447E36FF09FE383278100138B77006A +:10248000137B8BFF93078B0083290B00032C4B00DE +:102490002324F1006FF09FE8032781006FF05FE7CE +:1024A000130C8000232201006FF01FE9130CA00021 +:1024B000232201006FF05FE8938504001305D0022A +:1024C000E700090033373001B3078041B3093041D9 +:1024D000B38DE740130CA000232201006FF05FD4FE +:1024E000635640019307D002E398FBEC971D000070 +:1024F000938D4D4213058002930BF0FF6FF09FE721 +:10250000130AFAFF9385040013850B00E700090006 +:10251000E30E0AEC130AFAFF9385040013850B00FF +:10252000E7000900E31E0AFC6FF05FEC83A70500DB +:102530002380A70083A705009387170023A0F50039 +:1025400067800000130101F81308F103137808FCF9 +:10255000130700042320E800930700002322F8005B +:10256000130710002324E800930700002326F80037 +:102570002328A800232AB800232CC800232ED80023 +:102580000F00F00F97F6FFFF9386C6A723A0060162 +:102590009307000023A2F60097F6FFFF938686AA12 +:1025A00003A7060083A746003367F700E30A07FE88 +:1025B0001307000023A0E6009307000023A2F60003 +:1025C0000F00F00F032508008325480013010108C0 +:1025D00067800000130101FF23248100832502048A +:1025E0009307020023261100B387B7001386150056 +:1025F0002380A7002320C2049307A0006300F502F4 +:1026000093070004630CF6008320C10003248100BB +:102610001305000013010101678000009356F64185 +:102620001305020093050000EFF0DFF18320C100E5 +:10263000232002040324810013050000130101017B +:1026400067800000732700B0972700009387873CBE +:10265000631E050083A60700171600001306062C4C +:102660009725000023A4C53A3307D74023A0E700ED +:10267000732720B0631E050083A6470017160000CD +:102680001306462A9725000023A4C5383307D740F0 +:1026900023A2E700678000009316150013E71600D9 +:1026A00097F6FFFF938606969307000023A0E600A7 +:1026B00023A2F6006F0000003716000097F7FFFF17 +:1026C00093874794130636A79306000023A0C700FC +:1026D00023A2D7006F000000130101FF2326110081 +:1026E000EFF09FFB97F7FFFF9387C7911306D0107A +:1026F0009306000023A0C70023A2D7006F000000AC +:10270000834705006382070213060500834716000E +:1027100013061600E39C07FE3306A640930600004E +:10272000930500006FF01FE21306000093060000FF +:10273000930500006FF01FE1631005006780000043 +:10274000130101FD13070500232611021305C10023 +:102750001306B101130890006F0080001386070074 +:102760009377F700B337F800B307F04093F7770299 +:102770009376F70093870703B387F6002300F600EC +:102780009396C501135747009307F6FF33E7E6001A +:1027900093D54500E314C5FC230E0100EFF05FF66E +:1027A0008320C1021301010367800000130101FCB3 +:1027B00013034102130E05002322B1022324C10298 +:1027C0002326D10217050000130505E19306030037 +:1027D00013060E0093050000232E11002328E102AA +:1027E000232AF102232C0103232E11032326610047 +:1027F000EFF01F848320C1011305000013010104C1 +:1028000067800000130101FB13038103232481026D +:102810002326A100232CC102232ED102130405007C +:102820001386050017050000130585D09305C10028 +:1028300093060300232611022322F1042320E1043E +:102840002324010523261105232E6100EFF04FFEFE +:102850008327C100238007000325C1008320C10214 +:1028600033058540032481021301010567800000C0 +:10287000B3E7C500B367F50093F73700B306C500AB +:10288000638407023386C50093070500637ED50283 +:1028900003C705009385150093871700A38FE7FEF4 +:1028A000E318B6FE67800000E37ED5FE93070500BF +:1028B00003A70500938747009385450023AEE7FEF5 +:1028C000E3E8D7FE6780000067800000B367C500BB +:1028D00093F737003306C5006380070293F5F50FC1 +:1028E000930705006370C50493871700A38FB7FE95 +:1028F000E31CF6FE6780000093F5F50F1397850043 +:1029000033E7E500931707013367F700E374C5FE6B +:10291000930705009387470023AEE7FEE3ECC7FE6D +:102920006780000067800000130101F69727000010 +:102930009387C70E23244109172A0000130A0A0EA1 +:1029400023263109B309FA40232A910823282109B3 +:102950009304050013890500130502009385070001 +:1029600013860900232E1108232C810823225109E4 +:10297000930A0200EFF0DFEF1386C187330646416A +:102980009305000033853A01EFF05FF493050900E9 +:1029900013850400EFF05FDA9305000013050000D3 +:1029A000EF00D065172900001309C9068326090026 +:1029B0001304F103137404FC9304050063940604E8 +:1029C000832649006396060013850400EFF0DFCCF0 +:1029D00013090400972900009389490303A64900BD +:1029E0001305090097150000938505F6EFF09FE1A8 +:1029F0003309A900E30A24FD13050400EFF05FD0BA +:102A00006FF09FFC972900009389490003A60900F5 +:102A100097150000938545F313050400EFF09FDE42 +:102A2000832649003309A400E38606FC6FF01FFBF0 +:102A300083470500638E07009307050003C717004F +:102A400093871700E31C07FE3385A74067800000CB +:102A5000130500006780000013060500B306B600EA +:102A60001385050093070600639805006F00C001F9 +:102A7000938717006388F60003C70700E31A07FE71 +:102A80003385C740678000006780000083470500EA +:102A9000938515001305150003C7F5FF638807002C +:102AA000E386E7FE3385E740678000009307000078 +:102AB0006FF05FFF9307050003C7050093871700BA +:102AC00093851500A38FE7FEE31807FE67800000DB +:102AD0000347050093060002930705006318D7001B +:102AE00003C7170093871700E30CD7FE9306D002A5 +:102AF0006300D7069306B0026300D70483C60700BD +:102B000093050000638206041305000093871700F5 +:102B1000138606FD1317250083C607003305A7009B +:102B2000131515003305A600E39206FE6380050227 +:102B30003305A0406780000083C61700930500009E +:102B400093871700E39206FC1305000067800000DE +:102B500083C617009305100093871700E39606FAC3 +:102B6000130500006FF09FFE138F0500130800008F +:102B700063DC0500B337A000B305B040338FF540E8 +:102B80003305A0401308F0FF63DA0600B335C00038 +:102B90003307D040B306B7403306C0409308060061 +:102BA000138706009307050093050F00639406241E +:102BB000B7460080938686AA6376CF0E370301005E +:102BC0006378660C1303F00F6374C300130780006F +:102BD0003353E600B386660003CE0600330EEE00E4 +:102BE000130700023303C741630CC701B3156F001D +:102BF000335EC501B3186600B365BE00B317650048 +:102C000013D60801B3F6C502139508011355050143 +:102C100013D70701B3D5C5029396060133E7E60043 +:102C2000B305B502637AB70033071701636617016E +:102C30006374B700330717013307B740B376C70291 +:102C40009397070193D707013357C7023307E5026C +:102C500013950601B367F50063FAE700B387170120 +:102C600063E6170163F4E700B3871701B387E74012 +:102C700033D5670093050000630A0800B337A0004E +:102C8000B306B040B385F6403305A040678000002E +:102C90003703000113070001E36C66F2130780019C +:102CA0006FF01FF36316060093081000B3D8E80214 +:102CB0003706010063F6C8121306F00F637416019D +:102CC0001307800033D6E800B386C60003CE0600A3 +:102CD000B3051F41330EEE00130700023303C74153 +:102CE0006306C709B3986800B35ECF01B3176500E8 +:102CF000335EC50113D50801B3156F00336EBE00F6 +:102D00009395080193D5050113560E01B3D6AE0273 +:102D100033F7AE02B386D502131707013367C70036 +:102D2000637AD70033071701636617016374D7000E +:102D3000330717013306D7403377A602131E0E015F +:102D4000135E0E013356A602131707013386C50220 +:102D5000B365C70163FAC500B385150163E61501C4 +:102D600063F4C500B3851501B385C54093D608014A +:102D700033F7D502139508011355050113D6070142 +:102D8000B3D5D502131707013367C700B305B502E2 +:102D9000637AB70033071701636617016374B700DE +:102DA00033071701B305B74033F7D50293970701EF +:102DB00093D70701B3D5D502B305B50213150701A3 +:102DC000B367F50063FAB700B387170163E617012D +:102DD00063F4B700B3871701B387B7406FF05FE9BB +:102DE0003706000113070001E3EEC8EC130780016A +:102DF0006FF05FEDE362DFE83707010063FAE60496 +:102E0000930EF00F33B7DE0013173700B74800807A +:102E100033D3E600938888AAB388680083CE08007D +:102E2000B38EEE0013070002330ED741631CD703A5 +:102E300063E4E601636AC500B307C540B305DF403C +:102E40003335F500B385A540138507006FF0DFE249 +:102E5000B708000113070001E3EA16FB130780011E +:102E60006FF0DFFA3357D601B396C601B36FD700C0 +:102E7000B357DF0113D70F0133F3E702B315CF01C7 +:102E8000B356D501B3E6B60093950F0193D505016E +:102E900093D806013316C6013315C501B3D7E7022F +:102EA00013130301B3681301338FF5021383070073 +:102EB00063FEE801B388F8011383F7FF63E8F801C4 +:102EC00063F6E8011383E7FFB388F801B388E841AC +:102ED00033FFE8029396060193D60601B3D8E802C1 +:102EE000131F0F01336FDF00B385150393870800AD +:102EF000637EBF00330FFF019387F8FF6368FF0114 +:102F00006376BF009387E8FF330FFF01B305BF402F +:102F100013130301370F01003363F3009307FFFF1F +:102F2000B378F3009356060113530301B377F60009 +:102F30003387F802B307F302B388D8023303D3020E +:102F4000B388F80093560701B386160163F4F600C0 +:102F50003303E30193D7060133836700B70701000A +:102F60009387F7FFB3F6F600939606013377F700E1 +:102F70003387E60063E66500639E6500637CE500D9 +:102F80003306C7403337C7003307F7013303E34045 +:102F9000130706003307E5403335E500B385654088 +:102FA000B385A540B397D5013357C70133E5E70093 +:102FB000B3D5C5016FF05FCC93080500938705007A +:102FC000130806001385060013830800639406287F +:102FD000B7460080938686AA63F6C50E37070100C0 +:102FE0006378E60C1307F00F3337C7001317370069 +:102FF0003355E600B386A60083C60600130500021B +:103000003387E600B306E540630CE500B397D700CD +:1030100033D7E8003318D600B365F7003393D800F0 +:1030200093580801B3D71503131608011356060168 +:1030300013570301B3F6150313850700B305F60212 +:103040009396060133E7E600637EB7003307070176 +:103050001385F7FF636807016376B7001385E7FF01 +:10306000330707013307B740B3771703131303017F +:1030700013530301335717039397070133E3670093 +:10308000B306E60213060700637CD300330368002F +:103090001306F7FF636603016374D3001306E7FFAB +:1030A000131505013365C500930500006F00400E40 +:1030B0003705000113070001E36CA6F21307800136 +:1030C0006FF01FF363160600130710003358C70292 +:1030D000370701006370E80C1307F00F63740701F2 +:1030E000130580003357A800B386E60003C7060027 +:1030F000130600023307A700B306E6406316E60A8C +:10310000B38707419305100093580801131608016F +:103110001356060113570301B3F61703B3D717036A +:103120009396060133E7E600330EF6021385070097 +:10313000637EC701330707011385F7FF6368070143 +:103140006376C7011385E7FF330707013307C741DC +:10315000B3771703131303011353030133571703F3 +:103160009397070133E36700B306E60213060700EF +:10317000637CD300330368001306F7FF6366030123 +:103180006374D3001306E7FF131505013365C5000B +:10319000678000003707000113050001E364E8F4CD +:1031A000130580016FF01FF43318D800B3D5E70082 +:1031B0003393D800B397D70033D7E800935808016A +:1031C0003366F70033F715039317080193D7070108 +:1031D00013550601B3D51503131707013367A7006D +:1031E000B386B70213850500637ED7003307070156 +:1031F0001385F5FF636807016376D7001385E5FF44 +:1032000033070701B306D74033F716031316060139 +:1032100013560601B3D6160313170701B388D70256 +:10322000B367C7001387060063FE1701B387070162 +:103230001387F6FF63E8070163F617011387E6FFBC +:10324000B387070193150501B3871741B3E5E5007F +:103250006FF09FEB63E6D5183707010063F4E604CF +:103260001307F00FB335D70093953500374700802B +:1032700033D5B600130787AA3307A7000347070013 +:10328000130500023307B700B305E5406316E502F6 +:1032900013051000E3EEF6EE33B5C8001345150034 +:1032A0006FF01FEF3707000193050001E3E0E6FC34 +:1032B000930580016FF09FFB3353E600B396B60091 +:1032C0003363D30013550301B31EB60033D6E700B2 +:1032D000B376A602B397B70033D7E8003368F70098 +:1032E0009317030193D70701135708013356A6021A +:1032F0009396060133E7E600338FC702130E0600EC +:10330000637EE70133076700130EF6FF636867000B +:103310006376E701130EE6FF330767003307E741E3 +:10332000B376A7023357A702939606013386E702C6 +:103330009317080193D70701B3E7F6009306070038 +:1033400063FEC700B38767009306F7FF63E8670073 +:1033500063F6C7009306E7FFB387670013150E01F6 +:10336000370E01003365D5009306FEFF3378D50094 +:10337000B387C740B3F6DE001356050193DE0E0196 +:103380003303D802B306D602135703013308D80318 +:103390003308D800330707013306D6036374D70018 +:1033A0003306C601935607013386C60063E6C7029B +:1033B000E39CC7CEB70701009387F7FF3377F70089 +:1033C000131707013373F300B398B800330767008E +:1033D00093050000E3FEE8DA1305F5FF6FF0DFCC9C +:1033E00093050000130500006FF09FDA93080600B4 +:1033F000138706009307050013880500639C0622C7 +:10340000B7460080938686AA63FCC50C370301008B +:10341000637E660A1303F00F6374C3001307800012 +:103420003353E600B386660003CE0600330EEE008B +:10343000130700023303C741630CC701B39565004E +:10344000335EC501B31866003368BE00B31765006C +:1034500013D608013377C8021395080113550501E7 +:1034600093D607013358C80213170701B366D70074 +:103470003308050363FA0601B386160163E61601F5 +:1034800063F40601B3861601B386064133F7C6021C +:103490009397070193D70701B3D6C602B306D502A7 +:1034A00013150701B367F50063FAD700B387170157 +:1034B00063E6170163F4D700B3871701B387D740DA +:1034C00033D56700930500006780000037030001D3 +:1034D00013070001E36666F4130780016FF05FF4E1 +:1034E0006316060013061000B358160337060100D2 +:1034F00063F2C80A1306F00F637416011307800005 +:1035000033D6E800B386C60003CE0600330EEE00C5 +:10351000130700023303C7416318C709B385154178 +:1035200013D70801139508011355050113D6070198 +:10353000B3F6E502B3D5E50293960601B3E6C600FD +:10354000B305B50263FAB600B386160163E6160149 +:1035500063F4B600B3861601B385B640B3F6E50250 +:103560009397070193D70701B3D5E502B305B502D9 +:1035700013950601B367F50063FAB700B387170127 +:1035800063E6170163F4B700B3871701B387B74049 +:103590006FF01FF33706000113070001E3E2C8F6DE +:1035A000130780016FF0DFF5B398680033D7C501CA +:1035B000B3176500335EC50113D50801B376A702C2 +:1035C000B3956500336EBE009395080193D5050150 +:1035D00013560E013357A70293960601B3E6C600B1 +:1035E0003387E50263FAE600B386160163E6160147 +:1035F00063F4E600B38616013386E640B376A6028E +:10360000131E0E01135E0E013356A6029396060199 +:103610003386C502B3E5C60163FAC500B38515015B +:1036200063E6150163F4C500B3851501B385C54094 +:103630006FF01FEFE3EAD5E83707010063FCE6040B +:10364000130EF00F3337DE0013173700B748008032 +:1036500033D3E600938888AAB388680003CE0800B5 +:10366000330EEE00130700023303C741631EC70386 +:1036700063E4B600636AC500B307C540B385D540AF +:103680003335F5003388A5401385070093050800FE +:103690006FF09FE3B708000113070001E3E816FB92 +:1036A000130780016FF09FFA3357C601B396660087 +:1036B000336FD700B3D7C50113570F01B3F8E70233 +:1036C000B39565003358C5013368B80093150F01F1 +:1036D00093D505019356080133166600331565002E +:1036E000B3D7E70293980801B3E6D800B38EF5028A +:1036F0009388070063FED601B386E6019388F7FF3F +:1037000063E8E60163F6D6019388E7FFB386E60136 +:10371000B386D641B3FEE602131808011358080118 +:10372000B3D6E602939E0E01B3EE0E01B385D50229 +:103730009387060063FEBE00B38EEE019387F6FF0B +:1037400063E8EE0163F6BE009387E6FFB38EEE01F9 +:10375000B385BE4093980801B70E0100B3E8F800A6 +:103760009387FEFF33F8F8009356060193D80801BB +:10377000B377F6003307F802B387F8023308D802AC +:10378000B388D8023308F80093560701B3860601C0 +:1037900063F4F600B388D801B70701009387F7FFF9 +:1037A00013D80601B3F6F600939606013377F700B7 +:1037B000B30818013387E60063E61501639E15011F +:1037C000637CE5003306C7403337C7003307E701A2 +:1037D000B388E840130706003307E5403335E500BA +:1037E000B3851541B385A540B397C501335767002D +:0C37F00033E5E700B3D565006FF01FCD96 +:1037FC00130101B32324814C2322914C2320214D0E +:10380C00970400009384C43E1719000013094989DA +:10381C0013040100232E314B2326114C930909006C +:10382C0013060400930609009387040003A70700FE +:10383C0083A5060093874700938646003307B7009D +:10384C002320E60013064600E39237FF1305100011 +:10385C00EFE09FDE1307040083A704008326090012 +:10386C009384440013094900B387D7002320F70041 +:10387C0013074700E39234FF13050000EFE0DFDB92 +:10388C00971700009387C7CC130500001308C012CC +:10389C008326040003A707008325440003A64700E2 +:1038AC00639CE60213052500639AC500130484008B +:1038BC0093878700E31E05FD130500008320C14C90 +:1038CC000324814C8324414C0329014C8329C14B93 +:1038DC001301014D67800000130515006FF01FFEEA +:1038EC00130101FF170500001305C5032326110062 +:1038FC00EFE05FE08320C1001305F0FF130101012D +:04390C0067800000D0 +:10391000286E756C6C2900006D6379636C6500001E +:103920006D696E737472657400000000496D706C8F +:10393000656D656E74206D61696E28292C20666F37 +:0D3940006F210A002573203D2025640A0038 +:1039500060E8FFFFFCE7FFFF6CE8FFFFFCE7FFFF0D +:10396000FCE7FFFFFCE7FFFFFCE7FFFF7CE8FFFF52 +:10397000FCE7FFFFFCE7FFFFE0E7FFFFACEAFFFF2C +:10398000FCE7FFFFE0E7FFFF10E8FFFF10E8FFFFA5 +:1039900010E8FFFF10E8FFFF10E8FFFF10E8FFFF4F +:1039A00010E8FFFF10E8FFFF10E8FFFFFCE7FFFF54 +:1039B000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF83 +:1039C000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF73 +:1039D000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF63 +:1039E000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF53 +:1039F000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF43 +:103A0000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF32 +:103A1000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF22 +:103A2000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF12 +:103A3000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFF02 +:103A4000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFFF2 +:103A5000C4EAFFFFACE9FFFFFCE7FFFFFCE7FFFF65 +:103A6000FCE7FFFFFCE7FFFFFCE7FFFFFCE7FFFFD2 +:103A7000FCE7FFFFE0EAFFFFFCE7FFFFFCE7FFFFDB +:103A800050EBFFFF98E8FFFFFCE7FFFFFCE7FFFFBD +:103A9000FCE9FFFFFCE7FFFF5CEBFFFFFCE7FFFF3C +:103AA000FCE7FFFFE0E9FFFF00010202030303035D +:103AB00004040404040404040505050505050505BE +:103AC000050505050505050506060606060606069E +:103AD0000606060606060606060606060606060686 +:103AE000060606060606060607070707070707076E +:103AF0000707070707070707070707070707070756 +:103B00000707070707070707070707070707070745 +:103B10000707070707070707070707070707070735 +:103B2000070707070707070708080808080808081D +:103B30000808080808080808080808080808080805 +:103B400008080808080808080808080808080808F5 +:103B500008080808080808080808080808080808E5 +:103B600008080808080808080808080808080808D5 +:103B700008080808080808080808080808080808C5 +:103B800008080808080808080808080808080808B5 +:103B900008080808080808080808080808080808A5 +:083BA0000808080808080808DD +:103BA8001000000000000000037A5200017C0101AF +:103BB8001B0D02001000000018000000A4EFFFFF1A +:103BC8005004000000000000100000002C0000005D +:103BD800E0F3FFFF340400000000000010000000C4 +:103BE8004000000000F8FFFF100400000000000083 +:103BF800290000004103000034020000BB0000005F +:103C0800ED0200005E01000084000000B503000022 +:103C180048020000250300006D02000006000000B5 +:103C2800A30300007A03000088010000B602000028 +:103C3800C10300006E0000007400000028010000AD +:103C4800AA0100003A0100009302000006030000E8 +:103C58003F010000A60200006B030000780100008D +:103C6800DA010000AA0300001B020000390200006C +:103C7800CB00000018010000F70200005E020000FF +:103C8800FF01000091020000C30000005100000085 +:103C98000B010000E500000051010000B003000026 +:103CA80086030000F1000000910300003A030000C1 +:103CB800A5030000D9030000C3000000C0030000F2 +:103CC800360200005E010000890200009102000037 +:103CD800B50000006F0000005B0300004100000019 +:103CE800200100005D0100008D0000008903000034 +:103CF800760300000801000040020000D303000022 +:103D0800F9020000F1000000DE010000F3010000EC +:103D180093010000DE000000BC010000D102000099 +:103D2800A40200003D010000E0000000A90300001B +:103D38002001000077000000670200005E0200001A +:103D4800850100005F010000C701000016010000A6 +:103D58006F01000066010000480200003E000000FC +:103D6800D9030000930100005A0100000502000079 +:103D78002F0200008C03000007030000FF00000072 +:103D88000A030000560200008F0000002100000016 +:103D98007D000000AD030000A50300001F03000024 +:103DA80029020000AF01000088020000B8030000EB +:103DB8001F01000013000000310000005600000041 +:103DC8005F000000B90100004B020000660200001D +:103DD8007E0100001801000028030000CB0300004A +:103DE8003303000058010000C20100000002000077 +:103DF800C50300005B0100002803000072030000F7 +:103E080019020000B2030000BD02000064010000B6 +:103E1800370200007B030000160000003802000093 +:103E280099020000A7010000B20100009E000000F6 +:103E38000200000054000000F700000031000000FC +:103E4800B30100001803000065030000E60100004C +:103E58009E0100007101000024020000060200001B +:103E680078030000AA0200001C01000008010000FD +:103E7800F30100002201000081030000D7000000C8 +:103E8800DB020000B0020000FB000000120300008B +:103E98002B0200002E01000010020000200200008A +:103EA80042010000B30300001F01000038030000B6 +:103EB8003001000014030000DD020000BF03000011 +:103EC8006E010000D202000026010000CF030000AE +:103ED8008D020000EC0200005B0000007A01000087 +:103EE80069000000660000007D0100008B020000F0 +:103EF800390300004803000064010000940000003A +:103F0800360000008C000000BB03000057010000D1 +:103F180015020000F5020000090200004503000038 +:103F2800500200000D000000AD0000003F0000003E +:103F38007900000085000000F6020000740100000E +:103F4800B703000027000000810000006E00000099 +:103F58004F030000B5010000FF0000000D01000044 +:103F680099010000740200008F0100002502000082 +:103F7800F102000034020000AB0000001300000052 +:103F8800D7020000F5010000090300002B00000023 +:103F9800F102000051000000CA00000055030000B3 +:103FA80099000000F802000065010000AF0300005E +:103FB8009A03000048010000F0010000BA01000067 +:103FC8000402000081020000140100001203000036 +:103FD800710000004A0300008B0300001301000079 +:103FE800ED00000020000000100300003502000072 +:103FF800650100002303000033030000EF02000006 +:104008001801000055000000CA010000C6010000A8 +:10401800C6020000CB01000029000000FD000000DE +:1040280079010000FC010000BC0200005C030000F4 +:10403800E0010000E5020000F3010000C5020000F5 +:10404800310000007301000069030000B1030000A3 +:10405800E00300000E020000D1020000B3010000DE +:10406800E8000000F1010000B90200001E00000095 +:104078005C010000FA0000005E010000FA00000088 +:104088003D02000010030000ED020000F6010000F0 +:10409800370300003A030000AA000000A000000057 +:1040A800C60100004F01000001000000DD03000010 +:1040B8006D0100003C020000400000009900000073 +:1040C800D80000008C000000D20000003C02000074 +:1040D800530100005102000082030000E4000000C8 +:1040E8000C00000073030000EE02000086020000CE +:1040F800F4010000B4010000BD0200002C03000020 +:10410800D503000096000000B80200003402000049 +:10411800100100000201000087020000FD010000FC +:1041280058000000BF0200009D0200007701000057 +:1041380027020000A8030000500200003902000016 +:10414800B8030000200300004802000083020000BA +:1041580070010000E9010000480100003901000079 +:1041680050020000840100001F02000089020000C4 +:10417800D3030000E50300002E0300004F000000F9 +:10418800D0000000E6030000750200004F030000A5 +:10419800C0020000E5030000FD000000CB020000A3 +:1041A800AE0100009F0100001A020000BC020000DE +:1041B80004000000EE01000064000000600300003D +:1041C800B5020000A0010000280100001D01000048 +:1041D8006C0200004E0000005F0100001C0200009D +:1041E80086020000A90000000F0200002101000063 +:1041F8001C03000021030000D0020000F6020000AA +:10420800E90200005C000000DD0300000F0100006F +:10421800550300001403000013020000DE00000034 +:10422800CD010000F1000000660100004C01000013 +:10423800AC020000E4020000BE01000037010000EB +:10424800E70200002D020000DF0100002D0200003F +:104258009D0300001C030000650100007B030000B3 +:104268009A020000020200002D020000660300000E +:1042780055030000B80100003D000000A602000040 +:104288008C0100000900000011000000AA000000D5 +:10429800230100007C01000018020000B9000000A2 +:1042A800950300001B020000D703000077030000FD +:1042B8003600000064020000B7030000DF010000C0 +:1042C8009700000007000000810200004F01000075 +:1042D800DA0200005F000000D802000018010000A8 +:1042E8008B010000B00200008F030000DC01000019 +:1042F8002F030000D9020000090100007F00000020 +:10430800EC000000D6000000B40000000600000029 +:10431800F701000054020000AD0000008302000015 +:104328005A01000057020000440000005103000039 +:10433800920200006B020000790000008300000078 +:104348003C0300009B020000B1010000E7010000EF +:10435800F10200007D000000720200000E00000063 +:104368000A000000930100006A000000BF0200007C +:1043780032030000C4030000960100006A03000035 +:1043880058030000560000003C00000094020000A2 +:104398009B02000099000000790000006200000004 +:1043A8009C010000EC0000000C000000A7010000C8 +:1043B800C5030000D80000006D020000690100007C +:1043C80099030000CB020000870200002B010000C7 +:1043D80076030000AA02000024000000ED0100009E +:1043E8002702000019020000C90300008302000030 +:1043F800B20100009F0100002F010000B60100007B +:104408005C030000CB000000DE010000DC030000BC +:10441800A3020000CF020000DE03000052010000EA +:10442800C2010000790200009B0000008602000023 +:10443800C4010000AB010000FD010000DC03000026 +:10444800AA0100000C000000E30100008E0000003B +:10445800530100008601000032000000AB0000009C +:104468005902000069000000C8030000790000003C +:104478006F030000510000006603000058020000AE +:104488005B0200006703000077030000620200007F +:1044980094010000EA000000E90200000E0200009A +:1044A80013010000B9010000E2000000F002000062 +:1044B800AF030000D6020000C5020000C9000000DA +:1044C80036000000F6020000350000008D010000F3 +:1044D800290000008D000000A0010000EB02000090 +:1044E800DB000000DE01000002030000B400000051 +:1044F800E2010000B3020000D5020000AD00000098 +:10450800BA0000009203000001000000C30300008D +:10451800F7000000D00100006A0100000902000055 +:10452800E900000078000000280000000B030000EC +:10453800C3000000A1000000E7020000B70100006E +:1045480063010000930100008D0000007902000063 +:10455800EF010000900400003502000098040000FC +:104568005A0400009A030000C40000004E04000032 +:1045780020030000B10300003F03000042020000D6 +:10458800F6040000CB0500000A0500009A030000AD +:10459800CD030000E103000062030000AE03000049 +:1045A8009E030000EE0200005005000032060000E5 +:1045B800140500003C03000023060000AC030000C3 +:1045C800EA020000AC040000A20400003604000067 +:1045D80023010000D703000094050000D503000064 +:1045E8002604000039060000130300008A020000B8 +:1045F800C30400000504000099030000330600000E +:10460800F6040000DA020000D90400007304000078 +:10461800F50500005D050000E20200004906000003 +:104628000906000043050000B7050000E00200008D +:104638008501000055040000D0050000900300002B +:10464800E0030000420500008A0100005406000053 +:1046580024050000A70200005A0400008F0600008D +:10466800FD020000DF0200004202000053050000C6 +:10467800480400007E020000E4020000EE0300008F +:10468800100500008B0100003F020000C505000076 +:10469800A603000020010000760400007F0300004C +:1046A800A104000080040000970400000C0400002E +:1046B80058040000C2010000250600004D0100005A +:1046C8002E070000A70400006D030000E3020000AD +:1046D800FC0300007D0400006D0400004B02000094 +:1046E800B60500003A0500004D0200005801000020 +:1046F80064030000DA050000840500004C05000092 +:10470800C6050000CB040000ED03000033070000DD +:10471800B9030000150200005E020000BC0300009F +:10472800B403000071030000880200000C050000BB +:104738000A0300002101000039030000750400008D +:1047480056040000D4020000DA030000B902000099 +:104758005A07000076030000FF060000E906000083 +:104768004F02000016060000740600004303000014 +:10477800CE020000820300009702000087030000B9 +:1047880073050000060200008A040000B60100005C +:104798008D01000004030000860400000D020000E3 +:1047A800E2040000F10500006E040000650200004C +:1047B8008A02000047020000D80200000C02000034 +:1047C8006F050000FE040000C90100008B03000013 +:1047D8004D03000079030000C50300002804000011 +:1047E8006D0500001B050000740100009503000022 +:1047F80067050000C9030000C103000007040000AA +:104808003304000030040000910300004603000058 +:104818003A010000A7040000470300007E060000DC +:10482800A004000096060000BC0200003907000042 +:10483800E505000042030000970000000E04000098 +:1048480004030000FF000000F6010000ED02000074 +:10485800D504000034040000700100003B02000091 +:10486800FB0300006401000028060000C0020000ED +:10487800AE050000C00500009004000070040000B0 +:10488800C6050000B7020000D10000002C0200009D +:10489800A00200009E020000BF060000F70300000F +:1048A80069050000C6010000B001000024020000F4 +:1048B800AB06000080020000DD020000E9040000F1 +:1048C8003C040000430500006D050000770300006C +:1048D800B3040000AD040000460100009902000086 +:1048E8009B040000A0030000060500000704000068 +:1048F8009B0400005D000000AD020000E30300001F +:10490800EC0100007E040000970100005A0400003A +:10491800F3050000B1010000B805000033020000F3 +:1049280073050000D20200007A0400006A05000046 +:10493800CC020000B1060000020700007503000069 +:10494800810200000A010000F9050000430400008C +:1049580078020000DC04000015040000DF050000F8 +:10496800C70400002B0300008F0400008F02000022 +:10497800FC020000C10400005E0000008A02000082 +:10498800A2010000890200005C0400004706000044 +:10499800BB020000C3040000F50400007903000016 +:1049A80013020000260400003E0600005E0400001A +:1049B8009A040000A0050000D2020000760500005D +:1049C800DF010000C10300002304000027020000EB +:1049D8004502000072010000860100000504000085 +:1049E80000030000B1030000D4050000AD0300007F +:1049F8009A040000CD0400003701000019030000EC +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/debugPlugin.hex b/benchmarks/riscv_tests/debugPlugin.hex deleted file mode 100644 index dc54d319..00000000 --- a/benchmarks/riscv_tests/debugPlugin.hex +++ /dev/null @@ -1,6 +0,0 @@ -:0200000480007A -:100000009300A000130140019301E0017300100070 -:10001000B381200073001000938111009381A1002F -:080020009381410673001000FA -:04000005800000284F -:00000001FF diff --git a/benchmarks/riscv_tests/debugPluginExternal.hex b/benchmarks/riscv_tests/debugPluginExternal.hex deleted file mode 100644 index b727d9cf..00000000 --- a/benchmarks/riscv_tests/debugPluginExternal.hex +++ /dev/null @@ -1,39 +0,0 @@ -:100000006F008013130000001300000013000000B5 -:100010001300000013000000130000001300000094 -:1000200013000000130101F82320310023221100E6 -:10003000232421002326310023284100232A5100B4 -:10004000232C6100232E71002320810223229102A0 -:100050002324A1022326B1022328C102232AD1028C -:10006000232CE102232EF102232001052322110576 -:10007000232421052326310523284105232A510560 -:10008000232C6105232E710523208107232291074C -:100090002324A1072326B1072328C107232AD10738 -:1000A000232CE107232EF1071300000013000000AA -:1000B0001300000013000000832041008321C100D1 -:1000C0000322010183224101032381018323C10112 -:1000D0000324010283244102032581028325C102F6 -:1000E0000326010383264103032781038327C103DA -:1000F0000328010483284104032981048329C104BE -:10010000032A0105832A4105032B8105832BC105A1 -:10011000032C0106832C4106032D8106832DC10685 -:10012000032E0107832E4107032F8107832FC10769 -:1001300013010108130000001711000013010188CA -:10014000130540011300000013000000130000001D -:100150001305F5FFE31805FE170500401305C5F16B -:1001600097050040938545F16308B50023200500FD -:10017000130545006FF05FFF170500401305C5EF3D -:100180001301C1FF97050040938505EF630EB5008D -:1001900083260500130545002320A100E780060003 -:1001A000032501006FF01FFE1301410017030040FB -:0801B000E70043E56F000000C9 -:020000044000BA -:10000000130101FE232E8100130401029307100047 -:100010002324F4FE930720002322F4FE93073000EC -:100020002320F4FE032784FE832744FE3307F700D2 -:10003000832704FEB307F7002326F4FE8327C4FEBC -:10004000938717002326F4FE8327C4FE9387270097 -:100050002326F4FE0327C4FE832704FEB307F7001C -:100060002326F4FEB70700900327C4FE23A0E70071 -:040070006FF09FFD91 -:0400000300000138C0 -:00000001FF diff --git a/benchmarks/riscv_tests/dhrystoneO3.hex b/benchmarks/riscv_tests/dhrystoneO3.hex deleted file mode 100644 index add90b2e..00000000 --- a/benchmarks/riscv_tests/dhrystoneO3.hex +++ /dev/null @@ -1,917 +0,0 @@ -:0200000480007A -:100000006F00000B1300000013000000130000003D -:100010001300000013000000130000001300000094 -:10002000232E11FE232C51FE232A61FE232871FE6C -:100030002326A1FE2324B1FE2322C1FE2320D1FECC -:10004000232EE1FC232CF1FC232A01FD232811FDA2 -:100050002326C1FD2324D1FD2322E1FD2320F1FD30 -:10006000130101FCEF00400B8320C10383228103B5 -:1000700003234103832301030325C1028325810256 -:1000800003264102832601020327C1018327810140 -:100090000328410183280101032EC100832E810022 -:1000A000032F4100832F010013010104730020304E -:1000B00097410000938101031771000013018185AE -:1000C0001385C18197650000938505446308B500D9 -:1000D00023200500130545006FF05FFF1745000062 -:1000E000130505801301C1FF973500009385457FF7 -:1000F000630EB50083260500130545002320A100EB -:10010000E7800600032501006FF01FFE1301410088 -:08011000EF20107F6F000000DA -:100118006780000003C75183930710046304F70046 -:10012800678000008327050003A7C1839387970092 -:10013800B387E7402320F5006780000003A64184C9 -:1001480063080600032706002320E50003A6418470 -:1001580083A5C1831306C6001305A0006F00D00F46 -:10016800130101FF2320210183A741842324810057 -:100178000324050003A707002322910083AE47004C -:1001880003AE870003A3070183A8470103A88701DB -:1001980083A5070203A6470283A687022326110028 -:1001A8009304050003A5C70183A7C7022320E40021 -:1001B80003A70400232EA4002326F4022322D4013B -:1001C800930750002324C40123286400232A140120 -:1001D800232C04012320B4022322C4022324D402A2 -:1001E80023A6F4002326F4002320E40013050400CA -:1001F800EFF0DFF4832744006380070883A7040037 -:100208008320C1000324810083AF070003AF4700A8 -:1002180083AE870003AEC70003A3070183A8470185 -:1002280003A8870183A5C70103A6070283A647027F -:1002380003A7870283A7C70223A0F40123A2E4012E -:1002480023A4D40123A6C40123A8640023AA14016B -:1002580023AC040123AEB40023A0C40223A2D40219 -:1002680023A4E40223A6F402032901008324410005 -:10027800130101016780000003A584009307600053 -:10028800930584002326F400EF00D01083A741844F -:100298000325C4001306C40083A707008320C100F8 -:1002A800832441002320F400032481000329010052 -:1002B8009305A000130101016F00007A83C75183E1 -:1002C80083A681839387F7FB93B71700B3E7D7001B -:1002D80023ACF18213072004238AE182678000009F -:1002E80013071004A38AE18223AC0182678000000F -:1002F800130101F613050003232E1108232C81088E -:10030800232C81072326B107232A910823282109B2 -:100318002326310923244109232251092320610975 -:10032800232E7107232A91072328A107EF00501FC6 -:1003380023A0A18413050003EF00901E83A7018466 -:1003480023A2A1842320F500930720002324F5008D -:10035800B7350080930780022326F5001306F001C5 -:10036800938545122322050013050501EF00D034BB -:10037800373700809307C768032EC76803A3470071 -:1003880083A8870003A8C70083A5070103A6470120 -:1003980083A6870103D7C70183C7E701B74D00804C -:1003A800231EE102230FF10213874D9F9307A0003C -:1003B8001305A000232EF7642320C1032322610222 -:1003C80023241103232601032328B102232AC1026F -:1003D800232CD102EF00D02C3735008013054514AB -:1003E800EF00D0271305A000EF00902B83A701830F -:1003F800638007623735008013054517EF00102624 -:100408001305A000EF00D029373500801305051D1E -:10041800EF0090131305A000EF00902837350080F7 -:100428009305800C13058520EF001012EF001028AB -:10043800373400808327C46A373D0080832BCD6C16 -:100448002324F10023A6A182930910001304C46A8F -:1004580093042000EFF0DFE8EFF05FE68347E40164 -:1004680003264401032E4400032384008328C40088 -:1004780003280401832684010357C401832E8100C5 -:10048800230FF104930501049307100013050102DB -:10049800232AC104232EF100232A91002320D10509 -:1004A8002322C105232461042326110523280105DD -:1004B800232CD104231EE104EF0000670326410129 -:1004C8001335150023ACA18263CAC4029317260012 -:1004D800B387C7009387D7FF13050600930530003D -:1004E80013068101232CF100EF0000570326410178 -:1004F80013061600232AC100E3DAC4FC832681010F -:100508001385C18493854D9FEF00005603A5418450 -:10051800930A1004130A3000EFF09FC403C7418305 -:1005280093070004930CCD6C63F4E70213850A006B -:1005380093053004EF00405D8327C10113871A003B -:100548006302F54683C74183937AF70FE3F057FFB9 -:100558008325410113050A0093891900EF2090278C -:10056800832A81012326A10093850A00EF20D02841 -:10057800130A050013054101232A4101EFF09FB931 -:100588009307900CE398F9ECEF00501223A4A18292 -:100598003735008013058523EF00500C1305A000A4 -:1005A800EF0010103735008013058524EF00100B7D -:1005B8001305A000EF00D00E83A5C1833735008056 -:1005C8001305052837340080EF00007893055000A4 -:1005D8001305C429EF00407783A581833735008050 -:1005E8001305852BEF004076930510001305C429E9 -:1005F800EF00807583C55183373500801305452D7D -:10060800EF008074B7340080930510041385042F1D -:10061800EF00807383C54183373500801305C530EB -:10062800EF008072930520041385042FEF00C0713A -:100638009387C18483A50702373500801305853267 -:10064800EF008070930570001305C429EF00C06F98 -:10065800B74700809387479F83A5C76537350080D4 -:1006680013054534EF00406E373500801305053615 -:10067800EF00C07E373500801305C538EF00007ED7 -:1006880083A74184B73D008013858D3983A5070072 -:10069800B73C0080B73B0080EF00006B3735008027 -:1006A8001305453BEF00807B83A7418413854C3EAF -:1006B800373B008083A54700B73900803739008071 -:1006C800EF008068930500001305C429EF00C06798 -:1006D80083A7418413850B4083A58700EF00C0667C -:1006E800930520001305C429EF00006683A7418401 -:1006F8001305CB4183A5C700EF00006593051001E2 -:100708001305C429EF00406483A5418413858943F8 -:1007180093850501EF00406313054945EF00007418 -:100728003735008013058548EF00407383A701849F -:1007380013858D3983A50700EF00006137350080E8 -:1007480013058549EF00807183A7018413854C3E0A -:1007580083A54700EF00405F930500001305C429F7 -:10076800EF00805E83A7018413850B4083A5870073 -:10077800EF00805D930510001305C429EF00C05CED -:1007880083A701841305CB4183A5C700EF00C05B95 -:10079800930520011305C429EF00005B83A501849C -:1007A8001385894393850501EF00005A13054945D0 -:1007B800EF00C06A83254101373500801305854D58 -:1007C800EF008058930550001305C429EF00C05767 -:1007D8008327C100373500801305454FB38A574139 -:1007E80093973A00B38A5741B3854A41EF00C05501 -:1007F8009305D0001305C429EF0000558325810116 -:100808003735008013050551EF000054930570003B -:100818001305C429EF0040538325C10137350080F3 -:100828001305C552EF004052930510001305C42963 -:10083800EF00805137350080930501021305855478 -:10084800EF0080503735008013054556EF000061F2 -:10085800373500809305010413058559EF00C04E14 -:10086800373500801305455BEF00405F1305A00096 -:10087800EF00006303A7C18283A581829307301F1D -:10088800B385E54023A2B18263D0B71A373500801B -:1008980013050564EF00404B03A54182EF200037A4 -:1008A80013040500EF20C048B747008003A6078E51 -:1008B80083A6478EEF108007B747008003A6878E70 -:1008C80083A6C78EEF009005EF20405723A0A18292 -:1008D800B747008003A5078F93050400EF10007445 -:1008E80023AEA1803735008013054565EF00C0456C -:1008F80003A54182EF208031B747008093050500AA -:1009080003A5478FEF10807113040500EF2000291D -:1009180093040500EF20802F9305050013050400BC -:10092800EF105060B747008083A5878FEF1090289D -:10093800EF20C02613040500373500809385040096 -:1009480013054568EF0040409307900063D0871077 -:10095800373500809305040013058568EF00C03E15 -:100968001305A000EF00C0538320C10903248109A7 -:1009780083244109032901098329C108032A81081D -:10098800832A4108032B0108832BC107032C810705 -:10099800832C4107032D0107832DC1061301010A8A -:1009A800678000009305C10113050000EF00801E59 -:1009B80003AE4C0003A38C0083A8CC0003A80C0151 -:1009C80003A54C0183A58C0103D6CC0103C7EC0118 -:1009D80083C74183938A1A00232071052322C10506 -:1009E800232461042326110523280105232AA104B1 -:1009F800232CB104231EC104230FE10423AE318349 -:100A080093FAFA0F138A0900E3F257B36FF05FB451 -:100A1800373500801305051AEF0040441305A00080 -:100A2800EF0000486FF05F9E373500801305855E44 -:100A3800EF00C0423735008013050562EF00004221 -:100A48001305A000EF00C0456FF01FF21305000367 -:100A5800EF0000456FF0DFEF13052500B305B50083 -:100A68002320B60067800000130101FE2326310110 -:100A780093095600232A910093942900232C81007E -:100A880023282101232E1100B30495001309060021 -:100A98001384050023AC340723A0D40023A2D40078 -:100AA800138509009305800CEF20C0521319290003 -:100AB800B3072501B307F40003A7070123AA3701E9 -:100AC80023AC37011307170023A8E70083A7040006 -:100AD8003304A400330424013716000033048600CD -:100AE800232AF4FA8320C10103248101130750004B -:100AF80023AEE18283244101032901018329C10036 -:100B080013010102678000001375F50F93F5F50FC7 -:100B18006306B5001305000067800000A38AA18260 -:100B28001305100067800000130101FF23248100D2 -:100B38002322910023261100130405009384050045 -:100B480083C5340003452400EFF01FFCE31A05FEBB -:100B58009385040013050400EF0080449307000008 -:100B68006358A0001307A00023AEE182930710008A -:100B78008320C100032481008324410013850700DA -:100B880013010101678000001305E5FF1335150007 -:100B980067800000130101FF2324810023229100B4 -:100BA800232611001304050093840500EFF0DFFDF0 -:100BB800630E050223A08400930710006300F40469 -:100BC8006304040413072000630CE4049307400043 -:100BD8006314F40023A0E4008320C10003248100EF -:100BE800832441001301010167800000930730004E -:100BF80023A0F40093071000E314F4FC03A7C183B7 -:100C08009307400663DAE7028320C10003248100CA -:100C180023A0040083244100130101016780000020 -:100C28008320C1000324810023A0F4008324410011 -:100C380013010101678000008320C10003248100A3 -:100C48009307300023A0F40083244100130101011D -:100C580067800000130101FF23248100232611006F -:100C68001304050003450500630A05001304140076 -:100C7800EF00002303450400E31A05FE8320C100AA -:100C88000324810013010101678000006F004021E7 -:100C9800130101FD2322910223261102232481023C -:100CA800232021039304050063440506130901006A -:100CB800130409006F004002EF20403C930705032E -:100CC80013041400138504009305A000A30FF4FE79 -:100CD800EF208032930405009305A00013850400DB -:100CE800E39C04FCE30A24FD1304F4FF0345040019 -:100CF800EFF0DFF9E31A24FF8320C1020324810205 -:100D080083244102032901021301010367800000C3 -:100D18001305D002EFF09FF7B30490406FF01FF96E -:100D280003A78184B307A7003765008023A4F18453 -:100D380013054510930600403305E50063D4F6001B -:100D48007300100067800000130101FB232C410190 -:100D58002326110223248102232291022320210326 -:100D6800232E3101232A5101130A050003450500EA -:100D78002322F10493074103232AB102232CC10241 -:100D8800232ED1022320E104232401052326110563 -:100D98002326F1006308050213040000930A500299 -:100DA800930430061309300793094006630E550370 -:100DB800EFF0DFED13041400B3078A0003C5070042 -:100DC800E31605FE8320C102032481028324410225 -:100DD800032901028329C101032A8101832A4101D0 -:100DE8001301010567800000930614003307DA0039 -:100DF8006F000001638C270363863705938616000E -:100E0800834707001384060013071700E38407FAD3 -:100E1800E39297FE8327C10003A507009387470045 -:100E28002326F100EFF09FE66FF0DFF88327C1007B -:100E380003A50700938747002326F100EFF09FE101 -:100E48006FF05FF78327C10003A50700938747006A -:100E58002326F100EFF0DFE36FF0DFF5130101FF68 -:100E680023248100232611001304050003450500EF -:100E7800630A050013041400EF0080020345040010 -:100E8800E31A05FE1305A000EF0080018320C100CE -:100E9800032481001305000013010101678000008D -:100EA800B70710F023A0A7F067800000B70710F07D -:100EB80003A507F167800000B3C7A50093F73700C3 -:100EC8003307C500639607009307300063E4C70241 -:100ED80093070500636CE5006780000083C6050082 -:100EE8009387170093851500A38FD7FEE3E8E7FEE5 -:100EF8006780000093773500639207089307050021 -:100F08009376C7FF138606FE63F6C70883A305001A -:100F180083A2450083AF850003AFC50083AE0501FA -:100F280003AE450103A3850183A8C5019385450246 -:100F38009387470203A8C5FF23AE77FC23A057FE7B -:100F480023A2F7FF23A4E7FF23A6D7FF23A8C7FF01 -:100F580023AA67FE23AC17FF23AE07FF6FF0DFFA63 -:100F680083C605009387170093851500A38FD7FEC6 -:100F780093F63700E39606FE6FF09FF89307050097 -:100F88006FF01FFF03A60500938747009385450070 -:100F980023AEC7FEE3E8D7FEE3EAE7F46780000084 -:100FA8003367B5009303F0FF13773700631007101A -:100FB800B7877F7F9387F7F70326050083A6050089 -:100FC800B372F6003363F600B382F200B3E2620054 -:100FD800639272106316D6080326450083A645005F -:100FE800B372F6003363F600B382F200B3E2620034 -:100FF800639E720C6316D6060326850083A68500B9 -:10100800B372F6003363F600B382F200B3E2620013 -:101018006398720C6316D6040326C50083A6C50020 -:10102800B372F6003363F600B382F200B3E26200F3 -:101038006392720C6316D6020326050183A6050186 -:10104800B372F6003363F600B382F200B3E26200D3 -:10105800639C720A1305450193854501E30ED6F496 -:101068001317060193970601631EF700135706012D -:1010780093D706013305F7409375F50F6390050282 -:10108800678000001357070193D707013305F7401E -:101098009375F50F63940500678000001377F70FC9 -:1010A80093F7F70F3305F740678000000346050004 -:1010B80083C6050013051500938515006314D60033 -:1010C800E31606FE3305D640678000001305450089 -:1010D80093854500E31CD6FC1305000067800000DB -:1010E8001305850093858500E312D6FC13050000DF -:1010F800678000001305C5009385C500E318D6FA7C -:10110800130500006780000013050501938505019C -:10111800E31ED6F81305000067800000130101FBE9 -:1011280023248104232C41033704100013DA4501DA -:1011380023202105232E3103232A5103232481034D -:101148001304F4FF232611042322910423286103A6 -:1011580023267103232291032320A103232EB10107 -:10116800137AFA7F13090500130C0600938A060008 -:101178003374B40093D9F50163060A0A9307F07F24 -:101188006304FA1013143400B70780003364F400C2 -:10119800135BD501336B8B0093143500130A1AC007 -:1011A800930B000013D54A01370910001309F9FF02 -:1011B8001375F57F3379590193050C0093DAFA0119 -:1011C800630205109307F07F6302F5163704800069 -:1011D80013193900336989001354DC01336424017D -:1011E80093153C00130515C09307000013972B00B7 -:1011F8003367F7001307F7FF9306E00033C9590177 -:10120800330AAA4063E0E616972600009386C64D87 -:10121800131727003307D700032707003307D70022 -:1012280067000700336BA400630E0B066300040419 -:1012380013050400EF109067930755FF1307C001CB -:10124800634CF702130BD001930485FF330BFB406B -:1012580033149400335B6901336B8B00B31499002A -:10126800130AD0C0330AAA406FF09FF3EF1010643E -:10127800130505026FF05FFC130485FD331B89001D -:10128800930400006FF0DFFD336BA40063040B02CE -:1012980093040500130B0400130AF07F930B30002E -:1012A8006FF05FF093040000130A0000930B100026 -:1012B8006FF05FEF93040000130AF07F930B200098 -:1012C8006FF05FEE33648901630E0406630009045E -:1012D80013050900EF10905D930755FF1307C00130 -:1012E800634EF7021304D001930585FF3304F440DD -:1012F8003319B90033548C0033642401B315BC008E -:101308001307D0C03305A7406FF01FEE13050C007C -:10131800EF10D059130505026FF01FFC130485FD6B -:1013280033148C00930500006FF09FFD336489012E -:1013380063020402130409001305F07F93073000C9 -:101348006FF0DFEA93050000130500009307100013 -:101358006FF0DFE9930500001305F07F9307200085 -:101368006FF0DFE86366640163128B4863E0B4489A -:101378009316FB0113D71400139CF401135B1B0095 -:10138800B3E4E6001314840093DC8501B3EC8C000D -:1013980093DA0C0193970C0193D70701139D8500ED -:1013A80013050B0093850A002322F100EF10504526 -:1013B80093050500930B050013950C0113550501C2 -:1013C800EF1050411304050093850A0013050B0024 -:1013D800EF1090471315050113D704013365A700D3 -:1013E80093890B00637E8500330595019389FBFF84 -:1013F80063689501637685009389EBFF3305950152 -:101408003304854093850A0013050400EF10503F0C -:1014180093050500930B050013950C011355050161 -:10142800EF10503B130B050093850A0013050400C9 -:10143800EF109041939D04011315050193DD0D01F3 -:10144800B3EDAD0013870B0063FE6D01B38D9D01F5 -:101458001387FBFF63E89D0163F66D011387EBFFBC -:10146800B38D9D0193960901B7040100B3E6E60028 -:10147800B38D6D41138BF4FF33F76601337B6D0138 -:101488001305070093050B0013D406012326D1008A -:101498002324E100EF1010342322A10093050B0050 -:1014A80013050400EF101033935B0D019309050039 -:1014B80093850B0013050400EF10D031032781003A -:1014C8001304050013850B0093050700EF109030F7 -:1014D80003264100330535018326C1001357060151 -:1014E8003307A700637437013304940037050100FC -:1014F8001305F5FF93540701B379A70093990901E0 -:101508003376A600B3848400B389C90063E89D00DC -:101518001384060063949D0463723C05330CAC018C -:101528003337AC0133079701B38DED001384F6FF11 -:1015380063E6BC016394BC036362AC0363E69D008D -:10154800639EB401637C3C01330CAC013337AC01BE -:10155800330797011384E6FFB38DED00B3093C41CF -:10156800B3849D40B3373C01B384F4409305F0FF46 -:1015780063889C1A93850A0013850400EF1050288D -:10158800930505002324A10013950C0113550501AB -:10159800EF1050242322A10093850A00138504002C -:1015A800EF10902A832681000327410013150501B7 -:1015B80093D7090133E5A700938D0600637EE50004 -:1015C80033059501938DF6FF636895016376E50011 -:1015D800938DE6FF33059501B304E54093850A0032 -:1015E80013850400EF10D021930505002322A100E4 -:1015F80013950C0113550501EF10D01D130C0500B0 -:1016080093850A0013850400EF10102493990901AB -:10161800032741001315050193D9090133E5A900F2 -:1016280093070700637E8501330595019307F7FF4C -:1016380063689501637685019307E7FF3305950194 -:1016480093940D01B3E4F4009397040193D7070131 -:1016580093050B00B3098541138507002322F10088 -:1016680093DD0401EF10101793050B00930A050092 -:1016780013850D00EF101016130C050093850D004F -:1016880013850B00EF10101583274100130B05007D -:1016980013850B0093850700EF10D01333058501E0 -:1016A80093D70A013385A70063768501B707010040 -:1016B800330BFB00B70601009386F6FF935705012D -:1016C8003377D50013170701B3FADA00B387670138 -:1016D8003307570163E8F900938504006390F90420 -:1016E8006300070433853C019385F4FF6364950325 -:1016F8006366F5006314F5026370ED0293161D002E -:1017080033BDA601B30C9D019385E4FF3305950114 -:10171800138D06006314F5006304A70193E5150013 -:101728001307FA3F6352E01293F7750063800702CC -:1017380093F7F50093064000638AD7009386450027 -:10174800B3B5B6003304B40093850600931774004C -:1017580063DA0700B70700FF9387F7FF3374F400D5 -:1017680013070A409307E07F63C2E71A9317D4016F -:1017780093D53500B3E7B70013543400B70610000B -:101788009386F6FF3374D400B70610801377F77F7B -:101798009386F6FF131747013374D4001319F90120 -:1017A8003364E400336724018320C10403248104E3 -:1017B80083244104032901048329C103032A8103E3 -:1017C800832A4103032B0103832BC102032C8102CB -:1017D800832C4102032D0102832DC10113850700CB -:1017E800930507001301010567800000130AFAFF3B -:1017F800130C00006FF01FB91389090013040B00C4 -:101808009385040093870B00130720006380E7107B -:10181800130730006382E70E13071000E392E7F026 -:1018280013040000930700006F00400913890A00A1 -:101838006FF09FFD370408009305000013090000AE -:10184800930730006FF05FFC93061000B386E64004 -:1018580093078003E3C6D7FC9307F00163C4D70658 -:10186800130AEA41B317440133D7D500339A450127 -:10187800B3E7E700333A4001B3E747013354D400F4 -:1018880013F777006300070213F7F7009306400089 -:10189800630AD70013874700B337F7003304F4000F -:1018A8009307070013178400634A07061317D40128 -:1018B80093D73700B367F7001354340013070000B9 -:1018C8006FF0DFEB930710FEB387E74013070002C2 -:1018D800B357F400130500006386E600130AEA43D1 -:1018E80033154401336AB500333A4001B3E7470181 -:1018F800130400006FF0DFF83704080093070000B6 -:101908001307F07F130900006FF05FE7130400006E -:10191800930700001307F07F6FF05FE613040000E1 -:1019280093070000130710006FF05FE5130101FA39 -:10193800232C8104232631053704100093D945014F -:10194800232A910423206105232E7103232C81036C -:101958001304F4FF232E1104232821052324410511 -:1019680023225105232A91032328A1032326B10307 -:1019780093F9F97F93040500930B0600138C060076 -:101988003374B40013DBF5016388090A9307F07F09 -:101998006386F91037098000131434003364240176 -:1019A8001359D50133698900131D3500938919C06E -:1019B800930C000013554C01370A1000130AFAFF64 -:1019C8001375F57F337A8A0193840B00135CFC014D -:1019D800630405109307F07F6304F516370480004D -:1019E800131A3A00336A8A0013D4DB0133644401C2 -:1019F80093943B00130515C09307000013972C0020 -:101A08003367F700B389A9001307F7FF9306E000CF -:101A1800B34B8B01938A190063E0E6169726000002 -:101A2800938646D0131727003307D70003270700EC -:101A38003307D700670007003369A400630E09065F -:101A48006300040413050400EF104066930755FF74 -:101A58001307C001634CF7021309D001130D85FF6A -:101A68003309F9403314A40133D9240133698900B7 -:101A7800339DA4019309D0C0B389A9406FF05FF3E7 -:101A8800EF10C062130505026FF05FFC130985FDB6 -:101A980033992401130D00006FF0DFFD3369A400B2 -:101AA80063040902130D0500130904009309F07F6C -:101AB800930C30006FF01FF0130D00009309000025 -:101AC800930C10006FF01FEF130D00009309F07FC7 -:101AD800930C20006FF01FEE33647A01630E040646 -:101AE80063000A0413050A00EF10405C930755FFD2 -:101AF8001307C001634EF7021304D001930485FF56 -:101B08003304F440331A9A0033D48B00336444010D -:101B1800B3949B009307D0C03385A7406FF0DFEDE7 -:101B280013850B00EF108058130505026FF01FFC9A -:101B3800130485FD33948B00930400006FF09FFD20 -:101B480033647A016302040213040A001305F07F68 -:101B5800930730006FF09FEA93040000130500001C -:101B6800930710006FF09FE9930400001305F07FBE -:101B7800930720006FF09FE837070100130AF7FF6B -:101B8800135C0D0193DD0401337D4D01B3F4440171 -:101B980093050D00138504002328E100EF1080430E -:101BA800930C05009385040013050C00EF10804288 -:101BB8002326A10093850D0013050C00EF1080412A -:101BC800130B050093050D0013850D00EF108040E1 -:101BD8008326C10093D70C013305D5003385A700B0 -:101BE8006376D50003270101330BEB0093560501FB -:101BF80033754501B3FC4C0113150501B307950175 -:101C0800935C04013374440193050D00130504002B -:101C1800232AD1002326F100EF10C03B2328A1007E -:101C28009305040013050C00EF10C03A130A0500D1 -:101C380093850C0013050C00EF10C039130C050038 -:101C480093050D0013850C00EF10C0380327010120 -:101C58003305450183264101935707013385A700C2 -:101C680063764501B7070100330CFC003706010015 -:101C780093570501338C87019307F6FF337AF500F4 -:101C88003377F700131A0A01135D0901330AEA00D2 -:101C98003379F90033874601930509001385040059 -:101CA8002328E100232EC100EF10C03293850400E1 -:101CB800232CA10013050D00EF10C031232AA10029 -:101CC80093050D0013850D00EF10C0309304050037 -:101CD8009305090013850D00EF10C02F83264101DD -:101CE800032781013305D500935707013385A700E2 -:101CF8006376D5000326C101B384C400B70601008A -:101D08009387F6FF935D0501B3849D00B37DF500CD -:101D18003377F7009305090013050400939D0D011F -:101D2800B38DED00232CD100EF10C02A93050400D9 -:101D3800232AA10013050D00EF10C02993050D00FB -:101D48001304050013850C00EF10C028130D0500BF -:101D58009305090013850C00EF10C02703274101E4 -:101D680033058500935707013385A70063768500FF -:101D780083268101330DDD0083270101B7060100A9 -:101D88009386F6FF330BFB00B377D5003377D70084 -:101D980093970701B387E700333A4B01B38787016D -:101DA80033844701330BBB0133079400B33DBB01B8 -:101DB800B306B70133BC8701333444019357050197 -:101DC8003337970033648C00B3BDB6013304F40095 -:101DD800B36DB7013304B4013304A40193D776017A -:101DE800131494003364F4008327C10093149B00F8 -:101DF800135B7B01B3E4F400B3349000939796002F -:101E0800B3E46401B3E4F4009317740063D20712D7 -:101E180093D7140093F41400B3E497009317F401D4 -:101E2800B3E4F400135414001387FA3F6356E01028 -:101E380093F774006380070293F7F4009306400059 -:101E4800638AD70093874400B3B49700330494009F -:101E5800938407009317740063DA0700B70700FF3D -:101E68009387F7FF3374F40013870A409307E07FE2 -:101E780063C6E71893DA34009314D401B3E4540129 -:101E880013543400B70710009387F7FF3374F40036 -:101E98009377F77F370710801307F7FF939747016A -:101EA8003374E400939BFB013364F400B36774015B -:101EB8008320C10503248105138504000329010536 -:101EC800832441058329C104032A8104832A410408 -:101ED800032B0104832BC103032C8103832C4103AF -:101EE800032D0103832DC102938507001301010609 -:101EF80067800000930B0B001304090093040D0086 -:101F080093870C0013072000638AE70E130730003D -:101F1800638CE70C13071000E398E7F01304000044 -:101F2800930400006F008008930B0C006FF09FFD76 -:101F3800938A09006FF05FEF93061000B386E640BE -:101F480093078003E3CCD7FC9307F00163C4D7065B -:101F5800938AEA41B317540133D7D400B394540198 -:101F6800B3E7E700B3349000B3E497003354D400E8 -:101F780093F774006380070293F7F4001307400097 -:101F8800638AE70093874400B3B49700330494004E -:101F9800938407009317840063CA07069317D40134 -:101FA80093D43400B3E497001354340013070000AB -:101FB8006FF05FED930710FEB387E740130600024A -:101FC800B357F400130700006386C600938AEA43F8 -:101FD80033175401B3649700B3349000B3E4970007 -:101FE800130400006FF0DFF83704080093040000C2 -:101FF8001307F07F930B00006FF0DFE81304000075 -:10200800930400001307F07F6FF0DFE7130400006C -:1020180093040000130710006FF0DFE6130101FDC1 -:1020280023229102232A510193547501B70A800093 -:102038002320210323286101938AFAFF2326110212 -:1020480023248102232E3101232C410123267101EF -:102058002324810193F4F40F138B0500B3FAAA002B -:102068001359F501638804089307F00F6384F40A91 -:10207800939A3A00B7070004B3EAFA00938414F875 -:10208800930B000013557B01370480001304F4FF01 -:102098001375F50F33746401135BFB01630C0508BA -:1020A8009307F00F6308F50A13143400B707000408 -:1020B8003364F400130515F89307000013972B00F9 -:1020C8003367F7001307F7FF9306E000B349690188 -:1020D800338AA44063E0E60A9716000093864668B0 -:1020E800131727003307D700032707003307D70044 -:1020F80067000700638A0A0213850A00EF00107B55 -:102108009307B5FF9304A0F8B39AFA00B384A440E8 -:102118006FF01FF79304F00F930B2000E3840AF687 -:10212800930B30006FF01FF693040000930B100020 -:102138006FF05FF5630A040213050400EF001077DF -:102148009307B5FF3314F4009307A0F83385A7402D -:102158006FF09FF61305F00F93072000E30004F6D5 -:10216800930730006FF09FF51305000093071000E8 -:102178006FF0DFF4131B540063F68A12130AFAFF98 -:1021880013090000935B0B013704010093850B00D2 -:102198001304F4FF13850A00EF00906633748B0074 -:1021A80093050500130C050013050400EF00906269 -:1021B8009304050093850B0013850A00EF00D0688F -:1021C80013590901131505013365A90013090C00FA -:1021D800637E9500330565011309FCFF636865019B -:1021E800637695001309ECFF33056501B304954048 -:1021F80093850B0013850400EF009060930505009C -:10220800130C050013050400EF00D05C930A0500C9 -:1022180093850B0013850400EF0010631315050167 -:1022280013040C00637E5501330565011304FCFF9C -:1022380063686501637655011304ECFF3305650196 -:102248001319090133055541336989003335A00055 -:102258003364A9001307FA076350E00A9377740000 -:10226800638A07009377F400930640006384D700DD -:10227800130444009317440063DA0700B70700F813 -:102288009387F7FF3374F40013070A089307E00FE6 -:102298001354340063D2E70C130400001307F00F43 -:1022A8006F00800B1399FA0193DA1A006FF09FED13 -:1022B8009309090013840A0093870B001307200071 -:1022C800E38CE7FC130730006382E708130710006C -:1022D800E392E7F813040000130700006F00C0073B -:1022E80093090B006FF09FFD37044000930900002D -:1022F800930730006FF09FFC93071000B387E74007 -:102308001307B001E348F7FC1305EA09B357F400D3 -:102318003314A4003334800033E4870093777400C7 -:10232800638A07009377F400130740006384E7008B -:10233800130444009317540013543400E3DE07F8E1 -:1023480013040000130710006F0000013704400059 -:102358001307F00F93090000370580001305F5FFF8 -:102368003374A400370580801305F5FF1377F70F42 -:102378003374A400131777011395F9013364E4004B -:102388003365A4008320C10203248102832441020F -:10239800032901028329C101032A8101832A4101FA -:1023A800032B0101832BC100032C810013010103BE -:1023B80067800000130101FD2322910223202103DD -:1023C800B704800013597501232E310123267101AA -:1023D8009384F4FF2326110223248102232C410134 -:1023E800232A5101232861012324810123229101F9 -:1023F8001379F90F938B0500B3F4A4009359F501F1 -:10240800630A09089307F00F6306F90A93943400E6 -:10241800B7070004B3E4F400130919F8130B00001C -:1024280013D57B01370480001304F4FF1375F50FEF -:102438003374740193DBFB01630E05089307F00FF7 -:10244800630AF50A13143400B70700043364F40070 -:10245800130515F89306000093172B00B3E7D70070 -:102468003309A9009387F7FF1307E00033CA7901FE -:10247800930A19006360F70A171700001307073259 -:1024880093972700B387E70083A70700B387E70080 -:1024980067800700638A040213850400EF00104177 -:1024A8009307B5FF1309A0F8B394F4003309A940C2 -:1024B8006FF0DFF61309F00F130B2000E38204F628 -:1024C800130B30006FF0DFF513090000130B100039 -:1024D8006FF01FF5630A040213050400EF00103DB6 -:1024E8009307B5FF3314F4009307A0F83385A7408A -:1024F8006FF05FF61305F00F93062000E30E04F467 -:10250800930630006FF05FF5130500009306100086 -:102518006FF09FF4370C0100130BFCFF93DB0401F1 -:10252800935C0401B3F464013374640193050400FB -:1025380013850400EF00102A930504009309050091 -:1025480013850B00EF0010291304050093850C0078 -:1025580013850B00EF001028930B050093850400EA -:1025680013850C00EF0010273305850093D7090168 -:102578003385A70063748500B38B8B01B37765013E -:1025880093970701B3F96901B3873701139467007B -:102598003334800093D7A70113550501B367F400BE -:1025A80033047501131464003364F4009317440072 -:1025B80063D6070E935714001374140033E487008E -:1025C8001387FA076350E00E93777400638A070055 -:1025D8009377F400930640006384D7001304440003 -:1025E8009317440063DA0700B70700F89387F7FFEB -:1025F8003374F40013870A089307E00F63C4E710E5 -:10260800935734006F000003138A090013840400F1 -:1026180093060B00930720006386F60E930730009D -:10262800638AF60C130610009307000013070000D6 -:10263800E398C6F8370480001304F4FF3705808058 -:10264800B3F787001305F5FF8320C1020324810235 -:102658001377F70FB3F7A700131777011315FA01CC -:10266800B3E7E70083244102032901028329C1015A -:10267800032A8101832A4101032B0101832BC10015 -:10268800032C8100832C410033E5A70013010103CB -:1026980067800000138A0B006FF0DFF7930A0900C8 -:1026A8006FF01FF293071000B387E7401307B001DC -:1026B8006340F706938AEA09B357F40033145401C8 -:1026C8003334800033E4870093777400638A07000B -:1026D8009377F400130740006384E7001304440071 -:1026E8009317540063CA0702935734001307000076 -:1026F8006FF05FF4B70740001307F00F130A0000EC -:102708006FF05FF3930700001307F00F6FF09FF26D -:10271800930700006FF09FFD930700001307100058 -:102728006FF05FF1B70780009387F7FF130101FF90 -:1027380033F7A7009356750113D67501B3F7B700A1 -:10274800232291002320210193F6F60F1318370056 -:102758001376F60F23261100232481001307F00FA8 -:102768009354F501138906001305060093D5F50166 -:10277800939737006314E6006394070093C5150028 -:102788003387C640639A951A6356E00A63160606AD -:10279800639C07009307F00F638CF6049307080007 -:1027A800138506006F00C0141307F7FF631E0702A6 -:1027B800B38707011385060013975700635A07125A -:1027C800130515001307F00F630EE5323707007E77 -:1027D80093F617001307F7FF93D71700B3F7E7002F -:1027E800B3E7D7006F00C0101306F00F639EC60052 -:1027F800930708006F0040071306F00FE38AC6FE30 -:1028080037060004B3E7C7001306B0016356E600B5 -:10281800930710006FF0DFF9130600023306E64055 -:10282800B3D5E700B397C700B337F000B3E7F500B7 -:102838006FF01FF863000708639C0602631808001E -:102848001307F00F6316E60A6F0000029306F0FF05 -:102858006316D700B38707016FF01FF69306F00FD2 -:102868001347F7FF6310D6021305F00F6F004008F7 -:102878009306F00FE30AD6FEB70600043307E040DC -:102888003368D8009306B00163D6E600130710003A -:102898006F00C001930600023356E8003387E64014 -:1028A8003317E8003337E0003367E600B387E70003 -:1028B8006FF09FF0138516001376F50F13071000BD -:1028C8006342C70663940604130500006302080206 -:1028D80063860722B387070113975700635A0700D7 -:1028E800370700FC1307F7FFB3F7E70013051000DD -:1028F80013F77700630A072013F7F70093064000E1 -:102908006304D720938747006F000020E30E08F484 -:10291800E38007EEB70700021305F00F93040000E9 -:102928006F00801E1307F00F630EE51C3307F800D5 -:10293800935717006FF0DFFB6350E0086316060437 -:10294800E38A07E41307F7FF63140702B307F840A5 -:102958001385060013975700E35C07F83704000453 -:102968001304F4FF33F48700130905006F00801384 -:102978001306F00FE38EC6E61306B0016350E602B5 -:10298800930710006FF09FFC1306F00FE382C6E672 -:1029980037060004B3E7C7006FF01FFE13060002F6 -:1029A800B3D5E7003307E640B397E700B337F00045 -:1029B800B3E7F5006FF09FF963020708639E06020C -:1029C800631808001307F00F938405006FF09FE762 -:1029D8009306F0FF6318D700B38707419384050077 -:1029E8006FF05FF79306F00F1347F7FF6310D602F7 -:1029F800938405006FF05FE79306F00FE30AD6FEB5 -:102A0800B70600043307E0403368D8009306B001E6 -:102A180063D6E600130710006F00C001930600029A -:102A28003356E8003387E6403317E8003337E000D1 -:102A38003367E600B387E7406FF05FFA1387160045 -:102A48001377F70F130610006344E604639C06022D -:102A58006318080063980712130500006FF01FEC55 -:102A6800638607123307F84093165700B387074168 -:102A780063CA061093070700631007069307000050 -:102A88006FF09FFDE31608E8E39407F66FF09FE800 -:102A98003304F84013175400635407043384074180 -:102AA8009384050013050400EF0040601305B5FF8B -:102AB8003314A400634A2503330525411305150083 -:102AC80013070002B357A4003305A7403314A4002A -:102AD80033348000B3E78700130500006FF05FE12F -:102AE800E30E04F86FF01FFCB70700FC9387F7FFAD -:102AF8003305A940B377F4006FF09FDF9307080010 -:102B08006FF01FDF9307000013975700635E0700FD -:102B1800130515001307F00F630EE506370700FCD1 -:102B28001307F7FFB3F7E7001307F00F93D7370042 -:102B38006318E50063860700B707400093040000A8 -:102B4800370780001307F7FF1375F50FB3F7E70092 -:102B580013177501370580808320C1000324810085 -:102B68001305F5FF33F5A7009394F4013365E500E9 -:102B780033659500032901008324410013010101F5 -:102B880067800000938405006FF01FF59307080025 -:102B98006FF09FF4930700006FF01FF9370680006D -:102BA800135775019307F6FF1377F70F9305E0079F -:102BB800B3F7A7009356F50163F6E5049305D0092A -:102BC80063FAE500370500801345F5FF3385A60055 -:102BD8006780000033E5C7009307500963DCE7000E -:102BE8001307A7F63315E500638006023305A040F6 -:102BF80067800000930760093387E7403355E50095 -:102C08006FF09FFE1305000067800000130101FFAD -:102C1800232611002324810023229100630205103A -:102C2800130405009354F501635405003304A040D0 -:102C380013050400EF0080479307E009B387A74016 -:102C4800130760096340F706130780006356A7005F -:102C5800130585FF3314A400370580001305F5FF1D -:102C680093F7F70F3374A40013957701B7078080A3 -:102C78009387F7FF3374F400B70700803364A40028 -:102C880093C7F7FF1395F4013374F4003365A40078 -:102C98008320C10003248100832441001301010122 -:102CA80067800000130790096350F702130750006C -:102CB8003307A7409306B5013357E4003314D40013 -:102CC8003334800033648700130750006356A7002D -:102CD8001307B5FF3314E400370700FC1307F7FFA9 -:102CE800937674003377E400638A06001374F40063 -:102CF800930640006304D400130747009316570057 -:102D080063DC0600B70700FC9387F7FF3377F7000B -:102D18009307F009B387A740135437006FF0DFF328 -:102D28001304000093070000930400006FF0DFF223 -:102D380093577501130101FF93F7F70F23248100BF -:102D48001387170037048000232291001304F4FF2F -:102D5800232611001377F70F930610003374A4008D -:102D68009354F50163D2E606138507389357340068 -:102D78001314D401370710001307F7FFB3F7E70060 -:102D8800370710801307F7FF1375F57F13154501F3 -:102D9800B3F7E70037070080B3E7A7001347F7FF4B -:102DA8001395F401B3F7E70033E7A7008320C100C8 -:102DB80013050400032481008324410093050700C0 -:102DC800130101016780000063940704630204068D -:102DD80013050400EF00802D9307A00063C2A7022B -:102DE8009307B000B387A74013075501B357F40002 -:102DF8003314E400130790383305A7406FF09FF7AA -:102E0800930755FFB317F400130400006FF09FFEFB -:102E180093070000630A040093573400370708003B -:102E28001314D401B3E7E7001305F07F6FF09FF4A4 -:102E380093070000130500006FF0DFF3370610005A -:102E48001306F6FF3376B60013D845019357D5011C -:102E58001378F87F1316360033E6C7009307180077 -:102E680093F7F77F9306100093D5F50113173500F4 -:102E780063D6F60A930608C89307E00F63C2D70C17 -:102E88006340D008930790FE63C4F612B70780002A -:102E98001305E0013366F6003305D5409307F001CA -:102EA80063C8A702130828C8B3170701B337F0008F -:102EB800331606013355A700B3E7C700B367F5001B -:102EC8009306000013F77700630007086F00C00E31 -:102ED8009307E0FFB386D74093070002B356D600A6 -:102EE800930800006306F500130828CAB318060102 -:102EF800B3E7E800B337F000B3E7F6006FF05FFC24 -:102F0800131565003335A000131636009357D70103 -:102F18003366C500B367F6006FF0DFFAB367E60003 -:102F280063160800B337F0006FF09FF99306F00FAF -:102F3800638C070013163600B70700026FF09FFD79 -:102F4800930700009306F00F13975700635E07007E -:102F5800938616001307F00F638AE606370700FC0E -:102F68001307F7FFB3F7E7001307F00F93D73700FE -:102F78006398E60063860700B707400093050000E2 -:102F8800370580001305F5FFB3F7A70037058080E4 -:102F98001305F5FF93F6F60F93967601B3F7A7009E -:102FA8009395F501B3E7D70033E5B70067800000D4 -:102FB800930710009306000013F7F700130640006C -:102FC800E304C7F8938747006FF01FF893070000E2 -:102FD8006FF09FF9130605001305000093F615001E -:102FE800638406003305C50093D515001316160033 -:102FF800E39605FE678000006340050663C6050684 -:1030080013860500930505001305F0FF630C0602FF -:1030180093061000637AB6006358C00013161600B2 -:1030280093961600E36AB6FE1305000063E6C50032 -:10303800B385C5403365D50093D6160013561600E0 -:10304800E39606FE6780000093820000EFF05FFBC6 -:1030580013850500678002003305A04063D805008A -:10306800B305B0406FF0DFF9B305B04093820000BC -:10307800EFF01FF93305A04067800200938200003B -:1030880063CA0500634C0500EFF09FF71385050040 -:1030980067800200B305B040E35805FE3305A04041 -:1030A800EFF01FF63305B04067800200B707010054 -:1030B800637AF5029307F00FB3B7A7009397370029 -:1030C800130700023307F740B357F5001705000050 -:1030D80013058570B307F50003C507003305A7403E -:1030E800678000003707000193070001E36AE5FCE9 -:0830F800930780016FF0DFFC7B -:10310000130101FF23261100EFD00F9F8320C10080 -:10311000B70710F023A007F2130500001301010107 -:0431200067800000C4 -:103124004448525953544F4E452050524F475241F0 -:103134004D2C20534F4D4520535452494E470000C7 -:103144004468727973746F6E652042656E63686D4E -:1031540061726B2C2056657273696F6E20322E314A -:1031640020284C616E67756167653A204329000029 -:1031740050726F6772616D20636F6D70696C656406 -:10318400207769746820277265676973746572278C -:1031940020617474726962757465000050726F679F -:1031A40072616D20636F6D70696C656420776974FA -:1031B400686F757420277265676973746572272058 -:1031C400617474726962757465000000506C6561A5 -:1031D4007365206769766520746865206E756D6215 -:1031E4006572206F662072756E73207468726F75D5 -:1031F4006768207468652062656E63686D61726BD0 -:103204003A200000457865637574696F6E207374A5 -:10321400617274732C2025642072756E7320746837 -:10322400726F756768204468727973746F6E650A8B -:1032340000000000457865637574696F6E20656EE3 -:103244006473000046696E616C2076616C75657309 -:10325400206F6620746865207661726961626C65AE -:1032640073207573656420696E20746865206265D7 -:103274006E63686D61726B3A00000000496E745FA2 -:10328400476C6F623A20202020202020202020201C -:103294002025640A00000000202020202020202077 -:1032A40073686F756C642062653A20202025640A77 -:1032B40000000000426F6F6C5F476C6F623A202021 -:1032C40020202020202020202025640A0000000047 -:1032D40043685F315F476C6F623A202020202020D2 -:1032E400202020202025630A000000002020202028 -:1032F4002020202073686F756C642062653A20205A -:103304002025630A0000000043685F325F476C6F4A -:10331400623A202020202020202020202025630A1B -:10332400000000004172725F315F476C6F625B386E -:103334005D3A2020202020202025640A000000007F -:103344004172725F325F476C6F625B385D5B375D01 -:103354003A2020202025640A00000000202020209C -:103364002020202073686F756C642062653A2020E9 -:10337400204E756D6265725F4F665F52756E732085 -:103384002B203130000000005074725F476C6F6274 -:103394002D3E000020205074725F436F6D703A2000 -:1033A40020202020202020202025640A0000000066 -:1033B400202020202020202073686F756C642062F8 -:1033C400653A20202028696D706C656D656E7461A6 -:1033D40074696F6E2D646570656E64656E74290022 -:1033E400202044697363723A20202020202020206A -:1033F400202020202025640A000000002020456EA3 -:10340400756D5F436F6D703A2020202020202020AE -:103414002025640A000000002020496E745F436F79 -:103424006D703A2020202020202020202025640AAE -:103434000000000020205374725F436F6D703A20C7 -:1034440020202020202020202025730A00000000B6 -:10345400202020202020202073686F756C64206257 -:10346400653A2020204448525953544F4E45205029 -:10347400524F4752414D2C20534F4D4520535452E7 -:10348400494E47004E6578745F5074725F476C6FA5 -:10349400622D3E00202020202020202073686F759C -:1034A4006C642062653A20202028696D706C656D1B -:1034B400656E746174696F6E2D646570656E6465A4 -:1034C4006E74292C2073616D652061732061626FB5 -:1034D40076650000496E745F315F4C6F633A20205B -:1034E40020202020202020202025640A0000000025 -:1034F400496E745F325F4C6F633A20202020202095 -:10350400202020202025640A00000000496E745FFA -:10351400335F4C6F633A202020202020202020207D -:103524002025640A00000000456E756D5F4C6F63D2 -:103534003A20202020202020202020202025640A3A -:10354400000000005374725F315F4C6F633A2020B7 -:1035540020202020202020202025730A00000000A5 -:10356400202020202020202073686F756C64206246 -:10357400653A2020204448525953544F4E45205018 -:10358400524F4752414D2C2031275354205354520B -:10359400494E47005374725F325F4C6F633A202088 -:1035A40020202020202020202025730A0000000055 -:1035B400202020202020202073686F756C642062F6 -:1035C400653A2020204448525953544F4E452050C8 -:1035D400524F4752414D2C2032274E4420535452CF -:1035E400494E47004D656173757265642074696D59 -:1035F4006520746F6F20736D616C6C20746F206F25 -:10360400627461696E206D65616E696E6766756C62 -:1036140020726573756C747300000000506C6561F2 -:10362400736520696E637265617365206E756D6282 -:103634006572206F662072756E730000436C6F6351 -:103644006B206379636C65733D2564200A00000078 -:10365400444D49505320706572204D687A3A2020B9 -:103664002020202020202020202020202020202056 -:1036740020202020202020202020202000000000C6 -:1036840025642E00256400004448525953544F4E7B -:10369400452050524F4752414D2C2031275354203E -:1036A400535452494E4700004448525953544F4EC4 -:1036B400452050524F4752414D2C2032274E442032 -:1036C400535452494E4700004448525953544F4EA4 -:1036D400452050524F4752414D2C2033275244200D -:1036E400535452494E47000028E2FFFF3CE1FFFFDC -:1036F40048E1FFFF3CE1FFFF14E2FFFF3CE1FFFF75 -:1037040048E1FFFF28E2FFFF28E2FFFF14E2FFFF8A -:1037140048E1FFFF14E1FFFF14E1FFFF14E1FFFFA5 -:1037240050E1FFFFE4E7FFFFE4E7FFFF08E8FFFFE6 -:10373400D8E7FFFFD8E7FFFFC8E8FFFF08E8FFFF6F -:10374400D8E7FFFFC8E8FFFFD8E7FFFF08E8FFFF5F -:10375400D4E7FFFFD4E7FFFFD4E7FFFFC8E8FFFF8C -:103764003CEBFFFF78EBFFFF84EBFFFF78EBFFFF01 -:10377400F0EBFFFF78EBFFFF84EBFFFF3CEBFFFF79 -:103784003CEBFFFFF0EBFFFF84EBFFFF54EBFFFF8D -:1037940054EBFFFF54EBFFFF8CEBFFFF7CEEFFFFCE -:1037A4007CEEFFFFFCEEFFFF74EEFFFF74EEFFFF05 -:1037B4005CEFFFFFFCEEFFFF74EEFFFF5CEFFFFF2B -:1037C40074EEFFFFFCEEFFFF70EEFFFF70EEFFFFF5 -:1037D40070EEFFFF5CEFFFFF00010202030303032F -:1037E400040404040404040405050505050505058D -:1037F400050505050505050506060606060606066D -:103804000606060606060606060606060606060654 -:10381400060606060606060607070707070707073C -:103824000707070707070707070707070707070724 -:103834000707070707070707070707070707070714 -:103844000707070707070707070707070707070704 -:1038540007070707070707070808080808080808EC -:1038640008080808080808080808080808080808D4 -:1038740008080808080808080808080808080808C4 -:1038840008080808080808080808080808080808B4 -:1038940008080808080808080808080808080808A4 -:1038A4000808080808080808080808080808080894 -:1038B4000808080808080808080808080808080884 -:1038C4000808080808080808080808080808080874 -:0838D4000808080808080808AC -:1038E0000000000080842E41000000205FA01242F2 -:0C38F000F90295503353DE470000C84237 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/dhrystoneO3C.hex b/benchmarks/riscv_tests/dhrystoneO3C.hex deleted file mode 100644 index b0ad4c31..00000000 --- a/benchmarks/riscv_tests/dhrystoneO3C.hex +++ /dev/null @@ -1,848 +0,0 @@ -:0200000480007A -:10000000ADA8010001000100010001000100010094 -:10001000232E11FE232C51FE232A61FE232871FE7C -:100020002326A1FE2324B1FE2322C1FE2320D1FEDC -:10003000232EE1FC232CF1FC232A01FD232811FDB2 -:100040002326C1FD2324D1FD2322E1FD2320F1FD40 -:100050003971AD28F250E2525253C2533255A25573 -:10006000125682567247E2475248C248324EA24E5A -:10007000124F824F2161730020309741000093811D -:1000800061C2176100001301E1441385C1819765C6 -:100090000000938565036306B50023200500110564 -:1000A000DDBF173500001305A53F7111973500001E -:1000B0009385053F6308B500144111052AC0829657 -:0C00C0000245EDB71101EF20704001A0D7 -:1000CC00828003C75183930710046303F700828077 -:1000DC001C4103A7C183A507998F1CC1828003A66D -:1000EC00418409C6184218C103A6418483A5C18363 -:1000FC00310629456F00806D41114AC083A74184A8 -:10010C0022C40041984326C283AE470003AE870049 -:10011C0003A3070183A8470103A887018C53D0537D -:10012C00945706C6AA84C84FDC5718C0984048CCD0 -:10013C005CD42322D40195472324C40123286400D2 -:10014C00232A1401232C04010CD050D014D4DCC469 -:10015C005CC418C0228561375C40B1CF9C40B24072 -:10016C00224483AF070003AF470083AE870003AE82 -:10017C00C70003A3070183A8470103A88701CC4F3D -:10018C009053D4539857DC5723A0F40123A2E401D5 -:10019C0023A4D40123A6C40123A8640023AA140118 -:1001AC0023AC0401CCCC90D0D4D098D4DCD402496C -:1001BC0092444101828088449947930584005CC431 -:1001CC00EF00006D83A7418448441306C4009C4390 -:1001DC00B24092441CC022440249A94541016F001F -:1001EC00E05E83C7518383A681839387F7FB93B724 -:1001FC001700D58F23ACF18213072004238AE182E8 -:10020C00828013071004A38AE18223AC01828280CE -:10021C0035711305000306CF22CDE2DCEED626CBDA -:10022C004AC94EC752C556C35AC1DEDEE6DAEAD811 -:10023C00EF00E07423A0A18413050003EF002074E9 -:10024C0083A7018423A2A1841CC189471CC5B7358F -:10025C000080930780025CC57D46938545CE2322A2 -:10026C0005004105EF00D001373700809307C72404 -:10027C00032EC72403A3470083A8870003A8C70045 -:10028C008C4BD04B944F03D7C70183C7E701B73DC5 -:10029C000080231EE102230FF10213874D5BA94757 -:1002AC002945232EF76472D01AD246D442D62ED8C2 -:1002BC0032DA36DCEF00807B37350080130545D011 -:1002CC00EF0060782945EF00607A83A7018363868D -:1002DC00074C37350080130545D3EF00C076294510 -:1002EC00EF00C07837350080130505D9EF00406B5F -:1002FC002945EF00A077373500809305800C130556 -:10030C0085DCEF00E069EF0000773734008083274D -:10031C00C426373D0080832BCD283EC423A6A18262 -:10032C0085491304C4268944E93D653D8347E401AE -:10033C005048032E4400032384008328C400032860 -:10034C000401144C0357C401A24E230FF1048C007A -:10035C0085470810B2CA3ECE26CAF6C0F2C29AC46D -:10036C00C6C6C2C8B6CC231EE104DD2152461335E5 -:10037C00150023ACA18263C0C40293172600B29768 -:10038C00F51732858D4530083ECC8921524605063D -:10039C0032CAE3D4C4FEE2461385C18493854D5B17 -:1003AC00152903A54184930A10040D4AB13303C7E0 -:1003BC00418393070004930CCD2863F1E702568523 -:1003CC00930530049529F24713871A00630EF5360E -:1003DC0083C74183937AF70FE3F357FFD2455285D6 -:1003EC008509EF20A07BE24A2AC6D685EF20407D06 -:1003FC002A8A480852CAF1319307900CE396F9F215 -:10040C00EF00606723A4A18237350080130585DFD8 -:10041C00EF0060632945EF006065373500801305F8 -:10042C0085E0EF0040622945EF00406483A5C1835D -:10043C0037350080130505E437340080EF00405653 -:10044C0095451305C4E5EF00A05583A58183373589 -:10045C000080130585E7EF00A05485451305C4E51E -:10046C00EF00005483C5518337350080130545E9EF -:10047C00052BB734008093051004138504EB0D2372 -:10048C0083C54183373500801305C5EC112B9305CB -:10049C002004138504EB29239387C1848C533735AF -:1004AC000080130585EEED299D451305C4E5CD2986 -:1004BC00B73700809387475B83A5C76537350080C6 -:1004CC00130545F0F12937350080130505F2EF00CF -:1004DC008057373500801305C5F4EF00C05683A74D -:1004EC004184B73D008013858DF58C43B73C00806B -:1004FC00B73B0080752137350080130545F7EF00B9 -:10050C00805483A7418413854CFA373B0080CC433D -:10051C00B739008037390080612181451305C4E566 -:10052C00412183A7418413850BFC8C479529894570 -:10053C001305C4E5B52183A741841305CBFDCC4736 -:10054C008521C5451305C4E5A12983A541841385DF -:10055C0089FFC105B12113054901F521373500800B -:10056C0013058504CD2183A7018413858DF58C4358 -:10057C0005293735008013058505F12183A70184F2 -:10058C0013854CFACC43292981451305C4E5092967 -:10059C0083A7018413850BFC8C4719218545130512 -:1005AC00C4E5FD2E83A701841305CBFDCC47CD2ECE -:1005BC00C9451305C4E5ED2683A50184138589FF80 -:1005CC00C105F92E13054901BD29D24537350080E7 -:1005DC0013058509F12695451305C4E5D126B247C7 -:1005EC00373500801305450BB38A574193973A0072 -:1005FC00B38A5741B3854A416526B5451305C4E511 -:10060C004526E245373500801305050D512E9D45D5 -:10061C001305C4E57126F245373500801305C50E68 -:10062C00412685451305C4E5A52E373500800C10F1 -:10063C0013058510B5263735008013054512212189 -:10064C00373500808C0013058515992E37350080C1 -:10065C0013054517CD2E2945112903A7C18283A562 -:10066C0081829307301F998D23A2B18263DFB71269 -:10067C003735008013050520252603A54182EF2080 -:10068C0060152A84EF204027B737008003A6074A5D -:10069C0083A6474AEF001066B737008003A6874A47 -:1006AC0083A6C74AEF000064EF20C03523A0A182C7 -:1006BC00B737008003A5074BA285EF10A05223AEDD -:1006CC00A1803735008013054521D92C03A5418223 -:1006DC00EF204010B7370080AA8503A5474BEF10D9 -:1006EC0060502A84EF200008AA84EF20A00EAA856F -:1006FC002285EF10B03FB737008083A5874BEF10F2 -:10070C00F007EF2020062A8437350080A6851305D4 -:10071C0045247924A54763D7870A37350080A285FD -:10072C0013058524B52C29459126FA406A44DA44F0 -:10073C004A49BA492A4A9A4A0A4BF65B665CD65C25 -:10074C00465DB65D0D6182806C080145912203AE59 -:10075C004C0003A38C0083A8CC0003A80C0103A5B8 -:10076C004C0183A58C0103D6CC0103C7EC0183C7D4 -:10077C004183850ADEC0F2C29AC4C6C6C2C8AACAE0 -:10078C00AECC231EC104230FE10423AE318393FAB4 -:10079C00FA0F4E8AE3F557C391B137350080130534 -:1007AC0005D655242945D92435BE37350080130587 -:1007BC00851A512C373500801305051E69242945EF -:1007CC007524A5B713050003552481BF0905AA9507 -:1007DC000CC2828001114EC69309560026CA93940E -:1007EC00290022CC4AC806CEAA9432892E8423AC86 -:1007FC00340794C0D4C04E859305800CEF20003A8A -:10080C000A09B3072501A297984B23AA370123ACF9 -:10081C003701050798CB9C402A944A94056632947C -:10082C00232AF4FAF2406244154723AEE182D24403 -:10083C004249B249056182801375F50F93F5F50FA6 -:10084C006304B50001458280A38AA182054582809C -:10085C00411122C426C206C62A84AE8483C5340044 -:10086C0003452400D13F7DF9A6852285F52C8147CF -:10087C006356A000294723AEE1828547B24022444B -:10088C0092443E8541018280791513351500828092 -:10089C00411122C426C206C62A84AE84F53715C17E -:1008AC0080C085476304F40205C80947630DE40260 -:1008BC0091476313F40098C0B24022449244410122 -:1008CC0082808D479CC08547E310F4FE03A7C1834B -:1008DC009307400663DFE700B240224423A00400E4 -:1008EC00924441018280B24022449CC09244410116 -:1008FC008280B24022448D479CC092444101828048 -:10090C00411122C406C62A840345050011C50504FD -:10091C00B12A0345040065FDB240224441018280A6 -:10092C00B1A2797126D206D622D44AD0AA846342C7 -:10093C0005040A894A8429A8EF20C03093070503CF -:10094C0005042685A945A30FF4FEEF206027AA8491 -:10095C00A9452685F5F0E30124FF7D140345040029 -:10096C00C137E31C24FFB250225492540259456102 -:10097C0082801305D0026D37B30490405DBF03A78E -:10098C008184B307A7003765008023A4F184130585 -:10099C0045CC930600403A9563D3F60002908280D2 -:1009AC005D7152CC06D622D426D24AD04ECE56CA2F -:1009BC002A8A03450500BEC25C182EDA32DC36DE0C -:1009CC00BAC0C2C4C6C63EC61DC10144930A500279 -:1009DC00930430061309300793094006630255034C -:1009EC0081370504B3078A0003C5070065F9B250C7 -:1009FC00225492540259F249624AD24A616182806D -:100A0C00930614003307DA0031A063822703638650 -:100A1C00370385068347070036840507F9D3E39629 -:100A2C0097FEB247884391073EC6DD3D5DBFB24796 -:100A3C00884391073EC6E9356DB7B24788439107A5 -:100A4C003EC6C53579BF411122C406C62A8403456A -:100A5C00050011C5050419280345040065FD294549 -:100A6C003120B2402244014541018280B70710F089 -:100A7C0023A0A7F08280B70710F003A507F18280AE -:100A8C00B3C7A50093F737003307C500639607007B -:100A9C009307300063E4C70293070500636CE5001D -:100AAC006780000083C605009387170093851500A7 -:100ABC00A38FD7FEE3E8E7FE67800000937735004D -:100ACC0063920708930705009376C7FF138606FE0B -:100ADC0063F6C70883A3050083A2450083AF850096 -:100AEC0003AFC50083AE050103AE450103A3850129 -:100AFC0083A8C501938545029387470203A8C5FFC8 -:100B0C0023AE77FC23A057FE23A2F7FF23A4E7FF15 -:100B1C0023A6D7FF23A8C7FF23AA67FE23AC17FF82 -:100B2C0023AE07FF6FF0DFFA83C60500938717002B -:100B3C0093851500A38FD7FE93F63700E39606FE38 -:100B4C006FF09FF8930705006FF01FFF03A60500D9 -:100B5C00938747009385450023AEC7FEE3E8D7FE95 -:100B6C00E3EAE7F4678000003367B5009303F0FF16 -:100B7C001377370063100710B7877F7F9387F7F7DA -:100B8C000326050083A60500B372F6003363F60056 -:100B9C00B382F200B3E26200639272106316D6085D -:100BAC000326450083A64500B372F6003363F600B6 -:100BBC00B382F200B3E26200639E720C6316D60637 -:100BCC000326850083A68500B372F6003363F60016 -:100BDC00B382F200B3E262006398720C6316D6041F -:100BEC000326C50083A6C500B372F6003363F60076 -:100BFC00B382F200B3E262006392720C6316D60207 -:100C0C000326050183A60501B372F6003363F600D3 -:100C1C00B382F200B3E26200639C720A13054501D1 -:100C2C0093854501E30ED6F413170601939706013D -:100C3C00631EF7001357060193D706013305F740DF -:100C4C009375F50F63900502678000001357070139 -:100C5C0093D707013305F7409375F50F639405009F -:100C6C00678000001377F70F93F7F70F3305F74002 -:100C7C00678000000346050083C6050013051500B8 -:100C8C00938515006314D600E31606FE3305D64093 -:100C9C00678000001305450093854500E31CD6FCD6 -:100CAC0013050000678000001305850093858500FF -:100CBC00E312D6FC13050000678000001305C50085 -:100CCC009385C500E318D6FA130500006780000071 -:100CDC001305050193850501E31ED6F813050000E5 -:100CEC0067800000130101FB23248104232C4103A2 -:100CFC003704100013DA450123202105232E31037C -:100D0C00232A5103232481031304F4FF2326110403 -:100D1C0023229104232861032326710323229103A8 -:100D2C002320A103232EB101137AFA7F13090500A6 -:100D3C00130C0600938A06003374B40093D9F501A2 -:100D4C0063060A0A9307F07F6304FA101314340045 -:100D5C00B70780003364F400135BD501336B8B0051 -:100D6C0093143500130A1AC0930B000013D54A01D3 -:100D7C00370910001309F9FF1375F57F3379590101 -:100D8C0093050C0093DAFA01630205109307F07FC8 -:100D9C006302F51637048000131939003369890092 -:100DAC001354DC013364240193153C00130515C066 -:100DBC009307000013972B003367F7001307F7FF17 -:100DCC009306E00033C95901330AAA4063E0E616E2 -:100DDC00972600009386064D131727003307D7007C -:100DEC00032707003307D70067000700336BA40005 -:100DFC00630E0B066300040413050400EF109067E8 -:100E0C00930755FF1307C001634CF702130BD00176 -:100E1C00930485FF330BFB4033149400335B69015F -:100E2C00336B8B00B3149900130AD0C0330AAA4059 -:100E3C006FF09FF3EF101064130505026FF05FFC69 -:100E4C00130485FD331B8900930400006FF0DFFD54 -:100E5C00336BA40063040B0293040500130B040012 -:100E6C00130AF07F930B30006FF05FF093040000D7 -:100E7C00130A0000930B10006FF05FEF9304000057 -:100E8C00130AF07F930B20006FF05FEE336489013F -:100E9C00630E04066300090413050900EF10905D4E -:100EAC00930755FF1307C001634EF7021304D001DB -:100EBC00930585FF3304F4403319B90033548C0087 -:100ECC0033642401B315BC001307D0C03305A7400D -:100EDC006FF01FEE13050C00EF10D059130505022F -:100EEC006FF01FFC130485FD33148C009305000078 -:100EFC006FF09FFD3364890163020402130409003F -:100F0C001305F07F930730006FF0DFEA93050000C4 -:100F1C0013050000930710006FF0DFE99305000044 -:100F2C001305F07F930720006FF0DFE86366640120 -:100F3C0063128B4863E0B4489316FB0113D714007B -:100F4C00139CF401135B1B00B3E4E6001314840040 -:100F5C0093DC8501B3EC8C0093DA0C0193970C01B4 -:100F6C0093D70701139D850013050B0093850A0089 -:100F7C002322F100EF10504593050500930B05005B -:100F8C0013950C0113550501EF1050411304050086 -:100F9C0093850A0013050B00EF10904713150501FC -:100FAC0013D704013365A70093890B00637E85007A -:100FBC00330595019389FBFF636895016376850082 -:100FCC009389EBFF330595013304854093850A0023 -:100FDC0013050400EF10503F93050500930B05001B -:100FEC0013950C0113550501EF10503B130B050025 -:100FFC0093850A0013050400EF109041939D0401A2 -:10100C001315050193DD0D01B3EDAD0013870B0036 -:10101C0063FE6D01B38D9D011387FBFF63E89D019A -:10102C0063F66D011387EBFFB38D9D019396090158 -:10103C00B7040100B3E6E600B38D6D41138BF4FFEA -:10104C0033F76601337B6D011305070093050B0025 -:10105C0013D406012326D1002324E100EF10103411 -:10106C002322A10093050B0013050400EF1010338D -:10107C00935B0D019309050093850B001305040088 -:10108C00EF10D031032781001304050013850B00EA -:10109C0093050700EF10903003264100330535010E -:1010AC008326C100135706013307A7006374370169 -:1010BC0033049400370501001305F5FF9354070121 -:1010CC00B379A700939909013376A600B384840001 -:1010DC00B389C90063E89D001384060063949D04E2 -:1010EC0063723C05330CAC013337AC013307970109 -:1010FC00B38DED001384F6FF63E6BC016394BC036F -:10110C006362AC0363E69D00639EB401637C3C01A7 -:10111C00330CAC013337AC01330797011384E6FF72 -:10112C00B38DED00B3093C41B3849D40B3373C0112 -:10113C00B384F4409305F0FF63889C1A93850A00EE -:10114C0013850400EF105028930505002324A100FB -:10115C0013950C0113550501EF1050242322A10007 -:10116C0093850A0013850400EF10902A83268100D2 -:10117C00032741001315050193D7090133E5A70097 -:10118C00938D0600637EE50033059501938DF6FF84 -:10119C00636895016376E500938DE6FF3305950151 -:1011AC00B304E54093850A0013850400EF10D021A9 -:1011BC00930505002322A10013950C01135505017D -:1011CC00EF10D01D130C050093850A001385040045 -:1011DC00EF10102493990901032741001315050101 -:1011EC0093D9090133E5A90093070700637E8501B4 -:1011FC00330595019307F7FF6368950163768501C5 -:10120C009307E7FF3305950193940D01B3E4F400C4 -:10121C009397040193D7070193050B00B3098541FC -:10122C00138507002322F10093DD0401EF10101742 -:10123C0093050B00930A050013850D00EF10101693 -:10124C00130C050093850D0013850B00EF10101582 -:10125C0083274100130B050013850B0093850700B2 -:10126C00EF10D0133305850193D70A013385A700FE -:10127C0063768501B7070100330BFB00B70601004D -:10128C009386F6FF935705013377D50013170701A3 -:10129C00B3FADA00B38767013307570163E8F90043 -:1012AC00938504006390F9046300070433853C01C3 -:1012BC009385F4FF636495036366F5006314F5028C -:1012CC006370ED0293161D0033BDA601B30C9D0196 -:1012DC009385E4FF33059501138D06006314F50027 -:1012EC006304A70193E515001307FA3F6352E0125C -:1012FC0093F775006380070293F7F500930640009F -:10130C00638AD70093864500B3B5B6003304B400A6 -:10131C00938506009317740063DA0700B70700FF84 -:10132C009387F7FF3374F40013070A409307E07FA9 -:10133C0063C2E71A9317D40193D53500B3E7B7000E -:10134C0013543400B70610009386F6FF3374D400A0 -:10135C00B70610801377F77F9386F6FF13174701B4 -:10136C003374D4001319F9013364E4003367240196 -:10137C008320C10403248104832441040329010430 -:10138C008329C103032A8103832A4103032B01030D -:10139C00832BC102032C8102832C4102032D0102F9 -:1013AC00832DC10113850700930507001301010567 -:1013BC0067800000130AFAFF130C00006FF01FB9CE -:1013CC001389090013040B009385040093870B0009 -:1013DC00130720006380E710130730006382E70EC9 -:1013EC0013071000E392E7F01304000093070000CA -:1013FC006F00400913890A006FF09FFD3704080045 -:10140C009305000013090000930730006FF05FFC98 -:10141C0093061000B386E64093078003E3C6D7FC1F -:10142C009307F00163C4D706130AEA41B3174401CA -:10143C0033D7D500339A4501B3E7E700333A40017F -:10144C00B3E747013354D40013F777006300070266 -:10145C0013F7F70093064000630AD7001387470081 -:10146C00B337F7003304F400930707001317840015 -:10147C00634A07061317D40193D73700B367F700F5 -:10148C0013543400130700006FF0DFEB930710FECA -:10149C00B387E74013070002B357F40013050000AD -:1014AC006386E600130AEA4333154401336AB50038 -:1014BC00333A4001B3E74701130400006FF0DFF843 -:1014CC0037040800930700001307F07F130900008E -:1014DC006FF05FE713040000930700001307F07F21 -:1014EC006FF05FE613040000930700001307100071 -:1014FC006FF05FE5130101FA232C810423263105DB -:10150C003704100093D94501232A91042320610547 -:10151C00232E7103232C81031304F4FF232E1104B7 -:10152C00232821052324410523225105232A910335 -:10153C002328A1032326B10393F9F97F9304050013 -:10154C00930B0600138C06003374B40013DBF50107 -:10155C006388090A9307F07F6386F91037098000C6 -:10156C0013143400336424011359D50133698900F1 -:10157C00131D3500938919C0930C000013554C01B1 -:10158C00370A1000130AFAFF1375F57F337A8A01B4 -:10159C0093840B00135CFC01630405109307F07F2C -:1015AC006304F51637048000131A3A00336A8A0074 -:1015BC0013D4DB013364440193943B00130515C031 -:1015CC009307000013972C003367F700B389A90029 -:1015DC001307F7FF9306E000B34B8B01938A1900B6 -:1015EC0063E0E61697260000938686CF1317270034 -:1015FC003307D700032707003307D700670007001E -:10160C003369A400630E0906630004041305040087 -:10161C00EF104066930755FF1307C001634CF702A8 -:10162C001309D001130D85FF3309F9403314A401BC -:10163C0033D9240133698900339DA4019309D0C0A7 -:10164C00B389A9406FF05FF3EF10C0621305050278 -:10165C006FF05FFC130985FD33992401130D000015 -:10166C006FF0DFFD3369A40063040902130D05005C -:10167C00130904009309F07F930C30006FF01FF0F6 -:10168C00130D000093090000930C10006FF01FEF76 -:10169C00130D00009309F07F930C20006FF01FEEE8 -:1016AC0033647A01630E040663000A0413050A000E -:1016BC00EF10405C930755FF1307C001634EF70210 -:1016CC001304D001930485FF3304F440331A9A00B9 -:1016DC0033D48B0033644401B3949B009307D0C084 -:1016EC003385A7406FF0DFED13850B00EF108058AA -:1016FC00130505026FF01FFC130485FD33948B005A -:10170C00930400006FF09FFD33647A0163020402BE -:10171C0013040A001305F07F930730006FF09FEA63 -:10172C009304000013050000930710006FF09FE96D -:10173C00930400001305F07F930720006FF09FE8DF -:10174C0037070100130AF7FF135C0D0193DD040149 -:10175C00337D4D01B3F4440193050D001385040052 -:10176C002328E100EF108043930C050093850400BF -:10177C0013050C00EF1080422326A10093850D0069 -:10178C0013050C00EF108041130B050093050D00A1 -:10179C0013850D00EF1080408326C10093D70C01F8 -:1017AC003305D5003385A7006376D50003270101E7 -:1017BC00330BEB009356050133754501B3FC4C011B -:1017CC0013150501B3079501935C040133744401AF -:1017DC0093050D0013050400232AD1002326F100E4 -:1017EC00EF10C03B2328A1009305040013050C0047 -:1017FC00EF10C03A130A050093850C0013050C007A -:10180C00EF10C039130C050093050D0013850C0067 -:10181C00EF10C03803270101330545018326410130 -:10182C00935707013385A70063764501B70701007D -:10183C00330CFC003706010093570501338C8701EC -:10184C009307F6FF337AF5003377F700131A0A0182 -:10185C00135D0901330AEA003379F9003387460135 -:10186C0093050900138504002328E100232EC100F1 -:10187C00EF10C03293850400232CA10013050D003A -:10188C00EF10C031232AA10093050D0013850D0024 -:10189C00EF10C030930405009305090013850D006B -:1018AC00EF10C02F83264101032781013305D5009A -:1018BC00935707013385A7006376D5000326C10132 -:1018CC00B384C400B70601009387F6FF935D05014E -:1018DC00B3849D00B37DF5003377F70093050900C1 -:1018EC0013050400939D0D01B38DED00232CD10045 -:1018FC00EF10C02A93050400232AA10013050D0044 -:10190C00EF10C02993050D001304050013850C007E -:10191C00EF10C028130D05009305090013850C006A -:10192C00EF10C027032741013305850093570701AA -:10193C003385A7006376850083268101330DDD0096 -:10194C0083270101B70601009386F6FF330BFB00DA -:10195C00B377D5003377D70093970701B387E700A8 -:10196C00333A4B01B387870133844701330BBB01F7 -:10197C0033079400B33DBB01B306B70133BC8701F9 -:10198C0033344401935705013337970033648C008B -:10199C00B3BDB6013304F400B36DB7013304B40125 -:1019AC003304A40193D77601131494003364F40028 -:1019BC008327C10093149B00135B7B01B3E4F400F9 -:1019CC00B334900093979600B3E46401B3E4F4004D -:1019DC009317740063D2071293D7140093F4140076 -:1019EC00B3E497009317F401B3E4F4001354140018 -:1019FC001387FA3F6356E01093F774006380070275 -:101A0C0093F7F40093064000638AD7009387440051 -:101A1C00B3B49700330494009384070093177400B5 -:101A2C0063DA0700B70700FF9387F7FF3374F400FE -:101A3C0013870A409307E07F63C6E71893DA3400F4 -:101A4C009314D401B3E4540113543400B7071000B9 -:101A5C009387F7FF3374F4009377F77F3707108081 -:101A6C001307F7FF939747013374E400939BFB0133 -:101A7C003364F400B36774018320C105032481052A -:101A8C001385040003290105832441058329C1041E -:101A9C00032A8104832A4104032B0104832BC103F1 -:101AAC00032C8103832C4103032D0103832DC102DD -:101ABC00938507001301010667800000930B0B0050 -:101ACC001304090093040D0093870C0013072000E6 -:101ADC00638AE70E13073000638CE70C13071000C2 -:101AEC00E398E7F013040000930400006F008008F3 -:101AFC00930B0C006FF09FFD938A09006FF05FEF62 -:101B0C0093061000B386E64093078003E3CCD7FC22 -:101B1C009307F00163C4D706938AEA41B3175401C3 -:101B2C0033D7D400B3945401B3E7E700B334900037 -:101B3C00B3E497003354D40093F774006380070226 -:101B4C0093F7F40013074000638AE700938744007F -:101B5C00B3B4970033049400938407009317840064 -:101B6C0063CA07069317D40193D43400B3E49700E7 -:101B7C0013543400130700006FF05FED930710FE51 -:101B8C00B387E74013060002B357F40013070000B5 -:101B9C006386C600938AEA4333175401B3649700F3 -:101BAC00B3349000B3E49700130400006FF0DFF837 -:101BBC0037040800930400001307F07F930B000018 -:101BCC006FF0DFE813040000930400001307F07FAC -:101BDC006FF0DFE7130400009304000013071000FC -:101BEC006FF0DFE6130101FD23229102232A51013C -:101BFC0093547501B70A8000232021032328610127 -:101C0C00938AFAFF2326110223248102232E310109 -:101C1C00232C4101232671012324810193F4F40F19 -:101C2C00138B0500B3FAAA001359F5016388040855 -:101C3C009307F00F6384F40A939A3A00B7070004F1 -:101C4C00B3EAFA00938414F8930B000013557B014C -:101C5C00370480001304F4FF1375F50F337464011B -:101C6C00135BFB01630C05089307F00F6308F50A7F -:101C7C0013143400B70700043364F400130515F88B -:101C8C009307000013972B003367F7001307F7FF38 -:101C9C009306E000B3496901338AA44063E0E60A85 -:101CAC009716000093868667131727003307D70013 -:101CBC00032707003307D70067000700638A0A026F -:101CCC0013850A00EF00107B9307B5FF9304A0F86F -:101CDC00B39AFA00B384A4406FF01FF79304F00F8B -:101CEC00930B2000E3840AF6930B30006FF01FF681 -:101CFC0093040000930B10006FF05FF5630A04026D -:101D0C0013050400EF0010779307B5FF3314F400AC -:101D1C009307A0F83385A7406FF09FF61305F00FDB -:101D2C0093072000E30004F6930730006FF09FF553 -:101D3C0013050000930710006FF0DFF4131B540021 -:101D4C0063F68A12130AFAFF13090000935B0B0166 -:101D5C003704010093850B001304F4FF13850A006C -:101D6C00EF00906633748B0093050500130C05008F -:101D7C0013050400EF0090629304050093850B009B -:101D8C0013850A00EF00D0681359090113150501DA -:101D9C003365A90013090C00637E950033056501BA -:101DAC001309FCFF63686501637695001309ECFF6A -:101DBC0033056501B304954093850B00138504002E -:101DCC00EF00906093050500130C0500130504004B -:101DDC00EF00D05C930A050093850B00138504007B -:101DEC00EF0010631315050113040C00637E5501FD -:101DFC00330565011304FCFF6368650163765501C7 -:101E0C001304ECFF33056501131909013305554122 -:101E1C00336989003335A0003364A9001307FA072E -:101E2C006350E00A93777400638A07009377F40099 -:101E3C00930640006384D7001304440093174400B6 -:101E4C0063DA0700B70700F89387F7FF3374F400E1 -:101E5C0013070A089307E00F1354340063D2E70CFE -:101E6C00130400001307F00F6F00800B1399FA0195 -:101E7C0093DA1A006FF09FED9309090013840A009E -:101E8C0093870B0013072000E38CE7FC130730004B -:101E9C006382E70813071000E392E7F813040000CD -:101EAC00130700006F00C00793090B006FF09FFD34 -:101EBC003704400093090000930730006FF09FFC3B -:101ECC0093071000B387E7401307B001E348F7FC12 -:101EDC001305EA09B357F4003314A400333480001B -:101EEC0033E4870093777400638A07009377F400D8 -:101EFC00130740006384E700130444009317540055 -:101F0C0013543400E3DE07F8130400001307100029 -:101F1C006F000001370440001307F00F9309000015 -:101F2C00370580001305F5FF3374A4003705808056 -:101F3C001305F5FF1377F70F3374A400131777010C -:101F4C001395F9013364E4003365A4008320C102C6 -:101F5C000324810283244102032901028329C10144 -:101F6C00032A8101832A4101032B0101832BC10028 -:101F7C00032C81001301010367800000130101FD94 -:101F8C002322910223202103B704800013597501E9 -:101F9C00232E3101232671019384F4FF2326110291 -:101FAC0023248102232C4101232A5101232861017E -:101FBC0023248101232291011379F90F938B0500BE -:101FCC00B3F4A4009359F501630A09089307F00FC1 -:101FDC006306F90A93943400B7070004B3E4F400E1 -:101FEC00130919F8130B000013D57B01370480007B -:101FFC001304F4FF1375F50F3374740193DBFB01B9 -:10200C00630E05089307F00F630AF50A13143400E6 -:10201C00B70700043364F400130515F893060000A9 -:10202C0093172B00B3E7D7003309A9009387F7FF69 -:10203C001307E00033CA7901930A19006360F70AA9 -:10204C00171700001307473193972700B387E70052 -:10205C0083A70700B387E70067800700638A040241 -:10206C0013850400EF0010419307B5FF1309A0F886 -:10207C00B394F4003309A9406FF0DFF61309F00FA5 -:10208C00130B2000E38204F6130B30006FF0DFF526 -:10209C0013090000130B10006FF01FF5630A040204 -:1020AC0013050400EF00103D9307B5FF3314F40043 -:1020BC009307A0F83385A7406FF05FF61305F00F78 -:1020CC0093062000E30E04F4930630006FF05FF5E6 -:1020DC0013050000930610006FF09FF4370C0100FD -:1020EC00130BFCFF93DB0401935C0401B3F4640158 -:1020FC00337464019305040013850400EF00102A67 -:10210C00930504009309050013850B00EF001029BB -:10211C001304050093850C0013850B00EF001028A9 -:10212C00930B05009385040013850C00EF0010271A -:10213C003305850093D709013385A70063748500A7 -:10214C00B38B8B01B377650193970701B3F96901E1 -:10215C00B3873701139467003334800093D7A701FA -:10216C0013550501B367F4003304750113146400AF -:10217C003364F4009317440063D6070E935714008E -:10218C001374140033E487001387FA076350E00ECE -:10219C0093777400638A07009377F40093064000EA -:1021AC006384D700130444009317440063DA0700D8 -:1021BC00B70700F89387F7FF3374F40013870A0806 -:1021CC009307E00F63C4E710935734006F000003CC -:1021DC00138A09001384040093060B009307200054 -:1021EC006386F60E93073000638AF60C1306100014 -:1021FC009307000013070000E398C6F8370480002B -:10220C001304F4FF37058080B3F787001305F5FF3F -:10221C008320C102032481021377F70FB3F7A700C1 -:10222C00131777011315FA01B3E7E7008324410272 -:10223C00032901028329C101032A8101832A410157 -:10224C00032B0101832BC100032C8100832C410043 -:10225C0033E5A7001301010367800000138A0B000C -:10226C006FF0DFF7930A09006FF01FF2930710006D -:10227C00B387E7401307B0016340F706938AEA0976 -:10228C00B357F400331454013334800033E4870023 -:10229C0093777400638A07009377F4001307400068 -:1022AC006384E700130444009317540063CA0702C5 -:1022BC0093573400130700006FF05FF4B70740002A -:1022CC001307F00F130A00006FF05FF39307000081 -:1022DC001307F00F6FF09FF2930700006FF09FFD54 -:1022EC0093070000130710006FF05FF1B707800031 -:1022FC009387F7FF130101FF33F7A700935675017E -:10230C0013D67501B3F7B7002322910023202101C6 -:10231C0093F6F60F131837001376F60F23261100D9 -:10232C00232481001307F00F9354F5011389060041 -:10233C001305060093D5F501939737006314E60057 -:10234C006394070093C515003387C640639A951AAA -:10235C006356E00A63160606639C07009307F00FAA -:10236C00638CF60493070800138506006F00C014F5 -:10237C001307F7FF631E0702B387070113850600D7 -:10238C0013975700635A0712130515001307F00F24 -:10239C00630EE5323707007E93F617001307F7FF3D -:1023AC0093D71700B3F7E700B3E7D7006F00C0105F -:1023BC001306F00F639EC600930708006F004007DA -:1023CC001306F00FE38AC6FE37060004B3E7C70016 -:1023DC001306B0016356E600930710006FF0DFF9A7 -:1023EC00130600023306E640B3D5E700B397C700E7 -:1023FC00B337F000B3E7F5006FF01FF86300070880 -:10240C00639C0602631808001307F00F6316E60AB4 -:10241C006F0000029306F0FF6316D700B387070125 -:10242C006FF01FF69306F00F1347F7FF6310D602F9 -:10243C001305F00F6F0040089306F00FE30AD6FE69 -:10244C00B70600043307E0403368D8009306B001A8 -:10245C0063D6E600130710006F00C001930600025C -:10246C003356E8003387E6403317E8003337E00093 -:10247C003367E600B387E7006FF09FF01385160013 -:10248C001376F50F130710006342C7066394060416 -:10249C00130500006302080263860722B387070155 -:1024AC0013975700635A0700370700FC1307F7FF11 -:1024BC00B3F7E7001305100013F77700630A072042 -:1024CC0013F7F700930640006304D7209387470067 -:1024DC006F000020E30E08F4E38007EEB70700025C -:1024EC001305F00F930400006F00801E1307F00F0C -:1024FC00630EE51C3307F800935717006FF0DFFBF2 -:10250C006350E00863160604E38A07E41307F7FF39 -:10251C0063140702B307F84013850600139757009E -:10252C00E35C07F8370400041304F4FF33F487006A -:10253C00130905006F0080131306F00FE38EC6E637 -:10254C001306B0016350E602930710006FF09FFC76 -:10255C001306F00FE382C6E637060004B3E7C700A4 -:10256C006FF01FFE13060002B3D5E7003307E640F9 -:10257C00B397E700B337F000B3E7F5006FF09FF9BE -:10258C0063020708639E0602631808001307F00F26 -:10259C00938405006FF09FE79306F0FF6318D70054 -:1025AC00B3870741938405006FF05FF79306F00F34 -:1025BC001347F7FF6310D602938405006FF05FE7B3 -:1025CC009306F00FE30AD6FEB70600043307E0408B -:1025DC003368D8009306B00163D6E60013071000E9 -:1025EC006F00C001930600023356E8003387E640C3 -:1025FC003317E8003337E0003367E600B387E74072 -:10260C006FF05FFA138716001377F70F130610009D -:10261C006344E604639C060263180800639807127F -:10262C00130500006FF01FEC638607123307F840A8 -:10263C0093165700B387074163CA06109307070028 -:10264C0063100706930700006FF09FFDE31608E880 -:10265C00E39407F66FF09FE83304F8401317540027 -:10266C006354070433840741938405001305040065 -:10267C00EF0040601305B5FF3314A400634A250333 -:10268C00330525411305150013070002B357A400A9 -:10269C003305A7403314A40033348000B3E787001C -:1026AC00130500006FF05FE1E30E04F86FF01FFC00 -:1026BC00B70700FC9387F7FF3305A940B377F40005 -:1026CC006FF09FDF930708006FF01FDF9307000088 -:1026DC0013975700635E0700130515001307F00FDF -:1026EC00630EE506370700FC1307F7FFB3F7E700A7 -:1026FC001307F00F93D737006318E50063860700C4 -:10270C00B707400093040000370780001307F7FF5A -:10271C001375F50FB3F7E7001317750137058080B4 -:10272C008320C100032481001305F5FF33F5A700B6 -:10273C009394F4013365E50033659500032901009A -:10274C00832441001301010167800000938405007C -:10275C006FF01FF5930708006FF09FF493070000CC -:10276C006FF01FF937068000135775019307F6FFBA -:10277C001377F70F9305E007B3F7A7009356F5010E -:10278C0063F6E5049305D00963FAE500370500808C -:10279C001345F5FF3385A6006780000033E5C700BD -:1027AC009307500963DCE7001307A7F63315E50020 -:1027BC00638006023305A040678000009307600920 -:1027CC003387E7403355E5006FF09FFE130500009B -:1027DC0067800000130101FF2326110023248100D0 -:1027EC002322910063020510130405009354F50194 -:1027FC00635405003304A04013050400EF00804728 -:10280C009307E009B387A740130760096340F706F5 -:10281C00130780006356A700130585FF3314A4002B -:10282C00370580001305F5FF93F7F70F3374A400F9 -:10283C0013957701B70780809387F7FF3374F40003 -:10284C00B70700803364A40093C7F7FF1395F40116 -:10285C003374F4003365A4008320C1000324810089 -:10286C0083244100130101016780000013079009C4 -:10287C006350F702130750003307A7409306B501C6 -:10288C003357E4003314D4003334800033648700AE -:10289C00130750006356A7001307B5FF3314E40069 -:1028AC00370700FC1307F7FF937674003377E400C7 -:1028BC00638A06001374F400930640006304D4008A -:1028CC00130747009316570063DC0600B70700FC9C -:1028DC009387F7FF3377F7009307F009B387A74087 -:1028EC00135437006FF0DFF313040000930700005C -:1028FC00930400006FF0DFF293577501130101FF91 -:10290C0093F7F70F232481001387170037048000F7 -:10291C00232291001304F4FF232611001377F70FE1 -:10292C00930610003374A4009354F50163D2E606A9 -:10293C0013850738935734001314D401370710004C -:10294C001307F7FFB3F7E700370710801307F7FFFC -:10295C001375F57F13154501B3F7E70037070080B2 -:10296C00B3E7A7001347F7FF1395F401B3F7E7009C -:10297C0033E7A7008320C100130504000324810062 -:10298C0083244100930507001301010167800000B7 -:10299C00639407046302040613050400EF00802D02 -:1029AC009307A00063C2A7029307B000B387A740A8 -:1029BC0013075501B357F4003314E4001307903890 -:1029CC003305A7406FF09FF7930755FFB317F4003B -:1029DC00130400006FF09FFE93070000630A0400CD -:1029EC0093573400370708001314D401B3E7E700FA -:1029FC001305F07F6FF09FF49307000013050000A0 -:102A0C006FF0DFF3370610001306F6FF3376B600CF -:102A1C0013D845019357D5011378F87F1316360058 -:102A2C0033E6C7009307180093F7F77F930610005F -:102A3C0093D5F5011317350063D6F60A930608C82B -:102A4C009307E00F63C2D70C6340D008930790FE46 -:102A5C0063C4F612B70780001305E0013366F60075 -:102A6C003305D5409307F00163C8A702130828C8A3 -:102A7C00B3170701B337F000331606013355A7001F -:102A8C00B3E7C700B367F5009306000013F77700B0 -:102A9C00630007086F00C00E9307E0FFB386D740B2 -:102AAC0093070002B356D600930800006306F500A6 -:102ABC00130828CAB3180601B3E7E800B337F000CF -:102ACC00B3E7F6006FF05FFC131565003335A0001B -:102ADC00131636009357D7013366C500B367F6005B -:102AEC006FF0DFFAB367E60063160800B337F00047 -:102AFC006FF09FF99306F00F638C070013163600E6 -:102B0C00B70700026FF09FFD930700009306F00FCC -:102B1C0013975700635E0700938616001307F00F98 -:102B2C00638AE606370700FC1307F7FFB3F7E700E5 -:102B3C001307F00F93D737006398E60063860700FE -:102B4C00B707400093050000370580001305F5FF1B -:102B5C00B3F7A700370580801305F5FF93F6F60F42 -:102B6C0093967601B3F7A7009395F501B3E7D700D9 -:102B7C0033E5B70067800000930710009306000050 -:102B8C0013F7F70013064000E304C7F893874700D8 -:102B9C006FF01FF8930700006FF09FF91306050004 -:102BAC001305000093F61500638406003305C50079 -:102BBC0093D5150013161600E39605FE67800000EA -:102BCC006340050663C605061386050093050500DC -:102BDC001305F0FF630C060293061000637AB6002F -:102BEC006358C0001316160093961600E36AB6FEDF -:102BFC001305000063E6C500B385C5403365D500F9 -:102C0C0093D6160013561600E39606FE6780000056 -:102C1C0093820000EFF05FFB1385050067800200D4 -:102C2C003305A04063D80500B305B0406FF0DFF961 -:102C3C00B305B04093820000EFF01FF93305A040BC -:102C4C00678002009382000063CA0500634C050094 -:102C5C00EFF09FF71385050067800200B305B040C5 -:102C6C00E35805FE3305A040EFF01FF63305B040E6 -:102C7C0067800200B7070100637AF5029307F00F33 -:102C8C00B3B7A70093973700130700023307F74039 -:102C9C00B357F500170500001305C56FB307F50012 -:102CAC0003C507003305A740678000003707000104 -:102CBC0093070001E36AE5FC930780016FF0DFFCEA -:102CCC00411106C6EFD0CFD4B240B70710F023A005 -:082CDC0007F20145410182806D -:102CE4004448525953544F4E452050524F47524135 -:102CF4004D2C20534F4D4520535452494E4700000C -:102D04004468727973746F6E652042656E63686D92 -:102D140061726B2C2056657273696F6E20322E318E -:102D240020284C616E67756167653A20432900006D -:102D340050726F6772616D20636F6D70696C65644A -:102D440020776974682027726567697374657227D0 -:102D540020617474726962757465000050726F67E3 -:102D640072616D20636F6D70696C6564207769743E -:102D7400686F75742027726567697374657227209C -:102D8400617474726962757465000000506C6561E9 -:102D94007365206769766520746865206E756D6259 -:102DA4006572206F662072756E73207468726F7519 -:102DB4006768207468652062656E63686D61726B14 -:102DC4003A200000457865637574696F6E207374EA -:102DD400617274732C2025642072756E732074687C -:102DE400726F756768204468727973746F6E650AD0 -:102DF40000000000457865637574696F6E20656E28 -:102E04006473000046696E616C2076616C7565734D -:102E1400206F6620746865207661726961626C65F2 -:102E240073207573656420696E207468652062651B -:102E34006E63686D61726B3A00000000496E745FE6 -:102E4400476C6F623A202020202020202020202060 -:102E54002025640A000000002020202020202020BB -:102E640073686F756C642062653A20202025640ABB -:102E740000000000426F6F6C5F476C6F623A202065 -:102E840020202020202020202025640A000000008B -:102E940043685F315F476C6F623A20202020202016 -:102EA400202020202025630A00000000202020206C -:102EB4002020202073686F756C642062653A20209E -:102EC4002025630A0000000043685F325F476C6F8F -:102ED400623A202020202020202020202025630A60 -:102EE400000000004172725F315F476C6F625B38B3 -:102EF4005D3A2020202020202025640A00000000C4 -:102F04004172725F325F476C6F625B385D5B375D45 -:102F14003A2020202025640A0000000020202020E0 -:102F24002020202073686F756C642062653A20202D -:102F3400204E756D6265725F4F665F52756E7320C9 -:102F44002B203130000000005074725F476C6F62B8 -:102F54002D3E000020205074725F436F6D703A2044 -:102F640020202020202020202025640A00000000AA -:102F7400202020202020202073686F756C6420623C -:102F8400653A20202028696D706C656D656E7461EA -:102F940074696F6E2D646570656E64656E74290066 -:102FA400202044697363723A2020202020202020AE -:102FB400202020202025640A000000002020456EE7 -:102FC400756D5F436F6D703A2020202020202020F3 -:102FD4002025640A000000002020496E745F436FBE -:102FE4006D703A2020202020202020202025640AF3 -:102FF4000000000020205374725F436F6D703A200C -:1030040020202020202020202025730A00000000FA -:10301400202020202020202073686F756C6420629B -:10302400653A2020204448525953544F4E4520506D -:10303400524F4752414D2C20534F4D45205354522B -:10304400494E47004E6578745F5074725F476C6FE9 -:10305400622D3E00202020202020202073686F75E0 -:103064006C642062653A20202028696D706C656D5F -:10307400656E746174696F6E2D646570656E6465E8 -:103084006E74292C2073616D652061732061626FF9 -:1030940076650000496E745F315F4C6F633A20209F -:1030A40020202020202020202025640A0000000069 -:1030B400496E745F325F4C6F633A202020202020D9 -:1030C400202020202025640A00000000496E745F3F -:1030D400335F4C6F633A20202020202020202020C2 -:1030E4002025640A00000000456E756D5F4C6F6317 -:1030F4003A20202020202020202020202025640A7F -:10310400000000005374725F315F4C6F633A2020FB -:1031140020202020202020202025730A00000000E9 -:10312400202020202020202073686F756C6420628A -:10313400653A2020204448525953544F4E4520505C -:10314400524F4752414D2C2031275354205354524F -:10315400494E47005374725F325F4C6F633A2020CC -:1031640020202020202020202025730A0000000099 -:10317400202020202020202073686F756C6420623A -:10318400653A2020204448525953544F4E4520500C -:10319400524F4752414D2C2032274E442053545213 -:1031A400494E47004D656173757265642074696D9D -:1031B4006520746F6F20736D616C6C20746F206F69 -:1031C400627461696E206D65616E696E6766756CA7 -:1031D40020726573756C747300000000506C656137 -:1031E400736520696E637265617365206E756D62C7 -:1031F4006572206F662072756E730000436C6F6396 -:103204006B206379636C65733D2564200A000000BC -:10321400444D49505320706572204D687A3A2020FD -:10322400202020202020202020202020202020209A -:10323400202020202020202020202020000000000A -:1032440025642E00256400004448525953544F4EBF -:10325400452050524F4752414D2C20312753542082 -:10326400535452494E4700004448525953544F4E08 -:10327400452050524F4752414D2C2032274E442076 -:10328400535452494E4700004448525953544F4EE8 -:10329400452050524F4752414D2C20332752442051 -:1032A400535452494E47000034E2FFFF48E1FFFF08 -:1032B40054E1FFFF48E1FFFF20E2FFFF48E1FFFF89 -:1032C40054E1FFFF34E2FFFF34E2FFFF20E2FFFF9F -:1032D40054E1FFFF20E1FFFF20E1FFFF20E1FFFFBA -:1032E4005CE1FFFFF0E7FFFFF0E7FFFF14E8FFFFFB -:1032F400E4E7FFFFE4E7FFFFD4E8FFFF14E8FFFF84 -:10330400E4E7FFFFD4E8FFFFE4E7FFFF14E8FFFF73 -:10331400E0E7FFFFE0E7FFFFE0E7FFFFD4E8FFFFA0 -:1033240048EBFFFF84EBFFFF90EBFFFF84EBFFFF15 -:10333400FCEBFFFF84EBFFFF90EBFFFF48EBFFFF8D -:1033440048EBFFFFFCEBFFFF90EBFFFF60EBFFFFA1 -:1033540060EBFFFF60EBFFFF98EBFFFF88EEFFFFE2 -:1033640088EEFFFF08EFFFFF80EEFFFF80EEFFFF18 -:1033740068EFFFFF08EFFFFF80EEFFFF68EFFFFF3E -:1033840080EEFFFF08EFFFFF7CEEFFFF7CEEFFFF08 -:103394007CEEFFFF68EFFFFF00010202030303035B -:1033A40004040404040404040505050505050505D1 -:1033B40005050505050505050606060606060606B1 -:1033C4000606060606060606060606060606060699 -:1033D4000606060606060606070707070707070781 -:1033E4000707070707070707070707070707070769 -:1033F4000707070707070707070707070707070759 -:103404000707070707070707070707070707070748 -:103414000707070707070707080808080808080830 -:103424000808080808080808080808080808080818 -:103434000808080808080808080808080808080808 -:1034440008080808080808080808080808080808F8 -:1034540008080808080808080808080808080808E8 -:1034640008080808080808080808080808080808D8 -:1034740008080808080808080808080808080808C8 -:1034840008080808080808080808080808080808B8 -:083494000808080808080808F0 -:1034A0000000000080842E41000000205FA0124236 -:0C34B000F90295503353DE470000C8427B -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/dhrystoneO3M.hex b/benchmarks/riscv_tests/dhrystoneO3M.hex deleted file mode 100644 index 5322b70f..00000000 --- a/benchmarks/riscv_tests/dhrystoneO3M.hex +++ /dev/null @@ -1,851 +0,0 @@ -:0200000480007A -:100000006F00000B1300000013000000130000003D -:100010001300000013000000130000001300000094 -:10002000232E11FE232C51FE232A61FE232871FE6C -:100030002326A1FE2324B1FE2322C1FE2320D1FECC -:10004000232EE1FC232CF1FC232A01FD232811FDA2 -:100050002326C1FD2324D1FD2322E1FD2320F1FD30 -:10006000130101FCEF00400B8320C10383228103B5 -:1000700003234103832301030325C1028325810256 -:1000800003264102832601020327C1018327810140 -:100090000328410183280101032EC100832E810022 -:1000A000032F4100832F010013010104730020304E -:1000B00097410000938181C11761000013018143C2 -:1000C0001385C18197650000938585026308B5009B -:1000D00023200500130545006FF05FFF1735000072 -:1000E0001305853E1301C1FF973500009385C53D7B -:1000F000630EB50083260500130545002320A100EB -:10010000E7800600032501006FF01FFE1301410088 -:08011000EF20903D6F0000009C -:100118006780000003C75183930710046304F70046 -:10012800678000008327050003A7C1839387970092 -:10013800B387E7402320F5006780000003A64184C9 -:1001480063080600032706002320E50003A6418470 -:1001580083A5C1831306C6001305A0006F00100F06 -:10016800130101FF2320210183A741842324810057 -:100178000324050003A707002322910083AE47004C -:1001880003AE870003A3070183A8470103A88701DB -:1001980083A5070203A6470283A687022326110028 -:1001A8009304050003A5C70183A7C7022320E40021 -:1001B80003A70400232EA4002326F4022322D4013B -:1001C800930750002324C40123286400232A140120 -:1001D800232C04012320B4022322C4022324D402A2 -:1001E80023A6F4002326F4002320E40013050400CA -:1001F800EFF0DFF4832744006380070883A7040037 -:100208008320C1000324810083AF070003AF4700A8 -:1002180083AE870003AEC70003A3070183A8470185 -:1002280003A8870183A5C70103A6070283A647027F -:1002380003A7870283A7C70223A0F40123A2E4012E -:1002480023A4D40123A6C40123A8640023AA14016B -:1002580023AC040123AEB40023A0C40223A2D40219 -:1002680023A4E40223A6F402032901008324410005 -:10027800130101016780000003A584009307600053 -:10028800930584002326F400EF00500C83A74184D3 -:100298000325C4001306C40083A707008320C100F8 -:1002A800832441002320F400032481000329010052 -:1002B8009305A000130101016F00407983C75183A2 -:1002C80083A681839387F7FB93B71700B3E7D7001B -:1002D80023ACF18213072004238AE182678000009F -:1002E80013071004A38AE18223AC0182678000000F -:1002F800130101F613050003232E1108232C81088E -:10030800232A91072326B107232A910823282109A4 -:100318002326310923244109232251092320610975 -:10032800232E7107232C81072328A107EF00D0195A -:1003380023A0A18413050003EF00101983A70184EB -:1003480023A2A1842320F500930720002324F5008D -:10035800B7350080930780022326F5001306F001C5 -:100368009385C5D02322050013050501EF00502F02 -:100378003737008093074727032E472703A34700F3 -:1003880083A8870003A8C70083A5070103A6470120 -:1003980083A6870103D7C70183C7E701B73D00805C -:1003A800231EE102230FF1021387CD5D9307A000FE -:1003B8001305A000232EF7642320C1032322610222 -:1003C80023241103232601032328B102232AC1026F -:1003D800232CD102EF005027373500801305C5D2F2 -:1003E800EF0050221305A000EF00102683A7018319 -:1003F800638A0760373500801305C5D5EF00902064 -:100408001305A000EF00502437350080130585DB65 -:10041800EF00100E1305A000EF0010233735008001 -:100428009305800C130505DFEF00900CEF00902278 -:100438003734008083274429373D0080032C4D2B17 -:100448002326F10023A6A18293091000130444294E -:1004580093042000EFF0DFE8EFF05FE68347E40164 -:1004680003264401032E4400032384008328C40088 -:1004780003280401832684010357C401832EC10085 -:10048800230FF104930501049307100013050102DB -:10049800232AC104232EF100232A91002320D10509 -:1004A8002322C105232461042326110523280105DD -:1004B800232CD104231EE104EF00806203264101AE -:1004C8001335150023ACA18263CAC4029317260012 -:1004D800B387C7009387D7FF13050600930530003D -:1004E80013068101232CF100EF0040560326410139 -:1004F80013061600232AC100E3DAC4FC832681010F -:100508001385C1849385CD5DEF00405503A54184D3 -:10051800930A1004130A3000EFF09FC403C7418305 -:1005280093070004130B4D2B63F4E70213850A00AD -:1005380093053004EF00C0588327C10113871A00C0 -:10054800630CF54483C74183937AF70FE3F057FFB1 -:1005580083274101032B810113054101330AFA0264 -:1005680093891900B34A6A03232A5101EFF09FBA0D -:100578009307900CE390F9EEEF00D00D23A4A1822D -:1005880037350080130505E2EF00D0071305A000FA -:10059800EF00900B37350080130505E3EF00900658 -:1005A8001305A000EF00500A83A5C18337350080EA -:1005B800130585E637340080EF00807393055000FB -:1005C800130544E8EF00C07283A5818337350080A6 -:1005D800130505EAEF00C07193051000130544E800 -:1005E800EF00007183C55183373500801305C5EBD3 -:1005F800EF000070B734008093051004138584ED74 -:10060800EF00006F83C5418337350080130545EF40 -:10061800EF00006E93052004138584EDEF00406D14 -:100628009387C18483A5070237350080130505F138 -:10063800EF00006C93057000130544E8EF00406B71 -:10064800B73700809387C75D83A5C76537350080B6 -:100658001305C5F2EF00C06937350080130585F42E -:10066800EF00407A37350080130545F7EF008079B1 -:1006780003A74184B7370080138507F8832507004F -:100688002326F100373D0080EF0080663735008073 -:100698001305C5F9EF00007703A741841305CDFCC6 -:1006A800373C008083254700B73B0080B73900807E -:1006B800EF00006493050000130544E8EF00406371 -:1006C80003A7418413058CFE3739008083258700F2 -:1006D800330A6A41EF00C06193052000130544E81E -:1006E800EF00006103A7418413854B008325C700F1 -:1006F800EF00006093051001130544E8EF00405F28 -:1007080083A541841385090293850501EF00405EA6 -:100718001305C903EF00006F37350080130505077F -:10072800EF00406E03A701848327C10083250700DB -:10073800138507F8EF00C05B3735008013050508FF -:10074800EF00406C83A701841305CDFC83A5470007 -:10075800EF00005A93050000130544E8EF004059E4 -:1007680083A7018413058CFE83A58700EF004058FA -:1007780093051000130544E8EF00805783A7018410 -:1007880013854B0083A5C700EF0080569305200111 -:10079800130544E8EF00C05583A5018413850902B9 -:1007A80093850501EF00C0541305C903EF00806568 -:1007B80083254101373500801305050CEF004053B0 -:1007C80093055000130544E8EF00805293173A0050 -:1007D800338A474137350080B3055A411305C50DA3 -:1007E800EF0000519305D000130544E8EF00405096 -:1007F80083258101373500801305850FEF00404FB1 -:1008080093057000130544E8EF00804E8325C1016D -:100818003735008013054511EF00804D9305100012 -:10082800130544E8EF00C04C3735008093050102FA -:1008380013050513EF00C04B373500801305C514A9 -:10084800EF00405C37350080930501041305051857 -:10085800EF00004A373500801305C519EF00805AAC -:100868001305A000EF00405E03A7C18283A5818223 -:100878009307301FB385E54023A2B18263D0B71A2E -:100888003735008013058522EF00804603A5418295 -:10089800EF20C00313040500EF208015B737008050 -:1008A80003A6874C83A6C74CEF00D06FB7370080EC -:1008B80003A6074D83A6474DEF00D000EF20002484 -:1008C80023A0A182B737008003A5874D93050400B4 -:1008D800EF10004B23AEA180373500801305C523E8 -:1008E800EF00004103A54182EF10507EB73700802A -:1008F8009305050003A5C74DEF10804813040500B4 -:10090800EF10D07593040500EF10507C9305050097 -:1009180013050400EF10102DB737008083A5074E8C -:10092800EF10007AEF10907313040500373500803C -:10093800938504001305C526EF00803B93079000BC -:1009480063D0871037350080930504001305052709 -:10095800EF00003A1305A000EF00004F8320C10903 -:100968000324810983244109032901098329C10832 -:10097800032A8108832A4108032B0108832BC10716 -:10098800032C8107832C4107032D0107832DC10602 -:100998001301010A678000009305C10113050000D7 -:1009A800EF00C01A03234B0083288B000328CB00D9 -:1009B80003250B0183254B0103268B018356CB01AD -:1009C8000347EB0183C74183938A1A0023208105DB -:1009D8002322610423241105232601052328A104C9 -:1009E800232AB104232CC104231ED104230FE104BC -:1009F80023AE318393FAFA0F138A0900E3F857B349 -:100A08006FF01FB537350080130585D8EF00803F9C -:100A18001305A000EF0040436FF01F9F373500809B -:100A28001305051DEF00003E3735008013058520AE -:100A3800EF00403D1305A000EF0000416FF01FF2EA -:100A480013050003EF0040406FF0DFEF13052500AA -:100A5800B305B5002320B6006780000013075600D1 -:100A68001308800C33080703131626009317270072 -:100A78003305F5002320D500232CE5062322D500D5 -:100A8800B307C800B387F50083A6070123AAE700C8 -:100A980023ACE7001387160023A8E7008327050087 -:100AA800B3850501B385C50037160000B305B60048 -:100AB80023AAF5FA1307500023AEE18267800000ED -:100AC8001375F50F93F5F50F6306B50013050000D0 -:100AD80067800000A38AA1821305100067800000C8 -:100AE800130101FF232481002322910023261100F2 -:100AF800130405009384050083C5340003452400CE -:100B0800EFF01FFCE31A05FE9385040013050400AB -:100B1800EF008043930700006358A0001307A0006C -:100B280023AEE182930710008320C10003248100D3 -:100B38008324410013850700130101016780000029 -:100B48001305E5FF1335150067800000130101FF49 -:100B58002324810023229100232611001304050079 -:100B680093840500EFF0DFFD630E050223A08400E7 -:100B7800930710006300F4046304040413072000BF -:100B8800630CE404930740006314F40023A0E4001A -:100B98008320C10003248100832441001301010143 -:100BA800678000009307300023A0F400930710002B -:100BB800E314F4FC03A7C1839307400663DAE70252 -:100BC8008320C1000324810023A004008324410062 -:100BD80013010101678000008320C1000324810004 -:100BE80023A0F40083244100130101016780000061 -:100BF8008320C100032481009307300023A0F40060 -:100C0800832441001301010167800000130101FFE3 -:100C18002324810023261100130405000345050041 -:100C2800630A050013041400EF00002203450400C2 -:100C3800E31A05FE8320C10003248100130101018A -:100C4800678000006F004020130101FD23229102FC -:100C58002326110223248102232021039304050063 -:100C6800634C050413090100130409001307A000CD -:100C780063940400631E2401B3E7E4021304140020 -:100C880093870703B3C4E402A30FF4FE6FF05FFE7B -:100C98001304F4FF03450400EFF0DFFAE31A24FF1E -:100CA8008320C10203248102832441020329010213 -:100CB80013010103678000001305D002EFF09FF8CD -:100CC800B30490406FF01FFA03A78184B307A7000D -:100CD8003765008023A4F1841305C5CE9306004030 -:100CE8003305E50063D4F600730010006780000048 -:100CF800130101FB232C4101232611022324810225 -:100D08002322910223202103232E3101232A51017A -:100D1800130A0500034505002322F1049307410344 -:100D2800232AB102232CC102232ED1022320E1045D -:100D380023240105232611052326F1006308050253 -:100D480013040000930A5002930430061309300775 -:100D580093094006630E5503EFF0DFEE1304140009 -:100D6800B3078A0003C50700E31605FE8320C10206 -:100D78000324810283244102032901028329C1013A -:100D8800032A8101832A41011301010567800000BC -:100D9800930614003307DA006F000001638C270301 -:100DA8006386370593861600834707001384060079 -:100DB80013071700E38407FAE39297FE8327C1001D -:100DC80003A50700938747002326F100EFF09FE76C -:100DD8006FF0DFF88327C10003A50700938747005A -:100DE8002326F100EFF09FE26FF05FF78327C10041 -:100DF80003A50700938747002326F100EFF0DFE4FF -:100E08006FF0DFF5130101FF232481002326110071 -:100E18001304050003450500630A050013041400C4 -:100E2800EF00800203450400E31A05FE1305A00045 -:100E3800EF0080018320C100032481001305000016 -:100E48001301010167800000B70710F023A0A7F085 -:100E580067800000B70710F003A507F1678000005E -:100E6800B3C7A50093F737003307C500639607009B -:100E78009307300063E4C70293070500636CE5003D -:100E88006780000083C605009387170093851500C7 -:100E9800A38FD7FEE3E8E7FE67800000937735006D -:100EA80063920708930705009376C7FF138606FE2B -:100EB80063F6C70883A3050083A2450083AF8500B6 -:100EC80003AFC50083AE050103AE450103A3850149 -:100ED80083A8C501938545029387470203A8C5FFE8 -:100EE80023AE77FC23A057FE23A2F7FF23A4E7FF36 -:100EF80023A6D7FF23A8C7FF23AA67FE23AC17FFA3 -:100F080023AE07FF6FF0DFFA83C60500938717004B -:100F180093851500A38FD7FE93F63700E39606FE58 -:100F28006FF09FF8930705006FF01FFF03A60500F9 -:100F3800938747009385450023AEC7FEE3E8D7FEB5 -:100F4800E3EAE7F4678000003367B5009303F0FF36 -:100F58001377370063100710B7877F7F9387F7F7FA -:100F68000326050083A60500B372F6003363F60076 -:100F7800B382F200B3E26200639272106316D6087D -:100F88000326450083A64500B372F6003363F600D6 -:100F9800B382F200B3E26200639E720C6316D60657 -:100FA8000326850083A68500B372F6003363F60036 -:100FB800B382F200B3E262006398720C6316D6043F -:100FC8000326C50083A6C500B372F6003363F60096 -:100FD800B382F200B3E262006392720C6316D60227 -:100FE8000326050183A60501B372F6003363F600F4 -:100FF800B382F200B3E26200639C720A13054501F2 -:1010080093854501E30ED6F413170601939706015D -:10101800631EF7001357060193D706013305F740FF -:101028009375F50F63900502678000001357070159 -:1010380093D707013305F7409375F50F63940500BF -:10104800678000001377F70F93F7F70F3305F74022 -:10105800678000000346050083C6050013051500D8 -:10106800938515006314D600E31606FE3305D640B3 -:10107800678000001305450093854500E31CD6FCF6 -:10108800130500006780000013058500938585001F -:10109800E312D6FC13050000678000001305C500A5 -:1010A8009385C500E318D6FA130500006780000091 -:1010B8001305050193850501E31ED6F81305000005 -:1010C80067800000130101FD23248102232291027D -:1010D8002328610113040500130B0500B704100051 -:1010E80013D5450123202103232E31012326710125 -:1010F8009384F4FF23261102232C4101232A510152 -:101108001375F57F930B060093890600B3F4B400BA -:1011180013D9F5016306050A9307F07F6306F510F6 -:1011280093943400B7068000B3E4D400935ADB01EB -:10113800B3EA9A0013143B00130A15C0130B0000FE -:1011480013D54901B70410009384F4FF1375F57F94 -:10115800B3F43401938F0B0093D9F901630205109E -:101168009307F07F6302F516B70780009394340065 -:10117800B3E4F40093D7DB01B3E79700939F3B00F8 -:10118800130515C01307000093162B00B3E6E600FD -:101198009386F6FF9305E000334639013305AA40EC -:1011A80063E0D5169725000093858512939626004F -:1011B800B386B60083A60600B386B600678006002D -:1011C800B3EA6401638E0A0663800404138504008D -:1011D800EF10502C930755FF1307C001634EF70219 -:1011E800930AD001130485FFB38AFA40B3948400AC -:1011F800B35A5B01B3EA9A0033148B00130AD0C0C8 -:10120800330AAA406FF09FF313050B00EF109028E4 -:10121800130505026FF01FFC930485FDB31A9B00AC -:10122800130400006FF09FFDB3EA640163820A02B1 -:10123800938A0400130AF07F130B30006FF05FF0FD -:1012480013040000130A0000130B10006FF05FEF87 -:1012580013040000130AF07F130B20006FF05FEEF9 -:10126800B3E77401638E07066380040413850400E2 -:10127800EF105022130755FF9307C00163CEE70212 -:101288009307D001930F85FFB387E740B394F40128 -:10129800B3D7FB00B3E79700B39FFB011306D0C099 -:1012A8003305A6406FF01FEE13850B00EF10901E5C -:1012B800130505026FF01FFC930785FDB397FB002C -:1012C800930F00006FF09FFDB3E77401638207027C -:1012D800938704001305F07F130730006FF0DFEAEF -:1012E800930F000013050000130710006FF0DFE9EB -:1012F800930F00001305F07F130720006FF0DFE85D -:1013080063E657016390FA36636EF4359395FA01F4 -:10131800935614001317F40193DA1A0033E4D50036 -:101328009397870013D88F013368F800935E0801FC -:10133800B3D5DA03131E0801135E0E019356040198 -:1013480093988F00B3F4DA03938F0500B307BE02B6 -:1013580093940401B3E6960063FEF600B386060193 -:10136800938FF5FF63E8060163F6F600938FE5FFB8 -:10137800B3860601B386F64033D3D60313140401AB -:1013880013540401B3F6D60393070300B3056E02A2 -:1013980093960601B366D40063FEB600B3860601D1 -:1013A8009307F3FF63E8060163F6B6009307E3FFCC -:1013B800B38606013384B640939F0F01B705010039 -:1013C800B3EFFF001383F5FF93D60F01B3F76F0058 -:1013D80013DF080133F36800B3836702B38466023E -:1013E800B307FF02B382E603B386970093D70301DE -:1013F800B387D70063F49700B382B20093D607018E -:10140800B3865600B70201009382F2FFB3F5570086 -:1014180093950501B3F35300B38575006368D40051 -:1014280093870F006314D4046372B704330717015A -:10143800B3321701B3820201330454009387FFFFCC -:101448006366880063148802636217036366D400C6 -:10145800639E8600637CB700330717019387EFFF0D -:10146800B33F1701B38F0F013304F401B305B7403D -:101478003304D4403337B7003304E440930FF0FF0C -:1014880063048812B352D40393D605013374D4038A -:1014980013870200B30F5E021314040133E48600BD -:1014A800637EF401330404011387F2FF63680401C7 -:1014B8006376F4011387E2FF330404013304F44133 -:1014C800B356D4039395050193D505013374D4031A -:1014D800330EDE021314040133E4850093850600FD -:1014E800637EC401330404019385F6FF6368040135 -:1014F8006376C4019385E6FF3304040113170701DB -:10150800B365B70013970501135707013304C441A6 -:1015180013DE0501B30E670233036E02330ECF03E9 -:10152800330FEF0213D70E01330F6F003307E701B4 -:1015380063766700B7060100330EDE001353070118 -:101548003303C301370E0100130EFEFFB376C70144 -:1015580093960601B3FECE01B386D6016368640094 -:10156800938F0500631064046380060433048800C5 -:10157800938FF5FF63640403636664006314640275 -:1015880063F0D80213971800B3381701338808019D -:10159800938FE5FF33040401930807006314640084 -:1015A8006384160193EF1F009306F53F635AD0102A -:1015B80013F77F006300070213F7FF00930540004D -:1015C800630AB70093854F00B3BFF501B387F701EE -:1015D800938F050013977700635A0700370700FFBA -:1015E8001307F7FFB3F7E700930605401307E07FFB -:1015F800634AD7181397D70193DF3F003367F70182 -:1016080093D73700B70510009385F5FFB3F7B700F8 -:10161800B70510809385F5FF93F6F67F93964601FC -:10162800B3F7B7008320C102032481021316F60121 -:10163800B3E7D700B3E6C7008324410203290102B8 -:101648008329C101032A8101832A4101032B010156 -:10165800832BC100130507009385060013010103BE -:10166800678000001305F5FF130700006FF05FCBDC -:101678001306090093870A00930F040013070B0051 -:10168800930620006300D710930630006302D70E3C -:1016980093061000E31AD7F0930700001307000021 -:1016A8006F004009138609006FF09FFDB707080017 -:1016B800930F000013060000130730006FF05FFC63 -:1016C80093051000B385D54013078003E346B7FCA4 -:1016D8001307F0016344B7061305E5413397A700E4 -:1016E800B3D6BF003395AF003367D7003335A000BA -:1016F8003367A700B3D7B7009376770063800602F5 -:101708009376F70093054000638AB6009306470076 -:1017180033B7E600B387E700138706009396870080 -:1017280063CA06069396D7011357370033E7E600D6 -:1017380093D73700930600006FF0DFEC130710FE15 -:101748003307D7401308000233D7E7009306000099 -:10175800638605011305E543B396A70033E5F60153 -:101768003335A0003367A700930700006FF0DFF858 -:10177800B7070800130700009306F07F1306000060 -:101788006FF05FE893070000130700009306F07FEF -:101798006FF05FE79307000013070000930610003F -:1017A8006FF05FE6130101FD23202103232A510175 -:1017B8003709100093DA4501232E3101232C41010A -:1017C80023286101232671011309F9FF2326110239 -:1017D800232481022322910293FAFA7F130B050036 -:1017E800930B0600138A06003379B90093D9F501E3 -:1017F80063880A0A9307F07F6386FA10370480002B -:1018080013193900336989001354D501336424014D -:1018180093143500938A1AC0130B000013554A011C -:10182800370910001309F9FF1375F57F337949015A -:1018380013870B00135AFA01630405109307F07F0E -:101848006304F516B7078000131939003369F900E6 -:1018580093D7DB01B3E7270113973B00130515C0A6 -:101868009306000093152B00B3E5D5003385AA0035 -:101878009385F5FF9308E00033C649011308150066 -:1018880063E0B81617250000130545A893952500B1 -:10189800B385A50083A50500B385A500678005006D -:1018A8003364A900630E04066300090413050900E4 -:1018B800EF10403E930755FF1307C001634CF70232 -:1018C8001304D001930485FF3304F44033199900BD -:1018D80033548B0033642401B3149B00930AD0C0A3 -:1018E800B38AAA406FF05FF3EF10C03A1305050200 -:1018F8006FF05FFC130485FD33148B009304000024 -:101908006FF0DFFD3364A90063040402930405004B -:1019180013040900930AF07F130B30006FF01FF0D7 -:1019280093040000930A0000130B10006FF01FEFE0 -:1019380093040000930AF07F130B20006FF01FEE52 -:10194800B3677901638E070663000904130509006C -:10195800EF104034930655FF9307C00163CED702BA -:101968009307D001130785FFB387D7403319E900E0 -:10197800B3D7FB00B3E727013397EB009306D0C03A -:101988003385A6406FF0DFED13850B00EF10803034 -:10199800130505026FF01FFC930785FDB397FB0045 -:1019A800130700006FF09FFDB36779016382070298 -:1019B800930709001305F07F930630006FF09FEA44 -:1019C8001307000013050000930610006FF09FE94D -:1019D800130700001305F07F930620006FF09FE8BF -:1019E800B70F0100138FFFFF93D6040113530701AC -:1019F800B3F4E4013377E701B3089302B305970220 -:101A0800B382E602338E580093D80501B388C80123 -:101A1800B38E660263F45800B38EFE0113D9080131 -:101A2800B3F8E80193DF0701B3F5E501B3F3E70184 -:101A380093980801B388B800B3877602B3859302F8 -:101A4800B3849F02338EF40093D40501B384C40198 -:101A5800B386F60363F6F400B7070100B386F60011 -:101A680013DF0401B7090100330FDF009386F9FF84 -:101A7800B3F4D400B3F5D50093570401939404014B -:101A88003374D400B384B400B306870233099900D1 -:101A9800338EE702B30583023307F3023383C501AC -:101AA80093D50601B385650063F4C5013307370193 -:101AB80013D30501B7090100B302E3001387F9FF47 -:101AC800B3F5E500B3F6E600338383029395050189 -:101AD800B385D5003387770233848F02338EFF02B4 -:101AE8003304E40093570301338487006374E400EC -:101AF800330E3E01B70701009387F7FFB376F40072 -:101B08003373F30093960601B38E2E01B3866600F5 -:101B1800B3B49E00B386E601B3879600B38EBE00C9 -:101B2800B3B5BE0033835700B30FB300B3B6E601B5 -:101B3800B3B79700B3E7F6001354040133335300E7 -:101B4800B3B5BF00B3878700B365B300B387B700E9 -:101B5800B387C70113D77F0193979700B3E7E700CF -:101B680013979E00336717013337E00093DE7E0139 -:101B780093969F003367D7013367D7009396770012 -:101B880063DA0610935617001377170033E7E60059 -:101B98009396F7013367D70093D717009305F83F5B -:101BA800635EB00E93767700638006029376F70043 -:101BB80013054000638AA6009306470033B7E60082 -:101BC800B387E700138706009396770063DA060069 -:101BD800B70600FF9386F6FFB3F7D70093050840D2 -:101BE8009306E07F63CEB616935637001397D70156 -:101BF8003367D70093D73700B70610009386F6FFF0 -:101C0800B3F7D70093F6F57FB70510809385F5FFF6 -:101C180093964601B3F7B7008320C10203248102DB -:101C28001316F601B3E7D700B3E6C70083244102D1 -:101C3800032901028329C101032A8101832A410161 -:101C4800032B0101832BC1001305070093850600B0 -:101C5800130101036780000013860900930704003D -:101C68001387040093060B0093052000638AB60EC1 -:101C780093053000638CB60C93051000E390B6F220 -:101C880093070000130700006F00800813060A007E -:101C98006FF09FFD130805006FF05FF0130510004B -:101CA8003305B54093068003E3CCA6FC9306F00108 -:101CB80063C4A6061308E841B3960701B355A70005 -:101CC80033170701B3E6B6003337E00033E7E60021 -:101CD800B3D7A70093767700638006029376F70060 -:101CE80093054000638AB6009306470033B7E600C1 -:101CF800B387E700138706009396870063CA060632 -:101D08009396D7011357370033E7E60093D7370088 -:101D1800930500006FF05FEE930610FEB386B640A1 -:101D280093080002B3D6D700930500006306150197 -:101D38001308E843B395070133E7E5003337E000BC -:101D480033E7E600930700006FF0DFF8B7070800F5 -:101D5800130700009305F07F130600006FF0DFE91A -:101D680093070000130700009305F07F6FF0DFE88A -:101D78009307000013070000930510006FF0DFE7DA -:101D8800130101FE232A9100232631019354750182 -:101D9800B709800023282101232441019389F9FFF1 -:101DA800232E1100232C81002322510193F4F40FD8 -:101DB800138A0500B3F9A9001359F50163880408CB -:101DC8009307F00F6384F40A93993900B707000466 -:101DD800B3E9F900938414F8930A000013557A01C3 -:101DE800370480001304F4FF1375F50F33744401AE -:101DF800135AFA01630C05089307F00F6308F50AF4 -:101E080013143400B70700043364F400130515F8FD -:101E18009307000093962A00B3E6F6009386F6FF30 -:101E28001307E000334649013385A4406360D70AAD -:101E3800971500009385455193962600B386B60002 -:101E480003A706003307B70067000700638A090283 -:101E580013850900EF0010649307B5FF9304A0F8F9 -:101E6800B399F900B384A4406FF01FF79304F00FFF -:101E7800930A2000E38409F6930A30006FF01FF6F6 -:101E880093040000930A10006FF05FF5630A0402E0 -:101E980013050400EF0010609307B5FF3314F40036 -:101EA8009307A0F83385A7406FF09FF61305F00F4E -:101EB80093072000E30004F6930730006FF09FF5C6 -:101EC80013050000930710006FF0DFF41318540097 -:101ED80063F6890E1305F5FF9306000013540801F5 -:101EE80033D38902B70701009387F7FFB377F80068 -:101EF80093D6060133F7890293050300B388670276 -:101F08001317070133E7E600637E1701330707015C -:101F18009305F3FF63680701637617019305E3FFF1 -:101F28003307070133071741B3588702337787020E -:101F3800B3861703931707011387080063FED700BA -:101F4800B38707011387F8FF63E8070163F6D70033 -:101F58001387E8FFB387070113940501B387D740B8 -:101F68003364E400B337F0003364F4001307F50773 -:101F78006350E00A93777400638A07009377F4004C -:101F8800930640006384D700130444009317440069 -:101F980063DA0700B70700F89387F7FF3374F40094 -:101FA800130705089307E00F1354340063D2E70CB6 -:101FB800130400001307F00F6F00800B9396F901CC -:101FC80093D919006FF09FF11306090013840900D3 -:101FD80093870A0013072000E38CE7FC13073000FF -:101FE8006382E70813071000E392E7F81304000080 -:101FF800130700006F00C00713060A006FF09FFD6B -:102008003704400013060000930730006FF09FFC70 -:1020180093071000B387E7401307B001E348F7FCC4 -:102028001305E509B357F4003314A40033348000D2 -:1020380033E4870093777400638A07009377F4008A -:10204800130740006384E700130444009317540007 -:1020580013543400E3DE07F81304000013071000DC -:102068006F000001370440001307F00F130600004B -:10207800370580001305F5FF3374A4003705808009 -:102088001305F5FF1377F70F3374A40013177701BF -:102098003364E4001315F6013365A4008320C101FD -:1020A8000324810183244101032901018329C100FB -:1020B800032A8100832A410013010102678000007E -:1020C800130101FE232A910023282101B70480006F -:1020D8001359750123263101232251019384F4FFFA -:1020E800232E1100232C8100232441011379F90F99 -:1020F800938A0500B3F4A4009359F501630A09080B -:102108009307F00F6306F90A93943400B7070004A5 -:10211800B3E4F400130919F8130A000013D57A017F -:10212800370480001304F4FF1375F50F337454015A -:1021380093DAFA01630E05089307F00F630AF50AAC -:1021480013143400B70700043364F400130515F8BA -:102158009306000093172A00B3E7D7003305A900B8 -:102168009387F7FF1307E00033C6590113081500DA -:102178006360F70A171700001307C7209397270013 -:10218800B387E70083A70700B387E70067800700E6 -:10219800638A040213850400EF00D02F9307B5FF6C -:1021A8001309A0F8B394F4003309A9406FF0DFF6DF -:1021B8001309F00F130A2000E38204F6130A300013 -:1021C8006FF0DFF513090000130A10006FF01FF518 -:1021D800630A040213050400EF00D02B9307B5FF30 -:1021E8003314F4009307A0F83385A7406FF05FF627 -:1021F8001305F00F93062000E30E04F49306300055 -:102208006FF05FF513050000930610006FF09FF460 -:10221800B70701001383F7FF13D70401935604018E -:10222800B3F4640033746400B3888402B30587028E -:102238003304D702B386960293D40801B386B60056 -:10224800B384D40063F4B4003304F400B3F7640037 -:1022580093970701B3F86800B387170113976700CE -:1022680093D404013337E00093D7A7013384840063 -:10227800B367F700131464003364F4009317440041 -:1022880063DE070C935714001374140033E48700BB -:102298001307F8076358E00C93777400638A070004 -:1022A8009377F400930640006384D7001304440036 -:1022B8009317440063DA0700B70700F89387F7FF1E -:1022C8003374F400130708089307E00F63CCE70E94 -:1022D800935734006F000003138609001384040029 -:1022E80093060A0093072000638EF60C93073000CC -:1022F8006382F60C93051000930700001307000093 -:10230800E398B6F8370480001304F4FF370580809B -:10231800B3F787001305F5FF8320C101032481016A -:102328001377F70FB3F7A700131777011315F60103 -:10233800B3E7E70083244101032901018329C10090 -:10234800032A8100832A410033E5A7001301010213 -:102358006780000013860A006FF0DFF81308050095 -:102368006FF01FF393071000B387E7401307B0011E -:102378006340F7061308E809B357F400331404015F -:102388003334800033E4870093777400638A07004E -:102398009377F400130740006384E70013044400B4 -:1023A8009317540063CA07029357340013070000B9 -:1023B8006FF05FF5B70740001307F00F1306000032 -:1023C8006FF05FF4930700001307F00F6FF09FF3AF -:1023D800930700006FF09FFD93070000130710009C -:1023E8006FF05FF2B70780009387F7FF130101FFD3 -:1023F80033F7A7009356750113D67501B3F7B700E5 -:10240800232291002320210193F6F60F1318370099 -:102418001376F60F23261100232481001307F00FEB -:102428009354F501138906001305060093D5F501A9 -:10243800939737006314E6006394070093C515006B -:102448003387C640639A951A6356E00A63160606F0 -:10245800639C07009307F00F638CF604930708004A -:10246800138506006F00C0141307F7FF631E0702E9 -:10247800B38707011385060013975700635A07129D -:10248800130515001307F00F630EE5323707007EBA -:1024980093F617001307F7FF93D71700B3F7E70072 -:1024A800B3E7D7006F00C0101306F00F639EC60095 -:1024B800930708006F0040071306F00FE38AC6FE73 -:1024C80037060004B3E7C7001306B0016356E600F9 -:1024D800930710006FF0DFF9130600023306E64099 -:1024E800B3D5E700B397C700B337F000B3E7F500FB -:1024F8006FF01FF863000708639C06026318080062 -:102508001307F00F6316E60A6F0000029306F0FF48 -:102518006316D700B38707016FF01FF69306F00F15 -:102528001347F7FF6310D6021305F00F6F0040083A -:102538009306F00FE30AD6FEB70600043307E0401F -:102548003368D8009306B00163D6E600130710007D -:102558006F00C001930600023356E8003387E64057 -:102568003317E8003337E0003367E600B387E70046 -:102578006FF09FF0138516001376F50F1307100000 -:102588006342C70663940604130500006302080249 -:1025980063860722B387070113975700635A07001A -:1025A800370700FC1307F7FFB3F7E7001305100020 -:1025B80013F77700630A072013F7F7009306400024 -:1025C8006304D720938747006F000020E30E08F4C8 -:1025D800E38007EEB70700021305F00F930400002D -:1025E8006F00801E1307F00F630EE51C3307F80019 -:1025F800935717006FF0DFFB6350E008631606047B -:10260800E38A07E41307F7FF63140702B307F840E8 -:102618001385060013975700E35C07F83704000496 -:102628001304F4FF33F48700130905006F008013C7 -:102638001306F00FE38EC6E61306B0016350E602F8 -:10264800930710006FF09FFC1306F00FE382C6E6B5 -:1026580037060004B3E7C7006FF01FFE1306000239 -:10266800B3D5E7003307E640B397E700B337F00088 -:10267800B3E7F5006FF09FF963020708639E06024F -:10268800631808001307F00F938405006FF09FE7A5 -:102698009306F0FF6318D700B387074193840500BA -:1026A8006FF05FF79306F00F1347F7FF6310D6023A -:1026B800938405006FF05FE79306F00FE30AD6FEF8 -:1026C800B70600043307E0403368D8009306B0012A -:1026D80063D6E600130710006F00C00193060002DE -:1026E8003356E8003387E6403317E8003337E00015 -:1026F8003367E600B387E7406FF05FFA1387160089 -:102708001377F70F130610006344E604639C060270 -:102718006318080063980712130500006FF01FEC98 -:10272800638607123307F84093165700B3870741AB -:1027380063CA061093070700631007069307000093 -:102748006FF09FFDE31608E8E39407F66FF09FE843 -:102758003304F840131754006354070433840741C3 -:102768009384050013050400EF00C0521305B5FF5C -:102778003314A400634A25033305254113051500C6 -:1027880013070002B357A4003305A7403314A4006D -:1027980033348000B3E78700130500006FF05FE172 -:1027A800E30E04F86FF01FFCB70700FC9387F7FFF0 -:1027B8003305A940B377F4006FF09FDF9307080053 -:1027C8006FF01FDF9307000013975700635E070041 -:1027D800130515001307F00F630EE506370700FC15 -:1027E8001307F7FFB3F7E7001307F00F93D7370086 -:1027F8006318E50063860700B707400093040000EC -:10280800370780001307F7FF1375F50FB3F7E700D5 -:1028180013177501370580808320C10003248100C8 -:102828001305F5FF33F5A7009394F4013365E5002C -:102838003365950003290100832441001301010138 -:1028480067800000938405006FF01FF59307080068 -:102858006FF09FF4930700006FF01FF937068000B0 -:10286800135775019307F6FF1377F70F9305E007E2 -:10287800B3F7A7009356F50163F6E5049305D0096D -:1028880063FAE500370500801345F5FF3385A60098 -:102898006780000033E5C7009307500963DCE70051 -:1028A8001307A7F63315E500638006023305A04039 -:1028B80067800000930760093387E7403355E500D8 -:1028C8006FF09FFE1305000067800000130101FFF1 -:1028D800232611002324810023229100630205107E -:1028E800130405009354F501635405003304A04014 -:1028F80013050400EF00003A9307E009B387A740E7 -:10290800130760096340F706130780006356A700A2 -:10291800130585FF3314A400370580001305F5FF60 -:1029280093F7F70F3374A40013957701B7078080E6 -:102938009387F7FF3374F400B70700803364A4006B -:1029480093C7F7FF1395F4013374F4003365A400BB -:102958008320C10003248100832441001301010165 -:1029680067800000130790096350F70213075000AF -:102978003307A7409306B5013357E4003314D40056 -:102988003334800033648700130750006356A70070 -:102998001307B5FF3314E400370700FC1307F7FFEC -:1029A800937674003377E400638A06001374F400A6 -:1029B800930640006304D40013074700931657009A -:1029C80063DC0600B70700FC9387F7FF3377F7004F -:1029D8009307F009B387A740135437006FF0DFF36C -:1029E8001304000093070000930400006FF0DFF267 -:1029F80093577501130101FF93F7F70F2324810003 -:102A08001387170037048000232291001304F4FF72 -:102A1800232611001377F70F930610003374A400D0 -:102A28009354F50163D2E6061385073893573400AB -:102A38001314D401370710001307F7FFB3F7E700A3 -:102A4800370710801307F7FF1375F57F1315450136 -:102A5800B3F7E70037070080B3E7A7001347F7FF8E -:102A68001395F401B3F7E70033E7A7008320C1000B -:102A78001305040003248100832441009305070003 -:102A880013010101678000006394070463020406D0 -:102A980013050400EF0000209307A00063C2A702FB -:102AA8009307B000B387A74013075501B357F40045 -:102AB8003314E400130790383305A7406FF09FF7ED -:102AC800930755FFB317F400130400006FF09FFE3F -:102AD80093070000630A040093573400370708007F -:102AE8001314D401B3E7E7001305F07F6FF09FF4E8 -:102AF80093070000130500006FF0DFF3370610009E -:102B08001306F6FF3376B60013D845019357D5015F -:102B18001378F87F1316360033E6C70093071800BA -:102B280093F7F77F9306100093D5F5011317350037 -:102B380063D6F60A930608C89307E00F63C2D70C5A -:102B48006340D008930790FE63C4F612B70780006D -:102B58001305E0013366F6003305D5409307F0010D -:102B680063C8A702130828C8B3170701B337F000D2 -:102B7800331606013355A700B3E7C700B367F5005E -:102B88009306000013F77700630007086F00C00E74 -:102B98009307E0FFB386D74093070002B356D600E9 -:102BA800930800006306F500130828CAB318060145 -:102BB800B3E7E800B337F000B3E7F6006FF05FFC67 -:102BC800131565003335A000131636009357D70147 -:102BD8003366C500B367F6006FF0DFFAB367E60047 -:102BE80063160800B337F0006FF09FF99306F00FF3 -:102BF800638C070013163600B70700026FF09FFDBD -:102C0800930700009306F00F13975700635E0700C1 -:102C1800938616001307F00F638AE606370700FC51 -:102C28001307F7FFB3F7E7001307F00F93D7370041 -:102C38006398E60063860700B70740009305000025 -:102C4800370580001305F5FFB3F7A7003705808027 -:102C58001305F5FF93F6F60F93967601B3F7A700E1 -:102C68009395F501B3E7D70033E5B7006780000017 -:102C7800930710009306000013F7F70013064000AF -:102C8800E304C7F8938747006FF01FF89307000025 -:102C98006FF09FF9B7070100637AF5029307F00F09 -:102CA800B3B7A70093973700130700023307F7401D -:102CB800B357F5001705000013058570B307F50035 -:102CC80003C507003305A7406780000037070001E8 -:102CD80093070001E36AE5FC930780016FF0DFFCCE -:102CE800130101FF23261100EFD08FE08320C100DC -:102CF800B70710F023A007F2130500001301010124 -:042D080067800000E0 -:102D0C004448525953544F4E452050524F4752410C -:102D1C004D2C20534F4D4520535452494E470000E3 -:102D2C004468727973746F6E652042656E63686D6A -:102D3C0061726B2C2056657273696F6E20322E3166 -:102D4C0020284C616E67756167653A204329000045 -:102D5C0050726F6772616D20636F6D70696C656422 -:102D6C0020776974682027726567697374657227A8 -:102D7C0020617474726962757465000050726F67BB -:102D8C0072616D20636F6D70696C65642077697416 -:102D9C00686F757420277265676973746572272074 -:102DAC00617474726962757465000000506C6561C1 -:102DBC007365206769766520746865206E756D6231 -:102DCC006572206F662072756E73207468726F75F1 -:102DDC006768207468652062656E63686D61726BEC -:102DEC003A200000457865637574696F6E207374C2 -:102DFC00617274732C2025642072756E7320746854 -:102E0C00726F756768204468727973746F6E650AA7 -:102E1C0000000000457865637574696F6E20656EFF -:102E2C006473000046696E616C2076616C75657325 -:102E3C00206F6620746865207661726961626C65CA -:102E4C0073207573656420696E20746865206265F3 -:102E5C006E63686D61726B3A00000000496E745FBE -:102E6C00476C6F623A202020202020202020202038 -:102E7C002025640A00000000202020202020202093 -:102E8C0073686F756C642062653A20202025640A93 -:102E9C0000000000426F6F6C5F476C6F623A20203D -:102EAC0020202020202020202025640A0000000063 -:102EBC0043685F315F476C6F623A202020202020EE -:102ECC00202020202025630A000000002020202044 -:102EDC002020202073686F756C642062653A202076 -:102EEC002025630A0000000043685F325F476C6F67 -:102EFC00623A202020202020202020202025630A38 -:102F0C00000000004172725F315F476C6F625B388A -:102F1C005D3A2020202020202025640A000000009B -:102F2C004172725F325F476C6F625B385D5B375D1D -:102F3C003A2020202025640A0000000020202020B8 -:102F4C002020202073686F756C642062653A202005 -:102F5C00204E756D6265725F4F665F52756E7320A1 -:102F6C002B203130000000005074725F476C6F6290 -:102F7C002D3E000020205074725F436F6D703A201C -:102F8C0020202020202020202025640A0000000082 -:102F9C00202020202020202073686F756C64206214 -:102FAC00653A20202028696D706C656D656E7461C2 -:102FBC0074696F6E2D646570656E64656E7429003E -:102FCC00202044697363723A202020202020202086 -:102FDC00202020202025640A000000002020456EBF -:102FEC00756D5F436F6D703A2020202020202020CB -:102FFC002025640A000000002020496E745F436F96 -:10300C006D703A2020202020202020202025640ACA -:10301C000000000020205374725F436F6D703A20E3 -:10302C0020202020202020202025730A00000000D2 -:10303C00202020202020202073686F756C64206273 -:10304C00653A2020204448525953544F4E45205045 -:10305C00524F4752414D2C20534F4D452053545203 -:10306C00494E47004E6578745F5074725F476C6FC1 -:10307C00622D3E00202020202020202073686F75B8 -:10308C006C642062653A20202028696D706C656D37 -:10309C00656E746174696F6E2D646570656E6465C0 -:1030AC006E74292C2073616D652061732061626FD1 -:1030BC0076650000496E745F315F4C6F633A202077 -:1030CC0020202020202020202025640A0000000041 -:1030DC00496E745F325F4C6F633A202020202020B1 -:1030EC00202020202025640A00000000496E745F17 -:1030FC00335F4C6F633A202020202020202020209A -:10310C002025640A00000000456E756D5F4C6F63EE -:10311C003A20202020202020202020202025640A56 -:10312C00000000005374725F315F4C6F633A2020D3 -:10313C0020202020202020202025730A00000000C1 -:10314C00202020202020202073686F756C64206262 -:10315C00653A2020204448525953544F4E45205034 -:10316C00524F4752414D2C20312753542053545227 -:10317C00494E47005374725F325F4C6F633A2020A4 -:10318C0020202020202020202025730A0000000071 -:10319C00202020202020202073686F756C64206212 -:1031AC00653A2020204448525953544F4E452050E4 -:1031BC00524F4752414D2C2032274E4420535452EB -:1031CC00494E47004D656173757265642074696D75 -:1031DC006520746F6F20736D616C6C20746F206F41 -:1031EC00627461696E206D65616E696E6766756C7F -:1031FC0020726573756C747300000000506C65610F -:10320C00736520696E637265617365206E756D629E -:10321C006572206F662072756E730000436C6F636D -:10322C006B206379636C65733D2564200A00000094 -:10323C00444D49505320706572204D687A3A2020D5 -:10324C002020202020202020202020202020202072 -:10325C0020202020202020202020202000000000E2 -:10326C0025642E00256400004448525953544F4E97 -:10327C00452050524F4752414D2C2031275354205A -:10328C00535452494E4700004448525953544F4EE0 -:10329C00452050524F4752414D2C2032274E44204E -:1032AC00535452494E4700004448525953544F4EC0 -:1032BC00452050524F4752414D2C20332752442029 -:1032CC00535452494E470000B8E4FFFFCCE3FFFFD4 -:1032DC00D8E3FFFFCCE3FFFFA4E4FFFFCCE3FFFF49 -:1032EC00D8E3FFFFB8E4FFFFB8E4FFFFA4E4FFFF5F -:1032FC00D8E3FFFFA4E3FFFFA4E3FFFFA4E3FFFF7A -:10330C00E0E3FFFF60E9FFFF60E9FFFF84E9FFFFF7 -:10331C0054E9FFFF54E9FFFF44EAFFFF84E9FFFF94 -:10332C0054E9FFFF44EAFFFF54E9FFFF84E9FFFF84 -:10333C0050E9FFFF50E9FFFF50E9FFFF44EAFFFFB0 -:10334C006CECFFFFA8ECFFFFB4ECFFFFA8ECFFFF59 -:10335C0020EDFFFFA8ECFFFFB4ECFFFF6CECFFFFD0 -:10336C006CECFFFF20EDFFFFB4ECFFFF84ECFFFFE4 -:10337C0084ECFFFF84ECFFFFBCECFFFF64EFFFFF6E -:10338C0064EFFFFFD4EFFFFF5CEFFFFF5CEFFFFF8D -:10339C0034F0FFFFD4EFFFFF5CEFFFFF34F0FFFFD3 -:1033AC005CEFFFFFD4EFFFFF58EFFFFF58EFFFFF7D -:1033BC0058EFFFFF34F0FFFF000102020303030389 -:1033CC0004040404040404040505050505050505A9 -:1033DC000505050505050505060606060606060689 -:1033EC000606060606060606060606060606060671 -:1033FC000606060606060606070707070707070759 -:10340C000707070707070707070707070707070740 -:10341C000707070707070707070707070707070730 -:10342C000707070707070707070707070707070720 -:10343C000707070707070707080808080808080808 -:10344C0008080808080808080808080808080808F0 -:10345C0008080808080808080808080808080808E0 -:10346C0008080808080808080808080808080808D0 -:10347C0008080808080808080808080808080808C0 -:10348C0008080808080808080808080808080808B0 -:10349C0008080808080808080808080808080808A0 -:1034AC000808080808080808080808080808080890 -:0834BC000808080808080808C8 -:1034C8000000000080842E41000000205FA012420E -:0C34D800F90295503353DE470000C84253 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/dhrystoneO3MC.hex b/benchmarks/riscv_tests/dhrystoneO3MC.hex deleted file mode 100644 index 813fe406..00000000 --- a/benchmarks/riscv_tests/dhrystoneO3MC.hex +++ /dev/null @@ -1,785 +0,0 @@ -:0200000480007A -:10000000ADA8010001000100010001000100010094 -:10001000232E11FE232C51FE232A61FE232871FE7C -:100020002326A1FE2324B1FE2322C1FE2320D1FEDC -:10003000232EE1FC232CF1FC232A01FD232811FDB2 -:100040002326C1FD2324D1FD2322E1FD2320F1FD40 -:100050003971AD28F250E2525253C2533255A25573 -:10006000125682567247E2475248C248324EA24E5A -:10007000124F824F2161730020309741000093811D -:10008000E182176100001301E1041385C1819765C6 -:1000900000009385E5C36306B50023200500110524 -:1000A000DDBF1735000013052500711197350000DD -:1000B000938585FF6308B500144111052AC0829617 -:0C00C0000245EDB71101EF20F00001A097 -:1000CC00828003C75183930710046303F700828077 -:1000DC001C4103A7C183A507998F1CC1828003A66D -:1000EC00418409C6184218C103A6418483A5C18363 -:1000FC00310629456F00806C41114AC083A74184A9 -:10010C0022C40041984326C283AE470003AE870049 -:10011C0003A3070183A8470103A887018C53D0537D -:10012C00945706C6AA84C84FDC5718C0984048CCD0 -:10013C005CD42322D40195472324C40123286400D2 -:10014C00232A1401232C04010CD050D014D4DCC469 -:10015C005CC418C0228561375C40B1CF9C40B24072 -:10016C00224483AF070003AF470083AE870003AE82 -:10017C00C70003A3070183A8470103A88701CC4F3D -:10018C009053D4539857DC5723A0F40123A2E401D5 -:10019C0023A4D40123A6C40123A8640023AA140118 -:1001AC0023AC0401CCCC90D0D4D098D4DCD402496C -:1001BC0092444101828088449947930584005CC431 -:1001CC00EF00E06983A7418448441306C4009C43B4 -:1001DC00B24092441CC022440249A94541016F001F -:1001EC00E05D83C7518383A681839387F7FB93B725 -:1001FC001700D58F23ACF18213072004238AE182E8 -:10020C00828013071004A38AE18223AC01828280CE -:10021C0035711305000306CF22CDE6DAEED626CBD8 -:10022C004AC94EC752C556C35AC1DEDEE2DCEAD813 -:10023C00EF00407123A0A18413050003EF00807030 -:10024C0083A7018423A2A1841CC189471CC5B7358F -:10025C000080930780025CC57D469385C58E232262 -:10026C0005004105EF00407E37370080930747E5D6 -:10027C00032E47E503A3470083A8870003A8C70004 -:10028C008C4BD04B944F03D7C70183C7E701B73DC5 -:10029C000080231EE102230FF1021387CD1BA94717 -:1002AC002945232EF76472D01AD246D442D62ED8C2 -:1002BC0032DA36DCEF00E077373500801305C59075 -:1002CC00EF00C0742945EF00C07683A70183638ECD -:1002DC00074A373500801305C593EF002073294575 -:1002EC00EF0020753735008013058599EF00A06766 -:1002FC002945EF000074373500809305800C1305F9 -:10030C00059DEF004066EF00607337340080832753 -:10031C0044E7373D0080032C4DE93EC623A6A1825D -:10032C008549130444E78944E93D653D8347E4016D -:10033C005048032E4400032384008328C400032860 -:10034C000401144C0357C401B24E230FF1048C006A -:10035C0085470810B2CA3ECE26CAF6C0F2C29AC46D -:10036C00C6C6C2C8B6CC231EE10455295246133565 -:10037C00150023ACA18263C0C40293172600B29768 -:10038C00F51732858D4530083ECC0D2952460506B1 -:10039C0032CAE3D4C4FEE2461385C1849385CD1BD7 -:1003AC00152103A54184930A10040D4AB13303C7E8 -:1003BC00418393070004130B4DE963F1E702568563 -:1003CC00930530048921F24713871A006306F5362A -:1003DC0083C74183937AF70FE3F357FFD247624BFE -:1003EC004808330AFA028509B34A6A0356CAD13956 -:1003FC009307900CE39AF9F2EF00406423A4A182D6 -:10040C0037350080130505A0EF0040602945EF004B -:10041C00406237350080130505A1EF00205F2945A8 -:10042C00EF00206183A5C18337350080130585A4B7 -:10043C00373400800D2B9545130544A62D2383A539 -:10044C00818337350080130505A8312B85451305AD -:10045C0044A6112B83C55183373500801305C5A9DC -:10046C001923B734008093051004138584ABE52958 -:10047C0083C5418337350080130545ADED219305C8 -:10048C002004138584ABC5219387C1848C533735E5 -:10049C000080130505AFC1299D45130544A6E12134 -:1004AC00B73700809387C71B83A5C7653735008096 -:1004BC001305C5B04D2937350080130585B2EF0003 -:1004CC00E05437350080130545B5EF00205403A7E1 -:1004DC004184B7370080138507B60C433EC6373DC1 -:1004EC0000805121373500801305C5B7052303A7BC -:1004FC0041841305CDBA373C00804C43B73B008098 -:10050C00B73900808D218145130544A6A92903A77D -:10051C00418413058CBC373900800C47330A6A417F -:10052C0099218945130544A63D2903A741841385C8 -:10053C004BBE4C470D29C545130544A62D2183A55B -:10054C004184138509C0C10539291305C9C17D2909 -:10055C0037350080130505C5552903A70184B2471B -:10056C000C43138507B6012137350080130505C6EA -:10057C00712983A701841305CDBACC43ED2681459F -:10058C00130544A6CD2683A7018413058CBC8C4788 -:10059C00D92E8545130544A6F92683A70184138516 -:1005AC004BBECC47C926C945130544A66D2E83A561 -:1005BC000184138509C0C1057D261305C9C1B92164 -:1005CC00D24537350080130505CA712E95451305A4 -:1005DC0044A6512E93173A00338A47413735008091 -:1005EC00B3055A411305C5CBBD2EB545130544A61D -:1005FC009D2EE24537350080130585CDAD269D45F2 -:10060C00130544A68D26F24537350080130545CFDA -:10061C00992E8545130544A6B926373500800C1054 -:10062C00130505D18926373500801305C5D2F92E5F -:10063C00373500808C00130505D6352637350080FC -:10064C001305C5D7E1262945ED2603A7C18283A54D -:10065C0081829307301F998D23A2B18263DFB71279 -:10066C0037350080130585E0FD2C03A54182EF1082 -:10067C0070642A84EF105076B737008003A6870A7F -:10068C0083A6C70AEF009050B737008003A6070B6C -:10069C0083A6470BEF008061EF20C00423A0A1824A -:1006AC00B737008003A5870BA285EF10E02B23AE94 -:1006BC00A180373500801305C5E1752403A541825F -:1006CC00EF10505FB7370080AA8503A5C70BEF105A -:1006DC00A0292A84EF101057AA84EF10B05DAA85C8 -:1006EC002285EF10B00EB737008083A5070CEF10F2 -:1006FC00A05BEF1030552A8437350080A685130592 -:10070C00C5E49524A54763D7870A37350080A285B1 -:10071C00130505E5892C2945292EFA406A44DA444B -:10072C004A49BA492A4A9A4A0A4BF65B665CD65C35 -:10073C00465DB65D0D6182806C0801450D22032378 -:10074C004B0083288B000328CB0003250B0183254A -:10075C004B0103268B018356CB010347EB0183C767 -:10076C004183850AE2C09AC2C6C4C2C6AAC8AECA30 -:10077C00B2CC231ED104230FE10423AE318393FAB0 -:10078C00FA0F4E8AE3FD57C391B937350080130534 -:10079C008596AD2C2945712CB1B6373500801305E3 -:1007AC0005DBAD2437350080130585DE852429450E -:1007BC004924A5B713050003AD2C81BF0905AA95E3 -:1007CC000CC28280130756001308800C33080703F1 -:1007DC000A06931727003E9514C138DD54C1B307A0 -:1007EC00C800AE97944BD8CB98CF1387160098CBF4 -:1007FC001C41C295B2950566B29523AAF5FA154728 -:10080C0023AEE18282801375F50F93F5F50F630427 -:10081C00B50001458280A38AA182054582804111E1 -:10082C0022C426C206C62A84AE8483C5340003457E -:10083C002400D13F7DF9A6852285DD2C81476356A6 -:10084C00A000294723AEE1828547B240224492445E -:10085C003E85410182807915133515008280411146 -:10086C0022C426C206C62A84AE84F53715C180C0C0 -:10087C0085476304F40205C80947630DE4029147F8 -:10088C006313F40098C0B240224492444101828028 -:10089C008D479CC08547E310F4FE03A7C1839307E3 -:1008AC00400663DFE700B240224423A004009244D8 -:1008BC0041018280B24022449CC09244410182801A -:1008CC00B24022448D479CC0924441018280411128 -:1008DC0022C406C62A840345050011C50504912AC5 -:1008EC000345040065FDB24022444101828091A27F -:1008FC00797126D206D622D44AD0AA84634E050238 -:10090C000A894A84294799E0631C2401B3E7E4026D -:10091C00050493870703B3C4E402A30FF4FEE5B701 -:10092C007D1403450400E137E31C24FFB25022542C -:10093C0092540259456182801305D0024D3FB30495 -:10094C0090407DBF03A78184B307A7003765008063 -:10095C0023A4F1841305C58C930600403A9563D308 -:10096C00F600029082805D7152CC06D622D426D23B -:10097C004AD04ECE56CA2A8A03450500BEC25C1820 -:10098C002EDA32DC36DEBAC0C2C4C6C63EC61DC1C3 -:10099C000144930A5002930430061309300793095B -:1009AC00400663025503A1370504B3078A0003C54B -:1009BC00070065F9B250225492540259F249624A26 -:1009CC00D24A61618280930614003307DA0031A0A9 -:1009DC0063822703638637038506834707003684C3 -:1009EC000507F9D3E39697FEB247884391073EC6B5 -:1009FC00FD3D5DBFB247884391073EC6C93D6DB70B -:100A0C00B247884391073EC6E53579BF411122C4F0 -:100A1C0006C62A840345050011C50504192803459B -:100A2C00040065FD29453120B240224401454101B5 -:100A3C008280B70710F023A0A7F08280B70710F0D0 -:100A4C0003A507F182800000B3C7A50093F7370018 -:100A5C003307C500639607009307300063E4C702B1 -:100A6C0093070500636CE5006780000083C60500F2 -:100A7C009387170093851500A38FD7FEE3E8E7FE55 -:100A8C006780000093773500639207089307050091 -:100A9C009376C7FF138606FE63F6C70883A305008B -:100AAC0083A2450083AF850003AFC50083AE05016B -:100ABC0003AE450103A3850183A8C50193854502B7 -:100ACC009387470203A8C5FF23AE77FC23A057FEEC -:100ADC0023A2F7FF23A4E7FF23A6D7FF23A8C7FF72 -:100AEC0023AA67FE23AC17FF23AE07FF6FF0DFFAD4 -:100AFC0083C605009387170093851500A38FD7FE37 -:100B0C0093F63700E39606FE6FF09FF89307050007 -:100B1C006FF01FFF03A605009387470093854500E0 -:100B2C0023AEC7FEE3E8D7FEE3EAE7F467800000F4 -:100B3C003367B5009303F0FF13773700631007108A -:100B4C00B7877F7F9387F7F70326050083A60500F9 -:100B5C00B372F6003363F600B382F200B3E26200C4 -:100B6C00639272106316D6080326450083A64500CF -:100B7C00B372F6003363F600B382F200B3E26200A4 -:100B8C00639E720C6316D6060326850083A6850029 -:100B9C00B372F6003363F600B382F200B3E2620084 -:100BAC006398720C6316D6040326C50083A6C50091 -:100BBC00B372F6003363F600B382F200B3E2620064 -:100BCC006392720C6316D6020326050183A60501F7 -:100BDC00B372F6003363F600B382F200B3E2620044 -:100BEC00639C720A1305450193854501E30ED6F407 -:100BFC001317060193970601631EF700135706019E -:100C0C0093D706013305F7409375F50F63900502F2 -:100C1C00678000001357070193D707013305F7408E -:100C2C009375F50F63940500678000001377F70F39 -:100C3C0093F7F70F3305F740678000000346050074 -:100C4C0083C6050013051500938515006314D600A3 -:100C5C00E31606FE3305D6406780000013054500F9 -:100C6C0093854500E31CD6FC13050000678000004B -:100C7C001305850093858500E312D6FC130500004F -:100C8C00678000001305C5009385C500E318D6FAEC -:100C9C00130500006780000013050501938505010D -:100CAC00E31ED6F81305000067800000130101FD58 -:100CBC0023248102232291022328610113040500BD -:100CCC00130B0500B704100013D545012320210395 -:100CDC00232E3101232671019384F4FF2326110264 -:100CEC00232C4101232A51011375F57F930B060028 -:100CFC0093890600B3F4B40013D9F5016306050A11 -:100D0C009307F07F6306F51093943400B7068000C8 -:100D1C00B3E4D400935ADB01B3EA9A0013143B00FA -:100D2C00130A15C0130B000013D54901B7041000AA -:100D3C009384F4FF1375F57FB3F43401938F0B0098 -:100D4C0093D9F901630205109307F07F6302F5163E -:100D5C00B707800093943400B3E4F40093D7DB011D -:100D6C00B3E79700939F3B00130515C013070000D2 -:100D7C0093162B00B3E6E6009386F6FF9305E0008E -:100D8C00334639013305AA4063E0D5169725000098 -:100D9C009385C51193962600B386B60083A60600EC -:100DAC00B386B60067800600B3EA6401638E0A0658 -:100DBC006380040413850400EF10502C930755FF37 -:100DCC001307C001634EF702930AD001130485FF89 -:100DDC00B38AFA40B3948400B35A5B01B3EA9A0025 -:100DEC0033148B00130AD0C0330AAA406FF09FF360 -:100DFC0013050B00EF109028130505026FF01FFC74 -:100E0C00930485FDB31A9B00130400006FF09FFD43 -:100E1C00B3EA640163820A02938A0400130AF07F26 -:100E2C00130B30006FF05FF013040000130A000086 -:100E3C00130B10006FF05FEF13040000130AF07F28 -:100E4C00130B20006FF05FEEB3E77401638E07069F -:100E5C006380040413850400EF105022130755FF20 -:100E6C009307C00163CEE7029307D001930F85FF70 -:100E7C00B387E740B394F401B3D7FB00B3E7970013 -:100E8C00B39FFB011306D0C03305A6406FF01FEED5 -:100E9C0013850B00EF10901E130505026FF01FFC5D -:100EAC00930785FDB397FB00930F00006FF09FFD38 -:100EBC00B3E7740163820702938704001305F07F84 -:100ECC00130730006FF0DFEA930F000013050000EA -:100EDC00130710006FF0DFE9930F00001305F07F8C -:100EEC00130720006FF0DFE863E657016390FA36D2 -:100EFC00636EF4359395FA01935614001317F401AD -:100F0C0093DA1A0033E4D5009397870013D88F0136 -:100F1C003368F800935E0801B3D5DA03131E080199 -:100F2C00135E0E019356040193988F00B3F4DA0309 -:100F3C00938F0500B307BE0293940401B3E69600A9 -:100F4C0063FEF600B3860601938FF5FF63E8060196 -:100F5C0063F6F600938FE5FFB3860601B386F64081 -:100F6C0033D3D6031314040113540401B3F6D6037C -:100F7C0093070300B3056E0293960601B366D40083 -:100F8C0063FEB600B38606019307F3FF63E8060120 -:100F9C0063F6B6009307E3FFB38606013384B640CD -:100FAC00939F0F01B7050100B3EFFF001383F5FF0B -:100FBC0093D60F01B3F76F0013DF080133F368000A -:100FCC00B3836702B3846602B307FF02B382E603FE -:100FDC00B386970093D70301B387D70063F49700C8 -:100FEC00B382B20093D60701B3865600B702010054 -:100FFC009382F2FFB3F5570093950501B3F35300B9 -:10100C00B38575006368D40093870F006314D40410 -:10101C006372B70433071701B3321701B3820201AD -:10102C00330454009387FFFF6366880063148802BF -:10103C00636217036366D400639E8600637CB7000B -:10104C00330717019387EFFFB33F1701B38F0F01DE -:10105C003304F401B305B7403304D4403337B7003D -:10106C003304E440930FF0FF63048812B352D403AB -:10107C0093D605013374D40313870200B30F5E02B9 -:10108C001314040133E48600637EF4013304040179 -:10109C001387F2FF636804016376F4011387E2FFA0 -:1010AC00330404013304F441B356D403939505017E -:1010BC0093D505013374D403330EDE0213140401EB -:1010CC0033E4850093850600637EC4013304040178 -:1010DC009385F6FF636804016376C4019385E6FF8C -:1010EC003304040113170701B365B7001397050107 -:1010FC00135707013304C44113DE0501B30E670215 -:10110C0033036E02330ECF03330FEF0213D70E01EE -:10111C00330F6F003307E70163766700B7060100F2 -:10112C00330EDE00135307013303C301370E0100E6 -:10113C00130EFEFFB376C70193960601B3FECE01E4 -:10114C00B386D60163686400938F05006310640452 -:10115C006380060433048800938FF5FF63640403F3 -:10116C00636664006314640263F0D802139718007A -:10117C00B338170133880801938FE5FF330404015A -:10118C0093080700631464006384160193EF1F0037 -:10119C009306F53F635AD01013F77F0063000702E4 -:1011AC0013F7FF0093054000630AB70093854F00C7 -:1011BC00B3BFF501B387F701938F05001397770041 -:1011CC00635A0700370700FF1307F7FFB3F7E70071 -:1011DC00930605401307E07F634AD7181397D7018E -:1011EC0093DF3F003367F70193D73700B705100043 -:1011FC009385F5FFB3F7B700B70510809385F5FF1E -:10120C0093F6F67F93964601B3F7B7008320C1029D -:10121C00032481021316F601B3E7D700B3E6C70027 -:10122C0083244102032901028329C101032A81017C -:10123C00832A4101032B0101832BC10013050700F5 -:10124C009385060013010103678000001305F5FF69 -:10125C00130700006FF05FCB1306090093870A0099 -:10126C00930F040013070B00930620006300D710A4 -:10127C00930630006302D70E93061000E31AD7F0E2 -:10128C0093070000130700006F0040091386090044 -:10129C006FF09FFDB7070800930F000013060000C6 -:1012AC00130730006FF05FFC93051000B385D54039 -:1012BC0013078003E346B7FC1307F0016344B7063A -:1012CC001305E5413397A700B3D6BF003395AF00A4 -:1012DC003367D7003335A0003367A700B3D7B70007 -:1012EC0093767700638006029376F70093054000AF -:1012FC00638AB6009306470033B7E600B387E7006E -:10130C00138706009396870063CA06069396D70147 -:10131C001357370033E7E60093D7370093060000E6 -:10132C006FF0DFEC130710FE3307D74013080002F1 -:10133C0033D7E70093060000638605011305E543E8 -:10134C00B396A70033E5F6013335A0003367A70049 -:10135C00930700006FF0DFF8B707080013070000D1 -:10136C009306F07F130600006FF05FE89307000010 -:10137C00130700009306F07F6FF05FE79307000000 -:10138C0013070000930610006FF05FE6130101FDD8 -:10139C0023202103232A51013709100093DA450138 -:1013AC00232E3101232C41012328610123267101B5 -:1013BC001309F9FF2326110223248102232291020F -:1013CC0093FAFA7F130B0500930B0600138A0600A1 -:1013DC003379B90093D9F50163880A0A9307F07F32 -:1013EC006386FA10370480001319390033698900B9 -:1013FC001354D5013364240193143500938A1AC015 -:10140C00130B000013554A01370910001309F9FF9B -:10141C001375F57F3379490113870B00135AFA01C1 -:10142C00630405109307F07F6304F516B70780007B -:10143C00131939003369F90093D7DB01B3E727019E -:10144C0013973B00130515C09306000093152B0052 -:10145C00B3E5D5003385AA009385F5FF9308E0002A -:10146C0033C649011308150063E0B81617250000B0 -:10147C00130585A793952500B385A50083A50500C5 -:10148C00B385A500678005003364A900630E0406CC -:10149C006300090413050900EF10403E930755FF44 -:1014AC001307C001634CF7021304D001930485FFAA -:1014BC003304F4403319990033548B003364240102 -:1014CC00B3149B00930AD0C0B38AAA406FF05FF3A9 -:1014DC00EF10C03A130505026FF05FFC130485FD95 -:1014EC0033148B00930400006FF0DFFD3364A9000C -:1014FC00630404029304050013040900930AF07FAB -:10150C00130B30006FF01FF093040000930A0000DF -:10151C00130B10006FF01FEF93040000930AF07F81 -:10152C00130B20006FF01FEEB3677901638E070673 -:10153C006300090413050900EF104034930655FFAE -:10154C009307C00163CED7029307D001130785FF21 -:10155C00B387D7403319E900B3D7FB00B3E72701B2 -:10156C003397EB009306D0C03385A6406FF0DFEDC8 -:10157C0013850B00EF108030130505026FF01FFC74 -:10158C00930785FDB397FB00130700006FF09FFDD9 -:10159C00B367790163820702930709001305F07F93 -:1015AC00930630006FF09FEA13070000130500004C -:1015BC00930610006FF09FE9130700001305F07FEE -:1015CC00930620006FF09FE8B70F0100138FFFFF09 -:1015DC0093D6040113530701B3F4E4013377E70105 -:1015EC00B3089302B3059702B382E602338E580018 -:1015FC0093D80501B388C801B38E660263F4580012 -:10160C00B38EFE0113D90801B3F8E80193DF07018B -:10161C00B3F5E501B3F3E70193980801B388B8007B -:10162C00B3877602B3859302B3849F02338EF400A2 -:10163C0093D40501B384C401B386F60363F6F400B6 -:10164C00B7070100B386F60013DF0401B7090100E8 -:10165C00330FDF009386F9FFB3F4D400B3F5D50054 -:10166C0093570401939404013374D400B384B400ED -:10167C00B306870233099900338EE702B305830260 -:10168C003307F3023383C50193D50601B385650097 -:10169C0063F4C5013307370113D30501B709010002 -:1016AC00B302E3001387F9FFB3F5E500B3F6E600E8 -:1016BC003383830293950501B385D5003387770275 -:1016CC0033848F02338EFF023304E40093570301FB -:1016DC00338487006374E400330E3E01B7070100C6 -:1016EC009387F7FFB376F4003373F30093960601F8 -:1016FC00B38E2E01B3866600B3B49E00B386E601AA -:10170C00B3879600B38EBE00B3B5BE0033835700CB -:10171C00B30FB300B3B6E601B3B79700B3E7F60067 -:10172C001354040133335300B3B5BF00B3878700A0 -:10173C00B365B300B387B700B387C70113D77F0175 -:10174C0093979700B3E7E70013979E003367170151 -:10175C003337E00093DE7E0193969F003367D70109 -:10176C003367D7009396770063DA06109356170009 -:10177C001377170033E7E6009396F7013367D7002A -:10178C0093D717009305F83F635EB00E93767700FE -:10179C00638006029376F70013054000638AA60067 -:1017AC009306470033B7E600B387E70013870600BC -:1017BC009396770063DA0600B70600FF9386F6FF70 -:1017CC00B3F7D700930508409306E07F63CEB616B7 -:1017DC00935637001397D7013367D70093D7370049 -:1017EC00B70610009386F6FFB3F7D70093F6F57F94 -:1017FC00B70510809385F5FF93964601B3F7B700B4 -:10180C008320C102032481021316F601B3E7D7002B -:10181C00B3E6C70083244102032901028329C101D5 -:10182C00032A8101832A4101032B0101832BC1006F -:10183C001305070093850600130101036780000060 -:10184C0013860900930704001387040093060B000A -:10185C0093052000638AB60E93053000638CB60C9A -:10186C0093051000E390B6F29307000013070000F5 -:10187C006F00800813060A006FF09FFD1308050027 -:10188C006FF05FF0130510003305B540930680032D -:10189C00E3CCA6FC9306F00163C4A6061308E8414A -:1018AC00B3960701B355A70033170701B3E6B6008B -:1018BC003337E00033E7E600B3D7A7009376770021 -:1018CC00638006029376F70093054000638AB600A6 -:1018DC009306470033B7E600B387E700138706008B -:1018EC009396870063CA06069396D7011357370061 -:1018FC0033E7E60093D73700930500006FF05FEEF7 -:10190C00930610FEB386B64093080002B3D6D700F8 -:10191C0093050000630615011308E843B39507010E -:10192C0033E7E5003337E00033E7E60093070000C8 -:10193C006FF0DFF8B7070800130700009305F07F7E -:10194C00130600006FF0DFE9930700001307000097 -:10195C009305F07F6FF0DFE893070000130700009A -:10196C00930510006FF0DFE7130101FE232A9100AD -:10197C002326310193547501B709800023282101D6 -:10198C00232441019389F9FF232E1100232C81007C -:10199C002322510193F4F40F138A0500B3F9A90023 -:1019AC001359F501638804089307F00F6384F40A54 -:1019BC0093993900B7070004B3E9F900938414F83C -:1019CC00930A000013557A01370480001304F4FFC6 -:1019DC001375F50F33744401135AFA01630C05089F -:1019EC009307F00F6308F50A13143400B7070004CB -:1019FC003364F400130515F89307000093962A003E -:101A0C00B3E6F6009386F6FF1307E0003346490170 -:101A1C003385A4406360D70A9715000093858550E1 -:101A2C0093962600B386B60003A706003307B700CB -:101A3C0067000700638A090213850900EF00106430 -:101A4C009307B5FF9304A0F8B399F900B384A440AD -:101A5C006FF01FF79304F00F930A2000E38409F64C -:101A6C00930A30006FF01FF693040000930A1000E5 -:101A7C006FF05FF5630A040213050400EF001060B9 -:101A8C009307B5FF3314F4009307A0F83385A740F0 -:101A9C006FF09FF61305F00F93072000E30004F698 -:101AAC00930730006FF09FF51305000093071000AB -:101ABC006FF0DFF41318540063F6890E1305F5FF6D -:101ACC00930600001354080133D38902B7070100B1 -:101ADC009387F7FFB377F80093D6060133F78902A3 -:101AEC0093050300B38867021317070133E7E60079 -:101AFC00637E1701330707019305F3FF6368070142 -:101B0C00637617019305E3FF33070701330717418A -:101B1C00B358870233778702B386170393170701ED -:101B2C001387080063FED700B38707011387F8FFFC -:101B3C0063E8070163F6D7001387E8FFB387070153 -:101B4C0013940501B387D7403364E400B337F00036 -:101B5C003364F4001307F5076350E00A93777400BD -:101B6C00638A07009377F400930640006384D700E0 -:101B7C00130444009317440063DA0700B70700F816 -:101B8C009387F7FF3374F400130705089307E00FEE -:101B9C001354340063D2E70C130400001307F00F46 -:101BAC006F00800B9396F90193D919006FF09FF198 -:101BBC00130609001384090093870A0013072000F9 -:101BCC00E38CE7FC130730006382E708130710006F -:101BDC00E392E7F813040000130700006F00C0073E -:101BEC0013060A006FF09FFD370440001306000037 -:101BFC00930730006FF09FFC93071000B387E7400A -:101C0C001307B001E348F7FC1305E509B357F400DB -:101C1C003314A4003334800033E4870093777400CA -:101C2C00638A07009377F400130740006384E7008E -:101C3C00130444009317540013543400E3DE07F8E4 -:101C4C0013040000130710006F000001370440005C -:101C5C001307F00F13060000370580001305F5FF7E -:101C6C003374A400370580801305F5FF1377F70F45 -:101C7C003374A400131777013364E4001315F601D1 -:101C8C003365A4008320C101032481018324410115 -:101C9C00032901018329C100032A8100832A410001 -:101CAC001301010267800000130101FE232A910039 -:101CBC0023282101B7048000135975012326310113 -:101CCC00232251019384F4FF232E1100232C810035 -:101CDC00232441011379F90F938A0500B3F4A4006E -:101CEC009359F501630A09089307F00F6306F90A83 -:101CFC0093943400B7070004B3E4F400130919F803 -:101D0C00130A000013D57A01370480001304F4FF82 -:101D1C001375F50F3374540193DAFA01630E050849 -:101D2C009307F00F630AF50A13143400B707000485 -:101D3C003364F400130515F89306000093172A007A -:101D4C00B3E7D7003305A9009387F7FF1307E0002B -:101D5C0033C65901130815006360F70A1717000002 -:101D6C001307072093972700B387E70083A7070083 -:101D7C00B387E70067800700638A040213850400B9 -:101D8C00EF00D02F9307B5FF1309A0F8B394F4001C -:101D9C003309A9406FF0DFF61309F00F130A200086 -:101DAC00E38204F6130A30006FF0DFF5130900002C -:101DBC00130A10006FF01FF5630A040213050400E8 -:101DCC00EF00D02B9307B5FF3314F4009307A0F862 -:101DDC003385A7406FF05FF61305F00F93062000D4 -:101DEC00E30E04F4930630006FF05FF5130500006A -:101DFC00930610006FF09FF4B70701001383F7FFF1 -:101E0C0013D7040193560401B3F4640033746400D3 -:101E1C00B3888402B30587023304D702B3869602D3 -:101E2C0093D40801B386B600B384D40063F4B40031 -:101E3C003304F400B3F7640093970701B3F8680018 -:101E4C00B38717011397670093D404013337E0006D -:101E5C0093D7A70133848400B367F700131464008D -:101E6C003364F4009317440063DE070C935714009B -:101E7C001374140033E487001307F8076358E00C5D -:101E8C0093777400638A07009377F40093064000FD -:101E9C006384D700130444009317440063DA0700EB -:101EAC00B70700F89387F7FF3374F400130708089B -:101EBC009307E00F63CCE70E935734006F000003D9 -:101ECC00138609001384040093060A00930720006C -:101EDC00638EF60C930730006382F60C93051000AA -:101EEC009307000013070000E398B6F8370480004E -:101EFC001304F4FF37058080B3F787001305F5FF53 -:101F0C008320C101032481011377F70FB3F7A700D6 -:101F1C00131777011315F601B3E7E700832441018A -:101F2C00032901018329C100032A8100832A41006E -:101F3C0033E5A700130101026780000013860A0035 -:101F4C006FF0DFF8130805006FF01FF39307100014 -:101F5C00B387E7401307B0016340F7061308E8099D -:101F6C00B357F400331404013334800033E4870096 -:101F7C0093777400638A07009377F400130740008B -:101F8C006384E700130444009317540063CA0702E8 -:101F9C0093573400130700006FF05FF5B70740004C -:101FAC001307F00F130600006FF05FF493070000A7 -:101FBC001307F00F6FF09FF3930700006FF09FFD76 -:101FCC0093070000130710006FF05FF2B707800053 -:101FDC009387F7FF130101FF33F7A70093567501A1 -:101FEC0013D67501B3F7B7002322910023202101EA -:101FFC0093F6F60F131837001376F60F23261100FD -:10200C00232481001307F00F9354F5011389060064 -:10201C001305060093D5F501939737006314E6007A -:10202C006394070093C515003387C640639A951ACD -:10203C006356E00A63160606639C07009307F00FCD -:10204C00638CF60493070800138506006F00C01418 -:10205C001307F7FF631E0702B387070113850600FA -:10206C0013975700635A0712130515001307F00F47 -:10207C00630EE5323707007E93F617001307F7FF60 -:10208C0093D71700B3F7E700B3E7D7006F00C01082 -:10209C001306F00F639EC600930708006F004007FD -:1020AC001306F00FE38AC6FE37060004B3E7C70039 -:1020BC001306B0016356E600930710006FF0DFF9CA -:1020CC00130600023306E640B3D5E700B397C7000A -:1020DC00B337F000B3E7F5006FF01FF863000708A3 -:1020EC00639C0602631808001307F00F6316E60AD8 -:1020FC006F0000029306F0FF6316D700B387070149 -:10210C006FF01FF69306F00F1347F7FF6310D6021C -:10211C001305F00F6F0040089306F00FE30AD6FE8C -:10212C00B70600043307E0403368D8009306B001CB -:10213C0063D6E600130710006F00C001930600027F -:10214C003356E8003387E6403317E8003337E000B6 -:10215C003367E600B387E7006FF09FF01385160036 -:10216C001376F50F130710006342C7066394060439 -:10217C00130500006302080263860722B387070178 -:10218C0013975700635A0700370700FC1307F7FF34 -:10219C00B3F7E7001305100013F77700630A072065 -:1021AC0013F7F700930640006304D720938747008A -:1021BC006F000020E30E08F4E38007EEB70700027F -:1021CC001305F00F930400006F00801E1307F00F2F -:1021DC00630EE51C3307F800935717006FF0DFFB15 -:1021EC006350E00863160604E38A07E41307F7FF5D -:1021FC0063140702B307F8401385060013975700C2 -:10220C00E35C07F8370400041304F4FF33F487008D -:10221C00130905006F0080131306F00FE38EC6E65A -:10222C001306B0016350E602930710006FF09FFC99 -:10223C001306F00FE382C6E637060004B3E7C700C7 -:10224C006FF01FFE13060002B3D5E7003307E6401C -:10225C00B397E700B337F000B3E7F5006FF09FF9E1 -:10226C0063020708639E0602631808001307F00F49 -:10227C00938405006FF09FE79306F0FF6318D70077 -:10228C00B3870741938405006FF05FF79306F00F57 -:10229C001347F7FF6310D602938405006FF05FE7D6 -:1022AC009306F00FE30AD6FEB70600043307E040AE -:1022BC003368D8009306B00163D6E600130710000C -:1022CC006F00C001930600023356E8003387E640E6 -:1022DC003317E8003337E0003367E600B387E74095 -:1022EC006FF05FFA138716001377F70F13061000C1 -:1022FC006344E604639C06026318080063980712A3 -:10230C00130500006FF01FEC638607123307F840CB -:10231C0093165700B387074163CA0610930707004B -:10232C0063100706930700006FF09FFDE31608E8A3 -:10233C00E39407F66FF09FE83304F840131754004A -:10234C006354070433840741938405001305040088 -:10235C00EF00C0521305B5FF3314A400634A2503E4 -:10236C00330525411305150013070002B357A400CC -:10237C003305A7403314A40033348000B3E787003F -:10238C00130500006FF05FE1E30E04F86FF01FFC23 -:10239C00B70700FC9387F7FF3305A940B377F40028 -:1023AC006FF09FDF930708006FF01FDF93070000AB -:1023BC0013975700635E0700130515001307F00F02 -:1023CC00630EE506370700FC1307F7FFB3F7E700CA -:1023DC001307F00F93D737006318E50063860700E7 -:1023EC00B707400093040000370780001307F7FF7E -:1023FC001375F50FB3F7E7001317750137058080D8 -:10240C008320C100032481001305F5FF33F5A700D9 -:10241C009394F4013365E5003365950003290100BD -:10242C00832441001301010167800000938405009F -:10243C006FF01FF5930708006FF09FF493070000EF -:10244C006FF01FF937068000135775019307F6FFDD -:10245C001377F70F9305E007B3F7A7009356F50131 -:10246C0063F6E5049305D00963FAE50037050080AF -:10247C001345F5FF3385A6006780000033E5C700E0 -:10248C009307500963DCE7001307A7F63315E50043 -:10249C00638006023305A040678000009307600943 -:1024AC003387E7403355E5006FF09FFE13050000BE -:1024BC0067800000130101FF2326110023248100F3 -:1024CC002322910063020510130405009354F501B7 -:1024DC00635405003304A04013050400EF00003AD8 -:1024EC009307E009B387A740130760096340F70619 -:1024FC00130780006356A700130585FF3314A4004F -:10250C00370580001305F5FF93F7F70F3374A4001C -:10251C0013957701B70780809387F7FF3374F40026 -:10252C00B70700803364A40093C7F7FF1395F40139 -:10253C003374F4003365A4008320C10003248100AC -:10254C0083244100130101016780000013079009E7 -:10255C006350F702130750003307A7409306B501E9 -:10256C003357E4003314D4003334800033648700D1 -:10257C00130750006356A7001307B5FF3314E4008C -:10258C00370700FC1307F7FF937674003377E400EA -:10259C00638A06001374F400930640006304D400AD -:1025AC00130747009316570063DC0600B70700FCBF -:1025BC009387F7FF3377F7009307F009B387A740AA -:1025CC00135437006FF0DFF313040000930700007F -:1025DC00930400006FF0DFF293577501130101FFB4 -:1025EC0093F7F70F2324810013871700370480001B -:1025FC00232291001304F4FF232611001377F70F05 -:10260C00930610003374A4009354F50163D2E606CC -:10261C0013850738935734001314D401370710006F -:10262C001307F7FFB3F7E700370710801307F7FF1F -:10263C001375F57F13154501B3F7E70037070080D5 -:10264C00B3E7A7001347F7FF1395F401B3F7E700BF -:10265C0033E7A7008320C100130504000324810085 -:10266C0083244100930507001301010167800000DA -:10267C00639407046302040613050400EF000020B2 -:10268C009307A00063C2A7029307B000B387A740CB -:10269C0013075501B357F4003314E40013079038B3 -:1026AC003305A7406FF09FF7930755FFB317F4005E -:1026BC00130400006FF09FFE93070000630A0400F0 -:1026CC0093573400370708001314D401B3E7E7001D -:1026DC001305F07F6FF09FF49307000013050000C3 -:1026EC006FF0DFF3370610001306F6FF3376B600F3 -:1026FC0013D845019357D5011378F87F131636007C -:10270C0033E6C7009307180093F7F77F9306100082 -:10271C0093D5F5011317350063D6F60A930608C84E -:10272C009307E00F63C2D70C6340D008930790FE69 -:10273C0063C4F612B70780001305E0013366F60098 -:10274C003305D5409307F00163C8A702130828C8C6 -:10275C00B3170701B337F000331606013355A70042 -:10276C00B3E7C700B367F5009306000013F77700D3 -:10277C00630007086F00C00E9307E0FFB386D740D5 -:10278C0093070002B356D600930800006306F500C9 -:10279C00130828CAB3180601B3E7E800B337F000F2 -:1027AC00B3E7F6006FF05FFC131565003335A0003E -:1027BC00131636009357D7013366C500B367F6007E -:1027CC006FF0DFFAB367E60063160800B337F0006A -:1027DC006FF09FF99306F00F638C07001316360009 -:1027EC00B70700026FF09FFD930700009306F00FF0 -:1027FC0013975700635E0700938616001307F00FBC -:10280C00638AE606370700FC1307F7FFB3F7E70008 -:10281C001307F00F93D737006398E6006386070021 -:10282C00B707400093050000370580001305F5FF3E -:10283C00B3F7A700370580801305F5FF93F6F60F65 -:10284C0093967601B3F7A7009395F501B3E7D700FC -:10285C0033E5B70067800000930710009306000073 -:10286C0013F7F70013064000E304C7F893874700FB -:10287C006FF01FF8930700006FF09FF9B707010086 -:10288C00637AF5029307F00FB3B7A700939737005D -:10289C00130700023307F740B357F5001705000084 -:1028AC001305C56FB307F50003C507003305A74033 -:1028BC00678000003707000193070001E36AE5FC1D -:0828CC00930780016FF0DFFCAF -:1028D400411106C6EFD05F94B240B70710F023A0B1 -:0828E40007F201454101828069 -:1028EC004448525953544F4E452050524F47524131 -:1028FC004D2C20534F4D4520535452494E47000008 -:10290C004468727973746F6E652042656E63686D8E -:10291C0061726B2C2056657273696F6E20322E318A -:10292C0020284C616E67756167653A204329000069 -:10293C0050726F6772616D20636F6D70696C656446 -:10294C0020776974682027726567697374657227CC -:10295C0020617474726962757465000050726F67DF -:10296C0072616D20636F6D70696C6564207769743A -:10297C00686F757420277265676973746572272098 -:10298C00617474726962757465000000506C6561E5 -:10299C007365206769766520746865206E756D6255 -:1029AC006572206F662072756E73207468726F7515 -:1029BC006768207468652062656E63686D61726B10 -:1029CC003A200000457865637574696F6E207374E6 -:1029DC00617274732C2025642072756E7320746878 -:1029EC00726F756768204468727973746F6E650ACC -:1029FC0000000000457865637574696F6E20656E24 -:102A0C006473000046696E616C2076616C75657349 -:102A1C00206F6620746865207661726961626C65EE -:102A2C0073207573656420696E2074686520626517 -:102A3C006E63686D61726B3A00000000496E745FE2 -:102A4C00476C6F623A20202020202020202020205C -:102A5C002025640A000000002020202020202020B7 -:102A6C0073686F756C642062653A20202025640AB7 -:102A7C0000000000426F6F6C5F476C6F623A202061 -:102A8C0020202020202020202025640A0000000087 -:102A9C0043685F315F476C6F623A20202020202012 -:102AAC00202020202025630A000000002020202068 -:102ABC002020202073686F756C642062653A20209A -:102ACC002025630A0000000043685F325F476C6F8B -:102ADC00623A202020202020202020202025630A5C -:102AEC00000000004172725F315F476C6F625B38AF -:102AFC005D3A2020202020202025640A00000000C0 -:102B0C004172725F325F476C6F625B385D5B375D41 -:102B1C003A2020202025640A0000000020202020DC -:102B2C002020202073686F756C642062653A202029 -:102B3C00204E756D6265725F4F665F52756E7320C5 -:102B4C002B203130000000005074725F476C6F62B4 -:102B5C002D3E000020205074725F436F6D703A2040 -:102B6C0020202020202020202025640A00000000A6 -:102B7C00202020202020202073686F756C64206238 -:102B8C00653A20202028696D706C656D656E7461E6 -:102B9C0074696F6E2D646570656E64656E74290062 -:102BAC00202044697363723A2020202020202020AA -:102BBC00202020202025640A000000002020456EE3 -:102BCC00756D5F436F6D703A2020202020202020EF -:102BDC002025640A000000002020496E745F436FBA -:102BEC006D703A2020202020202020202025640AEF -:102BFC000000000020205374725F436F6D703A2008 -:102C0C0020202020202020202025730A00000000F6 -:102C1C00202020202020202073686F756C64206297 -:102C2C00653A2020204448525953544F4E45205069 -:102C3C00524F4752414D2C20534F4D452053545227 -:102C4C00494E47004E6578745F5074725F476C6FE5 -:102C5C00622D3E00202020202020202073686F75DC -:102C6C006C642062653A20202028696D706C656D5B -:102C7C00656E746174696F6E2D646570656E6465E4 -:102C8C006E74292C2073616D652061732061626FF5 -:102C9C0076650000496E745F315F4C6F633A20209B -:102CAC0020202020202020202025640A0000000065 -:102CBC00496E745F325F4C6F633A202020202020D5 -:102CCC00202020202025640A00000000496E745F3B -:102CDC00335F4C6F633A20202020202020202020BE -:102CEC002025640A00000000456E756D5F4C6F6313 -:102CFC003A20202020202020202020202025640A7B -:102D0C00000000005374725F315F4C6F633A2020F7 -:102D1C0020202020202020202025730A00000000E5 -:102D2C00202020202020202073686F756C64206286 -:102D3C00653A2020204448525953544F4E45205058 -:102D4C00524F4752414D2C2031275354205354524B -:102D5C00494E47005374725F325F4C6F633A2020C8 -:102D6C0020202020202020202025730A0000000095 -:102D7C00202020202020202073686F756C64206236 -:102D8C00653A2020204448525953544F4E45205008 -:102D9C00524F4752414D2C2032274E44205354520F -:102DAC00494E47004D656173757265642074696D99 -:102DBC006520746F6F20736D616C6C20746F206F65 -:102DCC00627461696E206D65616E696E6766756CA3 -:102DDC0020726573756C747300000000506C656133 -:102DEC00736520696E637265617365206E756D62C3 -:102DFC006572206F662072756E730000436C6F6392 -:102E0C006B206379636C65733D2564200A000000B8 -:102E1C00444D49505320706572204D687A3A2020F9 -:102E2C002020202020202020202020202020202096 -:102E3C002020202020202020202020200000000006 -:102E4C0025642E00256400004448525953544F4EBB -:102E5C00452050524F4752414D2C2031275354207E -:102E6C00535452494E4700004448525953544F4E04 -:102E7C00452050524F4752414D2C2032274E442072 -:102E8C00535452494E4700004448525953544F4EE4 -:102E9C00452050524F4752414D2C2033275244204D -:102EAC00535452494E470000C4E4FFFFD8E3FFFFE0 -:102EBC00E4E3FFFFD8E3FFFFB0E4FFFFD8E3FFFF3D -:102ECC00E4E3FFFFC4E4FFFFC4E4FFFFB0E4FFFF53 -:102EDC00E4E3FFFFB0E3FFFFB0E3FFFFB0E3FFFF6E -:102EEC00ECE3FFFF6CE9FFFF6CE9FFFF90E9FFFFEC -:102EFC0060E9FFFF60E9FFFF50EAFFFF90E9FFFF89 -:102F0C0060E9FFFF50EAFFFF60E9FFFF90E9FFFF78 -:102F1C005CE9FFFF5CE9FFFF5CE9FFFF50EAFFFFA4 -:102F2C0078ECFFFFB4ECFFFFC0ECFFFFB4ECFFFF4D -:102F3C002CEDFFFFB4ECFFFFC0ECFFFF78ECFFFFC4 -:102F4C0078ECFFFF2CEDFFFFC0ECFFFF90ECFFFFD8 -:102F5C0090ECFFFF90ECFFFFC8ECFFFF70EFFFFF62 -:102F6C0070EFFFFFE0EFFFFF68EFFFFF68EFFFFF81 -:102F7C0040F0FFFFE0EFFFFF68EFFFFF40F0FFFFC7 -:102F8C0068EFFFFFE0EFFFFF64EFFFFF64EFFFFF71 -:102F9C0064EFFFFF40F0FFFF000102020303030395 -:102FAC0004040404040404040505050505050505CD -:102FBC0005050505050505050606060606060606AD -:102FCC000606060606060606060606060606060695 -:102FDC00060606060606060607070707070707077D -:102FEC000707070707070707070707070707070765 -:102FFC000707070707070707070707070707070755 -:10300C000707070707070707070707070707070744 -:10301C00070707070707070708080808080808082C -:10302C000808080808080808080808080808080814 -:10303C000808080808080808080808080808080804 -:10304C0008080808080808080808080808080808F4 -:10305C0008080808080808080808080808080808E4 -:10306C0008080808080808080808080808080808D4 -:10307C0008080808080808080808080808080808C4 -:10308C0008080808080808080808080808080808B4 -:08309C000808080808080808EC -:1030A8000000000080842E41000000205FA0124232 -:0C30B800F90295503353DE470000C84277 -:040000058000000077 -:00000001FF diff --git a/benchmarks/riscv_tests/freeRTOS_demo.hex b/benchmarks/riscv_tests/freeRTOS_demo.hex deleted file mode 100644 index 3b6e2a03..00000000 --- a/benchmarks/riscv_tests/freeRTOS_demo.hex +++ /dev/null @@ -1,2479 +0,0 @@ -:0200000480007A -:10000000B72F0000938F0F8073900F306F00400365 -:100010001300000013000000130000001300000094 -:100020001300000013000000130000001300000084 -:100030001300000013000000130000001300000074 -:100040009702000093824211739052309300000097 -:10005000130100009301000013020000930200004E -:100060001303000093030000130400009304000036 -:10007000130500009305000013060000930600001E -:100080001307000093070000130800009308000006 -:100090001309000093090000130A0000930A0000EE -:1000A000130B0000930B0000130C0000930C0000D6 -:1000B000130D0000930D0000130E0000930E0000BE -:1000C000130F0000930F000097110200938141CCA1 -:1000D000170502001305054F97A503009385858139 -:1000E00013060000EF00001A170502001305C549AA -:1000F000970502009385854913060000EF008018DC -:1001000017A503001305457F97B503009385857EEA -:1001100037B6ABAB1306B6BAEF00C01617B1030083 -:100120001301817DEF70802A9392120093D2120006 -:100130009382D2FF638A02008322010013014100EF -:100140006F0000177300203083220100130141006B -:10015000730020301301C1FF23205100F32220340B -:10016000E3C402FC8322010013014100130141F8A2 -:1001700023221100232421002326310023284100BB -:10018000232A5100232C6100232E71002320810299 -:10019000232291022324A1022326B1022328C10293 -:1001A000232AD102232CE102232EF1022320010570 -:1001B0002322110523242105232631052328410567 -:1001C000232A5105232C6105232E71052320810745 -:1001D000232291072324A1072326B1072328C1073F -:1001E000232AD107232CE107232EF107732520347E -:1001F000F3251034130601006F000000731015344E -:1002000083204100032181008321C10003220101D9 -:1002100083224101032381018323C10103240102BD -:1002200083244102032581028325C10203260103A1 -:1002300083264103032781038327C1030328010485 -:1002400083284104032981048329C104032A010569 -:10025000832A4105032B8105832BC105032C01064D -:10026000832C4106032D8106832DC106032E010731 -:10027000832E4107032F8107832FC1071301C10775 -:10028000730020302320C5006376B50013054500B8 -:100290006FF05FFF678000000000000000000000BA -:1002A000000000000000000000000000000000004E -:1002B000130101F8232011002322210023243100FF -:1002C0002326410023285100232A6100232C71009A -:1002D000232E8100232091022322A1022324B10294 -:1002E0002326C1022328D102232AE102232CF10272 -:1002F000232E010323201105232221052324310568 -:100300002326410523285105232A6105232C710545 -:10031000232E8105232091072322A1072324B1073F -:100320002326C1072328D107232AE107232CF1071D -:100330009702020083A2422523A02200F322103458 -:10034000232E5106EF00404E170102000321C12366 -:10035000032101008322C10773901234B7220000E9 -:100360009382028873A00230832001000322C1001F -:100370008322010103234101832381010324C1015D -:100380008324010203254102832581020326C10241 -:100390008326010303274103832781030328C10325 -:1003A000832801040329410483298104032AC10409 -:1003B000832A0105032B4105832B8105032CC105ED -:1003C000832C0106032D4106832D8106032EC106D1 -:1003D000832E0107032F4107832F81071301010893 -:1003E00073002030970202009382C21D23A01200E6 -:1003F00023A2220023A4320023A6420023A85200F5 -:1004000023AA620023AC720023AE820023A09202D2 -:1004100023A2A20223A4B20223A6C20223A8D202CC -:1004200023AAE20223ACF20223AE020323A01205A8 -:1004300023A2220523A4320523A6420523A85205A0 -:1004400023AA620523AC720523AE820523A092077E -:1004500023A2A20723A4B20723A6C20723A8D20778 -:1004600023AAE20723ACF207EF00402B170102009A -:1004700003218111032101008322C10773901234EB -:10048000B72200009382028873A00230832001000B -:100490000322C1008322010103234101832381013F -:1004A0000324C10183240102032541028325810223 -:1004B0000326C10283260103032741038327810307 -:1004C0000328C103832801040329410483298104EB -:1004D000032AC104832A0105032B4105832B8105CF -:1004E000032CC105832C0106032D4106832D8106B3 -:1004F000032EC106832E0107032F4107832F810797 -:100500001301010873002030970202009382820BCE -:1005100083A0020003A1420083A1820003A2C200C3 -:1005200083A2020103A3420183A3820103A4C201A7 -:1005300083A4020203A5420283A5820203A6C2028B -:1005400083A6020303A7420383A7820303A8C2036F -:1005500083A8020403A9420483A9820403AAC20453 -:1005600083AA020503AB420583AB820503ACC20537 -:1005700083AC020603AD420683AD820603AEC2061B -:1005800083AE020703AFC20983AF82076780000012 -:1005900073700430130101F823201100232221007D -:1005A000232431002326410023285100232A6100FF -:1005B000232C7100232E8100232091022322A102EB -:1005C0002324B1022326C1022328D102232AE102D7 -:1005D000232CF102232E01032320110523222105C0 -:1005E000232431052326410523285105232A6105AB -:1005F000232C7105232E8105232091072322A10797 -:100600002324B1072326C1072328D107232AE10782 -:10061000232CF1079702020083A202F723A02200F5 -:10062000232E1106EF20505E170102000321C1F5B1 -:10063000032101008322C10773901234B722000006 -:100640009382028873A00230832001000322C1003C -:100650008322010103234101832381010324C1017A -:100660008324010203254102832581020326C1025E -:100670008326010303274103832781030328C10342 -:10068000832801040329410483298104032AC10426 -:10069000832A0105032B4105832B8105032CC1050A -:1006A000832C0106032D4106832D8106032EC106EE -:1006B000832E0107032F4107832F810713010108B0 -:1006C00073002030970702009387C7EC83A70700C9 -:1006D00003A8470083A70700170702001307C7EB0B -:1006E000032507009305803E13060000B386B7007C -:1006F00093880600B3B8F8003307C800B387E80052 -:100700001387070093870600130807002320F500CE -:10071000232205011300000067800000130101FF80 -:1007200023261100EFF01FFA9307000873A047304B -:10073000130000008320C100130101016780000045 -:10074000970702009387C7E403A707009307F0FF0A -:100750006306F700737004306F000000737004309C -:100760006F000000130101FF2326A1008327C100B1 -:1007700073904730130000001301010167800000EF -:10078000130101FFF32740302326F10073F04330BB -:100790008327C10013850700130101016780000052 -:1007A000130101FF2326A1002324B1002322C1004D -:1007B0008327C1009387C7FF2326F1000327810009 -:1007C0008327C10023A0E7008327C100938787FA0E -:1007D0002326F100032741008327C10023A0E7005F -:1007E0008327C100938787FE2326F10093870100AA -:1007F000138707008327C10023A0E7008327C100D8 -:10080000938747FF2326F10017070000130787F39C -:100810008327C10023A0E7008327C10013850700B9 -:100820001301010167800000130101FF232611005D -:10083000EFF05FE9EF20D013930705006384070012 -:10084000EF20903C130000008320C1001301010140 -:1008500067800000130101FF2326A1008327C10048 -:10086000138787008327C10023A2E7008327C100E5 -:100870001307F0FF23A4E7008327C1001387870035 -:100880008327C10023A6E7008327C10013878700C1 -:100890008327C10023A8E7008327C10023A0070006 -:1008A000130000001301010167800000130101FF24 -:1008B0002326A1008327C10023A8070013000000FE -:1008C0001301010167800000130101FE2326A1002E -:1008D0002324B1008327C10083A74700232EF10002 -:1008E000832781000327C10123A2E7008327C101D9 -:1008F00003A787008327810023A4E7008327C10182 -:1009000083A787000327810023A2E7008327C10173 -:100910000327810023A4E700832781000327C10068 -:1009200023A8E7008327C10083A7070013871700C8 -:100930008327C10023A0E700130000001301010278 -:1009400067800000130101FE2326A1002324B100CB -:100950008327810083A70700232CF100032781014F -:100960009307F0FF631AF7008327C10083A70701ED -:10097000232EF1006F0040038327C1009387870077 -:10098000232EF1006F0000018327C10183A74700D8 -:10099000232EF1008327C10183A7470083A7070007 -:1009A00003278101E372F7FE8327C10103A74700F4 -:1009B0008327810023A2E7008327810083A74700C4 -:1009C0000327810023A4E700832781000327C101B7 -:1009D00023A4E7008327C1010327810023A2E700A6 -:1009E000832781000327C10023A8E7008327C100D4 -:1009F00083A70700138717008327C10023A0E70000 -:100A0000130000001301010267800000130101FEC2 -:100A10002326A1008327C10083A70701232EF1000D -:100A20008327C10083A747000327C100032787004E -:100A300023A4E7008327C10083A787000327C10001 -:100A40000327470023A2E7008327C10183A74700AC -:100A50000327C100631AF7008327C10003A787009B -:100A60008327C10123A2E7008327C10023A8070031 -:100A70008327C10183A707001387F7FF8327C101DD -:100A800023A0E7008327C10183A707001385070080 -:100A90001301010267800000130101FD23261102EA -:100AA0002326A1002324B1008327C100232EF100B7 -:100AB0008327C10163960700737004306F00000044 -:100AC000EF30103F8327C10103A707008327C1012F -:100AD00083A6C7038327C10183A70704B387F60250 -:100AE0003307F7008327C10123A2E7008327C10151 -:100AF00023AC07028327C10103A707008327C10195 -:100B000023A4E7008327C10103A707008327C101AE -:100B100083A7C7039386F7FF8327C10183A7070431 -:100B2000B387F6023307F7008327C10123A6E70046 -:100B30008327C1011307F0FF23A2E7048327C10124 -:100B40001307F0FF23A4E70483278100639A0702B9 -:100B50008327C10183A70701638407048327C10199 -:100B60009387070113850700EF20D04B130705007B -:100B7000930710006316F702EFF09FA16F00400289 -:100B80008327C1019387070113850700EFF09FCCEE -:100B90008327C1019387470213850700EFF09FCB9E -:100BA000EF30103593071000138507008320C10232 -:100BB0001301010367800000130101FD23261102C8 -:100BC0002326A1002324B10093070600A303F1000C -:100BD000232C01008327C100639607007370043043 -:100BE0006F0000008327810063960700232E010019 -:100BF0006F0080010327C10083278100B307F7023C -:100C000093871700232EF1008327C101938747059F -:100C100013850700EF50006E232AA10083274101AE -:100C20006382070683278100639A070083274101B7 -:100C30000327410123A0E7006F0040018327410102 -:100C4000138747058327410123A0E700832741013C -:100C50000327C10023AEE702832741010327810058 -:100C600023A0E7049305100003254101EFF0DFE224 -:100C700083274101034771002388E704832741014B -:100C8000232CF100832781016396070073700430E1 -:100C90006F00000083278101138507008320C102B4 -:100CA0001301010367800000130101FD23261102D7 -:100CB00093070500A307F10013054005EF5080637B -:100CC000232EA1008327C101638C07088327C1015C -:100CD00023A207008327C10123A007008327C101A6 -:100CE00023A407008327C10123A607008327C1018E -:100CF00023AC07028327C1011307100023AEE702CC -:100D00008327C10123A007048327C1011307F0FF34 -:100D100023A2E7048327C1011307F0FF23A4E704FC -:100D20008327C1010347F1002388E7048327C1011A -:100D30009387070113850700EFF0DFB18327C10117 -:100D40009387470213850700EFF0DFB0930600009A -:100D500013060000930500000325C101EF00001EEB -:100D60008327C101138507008320C10213010103FA -:100D700067800000130101FD232611022324810254 -:100D80002326A1008327C100232CF10083278101A2 -:100D900063960700737004306F00000083278101A1 -:100DA00003A44700EF300060930705006312F404CA -:100DB0008327810183A7C7001387F7FF832781015A -:100DC00023A6E7008327810183A7C700639C070050 -:100DD000930600001306000093050000032581011F -:100DE000EF00C01593071000232EF1006F00800064 -:100DF000232E01008327C101138507008320C10230 -:100E0000032481021301010367800000130101FD27 -:100E100023261102232481022326A1002324B100CA -:100E20008327C100232CF1008327810163960700EB -:100E3000737004306F0000008327810103A4470012 -:100E4000EF304056930705006312F40283278101B7 -:100E500083A7C700138717008327810123A6E70014 -:100E600093071000232EF1006F00C00393060000CB -:100E7000032681009305000003258101EF00C0587F -:100E8000232EA1000327C10193071000631CF70064 -:100E90008327810183A7C700138717008327810158 -:100EA00023A6E7008327C101138507008320C10221 -:100EB000032481021301010367800000130101FD77 -:100EC000232611022326A1002324B1008327C10079 -:100ED00063960700737004306F00000003278100E1 -:100EE0008327C10063F6E700737004306F000000D1 -:100EF00013062000930500000325C100EFF0DFCBAF -:100F0000232EA1008327C101638807008327C10125 -:100F10000327810023ACE7028327C1016396070002 -:100F2000737004306F0000008327C1011385070030 -:100F30008320C1021301010367800000130101FC3B -:100F4000232E11022326A1002324B1002322C10055 -:100F50002320D100232601028327C1002324F1028C -:100F60008327810263960700737004306F000000CE -:100F700083278100639807008327810283A70704E2 -:100F800063960700930710006F008000930700002E -:100F900063960700737004306F00000003270100A0 -:100FA00093072000631AF7008327810203A7C70372 -:100FB000930710006316F700930710006F0080007E -:100FC0009307000063960700737004306F00000001 -:100FD000EF30803F930705006396070083274100A9 -:100FE00063960700930710006F00800093070000CE -:100FF00063960700737004306F000000EF30406BA1 -:101000008327810203A787038327810283A7C7035E -:101010006368F70003270100930720006310F706B9 -:10102000032601008325810003258102EF00101CA7 -:101030002322A1028327810283A747026384070238 -:10104000832781029387470213850700EF20807D65 -:101050001307050093071000631CF700EFF04FD350 -:101060006F0000018327410263840700EFF04FD235 -:10107000EF300068930710006F00400F8327410096 -:1010800063980700EF30C066930700006F00000E02 -:101090008327C102639C07009307C10113850700E2 -:1010A000EF20501D930710002326F102EF3040641B -:1010B000EF10D049EF30C05F8327810203A74704B8 -:1010C0009307F0FF6316F7008327810223A207042A -:1010D0008327810203A787049307F0FF6316F700B5 -:1010E0008327810223A40704EF30806013074100A7 -:1010F0009307C1019305070013850700EF20501CDB -:1011000093070500639C070403258102EF00504606 -:1011100093070500638C07028327810293870701E9 -:10112000032741009305070013850700EF20004ABD -:1011300003258102EF00902CEF10904393070500E8 -:10114000E39E07EAEFF0CFC46FF05FEB0325810267 -:10115000EF00D02AEF10D0416FF05FEA0325810243 -:10116000EF00D029EF10D04093070000138507004F -:101170008320C1031301010467800000130101FDF6 -:10118000232611022326A1002324B1002322C1001B -:101190002320D1008327C100232CF1008327810164 -:1011A00063960700737004306F000000832781008E -:1011B000639807008327810183A7070463960700CC -:1011C000930710006F0080009307000063960700EC -:1011D000737004306F0000000327010093072000A4 -:1011E000631AF7008327810103A7C7039307100041 -:1011F0006316F700930710006F008000930700004C -:1012000063960700737004306F000000EFF04FD753 -:1012100093070500232AF1008327810103A7870391 -:101220008327810183A7C7036368F70003270100B1 -:10123000930720006310F70803260100832581002F -:1012400003258101EF00807A8327810103A78704AA -:101250009307F0FF6310F7048327810183A74702F8 -:10126000638407048327810193874702138507005E -:10127000EF20405B93070500638807028327410046 -:1012800063840702832741001307100023A0E700AF -:101290006F0080018327810183A7870413871700CC -:1012A0008327810123A4E70493071000232EF10074 -:1012B0006F008000232E0100832741011385070062 -:1012C000EFF04FCA8327C101138507008320C102B5 -:1012D0001301010367800000130101FD23261102A1 -:1012E0002326A1002324B1008327C100232CF10071 -:1012F0008327810163960700737004306F0000003C -:101300008327810183A70704638607007370043075 -:101310006F0000008327810183A7070063980700FF -:101320008327810183A74700639607009307100076 -:101330006F0080009307000063960700737004300D -:101340006F000000EFF0CFC393070500232AF100E0 -:101350008327810103A787038327810183A7C7030D -:101360006372F7088327810183A787031387170018 -:101370008327810123ACE7028327810103A7870428 -:101380009307F0FF6310F7048327810183A74702C7 -:10139000638407048327810193874702138507002D -:1013A000EF204048930705006388070283278100E8 -:1013B00063840702832781001307100023A0E7003E -:1013C0006F0080018327810183A78704138717009B -:1013D0008327810123A4E70493071000232EF10043 -:1013E0006F008000232E0100832741011385070031 -:1013F000EFF04FB78327C101138507008320C10297 -:101400001301010367800000130101FC232E110268 -:101410002326A1002324B1002322C1002320D100D0 -:10142000232601028327C1002324F102832781029E -:1014300063960700737004306F00000083278100FB -:10144000639807008327810283A707046396070038 -:10145000930710006F008000930700006396070059 -:10146000737004306F000000EF20107693070500C2 -:1014700063960700832741006396070093071000D7 -:101480006F008000930700006396070073700430BC -:101490006F000000EF30C0218327810283A78703FC -:1014A0006382070C8327810283A7C7002322F102EE -:1014B0008325810003258102EF00806B83270100D3 -:1014C000639207068327810283A787031387F7FFA9 -:1014D0008327810223ACE7028327810283A70700C9 -:1014E000639A0700EF30802B1307050083278102E2 -:1014F00023A2E7008327810283A70701638E0704E5 -:10150000832781029387070113850700EF2080312D -:1015100013070500930710006310F704EFF04F87DF -:101520006F008003832781020327410223A6E7007F -:101530008327810283A747026380070283278102F2 -:101540009387470213850700EF20C02D93070500FE -:1015500063840700EFF0CF83EF308019930710000A -:101560006F0080118327410063980700EF30401817 -:10157000930700006F0040108327C102639C07009F -:101580009307C10113850700EF20C04E9307100099 -:101590002326F102EF30C015EF10407BEF304011F1 -:1015A0008327810203A747049307F0FF6316F70020 -:1015B0008327810223A207048327810203A78704CC -:1015C0009307F0FF6316F7008327810223A4070423 -:1015D000EF300012130741009307C1019305070084 -:1015E00013850700EF20C04D93070500639E070693 -:1015F00003258102EF00406F93070500638E070407 -:101600008327810283A70700639E0700EF30400A0B -:101610008327810283A7470013850700EF20D05F4F -:10162000EF30000D83278102938747020327410093 -:101630009305070013850700EF10507903258102F9 -:10164000EF00C05BEF10C07293070500E39407E45E -:10165000EFE01FF46FF01FE403258102EF00005A52 -:10166000EF1000716FF01FE303258102EF000059B6 -:10167000EF10007093070000138507008320C1035B -:101680001301010467800000130101FD23261102EC -:101690002326A1002324B1002322C1008327C100F7 -:1016A000232CF100832781016396070073700430B7 -:1016B0006F00000083278100639807008327810162 -:1016C00083A7070463960700930710006F0080004C -:1016D0009307000063960700737004306F000000EA -:1016E000EFF00F8A93070500232AF1008327810179 -:1016F00083A7870363880708832581000325810169 -:10170000EF0000478327810183A787031387F7FF33 -:101710008327810123ACE7028327810103A74704C4 -:101720009307F0FF6310F7048327810183A7070164 -:1017300063840704832781019387070113850700CA -:10174000EF20400E930705006388070283274100BE -:1017500063840702832741001307100023A0E700DA -:101760006F0080018327810183A747041387170037 -:101770008327810123A2E70493071000232EF100A1 -:101780006F008000232E010083274101138507008D -:10179000EFE05FFD8327C101138507008320C102AD -:1017A0001301010367800000130101FD23261102CC -:1017B0002326A1002324B1008327C100232CF1009C -:1017C0008327810163960700737004306F00000067 -:1017D00083278100639807008327810183A707047B -:1017E00063960700930710006F00800093070000C6 -:1017F00063960700737004306F0000008327810137 -:1018000083A7070463960700737004306F0000001D -:10181000EFE01FF793070500232AF10083278101DA -:1018200083A78703638A07028327810183A7C700F1 -:101830002328F1008325810003258101EF00403337 -:10184000832781010327010123A6E70093071000E6 -:10185000232EF1006F008000232E01008327410119 -:1018600013850700EFE01FF08327C10113850700F0 -:101870008320C1021301010367800000130101FDF1 -:10188000232611022326A1008327C10063960700A7 -:10189000737004306F000000EF2090618327C10057 -:1018A00083A78703232EF100EF2090648327C101D3 -:1018B000138507008320C102130101036780000024 -:1018C000130101FD232611022326A1008327C10055 -:1018D000232EF1008327C101639607007370043043 -:1018E0006F000000EF20D05C8327C10103A7C7036E -:1018F0008327C10183A78703B307F740232CF10097 -:10190000EF20105F83278101138507008320C10228 -:101910001301010367800000130101FE2326A100CB -:101920008327C10063960700737004306F000000C6 -:101930008327C10083A78703232EF1008327C101DA -:10194000138507001301010267800000130101FDE8 -:10195000232611022326A1008327C100232EF10094 -:101960008327C10163960700737004306F00000085 -:101970000325C101EF0040520325C101EF4050375C -:10198000130000008320C1021301010367800000DF -:10199000130101FF2326A1008327C10083A7C704E9 -:1019A000138507001301010167800000130101FF87 -:1019B0002326A1002324B1008327C100032781002F -:1019C00023A6E70413000000130101016780000053 -:1019D000130101FF2326A1008327C10083C7070548 -:1019E000138507001301010167800000130101FD49 -:1019F000232611022326A1002324B1002322C100A3 -:101A0000232E01008327C10083A7070463980702E0 -:101A10008327C10083A70700639807128327C100AB -:101A200083A7470013850700EF20D034232EA100A1 -:101A30008327C10023A207006F0000118327410004 -:101A4000639407068327C10003A787008327C1008B -:101A500083A7070413860700832581001305070069 -:101A6000EF40D03F8327C10003A787008327C10031 -:101A700083A707043307F7008327C10023A4E700E7 -:101A80008327C10003A787008327C10083A74700DE -:101A9000636CF70A8327C10003A707008327C100EF -:101AA00023A4E7006F00400A8327C10003A7C700F3 -:101AB0008327C10083A707041386070083258100BD -:101AC00013050700EF4090398327C10003A7C70023 -:101AD0008327C10083A70704B307F0403307F7004B -:101AE0008327C10023A6E7008327C10003A7C700FF -:101AF0008327C10083A707006372F7028327C10011 -:101B000003A747008327C10083A70704B307F0405A -:101B10003307F7008327C10023A6E700032741000E -:101B2000930720006312F7028327C10083A787036E -:101B3000638C07008327C10083A787031387F7FF00 -:101B40008327C10023ACE7028327C10083A7870353 -:101B5000138717008327C10023ACE7028327C10145 -:101B6000138507008320C102130101036780000071 -:101B7000130101FE232E11002326A1002324B1000E -:101B80008327C10083A70704638207068327C10058 -:101B900003A7C7008327C10083A707043307F70003 -:101BA0008327C10023A6E7008327C10003A7C7003E -:101BB0008327C10083A74700636AF7008327C1001A -:101BC00003A707008327C10023A6E7008327C100DE -:101BD00003A7C7008327C10083A707041386070054 -:101BE0009305070003258100EF40502713000000F4 -:101BF0008320C1011301010267800000130101FE6F -:101C0000232E11002326A100EF20902A6F0000044C -:101C10008327C10083A74702638207048327C1008B -:101C20009387470213850700EF10D03F9307050005 -:101C300063840700EF10D0788327C10083A787044F -:101C40001387F7FF8327C10023A4E7048327C1007C -:101C500083A78704E34EF0FA6F00800013000000B2 -:101C60008327C1001307F0FF23A4E704EF205028C7 -:101C7000EF2010246F0000048327C10083A7070111 -:101C8000638207048327C100938707011385070038 -:101C9000EF1050399307050063840700EF1050726E -:101CA0008327C10083A747041387F7FF8327C10059 -:101CB00023A2E7048327C10083A74704E34EF0FA79 -:101CC0006F008000130000008327C1001307F0FF9E -:101CD00023A2E704EF20D021130000008320C101DC -:101CE0001301010267800000130101FD2326110288 -:101CF0002326A100EF20D01B8327C10083A78703E1 -:101D00006398070093071000232EF1006F008000F6 -:101D1000232E0100EF20D01D8327C101138507006A -:101D20008320C1021301010367800000130101FE3B -:101D30002326A1008327C100639607007370043037 -:101D40006F0000008327C10083A787036398070003 -:101D500093071000232EF1006F008000232E010056 -:101D60008327C1011385070013010102678000006A -:101D7000130101FD232611022326A100EF20501399 -:101D80008327C10003A787038327C10083A7C70355 -:101D90006318F70093071000232EF1006F008000F6 -:101DA000232E0100EF20D0148327C10113850700E3 -:101DB0008320C1021301010367800000130101FEAB -:101DC0002326A1008327C1006396070073700430A7 -:101DD0006F0000008327C10003A787038327C1008A -:101DE00083A7C7036318F70093071000232EF100A1 -:101DF0006F008000232E01008327C1011385070097 -:101E00001301010267800000130101FE2326A100D7 -:101E10002324B100232E01006F00800617870300E2 -:101E2000130787A98327C10193973700B307F700EA -:101E300083A7070063900704178703001307C7A74A -:101E40008327C10193973700B307F7000327810069 -:101E500023A0E70017870300130707A68327C10104 -:101E600093973700B307F7000327C10023A2E700C9 -:101E70006F00C0018327C10193871700232EF10053 -:101E80000327C10193077000E3FAE7F8130000008D -:101E90001301010267800000130101FE2326A10047 -:101EA000232E01006F00C004178703001307C7A08B -:101EB0008327C10193973700B307F70083A7470033 -:101EC0000327C1006310F702178703001307C79E9B -:101ED0008327C10193973700B307F70023A00700BA -:101EE0006F00C0018327C10193871700232EF100E3 -:101EF0000327C10193077000E3F8E7FA130000001D -:101F00001301010267800000130101FD2326110265 -:101F10002326A1002324B1002322C1008327C1006E -:101F2000232EF100EF20C0788327C10103A74704C7 -:101F30009307F0FF6316F7008327C10123A207046C -:101F40008327C10103A787049307F0FF6316F700F7 -:101F50008327C10123A40704EF2080798327C101CF -:101F600083A78703639E07008327C10193874702E6 -:101F7000032641008325810013850700EF10007FB1 -:101F80000325C101EFF09FC7130000008320C102A9 -:101F90001301010367800000130101FC232E1102CD -:101FA000232EA100232CB1002328D1002326E100F9 -:101FB0002324F100232201012320110193070600AD -:101FC000231BF1008327C10163960700737004305F -:101FD0006F0000000327C1009307400063F6E7008D -:101FE000737004306F000000835761018325410046 -:101FF00013850700EF10D07E2324A10283278102DE -:102000006386071C8327810203A7070383566101A8 -:10201000B70700409387F7FFB387F6009397270031 -:10202000B307F7002322F1028327410293F7C7FF8A -:102030002322F1028327410293F7370063860700CA -:10204000737004306F00000083576101138707002D -:10205000832601000326C100832581010325810217 -:10206000EF105041032601018325C10103254102E0 -:10207000EFE00FF3130705008327810223A0E70099 -:10208000832781006388070083278100032781025B -:1020900023A0E700EF20C06197E7010093878767DF -:1020A00083A707001387170097E7010093878766C8 -:1020B00023A0E70097E701009387074D83A7070058 -:1020C0006398070297E701009387074C0327810273 -:1020D00023A0E70097E701009387C76303A70700E2 -:1020E000930710006312F704EF10904B6F00C003CA -:1020F00097E701009387C76283A7070063960702EB -:1021000097E701009387474883A7070083A7C70283 -:102110000327C100636AF70097E701009387C7466A -:102120000327810223A0E70097E701009387476018 -:1021300083A707001387170097E701009387475F7E -:1021400023A0E70097E701009387875E03A70700B6 -:102150008327810223A4E7048327810203A7C70200 -:1021600097E701009387875B83A7070063FCE7007D -:102170008327810203A7C70297E701009387075AC5 -:1021800023A0E7008327810203A7C7029307070064 -:1021900093972700B387E7009397270017E701007D -:1021A0001307074A3387E700832781029387470095 -:1021B0009385070013050700EFE00FF19307100068 -:1021C0002326F102EF20C0526F00C0009307F0FFFA -:1021D0002326F1020327C102930710006318F702B8 -:1021E00097E701009387C75383A70700638007021F -:1021F00097E701009387473983A7070083A7C702A2 -:102200000327C10063F4E700EFE08FB88327C10222 -:10221000138507008320C1031301010467800000B8 -:10222000130101FD232611022326A100EF204048BF -:102230008327C100639A070097E701009387C7349B -:1022400083A707006F0080008327C100232EF100C1 -:102250008327C1019387470013850700EFE00FFB39 -:102260008327C10183A78702638A07008327C101EF -:102270009387870113850700EFE04FF98327C1019A -:10228000938747009385070017E501001305C545AF -:10229000EFE08FE397E701009387474683A70700A6 -:1022A0001387170097E701009387474523A0E700AE -:1022B00097E701009387C74783A707001387170095 -:1022C00097E701009387C74623A0E700EF2040422D -:1022D00097E701009387C74483A707006382070439 -:1022E00097E701009387472A83A707000327C101C7 -:1022F0006312F70297E701009387074483A707005B -:1023000063860700737004306F000000EFE04FA891 -:102310006F000001EF20C039EF208001EF20403D29 -:10232000130000008320C102130101036780000035 -:10233000130101FD232611022326A1002324B1004D -:10234000232E01008327C1006396070073700430B9 -:102350006F000000832781006396070073700430CC -:102360006F00000097E701009387073D83A70700F0 -:1023700063860700737004306F000000EF00101DCB -:1023800097E701009387473983A70700232CF100C3 -:102390008327C10083A7070003278100B307F70045 -:1023A000232AF1008327C10083A7070003278101A7 -:1023B0006376F7028327C10083A707000327410143 -:1023C0006370F704032741018327810163FAE70261 -:1023D00093071000232EF1006F0080028327C100B5 -:1023E00083A70700032741016368F7000327410122 -:1023F0008327810163F6E70093071000232EF10085 -:102400008327C1000327410123A0E7008327C101DF -:102410006382070297E701009387071783A70700E6 -:102420009387470013850700EFE04FDE0325410146 -:10243000EF10502FEF00D0132328A10083270101B4 -:1024400063940700EFE0CF94130000008320C102E3 -:102450001301010367800000130101FD232611020F -:102460002326A100232E01008327C10063800706D5 -:1024700097E701009387472C83A70700638607002F -:10248000737004306F000000EF00500C97E70100FC -:102490009387872883A707000327C100B307F700A6 -:1024A000232CF10097E701009387070E83A707000D -:1024B0009387470013850700EFE04FD5032581017F -:1024C000EF105026EF00D00A232EA1008327C10170 -:1024D00063940700EFE0CF8B130000008320C1025C -:1024E0001301010367800000130101FD232611027F -:1024F0002326A1008327C100232CF100832781011B -:1025000063960700737004306F00000097E70100C6 -:102510009387870783A70700032781016316F700C6 -:10252000232E01006F00400AEF20801883278101CD -:1025300083A74701232AF100EF20801B97E70100C2 -:102540009387C71883A7070003274101630CF7008F -:1025500097E701009387C71783A707000327410167 -:102560006318F70093072000232EF1006F00C005C9 -:102570000327410197E70100938787186314F70247 -:102580008327810183A787026398070093073000A0 -:10259000232EF1006F00400393072000232EF1004B -:1025A0006F0080020327410197E701009387C7135B -:1025B0006318F70093074000232EF1006F00C0005E -:1025C00093071000232EF1008327C1011385070014 -:1025D0008320C1021301010367800000130101FD84 -:1025E000232611022326A100EF20800C8327C1009F -:1025F000639A070097E70100938707F983A707000D -:102600006F0080008327C100232EF1008327C101C2 -:1026100083A7C702232CF100EF20800D83278101BF -:10262000138507008320C1021301010367800000A6 -:10263000130101FD232611022326A100EFE04F9490 -:1026400093070500232EF1008327C100639A07003A -:1026500097E70100938747F383A707006F00800087 -:102660008327C100232CF1008327810183A7C702A0 -:10267000232AF1008327C10113850700EFE08F8E25 -:1026800083274101138507008320C1021301010341 -:1026900067800000130101FD232611022326A100FB -:1026A0002324B100232E010003278100930740005B -:1026B00063F6E700737004306F00000003278100A9 -:1026C0009307400063F6E700930740002324F100DE -:1026D000EF10107E8327C100639A070097E701007F -:1026E000938787EA83A707006F0080008327C100D4 -:1026F000232CF1008327810183A70705232AF100FA -:102700000327410183278100630EF7160327810009 -:102710008327410163FEE70297E701009387C7E63D -:1027200083A70700032781016302F70497E70100ED -:10273000938787E583A7070083A7C7020327810044 -:102740006366F70293071000232EF1006F0000026A -:1027500097E70100938747E383A7070003278101D9 -:102760006316F70093071000232EF10083278101E1 -:1027700083A7C7022328F1008327810103A7070548 -:102780008327810183A7C7026318F700832781018C -:102790000327810023A6E702832781010327810005 -:1027A00023A8E7048327810183A7870163CC07005F -:1027B00013075000832781003307F74083278101E7 -:1027C00023ACE7008327810183A64701032701018A -:1027D0009307070093972700B387E7009397270095 -:1027E00017E701001307C7E5B387E7006396F60014 -:1027F000930710006F00800093070000638C0706AA -:10280000832781019387470013850700EFE00FA01E -:102810008327810103A7C70297E70100938707F089 -:1028200083A7070063FCE7008327810103A7C70292 -:1028300097E70100938787EE23A0E70083278101B4 -:1028400003A7C7029307070093972700B387E70002 -:102850009397270017E70100130787DE3387E70008 -:10286000832781019387470093850700130507009D -:10287000EFE08F850327C101930710006314F70071 -:10288000EFD01FD1EF10D066130000008320C102EB -:102890001301010367800000130101FD23261102CB -:1028A0002326A100EF10D0608327C100639A0700A0 -:1028B00097E70100938747CD83A707006F0080004B -:1028C0008327C100232EF1008327C101938747008E -:1028D00013850700EFE08F938327C10183A7870249 -:1028E000638A07008327C101938787011385070047 -:1028F000EFE0CF918327C1019387470093850700BD -:1029000017E501001305C5DFEFD01FFCEF10505E87 -:1029100097E70100938747C783A707000327C101F3 -:102920006314F70697E70100938787DF83A7070003 -:102930006382070297E70100938707E083A70700F8 -:1029400063860700737004306F000000EFD05FC42F -:102950006F00400597E70100938787DA03A7070018 -:1029600097E70100938707DB83A70700631AF70047 -:1029700097E70100938747C123A007006F008002FB -:10298000EF0090286F00000297E70100938747D976 -:1029900083A7070063880700EF109051EF105019CC -:1029A000EF101055130000008320C1021301010332 -:1029B00067800000130101FE2326A100232E0100E1 -:1029C0008327C100232CF1008327C10063960700F1 -:1029D000737004306F0000008327810103A7470153 -:1029E00097E701009387C7D16316F700930710009C -:1029F0006F00800093070000638E07028327810128 -:102A000003A7870297E701009387C7CC6304F70207 -:102A10008327810183A7870263960700930710002D -:102A20006F00800093070000638607009307100083 -:102A3000232EF1008327C101138507001301010232 -:102A400067800000130101FD232611022326A10047 -:102A50008327C100232EF1008327C100639607005E -:102A6000737004306F0000008327C1016384070C7A -:102A700097E70100938747B183A707000327C101A8 -:102A8000630AF70AEF10D0420325C101EFF09FF26D -:102A90001307050093071000631CF7088327C10183 -:102AA0009387470013850700EFD05FF68327C101A6 -:102AB00003A7C70297E70100938747C683A70700CC -:102AC00063FCE7008327C10103A7C70297E7010062 -:102AD0009387C7C423A0E7008327C10103A7C702C8 -:102AE0009307070093972700B387E7009397270082 -:102AF00017E701001307C7B43387E7008327C10135 -:102B0000938747009385070013050700EFD0DFDBAD -:102B10008327C10103A7C70297E701009387C7A6D0 -:102B200083A7070083A7C7026364F700EFD05FA6FF -:102B3000EF10103C130000008320C10213010103B9 -:102B400067800000130101FD232611022326A10046 -:102B5000232E01008327C100232CF1008327C1000D -:102B600063960700737004306F000000EFD05FC100 -:102B700093070500232AF10003258101EFF09FE36D -:102B800013070500930710006314F70C97E7010083 -:102B9000938787BA83A707006390070A8327810179 -:102BA00003A7C70297E701009387079E83A7070043 -:102BB00083A7C7026366F70093071000232EF10076 -:102BC000832781019387470013850700EFD01FE417 -:102BD0008327810103A7C70297E70100938707B402 -:102BE00083A7070063FCE7008327810103A7C702CF -:102BF00097E70100938787B223A0E700832781012D -:102C000003A7C7029307070093972700B387E7003E -:102C10009397270017E70100130787A23387E70080 -:102C200083278101938747009385070013050700D9 -:102C3000EFD09FC96F00C00183278101938787016F -:102C40009385070017E501001305C5A8EFD0DFC77E -:102C50008327410113850700EFD0DFB08327C1012F -:102C6000138507008320C102130101036780000060 -:102C7000130101FE232E1100930800001308000029 -:102C8000930700001307000093060000130600409E -:102C900097D501009385053717150000130505FB2F -:102CA000EFF08FAF2326A1000327C1009307100088 -:102CB0006316F700EF20C03A2326A1000327C100C6 -:102CC00093071000631EF7027370043097E701004A -:102CD000938747A61307F0FF23A0E70097E70100BB -:102CE000938707A41307100023A0E70097E70100CC -:102CF000938787A223A00700EFD0CFEE6F0040019B -:102D00008327C10063960700737004306F000000D2 -:102D1000130000008320C10113010102678000003D -:102D2000130101FF232611007370043097E701009F -:102D30009387079F23A00700EFD00FFD130000002B -:102D40008320C100130101016780000097E70100A3 -:102D50009387879E83A707001387170097E70100D3 -:102D60009387879D23A0E700130000006780000081 -:102D7000130101FE232E11002326010097E7010015 -:102D80009387879B83A707006396070073700430BF -:102D90006F000000EF10D01197E701009387C799EB -:102DA00083A707001387F7FF97E701009387C7986A -:102DB00023A0E70097E701009387079883A7070000 -:102DC0006394071697E701009387C79483A70700CA -:102DD000638C07146F00800C97E701009387878F3F -:102DE00083A7C70083A7C7002324F100832781009E -:102DF0009387870113850700EFD05FC18327810088 -:102E00009387470013850700EFD05FC083278100B9 -:102E100003A7C70297E701009387479083A707009E -:102E200063FCE7008327810003A7C70297E701003F -:102E30009387C78E23A0E7008327810003A7C702DB -:102E40009307070093972700B387E700939727001E -:102E500017D701001307C77E3387E7008327810058 -:102E6000938747009385070013050700EFD0DFA580 -:102E70008327810003A7C70297D701009387C770F4 -:102E800083A7070083A7C702636AF70097E70100DB -:102E9000938787891307100023A0E70097E70100B5 -:102EA0009387478383A70700E39807F297E701001A -:102EB0009387478783A70700638807046F00C003D1 -:102EC000EF00002B93070500638A070097E70100D6 -:102ED000938787851307100023A0E70097E7010079 -:102EE0009387478483A707001387F7FF97E70100BD -:102EF0009387478323A0E70097E7010093878782A2 -:102F000083A70700E39E07FA97E701009387C7812D -:102F100003A70700930710006318F700930710003A -:102F20002326F100EFD0CFE6EF10807C8327C1008D -:102F3000138507008320C10113010102678000008F -:102F4000130101FE232E1100EF10807697D70100A8 -:102F50009387877C83A707002326F100EF10407931 -:102F60008327C100138507008320C10113010102DB -:102F700067800000130101FE232E1100EFD05F8057 -:102F8000930705002326F10097D701009387C778A0 -:102F900083A707002324F1008327C10013850700BE -:102FA000EFD04FFC83278100138507008320C101E8 -:102FB000130101026780000097D70100938787758E -:102FC00083A707001385070067800000130101FD38 -:102FD000232611022326A1002324B1002322C100AD -:102FE000232E010093075000232CF100EFF01FD691 -:102FF00097D701009387077283A7070003278100F3 -:10300000636CF714832781019387F7FF232CF1006A -:103010008327C101939757000327C100B306F70028 -:10302000032781019307070093972700B387E700E1 -:103030009397270017D7010013078760B387E7002E -:10304000130610009385070013850600EF10800417 -:10305000130705008327C101B387E700232EF10082 -:1030600083278101E39007FA8327C10193975700D3 -:103070000327C1003307F70097D70100938707653F -:1030800083A7070013062000938507001305070098 -:10309000EF104000130705008327C101B387E70045 -:1030A000232EF1008327C101939757000327C10006 -:1030B0003307F70097D701009387876183A707003D -:1030C000130620009385070013050700EF00907C8E -:1030D000130705008327C101B387E700232EF10002 -:1030E0008327C101939757000327C100B307F70057 -:1030F0001306400097D501009385055F13850700EF -:10310000EF005079130705008327C101B387E7005B -:10311000232EF1008327C101939757000327C10095 -:10312000B307F7001306300097D501009385455D7E -:1031300013850700EF001076130705008327C101F0 -:10314000B387E700232EF100832741006386070041 -:103150008327410023A00700EFF09FC18327C1010F -:10316000138507008320C10213010103678000005B -:10317000130101FD23261102232E010097D7010020 -:103180009387875B83A70700639C072297D701007B -:103190009387875883A707001387170097D70100E5 -:1031A0009387875723A0E70097D701009387C756D7 -:1031B00083A70700232CF10083278101639C070666 -:1031C00097D701009387875083A7070083A707003D -:1031D00063860700737004306F00000097D701000A -:1031E0009387C74E83A70700232AF10097D70100D2 -:1031F0009387074E03A7070097D701009387074DD2 -:1032000023A0E70097D701009387874C032741014C -:1032100023A0E70097D701009387475183A70700B2 -:103220001387170097D701009387475023A0E70023 -:10323000EF10001097D701009387C74F83A70700AF -:1032400003278101636CF71297D701009387074822 -:1032500083A7070083A70700639607009307100062 -:103260006F00800093070000638C070097D7010070 -:103270009387474C1307F0FF23A0E7006F0000106F -:1032800097D701009387874483A7070083A7C700C8 -:1032900083A7C7002328F1008327010183A74700E4 -:1032A0002326F100032781018327C100637CF700F7 -:1032B00097D70100938707480327C10023A0E700A1 -:1032C0006F00C00B83270101938747001385070018 -:1032D000EFD0CFF38327010183A78702638A07001A -:1032E000832701019387870113850700EFD00FF231 -:1032F0008327010103A7C70297D7010093870742DD -:1033000083A7070063FCE7008327010103A7C70227 -:1033100097D701009387874023A0E7008327010107 -:1033200003A7C7029307070093972700B387E70017 -:103330009397270017D70100130787303387E700DB -:103340008327010193874700938507001305070032 -:10335000EFD08FD78327010103A7C70297D70100BA -:103360009387872283A7070083A7C702E36EF7EC42 -:1033700093071000232EF1006FF01FED97D7010087 -:103380009387872083A7070003A7C70297D601006A -:103390009386062B9307070093972700B387E700D0 -:1033A00093972700B387F60003A707009307100041 -:1033B00063F6E70293071000232EF1006F0000026E -:1033C00097D701009387073683A707001387170055 -:1033D00097D701009387073523A0E70097D701000F -:1033E0009387873483A7070063860700930710003D -:1033F000232EF1008327C101138507008320C1021A -:103400001301010367800000130101FE232E110048 -:1034100097D701009387473283A70700638C070083 -:1034200097D70100938747301307100023A0E700C8 -:103430006F00C01897D701009387072F23A00700BC -:1034400097D701009387471483A7070083A7070333 -:103450002326F100B7A7A5A59387575A2324F10087 -:103460008327C10083A70700032781006310F704A7 -:103470008327C1009387470083A7070003278100A4 -:103480006316F7028327C1009387870083A707008D -:1034900003278100631CF7008327C1009387C700BF -:1034A00083A70700032781006302F70697D701006F -:1034B0009387870D03A7070097D701009387C70C51 -:1034C00083A7070093874703938507001305070029 -:1034D000EF40C00E6F00800397D701009387072449 -:1034E00083A7070063960700737004306F00000025 -:1034F00097D701009387872283A707001387F7FFD9 -:1035000097D701009387872123A0E70097D7010071 -:103510009387C72003A7070097D60100938646121A -:103520009307070093972700B387E7009397270037 -:10353000B387F60083A70700E38007FA97D7010057 -:103540009387C71D03A707009307070093972700DA -:10355000B387E7009397270017D701001307470E9B -:10356000B387E7002322F1008327410083A74700A8 -:1035700003A747008327410023A2E70083274100D8 -:1035800003A747008327410093878700631CF70048 -:103590008327410083A7470003A7470083274100F3 -:1035A00023A2E7008327410083A7470003A7C700A2 -:1035B00097D70100938747FD23A0E7001300000081 -:1035C0008320C1011301010267800000130101FD86 -:1035D000232611022326A1002324B1008327C10042 -:1035E00063960700737004306F00000097D70100E6 -:1035F000938787F983A7070093878701938507003F -:103600000325C100EFD00FB497D701009387C7F708 -:1036100083A707009387470013850700EFD00FBFEC -:10362000032781009307F0FF6314F70297D7010087 -:10363000938787F583A70700938747009385070043 -:1036400017D501001305C50BEFD00FA86F0040027E -:1036500097D701009387470C83A7070003278100B2 -:10366000B307F700232EF1000325C101EF00900BF3 -:10367000130000008320C1021301010367800000D2 -:10368000130101FD232611022326A1002324B100EA -:103690002322C1008327C1006396070073700430A2 -:1036A0006F00000097D701009387070983A70700E1 -:1036B00063960700737004306F00000097D7010015 -:1036C000938787EC83A70700832681003707008054 -:1036D00033E7E60023ACE70097D701009387C7EAFA -:1036E00083A7070093878701938507000325C100FF -:1036F000EFD08F9D97D70100938707E983A7070035 -:103700009387470013850700EFD04FB00327410090 -:103710009307F0FF6314F70297D701009387C7E67A -:1037200083A70700938747009385070017D50100FB -:10373000130505FDEFD04F996F00400297D70100A8 -:10374000938787FD83A7070003274100B307F7008E -:10375000232EF1000325C101EF00C07C13000000FF -:103760008320C1021301010367800000130101FDE2 -:10377000232611022326A1002324B1002322C10005 -:103780008327C10063960700737004306F00000048 -:1037900097D70100938747DF83A7070093878701A7 -:1037A000938507000325C100EFD00F9297D7010042 -:1037B000938787DD83A7070093874700138507005A -:1037C000EFD0CFA403274100930710006314F70242 -:1037D00097D70100938747DB83A7070093874700AC -:1037E0009385070017D50100130585F1EFD0CF8D24 -:1037F0006F00400297D70100938707F283A7070065 -:1038000003278100B307F700232EF1000325C10130 -:10381000EF004071130000008320C1021301010377 -:1038200067800000130101FD232611022326A10059 -:103830008327C10083A7C70083A7C700232CF100FB -:103840008327810163960700737004306F000000C6 -:10385000832781019387870113850700EFD00F9B92 -:1038600097D70100938747ED83A70700639E07065C -:10387000832781019387470013850700EFD00F99B5 -:103880008327810103A7C70297D70100938707E920 -:1038900083A7070063FCE7008327810103A7C70212 -:1038A00097D70100938787E723A0E700832781014B -:1038B00003A7C7029307070093972700B387E70082 -:1038C0009397270017D70100130787D73387E7009F -:1038D000832781019387470093850700130507001D -:1038E000EFC09FFE6F00C00183278101938787018E -:1038F0009385070017D501001305C5DDEFC0DFFC78 -:103900008327810103A7C70297D701009387C7C701 -:1039100083A7070083A7C70263F0E702930710009D -:10392000232EF10097D70100938707E013071000BB -:1039300023A0E7006F008000232E01008327C10130 -:10394000138507008320C102130101036780000073 -:10395000130101FD232611022326A1002324B10017 -:1039600097D70100938747DD83A707006396070079 -:10397000737004306F00000003278100B7070080D8 -:103980003367F7008327C10023A0E7008327C10026 -:1039900083A7C700232CF1008327810163960700CA -:1039A000737004306F0000000325C100EFD00F8654 -:1039B000832781019387470013850700EFD00F8588 -:1039C0008327810103A7C70297D70100938707D5F3 -:1039D00083A7070063FCE7008327810103A7C702D1 -:1039E00097D70100938787D323A0E700832781011E -:1039F00003A7C7029307070093972700B387E70041 -:103A00009397270017D70100130787C33387E70071 -:103A100083278101938747009385070013050700DB -:103A2000EFC09FEA8327810103A7C70297D7010050 -:103A3000938787B583A7070083A7C70263F0E702D0 -:103A400093071000232EF10097D701009387C7CD6D -:103A50001307100023A0E7006F008000232E010051 -:103A60008327C101138507008320C10213010103CD -:103A700067800000130101FF2326A1008327C100F6 -:103A800063960700737004306F00000097D7010041 -:103A90009387C7C903A707008327C10023A0E700B6 -:103AA00097D70100938747C703A707008327C10063 -:103AB00023A2E7001300000013010101678000004A -:103AC000130101FD232611022326A1002324B100A6 -:103AD0008327C10063960700737004306F000000F5 -:103AE0008327810063960700737004306F00000025 -:103AF000EF00103C97D70100938707C283A7070008 -:103B0000232CF1008327810003A707009307F0FF10 -:103B10006316F700232E01006F0000098327C10000 -:103B200003A7070097D70100938747C083A7070023 -:103B30006300F7028327C10083A7470003278101A1 -:103B40006368F70093071000232EF1006F00C00593 -:103B50008327C10083A74700032781013307F7406C -:103B60008327810083A70700637CF70283278100F6 -:103B700003A707008327C10083A64700832781018D -:103B8000B387F6403307F7008327810023A0E700BF -:103B90000325C100EFF01FEE232E01006F00C000CF -:103BA00093071000232EF100EF0090348327C1010A -:103BB000138507008320C102130101036780000001 -:103BC00097D70100938747B61307100023A0E7009B -:103BD0001300000067800000130101FE2326A100EE -:103BE0008327C100638E07008327C100232CF100C7 -:103BF0008327810183A7C704232EF1006F00800073 -:103C0000232E01008327C101138507001301010240 -:103C100067800000130101FE2326A1002324B100C8 -:103C20008327C100638C07008327C100232EF10086 -:103C30008327C1010327810023A6E70413000000A6 -:103C40001301010267800000130101FE232E110001 -:103C50002326A100EF00002197D701009387479EFC -:103C600003A7070093071000E3F6E7FEEFC05F929B -:103C70006FF05FFE130101FC232E1102232EA10021 -:103C8000232CB100232AC1002328D1009307070069 -:103C90002317F100232601026F004004032781014E -:103CA0008327C102B307F70003C707008326C101BA -:103CB0008327C102B387F600238AE7020327810125 -:103CC0008327C102B307F70083C707006380070299 -:103CD0008327C102938717002326F1020327C1021D -:103CE0009307F000E3FCE7FA6F0080001300000088 -:103CF0008327C101A38107040327410193074000E3 -:103D000063F6E70093074000232AF1008327C101EF -:103D10000327410123A6E7028327C10103274101AD -:103D200023A8E7048327C10123AA07048327C1012D -:103D30009387470013850700EFC05FB78327C10152 -:103D40009387870113850700EFC05FB68327C10102 -:103D50000327C10123A8E70013075000832741016F -:103D60003307F7408327C10123ACE7008327C10154 -:103D70000327C10123A2E7028327C10123A207046D -:103D80008327C10123AC07048327C10123AE0704A5 -:103D9000130000008320C1031301010467800000A9 -:103DA000130101FE232E1100232601006F00800362 -:103DB0000327C1009307070093972700B387E70005 -:103DC0009397270017D7010013078787B387E7006A -:103DD00013850700EFC01FA88327C1009387170032 -:103DE0002326F1000327C10093074000E3F2E7FC1C -:103DF00017D501001305058BEFC0DFA517D501000E -:103E00001305858BEFC01FA517D501001305858C01 -:103E1000EFC05FA417D501001305058DEFC09FA368 -:103E200017D501001305C58DEFC0DFA297D701009C -:103E30009387C78917D701001307C78623A0E70018 -:103E400097D701009387C78817D701001307C78644 -:103E500023A0E700130000008320C1011301010229 -:103E600067800000130101FE232E11006F008009FE -:103E7000EFE0DFED97D701009387078783A707005F -:103E800093B7170093F7F70F2326F100EFE05FEEEB -:103E90008327C10063980706EF00900197D70100C0 -:103EA0009387878483A7C70083A7C7002324F100D3 -:103EB000832781009387470013850700EFC01FB554 -:103EC00097D701009387078583A707001387F7FF1C -:103ED00097D701009387078423A0E70097D70100B5 -:103EE0009387C78183A707001387F7FF97D7010040 -:103EF0009387C78023A0E700EF00807F0325810020 -:103F0000EF00C03F97C701009387477F83A7070053 -:103F1000E39007F6130000008320C10113010102A2 -:103F200067800000130101FE232E11002326A1004B -:103F300097C701009387476583A707000327C10040 -:103F400023A2E70097C701009387077D83A7070097 -:103F50000327C1006378F70297C70100938747776B -:103F600003A7070097C701009387076283A707008D -:103F7000938747009385070013050700EFC09F9CB8 -:103F80006F00000597C701009387477403A70700D8 -:103F900097C701009387475F83A707009387470070 -:103FA0009385070013050700EFC0DF9997C701004D -:103FB0009387477883A707000327C100637AF70038 -:103FC00097C70100938707770327C10023A0E70065 -:103FD000130000008320C10113010102678000006B -:103FE000130101FD23261102930705002324B100CC -:103FF0002317F10083278100639E07008357E100A8 -:104000009397270013850700EF20C02E9307050024 -:104010006F00800083278100232CF100832781011A -:10402000638A070213050006EF20C02C232EA1008F -:104030008327C101638A07008327C1010327810108 -:1040400023A8E7026F00400103258101EF20404AC9 -:104050006F008000232E01008327C10163820702C5 -:104060008327C10103A707038357E1009397270024 -:10407000138607009305500A13050700EF20006A16 -:104080008327C101138507008320C10213010103A7 -:1040900067800000130101FC232E1102232C8102F2 -:1040A0002326A1002324B1002322C10023260102DC -:1040B0008327810083A707006388071C832781006B -:1040C0002324F1028327810283A7470003A7470027 -:1040D0008327810223A2E7008327810203A74700E9 -:1040E0008327810293878700631CF700832781025F -:1040F00083A7470003A747008327810223A2E70085 -:104100008327810283A7470083A7C7002322F102E8 -:10411000832781002320F1028327010283A7470020 -:1041200003A747008327010223A2E7008327010298 -:1041300003A747008327010293878700631CF700CA -:104140008327010283A7470003A7470083270102B3 -:1041500023A2E7008327010283A7470083A7C700A4 -:10416000232EF1008327C102939757000327C10034 -:10417000B307F7000327C10123A0E7008327C1028B -:10418000939757000327C100B307F7000327C10126 -:104190001307470323A2E7008327C1029397570021 -:1041A0000327C100B307F7000327C10103278704D2 -:1041B00023A4E7008327C102939757000327C10078 -:1041C000B307F7000327410023A6E7008327C102B6 -:1041D000939757000327C100B307F7000327C101D6 -:1041E0000327C70223A8E7000327410093073000F5 -:1041F0006314F7028327C10183A78702638E070038 -:104200008327C102939757000327C100B307F70024 -:104210001307200023A6E7008327C10293975700C6 -:104220000327C100B307F7000327C10103270705D0 -:1042300023AAE7008327C102939757000327C100F1 -:10424000B307F70023AC07008327C10183A6070348 -:104250008327C102939757000327C1003304F70057 -:1042600013850600EF00C00393070500231EF4002A -:104270008327C102938717002326F1020327C10178 -:1042800083274102E316F7E88327C102138507005D -:104290008320C1030324810313010104678000000C -:1042A000130101FE2326A100232E01006F00C0018F -:1042B0008327C100938717002326F1008327C101BC -:1042C00093871700232EF1008327C10003C707003F -:1042D0009307500AE30EF7FC8327C10193D7270009 -:1042E000232EF1008327C1019397070193D707017C -:1042F000138507001301010267800000130101FE0E -:10430000232E11002326A1008327C10083A70703C2 -:1043100013850700EF20C01D0325C100EF20401DBD -:10432000130000008320C101130101026780000017 -:10433000130101FF97C701009387473983A707003F -:1043400083A7070063960700930710006F008000A3 -:1043500093070000638C070097C701009387873D90 -:104360001307F0FF23A0E7006F00000397C70100C9 -:104370009387C73583A7070083A7C70083A7C70014 -:104380002326F1008327C10003A7470097C7010038 -:104390009387473A23A0E7001300000013010101AF -:1043A00067800000130101FF97C701009387C71DB5 -:1043B00083A707002326F1008327C1001385070088 -:1043C0001301010167800000130101FF97C701007D -:1043D0009387073583A707006398070093071000AA -:1043E0002326F1006F00400297C701009387C7346E -:1043F00083A7070063980700930720002326F10096 -:104400006F008000232601008327C1001385070069 -:104410001301010167800000130101FD2326110231 -:104420002326A1008327C100232EF1008327C1008A -:10443000638A07128327C10103A7C70297C7010038 -:104440009387871483A7070083A7C702637CF710AD -:104450008327C10183A7870163C2070297C70100B1 -:104460009387871283A7070083A7C702130750000B -:104470003307F7408327C10123ACE7008327C1013D -:1044800083A647018327C10103A7C702930707003B -:1044900093972700B387E7009397270017C701007A -:1044A0001307071AB387E7006396F6009307100017 -:1044B0006F00800093070000638A07088327C1010B -:1044C0009387470013850700EFC04FD497C70100BB -:1044D0009387870B83A7070003A7C7028327C10120 -:1044E00023A6E7028327C10103A7C70297C70100DC -:1044F0009387C72283A7070063FCE7008327C101D6 -:1045000003A7C70297C701009387472123A0E700AD -:104510008327C10103A7C7029307070093972700CA -:10452000B387E7009397270017C7010013074711C8 -:104530003387E7008327C1019387470093850700EE -:1045400013050700EFC04FB86F00C00197C7010007 -:104550009387870383A7070003A7C7028327C101A7 -:1045600023A6E702130000008320C1021301010308 -:1045700067800000130101FD232611022326A100FC -:104580008327C100232CF100232E01008327C100C3 -:104590006386071097C70100938707FF83A707006B -:1045A000032781016306F700737004306F00000079 -:1045B0008327810183A74705639607007370043042 -:1045C0006F0000008327810183A747051387F7FF4A -:1045D0008327810123AAE7048327810103A7C70258 -:1045E0008327810183A70705630AF70A83278101CF -:1045F00083A747056394070A8327810193874700B0 -:1046000013850700EFC08FC08327810103A707052B -:104610008327810123A6E7028327810183A7C7029D -:10462000130750003307F7408327810123ACE700CD -:104630008327810103A7C70297C701009387070E4D -:1046400083A7070063FCE7008327810103A7C70254 -:1046500097C701009387870C23A0E7008327810178 -:1046600003A7C7029307070093972700B387E700C4 -:104670009397270017C70100130787FC3387E700CC -:10468000832781019387470093850700130507005F -:10469000EFC08FA393071000232EF1008327C101E1 -:1046A000138507008320C102130101036780000006 -:1046B0007370043097C701009387870683A70700AC -:1046C0006384070297C70100938707EC83A707005D -:1046D00003A747041307170023A2E70497C70100A5 -:1046E000938787EA83A70700130000006780000014 -:1046F00097C701009387C70283A707006384070455 -:1047000097C70100938747E883A7070083A747045B -:10471000638A070297C70100938707E783A707000B -:1047200003A747041307F7FF23A2E70497C7010075 -:10473000938787E583A7070083A74704639407004F -:10474000736004301300000067800000130101FF54 -:1047500097C70100938747E383A7070083A78701D3 -:104760002326F10097C70100938707E283A707007C -:1047700003A7C70297C70100938707E183A7070034 -:10478000930650003387E64023ACE7008327C1003F -:1047900013850700130101016780000097C701001E -:1047A000938787DE83A70700638E070097C7010002 -:1047B000938787DD83A7070003A747051307170023 -:1047C00023AAE70497C70100938707DC83A70700A4 -:1047D0001385070067800000130101FD23261102E5 -:1047E0002326A1002324B100EFF09FEC97C701001E -:1047F000938787D983A7070083A787056396070850 -:1048000097C70100938747D883A7070013071000B5 -:1048100023AEE704832781006388070697C701005A -:10482000938787D683A707009387470013850700E0 -:10483000EFC0CF9D032781009307F0FF6314F702B9 -:1048400097C70100938747D483A707009387470042 -:104850009385070017C50100130585EAEFC0CF86D1 -:104860006F00400297C70100938707EB83A70700FB -:1048700003278100B307F700232EF1000325C101B0 -:10488000EFF04FEAEFB0DFD0EFF09FE6EFF05FE23E -:1048900097C70100938747CF83A7070083A78705A2 -:1048A000232CF10083278101638C07028327C10039 -:1048B000638C070097C70100938707CD83A7070084 -:1048C00023AC07046F00C00197C701009387C7CBD3 -:1048D00083A7070003A787051307F7FF23ACE704A7 -:1048E00097C70100938747CA83A7070023AE070431 -:1048F000EFF01FE083278101138507008320C102A9 -:104900001301010367800000130101FD232611023A -:104910002326A1002324B1002322C1002320D1009B -:10492000EFF01FD997C70100938707C683A7070039 -:1049300003A7C705930720006306F70A97C701007E -:10494000938787C483A7070083A687050327C10031 -:104950001347F7FF33F7E60023ACE70497C70100DE -:10496000938787C283A707001307100023AEE704CD -:10497000832701006388070697C701009387C7C094 -:1049800083A707009387470013850700EFC00F88B0 -:10499000032701009307F0FF6314F70297C7010094 -:1049A000938787BE83A707009387470093850700F7 -:1049B00017C501001305C5D4EFB01FF16F00400209 -:1049C00097C70100938747D583A7070003270100F6 -:1049D000B307F700232CF10003258101EFF08FD4FA -:1049E000EFB01FBBEFF0DFD0EFF09FCC832741008B -:1049F000638E070097C70100938707B983A7070055 -:104A000003A787058327410023A0E70097C701007C -:104A1000938787B783A7070003A7C70593071000ED -:104A20006316F700232E01006F00C00297C7010034 -:104A3000938787B583A7070083A68705032781008F -:104A40001347F7FF33F7E60023ACE70493071000A2 -:104A5000232EF10097C70100938707B383A70700B0 -:104A600023AE0704EFF0DFC88327C10113850700D9 -:104A70008320C1021301010367800000130101FDBF -:104A8000232611022326A1002324B1002322C100E2 -:104A90002320D10093071000232EF1008327C100AB -:104AA00063960700737004306F0000008327C10015 -:104AB000232CF100EFF0DFBF83270100638A07009A -:104AC0008327810103A787058327010023A0E7002F -:104AD0008327810183A7C705232AF100832781014A -:104AE0001307200023AEE70403274100930740008B -:104AF00063ECE708832741001397270097B701006D -:104B00009387C750B307F70003A7070097B70100C3 -:104B10009387C74FB307F70067800700832781019A -:104B200003A78705832781003367F7008327810167 -:104B300023ACE7046F0040058327810183A7870525 -:104B4000138717008327810123ACE7046F00C0039C -:104B5000832781010327810023ACE7046F00C00293 -:104B60000327410193072000630AF700832781018F -:104B70000327810023ACE7046F000001232E01000E -:104B80006F0080001300000003274101930710000D -:104B90006316F70A8327810193874700138507006F -:104BA000EFB0DFE68327810103A7C70297C70100A3 -:104BB0009387C7B683A7070063FCE70083278101BB -:104BC00003A7C70297C70100938747B523A0E70053 -:104BD0008327810103A7C702930707009397270044 -:104BE000B387E7009397270017C70100130747A56E -:104BF0003387E70083278101938747009385070068 -:104C000013050700EFB05FCC8327810183A78702DC -:104C100063860700737004306F00000083278101F2 -:104C200003A7C70297C701009387079683A70700CA -:104C300083A7C70263F4E700EFB09F95EFF05FAB87 -:104C40008327C101138507008320C10213010103DB -:104C500067800000130101FC232E1102232EA10006 -:104C6000232CB100232AC1002328D1002326E100F0 -:104C7000930710002326F1028327C10163960700E2 -:104C8000737004306F0000008327C1012324F102F8 -:104C9000EFB01FAF930705002322F1028327010124 -:104CA000638A07008327810203A787058327010101 -:104CB00023A0E7008327810283A7C7052320F102F1 -:104CC000832781021307200023AEE7040327410155 -:104CD0009307400063ECE7088327410113972700FF -:104CE00097B701009387C733B307F70003A70700FF -:104CF00097B701009387C732B307F70067800700B3 -:104D00008327810203A78705832781013367F70083 -:104D10008327810223ACE7046F00400583278102CB -:104D200083A78705138717008327810223ACE70435 -:104D30006F00C003832781020327810123ACE704AE -:104D40006F00C0020327010293072000630AF700E7 -:104D5000832781020327810123ACE7046F00000150 -:104D6000232601026F0080001300000003270102C8 -:104D7000930710006314F70E8327810283A787022D -:104D800063860700737004306F00000097C701004E -:104D90009387879A83A70700639E0706832781026C -:104DA0009387470013850700EFB05FC68327810212 -:104DB00003A7C70297C701009387479683A70700F9 -:104DC00063FCE7008327810203A7C70297C701009E -:104DD0009387C79423A0E7008327810203A7C70214 -:104DE0009307070093972700B387E700939727005F -:104DF00017C701001307C7843387E70083278102A1 -:104E0000938747009385070013050700EFB0DFABDA -:104E10006F00C00183278102938787019385070074 -:104E200017C501001305058BEFB01FAA8327810268 -:104E300003A7C70297B701009387077583A70700E9 -:104E400083A7C70263FCE7008327C10063880700CC -:104E50008327C1001307100023A0E7008327410226 -:104E600013850700EFB01F908327C1021385070049 -:104E70008320C1031301010467800000130101FDB9 -:104E8000232611022326A1002324B1008327C10079 -:104E900063960700737004306F0000008327C10021 -:104EA000232EF100EFB0DF8D93070500232CF100D6 -:104EB0008327C10183A7C705232AF1008327C101E6 -:104EC0001307200023AEE7048327C10183A78705CA -:104ED000138717008327C10123ACE704032741018F -:104EE000930710006314F70E8327C10183A787027D -:104EF00063860700737004306F00000097C70100DD -:104F00009387878383A70700639E07068327C101D2 -:104F10009387470013850700EFB05FAF8327C10178 -:104F200003A7C70297B701009387477F83A70700AE -:104F300063FCE7008327C10103A7C70297B70100FD -:104F40009387C77D23A0E7008327C10103A7C7027A -:104F50009307070093972700B387E70093972700ED -:104F600017B701001307C76D3387E7008327C10117 -:104F7000938747009385070013050700EFB0DF9480 -:104F80006F00C0018327C1019387870193850700C4 -:104F900017B5010013050574EFB01F938327C101F6 -:104FA00003A7C70297B701009387075E83A707008F -:104FB00083A7C70263FCE70083278100638807009B -:104FC000832781001307100023A0E70083278101B6 -:104FD00013850700EFB00FF9130000008320C10212 -:104FE0001301010367800000130101FD2326110254 -:104FF0002326A1008327C100232CF10083278101F0 -:10500000639A070097B701009387075883A70700A3 -:105010006F00800083278101232CF100EFF04FE91E -:105020008327810103A7C70593072000631CF700AE -:105030008327810123AE070493071000232EF1007C -:105040006F008000232E0100EFF08FEA8327C1015B -:10505000138507008320C10213010103678000004C -:10506000130101FE232E110023260100EF00500B37 -:1050700097B701009387876F83A70700638A0702AA -:105080009308000013080000930700001307200096 -:10509000930600001306004097B50100938585F93B -:1050A000170500001305852EEFC01FEF2326A10072 -:1050B0008327C10063960700737004306F000000FF -:1050C0008327C100138507008320C101130101025A -:1050D00067800000130101FC232E1102232EA10082 -:1050E000232CB100232AC1002328D1002326E1006C -:1050F0008327810163960700232601026F00800643 -:105100001305C002EF10001F2326A1028327C1024E -:10511000638A0704EF00D0008327C1020327C1017F -:1051200023A0E7008327C1020327810123ACE70006 -:105130008327C1020327410123AEE7008327C10271 -:105140000327010123A0E7028327C1020327C1002F -:1051500023A2E7028327C102938747001385070034 -:10516000EFB0CFF48327810163960700737004309A -:105170006F0000008327C102138507008320C1034D -:105180001301010467800000130101FC232E1102AA -:10519000232EA100232CB100232AC1002328D100F3 -:1051A0002326E100232601028327C101639607001D -:1051B000737004306F00000097B701009387075B9E -:1051C00083A70700638C070A832781012320F1024C -:1051D000832741012322F1028327C1012324F10205 -:1051E000032781019307500063C6E706EFF0CF9DC8 -:1051F00013070500930720006318F70297B7010013 -:105200009387C75683A70700130701029306000080 -:105210000326C1009305070013850700EFB01FD2D6 -:105220002326A1026F00800597B7010093870754DA -:1052300083A707001307010293060000130600006E -:105240009305070013850700EFB05FCF2326A10267 -:105250006F00C00297B701009387475183A70700EB -:1052600013070102930600000326010193050700BE -:1052700013850700EFB09FF02326A1028327C10208 -:10528000138507008320C103130101046780000018 -:10529000130101FE2326A1008327C100232EF10064 -:1052A0008327C10063960700737004306F0000000D -:1052B0008327C10183A7070013850700130101029B -:1052C00067800000130101FD232611022326A1009F -:1052D0002324B10097B701009387C74883A707002D -:1052E00083A7C70083A7C700232EF1008327C1012E -:1052F0009387470013850700EFB04FF18327C10163 -:1053000003A7C701930710006310F7068327C101A5 -:1053100003A787018327C100B307F7008326C100D5 -:1053200003268100938507000325C101EF00802239 -:1053300013070500930710006318F7021307000016 -:10534000930600000326C100930500000325C10158 -:10535000EFF09FE3232CA1008327810163960700D0 -:10536000737004306F0000008327C10183A74702D8 -:105370000325C101E7800700130000008320C1025C -:105380001301010367800000130101FD23261102B0 -:105390002326A1009307810113850700EF00800EEB -:1053A000232EA10083278101938507000325C101D6 -:1053B000EF00C000EF0000286FF0DFFD130101FDDA -:1053C000232611022326A1002324B100EFD01F9829 -:1053D0009307810113850700EF004011232EA100E0 -:1053E0008327810163960708832781006392070260 -:1053F0000327C1008327C10163ECE700EFD05F976B -:105400008325C1010325C100EFF0DFEB6F008006AB -:10541000832781006380070297B701009387C73411 -:1054200083A7070083A7070093B7170093F7F70F29 -:105430002324F10097B701009387473383A6070021 -:105440000327C1008327C101B307F740032681006A -:105450009385070013850600EFC01FABEFD05F9167 -:105460009307050063980700EFB08F926F008000EC -:10547000EFD01F90130000008320C102130101032D -:1054800067800000130101FE2326A10097B70100E9 -:105490009387472D83A7070083A7070093B71700BB -:1054A00093F7F70F138707008327C10023A0E700B6 -:1054B0008327C10083A707006390070297B7010005 -:1054C0009387472A83A7070083A7C70083A70700FE -:1054D000232EF1006F008000232E01008327C101DD -:1054E000138507001301010267800000130101FD0D -:1054F000232611022326A100EFD09FA4232EA10072 -:1055000097B701009387C72683A707000327C10128 -:10551000637CF700EF00C02B8327C1001307100046 -:1055200023A0E7006F00C0008327C10023A007006D -:1055300097B701009387C7230327C10123A0E70082 -:105540008327C101138507008320C10213010103D2 -:1055500067800000130101FD232611022326A1000C -:105560002324B1002322C1002320D100232E0100D7 -:105570008327C1000327810023A2E7008327C100FE -:105580000327C10023A8E7000327810083274100E8 -:1055900063E6E70403274100832701003307F74050 -:1055A0008327C10083A787016368F7009307100072 -:1055B000232EF1006F00C00697B701009387C71A2A -:1055C00003A707008327C10093874700938507003F -:1055D00013050700EFB00FB76F00800403274100E9 -:1055E00083270100637EF7000327810083270100E2 -:1055F0006368F70093071000232EF1006F0040024C -:1056000097B701009387071603A707008327C100F8 -:10561000938747009385070013050700EFB08FB20B -:105620008327C101138507008320C10213010103F1 -:1056300067800000130101FD232611026F00801511 -:105640008327810063C6071483270101232EF100FD -:105650008327C10183A74701638A07008327C1010C -:105660009387470013850700EFB04FBA93074100B7 -:1056700013850700EFF09FE7232CA100832781000B -:10568000130790006368F7101397270097B701007E -:105690009387C79AB307F70003A7070097B70100DE -:1056A0009387C799B307F700678007000327C100F6 -:1056B0008327C10183A78701B307F7000327C10030 -:1056C0009306070003268101938507000325C10186 -:1056D000EFF05FE81307050093071000631CF70A5B -:1056E0008327C10183A747020325C101E780070083 -:1056F0008327C10103A7C70193071000631CF708A4 -:105700000327C1008327C10183A78701B307F700DF -:10571000130700009306000013860700930500009E -:105720000325C101EFF05FA6232AA10083274101D1 -:1057300063920706737004306F0000000327C100F6 -:105740008327C10123ACE7008327C10183A7870119 -:1057500063960700737004306F0000008327C10157 -:1057600003A7870183278101B307F70083268101FF -:1057700003268101938507000325C101EFF09FDD1A -:105780006F0040010325C101EF0090566F008000BB -:105790001300000097B70100938747FD83A7070018 -:1057A000130781009306000013060000930507000D -:1057B00013850700EFB05FC593070500E39207E884 -:1057C000130000008320C102130101036780000061 -:1057D000130101FD232611026F00C00E97B70100CF -:1057E000938747F883A7070083A7C70083A707000D -:1057F000232CF10097B701009387C7F683A7070012 -:1058000083A7C70083A7C700232AF100832741018C -:105810009387470013850700EFB04F9F832741010F -:1058200083A7470203254101E78007008327410141 -:1058300003A7C701930710006316F70883274101E8 -:1058400083A7870103278101B307F7002328F1000D -:10585000032701018327810163F0E70483274101C6 -:105860000327010123A2E700832741010327410108 -:1058700023A8E70097B701009387C7EE03A70700A7 -:10588000832741019387470093850700130507008D -:10589000EFB04F8B6F00000313070000930600006A -:1058A000032681019305000003254101EFF0DF8D00 -:1058B0002326A1008327C10063960700737004307C -:1058C0006F00000097B701009387C7E983A707001F -:1058D00083A70700E39407F097B70100938787E851 -:1058E00083A70700232EF10097B701009387C7E72E -:1058F00003A7070097B701009387C7E623A0E70037 -:1059000097B70100938747E60327C10123A0E7006B -:10591000130000008320C10213010103678000000F -:10592000130101FF23261100EFE09FD897B7010074 -:105930009387C7E383A707006394070A17B501009D -:105940001305C5DFEFA01FF117B50100130545E0F2 -:10595000EFA05FF097B701009387C7E017B701008A -:105960001307C7DD23A0E70097B701009387C7DFC0 -:1059700017B701001307C7DD23A0E70013060000D7 -:105980009305C00013054000EFB00FA313070500F7 -:1059900097B70100938787DD23A0E70097B7010041 -:1059A0009387C7DC83A707006396070073700430F2 -:1059B0006F00000097B70100938747DB83A70700BC -:1059C0006380070297B70100938747DA83A7070030 -:1059D00097A501009385056913850700EFC0CFC225 -:1059E000EFE01FD1130000008320C100130101016B -:1059F00067800000130101FD232611022326A10068 -:105A00008327C100232EF1008327C100639607007E -:105A1000737004306F000000EFE09FC98327C1015D -:105A200083A74701B337F00093F7F70F232CF1005A -:105A3000EFE01FCC83278101138507008320C1027B -:105A40001301010367800000130101FD23261102E9 -:105A50002326A1008327C100232EF1008327C10044 -:105A600063960700737004306F000000EFE05FC4BE -:105A70008327C10183A70702232CF100EFE05FC752 -:105A800083278101138507008320C10213010103CD -:105A900067800000130101FD232611022326A100C7 -:105AA0002324B1008327C100232EF1008327C100E6 -:105AB00063960700737004306F000000EFE05FBF73 -:105AC0008327C1010327810023A0E702EFE05FC223 -:105AD000130000008320C10213010103678000004E -:105AE000130101FE232E11001305C001EF009000E9 -:105AF0002326A1008327C100638E07008327C100EE -:105B000023A007008327C100938747001385070060 -:105B1000EFA05FD48327C100138507008320C10154 -:105B20001301010267800000130101FC232E110202 -:105B30002326A1002324B1002322C1002320D10069 -:105B40008327C1002324F1022322010203274100FD -:105B5000B70700FFB377F700638607007370043060 -:105B60006F000000832741006396070073700430C4 -:105B70006F000000EFE05F85930705006396070064 -:105B80008327010063960700930710006F008000D1 -:105B90009307000063960700737004306F000000E5 -:105BA000EFD0CF9A8327810283A707002320F10239 -:105BB000832581000325C100EF00804103270102F6 -:105BC000832781003367F70083274100B377F7000D -:105BD00003274100631CF70203270102832781008A -:105BE000B367F7002326F1028327810203A707008A -:105BF0008327410093C7F7FF3377F700832781029C -:105C000023A0E700232001006F0040048327010048 -:105C10006388070283278102938647000327410098 -:105C2000B7070005B367F700032601009385070057 -:105C300013850600EFD0DFA4232601026F000001C8 -:105C40008327810283A707002326F102EFD04F921A -:105C5000232EA10083270100638407088327C10145 -:105C600063940700EFA0DF92EFE05FAE2326A1026E -:105C70000327C102B7070002B377F7006398070450 -:105C8000EFE01FA38327810283A707002326F102E9 -:105C90000327C10283274100B377F70003274100A0 -:105CA0006310F7028327810203A7070083274100BF -:105CB00093C7F7FF3377F7008327810223A0E7001C -:105CC000EFE01FA3930710002322F1020327C10274 -:105CD000B70700019387F7FFB377F7002326F10298 -:105CE0008327C102138507008320C1031301010428 -:105CF00067800000130101FB23261104232EA1005D -:105D0000232CB100232AC1002328D1002326E1003F -:105D10008327C101232AF102232C01022328010237 -:105D20008327C10163960700737004306F00000081 -:105D300003278101B70700FFB377F70063860700E9 -:105D4000737004306F0000008327810163960700A1 -:105D5000737004306F000000EFE00FE79307050059 -:105D6000639607008327C10063960700930710001E -:105D70006F00800093070000639607007370043083 -:105D80006F000000EFC09FFC8327410383A707003B -:105D90002326F10203260101832581010325C10287 -:105DA000EF00404B2324A10283278102638C07026A -:105DB0008327C102232EF1022326010083274101FC -:105DC000638807088327410303A70700832781010E -:105DD00093C7F7FF3377F7008327410323A0E7003A -:105DE0006F0000078327C100639807008327C10263 -:105DF000232EF1026F00C00583274101638A07004B -:105E000003278103B7070001B367F700232CF102D2 -:105E100083270101638A070003278103B707000472 -:105E2000B367F700232CF1028327410393864700D1 -:105E30000327810183278103B367F7000326C1008D -:105E40009385070013850600EFD09F83232E010260 -:105E5000EFC01FF22322A1028327C1006388070835 -:105E60008327410263940700EFA08FF2EFE01F8EBB -:105E7000232EA1020327C103B7070002B377F7005F -:105E8000639C0704EFE0DF828327410383A70700B9 -:105E9000232EF10203260101832581010325C1037D -:105EA000EF00403B9307050063840702832741010D -:105EB000638007028327410303A70700832781012B -:105EC00093C7F7FF3377F7008327410323A0E70049 -:105ED000EFE01F82232801020327C103B707000157 -:105EE0009387F7FFB377F700232EF1028327C103CF -:105EF000138507008320C10413010105678000009A -:105F0000130101FD232611022326A1002324B10041 -:105F10008327C100232EF1008327C1006396070069 -:105F2000737004306F00000003278100B70700FF83 -:105F3000B377F70063860700737004306F000000CA -:105F4000EFE00FF78327C10183A70700232CF1009F -:105F50008327C10103A707008327810093C7F7FFA9 -:105F60003377F7008327C10123A0E700EFE04FF864 -:105F700083278101138507008320C10213010103D8 -:105F800067800000130101FD232611022326A100D2 -:105F90008327C100232EF100EFA08FFE9307050099 -:105FA000232CF1008327C10183A70700232AF100D6 -:105FB0008327810113850700EFA0CFFA83274101D2 -:105FC000138507008320C1021301010367800000CD -:105FD000130101FB232611042326A1002324B10071 -:105FE000232C01028327C1002328F102232A010266 -:105FF0008327C10063960700737004306F000000B0 -:1060000003278100B70700FFB377F7006386070017 -:10601000737004306F0000008327010393874700EB -:106020002326F1028327C102938787002324F102EC -:10603000EFC0DFD18327C10283A7C700232EF1025F -:106040008327010303A70700832781003367F70035 -:106050008327010323A0E7006F00000E8327C103FD -:1060600083A747002322F1028327C10383A70700E8 -:106070002320F102232A010203270102B70700FFB0 -:10608000B377F700232EF10003270102B7070001C1 -:106090009387F7FFB377F7002320F1020327C101AD -:1060A000B7070004B377F700639207028327010361 -:1060B00003A7070083270102B377F700638807026D -:1060C00093071000232AF1026F0040028327010387 -:1060D00003A7070083270102B377F7000327010214 -:1060E0006316F70093071000232AF1028327410368 -:1060F000638007040327C101B7070001B377F700E6 -:10610000638A07000327810383270102B367F7002F -:10611000232CF1028327010303A70700B70700021E -:10612000B367F700938507000325C103EFD05F82B3 -:1061300083274102232EF1020327C1038327810213 -:10614000E31EF7F08327010303A7070083278103DA -:1061500093C7F7FF3377F7008327010323A0E700F6 -:10616000EFC01FC18327010383A707001385070022 -:106170008320C1041301010567800000130101FDA4 -:10618000232611022326A1008327C100232EF1001C -:106190008327C10193874700232CF100EFC01FBB69 -:1061A0006F0040038327810103A7C7008327810174 -:1061B000938787006316F700737004306F00000048 -:1061C0008327810183A7C700B70500021385070055 -:1061D000EFD00FF88327810183A70700E39407FC22 -:1061E0000325C101EF00C030EFC09FB813000000CD -:1061F0008320C1021301010367800000130101FE27 -:10620000232E11002326A1002324B1008325810021 -:106210000325C100EFF0DFDB130000008320C10184 -:106220001301010267800000130101FE232E1100FB -:106230002326A1002324B100832581000325C1006A -:10624000EFF01FCC130000008320C10113010102F5 -:1062500067800000130101FE2326A1002324B10062 -:106260002322C100232E01008327410063900702EF -:106270000327C10083278100B377F70063860702F5 -:1062800093071000232EF1006F0000020327C100C6 -:1062900083278100B377F700032781006316F70097 -:1062A00093071000232EF1008327C10113850700F7 -:1062B0001301010267800000130101FE2326A100E3 -:1062C0008327C100232CF1008327C10063960700B8 -:1062D000232E01006F0000018327810183A787011E -:1062E000232EF1008327C10113850700130101024A -:1062F00067800000130101FC232E11022326A10058 -:1063000023220102EFC09FA497370300938787479A -:1063100083A70700639C0700EF00002C973703005A -:10632000938747461307100023A0E7008327C10087 -:10633000638A070293078000138707008327C10041 -:10634000B387E7002326F1008327C10093F73700C6 -:10635000638A07008327C10093F7C7FF938747002D -:106360002326F1008327C100638207160327C1009B -:10637000B79701009387B7FF63EAE71497370300E5 -:106380009387473F2324F102973703009387873E83 -:1063900083A707002326F1026F0080018327C10233 -:1063A0002324F1028327C10283A707002326F102D9 -:1063B0008327C10283A747000327C10063F8E700D2 -:1063C0008327C10283A70700E39A07FC0327C102C2 -:1063D000973703009387873A630AF70E8327810272 -:1063E00083A7070013078000B387E7002322F10289 -:1063F0008327C10203A707008327810223A0E700A8 -:106400008327C10203A747008327C100B307F740D2 -:1064100013078000131717006378F7080327C102DA -:106420008327C100B307F700232EF1008327C102A1 -:1064300003A747008327C1003307F7408327C10123 -:1064400023A2E7008327C1020327C10023A2E7009C -:106450008327C10183A74700232CF100973703004E -:10646000938747312320F1026F0000018327010247 -:1064700083A707002320F1028327010283A70700D7 -:1064800083A7470003278101E3E2E7FE8327010298 -:1064900003A707008327C10123A0E7008327010288 -:1064A0000327C10123A0E70097A701009387470FA7 -:1064B00003A707008327C10283A747003307F740DC -:1064C00097A701009387C70D23A0E700EFC05F8A5D -:1064D0008327410263940700EF10400D8327410298 -:1064E000138507008320C1031301010467800000A6 -:1064F000130101FD232611022326A1008327C100D9 -:10650000232CF1008327C1006382070A93078000D0 -:10651000B307F04003278101B307F700232CF100F4 -:1065200083278101232AF100EFC05F828327410185 -:1065300083A747002328F100973703009387872319 -:10654000232EF1006F0000018327C10183A70700FC -:10655000232EF1008327C10183A7070083A74700EB -:1065600003270101E3E2E7FE8327C10103A7070038 -:106570008327410123A0E7008327C10103274101AD -:1065800023A0E7008327410103A7470097A7010045 -:106590009387070183A707003307F70097A7010038 -:1065A0009387070023A0E700EFC08FFC13000000D3 -:1065B0008320C102130101036780000097A7010037 -:1065C000938707FE83A707001385070067800000F5 -:1065D0001300000067800000130101FF97A701006E -:1065E0009387871993F7C7FF2326F1009737030096 -:1065F000938747180327C10023A0E70097370300BC -:106600009387471723A2070097370300938707173D -:10661000379701001307C7FF23A2E700973703004E -:106620009387C71523A007008327C1002324F10007 -:1066300083278100379701001307C7FF23A2E700D4 -:1066400083278100173703001307471323A0E700B0 -:10665000130000001301010167800000130101FE17 -:106660002326A1002324B1002322C1008327810017 -:10667000232EF1008327C100232CF1000327C10042 -:1066800083278100B367F70093F737006396070607 -:106690006F00C0028327C10103A707008327810180 -:1066A00023A0E7008327810193874700232CF10073 -:1066B0008327C10193874700232EF10083274100E0 -:1066C0009387D7FF0327C100B307F7000327810192 -:1066D000E362F7FC6F0040020327C1019307170034 -:1066E000232EF1008327810193861700232CD100EC -:1066F000034707002380E7000327C10083274100E9 -:10670000B307F70003278101E368F7FC8327C10083 -:10671000138507001301010267800000130101FEC9 -:106720002326A1002324B1002322C1000327C10096 -:1067300083274100B367F70093F737006398070694 -:106740008327810093F7F70F232AF1008327410164 -:106750009397870003274101B367F700232AF100CD -:10676000832741019397070103274101B367F7008E -:10677000232AF1008327C100232EF1006F0080013E -:106780008327C10113874700232EE100032741011E -:1067900023A0E7000327C10083274100B307F700C8 -:1067A0000327C101E36EF7FC6F00C0038327C1001C -:1067B000232CF1006F00C00183278101138717008C -:1067C000232CE100032781001377F70F2380E700D4 -:1067D0000327C10083274100B307F7000327810186 -:1067E000E36CF7FC8327C100138507001301010246 -:1067F00067800000130101FE2326A1008327C1004A -:10680000232EF1006F0000018327C1019387170039 -:10681000232EF1008327C10183C70700E39607FEFB -:106820000327C1018327C100B307F7401385070081 -:106830001301010267800000130101FE2326A1005D -:106840002324B1008327C100138717002326E1000A -:1068500083C70700A30FF100832781001387170068 -:106860002324E10083C70700230FF1008347F101D0 -:10687000638807000347F1018347E101E304F7FC64 -:106880000347F1018347E101B307F7401385070090 -:106890001301010267800000130101FE2326A100FD -:1068A0002324B1008327C100232EF1001300000030 -:1068B00003278100930717002324F1008327C101D8 -:1068C00093861700232ED100034707002380E7009B -:1068D00083C70700E39E07FC8327C10013850700D9 -:1068E0001301010267800000130101FE2326A100AD -:1068F000232E0100232C01006F0000018327C1001B -:10690000938717002326F1008327C10003C70700E0 -:1069100093070002E304F7FE8327C10003C70700C3 -:106920009307D002630AF7008327C10003C707005B -:106930009307B0026312F7068327C10083C70700DD -:10694000938737FD93B7170093F7F70F232CF100C8 -:106950008327C100938717002326F1006F00C0032F -:106960000327C1019307070093972700B387E70028 -:1069700093971700232EF1008327C1001387170078 -:106980002326E10083C70700938707FD0327C10182 -:10699000B307F700232EF1008327C10083C7070048 -:1069A000E39007FC83278101638807008327C101E7 -:1069B000B307F0406F0080008327C10113850700F3 -:1069C0001301010267800000130101FE2326A100CC -:1069D00097370300938707DF83A707009386170085 -:1069E00017370300130707DE2320D7000327C10052 -:1069F0001377F70F973603009386C6E0B387F60048 -:106A00002380E7000327C1009307A000630CF70071 -:106A100097370300938707DB03A70700930700045A -:106A2000631EF704973703009387C7DD232EF10019 -:106A30006F00C0038327C10113871700232EE100D5 -:106A400003C70700B70710F0938707F023A0E700FC -:106A500097370300938707D783A707001387F7FFAC -:106A600097370300938707D623A0E70097370300E3 -:106A7000938747D583A70700E39E07FA9307000093 -:106A8000138507001301010267800000130101EB69 -:106A90002326111423248114232291142320211549 -:106AA000232E3113232C4113232A5113232EA1000B -:106AB000232CB1002328C100232AD1002326E10082 -:106AC0002324F10023220101232601128327C10080 -:106AD000138A0700930A000083270101032841015C -:106AE00013060A0093860A00138507009305080021 -:106AF000EF20C042930705001388050013860700A6 -:106B0000930608008327C112138717002326E1127A -:106B1000130706009397270093060113B387F60027 -:106B200023AEE7EE8327C10013840700930400001F -:106B3000832741011387040063E8E70483274101A9 -:106B4000138704006398E7008327010113070400FB -:106B500063ECE7028327C100138907009309000053 -:106B600013060900938609000325010183254101CD -:106B7000EF10105D93070500138805002328F1002E -:106B8000232A01016FF09FF4130000006F00400101 -:106B90008327C1018325810103254100E780070088 -:106BA000832781001387F7FF2324E1000327C11205 -:106BB000E340F7FE6F0040058327C112939727003B -:106BC00013070113B307F70003A7C7EF8327C11209 -:106BD0009397270093060113B387F60083A6C7EFA8 -:106BE0009307900063F6D700930770056F0080004D -:106BF00093070003B387E7000327C10183258101C1 -:106C000013850700E70007008327C1121387F7FFEA -:106C10002326E112E342F0FA130000008320C1149E -:106C20000324811483244114032901148329C113EB -:106C3000032A8113832A4113130101156780000081 -:106C4000130101FF2326A1002324B1008326810024 -:106C5000130710006356D7028327C10083A70700DC -:106C60009387770093F787FF938687000327C100F8 -:106C70002320D70003A8470083A707006F00000563 -:106C800003278100630407020327C10003270700CD -:106C9000130647008326C10023A0C6000327070070 -:106CA00093070700130800006F0040020327C1008C -:106CB00003270700130647008326C10023A0C60050 -:106CC0000327070093070700130800001385070038 -:106CD000930508001301010167800000130101FF03 -:106CE0002326A1002324B10083268100130710006E -:106CF0006356D7028327C10083A7070093877700D5 -:106D000093F787FF938687000327C1002320D700CE -:106D100003A8470083A707006F00800503278100B1 -:106D2000630607020327C100032707001306470075 -:106D30008326C10023A0C60003270700930707008E -:106D40001357F741130807006F0080020327C100A3 -:106D500003270700130647008326C10023A0C600AF -:106D600003270700930707001357F741130807008D -:106D700013850700930508001301010167800000D7 -:106D8000130101FC232E1102232C8102232A9102DC -:106D90002326A1002324B1002322C1002320D100F7 -:106DA0006F0040026300043C832741009387170073 -:106DB0002322F1008327C1008325810013050400ED -:106DC000E78007008327410083C70700138407007B -:106DD00093075002E318F4FC8327410093871700C0 -:106DE0002322F100832741002328F10093070002AA -:106DF000A30BF1009307F0FF232EF1009307F0FFA0 -:106E0000232CF10023200102832741001387170060 -:106E10002322E10083C70700138407009307D4FDF2 -:106E2000130750056360F732139727009797010007 -:106E300093874724B307F70003A70700979701003C -:106E400093874723B307F700678007009307D002B3 -:106E5000A30BF1006FF05FFB93070003A30BF1009E -:106E60006FF09FFA232C010003278101930707008D -:106E700093972700B387E70093971700B307F400B1 -:106E8000938707FD232CF1008327410083C7070068 -:106E9000138407009307F00263D2870493079003DB -:106EA00063CE870283274100938717002322F100D6 -:106EB0006FF09FFB83270100138747002320E10029 -:106EC00083A70700232CF1006F0080018327C101F5 -:106ED000E3DC07F2232E01006FF01FF31300000024 -:106EE0008327C101E3D207F283278101232EF1001A -:106EF0009307F0FF232CF1006FF01FF183270102AD -:106F0000938717002320F1026FF01FF08327010001 -:106F1000138747002320E10083A707000327C10050 -:106F20008325810013850700E70007006F004023D9 -:106F300083270100138747002320E10083A4070073 -:106F40006396040097940100938444128327C1013F -:106F50006350F008034771019307D002630AF706F4 -:106F6000832781019385070013850400EF10101B10 -:106F7000130705008327C101B387E740232EF100E3 -:106F80006F004002834771010327C1008325810000 -:106F900013850700E70007008327C1019387F7FFE8 -:106FA000232EF1008327C101E34EF0FC6F00400265 -:106FB0008327C1008325810013050400E7800700B3 -:106FC000938414008327C1019387F7FF232EF100D8 -:106FD00083C704001384070063000404832781012E -:106FE000E3C807FC832781019387F7FF232CF10077 -:106FF00083278101E3DE07FA6F0000028327C100C7 -:107000008325810013050002E78007008327C10163 -:107010009387F7FF232EF1008327C101E340F0FEA1 -:107020006F000014930701008325010213850700F8 -:10703000EFF0DFCA93070500138805002324F1024F -:1070400023260103832781020328C1029307080036 -:1070500063D607048327C100832581001305D0026E -:10706000E7800700832581020326C1029307000001 -:1070700013080000B386B7401385060033B5A70098 -:107080003307C840B307A74013870700938706005C -:10709000130807002324F102232601039307A0000D -:1070A0002322F1026F0040069307A0002322F10281 -:1070B0006F000004930780002322F1026F00400359 -:1070C000930710002320F1028327C100832581004C -:1070D00013050003E78007008327C1008325810093 -:1070E00013058007E7800700930700012322F102C0 -:1070F000930701008325010213850700EFF05FB4B9 -:107100002324A1022326B1020327410283477101F0 -:10711000138807008327C101032681028326C10249 -:10712000832581000325C100EFF05F966F004003C7 -:107130008327C1008325810013050400E780070031 -:107140006F0000028327C1008325810013055002D0 -:10715000E7800700832701012322F10013000000CC -:107160006FF05FC6130000008320C1030324810376 -:10717000832441031301010467800000130101FF10 -:107180002326A1006F000000130101FB232611023A -:107190002326A100232AB102232CC102232ED102CF -:1071A0002320E1042322F1042324010523261105D1 -:1071B00093070105938747FE232EF1008327C10122 -:1071C000938607000326C1009305000017F5FFFF13 -:1071D0001305C57FEFF0DFBA9307000013850700A2 -:1071E0008320C1021301010567800000130101FE25 -:1071F0002326A1002324B1002322710083278100CC -:10720000232EF1008327C10183A707000327C100B4 -:107210001377F70F2380E7008327C10183A70700B7 -:10722000138717008327C10123A0E7001300000084 -:107230001301010267800000130101FA232E1102DD -:107240002326A1002324B1002324C1042326D10432 -:107250002328E104232AF104232C0105232E110500 -:10726000930701062322F10293074101930541018F -:10727000170600001306C6F737F7FFFF9346F7FF20 -:1072800037150000130505803388A5003378E80022 -:107290001368783B23A007013305A6003377E50088 -:1072A0001367773323A2E70033F7D500931547011F -:1072B000378703001307373933E7E50023A4E700D6 -:1072C0003377D60093164701370703001307770675 -:1072D00033E7E60023A6E7000F1000008327C10074 -:1072E0002326F10293070106938787FE2324F102E8 -:1072F0000327810293074101138507009307C1000B -:10730000930607000326810093850700EFF05FA72F -:107310008327C100238007008327C100138707004C -:107320008327C102B307F740138507008320C103F9 -:107330001301010667800000130101FE232E1100D6 -:107340002326A10017950100130545E8EFF0DFE3C0 -:10735000130000008320C1011301010267800000B7 -:10736000130101FE232E11002326A1001795010011 -:10737000130545E6EFF05FE1130000008320C10133 -:107380001301010267800000130101FD2326110291 -:107390002326A100232E01006F00400113000000EE -:1073A0008327C10193871700232EF1000327C10112 -:1073B000B717000093877738E3D2E7FE17950100EF -:1073C0001305C5E1EFF05FDC6FF0DFFC130101FE98 -:1073D000232E1100179501001305C5E0EFF0DFDA49 -:1073E0002326010017950100130505E1EFF0DFD911 -:1073F000EF00001EEF00D026EF00906C1707000092 -:1074000013070708930600001306100093054006B3 -:1074100017950100130545DFEFD0DFCB2326A10030 -:107420008327C1006388070217950100130585DED5 -:10743000EFF09FD5EFB0DFB0930705001307000012 -:107440009306000013860700930510000325C10072 -:10745000EFD09FD32324010017950100130585DC8D -:10746000EFF09FD2EFB0DF80930700001385070095 -:107470008320C1011301010267800000130101FD97 -:10748000232611022326A100979701009387071056 -:1074900083A7070013874706979701009387070F75 -:1074A00023A0E700979701009387470E83A7070063 -:1074B00093850700179501001305C5D7EFF0DFCCC2 -:1074C000979701009387870C03A70700B717000061 -:1074D000938777BB63F4E70C17950100130545D636 -:1074E000EFF09FCA232E0100EF00500D1307050097 -:1074F00093071000630EF70017950100130505D5DB -:10750000EFF09FC88327C10193E72700232EF100E6 -:10751000EF0090501307050093071000630EF7006B -:10752000179501001305C5D4EFF01FC68327C101CD -:1075300093E74700232EF100EF10402D13070500BD -:1075400093071000630EF700179501001305C5D4CB -:10755000EFF09FC38327C10193E78700232EF1003B -:107560008327C101638E0700B7EFEFBE938FDFEA79 -:1075700017950100130585D4EFF01FC16F0080013E -:10758000B7CFADDE938FFFEE17950100130505D43D -:10759000EFF09FBFEFB0CFF86F0080001300000046 -:1075A0008320C1021301010367800000737004305F -:1075B0006F0000001300000067800000130101FF4E -:1075C0002326A1002324B100737004306F00000053 -:1075D000130101FF2326110013060000930540004C -:1075E00013055000EF904FDD1307050097270300A8 -:1075F0009387472523A0E7009727030093878724D5 -:1076000083A7070097950100938505CD1385070093 -:10761000EFA08FFF930800001308000093070000FD -:107620001307200093060000130600409795010001 -:107630009385C5CB170500001305C504EFA0DF95A2 -:107640009308000013080000972703009387C71FC3 -:1076500013071000930600001306004097950100E1 -:10766000938545C9170500001305855BEFA0DF92E0 -:10767000130000008320C100130101016780000096 -:10768000130101FC232E11022326A1002320010255 -:107690006F00400B832701021307A000B317F70008 -:1076A0002326F102EFB0DF892324A10297270300EC -:1076B0009387471983A707001307C10193060000AA -:1076C0000326C1029305070013850700EF90DFD35F -:1076D00093070500638A070097270300938787179E -:1076E0001307100023A0E700EFB09F8513070500E4 -:1076F00083278102B307F7402322F10203274102C7 -:107700008327C102637AF7009727030093878714C2 -:107710001307100023A0E7008327C1029387F70017 -:107720000327410263FAE700972703009387871234 -:107730001307100023A0E700832701029387170097 -:107740002320F1020327010293074000E3D4E7F46A -:10775000232001026F000005972703009387870EFF -:1077600083A7070013070102930600001306000019 -:107770009305070013850700EF904FFC13070500E2 -:1077800093071000630AF700972703009387870C7D -:107790001307100023A0E700832701029387170037 -:1077A0002320F1020327010293074000E3D6E7FA02 -:1077B000232001026F00400B832701021307A00062 -:1077C000B317F7002326F102EFB08FF72324A102AD -:1077D000972703009387070783A707001307010272 -:1077E000930600000326C1029305070013850700D6 -:1077F000EF90CFF493070500638A070097270300F3 -:10780000938747051307100023A0E700EFB04FF35D -:107810001307050083278102B307F7402322F102F3 -:10782000032741028327C102637AF70097270300E9 -:10783000938747021307100023A0E7008327C102A4 -:107840009387F7000327410263FAE70097270300B5 -:10785000938747001307100023A0E7008327010246 -:10786000938717002320F1020327010293074000AA -:10787000E3D4E7F497270300938707FE23A00700CC -:1078800097270300938747FC83A70700138507000A -:10789000EFB04F9B6F00C00013054001EFA0DFBBAE -:1078A00097270300938747FB03A70700930750051B -:1078B000E314F7FE13054001EFA01FBA972703005A -:1078C000938787F923A00700232001026F0080100F -:1078D00097270300938707F783A707001307C101C2 -:1078E00093060000130600009305070013850700A8 -:1078F000EF909FB11307050093071000630AF7008C -:1079000097270300938707F51307100023A0E700CC -:1079100097270300938707F383A707001307010244 -:107920009306000013060000930507001385070067 -:10793000EF90CFE01307050093071000630AF700EC -:1079400097270300938707F11307100023A0E70090 -:1079500097270300938747F003A707009307500575 -:10796000631AF700972703009387C7EE13071000E9 -:1079700023A0E70097270300938707ED83A707005D -:107980009305400013850700EFA0DFD09727030081 -:10799000938787EC03A7070093075005631AF70046 -:1079A00097270300938707EB1307100023A0E70036 -:1079B00097270300938747E983A7070093051000E3 -:1079C00013850700EFA01FCD8327010293871700BF -:1079D0002320F1020327010293074000E3DAE7EED8 -:1079E0006F00C00013054001EFA01FA797270300F9 -:1079F000938787E603A7070093075005E314F7FE74 -:107A000013054001EFA05FA5972703009387C7E404 -:107A100023A00700232001026F0000059727030021 -:107A2000938747E283A707001307C101930600006D -:107A3000130600009305070013850700EF90DF9CF5 -:107A40001307050093071000630AF7009727030048 -:107A5000938747E01307100023A0E7008327010264 -:107A6000938717002320F1020327010293074000A8 -:107A7000E3D6E7FA97270300938707DD83A707007C -:107A800013850700EFA01FFC6F00C0001305400125 -:107A9000EFA09F9C97270300938707DC03A70700AD -:107AA00093075005E314F7FE13054001EFA0DF9A9A -:107AB00097270300938747DA23A0070023200102BA -:107AC0006F008010972703009387C7D783A707000D -:107AD0001307010293060000130600009305070038 -:107AE00013850700EF908FC513070500930710005B -:107AF000630AF700972703009387C7D51307100081 -:107B000023A0E700972703009387C7D383A7070025 -:107B10001307C10193060000130600009305070038 -:107B200013850700EF905F8E130705009307100081 -:107B3000630AF700972703009387C7D11307100044 -:107B400023A0E70097270300938707D103A7070027 -:107B500093075005631AF70097270300938787CF91 -:107B60001307100023A0E700972703009387C7CDD2 -:107B700083A707009305400013850700EFA09FB17E -:107B800097270300938747CD03A707009307500566 -:107B9000631AF700972703009387C7CB13071000DA -:107BA00023A0E70097270300938707CA83A707004E -:107BB0009305100013850700EFA0DFAD83270102B6 -:107BC000938717002320F102032701029307400047 -:107BD000E3DAE7EE6F00C00013054001EFA0DF8796 -:107BE00097270300938747C703A70700930750050C -:107BF000E314F7FE13054001EFA01F86972703004B -:107C00009387C7C483A7070013871700972703002C -:107C10009387C7C323A0E7006FF05FA7130101FD9F -:107C2000232611022326A10013050000EFA0DFC6C2 -:107C3000EFB00FB1232EA100232A010097270300E4 -:107C4000938787C11307500523A0E70097270300F8 -:107C5000938747BF83A707001307410193060000DE -:107C60001306F00A9305070013850700EF900FAD88 -:107C700093070500638A070097270300938787BD52 -:107C80001307100023A0E700EFB08FAB1307050028 -:107C90008327C101B307F740232CF100032781019B -:107CA0009307E00A63EAE70097270300938787BA00 -:107CB0001307100023A0E700032781019307E00BBF -:107CC00063FAE700972703009387C7B813071000EC -:107CD00023A0E70097270300938707B813075005F1 -:107CE00023A0E70013050000EFA01FBBEFB04FA5D6 -:107CF000232EA10097270300938707B6130750058B -:107D000023A0E700972703009387C7B383A7070043 -:107D100013074101930600001306F00A93050700BC -:107D200013850700EF904FEE93070500638A070065 -:107D300097270300938707B21307100023A0E700DB -:107D4000EFB00FA0130705008327C101B307F74069 -:107D5000232CF100032781019307E00A63EAE7007F -:107D600097270300938707AF1307100023A0E700AE -:107D7000032781019307E00B63FAE70097270300CD -:107D8000938747AD1307100023A0E7009727030050 -:107D9000938787AC1307500523A0E70097270300BC -:107DA000938707AB83A70700138717009727030064 -:107DB000938707AA23A0E7006FF01FE7130101FFD5 -:107DC000930710002326F10097270300938707A845 -:107DD00003A7070097270300938747A883A70700F7 -:107DE0006314F7002326010097270300938747A613 -:107DF00003A7070097270300938787A683A7070099 -:107E00006314F7002326010097270300938787A4B4 -:107E100003A70700930710006314F700232601004F -:107E2000972703009387C7A203A70700972703009C -:107E3000938707A323A0E70097270300938707A151 -:107E400003A7070097270300938747A123A0E70014 -:107E50008327C1001385070013010101678000001B -:107E6000130101FF232611009305800C1305800CDC -:107E7000EF90CF8413070500972703009387C79ED1 -:107E800023A0E700972703009387079E1307A00A04 -:107E900023A2E700972703009387079D23A40700E9 -:107EA000930500001305800CEF904F811307050028 -:107EB000972703009387479B23A6E7009727030094 -:107EC0009387879A23A80700972703009387C7996A -:107ED00023AA0700972703009387079983A7070022 -:107EE000978501009385854113850700EF90DFF1A9 -:107EF000972703009387479783A7C70097850100BB -:107F00009385C54013850700EF901FF09727030066 -:107F10009387879583A70700639A07009727030035 -:107F20009387879483A7C70063820706930800009E -:107F300013080000930700001307000097260300B2 -:107F40009386869213060040978501009385053D30 -:107F50001705000013054521EFA00F8493080000CA -:107F60001308000093070000130700009726030082 -:107F70009386469013060040978501009385853AC5 -:107F8000170500001305451EEFA00F811300000028 -:107F90008320C1001301010167800000130101FD6E -:107FA000232611022326A1002324B10093060000FA -:107FB00013060000930500000325C100EF801FF8A1 -:107FC0001307050093071000631AF70097270300B3 -:107FD000938747891307100023A0E700232E010091 -:107FE0006F00400593060000130600009305000093 -:107FF0000325C100EF904FC1130705009307100040 -:10800000630AF700972703009387C78513071000BB -:1080100023A0E7008327810083A7070013871700A9 -:108020008327810023A0E7008327C10193871700DE -:10803000232EF1000327C1019307700CE3F4E7FA44 -:108040009306000013060000930500000325C100FD -:10805000EF908FBB1307050093071000631AF7001A -:1080600097270300938707801307100023A0E700DA -:10807000130000008320C102130101036780000088 -:10808000130101FD232611022326A1002324B100A0 -:108090009306000013060000930500000325C100AD -:1080A000EF908FB61307050093071000631AF700CF -:1080B000971703009387077B1307100023A0E7009F -:1080C000232E01006F0040059306000013060000F8 -:1080D000930500000325C100EF805FE6130705004C -:1080E00093071000630AF7009717030093878777B9 -:1080F0001307100023A0E7008327810083A7070050 -:10810000138717008327810023A0E7008327C1017D -:1081100093871700232EF1000327C1019307700CEA -:10812000E3F4E7FA9306000013060000930500004D -:108130000325C100EF809FE013070500930710009F -:10814000631AF700971703009387C771130710008E -:1081500023A0E700130000008320C10213010103E4 -:1081600067800000130101FD232611022326A100D0 -:108170008327C100232EF1008327C10103A74700F5 -:108180009307A00A6310F7028327C10103A7070022 -:108190008327C10193878700938507001305070094 -:1081A000EFF0DFDF8327C10183A7070093060000FC -:1081B000130600009305000013850700EF90CFA47D -:1081C0001307050093071000631AF70097170300C1 -:1081D000938747691307100023A0E7008327C10195 -:1081E00003A707008327C1019387870093850700B2 -:1081F00013050700EFF0DFE88327C10103A707009D -:108200008327C10193878700938507001305070023 -:10821000EFF0DFD86FF09FFC130101FF9307100010 -:108220002326F100971703009387C76383A70700EE -:108230006384070023260100971703009387C76212 -:1082400003A78700971703009387876383A7070017 -:108250006316F700232601006F00C0019717030083 -:108260009387876003A78700971703009387476169 -:1082700023A0E700971703009387075F03A7470131 -:10828000971703009387076083A707006316F7001B -:10829000232601006F00C001971703009387C75C76 -:1082A00003A74701971703009387C75D23A0E70043 -:1082B0008327C100138507001301010167800000B7 -:1082C000130101FF2326110013054000EF80DF9DFD -:1082D00013070500971703009387075B23A0E700A8 -:1082E000971703009387475A83A7070097850100D4 -:1082F0009385C50313850700EF901FB197170300FF -:108300009387875883A707006388070893080000AE -:1083100013080000971703009387C758130720001E -:108320009306000013060040978501009385050120 -:108330001705000013058507EF901FC6930800007E -:1083400013080000971703009387075613071000C0 -:10835000930600001306004097850100938585FE73 -:10836000170500001305C51AEF901FC393080000FE -:108370001308000093070000130700009306000095 -:108380001306004097850100938545FC1705000002 -:1083900013050529EF905FC0130000008320C10082 -:1083A0001301010167800000130101FD2326110262 -:1083B0002326A100971703009387074D83A7070083 -:1083C00013850700EF801F9B13070500930710001C -:1083D000631AF700971703009387474B13071000A2 -:1083E00023A0E700232E01006F00C00497170300AD -:1083F0009387874983A707009305800013850700AB -:10840000EF80DFA01307050093071000630AF70051 -:1084100097170300938787471307100023A0E700EF -:1084200013054001EFA04F838327C10193871700F5 -:10843000232EF1000327C10193079000E3F8E7FA28 -:10844000232E01006F00800413054001EFA0CF80B0 -:10845000971703009387474383A7070013850700F7 -:10846000EF805F911307050093071000630AF70080 -:1084700097170300938787411307100023A0E70095 -:108480008327C10193871700232EF1000327C10121 -:1084900093079000E3FAE7FA971703009387C73E24 -:1084A00083A7070013850700EF80DF8C1307050003 -:1084B00093071000631AF700971703009387073D8F -:1084C0001307100023A0E700971703009387C73C0A -:1084D00083A7070013871700971703009387C73BED -:1084E00023A0E700971703009387873A130710002C -:1084F00023A0E70013050000EFA00FBA97170300B1 -:108500009387073923A007006FF0DFEA130101FE0C -:10851000232E11002326A100971703009387C73647 -:1085200083A707009305E0FF13850700EF801F8EE8 -:1085300013070500930710006312F708971703004D -:108540009387073503A7070093071000630CF70014 -:1085500097170300938787331307100023A0E700C2 -:108560006F00C006971703009387073283A70700A1 -:1085700013850700EF801F80130705009307100085 -:10858000630AF7009717030093874730130710001B -:1085900023A0E700971703009387C72F1307100046 -:1085A00023A0E70013050000EFA00FAF971703000B -:1085B0009387472E23A007006F0040019717030001 -:1085C0009387C72C1307100023A0E7009717030019 -:1085D0009387C72C83A707001387170097170300FB -:1085E0009387872B83A70700630AF7009717030079 -:1085F0009387C7291307100023A0E70097170300EC -:108600009387C72983A707001387170097170300CD -:108610009387C72823A0E7006FF01FF0130101FE26 -:10862000232E11002326A100971703009387C72547 -:1086300083A707009305000013850700EF800FFD57 -:108640001307050093071000E310F7FE97170300C8 -:108650009387472583A7070013850700EF90DFE87E -:1086600013070500930730006306F70073700430AA -:108670006F000000971703009387072383A7070065 -:1086800013850700EF905FE613070500930730009E -:108690006306F700737004306F0000009717030043 -:1086A0009387471F03A7070093071000631CF70079 -:1086B000971703009387C71D03A7070093071000B0 -:1086C000630CF700971703009387471C13071000EC -:1086D00023A0E7006F004013971703009387471C00 -:1086E00083A7070013871700971703009387471B7B -:1086F00023A0E700971703009387071B83A70700B2 -:1087000013850700EFA00FB497170300938787190D -:1087100083A7070013850700EFA0CFB297170300C8 -:108720009387471703A7070093071000630CF70010 -:10873000971703009387C71503A707009307100037 -:10874000631AF70097170300938747141307100065 -:1087500023A0E70013050000EF905FE81307050072 -:10876000930720006306F700737004306F00000069 -:10877000971703009387071383A707001385070044 -:10878000EF909FD613070500930720006306F700BC -:10879000737004306F000000971703009387C710B1 -:1087A00083A7070013850700EF901FD41307050068 -:1087B000930720006306F700737004306F00000019 -:1087C000971703009387470C83A7070013850700BB -:1087D000EF804FDA1307050093071000630AF700D4 -:1087E000971703009387870A1307100023A0E70059 -:1087F00013050000EF909FDE93070500E38607E274 -:10880000737004306F0000006FF01FE2130101FF6E -:10881000971703009387870903A70700971703009B -:108820009387870783A70700631CF7009717030048 -:108830009387C7051307100023A0E7006F00C0014E -:10884000971703009387470503A7070097170300AF -:108850009387C70523A0E700971703009387470571 -:1088600003A70700971703009387470383A7070011 -:10887000631CF70097170300938747011307100045 -:1088800023A0E7006F00C00197170300938707013B -:1088900003A70700971703009387870123A0E7002A -:1088A000971703009387070103A707009717030093 -:1088B000938707FF83A70700631CF7009717030040 -:1088C0009387C7FC1307100023A0E7006F00C001C7 -:1088D000971703009387C7FC03A7070097170300A8 -:1088E000938747FD23A0E70097170300938707FAB4 -:1088F00003A70700930710006316F7002326010063 -:108900006F00C000930710002326F1008327C100E9 -:10891000138507001301010167800000B305B5004E -:10892000930705006386B70003C7070063160700B7 -:108930003385A74067800000938717006FF09FFE84 -:10894000130101FD23286101232671012326110251 -:10895000232481022322910223202103232E31018B -:10896000232C4101232A5101232481012322910137 -:108970002320A101130B0500938B0500639E06388D -:108980003709028093040600130A0500130909350C -:1089900063F8C512B7070100138405006378F61069 -:1089A0001307F00F3337C70013173700B357E6002C -:1089B0003309F900834609003387E6009306000275 -:1089C000B386E640638C06003394DB003357EB003C -:1089D000B314D60033648700331ADB0093DA040142 -:1089E00093850A0013050400EF00902A93090500FF -:1089F00093850A0013050400139B0401EF00D024A3 -:108A0000135B0B01130905009305050013050B000B -:108A1000EF00D0209399090193570A01B3E7F900B9 -:108A20001304090063FEA700B38797001304F9FF3E -:108A300063E8970063F6A7001304E9FFB387970084 -:108A40003389A74093850A0013050900EF005024DD -:108A50009309050093850A0013050900EF00D01E55 -:108A6000131A0A01130905009305050093990901DA -:108A700013050B00135A0A01EF00501A33EA49019B -:108A800013060900637CAA00338A44011306F9FF28 -:108A900063669A006374AA001306E9FF13140401C5 -:108AA0003364C400930A00006F000013B70700018D -:108AB00013070001E36CF6EE130780016FF01FEF60 -:108AC00093890600631A0600930500001305100041 -:108AD000EF00901793040500B707010063FEF4123E -:108AE0009307F00F63F4970093098000B3D7340124 -:108AF0003309F900034709009306000233073701E1 -:108B0000B386E6406394061233849B40930A1000B8 -:108B100013DB040193050B0013050400EF0050174D -:108B20009309050093050B0013050400939B0401B2 -:108B3000EF00901193DB0B0113090500930505006D -:108B400013850B00EF00900D9399090193570A01CB -:108B5000B3E7F9001304090063FEA700B387970089 -:108B60001304F9FF63E8970063F6A7001304E9FF15 -:108B7000B38797003389A74093050B0013050900BD -:108B8000EF0010119309050093050B001305090070 -:108B9000EF00900B131A0A01130905009305050055 -:108BA0009399090113850B00135A0A01EF0010076E -:108BB00033EA490113060900637CAA00338A4401A1 -:108BC0001306F9FF63669A006374AA001306E9FFAF -:108BD000131404013364C4001305040093850A00D0 -:108BE0008320C1020324810283244102032901025C -:108BF0008329C101032A8101832A4101032B010139 -:108C0000832BC100032C8100832C4100032D010024 -:108C10001301010367800000B707000193090001F9 -:108C2000E3E6F4EC930980016FF05FECB394D400B9 -:108C3000B3D9EB0013D404013357EB00B39BDB0033 -:108C40009305040013850900B36B7701331ADB0029 -:108C5000EF001004130905009305040013850900B3 -:108C6000139B0401EF00407E135B0B019309050089 -:108C70009305050013050B00EF00407A1319090155 -:108C800013D70B013367E900938A0900637EA700BD -:108C900033079700938AF9FF636897006376A7000C -:108CA000938AE9FF33079700B309A74093050400AF -:108CB00013850900EF00C07D93050400130905002A -:108CC00013850900EF0040781304050093050500A3 -:108CD00013050B00EF00807413970B011357070166 -:108CE00013190901B367E9001307040063FEA70025 -:108CF000B38797001307F4FF63E8970063F6A700B4 -:108D00001307E4FFB3879700939A0A013384A740BF -:108D1000B3EAEA006FF0DFDF63ECD51EB7070100AE -:108D200063F4F6041307F00FB335D70093953500BD -:108D30003707028013070735B3D7B600B387E700BC -:108D400003C70700930A00023307B700B38AEA405B -:108D500063960A0213041000E3E076E93336CB0091 -:108D6000134416006FF05FE7B70700019305000199 -:108D7000E3E0F6FC930580016FF09FFBB35CE60037 -:108D8000B3965601B3ECDC00B3D4EB00B3975B01B0 -:108D900093DB0C013357EB0093850B001385040024 -:108DA0003364F700B3195601EF00806E1309050014 -:108DB00093850B0013850400139C0C01EF00C06821 -:108DC000135C0C01930405009305050013050C00CA -:108DD000EF00C06413190901135704013367E90058 -:108DE000138A0400637EA70033079701138AF4FFF8 -:108DF000636897016376A700138AE4FF330797013E -:108E0000B304A74093850B0013850400EF0040686E -:108E10001309050093850B0013850400EF00C06261 -:108E2000930405009305050013050C00EF00005F97 -:108E3000931704011319090193D70701B367F900C8 -:108E40001386040063FEA700B38797011386F4FF1F -:108E500063E8970163F6A7001386E4FFB3879701E1 -:108E600013140A01B70B01003364C4001389FBFF1C -:108E7000337D240133F92901B384A7409305090008 -:108E800013050D00EF008059935C04019305090060 -:108E9000130A050013850C00EF00405893D909010F -:108EA000130C05009385090013850C00EF00005793 -:108EB000130905009385090013050D00EF00005606 -:108EC0003305850193570A013385A7006374850133 -:108ED0003309790193570501B387270163E6F4024B -:108EE000E392F4BCB70701009387F7FF3375F500F1 -:108EF00013150501337AFA0033165B01330545017A -:108F0000930A0000E37AA6CC1304F4FF6FF09FB934 -:108F1000930A0000130400006FF01FCC130101FB43 -:108F20002324810423229104232E3103232291033D -:108F30002326110423202105232C4103232A510336 -:108F40002328610323267103232481032320A10303 -:108F5000232EB101930C050093890500130405002D -:108F600093840500639E0626B70A02801309060053 -:108F7000138A0600938A0A3563F4C514B707010003 -:108F80006376F6129307F00F63F4C700130A8000AC -:108F9000B3574601B38AFA0003C70A00130500025B -:108FA00033074701330AE540630C0A00B3954901D2 -:108FB00033D7EC0033194601B364B70033944C0146 -:108FC000935A090193850A0013850400EF00404C71 -:108FD0009309050093850A00131B090113850400FA -:108FE000EF008046135B0B019305050013050B0092 -:108FF000EF00C0429399090193570401B3E7F900C8 -:1090000063FAA700B387270163E6270163F4A7008B -:10901000B3872701B384A74093850A001385040012 -:10902000EF0000479309050093850A0013850400AB -:10903000EF00804113140401930505009399090181 -:1090400013050B0013540401EF00403D33E4890085 -:10905000637AA40033042401636624016374A400CA -:10906000330424013304A440335544019305000024 -:109070008320C104032481048324410403290104BF -:109080008329C103032A8103832A4103032B01039C -:10909000832BC102032C8102832C4102032D010288 -:1090A000832DC1011301010567800000B70700018E -:1090B000130A0001E36EF6EC130A80016FF05FED16 -:1090C000631A06009305000013051000EF00C03777 -:1090D00013090500B7070100637AF90E9307F00F33 -:1090E00063F42701130A8000B3574901B38AFA00D9 -:1090F00003C70A0013050002B3842941330747015F -:10910000330AE540E30E0AEA33194901B3DAE9000C -:10911000B395490133D7EC0093540901336BB70081 -:1091200013850A0093850400EF008036930905003B -:1091300093850400931B090113850A00EF00C030DA -:1091400093DB0B019305050013850B00EF00002D49 -:109150009399090193570B01B3E7F90033944C013C -:1091600063FAA700B387270163E6270163F4A7002A -:10917000B3872701B38AA7409385040013850A00AB -:10918000EF000031930905009385040013850A0060 -:10919000EF00802B9305050013850B00EF000028DE -:1091A00093150B019399090193D50501B3E5B90016 -:1091B00063FAA500B385250163E6250163F4A500E4 -:1091C000B3852501B384A5406FF09FDFB707000189 -:1091D000130A0001E36AF9F0130A80016FF0DFF06F -:1091E000E3E8D5E8B707010063FCF604930BF00F42 -:1091F00033B5DB001315350037070280B3D7A6005F -:1092000013070735B387E70083CB070093050002F8 -:10921000B38BAB00338B7541631E0B0263E43601E5 -:1092200063EACC003384CC40B386D94033B58C009C -:10923000B384A64013050400938504006FF05FE338 -:10924000B707000113050001E3E8F6FA13058001F2 -:109250006FF09FFAB3966601335D7601336DDD00E2 -:1092600033D47901B395690133DC7C0193540D014A -:10927000336CBC001305040093850400B31A660127 -:10928000EF000021130A0500938504001305040074 -:1092900033996C01931C0D01EF00001B93DC0C0152 -:1092A000130405009305050013850C00EF0000175B -:1092B000131A0A0113570C013367EA00130A04005A -:1092C000637EA7003307A701130AF4FF6368A701B1 -:1092D0006376A700130AE4FF3307A701B309A74089 -:1092E0009385040013850900EF00801A938504001C -:1092F0001304050013850900EF0000159305050010 -:109300009304050013850C00EF00401193150C0128 -:109310001314040193D50501B365B4001387040049 -:1093200063FEA500B385A5011387F4FF63E8A501DB -:1093300063F6A5001387E4FFB385A501131A0A019C -:10934000B70C0100336AEA001384FCFFB3778A008C -:1093500033F48A00B384A540138507009305040005 -:109360002326F100135A0A01EF00400B9309050070 -:109370009305040013050A00EF00400A13DC0A01FC -:10938000930D050093050C0013050A00EF0000097A -:109390008327C100130A050093050C0013850700FD -:1093A000EF00C0073305B50113D709013307A70044 -:1093B0006374B701330A9A01B70701009387F7FF77 -:1093C000935507013377F70013170701B3F7F90037 -:1093D000B3854501B307F70063E6B400639EB400AC -:1093E000637CF90033865741B3B7C700B385A54105 -:1093F000B385F54093070600B307F9403339F90008 -:10940000B385B440B385254133947501B3D7670163 -:109410003365F400B3D565016FF09FC513060500F1 -:109420001305000093F61500638406003305C5009C -:1094300093D5150013161600E39605FE678000000D -:109440006340050663C605061386050093050500FF -:109450001305F0FF630C060293061000637AB60052 -:109460006358C0001316160093961600E36AB6FE02 -:109470001305000063E6C500B385C5403365D5001C -:1094800093D6160013561600E39606FE678000007A -:1094900093820000EFF05FFB1385050067800200F8 -:1094A0003305A04063D80500B305B0406FF0DFF985 -:1094B000B305B04093820000EFF01FF93305A040E0 -:1094C000678002009382000063CA0500634C0500B8 -:1094D000EFF09FF71385050067800200B305B040E9 -:1094E000E35805FE3305A040EFF01FF63305B0400A -:0494F000678002008F -:02000004800278 -:1000000049444C45000000007C4BFEFF144BFEFFB2 -:10001000304BFEFF484BFEFF584BFEFF4C4DFEFFA2 -:10002000E44CFEFF004DFEFF184DFEFF284DFEFF85 -:10003000546D7220537663007456FEFF7456FEFFB3 -:100040007456FEFF5C57FEFF0457FEFF4C57FEFF41 -:100050007456FEFF7456FEFF5C57FEFF0457FEFF0A -:10006000546D725100000000286E756C6C29000000 -:10007000986DFEFFD470FEFFC070FEFFD470FEFFCF -:10008000D470FEFFD470FEFFD470FEFF446EFEFFFE -:10009000D470FEFFD470FEFFDC6DFEFF5C6EFEFFD1 -:1000A000D470FEFFE86DFEFFF46DFEFFF46DFEFF01 -:1000B000F46DFEFFF46DFEFFF46DFEFFF46DFEFFC8 -:1000C000F46DFEFFF46DFEFFF46DFEFFD470FEFFD5 -:1000D000D470FEFFD470FEFFD470FEFFD470FEFF1C -:1000E000D470FEFFD470FEFFD470FEFFD470FEFF0C -:1000F000D470FEFFD470FEFFD470FEFFD470FEFFFC -:10010000D470FEFFD470FEFFD470FEFFD470FEFFEB -:10011000D470FEFFD470FEFFD470FEFFD470FEFFDB -:10012000D470FEFFD470FEFFD470FEFFD470FEFFCB -:10013000D470FEFFD470FEFFD470FEFFD470FEFFBB -:10014000D470FEFFD470FEFFD470FEFFD470FEFFAB -:10015000D470FEFFD470FEFFD470FEFFD470FEFF9B -:10016000D470FEFFD470FEFFD470FEFFD470FEFF8B -:100170009C6EFEFFB46FFEFFD470FEFFD470FEFFD6 -:10018000D470FEFFD470FEFFD470FEFFD470FEFF6B -:10019000D470FEFF8C6EFEFFD470FEFFD470FEFFA5 -:1001A0004470FEFF5070FEFFD470FEFFD470FEFF5F -:1001B000C06EFEFFD470FEFF3870FEFFD470FEFFED -:1001C000D470FEFF7870FEFF6D69616F750A0000E4 -:1001D0006D69616F75320A0068756E6772790A0021 -:1001E0006672656552544F532064656D6F20626F6F -:1001F0006F740A00437265617465207461736B7378 -:100200000A000000436865636B54696D6572000005 -:1002100053746172742074696D65720A0000000085 -:100220005374617274206B65726E656C0A00000015 -:100230007469636B2025640D0A00000063686563C0 -:100240006B20210D0A0000004572726F7220696EEA -:1002500020626C6F636B2074696D652074657374C4 -:10026000207461736B73200D0A0000004572726F79 -:100270007220696E20636F756E74696E6720736596 -:100280006D6170686F7265207461736B73200D0A05 -:10029000000000004572726F7220696E2072656303 -:1002A000757273697665206D7574657820746173F5 -:1002B0006B73200D0A0000004572726F7220666F2A -:1002C000756E6421200D0A005041535321200D0A00 -:1002D00000000000426C6F636B5F54696D655F5195 -:1002E0007565756500000000425465737431000047 -:1002F0004254657374320000436F756E74696E67A3 -:100300005F53656D5F310000436F756E74696E6792 -:100310005F53656D5F320000434E543100000000B2 -:10032000434E543200000000526563757273697663 -:10033000655F4D757465780052656331000000009B -:100340005265633200000000526563330000000014 -:10035000000102020303030304040404040404046C -:10036000050505050505050505050505050505053D -:10037000060606060606060606060606060606061D -:10038000060606060606060606060606060606060D -:1003900007070707070707070707070707070707ED -:1003A00007070707070707070707070707070707DD -:1003B00007070707070707070707070707070707CD -:1003C00007070707070707070707070707070707BD -:1003D000080808080808080808080808080808089D -:1003E000080808080808080808080808080808088D -:1003F000080808080808080808080808080808087D -:10040000080808080808080808080808080808086C -:10041000080808080808080808080808080808085C -:10042000080808080808080808080808080808084C -:10043000080808080808080808080808080808083C -:10044000080808080808080808080808080808082C -:100450001000000000000000037A5200017C01013E -:100460001B0C02008800000018000000D484FEFF6E -:10047000DC0500000004040000000E300430000021 -:1004800000960897098101880289039204930594D4 -:10049000069507980A990B9A0C04700200000AC18D -:1004A0000404000000C80404000000C904040000A3 -:1004B00000D20404000000D30404000000D40404AB -:1004C000000000D50404000000D60404000000D79A -:1004D0000404000000D80404000000D90404000053 -:1004E00000DA04040000000E0004040000000B0009 -:1004F00090000000A4000000248AFEFF0005000018 -:100500000004040000000E5004340000008802893A -:10051000039305990B810192049406950796089719 -:1005200009980A9A0C9B0D04200100000AC10404DA -:10053000000000C80404000000C90404000000D248 -:100540000404000000D30404000000D404040000EC -:1005500000D50404000000D60404000000D7040401 -:10056000000000D80404000000D90404000000DAF0 -:100570000404000000DB04040000000E000404007A -:0405800000000B006C -:10058C00AAAAAAAA40FF0FF048FF0FF0080000002B -:08059C00FC8F010004000000C7 -:040000058000004037 -:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-breakpoint.hex b/benchmarks/riscv_tests/isa/rv32mi-p-breakpoint.hex new file mode 100644 index 00000000..314a0cd9 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-breakpoint.hex @@ -0,0 +1,49 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130FCF2063040F0067000F00AD +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:10011000930120007310007AF325007A631EB00E5D +:1001200017060000130606027310267A3705002012 +:10013000130545047310157AF325107A6318B5007A +:10014000630E000A9301300003250600930140006E +:1001500037050020130515047310157AF325107A5E +:100160006310B502172600001306C6E97310267A3D +:1001700003260600630406089301500023200600AE +:100180009301600037050020130525047310157ACC +:10019000F325107A6312B5062320C6009301700080 +:1001A00003260600631C0604130510007310057A6D +:1001B000F325007A6312B5063705002013051504F0 +:1001C0007310157A97260000938606E47390267ABA +:1001D0009301800083A60600638206029301A000BB +:1001E00017260000130606E22320C6009301B00084 +:1001F0000326060063140600631030020F00F00FA0 +:10020000638001009391110093E111009308D005E0 +:1002100013850100730000000F00F00F9301100020 +:100220009308D005130500007300000093F211003D +:10023000E39602FC9302300073232034E39062FCC7 +:10024000F3221034938242007390123473002030F2 +:10025000731000C00000000000000000000000005B +:10026000000000000000000000000000000000008E +:10027000000000000000000000000000000000007E +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000000000000000000000000000000000000D0 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-csr.hex b/benchmarks/riscv_tests/isa/rv32mi-p-csr.hex new file mode 100644 index 00000000..491e27b0 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-csr.hex @@ -0,0 +1,57 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130F8F2663040F0067000F00E7 +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:1001100073D0013473250034930E30009301200016 +:10012000631CD513F3F50034930E300093013000B7 +:100130006394D51373660234930E2000930140003C +:10014000631CD611F3560134930E600093015000E6 +:100150006394D6113725AD0B1305A5DEF3150534D1 +:10016000930E2000930160006398D50F372500009F +:100170001305A5DE73350534B72EAD0B938EAEDEB9 +:1001800093017000631AD50D37C500001305F5EE15 +:1001900073250534B70EAD0B93018000631ED50B9C +:1001A00073250034B7CEAD0B938EFEEE9301900015 +:1001B0006314D50B7325103013750502630805020F +:1001C000B765000073A00530530000F073B0053030 +:1001D00097250000938505E327A0050003A50500EA +:1001E000930E10009301A0006318D50773251030FB +:1001F000135545011375150063040504B72200006B +:100200009382028073B00230970200009382020151 +:1002100073901234730020301305F00F731500C073 +:10022000930EF00F9301B0006318D5031305F00F80 +:1002300073250030930EF00F9301C000631ED501AB +:100240000F00F00F930110009308D0051305000074 +:1002500073000000631030020F00F00F6380010094 +:100260009391110093E111009308D00513850100CB +:10027000730000000F00F00F930110009308D005E9 +:1002800013050000730000009302900063E6510024 +:100290009302B00063F23202F32220341303800091 +:1002A000E39C62FA0F00F00F930110009308D00551 +:1002B0001305000073000000F32220341303200014 +:1002C000E39C62F8F322103493824200739012345C +:1002D00073002030731000C0000000000000000018 +:1002E000000000000000000000000000000000000E +:1002F00000000000000000000000000000000000FE +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000001000000000000000000000000000000CF +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-illegal.hex b/benchmarks/riscv_tests/isa/rv32mi-p-illegal.hex new file mode 100644 index 00000000..eba9e32d --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-illegal.hex @@ -0,0 +1,81 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130F0F2E63040F0067000F005F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:1001100093012000000000006F00400FB722000094 +:100120009382028073B00230371300001303038000 +:1001300073200330F3230030B3F353006316730EC0 +:100140007350413473504130970200009382921BE8 +:1001500073945230F322503093F2120063860200FF +:10016000736004306F0000007310543073503130EE +:10017000970200009382820273901234B72200002B +:100180009382028073B002303713000013030380A0 +:100190007320033073002030730050100000000003 +:1001A0006F00C006730050106F004006730000120D +:1001B000F3220018000000006F00400573000012D9 +:1001C0006F00C004F32200186F0040049702000083 +:1001D00093820202739012149302001073A0021013 +:1001E0009302000273B002107300201000000000A0 +:1001F0006F00C001970200009382020173901214F5 +:10020000730020106F008000631030020F00F00FA9 +:10021000638001009391110093E111009308D005D0 +:1002200013850100730000000F00F00F9301100010 +:100230009308D005130500007300000013000000B0 +:100240001300000013000000130000001300000062 +:100250001300000013000000130000001300000052 +:100260001300000013000000130000001300000042 +:100270001300000013000000130000001300000032 +:100280001300000013000000130000001300000022 +:100290001300000013000000130000001300000012 +:1002A0001300000013000000130000001300000002 +:1002B00013000000130000001300000013000000F2 +:1002C00013000000130000001300000013000000E2 +:1002D00013000000130000001300000013000000D2 +:1002E00013000000130000001300000013000000C2 +:1002F00013000000130000001300000013000000B2 +:100300006F0000046FF05FE66FF05FF06FF01FF0BA +:100310006FF0DFEF6FF09FEF6FF05FEF6FF01FEFA9 +:100320006FF0DFEE6FF09FEE6FF05FEE6FF01FEE9D +:100330006FF0DFED6FF09FED6FF05FED6FF01FED91 +:1003400013032000F3222034E39262ECF3221034F2 +:10035000F3233034638E030003D30200B3C363007E +:1003600003D3220013130301B3C36300E39003EA32 +:1003700017030000130343DA638E620417030000BF +:10038000130303E2638E6204170300001303C3E147 +:100390006382620417030000130303E263886204AC +:1003A000170300001303C3E1638662021703000012 +:1003B000130383E16380620217030000130343E326 +:1003C000638C6202170300001303C3E3638C6202B1 +:1003D0006FF0DFE393828200739012347300203059 +:1003E00037032000732003306FF0DFFE3703100067 +:1003F000732003306FF01FFE37034000732003307B +:100400006FF05FFD6FF01FFD731000C00000000073 +:1004100000000000000000000000000000000000DC +:1004200000000000000000000000000000000000CC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:08048000000000000000000074 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-ma_addr.hex b/benchmarks/riscv_tests/isa/rv32mi-p-ma_addr.hex new file mode 100644 index 00000000..1f90ed5e --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-ma_addr.hex @@ -0,0 +1,73 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130F8F2A63040F0067000F00E3 +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:1001100017240000130404EF93044000930120000F +:10012000970300009383C301130314000313140007 +:10013000B7C3FFFF9383C3BC631E731493013000E6 +:10014000970300009383C3011303140003531400A7 +:10015000B7C300009383C3BC631E731293014000B6 +:10016000970300009383C3011303140003231400B7 +:10017000B7C3AA999383C3BC631E73109301500045 +:10018000970300009383C301130324000323240077 +:10019000B7B399889383B3AB631E730E930160006A +:1001A000970300009383C301130334000323340037 +:1001B000B7A388779383A39A631E730C930460009C +:1001C000930160019703000093830303130314005A +:1001D000A310040003030400630E030A03033400A6 +:1001E000630A030A030314006316030A03032400CB +:1001F0006312030A930170019703000093830303C2 +:1002000013035400A32204000303440063040308FF +:10021000030394006300030803035400631C0306F4 +:100220000303840063180306930180019703000011 +:10023000938303031303A400232504000303940002 +:10024000630A03040303E400630603040303A40036 +:10025000631203040303D400631E0302930190019D +:1002600097030000938303031303F400A327040000 +:100270000303E4006300030203033401630C03007F +:100280000303F40063180300030324016314030051 +:10029000631030020F00F00F638001009391110092 +:1002A00093E111009308D00513850100730000004D +:1002B0000F00F00F930110009308D0051305000004 +:1002C0007300000013000000F3222034E39492FC3A +:1002D000F3223034E39062FC83820200E38C02FA62 +:1002E0007390133473002030731000C000000000BE +:1002F00000000000000000000000000000000000FE +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000DDCCBBAA998877665544332211EEFFEEEA +:1020100050505050505050505050505050505050C0 +:1020200050505050505050505050505050505050B0 +:1020300050505050505050505050505050505050A0 +:102040005050505050505050505050505050505090 +:102050005050505050505050505050505050505080 +:102060005050505050505050505050505050505070 +:102070005050505050505050505050505050505060 +:102080005050505050505050505050505050505050 +:102090005050505050505050505050505050505040 +:1020A0005050505050505050505050505050505030 +:1020B0005050505050505050505050505050505020 +:1020C0005050505050505050505050505050505010 +:1020D0005050505050505050505050505050505000 +:1020E00050505050505050505050505050505050F0 +:1020F00050505050505050505050505050505050E0 +:10210000505050505050505050505050505050001F +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-ma_fetch.hex b/benchmarks/riscv_tests/isa/rv32mi-p-ma_fetch.hex new file mode 100644 index 00000000..dd34985d --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-ma_fetch.hex @@ -0,0 +1,52 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130F0F2263040F0067000F006B +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:100110009301200013030000970200009382C200A5 +:100120006783220011A019A06F00800E9301300098 +:10013000970200009382C200678312006F00800064 +:100140006F00000D930140001303000097020000B0 +:100150009382C2006783320011A019A06F00400B88 +:100160009301500013030000970200009382C20025 +:100170006F03600011A019A06F0080099301600057 +:1001800013030000970200009382C2006303000083 +:1001900011A019A06F00C007930170006315000043 +:1001A0006F00C00009A009A06F00800693018000C5 +:1001B000F323103093F3430063880304010073704A +:1001C00012300100F323103093F3430063820304E1 +:1001D00097020000938242039382E2FF73901234ED +:1001E00073701230F323103093F34300639E0300C7 +:1001F000B72300009383038073A003307300203083 +:1002000063020000736012306F004002631030021E +:100210000F00F00F638001009391110093E1110032 +:100220009308D00513850100730000000F00F00F44 +:10023000930110009308D00513050000730000001F +:10024000130520006380A10213054000638CA10008 +:10025000130550006388A100130560006384A100AA +:100260006FF01FFBE31603FA93050000732520349B +:10027000E310B5FAF325103493854500E39AB2F8FC +:1002800073253034630605001305E5FFE31255F8C6 +:100290009385C5007390153473002030731000C02F +:1002A000000000000000000000000000000000004E +:1002B000000000000000000000000000000000003E +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-mcsr.hex b/benchmarks/riscv_tests/isa/rv32mi-p-mcsr.hex new file mode 100644 index 00000000..c587a0c2 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-mcsr.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F00013050580732005309702000093824201AA +:1001000073901234732540F1730020307325103042 +:100110001355E501930E1000930120006318D503D9 +:10012000732540F1930E0000930130006310D50356 +:10013000732530F1732520F1732510F1930200002F +:1001400073A0523073A01234631030020F00F00F0E +:10015000638001009391110093E111009308D00591 +:1001600013850100730000000F00F00F93011000D1 +:100170009308D0051305000073000000731000C041 +:10018000000000000000000000000000000000006F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-sbreak.hex b/benchmarks/riscv_tests/isa/rv32mi-p-sbreak.hex new file mode 100644 index 00000000..64b7b3d3 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-sbreak.hex @@ -0,0 +1,32 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130F0F1363040F0067000F007A +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:1001100093012000730010006F0080006310300214 +:100120000F00F00F638001009391110093E1110023 +:100130009308D00513850100730000000F00F00F35 +:10014000930110009308D005130500007300000010 +:1001500013033000F3222034E39462FC1703000001 +:10016000130383FBF3221034E39C62FA6FF01FFD4C +:10017000731000C00000000000000000000000003C +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-scall.hex b/benchmarks/riscv_tests/isa/rv32mi-p-scall.hex new file mode 100644 index 00000000..d41216e8 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-scall.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130F0F1763040F0067000F0076 +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:100110009301200013038000B72200009382028025 +:1001200073B00230F3230030B3F272006384020034 +:100130001303B000B72200009382028073B0023034 +:1001400097020000938202017390123473002030F2 +:1001500093011000730000006F00800063103002F4 +:100160000F00F00F638001009391110093E11100E3 +:100170009308D00513850100730000000F00F00FF5 +:10018000930110009308D0051305000073000000D0 +:10019000F3222034E39662FC970300009383C3FBB1 +:1001A000F3221034E39E72FA6FF05FFD731000C00B +:1001B000000000000000000000000000000000003F +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32mi-p-shamt.hex b/benchmarks/riscv_tests/isa/rv32mi-p-shamt.hex new file mode 100644 index 00000000..deec05a5 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32mi-p-shamt.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130F8F1463040F0067000F00F9 +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:100110001305100013150501B70E0100930120000F +:10012000631CD50113150502930E100093013000D6 +:100130006314D001631030020F00F00F63800100E0 +:100140009391110093E111009308D00513850100EC +:10015000730000000F00F00F930110009308D0050A +:10016000130500007300000093022000E39651FC89 +:10017000F322203413032000E39062FC6FF09FFD14 +:10018000731000C00000000000000000000000002C +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32si-p-csr.hex b/benchmarks/riscv_tests/isa/rv32si-p-csr.hex new file mode 100644 index 00000000..a6be5ac2 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32si-p-csr.hex @@ -0,0 +1,49 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000097020000938242169F +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39862F47350003011 +:1000F0003715000013050580732005301305200215 +:1001000073203530970200009382420173901234BD +:10011000732540F17300203073D00114732500144F +:10012000930E300093012000631AD50DF3F50014EF +:10013000930E3000930130006392D50D7366021464 +:10014000930E200093014000631AD60BF35601145E +:10015000930E6000930150006392D60B3725AD0BD0 +:100160001305A5DEF3150514930E2000930160001E +:100170006396D509372500001305A5DE73350514F0 +:10018000B72EAD0B938EAEDE930170006318D507CA +:1001900037C500001305F5EE73250514B70EAD0B3A +:1001A00093018000631CD50573250014B7CEAD0BF9 +:1001B000938EFEEE930190006312D505930200101A +:1001C00073B0021097020000938202017390121420 +:1001D0007300201013000000930E00009301C00074 +:1001E000631ED0010F00F00F930110009308D0059B +:1001F0001305000073000000631030020F00F00FC1 +:10020000638001009391110093E111009308D005E0 +:1002100013850100730000000F00F00F9301100020 +:100220009308D005130500007300000093029000AE +:1002300063E651009302B00063F23202F32220140D +:1002400013038000E39C62FA0F00F00F930110008B +:100250009308D0051305000073000000F32220145A +:1002600013032000E39C62F8F322101493824200EF +:100270007390121473002010731000C0000000006F +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000001000000000000000000000000000000CF +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32si-p-dirty.hex b/benchmarks/riscv_tests/isa/rv32si-p-dirty.hex new file mode 100644 index 00000000..49dc8507 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32si-p-dirty.hex @@ -0,0 +1,53 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0000130FCF1E63040F0067000F00AF +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF732540F136 +:1000500063100500970200009382020173905230F2 +:10006000735000189702000093820202739052307E +:10007000B70200809382F2FF7390023B9302F0017B +:100080007390023A9702000093828201739052307B +:100090007350203073503030735040309301000063 +:1000A00097020000938242F67390523013051000BD +:1000B0001315F501634C05000F00F00F93011000BC +:1000C0009308D005130500007300000093020000A0 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39A62F4735000300F +:1000F00037250000130505807320053097020000A6 +:100100009382420173901234732540F173002030C2 +:1001100037050080972500009385C5EE93D5C5006F +:10012000B3E5A5007390051873000012B71502001F +:100130009385058073A00530930120009303100080 +:1001400017250080232475EC93013000B7150400B7 +:100150009385058073A005309722008083A202EB6F +:10016000639C021017250080232275EA97220080E5 +:1001700083A2C2E963927210B702020073B0023028 +:100180009722000083A202E81305000CB3F2A2003C +:100190006394A20EB702020073A0023093014000E4 +:1001A00017250080032505E613650540972200808A +:1001B00023AAA2E4730000129722008023A4A2E4E1 +:1001C0006F00800B0F00F00F930110009308D00513 +:1001D0001305000073000000631030020F00F00FE1 +:1001E000638001009391110093E111009308D00501 +:1001F00013850100730000000F00F00F9301100041 +:100200009308D0051305000073000000F32220348A +:10021000938212FF6392020613032000639261022D +:100220009722000083A202DE13F302086316030480 +:10023000F322103493824200739012347300203002 +:1002400013033000639461029722000083A282DBD3 +:1002500013F302086312030293E20208172300005B +:10026000232253DA7300001273002030130340007E +:10027000639461006FF05FF80F00F00F638001007E +:100280009391110093E111009308D00513850100AB +:1002900073000000731000C00000000000000000A8 +:1002A000000000000000000000000000000000004E +:1002B000000000000000000000000000000000003E +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000005F00002000000000000000000000000051 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32si-p-ma_fetch.hex b/benchmarks/riscv_tests/isa/rv32si-p-ma_fetch.hex new file mode 100644 index 00000000..89b0230a --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32si-p-ma_fetch.hex @@ -0,0 +1,48 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C00013050000730000009702000093824212A3 +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39862F47350003011 +:1000F0003715000013050580732005301305200215 +:1001000073203530970200009382420173901234BD +:10011000732540F173002030930120001303000089 +:10012000970200009382C2006783220011A019A0E9 +:100130006F00C00893013000970200009382C20054 +:10014000678312006F0080006F004007930140003A +:1001500013030000970200009382C20067833200FD +:1001600011A019A06F008005930150001303000037 +:10017000970200009382C2006F03600011A019A0D3 +:100180006F00C0039301600013030000970200009A +:100190009382C2006303000011A019A06F00000247 +:1001A00093017000631500006F00C00009A009A052 +:1001B0006F00C0006F004002631030020F00F00FAC +:1001C000638001009391110093E111009308D00521 +:1001D00013850100730000000F00F00F9301100061 +:1001E0009308D005130500007300000013052000DC +:1001F0006380A10213054000638CA1001305500029 +:100200006388A100130560006384A1006FF01FFBE9 +:10021000E31603FA9305000073252014E310B5FAE2 +:10022000F325101493854500E39AB2F87325301432 +:10023000630605001305E5FFE31255F89385C50035 +:100240007390151473002010731000C0000000009C +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:10027000000000000000000000000000000000007E +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32si-p-sbreak.hex b/benchmarks/riscv_tests/isa/rv32si-p-sbreak.hex new file mode 100644 index 00000000..a2b54dbe --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32si-p-sbreak.hex @@ -0,0 +1,32 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C00013050000730000009702000093820209EC +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39862F47350003011 +:1000F0003715000013050580732005301305200215 +:1001000073203530970200009382420173901234BD +:10011000732540F17300203093012000730010001C +:100120006F008000631030020F00F00F6380010049 +:100130009391110093E111009308D00513850100FC +:10014000730000000F00F00F930110009308D0051A +:10015000130500007300000013033000F322201485 +:10016000E39462FC17030000130383FBF3221014D3 +:10017000E39C62FA6FF01FFD731000C000000000E6 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32si-p-scall.hex b/benchmarks/riscv_tests/isa/rv32si-p-scall.hex new file mode 100644 index 00000000..15356f6b --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32si-p-scall.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C0001305000073000000970200009382020BEA +:1000D000638E020073905210B7B2000093829210A8 +:1000E0007390223073232030E39862F47350003011 +:1000F0003715000013050580732005301305200215 +:1001000073203530970200009382420173901234BD +:10011000732540F173002030930120001303800009 +:100120009302001073B00210970200009382020144 +:1001300073901214730020109301100073000000DC +:100140006F008000631030020F00F00F6380010029 +:100150009391110093E111009308D00513850100DC +:10016000730000000F00F00F930110009308D005FA +:100170001305000073000000F3222014E39662FCD4 +:10018000970300009383C3FBF3221014E39E72FADB +:100190006FF05FFD731000C0000000000000000061 +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32si-p-wfi.hex b/benchmarks/riscv_tests/isa/rv32si-p-wfi.hex new file mode 100644 index 00000000..9bc3a47f --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32si-p-wfi.hex @@ -0,0 +1,32 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303715000018 +:1000F0001305058073200530130520027320353069 +:10010000970200009382420173901234732540F1EC +:1001100073002030737001107360411073604114DC +:10012000730050100F00F00F930110009308D005DA +:100130001305000073000000631030020F00F00F81 +:10014000638001009391110093E111009308D005A1 +:1001500013850100730000000F00F00F93011000E1 +:100160009308D0051305000073000000731000C051 +:0C01700000000000000000000000000083 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amoadd_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amoadd_w.hex new file mode 100644 index 00000000..14b26837 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amoadd_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B600B70E008093012000F1 +:100120006312D70583A70600B70E0080938E0E805A +:10013000930130006398D703B70500802FA7B6005E +:10014000B70E0080938E0E8093014000631CD70190 +:1001500083A70600930E0080930150006394D7019B +:10016000631030020F00F00F6380010093911100C3 +:1001700093E111009308D00513850100730000007E +:100180000F00F00F930110009308D0051305000035 +:1001900073000000731000C00000000000000000A9 +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amoand_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amoand_w.hex new file mode 100644 index 00000000..5bf66d9a --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amoand_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B660B70E00809301200091 +:10012000631ED70383A70600B70E0080930130003B +:100130006396D703B70500802FA7B660B70E00807F +:1001400093014000631CD70183A70600B70E00800F +:10015000930150006394D701631030020F00F00F39 +:10016000638001009391110093E111009308D00581 +:1001700013850100730000000F00F00F93011000C1 +:100180009308D0051305000073000000731000C031 +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amomax_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amomax_w.hex new file mode 100644 index 00000000..dadeb58d --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amomax_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B6A0B70E00809301200051 +:100120006310D70583A70600930E0080930130006B +:100130006398D7039305100023A006002FA7B6A04D +:10014000930E000093014000631CD70183A70600B3 +:10015000930E1000930150006394D7016310300296 +:100160000F00F00F638001009391110093E11100E3 +:100170009308D00513850100730000000F00F00FF5 +:10018000930110009308D0051305000073000000D0 +:10019000731000C00000000000000000000000001C +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amomaxu_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amomaxu_w.hex new file mode 100644 index 00000000..01cb228b --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amomaxu_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B6E0B70E00809301200011 +:100120006310D70583A70600930E0080930130006B +:100130006398D7039305F0FF23A006002FA7B6E02E +:10014000930E000093014000631CD70183A70600B3 +:10015000930EF0FF930150006394D70163103002B7 +:100160000F00F00F638001009391110093E11100E3 +:100170009308D00513850100730000000F00F00FF5 +:10018000930110009308D0051305000073000000D0 +:10019000731000C00000000000000000000000001C +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amomin_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amomin_w.hex new file mode 100644 index 00000000..e738efe4 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amomin_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B680B70E00809301200071 +:100120006310D70583A70600B70E00809301300047 +:100130006398D7039305F0FF23A006002FA7B6808E +:10014000930E000093014000631CD70183A70600B3 +:10015000930EF0FF930150006394D70163103002B7 +:100160000F00F00F638001009391110093E11100E3 +:100170009308D00513850100730000000F00F00FF5 +:10018000930110009308D0051305000073000000D0 +:10019000731000C00000000000000000000000001C +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amominu_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amominu_w.hex new file mode 100644 index 00000000..f01638eb --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amominu_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B6C0B70E00809301200031 +:100120006310D70583A70600B70E00809301300047 +:100130006398D7039305F0FF23A006002FA7B6C04E +:10014000930E000093014000631CD70183A70600B3 +:10015000930E0000930150006394D70163103002A6 +:100160000F00F00F638001009391110093E11100E3 +:100170009308D00513850100730000000F00F00FF5 +:10018000930110009308D0051305000073000000D0 +:10019000731000C00000000000000000000000001C +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amoor_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amoor_w.hex new file mode 100644 index 00000000..22625758 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amoor_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B640B70E008093012000B1 +:10012000631ED70383A70600930E0080930130005F +:100130006396D703930510002FA7B640930E008057 +:1001400093014000631CD70183A70600930E108023 +:10015000930150006394D701631030020F00F00F39 +:10016000638001009391110093E111009308D00581 +:1001700013850100730000000F00F00F93011000C1 +:100180009308D0051305000073000000731000C031 +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amoswap_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amoswap_w.hex new file mode 100644 index 00000000..5fdb507d --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amoswap_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B608B70E008093012000E9 +:10012000631ED70383A70600930E0080930130005F +:100130006396D703B70500802FA7B608930E0080FB +:1001400093014000631CD70183A70600B70E00800F +:10015000930150006394D701631030020F00F00F39 +:10016000638001009391110093E111009308D00581 +:1001700013850100730000000F00F00F93011000C1 +:100180009308D0051305000073000000731000C031 +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-amoxor_w.hex b/benchmarks/riscv_tests/isa/rv32ua-p-amoxor_w.hex new file mode 100644 index 00000000..08921e59 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-amoxor_w.hex @@ -0,0 +1,36 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:10010000370500809305008097260000938686EFD0 +:1001100023A0A6002FA7B620B70E008093012000D1 +:100120006316D70583A70600B70E0080938E0E8056 +:1001300093013000639CD703B70500C09385150079 +:100140002FA7B620B70E0080938E0E80930140003B +:10015000631ED70183A70600B70E00C0938E1E80D2 +:10016000930150006394D701631030020F00F00F29 +:10017000638001009391110093E111009308D00571 +:1001800013850100730000000F00F00F93011000B1 +:100190009308D0051305000073000000731000C021 +:1001A000000000000000000000000000000000004F +:0C01B00000000000000000000000000043 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-p-lrsc.hex b/benchmarks/riscv_tests/isa/rv32ua-p-lrsc.hex new file mode 100644 index 00000000..b40488a6 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-p-lrsc.hex @@ -0,0 +1,109 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F47350003097020000CB +:1000F0009382420173901234732540F173002030D3 +:1001000017250000130505F0930510002F26B500F4 +:1001100093061000E37ED6FE83250500E3EED5FEB0 +:1001200017250000130585EEB7C7ADDE9387F7EE00 +:100130002F27F518930E1000930120006316D70D9A +:1001400017270000032787EC930E0000930130006F +:10015000631CD70B17250000130545EB97250000FE +:100160009385052BAFA505102F27B518930E10000A +:1001700093014000631AD70917250000130505E90C +:1001800093050040130616002F2705103307C700FC +:100190002F27E518E31A07FE9385F5FFE39605FE82 +:1001A00017250000130545E6930510002F20B50024 +:1001B00083250500E3CED5FE0F00F00F17250000C4 +:1001C0000325C5E4939596003305B5409386F6FF65 +:1001D000E3DC06FE930E0000930150006316D50386 +:1001E00017250000130585E2AF250510AF2505187A +:1001F000E39C05FEAF250518930E100093016000E7 +:100200006394D501631030020F00F00F638001008A +:100210009391110093E111009308D005138501001B +:10022000730000000F00F00F930110009308D00539 +:0C0230001305000073000000731000C0F4 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000000000000000000000000000000000000D0 +:1020100000000000000000000000000000000000C0 +:1020200000000000000000000000000000000000B0 +:1020300000000000000000000000000000000000A0 +:102040000000000000000000000000000000000090 +:102050000000000000000000000000000000000080 +:102060000000000000000000000000000000000070 +:102070000000000000000000000000000000000060 +:102080000000000000000000000000000000000050 +:102090000000000000000000000000000000000040 +:1020A0000000000000000000000000000000000030 +:1020B0000000000000000000000000000000000020 +:1020C0000000000000000000000000000000000010 +:1020D0000000000000000000000000000000000000 +:1020E00000000000000000000000000000000000F0 +:1020F00000000000000000000000000000000000E0 +:1021000000000000000000000000000000000000CF +:1021100000000000000000000000000000000000BF +:1021200000000000000000000000000000000000AF +:10213000000000000000000000000000000000009F +:10214000000000000000000000000000000000008F +:10215000000000000000000000000000000000007F +:10216000000000000000000000000000000000006F +:10217000000000000000000000000000000000005F +:10218000000000000000000000000000000000004F +:10219000000000000000000000000000000000003F +:1021A000000000000000000000000000000000002F +:1021B000000000000000000000000000000000001F +:1021C000000000000000000000000000000000000F +:1021D00000000000000000000000000000000000FF +:1021E00000000000000000000000000000000000EF +:1021F00000000000000000000000000000000000DF +:1022000000000000000000000000000000000000CE +:1022100000000000000000000000000000000000BE +:1022200000000000000000000000000000000000AE +:10223000000000000000000000000000000000009E +:10224000000000000000000000000000000000008E +:10225000000000000000000000000000000000007E +:10226000000000000000000000000000000000006E +:10227000000000000000000000000000000000005E +:10228000000000000000000000000000000000004E +:10229000000000000000000000000000000000003E +:1022A000000000000000000000000000000000002E +:1022B000000000000000000000000000000000001E +:1022C000000000000000000000000000000000000E +:1022D00000000000000000000000000000000000FE +:1022E00000000000000000000000000000000000EE +:1022F00000000000000000000000000000000000DE +:1023000000000000000000000000000000000000CD +:1023100000000000000000000000000000000000BD +:1023200000000000000000000000000000000000AD +:10233000000000000000000000000000000000009D +:10234000000000000000000000000000000000008D +:10235000000000000000000000000000000000007D +:10236000000000000000000000000000000000006D +:10237000000000000000000000000000000000005D +:10238000000000000000000000000000000000004D +:10239000000000000000000000000000000000003D +:1023A000000000000000000000000000000000002D +:1023B000000000000000000000000000000000001D +:1023C000000000000000000000000000000000000D +:1023D00000000000000000000000000000000000FD +:1023E00000000000000000000000000000000000ED +:1023F00000000000000000000000000000000000DD +:1024000000000000000000000000000000000000CC +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amoadd_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amoadd_w.hex new file mode 100644 index 00000000..d7cc1056 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amoadd_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C58297F6FFFF6A +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385857F97F6FFFF9386C6AD17F6FFFF6D +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385457DB3 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385057897F6FFFFF3 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385057197F6FFFF9386C68C17F6FFFF0A +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938585671306100497F6FFFFD1 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306465897E6FFFFED +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306464997E6FFFF9386866A2E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306064097E6FFFF938686641D +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093076001930500001303F303D8 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B74A07DF +:102B8000B7050800938767AA130700009385C5FF60 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306462B97E6FFFF93868641E3 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B600B70E00809301200076 +:102C70006312D70583A70600B70E0080938E0E80DF +:102C8000930130006398D703B70500802FA7B600E3 +:102C9000B70E0080938E0E8093014000631CD70115 +:102CA00083A70600930E0080930150006394D70120 +:102CB000631A3000139511006300050013651500B9 +:102CC000730000001305100073000000731000C0B3 +:102CD000417373657274696F6E206661696C6564B7 +:102CE0003A2061646472203E3D202831554C203CDE +:102CF0003C203132292026262061646472203C2049 +:102D00003633202A202831554C203C3C20313229B2 +:102D10000A000000417373657274696F6E2066610A +:102D2000696C65643A20212870745B315D5B616475 +:102D300064722F2831554C203C3C203132295D20D3 +:102D4000262030783038302920262620636175739C +:102D500065203D3D203078660A00000041737365B0 +:102D60007274696F6E206661696C65643A206E6F7B +:102D700064650A00417373657274696F6E206661E1 +:102D8000696C65643A20757365725F6D6170706916 +:102D90006E675B616464722F2831554C203C3C2087 +:102DA0003132295D2E61646472203D3D20300A007D +:102DB000417373657274696F6E206661696C6564D6 +:102DC0003A2070745B315D5B616464722F28315509 +:102DD0004C203C3C203132295D2026203078303494 +:102DE000300A0000417373657274696F6E2066610A +:102DF000696C65643A2070745B315D5B6164647218 +:102E00002F2831554C203C3C203132295D20262092 +:102E100030783038300A0000417373657274696F1E +:102E20006E206661696C65643A2074662D3E65703B +:102E30006320252034203D3D20300A004173736516 +:102E40007274696F6E206661696C65643A20212234 +:102E5000696C6C6567616C20696E737472756374FC +:102E6000696F6E220A000000417373657274696FA6 +:102E70006E206661696C65643A202122756E657802 +:102E800070656374656420657863657074696F6EDE +:102E9000220A0000417373657274696F6E20666167 +:102EA000696C65643A202122756E737570706F725B +:102EB0007465642073617470206D6F6465220A000C +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amoand_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amoand_w.hex new file mode 100644 index 00000000..99849aec --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amoand_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385458297F6FFFFEA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385057F97F6FFFF9386C6AD17F6FFFFED +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385C57C34 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857797F6FFFF74 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857097F6FFFF9386C68C17F6FFFF8B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938505671306100497F6FFFF51 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65797E6FFFF6E +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C64897E6FFFF9386866AAF +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306863F97E6FFFF938686649E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093072002930500001303F30317 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7C7540AC2 +:102B8000B70508009387A72E130700009385C5FF9C +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C62A97E6FFFF9386864164 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B660B70E00809301200016 +:102C7000631ED70383A70600B70E008093013000C0 +:102C80006396D703B70500802FA7B660B70E008004 +:102C900093014000631CD70183A70600B70E008094 +:102CA000930150006394D701631A3000139511000B +:102CB0006300050013651500730000001305100084 +:082CC00073000000731000C056 +:102CC800417373657274696F6E206661696C6564BF +:102CD8003A2061646472203E3D202831554C203CE6 +:102CE8003C203132292026262061646472203C2051 +:102CF8003633202A202831554C203C3C20313229BB +:102D08000A000000417373657274696F6E20666112 +:102D1800696C65643A20212870745B315D5B61647D +:102D280064722F2831554C203C3C203132295D20DB +:102D380026203078303830292026262063617573A4 +:102D480065203D3D203078660A00000041737365B8 +:102D58007274696F6E206661696C65643A206E6F83 +:102D680064650A00417373657274696F6E206661E9 +:102D7800696C65643A20757365725F6D617070691E +:102D88006E675B616464722F2831554C203C3C208F +:102D98003132295D2E61646472203D3D20300A0085 +:102DA800417373657274696F6E206661696C6564DE +:102DB8003A2070745B315D5B616464722F28315511 +:102DC8004C203C3C203132295D202620307830349C +:102DD800300A0000417373657274696F6E20666112 +:102DE800696C65643A2070745B315D5B6164647220 +:102DF8002F2831554C203C3C203132295D2026209B +:102E080030783038300A0000417373657274696F26 +:102E18006E206661696C65643A2074662D3E657043 +:102E28006320252034203D3D20300A00417373651E +:102E38007274696F6E206661696C65643A2021223C +:102E4800696C6C6567616C20696E73747275637404 +:102E5800696F6E220A000000417373657274696FAE +:102E68006E206661696C65643A202122756E65780A +:102E780070656374656420657863657074696F6EE6 +:102E8800220A0000417373657274696F6E2066616F +:102E9800696C65643A202122756E737570706F7263 +:102EA8007465642073617470206D6F6465220A0014 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amomax_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amomax_w.hex new file mode 100644 index 00000000..ebb4d480 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amomax_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385858297F6FFFFAA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385457F97F6FFFF9386C6AD17F6FFFFAD +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385057DF3 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57797F6FFFF34 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C57097F6FFFF9386C68C17F6FFFF4B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545671306100497F6FFFF11 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306065897E6FFFF2D +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306064997E6FFFF9386866A6E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C63F97E6FFFF938686645E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093079003930500001303F303A6 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7673D0A39 +:102B8000B70508009387279E130700009385C5FFAC +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306062B97E6FFFF9386864123 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B6A0B70E008093012000D6 +:102C70006310D70583A70600930E008093013000F0 +:102C80006398D7039305100023A006002FA7B6A0D2 +:102C9000930E000093014000631CD70183A7060038 +:102CA000930E1000930150006394D701631A300013 +:102CB00013951100630005001365150073000000F3 +:0C2CC0001305100073000000731000C02A +:102CCC00417373657274696F6E206661696C6564BB +:102CDC003A2061646472203E3D202831554C203CE2 +:102CEC003C203132292026262061646472203C204D +:102CFC003633202A202831554C203C3C20313229B7 +:102D0C000A000000417373657274696F6E2066610E +:102D1C00696C65643A20212870745B315D5B616479 +:102D2C0064722F2831554C203C3C203132295D20D7 +:102D3C0026203078303830292026262063617573A0 +:102D4C0065203D3D203078660A00000041737365B4 +:102D5C007274696F6E206661696C65643A206E6F7F +:102D6C0064650A00417373657274696F6E206661E5 +:102D7C00696C65643A20757365725F6D617070691A +:102D8C006E675B616464722F2831554C203C3C208B +:102D9C003132295D2E61646472203D3D20300A0081 +:102DAC00417373657274696F6E206661696C6564DA +:102DBC003A2070745B315D5B616464722F2831550D +:102DCC004C203C3C203132295D2026203078303498 +:102DDC00300A0000417373657274696F6E2066610E +:102DEC00696C65643A2070745B315D5B616464721C +:102DFC002F2831554C203C3C203132295D20262097 +:102E0C0030783038300A0000417373657274696F22 +:102E1C006E206661696C65643A2074662D3E65703F +:102E2C006320252034203D3D20300A00417373651A +:102E3C007274696F6E206661696C65643A20212238 +:102E4C00696C6C6567616C20696E73747275637400 +:102E5C00696F6E220A000000417373657274696FAA +:102E6C006E206661696C65643A202122756E657806 +:102E7C0070656374656420657863657074696F6EE2 +:102E8C00220A0000417373657274696F6E2066616B +:102E9C00696C65643A202122756E737570706F725F +:102EAC007465642073617470206D6F6465220A0010 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amomaxu_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amomaxu_w.hex new file mode 100644 index 00000000..15a1b1bc --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amomaxu_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385858297F6FFFFAA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385457F97F6FFFF9386C6AD17F6FFFFAD +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385057DF3 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57797F6FFFF34 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C57097F6FFFF9386C68C17F6FFFF4B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545671306100497F6FFFF11 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306065897E6FFFF2D +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306064997E6FFFF9386866A6E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C63F97E6FFFF938686645E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093074000930500001303F303F9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B7F50F2C +:102B8000B7050800938767D2130700009385C5FF38 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306062B97E6FFFF9386864123 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B6E0B70E00809301200096 +:102C70006310D70583A70600930E008093013000F0 +:102C80006398D7039305F0FF23A006002FA7B6E0B3 +:102C9000930E000093014000631CD70183A7060038 +:102CA000930EF0FF930150006394D701631A300034 +:102CB00013951100630005001365150073000000F3 +:0C2CC0001305100073000000731000C02A +:102CCC00417373657274696F6E206661696C6564BB +:102CDC003A2061646472203E3D202831554C203CE2 +:102CEC003C203132292026262061646472203C204D +:102CFC003633202A202831554C203C3C20313229B7 +:102D0C000A000000417373657274696F6E2066610E +:102D1C00696C65643A20212870745B315D5B616479 +:102D2C0064722F2831554C203C3C203132295D20D7 +:102D3C0026203078303830292026262063617573A0 +:102D4C0065203D3D203078660A00000041737365B4 +:102D5C007274696F6E206661696C65643A206E6F7F +:102D6C0064650A00417373657274696F6E206661E5 +:102D7C00696C65643A20757365725F6D617070691A +:102D8C006E675B616464722F2831554C203C3C208B +:102D9C003132295D2E61646472203D3D20300A0081 +:102DAC00417373657274696F6E206661696C6564DA +:102DBC003A2070745B315D5B616464722F2831550D +:102DCC004C203C3C203132295D2026203078303498 +:102DDC00300A0000417373657274696F6E2066610E +:102DEC00696C65643A2070745B315D5B616464721C +:102DFC002F2831554C203C3C203132295D20262097 +:102E0C0030783038300A0000417373657274696F22 +:102E1C006E206661696C65643A2074662D3E65703F +:102E2C006320252034203D3D20300A00417373651A +:102E3C007274696F6E206661696C65643A20212238 +:102E4C00696C6C6567616C20696E73747275637400 +:102E5C00696F6E220A000000417373657274696FAA +:102E6C006E206661696C65643A202122756E657806 +:102E7C0070656374656420657863657074696F6EE2 +:102E8C00220A0000417373657274696F6E2066616B +:102E9C00696C65643A202122756E737570706F725F +:102EAC007465642073617470206D6F6465220A0010 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amomin_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amomin_w.hex new file mode 100644 index 00000000..a6d115a7 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amomin_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385858297F6FFFFAA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385457F97F6FFFF9386C6AD17F6FFFFAD +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385057DF3 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57797F6FFFF34 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C57097F6FFFF9386C68C17F6FFFF4B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545671306100497F6FFFF11 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306065897E6FFFF2D +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306064997E6FFFF9386866A6E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C63F97E6FFFF938686645E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307E003930500001303F30356 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B777470029 +:102B8000B7050800938767FB130700009385C5FF0F +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306062B97E6FFFF9386864123 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B680B70E008093012000F6 +:102C70006310D70583A70600B70E008093013000CC +:102C80006398D7039305F0FF23A006002FA7B68013 +:102C9000930E000093014000631CD70183A7060038 +:102CA000930EF0FF930150006394D701631A300034 +:102CB00013951100630005001365150073000000F3 +:0C2CC0001305100073000000731000C02A +:102CCC00417373657274696F6E206661696C6564BB +:102CDC003A2061646472203E3D202831554C203CE2 +:102CEC003C203132292026262061646472203C204D +:102CFC003633202A202831554C203C3C20313229B7 +:102D0C000A000000417373657274696F6E2066610E +:102D1C00696C65643A20212870745B315D5B616479 +:102D2C0064722F2831554C203C3C203132295D20D7 +:102D3C0026203078303830292026262063617573A0 +:102D4C0065203D3D203078660A00000041737365B4 +:102D5C007274696F6E206661696C65643A206E6F7F +:102D6C0064650A00417373657274696F6E206661E5 +:102D7C00696C65643A20757365725F6D617070691A +:102D8C006E675B616464722F2831554C203C3C208B +:102D9C003132295D2E61646472203D3D20300A0081 +:102DAC00417373657274696F6E206661696C6564DA +:102DBC003A2070745B315D5B616464722F2831550D +:102DCC004C203C3C203132295D2026203078303498 +:102DDC00300A0000417373657274696F6E2066610E +:102DEC00696C65643A2070745B315D5B616464721C +:102DFC002F2831554C203C3C203132295D20262097 +:102E0C0030783038300A0000417373657274696F22 +:102E1C006E206661696C65643A2074662D3E65703F +:102E2C006320252034203D3D20300A00417373651A +:102E3C007274696F6E206661696C65643A20212238 +:102E4C00696C6C6567616C20696E73747275637400 +:102E5C00696F6E220A000000417373657274696FAA +:102E6C006E206661696C65643A202122756E657806 +:102E7C0070656374656420657863657074696F6EE2 +:102E8C00220A0000417373657274696F6E2066616B +:102E9C00696C65643A202122756E737570706F725F +:102EAC007465642073617470206D6F6465220A0010 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amominu_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amominu_w.hex new file mode 100644 index 00000000..6fbdfccb --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amominu_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385858297F6FFFFAA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385457F97F6FFFF9386C6AD17F6FFFFAD +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385057DF3 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57797F6FFFF34 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C57097F6FFFF9386C68C17F6FFFF4B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545671306100497F6FFFF11 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306065897E6FFFF2D +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306064997E6FFFF9386866A6E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C63F97E6FFFF938686645E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307C000930500001303F30379 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B707FA03E3 +:102B8000B705080093870722130700009385C5FF48 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306062B97E6FFFF9386864123 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B6C0B70E008093012000B6 +:102C70006310D70583A70600B70E008093013000CC +:102C80006398D7039305F0FF23A006002FA7B6C0D3 +:102C9000930E000093014000631CD70183A7060038 +:102CA000930E0000930150006394D701631A300023 +:102CB00013951100630005001365150073000000F3 +:0C2CC0001305100073000000731000C02A +:102CCC00417373657274696F6E206661696C6564BB +:102CDC003A2061646472203E3D202831554C203CE2 +:102CEC003C203132292026262061646472203C204D +:102CFC003633202A202831554C203C3C20313229B7 +:102D0C000A000000417373657274696F6E2066610E +:102D1C00696C65643A20212870745B315D5B616479 +:102D2C0064722F2831554C203C3C203132295D20D7 +:102D3C0026203078303830292026262063617573A0 +:102D4C0065203D3D203078660A00000041737365B4 +:102D5C007274696F6E206661696C65643A206E6F7F +:102D6C0064650A00417373657274696F6E206661E5 +:102D7C00696C65643A20757365725F6D617070691A +:102D8C006E675B616464722F2831554C203C3C208B +:102D9C003132295D2E61646472203D3D20300A0081 +:102DAC00417373657274696F6E206661696C6564DA +:102DBC003A2070745B315D5B616464722F2831550D +:102DCC004C203C3C203132295D2026203078303498 +:102DDC00300A0000417373657274696F6E2066610E +:102DEC00696C65643A2070745B315D5B616464721C +:102DFC002F2831554C203C3C203132295D20262097 +:102E0C0030783038300A0000417373657274696F22 +:102E1C006E206661696C65643A2074662D3E65703F +:102E2C006320252034203D3D20300A00417373651A +:102E3C007274696F6E206661696C65643A20212238 +:102E4C00696C6C6567616C20696E73747275637400 +:102E5C00696F6E220A000000417373657274696FAA +:102E6C006E206661696C65643A202122756E657806 +:102E7C0070656374656420657863657074696F6EE2 +:102E8C00220A0000417373657274696F6E2066616B +:102E9C00696C65643A202122756E737570706F725F +:102EAC007465642073617470206D6F6465220A0010 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amoor_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amoor_w.hex new file mode 100644 index 00000000..09bf5a15 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amoor_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385458297F6FFFFEA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385057F97F6FFFF9386C6AD17F6FFFFED +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385C57C34 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857797F6FFFF74 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857097F6FFFF9386C68C17F6FFFF8B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938505671306100497F6FFFF51 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65797E6FFFF6E +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C64897E6FFFF9386866AAF +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306863F97E6FFFF938686649E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307E000930500001303F30359 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B737AC05FF +:102B8000B7050800938797C2130700009385C5FF18 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C62A97E6FFFF9386864164 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B640B70E00809301200036 +:102C7000631ED70383A70600930E008093013000E4 +:102C80006396D703930510002FA7B640930E0080DC +:102C900093014000631CD70183A70600930E1080A8 +:102CA000930150006394D701631A3000139511000B +:102CB0006300050013651500730000001305100084 +:082CC00073000000731000C056 +:102CC800417373657274696F6E206661696C6564BF +:102CD8003A2061646472203E3D202831554C203CE6 +:102CE8003C203132292026262061646472203C2051 +:102CF8003633202A202831554C203C3C20313229BB +:102D08000A000000417373657274696F6E20666112 +:102D1800696C65643A20212870745B315D5B61647D +:102D280064722F2831554C203C3C203132295D20DB +:102D380026203078303830292026262063617573A4 +:102D480065203D3D203078660A00000041737365B8 +:102D58007274696F6E206661696C65643A206E6F83 +:102D680064650A00417373657274696F6E206661E9 +:102D7800696C65643A20757365725F6D617070691E +:102D88006E675B616464722F2831554C203C3C208F +:102D98003132295D2E61646472203D3D20300A0085 +:102DA800417373657274696F6E206661696C6564DE +:102DB8003A2070745B315D5B616464722F28315511 +:102DC8004C203C3C203132295D202620307830349C +:102DD800300A0000417373657274696F6E20666112 +:102DE800696C65643A2070745B315D5B6164647220 +:102DF8002F2831554C203C3C203132295D2026209B +:102E080030783038300A0000417373657274696F26 +:102E18006E206661696C65643A2074662D3E657043 +:102E28006320252034203D3D20300A00417373651E +:102E38007274696F6E206661696C65643A2021223C +:102E4800696C6C6567616C20696E73747275637404 +:102E5800696F6E220A000000417373657274696FAE +:102E68006E206661696C65643A202122756E65780A +:102E780070656374656420657863657074696F6EE6 +:102E8800220A0000417373657274696F6E2066616F +:102E9800696C65643A202122756E737570706F7263 +:102EA8007465642073617470206D6F6465220A0014 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amoswap_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amoswap_w.hex new file mode 100644 index 00000000..f295f968 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amoswap_w.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385458297F6FFFFEA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385057F97F6FFFF9386C6AD17F6FFFFED +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385C57C34 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857797F6FFFF74 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857097F6FFFF9386C68C17F6FFFF8B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938505671306100497F6FFFF51 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65797E6FFFF6E +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C64897E6FFFF9386866AAF +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306863F97E6FFFF938686649E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307B002930500001303F30387 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7072304B9 +:102B8000B70508009387F7BB130700009385C5FFBF +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C62A97E6FFFF9386864164 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B608B70E0080930120006E +:102C7000631ED70383A70600930E008093013000E4 +:102C80006396D703B70500802FA7B608930E008080 +:102C900093014000631CD70183A70600B70E008094 +:102CA000930150006394D701631A3000139511000B +:102CB0006300050013651500730000001305100084 +:082CC00073000000731000C056 +:102CC800417373657274696F6E206661696C6564BF +:102CD8003A2061646472203E3D202831554C203CE6 +:102CE8003C203132292026262061646472203C2051 +:102CF8003633202A202831554C203C3C20313229BB +:102D08000A000000417373657274696F6E20666112 +:102D1800696C65643A20212870745B315D5B61647D +:102D280064722F2831554C203C3C203132295D20DB +:102D380026203078303830292026262063617573A4 +:102D480065203D3D203078660A00000041737365B8 +:102D58007274696F6E206661696C65643A206E6F83 +:102D680064650A00417373657274696F6E206661E9 +:102D7800696C65643A20757365725F6D617070691E +:102D88006E675B616464722F2831554C203C3C208F +:102D98003132295D2E61646472203D3D20300A0085 +:102DA800417373657274696F6E206661696C6564DE +:102DB8003A2070745B315D5B616464722F28315511 +:102DC8004C203C3C203132295D202620307830349C +:102DD800300A0000417373657274696F6E20666112 +:102DE800696C65643A2070745B315D5B6164647220 +:102DF8002F2831554C203C3C203132295D2026209B +:102E080030783038300A0000417373657274696F26 +:102E18006E206661696C65643A2074662D3E657043 +:102E28006320252034203D3D20300A00417373651E +:102E38007274696F6E206661696C65643A2021223C +:102E4800696C6C6567616C20696E73747275637404 +:102E5800696F6E220A000000417373657274696FAE +:102E68006E206661696C65643A202122756E65780A +:102E780070656374656420657863657074696F6EE6 +:102E8800220A0000417373657274696F6E2066616F +:102E9800696C65643A202122756E737570706F7263 +:102EA8007465642073617470206D6F6465220A0014 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-amoxor_w.hex b/benchmarks/riscv_tests/isa/rv32ua-v-amoxor_w.hex new file mode 100644 index 00000000..704d7c11 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-amoxor_w.hex @@ -0,0 +1,276 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385458397F6FFFFE9 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058097F6FFFF9386C6AD17F6FFFFEC +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385C57D33 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857897F6FFFF73 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857197F6FFFF9386C68C17F6FFFF8A +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938505681306100497F6FFFF50 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65897E6FFFF6D +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C64997E6FFFF9386866AAE +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864097E6FFFF938686649D +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093075003930500001303F303E6 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7A74601F9 +:102B8000B705080093877703130700009385C5FFF7 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C62B97E6FFFF9386864163 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50003705008093050080970600009386863A2A +:102C600023A0A6002FA7B620B70E00809301200056 +:102C70006316D70583A70600B70E0080938E0E80DB +:102C800093013000639CD703B70500C093851500FE +:102C90002FA7B620B70E0080938E0E8093014000C0 +:102CA000631ED70183A70600B70E00C0938E1E8057 +:102CB000930150006394D701631A300013951100FB +:102CC0006300050013651500730000001305100074 +:082CD00073000000731000C046 +:102CD800417373657274696F6E206661696C6564AF +:102CE8003A2061646472203E3D202831554C203CD6 +:102CF8003C203132292026262061646472203C2041 +:102D08003633202A202831554C203C3C20313229AA +:102D18000A000000417373657274696F6E20666102 +:102D2800696C65643A20212870745B315D5B61646D +:102D380064722F2831554C203C3C203132295D20CB +:102D48002620307830383029202626206361757394 +:102D580065203D3D203078660A00000041737365A8 +:102D68007274696F6E206661696C65643A206E6F73 +:102D780064650A00417373657274696F6E206661D9 +:102D8800696C65643A20757365725F6D617070690E +:102D98006E675B616464722F2831554C203C3C207F +:102DA8003132295D2E61646472203D3D20300A0075 +:102DB800417373657274696F6E206661696C6564CE +:102DC8003A2070745B315D5B616464722F28315501 +:102DD8004C203C3C203132295D202620307830348C +:102DE800300A0000417373657274696F6E20666102 +:102DF800696C65643A2070745B315D5B6164647210 +:102E08002F2831554C203C3C203132295D2026208A +:102E180030783038300A0000417373657274696F16 +:102E28006E206661696C65643A2074662D3E657033 +:102E38006320252034203D3D20300A00417373650E +:102E48007274696F6E206661696C65643A2021222C +:102E5800696C6C6567616C20696E737472756374F4 +:102E6800696F6E220A000000417373657274696F9E +:102E78006E206661696C65643A202122756E6578FA +:102E880070656374656420657863657074696F6ED6 +:102E9800220A0000417373657274696F6E2066615F +:102EA800696C65643A202122756E737570706F7253 +:102EB8007465642073617470206D6F6465220A0004 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ua-v-lrsc.hex b/benchmarks/riscv_tests/isa/rv32ua-v-lrsc.hex new file mode 100644 index 00000000..98bbcb56 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ua-v-lrsc.hex @@ -0,0 +1,351 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385058D97F6FFFF1F +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C58997F6FFFF9386C6AD17F6FFFF23 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385858759 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385458297F6FFFF99 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385457B97F6FFFF9386C68C17F6FFFFC0 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385C5711306100497F6FFFF87 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306866297E6FFFFA3 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306865397E6FFFF9386866AE4 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306464A97E6FFFF93868664D3 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093075000930500001303F303E9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B797A201AD +:102B8000B70508009387E7CB130700009385C5FFBF +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306863597E6FFFF9386864199 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000170500001305053B930510002F26B5004E +:102C600093061000E37ED6FE83250500E3EED5FE35 +:102C70001705000013058539B7C7ADDE9387F7EE5A +:102C80002F27F518930E1000930120006316D70D1F +:102C90001707000003278737930E000093013000C9 +:102CA000631CD70B17050000130545369705000078 +:102CB00093850576AFA505102F27B518930E100044 +:102CC00093014000631AD709170500001305053466 +:102CD00093050040130616002F2705103307C70081 +:102CE0002F27E518E31A07FE9385F5FFE39605FE07 +:102CF0001705000013054531930510002F20B5007E +:102D000083250500E3CED5FE0F00F00F1705000068 +:102D10000325C52F939596003305B5409386F6FF9E +:102D2000E3DC06FE930E0000930150006316D5030A +:102D3000170500001305852DAF250510AF250518D3 +:102D4000E39C05FEAF250518930E1000930160006B +:102D50006394D501631A30001395110063000500D8 +:102D600013651500730000001305100073000000C8 +:042D7000731000C01C +:102D7400417373657274696F6E206661696C656412 +:102D84003A2061646472203E3D202831554C203C39 +:102D94003C203132292026262061646472203C20A4 +:102DA4003633202A202831554C203C3C203132290E +:102DB4000A000000417373657274696F6E20666166 +:102DC400696C65643A20212870745B315D5B6164D1 +:102DD40064722F2831554C203C3C203132295D202F +:102DE40026203078303830292026262063617573F8 +:102DF40065203D3D203078660A000000417373650C +:102E04007274696F6E206661696C65643A206E6FD6 +:102E140064650A00417373657274696F6E2066613C +:102E2400696C65643A20757365725F6D6170706971 +:102E34006E675B616464722F2831554C203C3C20E2 +:102E44003132295D2E61646472203D3D20300A00D8 +:102E5400417373657274696F6E206661696C656431 +:102E64003A2070745B315D5B616464722F28315564 +:102E74004C203C3C203132295D20262030783034EF +:102E8400300A0000417373657274696F6E20666165 +:102E9400696C65643A2070745B315D5B6164647273 +:102EA4002F2831554C203C3C203132295D202620EE +:102EB40030783038300A0000417373657274696F7A +:102EC4006E206661696C65643A2074662D3E657097 +:102ED4006320252034203D3D20300A004173736572 +:102EE4007274696F6E206661696C65643A20212290 +:102EF400696C6C6567616C20696E73747275637458 +:102F0400696F6E220A000000417373657274696F01 +:102F14006E206661696C65643A202122756E65785D +:102F240070656374656420657863657074696F6E39 +:102F3400220A0000417373657274696F6E206661C2 +:102F4400696C65643A202122756E737570706F72B6 +:102F54007465642073617470206D6F6465220A0067 +:1030000000000000000000000000000000000000C0 +:1030100000000000000000000000000000000000B0 +:1030200000000000000000000000000000000000A0 +:103030000000000000000000000000000000000090 +:103040000000000000000000000000000000000080 +:103050000000000000000000000000000000000070 +:103060000000000000000000000000000000000060 +:103070000000000000000000000000000000000050 +:103080000000000000000000000000000000000040 +:103090000000000000000000000000000000000030 +:1030A0000000000000000000000000000000000020 +:1030B0000000000000000000000000000000000010 +:1030C0000000000000000000000000000000000000 +:1030D00000000000000000000000000000000000F0 +:1030E00000000000000000000000000000000000E0 +:1030F00000000000000000000000000000000000D0 +:1031000000000000000000000000000000000000BF +:1031100000000000000000000000000000000000AF +:10312000000000000000000000000000000000009F +:10313000000000000000000000000000000000008F +:10314000000000000000000000000000000000007F +:10315000000000000000000000000000000000006F +:10316000000000000000000000000000000000005F +:10317000000000000000000000000000000000004F +:10318000000000000000000000000000000000003F +:10319000000000000000000000000000000000002F +:1031A000000000000000000000000000000000001F +:1031B000000000000000000000000000000000000F +:1031C00000000000000000000000000000000000FF +:1031D00000000000000000000000000000000000EF +:1031E00000000000000000000000000000000000DF +:1031F00000000000000000000000000000000000CF +:1032000000000000000000000000000000000000BE +:1032100000000000000000000000000000000000AE +:10322000000000000000000000000000000000009E +:10323000000000000000000000000000000000008E +:10324000000000000000000000000000000000007E +:10325000000000000000000000000000000000006E +:10326000000000000000000000000000000000005E +:10327000000000000000000000000000000000004E +:10328000000000000000000000000000000000003E +:10329000000000000000000000000000000000002E +:1032A000000000000000000000000000000000001E +:1032B000000000000000000000000000000000000E +:1032C00000000000000000000000000000000000FE +:1032D00000000000000000000000000000000000EE +:1032E00000000000000000000000000000000000DE +:1032F00000000000000000000000000000000000CE +:1033000000000000000000000000000000000000BD +:1033100000000000000000000000000000000000AD +:10332000000000000000000000000000000000009D +:10333000000000000000000000000000000000008D +:10334000000000000000000000000000000000007D +:10335000000000000000000000000000000000006D +:10336000000000000000000000000000000000005D +:10337000000000000000000000000000000000004D +:10338000000000000000000000000000000000003D +:10339000000000000000000000000000000000002D +:1033A000000000000000000000000000000000001D +:1033B000000000000000000000000000000000000D +:1033C00000000000000000000000000000000000FD +:1033D00000000000000000000000000000000000ED +:1033E00000000000000000000000000000000000DD +:1033F00000000000000000000000000000000000CD +:1034000000000000000000000000000000000000BC +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uc-p-rvc.hex b/benchmarks/riscv_tests/isa/rv32uc-p-rvc.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uc-p-rvc.hex rename to benchmarks/riscv_tests/isa/rv32uc-p-rvc.hex diff --git a/benchmarks/riscv_tests/isa/rv32uc-v-rvc.hex b/benchmarks/riscv_tests/isa/rv32uc-v-rvc.hex new file mode 100644 index 00000000..2515e11d --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32uc-v-rvc.hex @@ -0,0 +1,1091 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:100090007390523017A100001301412DF32240F15B +:1000A0009392C2003301510073100134EF20507558 +:1000B00017350000130545F56F20D015832245083C +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640175300001C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001777000013074704832507006384051C73 +:1023C00083A74500177600000326C6022320F700E6 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297770000938707E0B9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009777000023AE07F46FF09FF38A +:1024A0001305100497450000938585B297F6FFFF4A +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497450000CA +:10252000938545AF97F6FFFF9386C6AD17F6FFFF7D +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497450000938505AD83 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004974500009385C5A797F6FFFFC4 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049745000006 +:102730009385C5A097F6FFFF9386C68C17F6FFFF1B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097450000938545971306100497F6FFFFA1 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000977400009384449E174D0000FD +:10282000130D4D7EB70C0400977B0000938B8BBC7F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69777000008 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004174600001306068897E6FFFFBD +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000173600001306067997E6FFFF9386866A0E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000173600001306C66F97E6FFFF93868664FE +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716175600006C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108974500009385855C7F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009767C07F93870754177700002326F792F4 +:102AD0009767C07F9387077217770000232CF790C2 +:102AE00037030800176700001307C751176E00006F +:102AF000130ECE709307D001930500001303F30368 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097670000B4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B707730766 +:102B8000B705080093877704130700009385C5FFF6 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000173600001306065B97E6FFFF93868641C3 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE0000000072 +:102C50000000000000000000000000000000000074 +:102C60000000000000000000000000000000000064 +:102C70000000000000000000000000000000000054 +:102C80000000000000000000000000000000000044 +:102C90000000000000000000000000000000000034 +:102CA0000000000000000000000000000000000024 +:102CB0000000000000000000000000000000000014 +:102CC0000000000000000000000000000000000004 +:102CD00000000000000000000000000000000000F4 +:102CE00000000000000000000000000000000000E4 +:102CF00000000000000000000000000000000000D4 +:102D000000000000000000000000000000000000C3 +:102D100000000000000000000000000000000000B3 +:102D200000000000000000000000000000000000A3 +:102D30000000000000000000000000000000000093 +:102D40000000000000000000000000000000000083 +:102D50000000000000000000000000000000000073 +:102D60000000000000000000000000000000000063 +:102D70000000000000000000000000000000000053 +:102D80000000000000000000000000000000000043 +:102D90000000000000000000000000000000000033 +:102DA0000000000000000000000000000000000023 +:102DB0000000000000000000000000000000000013 +:102DC0000000000000000000000000000000000003 +:102DD00000000000000000000000000000000000F3 +:102DE00000000000000000000000000000000000E3 +:102DF00000000000000000000000000000000000D3 +:102E000000000000000000000000000000000000C2 +:102E100000000000000000000000000000000000B2 +:102E200000000000000000000000000000000000A2 +:102E30000000000000000000000000000000000092 +:102E40000000000000000000000000000000000082 +:102E50000000000000000000000000000000000072 +:102E60000000000000000000000000000000000062 +:102E70000000000000000000000000000000000052 +:102E80000000000000000000000000000000000042 +:102E90000000000000000000000000000000000032 +:102EA0000000000000000000000000000000000022 +:102EB0000000000000000000000000000000000012 +:102EC0000000000000000000000000000000000002 +:102ED00000000000000000000000000000000000F2 +:102EE00000000000000000000000000000000000E2 +:102EF00000000000000000000000000000000000D2 +:102F000000000000000000000000000000000000C1 +:102F100000000000000000000000000000000000B1 +:102F200000000000000000000000000000000000A1 +:102F30000000000000000000000000000000000091 +:102F40000000000000000000000000000000000081 +:102F50000000000000000000000000000000000071 +:102F60000000000000000000000000000000000061 +:102F70000000000000000000000000000000000051 +:102F80000000000000000000000000000000000041 +:102F90000000000000000000000000000000000031 +:102FA0000000000000000000000000000000000021 +:102FB0000000000000000000000000000000000011 +:102FC0000000000000000000000000000000000001 +:102FD00000000000000000000000000000000000F1 +:102FE00000000000000000000000000000000000E1 +:102FF00000000000000000000000000000000000D1 +:1030000067800000930120009305A0296F10307F96 +:103010001032547698BADCFE1032547698BADCFE40 +:103020001300000013000000130000001300000054 +:103030001300000013000000130000001300000044 +:103040001300000013000000130000001300000034 +:103050001300000013000000130000001300000024 +:103060001300000013000000130000001300000014 +:103070001300000013000000130000001300000004 +:1030800013000000130000001300000013000000F4 +:1030900013000000130000001300000013000000E4 +:1030A00013000000130000001300000013000000D4 +:1030B00013000000130000001300000013000000C4 +:1030C00013000000130000001300000013000000B4 +:1030D00013000000130000001300000013000000A4 +:1030E0001300000013000000130000001300000094 +:1030F0001300000013000000130000001300000084 +:103100001300000013000000130000001300000073 +:103110001300000013000000130000001300000063 +:103120001300000013000000130000001300000053 +:103130001300000013000000130000001300000043 +:103140001300000013000000130000001300000033 +:103150001300000013000000130000001300000023 +:103160001300000013000000130000001300000013 +:103170001300000013000000130000001300000003 +:1031800013000000130000001300000013000000F3 +:1031900013000000130000001300000013000000E3 +:1031A00013000000130000001300000013000000D3 +:1031B00013000000130000001300000013000000C3 +:1031C00013000000130000001300000013000000B3 +:1031D00013000000130000001300000013000000A3 +:1031E0001300000013000000130000001300000093 +:1031F0001300000013000000130000001300000083 +:103200001300000013000000130000001300000072 +:103210001300000013000000130000001300000062 +:103220001300000013000000130000001300000052 +:103230001300000013000000130000001300000042 +:103240001300000013000000130000001300000032 +:103250001300000013000000130000001300000022 +:103260001300000013000000130000001300000012 +:103270001300000013000000130000001300000002 +:1032800013000000130000001300000013000000F2 +:1032900013000000130000001300000013000000E2 +:1032A00013000000130000001300000013000000D2 +:1032B00013000000130000001300000013000000C2 +:1032C00013000000130000001300000013000000B2 +:1032D00013000000130000001300000013000000A2 +:1032E0001300000013000000130000001300000092 +:1032F0001300000013000000130000001300000082 +:103300001300000013000000130000001300000071 +:103310001300000013000000130000001300000061 +:103320001300000013000000130000001300000051 +:103330001300000013000000130000001300000041 +:103340001300000013000000130000001300000031 +:103350001300000013000000130000001300000021 +:103360001300000013000000130000001300000011 +:103370001300000013000000130000001300000001 +:1033800013000000130000001300000013000000F1 +:1033900013000000130000001300000013000000E1 +:1033A00013000000130000001300000013000000D1 +:1033B00013000000130000001300000013000000C1 +:1033C00013000000130000001300000013000000B1 +:1033D00013000000130000001300000013000000A1 +:1033E0001300000013000000130000001300000091 +:1033F0001300000013000000130000001300000081 +:103400001300000013000000130000001300000070 +:103410001300000013000000130000001300000060 +:103420001300000013000000130000001300000050 +:103430001300000013000000130000001300000040 +:103440001300000013000000130000001300000030 +:103450001300000013000000130000001300000020 +:103460001300000013000000130000001300000010 +:103470001300000013000000130000001300000000 +:1034800013000000130000001300000013000000F0 +:1034900013000000130000001300000013000000E0 +:1034A00013000000130000001300000013000000D0 +:1034B00013000000130000001300000013000000C0 +:1034C00013000000130000001300000013000000B0 +:1034D00013000000130000001300000013000000A0 +:1034E0001300000013000000130000001300000090 +:1034F0001300000013000000130000001300000080 +:10350000130000001300000013000000130000006F +:10351000130000001300000013000000130000005F +:10352000130000001300000013000000130000004F +:10353000130000001300000013000000130000003F +:10354000130000001300000013000000130000002F +:10355000130000001300000013000000130000001F +:10356000130000001300000013000000130000000F +:1035700013000000130000001300000013000000FF +:1035800013000000130000001300000013000000EF +:1035900013000000130000001300000013000000DF +:1035A00013000000130000001300000013000000CF +:1035B00013000000130000001300000013000000BF +:1035C00013000000130000001300000013000000AF +:1035D000130000001300000013000000130000009F +:1035E000130000001300000013000000130000008F +:1035F000130000001300000013000000130000007F +:10360000130000001300000013000000130000006E +:10361000130000001300000013000000130000005E +:10362000130000001300000013000000130000004E +:10363000130000001300000013000000130000003E +:10364000130000001300000013000000130000002E +:10365000130000001300000013000000130000001E +:10366000130000001300000013000000130000000E +:1036700013000000130000001300000013000000FE +:1036800013000000130000001300000013000000EE +:1036900013000000130000001300000013000000DE +:1036A00013000000130000001300000013000000CE +:1036B00013000000130000001300000013000000BE +:1036C00013000000130000001300000013000000AE +:1036D000130000001300000013000000130000009E +:1036E000130000001300000013000000130000008E +:1036F000130000001300000013000000130000007E +:10370000130000001300000013000000130000006D +:10371000130000001300000013000000130000005D +:10372000130000001300000013000000130000004D +:10373000130000001300000013000000130000003D +:10374000130000001300000013000000130000002D +:10375000130000001300000013000000130000001D +:10376000130000001300000013000000130000000D +:1037700013000000130000001300000013000000FD +:1037800013000000130000001300000013000000ED +:1037900013000000130000001300000013000000DD +:1037A00013000000130000001300000013000000CD +:1037B00013000000130000001300000013000000BD +:1037C00013000000130000001300000013000000AD +:1037D000130000001300000013000000130000009D +:1037E000130000001300000013000000130000008D +:1037F000130000001300000013000000130000007D +:10380000130000001300000013000000130000006C +:10381000130000001300000013000000130000005C +:10382000130000001300000013000000130000004C +:10383000130000001300000013000000130000003C +:10384000130000001300000013000000130000002C +:10385000130000001300000013000000130000001C +:10386000130000001300000013000000130000000C +:1038700013000000130000001300000013000000FC +:1038800013000000130000001300000013000000EC +:1038900013000000130000001300000013000000DC +:1038A00013000000130000001300000013000000CC +:1038B00013000000130000001300000013000000BC +:1038C00013000000130000001300000013000000AC +:1038D000130000001300000013000000130000009C +:1038E000130000001300000013000000130000008C +:1038F000130000001300000013000000130000007C +:10390000130000001300000013000000130000006B +:10391000130000001300000013000000130000005B +:10392000130000001300000013000000130000004B +:10393000130000001300000013000000130000003B +:10394000130000001300000013000000130000002B +:10395000130000001300000013000000130000001B +:10396000130000001300000013000000130000000B +:1039700013000000130000001300000013000000FB +:1039800013000000130000001300000013000000EB +:1039900013000000130000001300000013000000DB +:1039A00013000000130000001300000013000000CB +:1039B00013000000130000001300000013000000BB +:1039C00013000000130000001300000013000000AB +:1039D000130000001300000013000000130000009B +:1039E000130000001300000013000000130000008B +:1039F000130000001300000013000000130000007B +:103A0000130000001300000013000000130000006A +:103A1000130000001300000013000000130000005A +:103A2000130000001300000013000000130000004A +:103A3000130000001300000013000000130000003A +:103A4000130000001300000013000000130000002A +:103A5000130000001300000013000000130000001A +:103A6000130000001300000013000000130000000A +:103A700013000000130000001300000013000000FA +:103A800013000000130000001300000013000000EA +:103A900013000000130000001300000013000000DA +:103AA00013000000130000001300000013000000CA +:103AB00013000000130000001300000013000000BA +:103AC00013000000130000001300000013000000AA +:103AD000130000001300000013000000130000009A +:103AE000130000001300000013000000130000008A +:103AF000130000001300000013000000130000007A +:103B00001300000013000000130000001300000069 +:103B10001300000013000000130000001300000059 +:103B20001300000013000000130000001300000049 +:103B30001300000013000000130000001300000039 +:103B40001300000013000000130000001300000029 +:103B50001300000013000000130000001300000019 +:103B60001300000013000000130000001300000009 +:103B700013000000130000001300000013000000F9 +:103B800013000000130000001300000013000000E9 +:103B900013000000130000001300000013000000D9 +:103BA00013000000130000001300000013000000C9 +:103BB00013000000130000001300000013000000B9 +:103BC00013000000130000001300000013000000A9 +:103BD0001300000013000000130000001300000099 +:103BE0001300000013000000130000001300000089 +:103BF0001300000013000000130000001300000079 +:103C00001300000013000000130000001300000068 +:103C10001300000013000000130000001300000058 +:103C20001300000013000000130000001300000048 +:103C30001300000013000000130000001300000038 +:103C40001300000013000000130000001300000028 +:103C50001300000013000000130000001300000018 +:103C60001300000013000000130000001300000008 +:103C700013000000130000001300000013000000F8 +:103C800013000000130000001300000013000000E8 +:103C900013000000130000001300000013000000D8 +:103CA00013000000130000001300000013000000C8 +:103CB00013000000130000001300000013000000B8 +:103CC00013000000130000001300000013000000A8 +:103CD0001300000013000000130000001300000098 +:103CE0001300000013000000130000001300000088 +:103CF0001300000013000000130000001300000078 +:103D00001300000013000000130000001300000067 +:103D10001300000013000000130000001300000057 +:103D20001300000013000000130000001300000047 +:103D30001300000013000000130000001300000037 +:103D40001300000013000000130000001300000027 +:103D50001300000013000000130000001300000017 +:103D60001300000013000000130000001300000007 +:103D700013000000130000001300000013000000F7 +:103D800013000000130000001300000013000000E7 +:103D900013000000130000001300000013000000D7 +:103DA00013000000130000001300000013000000C7 +:103DB00013000000130000001300000013000000B7 +:103DC00013000000130000001300000013000000A7 +:103DD0001300000013000000130000001300000097 +:103DE0001300000013000000130000001300000087 +:103DF0001300000013000000130000001300000077 +:103E00001300000013000000130000001300000066 +:103E10001300000013000000130000001300000056 +:103E20001300000013000000130000001300000046 +:103E30001300000013000000130000001300000036 +:103E40001300000013000000130000001300000026 +:103E50001300000013000000130000001300000016 +:103E60001300000013000000130000001300000006 +:103E700013000000130000001300000013000000F6 +:103E800013000000130000001300000013000000E6 +:103E900013000000130000001300000013000000D6 +:103EA00013000000130000001300000013000000C6 +:103EB00013000000130000001300000013000000B6 +:103EC00013000000130000001300000013000000A6 +:103ED0001300000013000000130000001300000096 +:103EE0001300000013000000130000001300000086 +:103EF0001300000013000000130000001300000076 +:103F00001300000013000000130000001300000065 +:103F10001300000013000000130000001300000055 +:103F20001300000013000000130000001300000045 +:103F30001300000013000000130000001300000035 +:103F40001300000013000000130000001300000025 +:103F50001300000013000000130000001300000015 +:103F60001300000013000000130000001300000005 +:103F700013000000130000001300000013000000F5 +:103F800013000000130000001300000013000000E5 +:103F900013000000130000001300000013000000D5 +:103FA00013000000130000001300000013000000C5 +:103FB00013000000130000001300000013000000B5 +:103FC00013000000130000001300000013000000A5 +:103FD0001300000013000000130000001300000095 +:103FE0001300000013000000130000001300000085 +:103FF0001300000013000000130000001300000075 +:1040000000000000000000000000000000000000B0 +:1040100000000000000000000000000000000000A0 +:104020000000000000000000000000000000000090 +:104030000000000000000000000000000000000080 +:104040000000000000000000000000000000000070 +:104050000000000000000000000000000000000060 +:104060000000000000000000000000000000000050 +:104070000000000000000000000000000000000040 +:104080000000000000000000000000000000000030 +:104090000000000000000000000000000000000020 +:1040A0000000000000000000000000000000000010 +:1040B0000000000000000000000000000000000000 +:1040C00000000000000000000000000000000000F0 +:1040D00000000000000000000000000000000000E0 +:1040E00000000000000000000000000000000000D0 +:1040F00000000000000000000000000000000000C0 +:1041000000000000000000000000000000000000AF +:10411000000000000000000000000000000000009F +:10412000000000000000000000000000000000008F +:10413000000000000000000000000000000000007F +:10414000000000000000000000000000000000006F +:10415000000000000000000000000000000000005F +:10416000000000000000000000000000000000004F +:10417000000000000000000000000000000000003F +:10418000000000000000000000000000000000002F +:10419000000000000000000000000000000000001F +:1041A000000000000000000000000000000000000F +:1041B00000000000000000000000000000000000FF +:1041C00000000000000000000000000000000000EF +:1041D00000000000000000000000000000000000DF +:1041E00000000000000000000000000000000000CF +:1041F00000000000000000000000000000000000BF +:1042000000000000000000000000000000000000AE +:10421000000000000000000000000000000000009E +:10422000000000000000000000000000000000008E +:10423000000000000000000000000000000000007E +:10424000000000000000000000000000000000006E +:10425000000000000000000000000000000000005E +:10426000000000000000000000000000000000004E +:10427000000000000000000000000000000000003E +:10428000000000000000000000000000000000002E +:10429000000000000000000000000000000000001E +:1042A000000000000000000000000000000000000E +:1042B00000000000000000000000000000000000FE +:1042C00000000000000000000000000000000000EE +:1042D00000000000000000000000000000000000DE +:1042E00000000000000000000000000000000000CE +:1042F00000000000000000000000000000000000BE +:1043000000000000000000000000000000000000AD +:10431000000000000000000000000000000000009D +:10432000000000000000000000000000000000008D +:10433000000000000000000000000000000000007D +:10434000000000000000000000000000000000006D +:10435000000000000000000000000000000000005D +:10436000000000000000000000000000000000004D +:10437000000000000000000000000000000000003D +:10438000000000000000000000000000000000002D +:10439000000000000000000000000000000000001D +:1043A000000000000000000000000000000000000D +:1043B00000000000000000000000000000000000FD +:1043C00000000000000000000000000000000000ED +:1043D00000000000000000000000000000000000DD +:1043E00000000000000000000000000000000000CD +:1043F00000000000000000000000000000000000BD +:1044000000000000000000000000000000000000AC +:10441000000000000000000000000000000000009C +:10442000000000000000000000000000000000008C +:10443000000000000000000000000000000000007C +:10444000000000000000000000000000000000006C +:10445000000000000000000000000000000000005C +:10446000000000000000000000000000000000004C +:10447000000000000000000000000000000000003C +:10448000000000000000000000000000000000002C +:10449000000000000000000000000000000000001C +:1044A000000000000000000000000000000000000C +:1044B00000000000000000000000000000000000FC +:1044C00000000000000000000000000000000000EC +:1044D00000000000000000000000000000000000DC +:1044E00000000000000000000000000000000000CC +:1044F00000000000000000000000000000000000BC +:1045000000000000000000000000000000000000AB +:10451000000000000000000000000000000000009B +:10452000000000000000000000000000000000008B +:10453000000000000000000000000000000000007B +:10454000000000000000000000000000000000006B +:10455000000000000000000000000000000000005B +:10456000000000000000000000000000000000004B +:10457000000000000000000000000000000000003B +:10458000000000000000000000000000000000002B +:10459000000000000000000000000000000000001B +:1045A000000000000000000000000000000000000B +:1045B00000000000000000000000000000000000FB +:1045C00000000000000000000000000000000000EB +:1045D00000000000000000000000000000000000DB +:1045E00000000000000000000000000000000000CB +:1045F00000000000000000000000000000000000BB +:1046000000000000000000000000000000000000AA +:10461000000000000000000000000000000000009A +:10462000000000000000000000000000000000008A +:10463000000000000000000000000000000000007A +:10464000000000000000000000000000000000006A +:10465000000000000000000000000000000000005A +:10466000000000000000000000000000000000004A +:10467000000000000000000000000000000000003A +:10468000000000000000000000000000000000002A +:10469000000000000000000000000000000000001A +:1046A000000000000000000000000000000000000A +:1046B00000000000000000000000000000000000FA +:1046C00000000000000000000000000000000000EA +:1046D00000000000000000000000000000000000DA +:1046E00000000000000000000000000000000000CA +:1046F00000000000000000000000000000000000BA +:1047000000000000000000000000000000000000A9 +:104710000000000000000000000000000000000099 +:104720000000000000000000000000000000000089 +:104730000000000000000000000000000000000079 +:104740000000000000000000000000000000000069 +:104750000000000000000000000000000000000059 +:104760000000000000000000000000000000000049 +:104770000000000000000000000000000000000039 +:104780000000000000000000000000000000000029 +:104790000000000000000000000000000000000019 +:1047A0000000000000000000000000000000000009 +:1047B00000000000000000000000000000000000F9 +:1047C00000000000000000000000000000000000E9 +:1047D00000000000000000000000000000000000D9 +:1047E00000000000000000000000000000000000C9 +:1047F00000000000000000000000000000000000B9 +:1048000000000000000000000000000000000000A8 +:104810000000000000000000000000000000000098 +:104820000000000000000000000000000000000088 +:104830000000000000000000000000000000000078 +:104840000000000000000000000000000000000068 +:104850000000000000000000000000000000000058 +:104860000000000000000000000000000000000048 +:104870000000000000000000000000000000000038 +:104880000000000000000000000000000000000028 +:104890000000000000000000000000000000000018 +:1048A0000000000000000000000000000000000008 +:1048B00000000000000000000000000000000000F8 +:1048C00000000000000000000000000000000000E8 +:1048D00000000000000000000000000000000000D8 +:1048E00000000000000000000000000000000000C8 +:1048F00000000000000000000000000000000000B8 +:1049000000000000000000000000000000000000A7 +:104910000000000000000000000000000000000097 +:104920000000000000000000000000000000000087 +:104930000000000000000000000000000000000077 +:104940000000000000000000000000000000000067 +:104950000000000000000000000000000000000057 +:104960000000000000000000000000000000000047 +:104970000000000000000000000000000000000037 +:104980000000000000000000000000000000000027 +:104990000000000000000000000000000000000017 +:1049A0000000000000000000000000000000000007 +:1049B00000000000000000000000000000000000F7 +:1049C00000000000000000000000000000000000E7 +:1049D00000000000000000000000000000000000D7 +:1049E00000000000000000000000000000000000C7 +:1049F00000000000000000000000000000000000B7 +:104A000000000000000000000000000000000000A6 +:104A10000000000000000000000000000000000096 +:104A20000000000000000000000000000000000086 +:104A30000000000000000000000000000000000076 +:104A40000000000000000000000000000000000066 +:104A50000000000000000000000000000000000056 +:104A60000000000000000000000000000000000046 +:104A70000000000000000000000000000000000036 +:104A80000000000000000000000000000000000026 +:104A90000000000000000000000000000000000016 +:104AA0000000000000000000000000000000000006 +:104AB00000000000000000000000000000000000F6 +:104AC00000000000000000000000000000000000E6 +:104AD00000000000000000000000000000000000D6 +:104AE00000000000000000000000000000000000C6 +:104AF00000000000000000000000000000000000B6 +:104B000000000000000000000000000000000000A5 +:104B10000000000000000000000000000000000095 +:104B20000000000000000000000000000000000085 +:104B30000000000000000000000000000000000075 +:104B40000000000000000000000000000000000065 +:104B50000000000000000000000000000000000055 +:104B60000000000000000000000000000000000045 +:104B70000000000000000000000000000000000035 +:104B80000000000000000000000000000000000025 +:104B90000000000000000000000000000000000015 +:104BA0000000000000000000000000000000000005 +:104BB00000000000000000000000000000000000F5 +:104BC00000000000000000000000000000000000E5 +:104BD00000000000000000000000000000000000D5 +:104BE00000000000000000000000000000000000C5 +:104BF00000000000000000000000000000000000B5 +:104C000000000000000000000000000000000000A4 +:104C10000000000000000000000000000000000094 +:104C20000000000000000000000000000000000084 +:104C30000000000000000000000000000000000074 +:104C40000000000000000000000000000000000064 +:104C50000000000000000000000000000000000054 +:104C60000000000000000000000000000000000044 +:104C70000000000000000000000000000000000034 +:104C80000000000000000000000000000000000024 +:104C90000000000000000000000000000000000014 +:104CA0000000000000000000000000000000000004 +:104CB00000000000000000000000000000000000F4 +:104CC00000000000000000000000000000000000E4 +:104CD00000000000000000000000000000000000D4 +:104CE00000000000000000000000000000000000C4 +:104CF00000000000000000000000000000000000B4 +:104D000000000000000000000000000000000000A3 +:104D10000000000000000000000000000000000093 +:104D20000000000000000000000000000000000083 +:104D30000000000000000000000000000000000073 +:104D40000000000000000000000000000000000063 +:104D50000000000000000000000000000000000053 +:104D60000000000000000000000000000000000043 +:104D70000000000000000000000000000000000033 +:104D80000000000000000000000000000000000023 +:104D90000000000000000000000000000000000013 +:104DA0000000000000000000000000000000000003 +:104DB00000000000000000000000000000000000F3 +:104DC00000000000000000000000000000000000E3 +:104DD00000000000000000000000000000000000D3 +:104DE00000000000000000000000000000000000C3 +:104DF00000000000000000000000000000000000B3 +:104E000000000000000000000000000000000000A2 +:104E10000000000000000000000000000000000092 +:104E20000000000000000000000000000000000082 +:104E30000000000000000000000000000000000072 +:104E40000000000000000000000000000000000062 +:104E50000000000000000000000000000000000052 +:104E60000000000000000000000000000000000042 +:104E70000000000000000000000000000000000032 +:104E80000000000000000000000000000000000022 +:104E90000000000000000000000000000000000012 +:104EA0000000000000000000000000000000000002 +:104EB00000000000000000000000000000000000F2 +:104EC00000000000000000000000000000000000E2 +:104ED00000000000000000000000000000000000D2 +:104EE00000000000000000000000000000000000C2 +:104EF00000000000000000000000000000000000B2 +:104F000000000000000000000000000000000000A1 +:104F10000000000000000000000000000000000091 +:104F20000000000000000000000000000000000081 +:104F30000000000000000000000000000000000071 +:104F40000000000000000000000000000000000061 +:104F50000000000000000000000000000000000051 +:104F60000000000000000000000000000000000041 +:104F70000000000000000000000000000000000031 +:104F80000000000000000000000000000000000021 +:104F90000000000000000000000000000000000011 +:104FA0000000000000000000000000000000000001 +:104FB00000000000000000000000000000000000F1 +:104FC00000000000000000000000000000000000E1 +:104FD00000000000000000000000000000000000D1 +:104FE00000000000000000000000000000000000C1 +:104FF0000000000000000000000000000000938599 +:105000001500930EB02993012000639DD52337111D +:10501000000013014123E81FB71E0000938E0E63AA +:10502000930130006310D5237D610100B71E00009D +:10503000938E4E42930140006316D121017101000D +:10504000B71E0000938E4E2293015000631CD11FA7 +:1050500097E5FFFF938505FCC8410505C8C1D04110 +:10506000B7CEDCFE938E9EA993016000631CD61D13 +:105070001365100041150100930E10FF930180008D +:105080006312D51D93671000C1570100930E00FFF6 +:10509000930190006398D71B05743184930E10FE22 +:1050A0009301B0006310D41B05743180B70E10005B +:1050B000938E1EFE9301C0006316D41979543D9857 +:1050C000930EE0FE9301E000631ED417D14419450E +:1050D000898C0100930EE0009301F0006394D417D3 +:1050E000D1441945A98C0100930E200193010001C0 +:1050F000639AD415D1441945C98C0100930E6001FF +:10510000930110016390D415D1441945E98C010035 +:10511000930E4000930120016396D4130564130499 +:1051200044231204B72E0100938E0E3493015001D4 +:10513000631AD411814011A011A011A021A2010075 +:10514000930E00009301E001639ED00F014511C151 +:1051500011A011A0C5A80100930E00009301F00159 +:105160006312D00F054511E111A011A0E1A80100C3 +:10517000930E0000930100026316D00D054511C186 +:1051800011A0C9A0930E000093011002631CD00B64 +:10519000014511E111A07DA0930E000093012002B2 +:1051A0006312D00B970200009382E200814082825A +:1051B00011A011A041A80100930E0000930130023C +:1051C0006392D009970200009382E20081408292AC +:1051D00011A011A085A8B38050400100930EE0FFFC +:1051E000930140026390D007970200009382E2008F +:1051F0008140112011A011A0B1A0B3805040010046 +:10520000930EE0FF93015002639ED00317E1FFFF6E +:10521000130141E0324505052AC63246B7CEDCFE11 +:10522000938E9EA993018002631ED601130530124E +:10523000AA82AA92930E60249301A0026394D201E1 +:10524000631A300013951100630005001365150003 +:10525000730000001305100073000000731000C0FD +:10526000000000000000000000000000000000003E +:10527000000000000000000000000000000000002E +:10528000000000000000000000000000000000001E +:10529000000000000000000000000000000000000E +:1052A00000000000000000000000000000000000FE +:1052B00000000000000000000000000000000000EE +:1052C00000000000000000000000000000000000DE +:1052D00000000000000000000000000000000000CE +:1052E00000000000000000000000000000000000BE +:1052F00000000000000000000000000000000000AE +:10530000000000000000000000000000000000009D +:10531000000000000000000000000000000000008D +:10532000000000000000000000000000000000007D +:10533000000000000000000000000000000000006D +:10534000000000000000000000000000000000005D +:10535000000000000000000000000000000000004D +:10536000000000000000000000000000000000003D +:10537000000000000000000000000000000000002D +:10538000000000000000000000000000000000001D +:10539000000000000000000000000000000000000D +:1053A00000000000000000000000000000000000FD +:1053B00000000000000000000000000000000000ED +:1053C00000000000000000000000000000000000DD +:1053D00000000000000000000000000000000000CD +:1053E00000000000000000000000000000000000BD +:1053F00000000000000000000000000000000000AD +:10540000000000000000000000000000000000009C +:10541000000000000000000000000000000000008C +:10542000000000000000000000000000000000007C +:10543000000000000000000000000000000000006C +:10544000000000000000000000000000000000005C +:10545000000000000000000000000000000000004C +:10546000000000000000000000000000000000003C +:10547000000000000000000000000000000000002C +:10548000000000000000000000000000000000001C +:10549000000000000000000000000000000000000C +:1054A00000000000000000000000000000000000FC +:1054B00000000000000000000000000000000000EC +:1054C00000000000000000000000000000000000DC +:1054D00000000000000000000000000000000000CC +:1054E00000000000000000000000000000000000BC +:1054F00000000000000000000000000000000000AC +:10550000000000000000000000000000000000009B +:10551000000000000000000000000000000000008B +:10552000000000000000000000000000000000007B +:10553000000000000000000000000000000000006B +:10554000000000000000000000000000000000005B +:10555000000000000000000000000000000000004B +:10556000000000000000000000000000000000003B +:10557000000000000000000000000000000000002B +:10558000000000000000000000000000000000001B +:10559000000000000000000000000000000000000B +:1055A00000000000000000000000000000000000FB +:1055B00000000000000000000000000000000000EB +:1055C00000000000000000000000000000000000DB +:1055D00000000000000000000000000000000000CB +:1055E00000000000000000000000000000000000BB +:1055F00000000000000000000000000000000000AB +:10560000000000000000000000000000000000009A +:10561000000000000000000000000000000000008A +:10562000000000000000000000000000000000007A +:10563000000000000000000000000000000000006A +:10564000000000000000000000000000000000005A +:10565000000000000000000000000000000000004A +:10566000000000000000000000000000000000003A +:10567000000000000000000000000000000000002A +:10568000000000000000000000000000000000001A +:10569000000000000000000000000000000000000A +:1056A00000000000000000000000000000000000FA +:1056B00000000000000000000000000000000000EA +:1056C00000000000000000000000000000000000DA +:1056D00000000000000000000000000000000000CA +:1056E00000000000000000000000000000000000BA +:1056F00000000000000000000000000000000000AA +:105700000000000000000000000000000000000099 +:105710000000000000000000000000000000000089 +:105720000000000000000000000000000000000079 +:105730000000000000000000000000000000000069 +:105740000000000000000000000000000000000059 +:105750000000000000000000000000000000000049 +:105760000000000000000000000000000000000039 +:105770000000000000000000000000000000000029 +:105780000000000000000000000000000000000019 +:105790000000000000000000000000000000000009 +:1057A00000000000000000000000000000000000F9 +:1057B00000000000000000000000000000000000E9 +:1057C00000000000000000000000000000000000D9 +:1057D00000000000000000000000000000000000C9 +:1057E00000000000000000000000000000000000B9 +:1057F00000000000000000000000000000000000A9 +:105800000000000000000000000000000000000098 +:105810000000000000000000000000000000000088 +:105820000000000000000000000000000000000078 +:105830000000000000000000000000000000000068 +:105840000000000000000000000000000000000058 +:105850000000000000000000000000000000000048 +:105860000000000000000000000000000000000038 +:105870000000000000000000000000000000000028 +:105880000000000000000000000000000000000018 +:105890000000000000000000000000000000000008 +:1058A00000000000000000000000000000000000F8 +:1058B00000000000000000000000000000000000E8 +:1058C00000000000000000000000000000000000D8 +:1058D00000000000000000000000000000000000C8 +:1058E00000000000000000000000000000000000B8 +:1058F00000000000000000000000000000000000A8 +:105900000000000000000000000000000000000097 +:105910000000000000000000000000000000000087 +:105920000000000000000000000000000000000077 +:105930000000000000000000000000000000000067 +:105940000000000000000000000000000000000057 +:105950000000000000000000000000000000000047 +:105960000000000000000000000000000000000037 +:105970000000000000000000000000000000000027 +:105980000000000000000000000000000000000017 +:105990000000000000000000000000000000000007 +:1059A00000000000000000000000000000000000F7 +:1059B00000000000000000000000000000000000E7 +:1059C00000000000000000000000000000000000D7 +:1059D00000000000000000000000000000000000C7 +:1059E00000000000000000000000000000000000B7 +:1059F00000000000000000000000000000000000A7 +:105A00000000000000000000000000000000000096 +:105A10000000000000000000000000000000000086 +:105A20000000000000000000000000000000000076 +:105A30000000000000000000000000000000000066 +:105A40000000000000000000000000000000000056 +:105A50000000000000000000000000000000000046 +:105A60000000000000000000000000000000000036 +:105A70000000000000000000000000000000000026 +:105A80000000000000000000000000000000000016 +:105A90000000000000000000000000000000000006 +:105AA00000000000000000000000000000000000F6 +:105AB00000000000000000000000000000000000E6 +:105AC00000000000000000000000000000000000D6 +:105AD00000000000000000000000000000000000C6 +:105AE00000000000000000000000000000000000B6 +:105AF00000000000000000000000000000000000A6 +:105B00000000000000000000000000000000000095 +:105B10000000000000000000000000000000000085 +:105B20000000000000000000000000000000000075 +:105B30000000000000000000000000000000000065 +:105B40000000000000000000000000000000000055 +:105B50000000000000000000000000000000000045 +:105B60000000000000000000000000000000000035 +:105B70000000000000000000000000000000000025 +:105B80000000000000000000000000000000000015 +:105B90000000000000000000000000000000000005 +:105BA00000000000000000000000000000000000F5 +:105BB00000000000000000000000000000000000E5 +:105BC00000000000000000000000000000000000D5 +:105BD00000000000000000000000000000000000C5 +:105BE00000000000000000000000000000000000B5 +:105BF00000000000000000000000000000000000A5 +:105C00000000000000000000000000000000000094 +:105C10000000000000000000000000000000000084 +:105C20000000000000000000000000000000000074 +:105C30000000000000000000000000000000000064 +:105C40000000000000000000000000000000000054 +:105C50000000000000000000000000000000000044 +:105C60000000000000000000000000000000000034 +:105C70000000000000000000000000000000000024 +:105C80000000000000000000000000000000000014 +:105C90000000000000000000000000000000000004 +:105CA00000000000000000000000000000000000F4 +:105CB00000000000000000000000000000000000E4 +:105CC00000000000000000000000000000000000D4 +:105CD00000000000000000000000000000000000C4 +:105CE00000000000000000000000000000000000B4 +:105CF00000000000000000000000000000000000A4 +:105D00000000000000000000000000000000000093 +:105D10000000000000000000000000000000000083 +:105D20000000000000000000000000000000000073 +:105D30000000000000000000000000000000000063 +:105D40000000000000000000000000000000000053 +:105D50000000000000000000000000000000000043 +:105D60000000000000000000000000000000000033 +:105D70000000000000000000000000000000000023 +:105D80000000000000000000000000000000000013 +:105D90000000000000000000000000000000000003 +:105DA00000000000000000000000000000000000F3 +:105DB00000000000000000000000000000000000E3 +:105DC00000000000000000000000000000000000D3 +:105DD00000000000000000000000000000000000C3 +:105DE00000000000000000000000000000000000B3 +:105DF00000000000000000000000000000000000A3 +:105E00000000000000000000000000000000000092 +:105E10000000000000000000000000000000000082 +:105E20000000000000000000000000000000000072 +:105E30000000000000000000000000000000000062 +:105E40000000000000000000000000000000000052 +:105E50000000000000000000000000000000000042 +:105E60000000000000000000000000000000000032 +:105E70000000000000000000000000000000000022 +:105E80000000000000000000000000000000000012 +:105E90000000000000000000000000000000000002 +:105EA00000000000000000000000000000000000F2 +:105EB00000000000000000000000000000000000E2 +:105EC00000000000000000000000000000000000D2 +:105ED00000000000000000000000000000000000C2 +:105EE00000000000000000000000000000000000B2 +:105EF00000000000000000000000000000000000A2 +:105F00000000000000000000000000000000000091 +:105F10000000000000000000000000000000000081 +:105F20000000000000000000000000000000000071 +:105F30000000000000000000000000000000000061 +:105F40000000000000000000000000000000000051 +:105F50000000000000000000000000000000000041 +:105F60000000000000000000000000000000000031 +:105F70000000000000000000000000000000000021 +:105F80000000000000000000000000000000000011 +:105F90000000000000000000000000000000000001 +:105FA00000000000000000000000000000000000F1 +:105FB00000000000000000000000000000000000E1 +:0C5FC000000000000000000000000000D5 +:105FCC00417373657274696F6E206661696C656488 +:105FDC003A2061646472203E3D202831554C203CAF +:105FEC003C203132292026262061646472203C201A +:105FFC003633202A202831554C203C3C2031322984 +:10600C000A000000417373657274696F6E206661DB +:10601C00696C65643A20212870745B315D5B616446 +:10602C0064722F2831554C203C3C203132295D20A4 +:10603C00262030783038302920262620636175736D +:10604C0065203D3D203078660A0000004173736581 +:10605C007274696F6E206661696C65643A206E6F4C +:10606C0064650A00417373657274696F6E206661B2 +:10607C00696C65643A20757365725F6D61707069E7 +:10608C006E675B616464722F2831554C203C3C2058 +:10609C003132295D2E61646472203D3D20300A004E +:1060AC00417373657274696F6E206661696C6564A7 +:1060BC003A2070745B315D5B616464722F283155DA +:1060CC004C203C3C203132295D2026203078303465 +:1060DC00300A0000417373657274696F6E206661DB +:1060EC00696C65643A2070745B315D5B61646472E9 +:1060FC002F2831554C203C3C203132295D20262064 +:10610C0030783038300A0000417373657274696FEF +:10611C006E206661696C65643A2074662D3E65700C +:10612C006320252034203D3D20300A0041737365E7 +:10613C007274696F6E206661696C65643A20212205 +:10614C00696C6C6567616C20696E737472756374CD +:10615C00696F6E220A000000417373657274696F77 +:10616C006E206661696C65643A202122756E6578D3 +:10617C0070656374656420657863657074696F6EAF +:10618C00220A0000417373657274696F6E20666138 +:10619C00696C65643A202122756E737570706F722C +:1061AC007465642073617470206D6F6465220A00DD +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-fadd.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fadd.hex new file mode 100644 index 00000000..7193fc07 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-fadd.hex @@ -0,0 +1,92 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07300500873085001F +:1001200007310501832685010323C501D371100220 +:10013000273035008323450003250500F315100003 +:1001400013060000631AD526631873266396C52626 +:1001500093013000172500001305C5EC073005009A +:100160008730850007310501832685010323C501FA +:10017000D371100227303500832345000325050085 +:10018000F3151000130610006318D52263167322AE +:100190006394C5229301400017250000130585EAEA +:1001A000073005008730850007310501832685016A +:1001B0000323C501D3711002273035008323450086 +:1001C00003250500F3151000130610006316D51E55 +:1001D0006314731E6392C51E93015000172500001F +:1001E000130545E807300500873085000731050114 +:1001F000832685010323C501D371100A27303500FA +:100200008323450003250500F315100013060000A5 +:100210006314D51A6312731A6390C51A93016000B0 +:1002200017250000130505E6073005008730850017 +:1002300007310501832685010323C501D371100A07 +:10024000273035008323450003250500F3151000F2 +:10025000130610006312D51663107316639EC5143F +:1002600093017000172500001305C5E30730050052 +:100270008730850007310501832685010323C501E9 +:10028000D371100A2730350083234500032505006C +:10029000F3151000130610006310D512631E7310BF +:1002A000639CC5109301800017250000130585E1AC +:1002B0000730050087308500073105018326850159 +:1002C0000323C501D3711012273035008323450065 +:1002D00003250500F315100013060000631ED50C5E +:1002E000631C730C639AC50C9301900017250000E2 +:1002F000130545DF0730050087308500073105010C +:10030000832685010323C501D371101227303500E0 +:100310008323450003250500F31510001306100084 +:10032000631CD508631A73086398C5089301A0007D +:1003300017250000130505DD07300500873085000F +:1003400007310501832685010323C501D3711012EE +:10035000273035008323450003250500F3151000E1 +:1003600013061000631AD504631873046396C5045A +:100370009301B000172500001305C5DA073005000A +:100380008730850007310501832685010323C501D8 +:10039000D371100A2730350083234500032505005B +:1003A000F3151000130600016318D50063167300DF +:1003B0006394C500631030020F00F00F63800100EA +:1003C0009391110093E111009308D005138501006A +:1003D000730000000F00F00F930110009308D00588 +:1003E0001305000073000000731000C0000000003F +:0C03F00000000000000000000000000001 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000000000000000000440000000000000F03F5D +:1020100000000000000000000000000000000C4074 +:1020200066666666664C93C09A9999999999F13F4C +:10203000000000000000000000000000004893C005 +:10204000F1D4C853FB2109403A8C30E28E79453EE9 +:102050000000000000000000DF6D2055FB2109405A +:102060000000000000000440000000000000F03FFD +:102070000000000000000000000000000000F83F29 +:1020800066666666664C93C09A9999999999F1BF6C +:10209000000000000000000000000000004893C0A5 +:1020A000F1D4C853FB2109403A8C30E28E79453E89 +:1020B0000000000000000000033C7152FB210940B9 +:1020C0000000000000000440000000000000F03F9D +:1020D00000000000000000000000000000000440BC +:1020E00066666666664C93C09A9999999999F1BF0C +:1020F00000000000000000003D0AD7A3703A9540A0 +:10210000F1D4C853FB2109403A8C30E28E79453E28 +:10211000000000000000000009FFC1A5C5DD603E11 +:10212000000000000000F07F000000000000F07FD1 +:102130000000000000000000000000000000F87F28 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-fclass.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fclass.hex new file mode 100644 index 00000000..fd8bef3c --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-fclass.hex @@ -0,0 +1,53 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F17300203017250000DE +:10011000130545EF07350500531505E2930E100052 +:10012000930120006312D51117250000130505EE79 +:1001300007350500531505E2930E200093013000AA +:100140006314D50F172500001305C5EC073505000E +:10015000531505E2930E4000930140006316D50D40 +:1001600017250000130585EB07350500531505E23B +:10017000930E8000930150006318D50B17250000E3 +:10018000130545EA07350500531505E2930E0001F6 +:1001900093016000631AD50917250000130505E9CE +:1001A00007350500531505E2930E00029301700018 +:1001B000631CD507172500001305C5E707350500A3 +:1001C000531505E2930E000493018000631ED505CC +:1001D00017250000130585E607350500531505E2D0 +:1001E000930E0008930190006310D50517250000B9 +:1001F000130545E507350500531505E2930E00107C +:100200009301A0006312D50317250000130505E430 +:1002100007350500531505E2930E00209301B00049 +:100220006314D501631030020F00F00F63800100EA +:100230009391110093E111009308D00513850100FB +:10024000730000000F00F00F930110009308D00519 +:100250001305000073000000731000C000000000D0 +:10026000000000000000000000000000000000008E +:0C02700000000000000000000000000082 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000000000000F0FF000000000000F0BF32 +:10201000FFFFFFFFFFFF0F800000000000000080B7 +:102020000000000000000000FFFFFFFFFFFF0F00A7 +:10203000000000000000F03F000000000000F07F02 +:10204000010000000000F07F000000000000F87FA9 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-fcmp.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fcmp.hex new file mode 100644 index 00000000..ea8e4f31 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-fcmp.hex @@ -0,0 +1,118 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07300500873085001F +:1001200007310501832685010323C501532510A24C +:1001300093030000F315100013060000631CD53470 +:10014000631A73346398C534930130001725000097 +:10015000130545ED0730050087308500073105019F +:10016000832685010323C501530510A293030000D4 +:10017000F315100013060000631ED530631C7330A6 +:10018000639AC5309301400017250000130585EBE5 +:10019000073005008730850007310501832685017A +:1001A0000323C501531510A293030000F31510009B +:1001B000130600006310D52E631E732C639CC52CA0 +:1001C00093015000172500001305C5E9073005000D +:1001D0008730850007310501832685010323C5018A +:1001E000532510A293030000F3151000130600001E +:1001F0006312D52A6310732A639EC5289301600099 +:1002000017250000130505E8073005008730850035 +:1002100007310501832685010323C501530510A27B +:1002200093030000F3151000130600006314D52695 +:10023000631273266390C526930170001725000092 +:10024000130545E6073005008730850007310501B5 +:10025000832685010323C501531510A293030000D3 +:10026000F3151000130600006316D52263147322E1 +:100270006392C5229301800017250000130585E4D1 +:100280000730050087308500073105018326850189 +:100290000323C501532510A293030000F31510009A +:1002A000130600006318D51E6316731E6394C51EE3 +:1002B00093019000172500001305C5E207300500E3 +:1002C0008730850007310501832685010323C50199 +:1002D000532510A293030000F3151000130600002D +:1002E000631AD51A6318731A6396C51A9301A0008E +:1002F00017250000130505E107300500873085004C +:1003000007310501832685010323C501532510A26A +:1003100093030000F315100013060001631CD516AB +:10032000631A73166398C5169301B0001725000071 +:10033000130545DF073005008730850007310501CB +:10034000832685010323C501531510A293030000E2 +:10035000F315100013060001631ED512631C7312FF +:10036000639AC5129301C00017250000130585DDAF +:100370000730050087308500073105018326850198 +:100380000323C501531510A293030000F3151000B9 +:10039000130600016310D510631E730E639CC50E17 +:1003A0009301D000172500001305C5DB07300500B9 +:1003B0008730850007310501832685010323C501A8 +:1003C000531510A293030000F3151000130600014B +:1003D0006312D50C6310730C639EC50A9301E00091 +:1003E00017250000130505DA073005008730850062 +:1003F00007310501832685010323C501530510A29A +:1004000093030000F3151000130600016314D508D0 +:10041000631273086390C5089301F000172500006C +:10042000130545D8073005008730850007310501E1 +:10043000832685010323C501530510A29303000001 +:10044000F3151000130600016316D504631473043A +:100450006392C5049301000117250000130585D69A +:1004600007300500873085000731050183268501A7 +:100470000323C501530510A293030000F3151000D8 +:10048000130600016318D500631673006394C5005A +:10049000631030020F00F00F638001009391110090 +:1004A00093E111009308D00513850100730000004B +:1004B0000F00F00F930110009308D0051305000002 +:1004C00073000000731000C0000000000000000076 +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:0C04F00000000000000000000000000000 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000C3F5285C8FC2F5BFC3F5285C8FC2F5BF4E +:1020100000000000000000000100000000000000BF +:10202000C3F5285C8FC2F5BFC3F5285C8FC2F5BF2E +:10203000000000000000000001000000000000009F +:10204000C3F5285C8FC2F5BFC3F5285C8FC2F5BF0E +:102050000000000000000000000000000000000080 +:10206000EC51B81E85EBF5BFC3F5285C8FC2F5BFF8 +:102070000000000000000000000000000000000060 +:10208000EC51B81E85EBF5BFC3F5285C8FC2F5BFD8 +:10209000000000000000000001000000000000003F +:1020A000EC51B81E85EBF5BFC3F5285C8FC2F5BFB8 +:1020B000000000000000000001000000000000001F +:1020C000FFFFFFFFFFFFFF7F000000000000000098 +:1020D0000000000000000000000000000000000000 +:1020E000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7F00 +:1020F00000000000000000000000000000000000E0 +:10210000010000000000F07F00000000000000005F +:1021100000000000000000000000000000000000BF +:10212000FFFFFFFFFFFFFF7F000000000000000037 +:10213000000000000000000000000000000000009F +:10214000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7F9F +:10215000000000000000000000000000000000007F +:10216000010000000000F07F0000000000000000FF +:10217000000000000000000000000000000000005F +:10218000FFFFFFFFFFFFFF7F0000000000000000D7 +:10219000000000000000000000000000000000003F +:1021A000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7F3F +:1021B000000000000000000000000000000000001F +:1021C000010000000000F07F00000000000000009F +:1021D00000000000000000000000000000000000FF +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-fcvt.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fcvt.hex new file mode 100644 index 00000000..c5e7b1b7 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-fcvt.hex @@ -0,0 +1,63 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF83260500032745007A +:1001200093052000538005D2273005008325450024 +:1001300003250500731010006312D5166390E516B1 +:100140009301300017250000130545EC83260500B8 +:10015000032745009305E0FF538005D227300500B3 +:100160008325450003250500731010006318D51280 +:100170006396E5129301400017250000130585E9F9 +:10018000832605000327450093052000538015D2E0 +:100190002730050083254500032505007310100056 +:1001A000631ED50E639CE50E9301500017250000D9 +:1001B0001305C5E683260500032745009305E0FFE8 +:1001C000538015D2273005008325450003250500FF +:1001D000731010006314D50C6392E50C9301A0001A +:1001E00017250000130505E407300500873085005A +:1001F00007310501832685010323C501D371104012 +:10020000D3810142273035008323450003250500B3 +:10021000F3151000130600006312D508631073086D +:10022000639EC5069301B00017250000130585E104 +:100230000720050087204500072185008326C5008B +:10024000D3010042D3F11140538501E0F3151000B2 +:10025000130600006314D5046392C50497250000BB +:10026000938545E007B105005371114053010142E8 +:1002700027B0250003A5050083A5450097270000AA +:10028000938747DD83AE070083A747009301C00033 +:100290006316D5016394F500631030020F00F00F70 +:1002A000638001009391110093E111009308D00540 +:1002B00013850100730000000F00F00F9301100080 +:1002C0009308D0051305000073000000731000C0F0 +:1002D000000000000000000000000000000000001E +:1002E000000000000000000000000000000000000E +:0C02F00000000000000000000000000002 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000000000000004000000000000000C0D0 +:1020100000000000000000400000C0FFFFFFEF4193 +:10202000000000000000F8BF0000000000000000F9 +:102030000000000000000000000000000000F8BFE9 +:102040000000C0BF00000000000000000000C0BF92 +:10205000000000000000F87F000000000000000009 +:102060000480FFFFFFFFFC7F000000000000000075 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fcvt_w.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex rename to benchmarks/riscv_tests/isa/rv32ud-p-fcvt_w.hex diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-fdiv.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fdiv.hex new file mode 100644 index 00000000..e8a5dbb4 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-fdiv.hex @@ -0,0 +1,80 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07300500873085001F +:1001200007310501832685010323C501D371101A08 +:10013000273035008323450003250500F315100003 +:10014000130610006316D51E6314731E6392C51E3A +:1001500093013000172500001305C5EC073005009A +:100160008730850007310501832685010323C501FA +:10017000D371101A2730350083234500032505006D +:10018000F3151000130610006314D51A6312731AC6 +:100190006390C51A9301400017250000130585EAF6 +:1001A000073005008730850007310501832685016A +:1001B0000323C501D371101A27303500832345006E +:1001C00003250500F3151000130600006312D51671 +:1001D00063107316639EC514930150001725000029 +:1001E000130545E807300500873085000731050114 +:1001F000832685010323C501D371005A27303500BA +:100200008323450003250500F31510001306100095 +:100210006310D512631E7310639CC51093016000B8 +:1002200017250000130505E6073005008730850017 +:1002300007310501832685010323C501D371005AC7 +:10024000273035008323450003250500F3151000F2 +:1002500013060000631ED50C631C730C639AC50C57 +:1002600093010001172500001305C5E307300500C1 +:100270008730850007310501832685010323C501E9 +:10028000D371005A2730350083234500032505002C +:10029000F315100013060001631CD508631A7308D8 +:1002A0006398C5089301700017250000130585E1C8 +:1002B0000730050087308500073105018326850159 +:1002C0000323C501D371005A27303500832345002D +:1002D00003250500F315100013061000631AD5045A +:1002E000631873046396C50493018000172500000A +:1002F000130545DF0730050087308500073105010C +:10030000832685010323C501D371005A27303500A8 +:100310008323450003250500F31510001306100084 +:100320006318D500631673006394C5006310300230 +:100330000F00F00F638001009391110093E1110011 +:100340009308D00513850100730000000F00F00F23 +:10035000930110009308D0051305000073000000FE +:10036000731000C00000000000000000000000004A +:0C03700000000000000000000000000081 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000F1D4C853FB210940DDB0F1890ABF054076 +:102010000000000000000000EC83C3F6DB7DF23F0F +:1020200000000000004893C066666666664C9340F8 +:102030000000000000000000A529193EB4F8EFBF21 +:10204000F1D4C853FB210940000000000000F03F1C +:102050000000000000000000F1D4C853FB2109403B +:10206000F1D4C853FB21094000000000000000002B +:1020700000000000000000007B586F91F85BFC3FFF +:10208000000000000088C3400000000000000000C5 +:1020900000000000000000000000000000005940A7 +:1020A000000000000000F0BF000000000000000081 +:1020B0000000000000000000000000000000F87FA9 +:1020C000000000000060654000000000000000000B +:1020D0000000000000000000F57496CE44272A405E +:1020E00005A10AC7DF94853E000000000000000043 +:1020F0000000000000000000997FE3C089473A3FDC +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-fmadd.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fmadd.hex new file mode 100644 index 00000000..5409c801 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-fmadd.hex @@ -0,0 +1,104 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07300500873085001F +:1001200007310501832685010323C501C371101220 +:10013000273035008323450003250500F315100003 +:1001400013060000631ED52E631C732E639AC52E02 +:1001500093013000172500001305C5EC073005009A +:100160008730850007310501832685010323C501FA +:10017000C371101227303500832345000325050085 +:10018000F315100013061000631CD52A631A732A96 +:100190006398C52A9301400017250000130585EADE +:1001A000073005008730850007310501832685016A +:1001B0000323C501C3711012273035008323450086 +:1001C00003250500F315100013060000631AD52659 +:1001D000631873266396C526930150001725000007 +:1001E000130545E807300500873085000731050114 +:1001F000832685010323C501CF71101227303500F6 +:100200008323450003250500F315100013060000A5 +:100210006318D522631673226394C522930160008C +:1002200017250000130505E6073005008730850017 +:1002300007310501832685010323C501CF71101203 +:10024000273035008323450003250500F3151000F2 +:10025000130610006316D51E6314731E6392C51E29 +:1002600093017000172500001305C5E30730050052 +:100270008730850007310501832685010323C501E9 +:10028000CF71101227303500832345000325050068 +:10029000F3151000130600006314D51A6312731AC5 +:1002A0006390C51A9301800017250000130585E1AE +:1002B0000730050087308500073105018326850159 +:1002C0000323C501C7711012273035008323450071 +:1002D00003250500F3151000130600006312D51660 +:1002E00063107316639EC5149301900017250000D8 +:1002F000130545DF0730050087308500073105010C +:10030000832685010323C501C771101227303500EC +:100310008323450003250500F31510001306100084 +:100320006310D512631E7310639CC5109301A00067 +:1003300017250000130505DD07300500873085000F +:1003400007310501832685010323C501C7711012FA +:10035000273035008323450003250500F3151000E1 +:1003600013060000631ED50C631C730C639AC50C46 +:100370009301B000172500001305C5DA073005000A +:100380008730850007310501832685010323C501D8 +:10039000CB7110122730350083234500032505005B +:1003A000F315100013060000631CD508631A7308C8 +:1003B0006398C5089301C00017250000130585D870 +:1003C0000730050087308500073105018326850148 +:1003D0000323C501CB71101227303500832345005C +:1003E00003250500F315100013061000631AD50449 +:1003F000631873046396C5049301D00017250000A9 +:10040000130545D607300500873085000731050103 +:10041000832685010323C501CB71101227303500D7 +:100420008323450003250500F31510001306000083 +:100430006318D500631673006394C500631030021F +:100440000F00F00F638001009391110093E1110000 +:100450009308D00513850100730000000F00F00F12 +:10046000930110009308D0051305000073000000ED +:0C047000731000C000000000000000003D +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000000000000F03F00000000000004405D +:10201000000000000000F03F0000000000000C4045 +:10202000000000000000F0BF66666666664C93C064 +:102030009A9999999999F13FCCCCCCCCCC509340BA +:10204000000000000000004000000000000014C07C +:1020500000000000000000C000000000000028C0D8 +:10206000000000000000F03F0000000000000440FD +:10207000000000000000F03F0000000000000CC065 +:10208000000000000000F0BF66666666664C93C004 +:102090009A9999999999F13FCCCCCCCCCC5093C0DA +:1020A000000000000000004000000000000014C01C +:1020B00000000000000000C00000000000002840F8 +:1020C000000000000000F03F00000000000004409D +:1020D000000000000000F03F000000000000F83F9A +:1020E000000000000000F0BF66666666664C93C0A4 +:1020F0009A9999999999F13F0000000000489340FE +:10210000000000000000004000000000000014C0BB +:1021100000000000000000C000000000000020C01F +:10212000000000000000F03F00000000000004403C +:10213000000000000000F03F000000000000F8BFB9 +:10214000000000000000F0BF66666666664C93C043 +:102150009A9999999999F13F00000000004893C01D +:10216000000000000000004000000000000014C05B +:1021700000000000000000C000000000000020403F +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-fmin.hex b/benchmarks/riscv_tests/isa/rv32ud-p-fmin.hex new file mode 100644 index 00000000..965383ce --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-fmin.hex @@ -0,0 +1,144 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07300500873085001F +:1001200007310501832685010323C501D301102A68 +:10013000273035008323450003250500F315100003 +:1001400013060000631AD548631873486396C548C0 +:1001500093013000172500001305C5EC073005009A +:100160008730850007310501832685010323C501FA +:10017000D301102A273035008323450003250500CD +:10018000F3151000130600006318D544631673447A +:100190006394C5449301400017250000130585EAC8 +:1001A000073005008730850007310501832685016A +:1001B0000323C501D301102A2730350083234500CE +:1001C00003250500F3151000130600006316D54043 +:1001D000631473406392C5409301500017250000DB +:1001E000130545E807300500873085000731050114 +:1001F000832685010323C501D301102A273035004A +:100200008323450003250500F315100013060000A5 +:100210006314D53C6312733C6390C53C930160004A +:1002200017250000130505E6073005008730850017 +:1002300007310501832685010323C501D301102A57 +:10024000273035008323450003250500F3151000F2 +:10025000130600006312D53863107338639EC536E9 +:1002600093017000172500001305C5E30730050052 +:100270008730850007310501832685010323C501E9 +:10028000D301102A273035008323450003250500BC +:10029000F3151000130600006310D534631E73328B +:1002A000639CC5329301C00017250000130585E14A +:1002B0000730050087308500073105018326850159 +:1002C0000323C501D311102A2730350083234500AD +:1002D00003250500F315100013060000631ED52E3C +:1002E000631C732E639AC52E9301D000172500005E +:1002F000130545DF0730050087308500073105010C +:10030000832685010323C501D311102A2730350028 +:100310008323450003250500F31510001306000094 +:10032000631CD52A631A732A6398C52A9301E000D7 +:1003300017250000130505DD07300500873085000F +:1003400007310501832685010323C501D311102A36 +:10035000273035008323450003250500F3151000E1 +:1003600013060000631AD526631873266396C52604 +:100370009301F000172500001305C5DA07300500CA +:100380008730850007310501832685010323C501D8 +:10039000D311102A2730350083234500032505009B +:1003A000F3151000130600006318D522631673229C +:1003B0006394C5229301000117250000130585D819 +:1003C0000730050087308500073105018326850148 +:1003D0000323C501D311102A27303500832345009C +:1003E00003250500F3151000130600006316D51E43 +:1003F0006314731E6392C51E93011001172500003C +:10040000130545D607300500873085000731050103 +:10041000832685010323C501D311102A2730350017 +:100420008323450003250500F31510001306000083 +:100430006314D51A6312731A6390C51A93014001AD +:1004400017250000130505D4073005008730850007 +:1004500007310501832685010323C501D311102A25 +:10046000273035008323450003250500F3151000D0 +:10047000130600016312D51663107316639EC5142C +:1004800093015001172500001305C5D10730050061 +:100490008730850007310501832685010323C501C7 +:1004A000D311102A2730350083234500032505008A +:1004B000F3151000130600006310D512631E7310AD +:1004C000639CC5109301E00117250000130585CF3B +:1004D0000730050087308500073105018326850137 +:1004E0000323C501D301102A27303500832345009B +:1004F00003250500F315100013060000631ED50C3C +:10050000631C730C639AC50C9301F001172500005E +:10051000130545CD073005008730850007310501FB +:10052000832685010323C501D301102A2730350016 +:100530008323450003250500F31510001306000072 +:10054000631CD508631A73086398C50893010002F9 +:1005500017250000130505CB0730050087308500FF +:1005600007310501832685010323C501D311102A14 +:10057000273035008323450003250500F3151000BF +:1005800013060000631AD504631873046396C50448 +:1005900093011002172500001305C5C80730050098 +:1005A0008730850007310501832685010323C501B6 +:1005B000D311102A27303500832345000325050079 +:1005C000F3151000130600006318D50063167300BE +:1005D0006394C500631030020F00F00F63800100C8 +:1005E0009391110093E111009308D0051385010048 +:1005F000730000000F00F00F930110009308D00566 +:100600001305000073000000731000C0000000001C +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:0C063000000000000000000000000000BE +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000000000000000000440000000000000F03F5D +:102010000000000000000000000000000000F03F91 +:1020200066666666664C93C09A9999999999F13F4C +:10203000000000000000000066666666664C93C003 +:102040009A9999999999F13F66666666664C93C02C +:10205000000000000000000066666666664C93C0E3 +:10206000FFFFFFFFFFFFFF7F66666666664C93C05B +:10207000000000000000000066666666664C93C0C3 +:10208000F1D4C853FB2109403A8C30E28E79453EA9 +:1020900000000000000000003A8C30E28E79453EDE +:1020A000000000000000F0BF00000000000000C0C1 +:1020B000000000000000000000000000000000C060 +:1020C0000000000000000440000000000000F03F9D +:1020D00000000000000000000000000000000440BC +:1020E00066666666664C93C09A9999999999F13F8C +:1020F00000000000000000009A9999999999F13F19 +:102100009A9999999999F13F66666666664C93C06B +:1021100000000000000000009A9999999999F13FF8 +:10212000FFFFFFFFFFFFFF7F66666666664C93C09A +:10213000000000000000000066666666664C93C002 +:10214000F1D4C853FB2109403A8C30E28E79453EE8 +:102150000000000000000000F1D4C853FB2109403A +:10216000000000000000F0BF00000000000000C000 +:102170000000000000000000000000000000F0BFB0 +:10218000010000000000F07F000000000000F03FB0 +:102190000000000000000000000000000000F03F10 +:1021A000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7F3F +:1021B0000000000000000000000000000000F87FA8 +:1021C000000000000000008000000000000000008F +:1021D000000000000000000000000000000000807F +:1021E000000000000000000000000000000000806F +:1021F000000000000000000000000000000000805F +:10220000000000000000008000000000000000004E +:1022100000000000000000000000000000000000BE +:10222000000000000000000000000000000000802E +:10223000000000000000000000000000000000009E +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-p-ldst.hex b/benchmarks/riscv_tests/isa/rv32ud-p-ldst.hex new file mode 100644 index 00000000..798b31fe --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-p-ldst.hex @@ -0,0 +1,49 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F17300203017240000DF +:10011000130444F2073104002738240003250401A6 +:1001200083254401972700009387C7ED83AE07001E +:1001300083A7470093012000631ED50B639CF50A3B +:1001400007310400272824000325040183254401E6 +:1001500097270000938787EB83AE070083A74700AC +:10016000930130006318D5096396F5080721040050 +:100170002728240003250401832544019727000034 +:10018000938747E983AE070083A7470093014000A8 +:100190006312D5076390F5060731840027382400E1 +:1001A000032504018325440197270000938707E76F +:1001B00083AE070083A7470093015000631CD5035B +:1001C000639AF502072184002738240003250401DF +:1001D00083254401972700009387C7E483AE070077 +:1001E00083A74700930160006316D5016394F5006F +:1001F000631030020F00F00F638001009391110033 +:1002000093E111009308D0051385010073000000ED +:100210000F00F00F930110009308D00513050000A4 +:1002200073000000731000C0000000000000000018 +:0C023000000000000000000000000000C2 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000080BF00000040000080BF00000040D2 +:10201000000080BF0000004000004040000080C081 +:1020200000004040FFFFFFFF000000000000000034 +:10203000000080BF0000004000004040000080C061 +:10204000EFBEADDEBEBAFECAEA1DADAB0DD0371392 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-recoding.hex b/benchmarks/riscv_tests/isa/rv32ud-p-recoding.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-recoding.hex rename to benchmarks/riscv_tests/isa/rv32ud-p-recoding.hex diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fadd.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fadd.hex new file mode 100644 index 00000000..446bb675 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fadd.hex @@ -0,0 +1,332 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938585A797F6FFFF85 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545A497F6FFFF9386C6AD17F6FFFF88 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505A2BE +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C59C97F6FFFFFF +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C59597F6FFFF9386C68C17F6FFFF26 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385458C1306100497F6FFFFDC +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306067D97E6FFFF08 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306066E97E6FFFF9386866A49 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C66497E6FFFF9386866439 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093073003930500001303F30306 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B737700E32 +:102B8000B70508009387976E130700009385C5FF6C +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306065097E6FFFF93868641FE +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C6000073005008730850007310501832685017F +:102C70000323C501D371100227303500832345009B +:102C800003250500F315100013060000631AD5266E +:102C9000631873266396C52693013000171500004C +:102CA00013054538073005008730850007310501D9 +:102CB000832685010323C501D37110022730350017 +:102CC0008323450003250500F315100013061000AB +:102CD0006318D522631673226394C52293014000C2 +:102CE00017150000130505360730050087308500ED +:102CF00007310501832685010323C501D371100225 +:102D0000273035008323450003250500F315100007 +:102D1000130610006316D51E6314731E6392C51E3E +:102D200093015000171500001305C5330730050047 +:102D30008730850007310501832685010323C501FE +:102D4000D371100A27303500832345000325050081 +:102D5000F3151000130600006314D51A6312731ADA +:102D60006390C51A930160001715000013058531A3 +:102D7000073005008730850007310501832685016E +:102D80000323C501D371100A273035008323450082 +:102D900003250500F3151000130610006312D51665 +:102DA00063107316639EC51493017000171500001D +:102DB0001305452F073005008730850007310501D1 +:102DC000832685010323C501D371100A27303500FE +:102DD0008323450003250500F3151000130610009A +:102DE0006310D512631E7310639CC510930180009D +:102DF000171500001305052D0730050087308500E5 +:102E000007310501832685010323C501D371101203 +:102E1000273035008323450003250500F3151000F6 +:102E200013060000631ED50C631C730C639AC50C5B +:102E300093019000171500001305C52A07300500FF +:102E40008730850007310501832685010323C501ED +:102E5000D371101227303500832345000325050068 +:102E6000F315100013061000631CD508631A7308CD +:102E70006398C5089301A000171500001305852865 +:102E8000073005008730850007310501832685015D +:102E90000323C501D3711012273035008323450069 +:102EA00003250500F315100013061000631AD5045E +:102EB000631873046396C5049301B00017150000EE +:102EC00013054526073005008730850007310501C9 +:102ED000832685010323C501D371100A27303500ED +:102EE0008323450003250500F31510001306000198 +:102EF0006318D500631673006394C500631A30002D +:102F000013951100630005001365150073000000A0 +:0C2F10001305100073000000731000C0D7 +:102F1C00417373657274696F6E206661696C656468 +:102F2C003A2061646472203E3D202831554C203C8F +:102F3C003C203132292026262061646472203C20FA +:102F4C003633202A202831554C203C3C2031322964 +:102F5C000A000000417373657274696F6E206661BC +:102F6C00696C65643A20212870745B315D5B616427 +:102F7C0064722F2831554C203C3C203132295D2085 +:102F8C00262030783038302920262620636175734E +:102F9C0065203D3D203078660A0000004173736562 +:102FAC007274696F6E206661696C65643A206E6F2D +:102FBC0064650A00417373657274696F6E20666193 +:102FCC00696C65643A20757365725F6D61707069C8 +:102FDC006E675B616464722F2831554C203C3C2039 +:102FEC003132295D2E61646472203D3D20300A002F +:102FFC00417373657274696F6E206661696C656488 +:10300C003A2070745B315D5B616464722F283155BA +:10301C004C203C3C203132295D2026203078303445 +:10302C00300A0000417373657274696F6E206661BB +:10303C00696C65643A2070745B315D5B61646472C9 +:10304C002F2831554C203C3C203132295D20262044 +:10305C0030783038300A0000417373657274696FD0 +:10306C006E206661696C65643A2074662D3E6570ED +:10307C006320252034203D3D20300A0041737365C8 +:10308C007274696F6E206661696C65643A202122E6 +:10309C00696C6C6567616C20696E737472756374AE +:1030AC00696F6E220A000000417373657274696F58 +:1030BC006E206661696C65643A202122756E6578B4 +:1030CC0070656374656420657863657074696F6E90 +:1030DC00220A0000417373657274696F6E20666119 +:1030EC00696C65643A202122756E737570706F720D +:1030FC007465642073617470206D6F6465220A00BE +:104000000000000000000440000000000000F03F3D +:1040100000000000000000000000000000000C4054 +:1040200066666666664C93C09A9999999999F13F2C +:10403000000000000000000000000000004893C0E5 +:10404000F1D4C853FB2109403A8C30E28E79453EC9 +:104050000000000000000000DF6D2055FB2109403A +:104060000000000000000440000000000000F03FDD +:104070000000000000000000000000000000F83F09 +:1040800066666666664C93C09A9999999999F1BF4C +:10409000000000000000000000000000004893C085 +:1040A000F1D4C853FB2109403A8C30E28E79453E69 +:1040B0000000000000000000033C7152FB21094099 +:1040C0000000000000000440000000000000F03F7D +:1040D000000000000000000000000000000004409C +:1040E00066666666664C93C09A9999999999F1BFEC +:1040F00000000000000000003D0AD7A3703A954080 +:10410000F1D4C853FB2109403A8C30E28E79453E08 +:10411000000000000000000009FFC1A5C5DD603EF1 +:10412000000000000000F07F000000000000F07FB1 +:104130000000000000000000000000000000F87F08 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fclass.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fclass.hex new file mode 100644 index 00000000..4254ea28 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fclass.hex @@ -0,0 +1,292 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385858E97F6FFFF9E +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385458B97F6FFFF9386C6AD17F6FFFFA1 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF8130510049715000093850589D7 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C58397F6FFFF18 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C57C97F6FFFF9386C68C17F6FFFF3F +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545731306100497F6FFFF05 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306066497E6FFFF21 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306065597E6FFFF9386866A62 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C64B97E6FFFF9386866452 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307B001930500001303F30388 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B777D80593 +:102B8000B70508009387D767130700009385C5FF33 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306063797E6FFFF9386864117 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500073103000170500001305C53A073505004D +:102C6000531505E2930E1000930120006312D51155 +:102C7000170500001305853907350500531505E2D2 +:102C8000930E2000930130006314D50F1705000048 +:102C90001305453807350500531505E2930E40002E +:102CA000930140006316D50D170500001305053785 +:102CB00007350500531505E2930E8000930150007F +:102CC0006318D50B170500001305C535073505003A +:102CD000531505E2930E000193016000631AD509B4 +:102CE000170500001305853407350500531505E267 +:102CF000930E000293017000631CD50717050000B6 +:102D00001305453307350500531505E2930E0004FE +:102D100093018000631ED5051705000013050532D9 +:102D200007350500531505E2930E00089301900046 +:102D30006310D505170500001305C53007350500DC +:102D4000531505E2930E00109301A0006312D50302 +:102D5000170500001305852F07350500531505E2FB +:102D6000930E00209301B0006314D501631A300064 +:102D70001395110063000500136515007300000032 +:0C2D80001305100073000000731000C069 +:102D8C00417373657274696F6E206661696C6564FA +:102D9C003A2061646472203E3D202831554C203C21 +:102DAC003C203132292026262061646472203C208C +:102DBC003633202A202831554C203C3C20313229F6 +:102DCC000A000000417373657274696F6E2066614E +:102DDC00696C65643A20212870745B315D5B6164B9 +:102DEC0064722F2831554C203C3C203132295D2017 +:102DFC0026203078303830292026262063617573E0 +:102E0C0065203D3D203078660A00000041737365F3 +:102E1C007274696F6E206661696C65643A206E6FBE +:102E2C0064650A00417373657274696F6E20666124 +:102E3C00696C65643A20757365725F6D6170706959 +:102E4C006E675B616464722F2831554C203C3C20CA +:102E5C003132295D2E61646472203D3D20300A00C0 +:102E6C00417373657274696F6E206661696C656419 +:102E7C003A2070745B315D5B616464722F2831554C +:102E8C004C203C3C203132295D20262030783034D7 +:102E9C00300A0000417373657274696F6E2066614D +:102EAC00696C65643A2070745B315D5B616464725B +:102EBC002F2831554C203C3C203132295D202620D6 +:102ECC0030783038300A0000417373657274696F62 +:102EDC006E206661696C65643A2074662D3E65707F +:102EEC006320252034203D3D20300A00417373655A +:102EFC007274696F6E206661696C65643A20212278 +:102F0C00696C6C6567616C20696E7374727563743F +:102F1C00696F6E220A000000417373657274696FE9 +:102F2C006E206661696C65643A202122756E657845 +:102F3C0070656374656420657863657074696F6E21 +:102F4C00220A0000417373657274696F6E206661AA +:102F5C00696C65643A202122756E737570706F729E +:102F6C007465642073617470206D6F6465220A004F +:10300000000000000000F0FF000000000000F0BF22 +:10301000FFFFFFFFFFFF0F800000000000000080A7 +:103020000000000000000000FFFFFFFFFFFF0F0097 +:10303000000000000000F03F000000000000F07FF2 +:10304000010000000000F07F000000000000F87F99 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fcmp.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fcmp.hex new file mode 100644 index 00000000..517bd8c4 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fcmp.hex @@ -0,0 +1,356 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938545B597F6FFFFB7 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938505B297F6FFFF9386C6AD17F6FFFFBA +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C5AFF1 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938585AA97F6FFFF31 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938585A397F6FFFF9386C68C17F6FFFF58 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385059A1306100497F6FFFF0E +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306C68A97E6FFFF2B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C67B97E6FFFF9386866A7C +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306867297E6FFFF938686646B +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307B002930500001303F30387 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B787120D41 +:102B8000B70508009387F7C7130700009385C5FFB3 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C65D97E6FFFF9386864131 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C6000073005008730850007310501832685017F +:102C70000323C501532510A293030000F315100090 +:102C800013060000631CD534631A73346398C5348B +:102C900093013000171500001305C53807300500F3 +:102CA0008730850007310501832685010323C5018F +:102CB000530510A293030000F31510001306000043 +:102CC000631ED530631C7330639AC5309301400096 +:102CD00017150000130505370730050087308500FC +:102CE00007310501832685010323C501531510A271 +:102CF00093030000F3151000130600006310D52E97 +:102D0000631E732C639CC52C9301500017150000A3 +:102D1000130545350730050087308500073105016B +:102D2000832685010323C501532510A293030000C8 +:102D3000F3151000130600006312D52A6310732ADE +:102D4000639EC528930160001715000013058533A5 +:102D5000073005008730850007310501832685018E +:102D60000323C501530510A293030000F3151000BF +:102D7000130600006314D526631273266390C526DC +:102D800093017000171500001305C53107300500C9 +:102D90008730850007310501832685010323C5019E +:102DA000531510A293030000F31510001306000042 +:102DB0006316D522631473226392C52293018000A7 +:102DC0001715000013050530073005008730850012 +:102DD00007310501832685010323C501532510A270 +:102DE00093030000F3151000130600006318D51EAE +:102DF0006316731E6394C51E93019000171500009F +:102E00001305452E07300500873085000731050181 +:102E1000832685010323C501532510A293030000D7 +:102E2000F315100013060000631AD51A6318731AFD +:102E30006396C51A9301A000171500001305852C91 +:102E4000073005008730850007310501832685019D +:102E50000323C501532510A293030000F3151000AE +:102E600013060001631CD516631A73166398C51602 +:102E70009301B000171500001305C52A073005009F +:102E80008730850007310501832685010323C501AD +:102E9000531510A293030000F31510001306000150 +:102EA000631ED512631C7312639AC5129301C0008E +:102EB0001715000013050529073005008730850028 +:102EC00007310501832685010323C501531510A28F +:102ED00093030000F3151000130600016310D510D2 +:102EE000631E730E639CC50E9301D000171500007E +:102EF0001305452707300500873085000731050198 +:102F0000832685010323C501531510A293030000F6 +:102F1000F3151000130600016312D50C6310730C37 +:102F2000639EC50A9301E00017150000130585256F +:102F300007300500873085000731050183268501AC +:102F40000323C501530510A293030000F3151000DD +:102F5000130600016314D508631273086390C50853 +:102F60009301F000171500001305C5230730050075 +:102F70008730850007310501832685010323C501BC +:102F8000530510A293030000F3151000130600016F +:102F90006316D504631473046392C504930100019E +:102FA000171500001305052207300500873085003E +:102FB00007310501832685010323C501530510A2AE +:102FC00093030000F3151000130600016318D500E9 +:102FD000631673006394C500631A300013951100E3 +:102FE0006300050013651500730000001305100051 +:082FF00073000000731000C023 +:102FF800417373657274696F6E206661696C65648C +:103008003A2061646472203E3D202831554C203CB2 +:103018003C203132292026262061646472203C201D +:103028003633202A202831554C203C3C2031322987 +:103038000A000000417373657274696F6E206661DF +:10304800696C65643A20212870745B315D5B61644A +:1030580064722F2831554C203C3C203132295D20A8 +:103068002620307830383029202626206361757371 +:1030780065203D3D203078660A0000004173736585 +:103088007274696F6E206661696C65643A206E6F50 +:1030980064650A00417373657274696F6E206661B6 +:1030A800696C65643A20757365725F6D61707069EB +:1030B8006E675B616464722F2831554C203C3C205C +:1030C8003132295D2E61646472203D3D20300A0052 +:1030D800417373657274696F6E206661696C6564AB +:1030E8003A2070745B315D5B616464722F283155DE +:1030F8004C203C3C203132295D2026203078303469 +:10310800300A0000417373657274696F6E206661DE +:10311800696C65643A2070745B315D5B61646472EC +:103128002F2831554C203C3C203132295D20262067 +:1031380030783038300A0000417373657274696FF3 +:103148006E206661696C65643A2074662D3E657010 +:103158006320252034203D3D20300A0041737365EB +:103168007274696F6E206661696C65643A20212209 +:10317800696C6C6567616C20696E737472756374D1 +:10318800696F6E220A000000417373657274696F7B +:103198006E206661696C65643A202122756E6578D7 +:1031A80070656374656420657863657074696F6EB3 +:1031B800220A0000417373657274696F6E2066613C +:1031C800696C65643A202122756E737570706F7230 +:1031D8007465642073617470206D6F6465220A00E1 +:10400000C3F5285C8FC2F5BFC3F5285C8FC2F5BF2E +:10401000000000000000000001000000000000009F +:10402000C3F5285C8FC2F5BFC3F5285C8FC2F5BF0E +:10403000000000000000000001000000000000007F +:10404000C3F5285C8FC2F5BFC3F5285C8FC2F5BFEE +:104050000000000000000000000000000000000060 +:10406000EC51B81E85EBF5BFC3F5285C8FC2F5BFD8 +:104070000000000000000000000000000000000040 +:10408000EC51B81E85EBF5BFC3F5285C8FC2F5BFB8 +:10409000000000000000000001000000000000001F +:1040A000EC51B81E85EBF5BFC3F5285C8FC2F5BF98 +:1040B00000000000000000000100000000000000FF +:1040C000FFFFFFFFFFFFFF7F000000000000000078 +:1040D00000000000000000000000000000000000E0 +:1040E000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7FE0 +:1040F00000000000000000000000000000000000C0 +:10410000010000000000F07F00000000000000003F +:10411000000000000000000000000000000000009F +:10412000FFFFFFFFFFFFFF7F000000000000000017 +:10413000000000000000000000000000000000007F +:10414000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7F7F +:10415000000000000000000000000000000000005F +:10416000010000000000F07F0000000000000000DF +:10417000000000000000000000000000000000003F +:10418000FFFFFFFFFFFFFF7F0000000000000000B7 +:10419000000000000000000000000000000000001F +:1041A000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7F1F +:1041B00000000000000000000000000000000000FF +:1041C000010000000000F07F00000000000000007F +:1041D00000000000000000000000000000000000DF +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fcvt.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fcvt.hex new file mode 100644 index 00000000..2530d196 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fcvt.hex @@ -0,0 +1,301 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C59597F6FFFF57 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385859297F6FFFF9386C6AD17F6FFFF5A +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385459090 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385058B97F6FFFFD0 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385058497F6FFFF9386C68C17F6FFFFF7 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385857A1306100497F6FFFFBE +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306466B97E6FFFFDA +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306465C97E6FFFF9386866A1B +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306065397E6FFFF938686640A +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093079001930500001303F303A8 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7A7980C9C +:102B8000B705080093871768130700009385C5FFF2 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306463E97E6FFFF93868641D0 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000170500001305853A1A +:102C6000832605000327450093052000538005D2E5 +:102C7000273005008325450003250500731010004B +:102C80006312D5166390E516930130001705000016 +:102C90001305C53783260500032745009305E0FF8C +:102CA000538005D227300500832545000325050004 +:102CB000731010006318D5126396E512930140005B +:102CC0001705000013050535832605000327450079 +:102CD00093052000538015D2273005008325450039 +:102CE0000325050073101000631ED50E639CE50ECE +:102CF0009301500017050000130545328326050097 +:102D0000032745009305E0FF538015D227300500C7 +:102D10008325450003250500731010006314D50CAE +:102D20006392E50C9301A000170500001305852FA1 +:102D300007300500873085000731050183268501AE +:102D40000323C501D3711040D381014227303500E0 +:102D50008323450003250500F3151000130600002A +:102D60006312D50863107308639EC5069301B00013 +:102D7000170500001305052D0720050087204500D5 +:102D8000072185008326C500D3010042D3F11140FD +:102D9000538501E0F3151000130600006314D504F9 +:102DA0006392C504970500009385C52B07B1050004 +:102DB000537111405301014227B0250003A50500BE +:102DC00083A54500970700009387C72883AE0700B7 +:102DD00083A747009301C0006316D5016394F500F3 +:102DE000631A300013951100630005001365150088 +:102DF000730000001305100073000000731000C082 +:102E0000417373657274696F6E206661696C656485 +:102E10003A2061646472203E3D202831554C203CAC +:102E20003C203132292026262061646472203C2017 +:102E30003633202A202831554C203C3C2031322981 +:102E40000A000000417373657274696F6E206661D9 +:102E5000696C65643A20212870745B315D5B616444 +:102E600064722F2831554C203C3C203132295D20A2 +:102E7000262030783038302920262620636175736B +:102E800065203D3D203078660A000000417373657F +:102E90007274696F6E206661696C65643A206E6F4A +:102EA00064650A00417373657274696F6E206661B0 +:102EB000696C65643A20757365725F6D61707069E5 +:102EC0006E675B616464722F2831554C203C3C2056 +:102ED0003132295D2E61646472203D3D20300A004C +:102EE000417373657274696F6E206661696C6564A5 +:102EF0003A2070745B315D5B616464722F283155D8 +:102F00004C203C3C203132295D2026203078303462 +:102F1000300A0000417373657274696F6E206661D8 +:102F2000696C65643A2070745B315D5B61646472E6 +:102F30002F2831554C203C3C203132295D20262061 +:102F400030783038300A0000417373657274696FED +:102F50006E206661696C65643A2074662D3E65700A +:102F60006320252034203D3D20300A0041737365E5 +:102F70007274696F6E206661696C65643A20212203 +:102F8000696C6C6567616C20696E737472756374CB +:102F9000696F6E220A000000417373657274696F75 +:102FA0006E206661696C65643A202122756E6578D1 +:102FB00070656374656420657863657074696F6EAD +:102FC000220A0000417373657274696F6E20666136 +:102FD000696C65643A202122756E737570706F722A +:102FE0007465642073617470206D6F6465220A00DB +:10300000000000000000004000000000000000C0C0 +:1030100000000000000000400000C0FFFFFFEF4183 +:10302000000000000000F8BF0000000000000000E9 +:103030000000000000000000000000000000F8BFD9 +:103040000000C0BF00000000000000000000C0BF82 +:10305000000000000000F87F0000000000000000F9 +:083060000480FFFFFFFFFC7F6D +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fcvt_w.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fcvt_w.hex new file mode 100644 index 00000000..4e074b2b --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fcvt_w.hex @@ -0,0 +1,351 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A00013051004971500009385C5BB97F6FFFF31 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585B897F6FFFF9386C6AD17F6FFFF34 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545B66A +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505B197F6FFFFAA +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938505AA97F6FFFF9386C68C17F6FFFFD1 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585A01306100497F6FFFF88 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306469197E6FFFFA4 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306468297E6FFFF9386866AE5 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306067997E6FFFF93868664E4 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307E000930500001303F30359 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B707DD0DF6 +:102B8000B70508009387D7EB130700009385C5FFAF +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306466497E6FFFF93868641AA +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C60000720050087204500072185008326C50031 +:102C7000531500C0F3151000130610006314D53C63 +:102C80006392C53C93013000171500001305853889 +:102C90000720050087204500072185008326C50001 +:102CA000531500C0F315100013060000631CD5383F +:102CB000639AC53893014000171500001305853647 +:102CC0000720050087204500072185008326C500D1 +:102CD000531500C0F3151000130610006314D53609 +:102CE0006392C53693015000171500001305853413 +:102CF0000720050087204500072185008326C500A1 +:102D0000531500C0F315100013061000631CD532D4 +:102D1000639AC532930160001715000013058532D0 +:102D20000720050087204500072185008326C50070 +:102D3000531500C0F3151000130600006314D530BE +:102D40006392C5309301700017150000130585309C +:102D50000720050087204500072185008326C50040 +:102D6000531500C0F315100013061000631CD52C7A +:102D7000639AC52C93018000171500001305852E5A +:102D80000720050087204500072185008326C50010 +:102D9000531500C0F3151000130600016314D52A63 +:102DA0006392C52A93019000171500001305852C26 +:102DB0000720050087204500072185008326C500E0 +:102DC000531500C0F315100013060001631CD5262F +:102DD000639AC5269301C000171500001305852AC4 +:102DE0000720050087204500072185008326C500B0 +:102DF000531510C0F3151000130600016314D524F9 +:102E00006392C5249301D00017150000130585288F +:102E10000720050087204500072185008326C5007F +:102E2000531510C0F315100013060001631CD520C4 +:102E3000639AC5209301E00017150000130585264D +:102E40000720050087204500072185008326C5004F +:102E5000531510C0F3151000130610006314D51E8F +:102E60006392C51E9301F000171500001305852419 +:102E70000720050087204500072185008326C5001F +:102E8000531510C0F315100013061000631CD51A5B +:102E9000639AC51A930100011715000013058522D6 +:102EA0000720050087204500072185008326C500EF +:102EB000531510C0F3151000130600006314D51845 +:102EC0006392C518930110011715000013058520A2 +:102ED0000720050087204500072185008326C500BF +:102EE000531510C0F315100013061000631CD51401 +:102EF000639AC51493012001171500001305851E60 +:102F00000720050087204500072185008326C5008E +:102F1000531510C0F3151000130600016314D512E9 +:102F20006392C51293013001171500001305851C2B +:102F30000720050087204500072185008326C5005E +:102F4000531510C0F315100013060000631CD50EB6 +:102F5000639AC50E971000009380C01A87A00000E6 +:102F6000D3F000C0B70E0080938EFEFF9301A00245 +:102F7000639AD00D971000009380C01887A080003E +:102F8000D3F000C0B70E00809301C002639CD00B49 +:102F9000971000009380001787A04000D3F000C076 +:102FA000B70E0080938EFEFF93014003639CD0090F +:102FB000971000009380001587A0C000D3F000C0D8 +:102FC000B70E0080938EFEFF93016003639CD007D1 +:102FD000971000009380001387A00000D3F010C06A +:102FE000930EF0FF9301E003639ED005971000005D +:102FF0009380401187A04000D3F010C0930EF0FFE3 +:103000009301F0036390D005971000009380800F28 +:1030100087A08000D3F010C0930E0000930100043D +:103020006392D003971000009380C00D87A0C0006A +:10303000D3F010C0930EF0FF930110046394D001FD +:10304000631A300013951100630005001365150025 +:10305000730000001305100073000000731000C01F +:10306000417373657274696F6E206661696C656423 +:103070003A2061646472203E3D202831554C203C4A +:103080003C203132292026262061646472203C20B5 +:103090003633202A202831554C203C3C203132291F +:1030A0000A000000417373657274696F6E20666177 +:1030B000696C65643A20212870745B315D5B6164E2 +:1030C00064722F2831554C203C3C203132295D2040 +:1030D0002620307830383029202626206361757309 +:1030E00065203D3D203078660A000000417373651D +:1030F0007274696F6E206661696C65643A206E6FE8 +:1031000064650A00417373657274696F6E2066614D +:10311000696C65643A20757365725F6D6170706982 +:103120006E675B616464722F2831554C203C3C20F3 +:103130003132295D2E61646472203D3D20300A00E9 +:10314000417373657274696F6E206661696C656442 +:103150003A2070745B315D5B616464722F28315575 +:103160004C203C3C203132295D2026203078303400 +:10317000300A0000417373657274696F6E20666176 +:10318000696C65643A2070745B315D5B6164647284 +:103190002F2831554C203C3C203132295D202620FF +:1031A00030783038300A0000417373657274696F8B +:1031B0006E206661696C65643A2074662D3E6570A8 +:1031C0006320252034203D3D20300A004173736583 +:1031D0007274696F6E206661696C65643A202122A1 +:1031E000696C6C6567616C20696E73747275637469 +:1031F000696F6E220A000000417373657274696F13 +:103200006E206661696C65643A202122756E65786E +:1032100070656374656420657863657074696F6E4A +:10322000220A0000417373657274696F6E206661D3 +:10323000696C65643A202122756E737570706F72C7 +:103240007465642073617470206D6F6465220A0078 +:10400000CDCC8CBF0000000000000000FFFFFFFFD0 +:10401000000080BF0000000000000000FFFFFFFF65 +:10402000666666BF0000000000000000000000009F +:104030006666663F0000000000000000000000000F +:104040000000803F000000000000000001000000B0 +:10405000CDCC8C3F000000000000000001000000FB +:104060005ED032CF000000000000000000000080A1 +:104070005ED0324F0000000000000000FFFFFF7F15 +:10408000000040C000000000000000000000000030 +:10409000000080BF000000000000000000000000E1 +:1040A000666666BF0000000000000000000000001F +:1040B0006666663F0000000000000000000000008F +:1040C0000000803F00000000000000000100000030 +:1040D000CDCC8C3F0000000000000000010000007B +:1040E0005ED032CF000000000000000000000000A1 +:1040F0005ED0324F0000000000000000005ED0B231 +:10410000FFFFFFFFFFFFFF7F000080FF0000807FB9 +:10411000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F2F +:10412000000000000000F0FF000000000000F07F31 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fdiv.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fdiv.hex new file mode 100644 index 00000000..9bd497f1 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fdiv.hex @@ -0,0 +1,320 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A00013051004971500009385059F97F6FFFF0D +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C59B97F6FFFF9386C6AD17F6FFFF11 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385859947 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385459497F6FFFF87 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385458D97F6FFFF9386C68C17F6FFFFAE +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5831306100497F6FFFF65 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306867497E6FFFF91 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306866597E6FFFF9386866AD2 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306465C97E6FFFF93868664C1 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093073000930500001303F30309 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7978100CF +:102B8000B705080093876708130700009385C5FF02 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306864797E6FFFF9386864187 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C6000073005008730850007310501832685017F +:102C70000323C501D371101A273035008323450083 +:102C800003250500F3151000130610006316D51E6A +:102C90006314731E6392C51E930130001715000064 +:102CA00013054538073005008730850007310501D9 +:102CB000832685010323C501D371101A27303500FF +:102CC0008323450003250500F315100013061000AB +:102CD0006314D51A6312731A6390C51A93014000E6 +:102CE00017150000130505360730050087308500ED +:102CF00007310501832685010323C501D371101A0D +:102D0000273035008323450003250500F315100007 +:102D1000130600006312D51663107316639EC51464 +:102D200093015000171500001305C5330730050047 +:102D30008730850007310501832685010323C501FE +:102D4000D371005A27303500832345000325050041 +:102D5000F3151000130610006310D512631E7310D4 +:102D6000639CC510930160001715000013058531A1 +:102D7000073005008730850007310501832685016E +:102D80000323C501D371005A273035008323450042 +:102D900003250500F315100013060000631ED50C73 +:102DA000631C730C639AC50C930100011715000096 +:102DB0001305452F073005008730850007310501D1 +:102DC000832685010323C501D371005A27303500BE +:102DD0008323450003250500F315100013060001A9 +:102DE000631CD508631A73086398C50893017000C3 +:102DF000171500001305052D0730050087308500E5 +:102E000007310501832685010323C501D371005ACB +:102E1000273035008323450003250500F3151000F6 +:102E200013061000631AD504631873046396C5046F +:102E300093018000171500001305C52A073005000F +:102E40008730850007310501832685010323C501ED +:102E5000D371005A27303500832345000325050030 +:102E6000F3151000130610006318D50063167300E5 +:102E70006394C500631A30001395110063000500C8 +:102E800013651500730000001305100073000000A7 +:042E9000731000C0FB +:102E9400417373657274696F6E206661696C6564F1 +:102EA4003A2061646472203E3D202831554C203C18 +:102EB4003C203132292026262061646472203C2083 +:102EC4003633202A202831554C203C3C20313229ED +:102ED4000A000000417373657274696F6E20666145 +:102EE400696C65643A20212870745B315D5B6164B0 +:102EF40064722F2831554C203C3C203132295D200E +:102F040026203078303830292026262063617573D6 +:102F140065203D3D203078660A00000041737365EA +:102F24007274696F6E206661696C65643A206E6FB5 +:102F340064650A00417373657274696F6E2066611B +:102F4400696C65643A20757365725F6D6170706950 +:102F54006E675B616464722F2831554C203C3C20C1 +:102F64003132295D2E61646472203D3D20300A00B7 +:102F7400417373657274696F6E206661696C656410 +:102F84003A2070745B315D5B616464722F28315543 +:102F94004C203C3C203132295D20262030783034CE +:102FA400300A0000417373657274696F6E20666144 +:102FB400696C65643A2070745B315D5B6164647252 +:102FC4002F2831554C203C3C203132295D202620CD +:102FD40030783038300A0000417373657274696F59 +:102FE4006E206661696C65643A2074662D3E657076 +:102FF4006320252034203D3D20300A004173736551 +:103004007274696F6E206661696C65643A2021226E +:10301400696C6C6567616C20696E73747275637436 +:10302400696F6E220A000000417373657274696FE0 +:103034006E206661696C65643A202122756E65783C +:1030440070656374656420657863657074696F6E18 +:10305400220A0000417373657274696F6E206661A1 +:10306400696C65643A202122756E737570706F7295 +:103074007465642073617470206D6F6465220A0046 +:10400000F1D4C853FB210940DDB0F1890ABF054056 +:104010000000000000000000EC83C3F6DB7DF23FEF +:1040200000000000004893C066666666664C9340D8 +:104030000000000000000000A529193EB4F8EFBF01 +:10404000F1D4C853FB210940000000000000F03FFC +:104050000000000000000000F1D4C853FB2109401B +:10406000F1D4C853FB21094000000000000000000B +:1040700000000000000000007B586F91F85BFC3FDF +:10408000000000000088C3400000000000000000A5 +:104090000000000000000000000000000000594087 +:1040A000000000000000F0BF000000000000000061 +:1040B0000000000000000000000000000000F87F89 +:1040C00000000000006065400000000000000000EB +:1040D0000000000000000000F57496CE44272A403E +:1040E00005A10AC7DF94853E000000000000000023 +:1040F0000000000000000000997FE3C089473A3FBC +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fmadd.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fmadd.hex new file mode 100644 index 00000000..1b9a8c04 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fmadd.hex @@ -0,0 +1,345 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938505B097F6FFFFFC +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5AC97F6FFFF9386C6AD17F6FFFF00 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585AA36 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545A597F6FFFF76 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385459E97F6FFFF9386C68C17F6FFFF9D +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5941306100497F6FFFF54 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306868597E6FFFF70 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306867697E6FFFF9386866AC1 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306466D97E6FFFF93868664B0 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307B003930500001303F30386 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B787960DBD +:102B8000B70508009387077C130700009385C5FFEE +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306865897E6FFFF9386864176 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C6000073005008730850007310501832685017F +:102C70000323C501C371101227303500832345009B +:102C800003250500F315100013060000631ED52E62 +:102C9000631C732E639AC52E930130001715000034 +:102CA00013054538073005008730850007310501D9 +:102CB000832685010323C501C37110122730350017 +:102CC0008323450003250500F315100013061000AB +:102CD000631CD52A631A732A6398C52A930140009E +:102CE00017150000130505360730050087308500ED +:102CF00007310501832685010323C501C371101225 +:102D0000273035008323450003250500F315100007 +:102D100013060000631AD526631873266396C5262A +:102D200093015000171500001305C5330730050047 +:102D30008730850007310501832685010323C501FE +:102D4000CF7110122730350083234500032505007D +:102D5000F3151000130600006318D52263167322C2 +:102D60006394C52293016000171500001305853197 +:102D7000073005008730850007310501832685016E +:102D80000323C501CF71101227303500832345007E +:102D900003250500F3151000130610006316D51E59 +:102DA0006314731E6392C51E930170001715000013 +:102DB0001305452F073005008730850007310501D1 +:102DC000832685010323C501CF71101227303500FA +:102DD0008323450003250500F315100013060000AA +:102DE0006314D51A6312731A6390C51A9301800095 +:102DF000171500001305052D0730050087308500E5 +:102E000007310501832685010323C501C77110120F +:102E1000273035008323450003250500F3151000F6 +:102E2000130600006312D51663107316639EC51453 +:102E300093019000171500001305C52A07300500FF +:102E40008730850007310501832685010323C501ED +:102E5000C771101227303500832345000325050074 +:102E6000F3151000130610006310D512631E7310C3 +:102E7000639CC5109301A000171500001305852859 +:102E8000073005008730850007310501832685015D +:102E90000323C501C7711012273035008323450075 +:102EA00003250500F315100013060000631ED50C62 +:102EB000631C730C639AC50C9301B00017150000D6 +:102EC00013054526073005008730850007310501C9 +:102ED000832685010323C501CB71101227303500ED +:102EE0008323450003250500F31510001306000099 +:102EF000631CD508631A73086398C5089301C00062 +:102F000017150000130505240730050087308500DC +:102F100007310501832685010323C501CB711012FA +:102F2000273035008323450003250500F3151000E5 +:102F300013061000631AD504631873046396C5045E +:102F40009301D000171500001305C52107300500B7 +:102F50008730850007310501832685010323C501DC +:102F6000CB7110122730350083234500032505005F +:102F7000F3151000130600006318D50063167300E4 +:102F80006394C500631A30001395110063000500B7 +:102F90001365150073000000130510007300000096 +:042FA000731000C0EA +:102FA400417373657274696F6E206661696C6564E0 +:102FB4003A2061646472203E3D202831554C203C07 +:102FC4003C203132292026262061646472203C2072 +:102FD4003633202A202831554C203C3C20313229DC +:102FE4000A000000417373657274696F6E20666134 +:102FF400696C65643A20212870745B315D5B61649F +:1030040064722F2831554C203C3C203132295D20FC +:1030140026203078303830292026262063617573C5 +:1030240065203D3D203078660A00000041737365D9 +:103034007274696F6E206661696C65643A206E6FA4 +:1030440064650A00417373657274696F6E2066610A +:10305400696C65643A20757365725F6D617070693F +:103064006E675B616464722F2831554C203C3C20B0 +:103074003132295D2E61646472203D3D20300A00A6 +:10308400417373657274696F6E206661696C6564FF +:103094003A2070745B315D5B616464722F28315532 +:1030A4004C203C3C203132295D20262030783034BD +:1030B400300A0000417373657274696F6E20666133 +:1030C400696C65643A2070745B315D5B6164647241 +:1030D4002F2831554C203C3C203132295D202620BC +:1030E40030783038300A0000417373657274696F48 +:1030F4006E206661696C65643A2074662D3E657065 +:103104006320252034203D3D20300A00417373653F +:103114007274696F6E206661696C65643A2021225D +:10312400696C6C6567616C20696E73747275637425 +:10313400696F6E220A000000417373657274696FCF +:103144006E206661696C65643A202122756E65782B +:1031540070656374656420657863657074696F6E07 +:10316400220A0000417373657274696F6E20666190 +:10317400696C65643A202122756E737570706F7284 +:103184007465642073617470206D6F6465220A0035 +:10400000000000000000F03F00000000000004403D +:10401000000000000000F03F0000000000000C4025 +:10402000000000000000F0BF66666666664C93C044 +:104030009A9999999999F13FCCCCCCCCCC5093409A +:10404000000000000000004000000000000014C05C +:1040500000000000000000C000000000000028C0B8 +:10406000000000000000F03F0000000000000440DD +:10407000000000000000F03F0000000000000CC045 +:10408000000000000000F0BF66666666664C93C0E4 +:104090009A9999999999F13FCCCCCCCCCC5093C0BA +:1040A000000000000000004000000000000014C0FC +:1040B00000000000000000C00000000000002840D8 +:1040C000000000000000F03F00000000000004407D +:1040D000000000000000F03F000000000000F83F7A +:1040E000000000000000F0BF66666666664C93C084 +:1040F0009A9999999999F13F0000000000489340DE +:10410000000000000000004000000000000014C09B +:1041100000000000000000C000000000000020C0FF +:10412000000000000000F03F00000000000004401C +:10413000000000000000F03F000000000000F8BF99 +:10414000000000000000F0BF66666666664C93C023 +:104150009A9999999999F13F00000000004893C0FD +:10416000000000000000004000000000000014C03B +:1041700000000000000000C000000000000020401F +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-fmin.hex b/benchmarks/riscv_tests/isa/rv32ud-v-fmin.hex new file mode 100644 index 00000000..3a15f6f9 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-fmin.hex @@ -0,0 +1,382 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938585C997F6FFFF63 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545C697F6FFFF9386C6AD17F6FFFF66 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505C49C +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C5BE97F6FFFFDD +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C5B797F6FFFF9386C68C17F6FFFF04 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545AE1306100497F6FFFFBA +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306069F97E6FFFFD6 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306069097E6FFFF9386866A17 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306C68697E6FFFF9386866407 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093071000930500001303F30329 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B707170FBA +:102B8000B70508009387870B130700009385C5FFDF +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306067297E6FFFF93868641DC +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50007310300093012000171500001305853A0A +:102C6000073005008730850007310501832685017F +:102C70000323C501D301102A2730350083234500E3 +:102C800003250500F315100013060000631AD5484C +:102C9000631873486396C548930130001715000008 +:102CA00013054538073005008730850007310501D9 +:102CB000832685010323C501D301102A273035005F +:102CC0008323450003250500F315100013060000BB +:102CD0006318D544631673446394C544930140005C +:102CE00017150000130505360730050087308500ED +:102CF00007310501832685010323C501D301102A6D +:102D0000273035008323450003250500F315100007 +:102D1000130600006316D540631473406392C540E8 +:102D200093015000171500001305C5330730050047 +:102D30008730850007310501832685010323C501FE +:102D4000D301102A273035008323450003250500D1 +:102D5000F3151000130600006314D53C6312733C96 +:102D60006390C53C93016000171500001305853181 +:102D7000073005008730850007310501832685016E +:102D80000323C501D301102A2730350083234500D2 +:102D900003250500F3151000130600006312D53853 +:102DA00063107338639EC5369301700017150000D9 +:102DB0001305452F073005008730850007310501D1 +:102DC000832685010323C501D301102A273035004E +:102DD0008323450003250500F315100013060000AA +:102DE0006310D534631E7332639CC5329301C000F7 +:102DF000171500001305052D0730050087308500E5 +:102E000007310501832685010323C501D311102A4B +:102E1000273035008323450003250500F3151000F6 +:102E200013060000631ED52E631C732E639AC52EF5 +:102E30009301D000171500001305C52A07300500BF +:102E40008730850007310501832685010323C501ED +:102E5000D311102A273035008323450003250500B0 +:102E6000F315100013060000631CD52A631A732A99 +:102E70006398C52A9301E000171500001305852803 +:102E8000073005008730850007310501832685015D +:102E90000323C501D311102A2730350083234500B1 +:102EA00003250500F315100013060000631AD5264C +:102EB000631873266396C5269301F000171500006A +:102EC00013054526073005008730850007310501C9 +:102ED000832685010323C501D311102A273035002D +:102EE0008323450003250500F31510001306000099 +:102EF0006318D522631673226394C52293010001DF +:102F000017150000130505240730050087308500DC +:102F100007310501832685010323C501D311102A3A +:102F2000273035008323450003250500F3151000E5 +:102F3000130600006316D51E6314731E6392C51E2C +:102F400093011001171500001305C5210730050076 +:102F50008730850007310501832685010323C501DC +:102F6000D311102A2730350083234500032505009F +:102F7000F3151000130600006314D51A6312731AB8 +:102F80006390C51A93014001171500001305851FB2 +:102F9000073005008730850007310501832685014C +:102FA0000323C501D311102A2730350083234500A0 +:102FB00003250500F3151000130600016312D51652 +:102FC00063107316639EC51493015001171500001A +:102FD0001305451D073005008730850007310501C1 +:102FE000832685010323C501D311102A273035001C +:102FF0008323450003250500F31510001306000088 +:103000006310D512631E7310639CC5109301E00119 +:10301000171500001305051B0730050087308500D4 +:1030200007310501832685010323C501D301102A39 +:10303000273035008323450003250500F3151000D4 +:1030400013060000631ED50C631C730C639AC50C39 +:103050009301F001171500001305C518073005008E +:103060008730850007310501832685010323C501CB +:10307000D301102A2730350083234500032505009E +:10308000F315100013060000631CD508631A7308BB +:103090006398C508930100021715000013058516F3 +:1030A000073005008730850007310501832685013B +:1030B0000323C501D311102A27303500832345008F +:1030C00003250500F315100013060000631AD5044C +:1030D000631873046396C50493011002171500006A +:1030E00013054514073005008730850007310501B9 +:1030F000832685010323C501D311102A273035000B +:103100008323450003250500F31510001306000076 +:103110006318D500631673006394C500631A30000A +:10312000139511006300050013651500730000007E +:0C3130001305100073000000731000C0B5 +:10313C00417373657274696F6E206661696C656446 +:10314C003A2061646472203E3D202831554C203C6D +:10315C003C203132292026262061646472203C20D8 +:10316C003633202A202831554C203C3C2031322942 +:10317C000A000000417373657274696F6E2066619A +:10318C00696C65643A20212870745B315D5B616405 +:10319C0064722F2831554C203C3C203132295D2063 +:1031AC00262030783038302920262620636175732C +:1031BC0065203D3D203078660A0000004173736540 +:1031CC007274696F6E206661696C65643A206E6F0B +:1031DC0064650A00417373657274696F6E20666171 +:1031EC00696C65643A20757365725F6D61707069A6 +:1031FC006E675B616464722F2831554C203C3C2017 +:10320C003132295D2E61646472203D3D20300A000C +:10321C00417373657274696F6E206661696C656465 +:10322C003A2070745B315D5B616464722F28315598 +:10323C004C203C3C203132295D2026203078303423 +:10324C00300A0000417373657274696F6E20666199 +:10325C00696C65643A2070745B315D5B61646472A7 +:10326C002F2831554C203C3C203132295D20262022 +:10327C0030783038300A0000417373657274696FAE +:10328C006E206661696C65643A2074662D3E6570CB +:10329C006320252034203D3D20300A0041737365A6 +:1032AC007274696F6E206661696C65643A202122C4 +:1032BC00696C6C6567616C20696E7374727563748C +:1032CC00696F6E220A000000417373657274696F36 +:1032DC006E206661696C65643A202122756E657892 +:1032EC0070656374656420657863657074696F6E6E +:1032FC00220A0000417373657274696F6E206661F7 +:10330C00696C65643A202122756E737570706F72EA +:10331C007465642073617470206D6F6465220A009B +:104000000000000000000440000000000000F03F3D +:104010000000000000000000000000000000F03F71 +:1040200066666666664C93C09A9999999999F13F2C +:10403000000000000000000066666666664C93C0E3 +:104040009A9999999999F13F66666666664C93C00C +:10405000000000000000000066666666664C93C0C3 +:10406000FFFFFFFFFFFFFF7F66666666664C93C03B +:10407000000000000000000066666666664C93C0A3 +:10408000F1D4C853FB2109403A8C30E28E79453E89 +:1040900000000000000000003A8C30E28E79453EBE +:1040A000000000000000F0BF00000000000000C0A1 +:1040B000000000000000000000000000000000C040 +:1040C0000000000000000440000000000000F03F7D +:1040D000000000000000000000000000000004409C +:1040E00066666666664C93C09A9999999999F13F6C +:1040F00000000000000000009A9999999999F13FF9 +:104100009A9999999999F13F66666666664C93C04B +:1041100000000000000000009A9999999999F13FD8 +:10412000FFFFFFFFFFFFFF7F66666666664C93C07A +:10413000000000000000000066666666664C93C0E2 +:10414000F1D4C853FB2109403A8C30E28E79453EC8 +:104150000000000000000000F1D4C853FB2109401A +:10416000000000000000F0BF00000000000000C0E0 +:104170000000000000000000000000000000F0BF90 +:10418000010000000000F07F000000000000F03F90 +:104190000000000000000000000000000000F03FF0 +:1041A000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFF7F1F +:1041B0000000000000000000000000000000F87F88 +:1041C000000000000000008000000000000000006F +:1041D000000000000000000000000000000000805F +:1041E000000000000000000000000000000000804F +:1041F000000000000000000000000000000000803F +:10420000000000000000008000000000000000002E +:10421000000000000000000000000000000000009E +:10422000000000000000000000000000000000800E +:10423000000000000000000000000000000000007E +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-ldst.hex b/benchmarks/riscv_tests/isa/rv32ud-v-ldst.hex new file mode 100644 index 00000000..78289bba --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-ldst.hex @@ -0,0 +1,289 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385458B97F6FFFFE1 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058897F6FFFF9386C6AD17F6FFFFE4 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C5851B +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385858097F6FFFF5B +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857997F6FFFF9386C68C17F6FFFF82 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938505701306100497F6FFFF48 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C66097E6FFFF65 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C65197E6FFFF9386866AA6 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864897E6FFFF9386866495 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307D002930500001303F30367 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B747090D8A +:102B8000B70508009387E72B130700009385C5FF5F +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C63397E6FFFF938686415B +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500073103000170400001304C43D0731040052 +:102C60002738240003250401832544019707000029 +:102C70009387473983AE070083A74700930120005D +:102C8000631ED50B639CF50A073104002728240036 +:102C90000325040183254401970700009387073724 +:102CA00083AE070083A74700930130006318D5095E +:102CB0006396F50807210400272824000325040152 +:102CC00083254401970700009387C73483AE07002C +:102CD00083A74700930140006312D5076390F50670 +:102CE000073184002738240003250401832544018B +:102CF000970700009387873283AE070083A74700BA +:102D000093015000631CD503639AF50207218400E8 +:102D10002738240003250401832544019707000078 +:102D20009387473083AE070083A747009301600075 +:102D30006316D5016394F500631A300013951100F2 +:102D400063000500136515007300000013051000F3 +:082D500073000000731000C0C5 +:102D5800417373657274696F6E206661696C65642E +:102D68003A2061646472203E3D202831554C203C55 +:102D78003C203132292026262061646472203C20C0 +:102D88003633202A202831554C203C3C203132292A +:102D98000A000000417373657274696F6E20666182 +:102DA800696C65643A20212870745B315D5B6164ED +:102DB80064722F2831554C203C3C203132295D204B +:102DC8002620307830383029202626206361757314 +:102DD80065203D3D203078660A0000004173736528 +:102DE8007274696F6E206661696C65643A206E6FF3 +:102DF80064650A00417373657274696F6E20666159 +:102E0800696C65643A20757365725F6D617070698D +:102E18006E675B616464722F2831554C203C3C20FE +:102E28003132295D2E61646472203D3D20300A00F4 +:102E3800417373657274696F6E206661696C65644D +:102E48003A2070745B315D5B616464722F28315580 +:102E58004C203C3C203132295D202620307830340B +:102E6800300A0000417373657274696F6E20666181 +:102E7800696C65643A2070745B315D5B616464728F +:102E88002F2831554C203C3C203132295D2026200A +:102E980030783038300A0000417373657274696F96 +:102EA8006E206661696C65643A2074662D3E6570B3 +:102EB8006320252034203D3D20300A00417373658E +:102EC8007274696F6E206661696C65643A202122AC +:102ED800696C6C6567616C20696E73747275637474 +:102EE800696F6E220A000000417373657274696F1E +:102EF8006E206661696C65643A202122756E65787A +:102F080070656374656420657863657074696F6E55 +:102F1800220A0000417373657274696F6E206661DE +:102F2800696C65643A202122756E737570706F72D2 +:102F38007465642073617470206D6F6465220A0083 +:10300000000080BF00000040000080BF00000040C2 +:10301000000080BF0000004000004040000080C071 +:1030200000004040FFFFFFFF000000000000000024 +:10303000000080BF0000004000004040000080C051 +:10304000EFBEADDEBEBAFECAEA1DADAB0DD0371382 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ud-v-recoding.hex b/benchmarks/riscv_tests/isa/rv32ud-v-recoding.hex new file mode 100644 index 00000000..3d799a76 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ud-v-recoding.hex @@ -0,0 +1,279 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385458597F6FFFFE7 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058297F6FFFF9386C6AD17F6FFFFEA +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385C57F31 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857A97F6FFFF71 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857397F6FFFF9386C68C17F6FFFF88 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385056A1306100497F6FFFF4E +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65A97E6FFFF6B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C64B97E6FFFF9386866AAC +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864297E6FFFF938686649B +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093070001930500001303F30338 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B767560F1B +:102B8000B70508009387278A130700009385C5FFC0 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C62D97E6FFFF9386864161 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500073103000170500000720C53A1705000063 +:102C60008720853AD3F00010532510A0930E100052 +:102C7000930120006314D507530510A0930E100094 +:102C800093013000631CD505531510A0930E00006E +:102C9000930140006314D505537000D01305100054 +:102CA000D37005D0D3F00010532510A0930E100060 +:102CB000930150006314D503530510A0930E100028 +:102CC00093016000631CD501531510A0930E000002 +:102CD000930170006314D501631A3000139511003D +:102CE0006300050013651500730000001305100054 +:082CF00073000000731000C026 +:102CF800417373657274696F6E206661696C65648F +:102D08003A2061646472203E3D202831554C203CB5 +:102D18003C203132292026262061646472203C2020 +:102D28003633202A202831554C203C3C203132298A +:102D38000A000000417373657274696F6E206661E2 +:102D4800696C65643A20212870745B315D5B61644D +:102D580064722F2831554C203C3C203132295D20AB +:102D68002620307830383029202626206361757374 +:102D780065203D3D203078660A0000004173736588 +:102D88007274696F6E206661696C65643A206E6F53 +:102D980064650A00417373657274696F6E206661B9 +:102DA800696C65643A20757365725F6D61707069EE +:102DB8006E675B616464722F2831554C203C3C205F +:102DC8003132295D2E61646472203D3D20300A0055 +:102DD800417373657274696F6E206661696C6564AE +:102DE8003A2070745B315D5B616464722F283155E1 +:102DF8004C203C3C203132295D202620307830346C +:102E0800300A0000417373657274696F6E206661E1 +:102E1800696C65643A2070745B315D5B61646472EF +:102E28002F2831554C203C3C203132295D2026206A +:102E380030783038300A0000417373657274696FF6 +:102E48006E206661696C65643A2074662D3E657013 +:102E58006320252034203D3D20300A0041737365EE +:102E68007274696F6E206661696C65643A2021220C +:102E7800696C6C6567616C20696E737472756374D4 +:102E8800696F6E220A000000417373657274696F7E +:102E98006E206661696C65643A202122756E6578DA +:102EA80070656374656420657863657074696F6EB6 +:102EB800220A0000417373657274696F6E2066613F +:102EC800696C65643A202122756E737570706F7233 +:102ED8007465642073617470206D6F6465220A00E4 +:08300000000080FF00004040C9 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-p-fadd.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fadd.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fadd.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-fadd.hex diff --git a/benchmarks/riscv_tests/rv32uf-p-fclass.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fclass.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fclass.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-fclass.hex diff --git a/benchmarks/riscv_tests/rv32uf-p-fcmp.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fcmp.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fcmp.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-fcmp.hex diff --git a/benchmarks/riscv_tests/rv32uf-p-fcvt.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fcvt.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fcvt.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-fcvt.hex diff --git a/benchmarks/riscv_tests/isa/rv32uf-p-fcvt_w.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fcvt_w.hex new file mode 100644 index 00000000..6972b592 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32uf-p-fcvt_w.hex @@ -0,0 +1,111 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F1730020309301200066 +:1001100017250000130505EF07200500872045007F +:10012000072185008326C500531500C0F315100074 +:10013000130610006314D53C6392C53C9301300054 +:1001400017250000130505ED072005008720450051 +:10015000072185008326C500531500C0F315100044 +:1001600013060000631CD538639AC538930140001C +:1001700017250000130505EB072005008720450023 +:10018000072185008326C500531500C0F315100014 +:10019000130610006314D5366392C53693015000E0 +:1001A00017250000130505E90720050087204500F5 +:1001B000072185008326C500531500C0F3151000E4 +:1001C00013061000631CD532639AC5329301600098 +:1001D00017250000130505E70720050087204500C7 +:1001E000072185008326C500531500C0F3151000B4 +:1001F000130600006314D5306392C530930170007C +:1002000017250000130505E5072005008720450098 +:10021000072185008326C500531500C0F315100083 +:1002200013061000631CD52C639AC52C9301800023 +:1002300017250000130505E307200500872045006A +:10024000072185008326C500531500C0F315100053 +:10025000130600016314D52A6392C52A9301900006 +:1002600017250000130505E107200500872045003C +:10027000072185008326C500531500C0F315100023 +:1002800013060001631CD526639AC5269301C0009E +:1002900017250000130505DF07200500872045000E +:1002A000072185008326C500531510C0F3151000E3 +:1002B000130600016314D5246392C5249301D00072 +:1002C00017250000130505DD0720050087204500E0 +:1002D000072185008326C500531510C0F3151000B3 +:1002E00013060001631CD520639AC5209301E0002A +:1002F00017250000130505DB0720050087204500B2 +:10030000072185008326C500531510C0F315100082 +:10031000130610006314D51E6392C51E9301F000EE +:1003200017250000130505D9072005008720450083 +:10033000072185008326C500531510C0F315100052 +:1003400013061000631CD51A639AC51A93010001A5 +:1003500017250000130505D7072005008720450055 +:10036000072185008326C500531510C0F315100022 +:10037000130600006314D5186392C5189301100189 +:1003800017250000130505D5072005008720450027 +:10039000072185008326C500531510C0F3151000F2 +:1003A00013061000631CD514639AC5149301200131 +:1003B00017250000130505D30720050087204500F9 +:1003C000072185008326C500531510C0F3151000C2 +:1003D000130600016314D5126392C5129301300114 +:1003E00017250000130505D10720050087204500CB +:1003F000072185008326C500531510C0F315100092 +:1004000013060000631CD50E639AC50E97200000EA +:10041000938040CF87A00000D3F000C0B70E0080CB +:10042000938EFEFF9301A002639AD00D97200000E7 +:10043000938040CD87A08000D3F000C0B70E00802D +:100440009301C002639CD00B97200000938080CB67 +:1004500087A04000D3F000C0B70E0080938EFEFF4F +:1004600093014003639CD00997200000938080C9CA +:1004700087A0C000D3F000C0B70E0080938EFEFFAF +:1004800093016003639CD00797200000938080C78E +:1004900087A00000D3F010C0930EF0FF9301E0039B +:1004A000639ED005972000009380C0C587A04000C0 +:1004B000D3F010C0930EF0FF9301F0036390D005CA +:1004C00097200000938000C487A08000D3F010C064 +:1004D000930E0000930100046392D0039720000064 +:1004E000938040C287A0C000D3F010C0930EF0FFED +:1004F000930110046394D001631030020F00F00FD9 +:10050000638001009391110093E111009308D005DD +:1005100013850100730000000F00F00F930110001D +:100520009308D0051305000073000000731000C08D +:0C053000000000000000000000000000BF +: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/benchmarks/riscv_tests/rv32uf-p-fdiv.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fdiv.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fdiv.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-fdiv.hex diff --git a/benchmarks/riscv_tests/rv32uf-p-fmadd.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fmadd.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fmadd.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-fmadd.hex diff --git a/benchmarks/riscv_tests/rv32uf-p-fmin.hex b/benchmarks/riscv_tests/isa/rv32uf-p-fmin.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-fmin.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-fmin.hex diff --git a/benchmarks/riscv_tests/rv32uf-p-ldst.hex b/benchmarks/riscv_tests/isa/rv32uf-p-ldst.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-ldst.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-ldst.hex diff --git a/benchmarks/riscv_tests/rv32uf-p-move.hex b/benchmarks/riscv_tests/isa/rv32uf-p-move.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-p-move.hex rename to benchmarks/riscv_tests/isa/rv32uf-p-move.hex diff --git a/benchmarks/riscv_tests/isa/rv32uf-p-recoding.hex b/benchmarks/riscv_tests/isa/rv32uf-p-recoding.hex new file mode 100644 index 00000000..23e1e033 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32uf-p-recoding.hex @@ -0,0 +1,41 @@ +:0200000480007A +:100000006F008004732F2034930F80006308FF0378 +:10001000930F90006304FF03930FB0006300FF038E +:10002000130F000063040F0067000F00732F2034CC +:1000300063540F006F00400093E19153171F0000BD +:1000400023223FFC6FF09FFF732540F163100500F2 +:10005000970200009382020173905230735000188F +:10006000970200009382020273905230B702008020 +:100070009382F2FF7390023B9302F0017390023A75 +:1000800097020000938282017390523073502030A7 +:1000900073503030735040309301000097020000DD +:1000A000938282F673905230130510001315F501F8 +:1000B000634C05000F00F00F930110009308D0056A +:1000C000130500007300000093020000638E02001D +:1000D00073905210B7B20000938292107390223046 +:1000E00073232030E39A62F4735000303725000008 +:1000F0007320053073503000970200009382420154 +:1001000073901234732540F17300203017250000DE +:10011000072045EF17250000872005EFD3F00010DA +:10012000532510A0930E1000930120006314D507EF +:10013000530510A0930E100093013000631CD505E9 +:10014000531510A0930E0000930140006314D505D1 +:10015000537000D013051000D37005D0D3F00010F9 +:10016000532510A0930E1000930150006314D50383 +:10017000530510A0930E100093016000631CD5017D +:10018000531510A0930E0000930170006314D50165 +:10019000631030020F00F00F638001009391110093 +:1001A00093E111009308D00513850100730000004E +:1001B0000F00F00F930110009308D0051305000005 +:1001C00073000000731000C0000000000000000079 +:1001D000000000000000000000000000000000001F +:1001E000000000000000000000000000000000000F +:0C01F00000000000000000000000000003 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000080FF000040400000000000000000D1 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32uf-v-fadd.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fadd.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fadd.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fadd.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-fclass.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fclass.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fclass.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fclass.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-fcmp.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fcmp.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fcmp.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fcmp.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-fcvt.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fcvt.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fcvt.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fcvt.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-fcvt_w.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fcvt_w.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fcvt_w.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fcvt_w.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-fdiv.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fdiv.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fdiv.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fdiv.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-fmadd.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fmadd.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fmadd.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fmadd.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-fmin.hex b/benchmarks/riscv_tests/isa/rv32uf-v-fmin.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-fmin.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-fmin.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-ldst.hex b/benchmarks/riscv_tests/isa/rv32uf-v-ldst.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-ldst.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-ldst.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-move.hex b/benchmarks/riscv_tests/isa/rv32uf-v-move.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-move.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-move.hex diff --git a/benchmarks/riscv_tests/rv32uf-v-recoding.hex b/benchmarks/riscv_tests/isa/rv32uf-v-recoding.hex similarity index 100% rename from benchmarks/riscv_tests/rv32uf-v-recoding.hex rename to benchmarks/riscv_tests/isa/rv32uf-v-recoding.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-add.hex b/benchmarks/riscv_tests/isa/rv32ui-p-add.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-add.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-add.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-addi.hex b/benchmarks/riscv_tests/isa/rv32ui-p-addi.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-addi.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-addi.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-and.hex b/benchmarks/riscv_tests/isa/rv32ui-p-and.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-and.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-and.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-andi.hex b/benchmarks/riscv_tests/isa/rv32ui-p-andi.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-andi.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-andi.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-auipc.hex b/benchmarks/riscv_tests/isa/rv32ui-p-auipc.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-auipc.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-auipc.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-beq.hex b/benchmarks/riscv_tests/isa/rv32ui-p-beq.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-beq.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-beq.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-bge.hex b/benchmarks/riscv_tests/isa/rv32ui-p-bge.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-bge.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-bge.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-bgeu.hex b/benchmarks/riscv_tests/isa/rv32ui-p-bgeu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-bgeu.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-bgeu.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-blt.hex b/benchmarks/riscv_tests/isa/rv32ui-p-blt.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-blt.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-blt.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-bltu.hex b/benchmarks/riscv_tests/isa/rv32ui-p-bltu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-bltu.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-bltu.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-bne.hex b/benchmarks/riscv_tests/isa/rv32ui-p-bne.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-bne.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-bne.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-fence_i.hex b/benchmarks/riscv_tests/isa/rv32ui-p-fence_i.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-fence_i.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-fence_i.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-jal.hex b/benchmarks/riscv_tests/isa/rv32ui-p-jal.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-jal.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-jal.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-jalr.hex b/benchmarks/riscv_tests/isa/rv32ui-p-jalr.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-jalr.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-jalr.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-lb.hex b/benchmarks/riscv_tests/isa/rv32ui-p-lb.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-lb.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-lb.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-lbu.hex b/benchmarks/riscv_tests/isa/rv32ui-p-lbu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-lbu.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-lbu.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-lh.hex b/benchmarks/riscv_tests/isa/rv32ui-p-lh.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-lh.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-lh.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-lhu.hex b/benchmarks/riscv_tests/isa/rv32ui-p-lhu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-lhu.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-lhu.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-lui.hex b/benchmarks/riscv_tests/isa/rv32ui-p-lui.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-lui.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-lui.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-lw.hex b/benchmarks/riscv_tests/isa/rv32ui-p-lw.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-lw.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-lw.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-or.hex b/benchmarks/riscv_tests/isa/rv32ui-p-or.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-or.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-or.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-ori.hex b/benchmarks/riscv_tests/isa/rv32ui-p-ori.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-ori.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-ori.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sb.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sb.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sb.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sb.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sh.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sh.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sh.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sh.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-simple.hex b/benchmarks/riscv_tests/isa/rv32ui-p-simple.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-simple.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-simple.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sll.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sll.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sll.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sll.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-slli.hex b/benchmarks/riscv_tests/isa/rv32ui-p-slli.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-slli.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-slli.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-slt.hex b/benchmarks/riscv_tests/isa/rv32ui-p-slt.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-slt.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-slt.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-slti.hex b/benchmarks/riscv_tests/isa/rv32ui-p-slti.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-slti.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-slti.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sltiu.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sltiu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sltiu.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sltiu.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sltu.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sltu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sltu.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sltu.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sra.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sra.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sra.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sra.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-srai.hex b/benchmarks/riscv_tests/isa/rv32ui-p-srai.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-srai.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-srai.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-srl.hex b/benchmarks/riscv_tests/isa/rv32ui-p-srl.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-srl.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-srl.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-srli.hex b/benchmarks/riscv_tests/isa/rv32ui-p-srli.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-srli.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-srli.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sub.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sub.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sub.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sub.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-sw.hex b/benchmarks/riscv_tests/isa/rv32ui-p-sw.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-sw.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-sw.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-xor.hex b/benchmarks/riscv_tests/isa/rv32ui-p-xor.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-xor.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-xor.hex diff --git a/benchmarks/riscv_tests/rv32ui-p-xori.hex b/benchmarks/riscv_tests/isa/rv32ui-p-xori.hex similarity index 100% rename from benchmarks/riscv_tests/rv32ui-p-xori.hex rename to benchmarks/riscv_tests/isa/rv32ui-p-xori.hex diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-add.hex b/benchmarks/riscv_tests/isa/rv32ui-v-add.hex new file mode 100644 index 00000000..34ae8fdc --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-add.hex @@ -0,0 +1,347 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585CA97F6FFFF62 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545C797F6FFFF9386C6AD17F6FFFF65 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505C59B +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C5BF97F6FFFFDC +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C5B897F6FFFF9386C68C17F6FFFF03 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545AF1306100497F6FFFFB9 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E0009305100417160000130606A097E6FFFFD5 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306069197E6FFFF9386866A16 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306C68797E6FFFF9386866406 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093071003930500001303F30326 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B7B00D73 +:102B8000B705080093872765130700009385C5FFE5 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306067397E6FFFF93868641DB +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930000001301000033872000930E000052 +:102C6000930120006316D74D93001000130110004C +:102C700033872000930E200093013000631AD74B56 +:102C8000930030001301700033872000930EA000E2 +:102C900093014000631ED749930000003781FFFF76 +:102CA00033872000B78EFFFF930150006312D7498E +:102CB000B70000801301000033872000B70E0080AA +:102CC000930160006316D747B70000803781FFFF8C +:102CD00033872000B78EFF7F93017000631AD745BA +:102CE00093000000378100001301F1FF33872000BB +:102CF000B78E0000938EFEFF93018000631AD743C6 +:102D0000B70000809380F0FF13010000338720009C +:102D1000B70E0080938EFEFF93019000631AD74197 +:102D2000B70000809380F0FF378100001301F1FFAE +:102D300033872000B78E0080938EEEFF9301A000B2 +:102D40006318D73FB7000080378100001301F1FFFF +:102D500033872000B78E0080938EFEFF9301B00072 +:102D60006318D73DB70000809380F0FF3781FFFFE5 +:102D700033872000B78EFF7F938EFEFF9301C00044 +:102D80006318D73B930000001301F0FF3387200046 +:102D9000930EF0FF9301D000631CD7399300F0FF2E +:102DA0001301100033872000930E00009301E00010 +:102DB0006310D7399300F0FF1301F0FF3387200031 +:102DC000930EE0FF9301F0006314D73793001000D7 +:102DD000370100801301F1FF33872000B70E008018 +:102DE000930100016316D7359300D0001301B000A2 +:102DF000B3802000930E800193011001639AD033B9 +:102E00009300E0001301B00033812000930E900185 +:102E100093012001631ED1319300D000B3801000D4 +:102E2000930EA001930130016394D031130200008E +:102E30009300D0001301B000338720001303070074 +:102E40001302120093022000E31452FE930E80013D +:102E500093014001631ED32D130200009300E00094 +:102E60001301B00033872000130000001303070094 +:102E70001302120093022000E31252FE930E9001FF +:102E8000930150016316D32B130200009300F0004E +:102E90001301B0003387200013000000130000006E +:102EA000130307001302120093022000E31052FEE6 +:102EB000930EA00193016001631CD327130200004D +:102EC0009300D0001301B0003387200013021200DA +:102ED00093022000E31652FE930E800193017001CD +:102EE0006318D725130200009300E0001301B0001F +:102EF0001300000033872000130212009302200009 +:102F0000E31452FE930E9001930180016312D723C4 +:102F1000130200009300F0001301B0001300000042 +:102F200013000000338720001302120093022000D8 +:102F3000E31252FE930EA00193019001631AD71F72 +:102F4000130200009300D000130000001301B00032 +:102F5000338720001302120093022000E31452FE74 +:102F6000930E80019301A0016314D71D130200008A +:102F70009300E000130000001301B00013000000F4 +:102F8000338720001302120093022000E31252FE46 +:102F9000930E90019301B001631CD7191302000036 +:102FA0009300F00013000000130000001301B000B4 +:102FB000338720001302120093022000E31252FE16 +:102FC000930EA0019301C0016314D71713020000F0 +:102FD0001301B0009300D0003387200013021200C9 +:102FE00093022000E31652FE930E80019301D0015C +:102FF0006310D715130200001301B0009300E00026 +:1030000013000000338720001302120093022000F7 +:10301000E31452FE930E90019301E001631AD7115D +:10302000130200001301B0009300F0001300000031 +:1030300013000000338720001302120093022000C7 +:10304000E31252FE930EA0019301F0016312D70F19 +:10305000130200001301B000130000009300D00021 +:10306000338720001302120093022000E31452FE63 +:10307000930E800193010002631CD70B1302000022 +:103080001301B000130000009300E00013000000E3 +:10309000338720001302120093022000E31252FE35 +:1030A000930E9001930110026314D70913020000DC +:1030B0001301B00013000000130000009300F000A3 +:1030C000338720001302120093022000E31252FE05 +:1030D000930EA00193012002631CD7059300F0001A +:1030E00033011000930EF000930130026312D105FA +:1030F0009300000233810000930E0002930140020E +:103100006318D103B3000000930E00009301500236 +:103110006390D003930000011301E001338020008D +:10312000930E0000930160026314D001631A300013 +:10313000139511006300050013651500730000006E +:0C3140001305100073000000731000C0A5 +:10314C00417373657274696F6E206661696C656436 +:10315C003A2061646472203E3D202831554C203C5D +:10316C003C203132292026262061646472203C20C8 +:10317C003633202A202831554C203C3C2031322932 +:10318C000A000000417373657274696F6E2066618A +:10319C00696C65643A20212870745B315D5B6164F5 +:1031AC0064722F2831554C203C3C203132295D2053 +:1031BC00262030783038302920262620636175731C +:1031CC0065203D3D203078660A0000004173736530 +:1031DC007274696F6E206661696C65643A206E6FFB +:1031EC0064650A00417373657274696F6E20666161 +:1031FC00696C65643A20757365725F6D6170706996 +:10320C006E675B616464722F2831554C203C3C2006 +:10321C003132295D2E61646472203D3D20300A00FC +:10322C00417373657274696F6E206661696C656455 +:10323C003A2070745B315D5B616464722F28315588 +:10324C004C203C3C203132295D2026203078303413 +:10325C00300A0000417373657274696F6E20666189 +:10326C00696C65643A2070745B315D5B6164647297 +:10327C002F2831554C203C3C203132295D20262012 +:10328C0030783038300A0000417373657274696F9E +:10329C006E206661696C65643A2074662D3E6570BB +:1032AC006320252034203D3D20300A004173736596 +:1032BC007274696F6E206661696C65643A202122B4 +:1032CC00696C6C6567616C20696E7374727563747C +:1032DC00696F6E220A000000417373657274696F26 +:1032EC006E206661696C65643A202122756E657882 +:1032FC0070656374656420657863657074696F6E5E +:10330C00220A0000417373657274696F6E206661E6 +:10331C00696C65643A202122756E737570706F72DA +:10332C007465642073617470206D6F6465220A008B +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-addi.hex b/benchmarks/riscv_tests/isa/rv32ui-v-addi.hex new file mode 100644 index 00000000..253daa9c --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-addi.hex @@ -0,0 +1,310 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505A597F6FFFF07 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5A197F6FFFF9386C6AD17F6FFFF0B +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385859F41 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385459A97F6FFFF81 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385459397F6FFFF9386C68C17F6FFFFA8 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5891306100497F6FFFF5F +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306867A97E6FFFF8B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306866B97E6FFFF9386866ACC +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306466297E6FFFF93868664BB +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093078000930500001303F303B9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7A7240D0F +:102B8000B7050800938767C3130700009385C5FF47 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306864D97E6FFFF9386864181 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50009300000013870000930E000093012000F2 +:102C6000631CD7279300100013871000930E2000D9 +:102C7000930130006312D727930030001387700050 +:102C8000930EA000930140006318D7259300000025 +:102C900013870080930E008093015000631ED7239A +:102CA000B700008013870000B70E0080930160001A +:102CB0006314D723B700008013870080B70E00800D +:102CC000938E0E80930170006318D721930000004B +:102CD0001387F07F930EF07F93018000631ED71F50 +:102CE000B70000809380F0FF13870000B70E0080CC +:102CF000938EFEFF930190006310D71FB7000080F2 +:102D00009380F0FF1387F07FB70E0080938EEE7FE5 +:102D10009301A0006312D71DB70000801387F07FD6 +:102D2000B70E0080938EFE7F9301B0006316D71B11 +:102D3000B70000809380F0FF13870080B7FEFF7F0D +:102D4000938EFE7F9301C0006318D7199300000093 +:102D50001387F0FF930EF0FF9301D000631ED71787 +:102D60009300F0FF13871000930E00009301E00022 +:102D70006314D7179300F0FF1387F0FF930EE0FF63 +:102D80009301F000631AD715B70000809380F0FF1D +:102D900013871000B70E008093010001631ED71344 +:102DA0009300D0009380B000930E80019301100136 +:102DB0006394D013130200009300D0001387B00077 +:102DC000130307001302120093022000E31652FEC1 +:102DD000930E8001930120016310D31113020000B0 +:102DE0009300D0001387A000130000001303070016 +:102DF0001302120093022000E31452FE930E70019E +:102E000093013001631AD30D130200009300D00028 +:102E10001387900013000000130000001303070045 +:102E20001302120093022000E31252FE930E60017F +:102E3000930140016312D30B130200009300D000F2 +:102E40001387B0001302120093022000E31852FE11 +:102E5000930E8001930150016310D7091302000003 +:102E60009300D000130000001387A000130212008B +:102E700093022000E31652FE930E7001930160014D +:102E8000631CD705130200009300D000130000005C +:102E90001300000013879000130212009302200019 +:102EA000E31452FE930E6001930170016316D70381 +:102EB00093000002930E000293018001639ED001F3 +:102EC0009300100213802003930E000093019001E1 +:102ED0006314D001631A30001395110063000500DC +:102EE0001365150073000000130510007300000047 +:042EF000731000C09B +:102EF400417373657274696F6E206661696C656491 +:102F04003A2061646472203E3D202831554C203CB7 +:102F14003C203132292026262061646472203C2022 +:102F24003633202A202831554C203C3C203132298C +:102F34000A000000417373657274696F6E206661E4 +:102F4400696C65643A20212870745B315D5B61644F +:102F540064722F2831554C203C3C203132295D20AD +:102F64002620307830383029202626206361757376 +:102F740065203D3D203078660A000000417373658A +:102F84007274696F6E206661696C65643A206E6F55 +:102F940064650A00417373657274696F6E206661BB +:102FA400696C65643A20757365725F6D61707069F0 +:102FB4006E675B616464722F2831554C203C3C2061 +:102FC4003132295D2E61646472203D3D20300A0057 +:102FD400417373657274696F6E206661696C6564B0 +:102FE4003A2070745B315D5B616464722F283155E3 +:102FF4004C203C3C203132295D202620307830346E +:10300400300A0000417373657274696F6E206661E3 +:10301400696C65643A2070745B315D5B61646472F1 +:103024002F2831554C203C3C203132295D2026206C +:1030340030783038300A0000417373657274696FF8 +:103044006E206661696C65643A2074662D3E657015 +:103054006320252034203D3D20300A0041737365F0 +:103064007274696F6E206661696C65643A2021220E +:10307400696C6C6567616C20696E737472756374D6 +:10308400696F6E220A000000417373657274696F80 +:103094006E206661696C65643A202122756E6578DC +:1030A40070656374656420657863657074696F6EB8 +:1030B400220A0000417373657274696F6E20666141 +:1030C400696C65643A202122756E737570706F7235 +:1030D4007465642073617470206D6F6465220A00E6 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-and.hex b/benchmarks/riscv_tests/isa/rv32ui-v-and.hex new file mode 100644 index 00000000..8b7a5e78 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-and.hex @@ -0,0 +1,345 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505C897F6FFFFE4 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C497F6FFFF9386C6AD17F6FFFFE8 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585C21E +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545BD97F6FFFF5E +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B697F6FFFF9386C68C17F6FFFF85 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5AC1306100497F6FFFF3C +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869D97E6FFFF58 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868E97E6FFFF9386866A99 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468597E6FFFF9386866488 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307B000930500001303F30389 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B777C607A3 +:102B8000B70508009387C735130700009385C5FF75 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306867097E6FFFF938686415E +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B70001FF938000F037110F0F1301F1F05F +:102C600033F72000B71E000F938E0EF09301200063 +:102C7000631CD749B710F00F938000FF37F1F0F0D5 +:102C80001301010F33F72000B70EF000938E0E0FE3 +:102C900093013000631AD747B700FF009380F00F0D +:102CA00037110F0F1301F1F033F72000B70E0F00AB +:102CB000938EFE00930140006318D745B7F00FF0E4 +:102CC0009380F00037F1F0F01301010F33F720008B +:102CD000B7FE00F0930150006318D743B70001FF1F +:102CE000938000F037110F0F1301F1F0B3F02000C3 +:102CF000B71E000F938E0EF0930160006396D041D3 +:102D0000B710F00F938000FF37F1F0F01301010FBF +:102D100033F12000B70EF000938E0E0F9301700078 +:102D20006314D13FB70001FF938000F0B3F01000AF +:102D3000B70E01FF938E0EF0930180006396D03D95 +:102D400013020000B70001FF938000F037110F0F4E +:102D50001301F1F033F720001303070013021200F0 +:102D600093022000E31052FEB71E000F938E0EF068 +:102D700093019000631AD33913020000B710F00FCB +:102D8000938000FF37F1F0F01301010F33F72000BB +:102D90001300000013030700130212009302200027 +:102DA000E31E52FCB70EF000938E0E0F9301A000AD +:102DB000631CD33513020000B700FF009380F00FAF +:102DC00037110F0F1301F1F033F72000130000004B +:102DD00013000000130307001302120093022000E7 +:102DE000E31C52FCB70E0F00938EFE009301B0005F +:102DF000631CD33113020000B70001FF938000F081 +:102E000037110F0F1301F1F033F7200013021200F6 +:102E100093022000E31252FEB71E000F938E0EF0B5 +:102E20009301C0006312D72F13020000B710F00FF8 +:102E3000938000FF37F1F0F01301010F1300000041 +:102E400033F720001302120093022000E31052FE19 +:102E5000B70EF000938E0E0F9301D0006316D72BA0 +:102E600013020000B700FF009380F00F37110F0F1F +:102E70001301F1F0130000001300000033F72000ED +:102E80001302120093022000E31E52FCB70E0F0043 +:102E9000938EFE009301E0006318D7271302000011 +:102EA000B70001FF938000F01300000037110F0FEF +:102EB0001301F1F033F720001302120093022000F7 +:102EC000E31052FEB71E000F938E0EF09301F00038 +:102ED000631CD72313020000B710F00F938000FF8C +:102EE0001300000037F1F0F01301010F1300000090 +:102EF00033F720001302120093022000E31E52FC5D +:102F0000B70EF000938E0E0F93010001631ED71FC2 +:102F100013020000B700FF009380F00F13000000C1 +:102F20001300000037110F0F1301F1F033F72000E9 +:102F30001302120093022000E31E52FCB70E0F0092 +:102F4000938EFE00930110016310D71D1302000041 +:102F500037110F0F1301F1F0B70001FF938000F05C +:102F600033F720001302120093022000E31252FEF6 +:102F7000B71E000F938E0EF0930120016316D71930 +:102F80001302000037F1F0F01301010FB710F00F3A +:102F9000938000FF1300000033F72000130212009B +:102FA00093022000E31052FEB70EF000938E0E0F36 +:102FB00093013001631AD7151302000037110F0F68 +:102FC0001301F1F0B700FF009380F00F1300000031 +:102FD0001300000033F720001302120093022000B8 +:102FE000E31E52FCB70E0F00938EFE0093014001CA +:102FF000631CD7111302000037110F0F1301F1F0FA +:1030000013000000B70001FF938000F033F72000A9 +:103010001302120093022000E31052FEB71E000FAD +:10302000938E0EF0930150016310D70F130200002E +:1030300037F1F0F01301010F13000000B710F00F8B +:10304000938000FF1300000033F7200013021200EA +:1030500093022000E31E52FCB70EF000938E0E0F79 +:10306000930160016312D70B1302000037110F0F99 +:103070001301F1F01300000013000000B700FF007F +:103080009380F00F33F72000130212009302200008 +:10309000E31E52FCB70E0F00938EFE0093017001E9 +:1030A0006314D707B70001FF938000F0337110005D +:1030B000930E0000930180016318D105B700FF0053 +:1030C0009380F00F33F10000930E00009301900104 +:1030D000631CD103B3700000930E00009301A001A4 +:1030E0006394D003B710111193801011372122225D +:1030F0001301212233F02000930E00009301B00150 +:103100006314D001631A30001395110063000500A9 +:103110001365150073000000130510007300000014 +:04312000731000C068 +:10312400417373657274696F6E206661696C65645E +:103134003A2061646472203E3D202831554C203C85 +:103144003C203132292026262061646472203C20F0 +:103154003633202A202831554C203C3C203132295A +:103164000A000000417373657274696F6E206661B2 +:10317400696C65643A20212870745B315D5B61641D +:1031840064722F2831554C203C3C203132295D207B +:103194002620307830383029202626206361757344 +:1031A40065203D3D203078660A0000004173736558 +:1031B4007274696F6E206661696C65643A206E6F23 +:1031C40064650A00417373657274696F6E20666189 +:1031D400696C65643A20757365725F6D61707069BE +:1031E4006E675B616464722F2831554C203C3C202F +:1031F4003132295D2E61646472203D3D20300A0025 +:10320400417373657274696F6E206661696C65647D +:103214003A2070745B315D5B616464722F283155B0 +:103224004C203C3C203132295D202620307830343B +:10323400300A0000417373657274696F6E206661B1 +:10324400696C65643A2070745B315D5B61646472BF +:103254002F2831554C203C3C203132295D2026203A +:1032640030783038300A0000417373657274696FC6 +:103274006E206661696C65643A2074662D3E6570E3 +:103284006320252034203D3D20300A0041737365BE +:103294007274696F6E206661696C65643A202122DC +:1032A400696C6C6567616C20696E737472756374A4 +:1032B400696F6E220A000000417373657274696F4E +:1032C4006E206661696C65643A202122756E6578AA +:1032D40070656374656420657863657074696F6E86 +:1032E400220A0000417373657274696F6E2066610F +:1032F400696C65643A202122756E737570706F7203 +:103304007465642073617470206D6F6465220A00B3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-andi.hex b/benchmarks/riscv_tests/isa/rv32ui-v-andi.hex new file mode 100644 index 00000000..5c5e038a --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-andi.hex @@ -0,0 +1,297 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385859897F6FFFF94 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385459597F6FFFF9386C6AD17F6FFFF97 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF8130510049715000093850593CD +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C58D97F6FFFF0E +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C58697F6FFFF9386C68C17F6FFFF35 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385457D1306100497F6FFFFFB +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306066E97E6FFFF17 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306065F97E6FFFF9386866A58 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C65597E6FFFF9386866448 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307D002930500001303F30367 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B787B006AA +:102B8000B7050800938787A8130700009385C5FF42 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306064197E6FFFF938686410D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B70001FF938000F013F7F0F0B70E01FF0B +:102C6000938E0EF0930120006314D71BB710F00F62 +:102C7000938000FF13F7000F930E000F93013000B5 +:102C80006318D719B700FF009380F00F13F7F070A7 +:102C9000930EF00093014000631CD717B7F00FF0BC +:102CA0009380F00013F7000F930E00009301500083 +:102CB0006310D717B70001FF938000F093F0000F67 +:102CC000930E0000930160006394D015130200007E +:102CD000B710F00F938000FF13F7F0701303070095 +:102CE0001302120093022000E31452FE930E0070B0 +:102CF00093017000631ED31113020000B700FF00A0 +:102D00009380F00F13F7000F130000001303070068 +:102D10001302120093022000E31252FE930E000FE2 +:102D2000930180006316D30F13020000B7F00FF079 +:102D30009380F00013F7F0F0130000001300000080 +:102D4000130307001302120093022000E31052FE47 +:102D5000B7FE0FF0938EFE0093019000631AD30B21 +:102D600013020000B710F00F938000FF13F7F0700C +:102D70001302120093022000E31652FE930E00701D +:102D80009301A0006316D70913020000B700FF00EB +:102D90009380F00F1300000013F7000F13021200CE +:102DA00093022000E31452FE930E000F9301B00033 +:102DB0006310D70713020000B7F00FF09380F00004 +:102DC000130000001300000013F7F070130212004C +:102DD00093022000E31252FE930EF0009301C00014 +:102DE0006318D7039370000F930E00009301D00077 +:102DF0006390D003B700FF009380F00F13F0F070E2 +:102E0000930E00009301E0006314D001631A3000B8 +:102E10001395110063000500136515007300000091 +:0C2E20001305100073000000731000C0C8 +:102E2C00417373657274696F6E206661696C656459 +:102E3C003A2061646472203E3D202831554C203C80 +:102E4C003C203132292026262061646472203C20EB +:102E5C003633202A202831554C203C3C2031322955 +:102E6C000A000000417373657274696F6E206661AD +:102E7C00696C65643A20212870745B315D5B616418 +:102E8C0064722F2831554C203C3C203132295D2076 +:102E9C00262030783038302920262620636175733F +:102EAC0065203D3D203078660A0000004173736553 +:102EBC007274696F6E206661696C65643A206E6F1E +:102ECC0064650A00417373657274696F6E20666184 +:102EDC00696C65643A20757365725F6D61707069B9 +:102EEC006E675B616464722F2831554C203C3C202A +:102EFC003132295D2E61646472203D3D20300A0020 +:102F0C00417373657274696F6E206661696C656478 +:102F1C003A2070745B315D5B616464722F283155AB +:102F2C004C203C3C203132295D2026203078303436 +:102F3C00300A0000417373657274696F6E206661AC +:102F4C00696C65643A2070745B315D5B61646472BA +:102F5C002F2831554C203C3C203132295D20262035 +:102F6C0030783038300A0000417373657274696FC1 +:102F7C006E206661696C65643A2074662D3E6570DE +:102F8C006320252034203D3D20300A0041737365B9 +:102F9C007274696F6E206661696C65643A202122D7 +:102FAC00696C6C6567616C20696E7374727563749F +:102FBC00696F6E220A000000417373657274696F49 +:102FCC006E206661696C65643A202122756E6578A5 +:102FDC0070656374656420657863657074696F6E81 +:102FEC00220A0000417373657274696F6E2066610A +:102FFC00696C65643A202122756E737570706F72FE +:10300C007465642073617470206D6F6465220A00AE +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-auipc.hex b/benchmarks/riscv_tests/isa/rv32ui-v-auipc.hex new file mode 100644 index 00000000..2fb19177 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-auipc.hex @@ -0,0 +1,274 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20503A93 +:1000B00017350000130545BA6F20D0158322450877 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385858197F6FFFFAB +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385457E97F6FFFF9386C6AD17F6FFFFAE +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385057CF4 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57697F6FFFF35 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C56F97F6FFFF9386C68C17F6FFFF4C +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545661306100497F6FFFF12 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306065797E6FFFF2E +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306064897E6FFFF9386866A6F +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C63E97E6FFFF938686645F +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE709307D002930500001303F30367 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7979A0EA8 +:102B8000B70508009387C747130700009385C5FF63 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306062A97E6FFFF9386864124 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE0000000072 +:102C50006780000013000000172500001305C571F0 +:102C6000EF0540003305B540B72E0000938E0E717E +:102C7000930120006314D50317E5FFFF1305C58FEB +:102C8000EF0540003305B540B7EEFFFF938E0E8F82 +:102C9000930130006314D501631A300013951100BD +:102CA0006300050013651500730000001305100094 +:0C2CB00073000000731000C00000000062 +:102CBC00417373657274696F6E206661696C6564CB +:102CCC003A2061646472203E3D202831554C203CF2 +:102CDC003C203132292026262061646472203C205D +:102CEC003633202A202831554C203C3C20313229C7 +:102CFC000A000000417373657274696F6E2066611F +:102D0C00696C65643A20212870745B315D5B616489 +:102D1C0064722F2831554C203C3C203132295D20E7 +:102D2C0026203078303830292026262063617573B0 +:102D3C0065203D3D203078660A00000041737365C4 +:102D4C007274696F6E206661696C65643A206E6F8F +:102D5C0064650A00417373657274696F6E206661F5 +:102D6C00696C65643A20757365725F6D617070692A +:102D7C006E675B616464722F2831554C203C3C209B +:102D8C003132295D2E61646472203D3D20300A0091 +:102D9C00417373657274696F6E206661696C6564EA +:102DAC003A2070745B315D5B616464722F2831551D +:102DBC004C203C3C203132295D20262030783034A8 +:102DCC00300A0000417373657274696F6E2066611E +:102DDC00696C65643A2070745B315D5B616464722C +:102DEC002F2831554C203C3C203132295D202620A7 +:102DFC0030783038300A0000417373657274696F33 +:102E0C006E206661696C65643A2074662D3E65704F +:102E1C006320252034203D3D20300A00417373652A +:102E2C007274696F6E206661696C65643A20212248 +:102E3C00696C6C6567616C20696E73747275637410 +:102E4C00696F6E220A000000417373657274696FBA +:102E5C006E206661696C65643A202122756E657816 +:102E6C0070656374656420657863657074696F6EF2 +:102E7C00220A0000417373657274696F6E2066617B +:102E8C00696C65643A202122756E737570706F726F +:102E9C007465642073617470206D6F6465220A0020 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-beq.hex b/benchmarks/riscv_tests/isa/rv32ui-v-beq.hex new file mode 100644 index 00000000..ae58db0c --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-beq.hex @@ -0,0 +1,313 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585A897F6FFFF84 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545A597F6FFFF9386C6AD17F6FFFF87 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505A3BD +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C59D97F6FFFFFE +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C59697F6FFFF9386C68C17F6FFFF25 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385458D1306100497F6FFFFDB +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306067E97E6FFFF07 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306066F97E6FFFF9386866A48 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C66597E6FFFF9386866438 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093071000930500001303F30329 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7F7E80404 +:102B8000B705080093878726130700009385C5FFC4 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306065197E6FFFF93868641FD +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50009301200093000000130100006386200010 +:102C60006318302A63163000E38E20FE6312302A88 +:102C700093013000930010001301100063862000C0 +:102C80006318302863163000E38E20FE631230286C +:102C9000930140009300F0FF1301F0FF63862000D2 +:102CA0006318302663163000E38E20FE6312302650 +:102CB0009301500093000000130110006384200072 +:102CC0006314300063163024E38E20FE930160000D +:102CD000930010001301000063842000631430008F +:102CE00063183022E38E20FE930170009300F0FF02 +:102CF000130110006384200063143000631A302035 +:102D0000E38E20FE93018000930010001301F0FF7A +:102D10006384200063143000631C301EE38E20FEA9 +:102D20009301900013020000930000001301F0FFD4 +:102D30006380201E1302120093022000E31652FE4D +:102D40009301A00013020000930000001301F0FFA4 +:102D500013000000638E201A130212009302200059 +:102D6000E31452FE9301B000130200009300000030 +:102D70001301F0FF1300000013000000638A201805 +:102D80001302120093022000E31252FE9301C000CE +:102D90001302000093000000130000001301F0FF75 +:102DA000638820161302120093022000E31452FEDF +:102DB0009301D000130200009300000013000000F4 +:102DC0001301F0FF130000006384201413021200AB +:102DD00093022000E31252FE9301E0001302000070 +:102DE0009300000013000000130000001301F0FF27 +:102DF000638020121302120093022000E31252FE9D +:102E00009301F00013020000930000001301F0FF93 +:102E1000638020101302120093022000E31652FE7A +:102E20009301000113020000930000001301F0FF62 +:102E300013000000638E200C130212009302200086 +:102E4000E31452FE930110011302000093000000EE +:102E50001301F0FF1300000013000000638A200A32 +:102E60001302120093022000E31252FE930120018C +:102E70001302000093000000130000001301F0FF94 +:102E8000638820081302120093022000E31452FE0C +:102E900093013001130200009300000013000000B2 +:102EA0001301F0FF130000006384200613021200D8 +:102EB00093022000E31252FE93014001130200002E +:102EC0009300000013000000130000001301F0FF46 +:102ED000638020041302120093022000E31252FECA +:102EE00093001000630A000093801000938010008C +:102EF0009380100093801000938010009380100046 +:102F0000930E3000930150016394D001631A300096 +:102F10001395110063000500136515007300000090 +:0C2F20001305100073000000731000C0C7 +:102F2C00417373657274696F6E206661696C656458 +:102F3C003A2061646472203E3D202831554C203C7F +:102F4C003C203132292026262061646472203C20EA +:102F5C003633202A202831554C203C3C2031322954 +:102F6C000A000000417373657274696F6E206661AC +:102F7C00696C65643A20212870745B315D5B616417 +:102F8C0064722F2831554C203C3C203132295D2075 +:102F9C00262030783038302920262620636175733E +:102FAC0065203D3D203078660A0000004173736552 +:102FBC007274696F6E206661696C65643A206E6F1D +:102FCC0064650A00417373657274696F6E20666183 +:102FDC00696C65643A20757365725F6D61707069B8 +:102FEC006E675B616464722F2831554C203C3C2029 +:102FFC003132295D2E61646472203D3D20300A001F +:10300C00417373657274696F6E206661696C656477 +:10301C003A2070745B315D5B616464722F283155AA +:10302C004C203C3C203132295D2026203078303435 +:10303C00300A0000417373657274696F6E206661AB +:10304C00696C65643A2070745B315D5B61646472B9 +:10305C002F2831554C203C3C203132295D20262034 +:10306C0030783038300A0000417373657274696FC0 +:10307C006E206661696C65643A2074662D3E6570DD +:10308C006320252034203D3D20300A0041737365B8 +:10309C007274696F6E206661696C65643A202122D6 +:1030AC00696C6C6567616C20696E7374727563749E +:1030BC00696F6E220A000000417373657274696F48 +:1030CC006E206661696C65643A202122756E6578A4 +:1030DC0070656374656420657863657074696F6E80 +:1030EC00220A0000417373657274696F6E20666109 +:1030FC00696C65643A202122756E737570706F72FD +:10310C007465642073617470206D6F6465220A00AD +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-bge.hex b/benchmarks/riscv_tests/isa/rv32ui-v-bge.hex new file mode 100644 index 00000000..394ea1e5 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-bge.hex @@ -0,0 +1,319 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585AE97F6FFFF7E +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545AB97F6FFFF9386C6AD17F6FFFF81 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505A9B7 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C5A397F6FFFFF8 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C59C97F6FFFF9386C68C17F6FFFF1F +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545931306100497F6FFFFD5 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306068497E6FFFFF1 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306067597E6FFFF9386866A42 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C66B97E6FFFF9386866432 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307A002930500001303F30397 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7E73506C5 +:102B8000B70508009387873E130700009385C5FFAC +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306065797E6FFFF93868641F7 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500093012000930000001301000063D62000C0 +:102C60006318303063163000E3DE20FE631230302C +:102C700093013000930010001301100063D6200070 +:102C80006318302E63163000E3DE20FE6312302E10 +:102C9000930140009300F0FF1301F0FF63D6200082 +:102CA0006318302C63163000E3DE20FE6312302CF4 +:102CB00093015000930010001301000063D6200020 +:102CC0006318302A63163000E3DE20FE6312302AD8 +:102CD00093016000930010001301F0FF63D6200001 +:102CE0006318302863163000E3DE20FE63123028BC +:102CF000930170009300F0FF1301E0FF63D6200002 +:102D00006318302663163000E3DE20FE631230269F +:102D100093018000930000001301100063D4200091 +:102D20006314300063163024E3DE20FE930190002C +:102D30009300F0FF1301100063D4200063143000EF +:102D400063183022E3DE20FE9301A0009300E0FF31 +:102D50001301F0FF63D4200063143000631A3020A5 +:102D6000E3DE20FE9301B0009300E0FF13011000AA +:102D700063D4200063143000631C301EE3DE20FEA9 +:102D80009301C000130200009300F0FF1301000044 +:102D900063D0201E1302120093022000E31652FE9D +:102DA0009301D000130200009300F0FF1301000014 +:102DB0001300000063DE201A1302120093022000A9 +:102DC000E31452FE9301E000130200009300F0FFB1 +:102DD00013010000130000001300000063DA201844 +:102DE0001302120093022000E31252FE9301F0003E +:102DF000130200009300F0FF130000001301000015 +:102E000063D820161302120093022000E31452FE2E +:102E100093010001130200009300F0FF1300000073 +:102E2000130100001300000063D4201413021200E9 +:102E300093022000E31252FE9301100113020000DE +:102E40009300F0FF130000001300000013010000C6 +:102E500063D020121302120093022000E31252FEEC +:102E600093012001130200009300F0FF1301000002 +:102E700063D020101302120093022000E31652FECA +:102E800093013001130200009300F0FF13010000D2 +:102E90001300000063DE200C1302120093022000D6 +:102EA000E31452FE93014001130200009300F0FF6F +:102EB00013010000130000001300000063DA200A71 +:102EC0001302120093022000E31252FE93015001FC +:102ED000130200009300F0FF130000001301000034 +:102EE00063D820081302120093022000E31452FE5C +:102EF00093016001130200009300F0FF1300000033 +:102F0000130100001300000063D420061302120016 +:102F100093022000E31252FE93017001130200009D +:102F20009300F0FF130000001300000013010000E5 +:102F300063D020041302120093022000E31252FE19 +:102F40009300100063DA000093801000938010005B +:102F500093801000938010009380100093801000E5 +:102F6000930E3000930180016394D001631A300006 +:102F70001395110063000500136515007300000030 +:0C2F80001305100073000000731000C067 +:102F8C00417373657274696F6E206661696C6564F8 +:102F9C003A2061646472203E3D202831554C203C1F +:102FAC003C203132292026262061646472203C208A +:102FBC003633202A202831554C203C3C20313229F4 +:102FCC000A000000417373657274696F6E2066614C +:102FDC00696C65643A20212870745B315D5B6164B7 +:102FEC0064722F2831554C203C3C203132295D2015 +:102FFC0026203078303830292026262063617573DE +:10300C0065203D3D203078660A00000041737365F1 +:10301C007274696F6E206661696C65643A206E6FBC +:10302C0064650A00417373657274696F6E20666122 +:10303C00696C65643A20757365725F6D6170706957 +:10304C006E675B616464722F2831554C203C3C20C8 +:10305C003132295D2E61646472203D3D20300A00BE +:10306C00417373657274696F6E206661696C656417 +:10307C003A2070745B315D5B616464722F2831554A +:10308C004C203C3C203132295D20262030783034D5 +:10309C00300A0000417373657274696F6E2066614B +:1030AC00696C65643A2070745B315D5B6164647259 +:1030BC002F2831554C203C3C203132295D202620D4 +:1030CC0030783038300A0000417373657274696F60 +:1030DC006E206661696C65643A2074662D3E65707D +:1030EC006320252034203D3D20300A004173736558 +:1030FC007274696F6E206661696C65643A20212276 +:10310C00696C6C6567616C20696E7374727563743D +:10311C00696F6E220A000000417373657274696FE7 +:10312C006E206661696C65643A202122756E657843 +:10313C0070656374656420657863657074696F6E1F +:10314C00220A0000417373657274696F6E206661A8 +:10315C00696C65643A202122756E737570706F729C +:10316C007465642073617470206D6F6465220A004D +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-bgeu.hex b/benchmarks/riscv_tests/isa/rv32ui-v-bgeu.hex new file mode 100644 index 00000000..9bb902e5 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-bgeu.hex @@ -0,0 +1,322 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5B197F6FFFF3B +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585AE97F6FFFF9386C6AD17F6FFFF3E +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545AC74 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505A797F6FFFFB4 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938505A097F6FFFF9386C68C17F6FFFFDB +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585961306100497F6FFFF92 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306468797E6FFFFAE +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306467897E6FFFF9386866AFF +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306066F97E6FFFF93868664EE +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307A001930500001303F30398 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7A7560EDC +:102B8000B7050800938757D9130700009385C5FF41 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306465A97E6FFFF93868641B4 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500093012000930000001301000063F62000A0 +:102C60006312303463163000E3FE20FE631C303202 +:102C700093013000930010001301100063F6200050 +:102C80006312303263163000E3FE20FE631C3030E6 +:102C9000930140009300F0FF1301F0FF63F6200062 +:102CA0006312303063163000E3FE20FE631C302ECA +:102CB00093015000930010001301000063F6200000 +:102CC0006312302E63163000E3FE20FE631C302CAE +:102CD000930160009300F0FF1301E0FF63F6200012 +:102CE0006312302C63163000E3FE20FE631C302A92 +:102CF000930170009300F0FF1301000063F62000C1 +:102D00006312302A63163000E3FE20FE631C302875 +:102D100093018000930000001301100063F4200071 +:102D20006314300063103028E3FE20FE930190000E +:102D30009300E0FF1301F0FF63F420006314300000 +:102D400063123026E3FE20FE9301A00093000000F2 +:102D50001301F0FF63F42000631430006314302487 +:102D6000E3FE20FE9301B000B70000809380F0FFE7 +:102D70003701008063F420006314300063143022B4 +:102D8000E3FE20FE9301C00013020000B70000F034 +:102D90009380F0FF370100F063F620201302120049 +:102DA00093022000E31452FE9301D00013020000AE +:102DB000B70000F09380F0FF370100F0130000002F +:102DC00063F2201E1302120093022000E31252FE4F +:102DD0009301E00013020000B70000F09380F0FFC1 +:102DE000370100F0130000001300000063FC201AFC +:102DF0001302120093022000E31052FE9301F00030 +:102E000013020000B70000F09380F0FF13000000F1 +:102E1000370100F063F8201813021200930220001B +:102E2000E31252FE9301000113020000B70000F00C +:102E30009380F0FF13000000370100F01300000042 +:102E400063F220161302120093022000E31052FED8 +:102E50009301100113020000B70000F09380F0FF0F +:102E60001300000013000000370100F063FC201283 +:102E70001302120093022000E31052FE930120017E +:102E800013020000B70000F09380F0FF370100F05C +:102E900063FA20101302120093022000E31452FE82 +:102EA0009301300113020000B70000F09380F0FF9F +:102EB000370100F01300000063F6200E1302120029 +:102EC00093022000E31252FE93014001130200001E +:102ED000B70000F09380F0FF370100F0130000000E +:102EE0001300000063F0200C130212009302200074 +:102EF000E31052FE9301500113020000B70000F0EE +:102F00009380F0FF13000000370100F063FC2008FD +:102F10001302120093022000E31252FE930160019B +:102F200013020000B70000F09380F0FF13000000D0 +:102F3000370100F01300000063F6200613021200B0 +:102F400093022000E31052FE93017001130200006F +:102F5000B70000F09380F0FF1300000013000000A2 +:102F6000370100F063F020041302120093022000E6 +:102F7000E31052FE9300100063FA000093801000EB +:102F800093801000938010009380100093801000B5 +:102F900093801000930E3000930180016394D00160 +:102FA000631A3000139511006300050013651500C6 +:102FB000730000001305100073000000731000C0C0 +:102FC000417373657274696F6E206661696C6564C4 +:102FD0003A2061646472203E3D202831554C203CEB +:102FE0003C203132292026262061646472203C2056 +:102FF0003633202A202831554C203C3C20313229C0 +:103000000A000000417373657274696F6E20666117 +:10301000696C65643A20212870745B315D5B616482 +:1030200064722F2831554C203C3C203132295D20E0 +:1030300026203078303830292026262063617573A9 +:1030400065203D3D203078660A00000041737365BD +:103050007274696F6E206661696C65643A206E6F88 +:1030600064650A00417373657274696F6E206661EE +:10307000696C65643A20757365725F6D6170706923 +:103080006E675B616464722F2831554C203C3C2094 +:103090003132295D2E61646472203D3D20300A008A +:1030A000417373657274696F6E206661696C6564E3 +:1030B0003A2070745B315D5B616464722F28315516 +:1030C0004C203C3C203132295D20262030783034A1 +:1030D000300A0000417373657274696F6E20666117 +:1030E000696C65643A2070745B315D5B6164647225 +:1030F0002F2831554C203C3C203132295D202620A0 +:1031000030783038300A0000417373657274696F2B +:103110006E206661696C65643A2074662D3E657048 +:103120006320252034203D3D20300A004173736523 +:103130007274696F6E206661696C65643A20212241 +:10314000696C6C6567616C20696E73747275637409 +:10315000696F6E220A000000417373657274696FB3 +:103160006E206661696C65643A202122756E65780F +:1031700070656374656420657863657074696F6EEB +:10318000220A0000417373657274696F6E20666174 +:10319000696C65643A202122756E737570706F7268 +:1031A0007465642073617470206D6F6465220A0019 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-blt.hex b/benchmarks/riscv_tests/isa/rv32ui-v-blt.hex new file mode 100644 index 00000000..08fae25c --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-blt.hex @@ -0,0 +1,313 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585A897F6FFFF84 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545A597F6FFFF9386C6AD17F6FFFF87 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505A3BD +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C59D97F6FFFFFE +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C59697F6FFFF9386C68C17F6FFFF25 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385458D1306100497F6FFFFDB +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306067E97E6FFFF07 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306066F97E6FFFF9386866A48 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C66597E6FFFF9386866438 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093072001930500001303F30318 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B71A0214 +:102B8000B7050800938787D6130700009385C5FF14 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306065197E6FFFF93868641FD +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500093012000930000001301100063C62000C0 +:102C60006318302A63163000E3CE20FE6312302A48 +:102C7000930130009300F0FF1301100063C62000A1 +:102C80006318302863163000E3CE20FE631230282C +:102C9000930140009300E0FF1301F0FF63C62000A2 +:102CA0006318302663163000E3CE20FE6312302610 +:102CB00093015000930010001301000063C4200032 +:102CC0006314300063163024E3CE20FE93016000CD +:102CD000930010001301F0FF63C420006314300060 +:102CE00063183022E3CE20FE930170009300F0FFC2 +:102CF0001301E0FF63C4200063143000631A302026 +:102D0000E3CE20FE93018000930010001301E0FF4A +:102D100063C4200063143000631C301EE3CE20FE29 +:102D20009301900013020000930000001301F0FFD4 +:102D300063C0201E1302120093022000E31652FE0D +:102D40009301A00013020000930000001301F0FFA4 +:102D50001300000063CE201A130212009302200019 +:102D6000E31452FE9301B000130200009300000030 +:102D70001301F0FF130000001300000063CA2018C5 +:102D80001302120093022000E31252FE9301C000CE +:102D90001302000093000000130000001301F0FF75 +:102DA00063C820161302120093022000E31452FE9F +:102DB0009301D000130200009300000013000000F4 +:102DC0001301F0FF1300000063C42014130212006B +:102DD00093022000E31252FE9301E0001302000070 +:102DE0009300000013000000130000001301F0FF27 +:102DF00063C020121302120093022000E31252FE5D +:102E00009301F00013020000930000001301F0FF93 +:102E100063C020101302120093022000E31652FE3A +:102E20009301000113020000930000001301F0FF62 +:102E30001300000063CE200C130212009302200046 +:102E4000E31452FE930110011302000093000000EE +:102E50001301F0FF130000001300000063CA200AF2 +:102E60001302120093022000E31252FE930120018C +:102E70001302000093000000130000001301F0FF94 +:102E800063C820081302120093022000E31452FECC +:102E900093013001130200009300000013000000B2 +:102EA0001301F0FF1300000063C420061302120098 +:102EB00093022000E31252FE93014001130200002E +:102EC0009300000013000000130000001301F0FF46 +:102ED00063C020041302120093022000E31252FE8A +:102EE00093001000634A100093801000938010003C +:102EF0009380100093801000938010009380100046 +:102F0000930E3000930150016394D001631A300096 +:102F10001395110063000500136515007300000090 +:0C2F20001305100073000000731000C0C7 +:102F2C00417373657274696F6E206661696C656458 +:102F3C003A2061646472203E3D202831554C203C7F +:102F4C003C203132292026262061646472203C20EA +:102F5C003633202A202831554C203C3C2031322954 +:102F6C000A000000417373657274696F6E206661AC +:102F7C00696C65643A20212870745B315D5B616417 +:102F8C0064722F2831554C203C3C203132295D2075 +:102F9C00262030783038302920262620636175733E +:102FAC0065203D3D203078660A0000004173736552 +:102FBC007274696F6E206661696C65643A206E6F1D +:102FCC0064650A00417373657274696F6E20666183 +:102FDC00696C65643A20757365725F6D61707069B8 +:102FEC006E675B616464722F2831554C203C3C2029 +:102FFC003132295D2E61646472203D3D20300A001F +:10300C00417373657274696F6E206661696C656477 +:10301C003A2070745B315D5B616464722F283155AA +:10302C004C203C3C203132295D2026203078303435 +:10303C00300A0000417373657274696F6E206661AB +:10304C00696C65643A2070745B315D5B61646472B9 +:10305C002F2831554C203C3C203132295D20262034 +:10306C0030783038300A0000417373657274696FC0 +:10307C006E206661696C65643A2074662D3E6570DD +:10308C006320252034203D3D20300A0041737365B8 +:10309C007274696F6E206661696C65643A202122D6 +:1030AC00696C6C6567616C20696E7374727563749E +:1030BC00696F6E220A000000417373657274696F48 +:1030CC006E206661696C65643A202122756E6578A4 +:1030DC0070656374656420657863657074696F6E80 +:1030EC00220A0000417373657274696F6E20666109 +:1030FC00696C65643A202122756E737570706F72FD +:10310C007465642073617470206D6F6465220A00AD +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-bltu.hex b/benchmarks/riscv_tests/isa/rv32ui-v-bltu.hex new file mode 100644 index 00000000..196e2c9e --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-bltu.hex @@ -0,0 +1,316 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5AB97F6FFFF41 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585A897F6FFFF9386C6AD17F6FFFF44 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545A67A +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505A197F6FFFFBA +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385059A97F6FFFF9386C68C17F6FFFFE1 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585901306100497F6FFFF98 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306468197E6FFFFB4 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306467297E6FFFF9386866A05 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306066997E6FFFF93868664F4 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307B003930500001303F30386 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B717650962 +:102B8000B70508009387C72B130700009385C5FF7F +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306465497E6FFFF93868641BA +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500093012000930000001301100063E62000A0 +:102C60006312302E63163000E3EE20FE631C302C1E +:102C7000930130009300E0FF1301F0FF63E62000B2 +:102C80006312302C63163000E3EE20FE631C302A02 +:102C900093014000930000001301F0FF63E6200061 +:102CA0006312302A63163000E3EE20FE631C3028E6 +:102CB00093015000930010001301000063E4200012 +:102CC0006314300063103028E3EE20FE93016000AF +:102CD0009300F0FF1301E0FF63E420006314300071 +:102CE00063123026E3EE20FE930170009300F0FFA4 +:102CF0001301000063E420006314300063143024E7 +:102D0000E3EE20FE93018000B700008037010080D1 +:102D10001301F1FF63E420006314300063143022D8 +:102D2000E3EE20FE9301900013020000B70000F0D4 +:102D3000370100F01301F1FF63E6202013021200B7 +:102D400093022000E31452FE9301A000130200003E +:102D5000B70000F0370100F01301F1FF130000008D +:102D600063E2201E1302120093022000E31252FEBF +:102D70009301B00013020000B70000F0370100F02B +:102D80001301F1FF130000001300000063EC201A90 +:102D90001302120093022000E31052FE9301C000C0 +:102DA00013020000B70000F013000000370100F02C +:102DB0001301F1FF63E820181302120093022000B0 +:102DC000E31252FE9301D00013020000B70000F09E +:102DD00013000000370100F01301F1FF13000000A1 +:102DE00063E220161302120093022000E31052FE49 +:102DF0009301E00013020000B70000F01300000090 +:102E000013000000370100F01301F1FF63EC201202 +:102E10001302120093022000E31052FE9301F0000F +:102E200013020000B70000F0370100F01301F1FFBA +:102E300063EA20101302120093022000E31452FEF2 +:102E40009301000113020000B70000F0370100F009 +:102E50001301F1FF1300000063E6200E13021200BD +:102E600093022000E31252FE9301100113020000AE +:102E7000B70000F0370100F01301F1FF130000006C +:102E80001300000063E0200C1302120093022000E4 +:102E9000E31052FE9301200113020000B70000F07E +:102EA00013000000370100F01301F1FF63EC20086C +:102EB0001302120093022000E31252FE930130012C +:102EC00013020000B70000F013000000370100F00B +:102ED0001301F1FF1300000063E620061302120045 +:102EE00093022000E31052FE930140011302000000 +:102EF000B70000F01300000013000000370100F0DD +:102F00001301F1FF63E0200413021200930220007A +:102F1000E31052FE93001000636A100093801000CB +:102F20009380100093801000938010009380100015 +:102F300093801000930E3000930150016394D001F0 +:102F4000631A300013951100630005001365150026 +:102F5000730000001305100073000000731000C020 +:102F6000417373657274696F6E206661696C656424 +:102F70003A2061646472203E3D202831554C203C4B +:102F80003C203132292026262061646472203C20B6 +:102F90003633202A202831554C203C3C2031322920 +:102FA0000A000000417373657274696F6E20666178 +:102FB000696C65643A20212870745B315D5B6164E3 +:102FC00064722F2831554C203C3C203132295D2041 +:102FD000262030783038302920262620636175730A +:102FE00065203D3D203078660A000000417373651E +:102FF0007274696F6E206661696C65643A206E6FE9 +:1030000064650A00417373657274696F6E2066614E +:10301000696C65643A20757365725F6D6170706983 +:103020006E675B616464722F2831554C203C3C20F4 +:103030003132295D2E61646472203D3D20300A00EA +:10304000417373657274696F6E206661696C656443 +:103050003A2070745B315D5B616464722F28315576 +:103060004C203C3C203132295D2026203078303401 +:10307000300A0000417373657274696F6E20666177 +:10308000696C65643A2070745B315D5B6164647285 +:103090002F2831554C203C3C203132295D20262000 +:1030A00030783038300A0000417373657274696F8C +:1030B0006E206661696C65643A2074662D3E6570A9 +:1030C0006320252034203D3D20300A004173736584 +:1030D0007274696F6E206661696C65643A202122A2 +:1030E000696C6C6567616C20696E7374727563746A +:1030F000696F6E220A000000417373657274696F14 +:103100006E206661696C65643A202122756E65786F +:1031100070656374656420657863657074696F6E4B +:10312000220A0000417373657274696F6E206661D4 +:10313000696C65643A202122756E737570706F72C8 +:103140007465642073617470206D6F6465220A0079 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-bne.hex b/benchmarks/riscv_tests/isa/rv32ui-v-bne.hex new file mode 100644 index 00000000..637fb679 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-bne.hex @@ -0,0 +1,313 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5A897F6FFFF44 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585A597F6FFFF9386C6AD17F6FFFF47 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545A37D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385059E97F6FFFFBD +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385059797F6FFFF9386C68C17F6FFFFE4 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385858D1306100497F6FFFF9B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306467E97E6FFFFC7 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306466F97E6FFFF9386866A08 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306066697E6FFFF93868664F7 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093075002930500001303F303E7 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B73793031A +:102B8000B70508009387E7AD130700009385C5FFDD +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306465197E6FFFF93868641BD +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500093012000930000001301100063962000F0 +:102C6000631A302A63163000E39E20FE6314302A74 +:102C700093013000930010001301000063962000C0 +:102C8000631A302863163000E39E20FE6314302858 +:102C9000930140009300F0FF1301100063962000A1 +:102CA000631A302663163000E39E20FE631430263C +:102CB00093015000930010001301F0FF6396200071 +:102CC000631A302463163000E39E20FE6314302420 +:102CD0009301600093000000130100006394200042 +:102CE0006314300063183022E39E20FE93017000CD +:102CF000930010001301100063942000631430004F +:102D0000631A3020E39E20FE930180009300F0FFC1 +:102D10001301F0FF6394200063143000631C301E25 +:102D2000E39E20FE93019000130200009300000038 +:102D3000130100006390201E130212009302200072 +:102D4000E31652FE9301A00013020000930000005E +:102D50001301000013000000639E201A13021200EA +:102D600093022000E31452FE9301B000130200000E +:102D70009300000013010000130000001300000086 +:102D8000639A20181302120093022000E31252FEED +:102D90009301C00013020000930000001300000024 +:102DA0001301000063982016130212009302200002 +:102DB000E31452FE9301D0001302000093000000C0 +:102DC000130000001301000013000000639420149E +:102DD0001302120093022000E31252FE9301E0005E +:102DE0001302000093000000130000001300000015 +:102DF00013010000639020121302120093022000BE +:102E0000E31252FE9301F000130200009300000051 +:102E1000130100006390201013021200930220009F +:102E2000E31652FE9301000113020000930000001C +:102E30001301000013000000639E200C1302120017 +:102E400093022000E31452FE9301100113020000CC +:102E500093000000130100001300000013000000A5 +:102E6000639A200A1302120093022000E31252FE1A +:102E700093012001130200009300000013000000E2 +:102E8000130100006398200813021200930220002F +:102E9000E31452FE9301300113020000930000007E +:102EA00013000000130100001300000063942006CB +:102EB0001302120093022000E31252FE930140011C +:102EC0001302000093000000130000001300000034 +:102ED00013010000639020041302120093022000EB +:102EE000E31252FE93001000639A000093801000DA +:102EF0009380100093801000938010009380100046 +:102F000093801000930E3000930150016394D00120 +:102F1000631A300013951100630005001365150056 +:102F2000730000001305100073000000731000C050 +:102F3000417373657274696F6E206661696C656454 +:102F40003A2061646472203E3D202831554C203C7B +:102F50003C203132292026262061646472203C20E6 +:102F60003633202A202831554C203C3C2031322950 +:102F70000A000000417373657274696F6E206661A8 +:102F8000696C65643A20212870745B315D5B616413 +:102F900064722F2831554C203C3C203132295D2071 +:102FA000262030783038302920262620636175733A +:102FB00065203D3D203078660A000000417373654E +:102FC0007274696F6E206661696C65643A206E6F19 +:102FD00064650A00417373657274696F6E2066617F +:102FE000696C65643A20757365725F6D61707069B4 +:102FF0006E675B616464722F2831554C203C3C2025 +:103000003132295D2E61646472203D3D20300A001A +:10301000417373657274696F6E206661696C656473 +:103020003A2070745B315D5B616464722F283155A6 +:103030004C203C3C203132295D2026203078303431 +:10304000300A0000417373657274696F6E206661A7 +:10305000696C65643A2070745B315D5B61646472B5 +:103060002F2831554C203C3C203132295D20262030 +:1030700030783038300A0000417373657274696FBC +:103080006E206661696C65643A2074662D3E6570D9 +:103090006320252034203D3D20300A0041737365B4 +:1030A0007274696F6E206661696C65643A202122D2 +:1030B000696C6C6567616C20696E7374727563749A +:1030C000696F6E220A000000417373657274696F44 +:1030D0006E206661696C65643A202122756E6578A0 +:1030E00070656374656420657863657074696F6E7C +:1030F000220A0000417373657274696F6E20666105 +:10310000696C65643A202122756E737570706F72F8 +:103110007465642073617470206D6F6465220A00A9 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-fence_i.hex b/benchmarks/riscv_tests/isa/rv32ui-v-fence_i.hex new file mode 100644 index 00000000..358c1839 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-fence_i.hex @@ -0,0 +1,290 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20503D90 +:1000B00017350000130545BD6F20D0158322450874 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385459097F6FFFFDC +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058D97F6FFFF9386C6AD17F6FFFFDF +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C58A16 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385858597F6FFFF56 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857E97F6FFFF9386C68C17F6FFFF7D +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938505751306100497F6FFFF43 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C66597E6FFFF60 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C65697E6FFFF9386866AA1 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864D97E6FFFF9386866490 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093075000930500001303F303E9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7D7D60832 +:102B8000B70508009387E7E9130700009385C5FFA1 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C63897E6FFFF9386864156 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE0000000072 +:102C50000000000000000000000000000000000074 +:102C60000000000000000000000000000000000064 +:102C70000000000000000000000000000000000054 +:102C8000678000009306F0061705000003158537DE +:102C900097050000839525371300000013000000FE +:102CA00013000000130000001300000013000000D8 +:102CB00013000000130000001300000013000000C8 +:102CC00097020000239AA200970200002397B20007 +:102CD0000F1000009386E60D13000000930EC01B3A +:102CE00093012000639AD607130740061307F7FFE6 +:102CF000E31E07FE970200002396A204970200003D +:102D00002393B2040F100000130000001300000012 +:102D10001300000013000000130000001300000067 +:102D20001300000013000000130000001300000057 +:102D30001300000013000000130000001300000047 +:102D40009386B62213000000930E9030930130005A +:102D50006394D601631A30001395110063000500D7 +:102D600013651500730000001305100073000000C8 +:102D7000731000C000000000000000000000000010 +:102D80000000000000000000000000000000000043 +:102D90000000000000000000000000000000000033 +:082DA00000000000000000002B +:102DA800417373657274696F6E206661696C6564DE +:102DB8003A2061646472203E3D202831554C203C05 +:102DC8003C203132292026262061646472203C2070 +:102DD8003633202A202831554C203C3C20313229DA +:102DE8000A000000417373657274696F6E20666132 +:102DF800696C65643A20212870745B315D5B61649D +:102E080064722F2831554C203C3C203132295D20FA +:102E180026203078303830292026262063617573C3 +:102E280065203D3D203078660A00000041737365D7 +:102E38007274696F6E206661696C65643A206E6FA2 +:102E480064650A00417373657274696F6E20666108 +:102E5800696C65643A20757365725F6D617070693D +:102E68006E675B616464722F2831554C203C3C20AE +:102E78003132295D2E61646472203D3D20300A00A4 +:102E8800417373657274696F6E206661696C6564FD +:102E98003A2070745B315D5B616464722F28315530 +:102EA8004C203C3C203132295D20262030783034BB +:102EB800300A0000417373657274696F6E20666131 +:102EC800696C65643A2070745B315D5B616464723F +:102ED8002F2831554C203C3C203132295D202620BA +:102EE80030783038300A0000417373657274696F46 +:102EF8006E206661696C65643A2074662D3E657063 +:102F08006320252034203D3D20300A00417373653D +:102F18007274696F6E206661696C65643A2021225B +:102F2800696C6C6567616C20696E73747275637423 +:102F3800696F6E220A000000417373657274696FCD +:102F48006E206661696C65643A202122756E657829 +:102F580070656374656420657863657074696F6E05 +:102F6800220A0000417373657274696F6E2066618E +:102F7800696C65643A202122756E737570706F7282 +:102F88007465642073617470206D6F6465220A0033 +:043000009386D614C9 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-jal.hex b/benchmarks/riscv_tests/isa/rv32ui-v-jal.hex new file mode 100644 index 00000000..9039264d --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-jal.hex @@ -0,0 +1,274 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385C58197F6FFFF6B +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385857E97F6FFFF9386C6AD17F6FFFF6E +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385457CB4 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385057797F6FFFFF4 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385057097F6FFFF9386C68C17F6FFFF0B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938585661306100497F6FFFFD2 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306465797E6FFFFEE +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306464897E6FFFF9386866A2F +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306063F97E6FFFF938686641E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE7093079001930500001303F303A8 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B7080B1D +:102B8000B70508009387F785130700009385C5FFF5 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306462A97E6FFFF93868641E4 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500093012000930000006F02000113000000A8 +:102C6000130000006F00000417010000130141FF72 +:102C7000631A4102930010006F004001938010001E +:102C800093801000938010009380100093801000B8 +:102C900093801000930E3000930130006394D001B4 +:102CA000631A3000139511006300050013651500C9 +:102CB000730000001305100073000000731000C0C3 +:102CC000417373657274696F6E206661696C6564C7 +:102CD0003A2061646472203E3D202831554C203CEE +:102CE0003C203132292026262061646472203C2059 +:102CF0003633202A202831554C203C3C20313229C3 +:102D00000A000000417373657274696F6E2066611A +:102D1000696C65643A20212870745B315D5B616485 +:102D200064722F2831554C203C3C203132295D20E3 +:102D300026203078303830292026262063617573AC +:102D400065203D3D203078660A00000041737365C0 +:102D50007274696F6E206661696C65643A206E6F8B +:102D600064650A00417373657274696F6E206661F1 +:102D7000696C65643A20757365725F6D6170706926 +:102D80006E675B616464722F2831554C203C3C2097 +:102D90003132295D2E61646472203D3D20300A008D +:102DA000417373657274696F6E206661696C6564E6 +:102DB0003A2070745B315D5B616464722F28315519 +:102DC0004C203C3C203132295D20262030783034A4 +:102DD000300A0000417373657274696F6E2066611A +:102DE000696C65643A2070745B315D5B6164647228 +:102DF0002F2831554C203C3C203132295D202620A3 +:102E000030783038300A0000417373657274696F2E +:102E10006E206661696C65643A2074662D3E65704B +:102E20006320252034203D3D20300A004173736526 +:102E30007274696F6E206661696C65643A20212244 +:102E4000696C6C6567616C20696E7374727563740C +:102E5000696F6E220A000000417373657274696FB6 +:102E60006E206661696C65643A202122756E657812 +:102E700070656374656420657863657074696F6EEE +:102E8000220A0000417373657274696F6E20666177 +:102E9000696C65643A202122756E737570706F726B +:102EA0007465642073617470206D6F6465220A001C +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-jalr.hex b/benchmarks/riscv_tests/isa/rv32ui-v-jalr.hex new file mode 100644 index 00000000..bb9003b9 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-jalr.hex @@ -0,0 +1,282 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385C58997F6FFFF63 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385858697F6FFFF9386C6AD17F6FFFF66 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545849C +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385057F97F6FFFFEC +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385057897F6FFFF9386C68C17F6FFFF03 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385856E1306100497F6FFFFCA +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306465F97E6FFFFE6 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306465097E6FFFF9386866A27 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306064797E6FFFF9386866416 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE709307B003930500001303F30386 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7177F0B46 +:102B8000B7050800938767A3130700009385C5FF67 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306463297E6FFFF93868641DC +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C500093012000930200001703000013030301F7 +:102C6000E70203006F00000C170300001303C3FF0B +:102C7000639A620A930140001302000017030000E8 +:102C800013030301E7060300631E3008130212005A +:102C900093022000E31452FE93015000130200003F +:102CA000170300001303430113000000E7060300AD +:102CB000631A30061302120093022000E31252FE40 +:102CC0009301600013020000170300001303830147 +:102CD0001300000013000000E70603006314300433 +:102CE0001302120093022000E31052FE9302100020 +:102CF000170300001303C3016700C3FF9382120090 +:102D00009382120093821200938212009382120027 +:102D100093821200930E4000930170006394D201DD +:102D2000631A300013951100630005001365150048 +:102D3000730000001305100073000000731000C042 +:102D4000417373657274696F6E206661696C656446 +:102D50003A2061646472203E3D202831554C203C6D +:102D60003C203132292026262061646472203C20D8 +:102D70003633202A202831554C203C3C2031322942 +:102D80000A000000417373657274696F6E2066619A +:102D9000696C65643A20212870745B315D5B616405 +:102DA00064722F2831554C203C3C203132295D2063 +:102DB000262030783038302920262620636175732C +:102DC00065203D3D203078660A0000004173736540 +:102DD0007274696F6E206661696C65643A206E6F0B +:102DE00064650A00417373657274696F6E20666171 +:102DF000696C65643A20757365725F6D61707069A6 +:102E00006E675B616464722F2831554C203C3C2016 +:102E10003132295D2E61646472203D3D20300A000C +:102E2000417373657274696F6E206661696C656465 +:102E30003A2070745B315D5B616464722F28315598 +:102E40004C203C3C203132295D2026203078303423 +:102E5000300A0000417373657274696F6E20666199 +:102E6000696C65643A2070745B315D5B61646472A7 +:102E70002F2831554C203C3C203132295D20262022 +:102E800030783038300A0000417373657274696FAE +:102E90006E206661696C65643A2074662D3E6570CB +:102EA0006320252034203D3D20300A0041737365A6 +:102EB0007274696F6E206661696C65643A202122C4 +:102EC000696C6C6567616C20696E7374727563748C +:102ED000696F6E220A000000417373657274696F36 +:102EE0006E206661696C65643A202122756E657892 +:102EF00070656374656420657863657074696F6E6E +:102F0000220A0000417373657274696F6E206661F6 +:102F1000696C65643A202122756E737570706F72EA +:102F20007465642073617470206D6F6465220A009B +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-lb.hex b/benchmarks/riscv_tests/isa/rv32ui-v-lb.hex new file mode 100644 index 00000000..d43136ef --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-lb.hex @@ -0,0 +1,307 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938545A197F6FFFFCB +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385059E97F6FFFF9386C6AD17F6FFFFCE +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C59B05 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385859697F6FFFF45 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385858F97F6FFFF9386C68C17F6FFFF6C +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938505861306100497F6FFFF22 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C67697E6FFFF4F +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C66797E6FFFF9386866A90 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306865E97E6FFFF938686647F +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307B000930500001303F30389 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7D74A07BF +:102B8000B70508009387A7A5130700009385C5FF25 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C64997E6FFFF9386864145 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B03870000930EF0FF65 +:102C600093012000631CD7239710000093808039C4 +:102C700003871000930E0000930130006310D723E8 +:102C8000971000009380003803872000930E00FF08 +:102C9000930140006314D721971000009380803681 +:102CA00003873000930EF000930150006318D71F84 +:102CB00097100000938030350387D0FF930EF0FF0C +:102CC00093016000631CD71D971000009380B03300 +:102CD0000387E0FF930E0000930170006310D71D7F +:102CE00097100000938030320387F0FF930E00FFAF +:102CF000930180006314D71B971000009380B030BD +:102D000003870000930EF000930190006318D71919 +:102D1000971000009380002F938000FE83820002B2 +:102D2000930EF0FF9301A000639AD2179710000052 +:102D30009380402D9380A0FF83827000930E00004B +:102D40009301B000639CD2159301C00013020000F0 +:102D5000971000009380102B0387100013030700C7 +:102D6000930E00FF631CD313130212009302200082 +:102D7000E31052FE9301D0001302000097100000F0 +:102D800093806028038710001300000013030700DE +:102D9000930EF0006314D31113021200930220006B +:102DA000E31E52FC9301E0001302000097100000A4 +:102DB00093804025038710001300000013000000DB +:102DC00013030700930E0000631AD30D13021200C1 +:102DD00093022000E31C52FC9301F0001302000058 +:102DE000971000009380102203871000930E00FFBD +:102DF0006316D70B1302120093022000E31252FE57 +:102E00009301000113020000971000009380A01F9F +:102E10001300000003871000930EF0006310D70921 +:102E20001302120093022000E31052FE93011001DE +:102E300013020000971000009380C01C13000000D4 +:102E40001300000003871000930E00006318D705DD +:102E50001302120093022000E31E52FC971200009E +:102E60009382421A0381020013012000930E200076 +:102E7000930120016314D1039712000093828218FA +:102E8000038102001300000013012000930E2000B4 +:102E9000930130016314D101631A300013951100BE +:102EA0006300050013651500730000001305100092 +:082EB00073000000731000C064 +:102EB800417373657274696F6E206661696C6564CD +:102EC8003A2061646472203E3D202831554C203CF4 +:102ED8003C203132292026262061646472203C205F +:102EE8003633202A202831554C203C3C20313229C9 +:102EF8000A000000417373657274696F6E20666121 +:102F0800696C65643A20212870745B315D5B61648B +:102F180064722F2831554C203C3C203132295D20E9 +:102F280026203078303830292026262063617573B2 +:102F380065203D3D203078660A00000041737365C6 +:102F48007274696F6E206661696C65643A206E6F91 +:102F580064650A00417373657274696F6E206661F7 +:102F6800696C65643A20757365725F6D617070692C +:102F78006E675B616464722F2831554C203C3C209D +:102F88003132295D2E61646472203D3D20300A0093 +:102F9800417373657274696F6E206661696C6564EC +:102FA8003A2070745B315D5B616464722F2831551F +:102FB8004C203C3C203132295D20262030783034AA +:102FC800300A0000417373657274696F6E20666120 +:102FD800696C65643A2070745B315D5B616464722E +:102FE8002F2831554C203C3C203132295D202620A9 +:102FF80030783038300A0000417373657274696F35 +:103008006E206661696C65643A2074662D3E657051 +:103018006320252034203D3D20300A00417373652C +:103028007274696F6E206661696C65643A2021224A +:10303800696C6C6567616C20696E73747275637412 +:10304800696F6E220A000000417373657274696FBC +:103058006E206661696C65643A202122756E657818 +:1030680070656374656420657863657074696F6EF4 +:10307800220A0000417373657274696F6E2066617D +:10308800696C65643A202122756E737570706F7271 +:103098007465642073617470206D6F6465220A0022 +:04400000FF00F00FBE +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-lbu.hex b/benchmarks/riscv_tests/isa/rv32ui-v-lbu.hex new file mode 100644 index 00000000..5cd24ddc --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-lbu.hex @@ -0,0 +1,307 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938545A197F6FFFFCB +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385059E97F6FFFF9386C6AD17F6FFFFCE +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C59B05 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385859697F6FFFF45 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385858F97F6FFFF9386C68C17F6FFFF6C +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938505861306100497F6FFFF22 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C67697E6FFFF4F +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C66797E6FFFF9386866A90 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306865E97E6FFFF938686647F +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307D002930500001303F30367 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7E7BA0B3B +:102B8000B70508009387477E130700009385C5FFAC +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C64997E6FFFF9386864145 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B03C70000930EF00F15 +:102C600093012000631CD7239710000093808039C4 +:102C700003C71000930E0000930130006310D723A8 +:102C8000971000009380003803C72000930E000FB8 +:102C9000930140006314D721971000009380803681 +:102CA00003C73000930EF000930150006318D71F44 +:102CB000971000009380303503C7D0FF930EF00FBC +:102CC00093016000631CD71D971000009380B03300 +:102CD00003C7E0FF930E0000930170006310D71D3F +:102CE000971000009380303203C7F0FF930E000F5F +:102CF000930180006314D71B971000009380B030BD +:102D000003C70000930EF000930190006318D719D9 +:102D1000971000009380002F938000FE83C2000272 +:102D2000930EF00F9301A000639AD2179710000042 +:102D30009380402D9380A0FF83C27000930E00000B +:102D40009301B000639CD2159301C00013020000F0 +:102D5000971000009380102B03C710001303070087 +:102D6000930E000F631CD313130212009302200072 +:102D7000E31052FE9301D0001302000097100000F0 +:102D80009380602803C7100013000000130307009E +:102D9000930EF0006314D31113021200930220006B +:102DA000E31E52FC9301E0001302000097100000A4 +:102DB0009380402503C7100013000000130000009B +:102DC00013030700930E0000631AD30D13021200C1 +:102DD00093022000E31C52FC9301F0001302000058 +:102DE000971000009380102203C71000930E000F6D +:102DF0006316D70B1302120093022000E31252FE57 +:102E00009301000113020000971000009380A01F9F +:102E10001300000003C71000930EF0006310D709E1 +:102E20001302120093022000E31052FE93011001DE +:102E300013020000971000009380C01C13000000D4 +:102E40001300000003C71000930E00006318D7059D +:102E50001302120093022000E31E52FC971200009E +:102E60009382421A03C1020013012000930E200036 +:102E7000930120016314D1039712000093828218FA +:102E800003C102001300000013012000930E200074 +:102E9000930130016314D101631A300013951100BE +:102EA0006300050013651500730000001305100092 +:082EB00073000000731000C064 +:102EB800417373657274696F6E206661696C6564CD +:102EC8003A2061646472203E3D202831554C203CF4 +:102ED8003C203132292026262061646472203C205F +:102EE8003633202A202831554C203C3C20313229C9 +:102EF8000A000000417373657274696F6E20666121 +:102F0800696C65643A20212870745B315D5B61648B +:102F180064722F2831554C203C3C203132295D20E9 +:102F280026203078303830292026262063617573B2 +:102F380065203D3D203078660A00000041737365C6 +:102F48007274696F6E206661696C65643A206E6F91 +:102F580064650A00417373657274696F6E206661F7 +:102F6800696C65643A20757365725F6D617070692C +:102F78006E675B616464722F2831554C203C3C209D +:102F88003132295D2E61646472203D3D20300A0093 +:102F9800417373657274696F6E206661696C6564EC +:102FA8003A2070745B315D5B616464722F2831551F +:102FB8004C203C3C203132295D20262030783034AA +:102FC800300A0000417373657274696F6E20666120 +:102FD800696C65643A2070745B315D5B616464722E +:102FE8002F2831554C203C3C203132295D202620A9 +:102FF80030783038300A0000417373657274696F35 +:103008006E206661696C65643A2074662D3E657051 +:103018006320252034203D3D20300A00417373652C +:103028007274696F6E206661696C65643A2021224A +:10303800696C6C6567616C20696E73747275637412 +:10304800696F6E220A000000417373657274696FBC +:103058006E206661696C65643A202122756E657818 +:1030680070656374656420657863657074696F6EF4 +:10307800220A0000417373657274696F6E2066617D +:10308800696C65643A202122756E737570706F7271 +:103098007465642073617470206D6F6465220A0022 +:04400000FF00F00FBE +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-lh.hex b/benchmarks/riscv_tests/isa/rv32ui-v-lh.hex new file mode 100644 index 00000000..7dddf56b --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-lh.hex @@ -0,0 +1,309 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938545A397F6FFFFC9 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938505A097F6FFFF9386C6AD17F6FFFFCC +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C59D03 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385859897F6FFFF43 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385859197F6FFFF9386C68C17F6FFFF6A +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938505881306100497F6FFFF20 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C67897E6FFFF4D +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C66997E6FFFF9386866A8E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306866097E6FFFF938686647D +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307B000930500001303F30389 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7070D0AC9 +:102B8000B705080093874722130700009385C5FF08 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C64B97E6FFFF9386864143 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B03970000930EF00F45 +:102C600093012000631CD7259710000093808039C2 +:102C700003972000930E00F0930130006310D725D6 +:102C8000971000009380003803974000B71E0000A3 +:102C9000938E0EFF930140006312D723971000001C +:102CA0009380403603976000B7FEFFFF938EFE00CF +:102CB000930150006314D721971000009380E034F3 +:102CC0000397A0FF930EF00F930160006318D71FC6 +:102CD00097100000938060330397C0FF930E00F0BD +:102CE00093017000631CD71D971000009380E031A2 +:102CF0000397E0FFB71E0000938E0EFF9301800044 +:102D0000631ED71B971000009380203003970000AC +:102D1000B7FEFFFF938EFE00930190006310D71B58 +:102D2000971000009380002E938000FE8392000293 +:102D3000930EF00F9301A0006392D2199710000038 +:102D40009380402C9380B0FF83927000930E00F02C +:102D50009301B0006394D2179301C00013020000E6 +:102D6000971000009380202A039720001303070088 +:102D7000B71E0000938E0EFF6312D31513021200CC +:102D800093022000E31E52FC9301D00013020000C6 +:102D90009710000093804027039720001300000045 +:102DA00013030700B7FEFFFF938EFE006318D311D5 +:102DB0001302120093022000E31C52FC9301E00076 +:102DC00013020000971000009380C0230397200097 +:102DD000130000001300000013030700930E00F01F +:102DE000631ED30D1302120093022000E31C52FC59 +:102DF0009301F00013020000971000009380A020C0 +:102E000003972000B71E0000938E0EFF6318D70BA8 +:102E10001302120093022000E31052FE93010001FE +:102E200013020000971000009380001E13000000A2 +:102E300003972000B7FEFFFF938EFE006310D709B3 +:102E40001302120093022000E31E52FC93011001B2 +:102E500013020000971000009380C01A13000000B6 +:102E60001300000003972000930E00F06318D705AD +:102E70001302120093022000E31E52FC971200007E +:102E8000938242180391020013012000930E200048 +:102E9000930120016314D1039712000093828216DC +:102EA000039102001300000013012000930E200084 +:102EB000930130016314D101631A3000139511009E +:102EC0006300050013651500730000001305100072 +:082ED00073000000731000C044 +:102ED800417373657274696F6E206661696C6564AD +:102EE8003A2061646472203E3D202831554C203CD4 +:102EF8003C203132292026262061646472203C203F +:102F08003633202A202831554C203C3C20313229A8 +:102F18000A000000417373657274696F6E20666100 +:102F2800696C65643A20212870745B315D5B61646B +:102F380064722F2831554C203C3C203132295D20C9 +:102F48002620307830383029202626206361757392 +:102F580065203D3D203078660A00000041737365A6 +:102F68007274696F6E206661696C65643A206E6F71 +:102F780064650A00417373657274696F6E206661D7 +:102F8800696C65643A20757365725F6D617070690C +:102F98006E675B616464722F2831554C203C3C207D +:102FA8003132295D2E61646472203D3D20300A0073 +:102FB800417373657274696F6E206661696C6564CC +:102FC8003A2070745B315D5B616464722F283155FF +:102FD8004C203C3C203132295D202620307830348A +:102FE800300A0000417373657274696F6E20666100 +:102FF800696C65643A2070745B315D5B616464720E +:103008002F2831554C203C3C203132295D20262088 +:1030180030783038300A0000417373657274696F14 +:103028006E206661696C65643A2074662D3E657031 +:103038006320252034203D3D20300A00417373650C +:103048007274696F6E206661696C65643A2021222A +:10305800696C6C6567616C20696E737472756374F2 +:10306800696F6E220A000000417373657274696F9C +:103078006E206661696C65643A202122756E6578F8 +:1030880070656374656420657863657074696F6ED4 +:10309800220A0000417373657274696F6E2066615D +:1030A800696C65643A202122756E737570706F7251 +:1030B8007465642073617470206D6F6465220A0002 +:08400000FF0000FFF00F0FF0BC +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-lhu.hex b/benchmarks/riscv_tests/isa/rv32ui-v-lhu.hex new file mode 100644 index 00000000..a2f1a92e --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-lhu.hex @@ -0,0 +1,310 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938585A497F6FFFF88 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545A197F6FFFF9386C6AD17F6FFFF8B +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385059FC1 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C59997F6FFFF02 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C59297F6FFFF9386C68C17F6FFFF29 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545891306100497F6FFFFDF +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306067A97E6FFFF0B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306066B97E6FFFF9386866A4C +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C66197E6FFFF938686643C +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307A002930500001303F30397 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7D7DF0F22 +:102B8000B7050800938797EE130700009385C5FFEC +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306064D97E6FFFF9386864101 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B03D70000930EF00F05 +:102C6000930120006316D7279710000093808039C6 +:102C700003D72000B70E0100938E0EF093013000B1 +:102C80006318D725971000009380C03703D7400002 +:102C9000B71E0000938E0EFF93014000631AD723E6 +:102CA000971000009380003603D76000B7FE000045 +:102CB000938EFE0093015000631CD72197100000F3 +:102CC0009380A03403D7A0FF930EF00F9301600010 +:102CD0006310D721971000009380203303D7C0FFE3 +:102CE000B70E0100938E0EF0930170006312D71F90 +:102CF000971000009380603103D7E0FFB71E0000FB +:102D0000938E0EFF930180006314D71D971000006F +:102D10009380A02F03D70000B7FE0000938EFE0023 +:102D2000930190006316D71B971000009380802DAD +:102D3000938000FE83D20002930EF00F9301A00057 +:102D40006398D219971000009380C02B9380B0FF36 +:102D500083D27000B70E0100938E0EF09301B00085 +:102D60006398D2179301C00013020000971000006F +:102D70009380602903D7200013030700B71E0000CB +:102D8000938E0EFF6316D3151302120093022000D8 +:102D9000E31E52FC9301D0001302000097100000C4 +:102DA0009380802603D72000130000001303070040 +:102DB000B7FE0000938EFE00631CD31113021200B5 +:102DC00093022000E31C52FC9301E0001302000078 +:102DD000971000009380002303D720001300000009 +:102DE0001300000013030700B70E0100938E0EF0CE +:102DF0006310D30F1302120093022000E31A52FC57 +:102E00009301F00013020000971000009380A01FB0 +:102E100003D72000B71E0000938E0EFF631AD70B56 +:102E20001302120093022000E31052FE93010001EE +:102E300013020000971000009380001D1300000093 +:102E400003D72000B7FE0000938EFE006312D7095F +:102E50001302120093022000E31E52FC93011001A2 +:102E600013020000971000009380C01913000000A7 +:102E70001300000003D72000B70E0100938E0EF060 +:102E80006318D7051302120093022000E31C52FCC2 +:102E9000971200009382021703D102001301200051 +:102EA000930E2000930120016314D10397120000B8 +:102EB0009382421503D10200130000001301200089 +:102EC000930E2000930130016314D101631A300086 +:102ED00013951100630005001365150073000000D1 +:0C2EE0001305100073000000731000C008 +:102EEC00417373657274696F6E206661696C656499 +:102EFC003A2061646472203E3D202831554C203CC0 +:102F0C003C203132292026262061646472203C202A +:102F1C003633202A202831554C203C3C2031322994 +:102F2C000A000000417373657274696F6E206661EC +:102F3C00696C65643A20212870745B315D5B616457 +:102F4C0064722F2831554C203C3C203132295D20B5 +:102F5C00262030783038302920262620636175737E +:102F6C0065203D3D203078660A0000004173736592 +:102F7C007274696F6E206661696C65643A206E6F5D +:102F8C0064650A00417373657274696F6E206661C3 +:102F9C00696C65643A20757365725F6D61707069F8 +:102FAC006E675B616464722F2831554C203C3C2069 +:102FBC003132295D2E61646472203D3D20300A005F +:102FCC00417373657274696F6E206661696C6564B8 +:102FDC003A2070745B315D5B616464722F283155EB +:102FEC004C203C3C203132295D2026203078303476 +:102FFC00300A0000417373657274696F6E206661EC +:10300C00696C65643A2070745B315D5B61646472F9 +:10301C002F2831554C203C3C203132295D20262074 +:10302C0030783038300A0000417373657274696F00 +:10303C006E206661696C65643A2074662D3E65701D +:10304C006320252034203D3D20300A0041737365F8 +:10305C007274696F6E206661696C65643A20212216 +:10306C00696C6C6567616C20696E737472756374DE +:10307C00696F6E220A000000417373657274696F88 +:10308C006E206661696C65643A202122756E6578E4 +:10309C0070656374656420657863657074696F6EC0 +:1030AC00220A0000417373657274696F6E20666149 +:1030BC00696C65643A202122756E737570706F723D +:1030CC007465642073617470206D6F6465220A00EE +:08400000FF0000FFF00F0FF0BC +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-lui.hex b/benchmarks/riscv_tests/isa/rv32ui-v-lui.hex new file mode 100644 index 00000000..343ed027 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-lui.hex @@ -0,0 +1,275 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385858297F6FFFFAA +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385457F97F6FFFF9386C6AD17F6FFFFAD +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004970500009385057DF3 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57797F6FFFF34 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C57097F6FFFF9386C68C17F6FFFF4B +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545671306100497F6FFFF11 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306065897E6FFFF2D +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306064997E6FFFF9386866A6E +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C63F97E6FFFF938686645E +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE7093077001930500001303F303C8 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7C7810F90 +:102B8000B70508009387C776130700009385C5FF34 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306062B97E6FFFF9386864123 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B7000000930E000093012000639AD00596 +:102C6000B7F0FFFF93D01040930E00809301300027 +:102C70006390D005B7F0FF7F93D04041930EF07F73 +:102C8000930140006396D003B700008093D0404189 +:102C9000930E008093015000639CD00137000080A8 +:102CA000930E0000930160006314D001631A30009A +:102CB00013951100630005001365150073000000F3 +:0C2CC0001305100073000000731000C02A +:102CCC00417373657274696F6E206661696C6564BB +:102CDC003A2061646472203E3D202831554C203CE2 +:102CEC003C203132292026262061646472203C204D +:102CFC003633202A202831554C203C3C20313229B7 +:102D0C000A000000417373657274696F6E2066610E +:102D1C00696C65643A20212870745B315D5B616479 +:102D2C0064722F2831554C203C3C203132295D20D7 +:102D3C0026203078303830292026262063617573A0 +:102D4C0065203D3D203078660A00000041737365B4 +:102D5C007274696F6E206661696C65643A206E6F7F +:102D6C0064650A00417373657274696F6E206661E5 +:102D7C00696C65643A20757365725F6D617070691A +:102D8C006E675B616464722F2831554C203C3C208B +:102D9C003132295D2E61646472203D3D20300A0081 +:102DAC00417373657274696F6E206661696C6564DA +:102DBC003A2070745B315D5B616464722F2831550D +:102DCC004C203C3C203132295D2026203078303498 +:102DDC00300A0000417373657274696F6E2066610E +:102DEC00696C65643A2070745B315D5B616464721C +:102DFC002F2831554C203C3C203132295D20262097 +:102E0C0030783038300A0000417373657274696F22 +:102E1C006E206661696C65643A2074662D3E65703F +:102E2C006320252034203D3D20300A00417373651A +:102E3C007274696F6E206661696C65643A20212238 +:102E4C00696C6C6567616C20696E73747275637400 +:102E5C00696F6E220A000000417373657274696FAA +:102E6C006E206661696C65643A202122756E657806 +:102E7C0070656374656420657863657074696F6EE2 +:102E8C00220A0000417373657274696F6E2066616B +:102E9C00696C65643A202122756E737570706F725F +:102EAC007465642073617470206D6F6465220A0010 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-lw.hex b/benchmarks/riscv_tests/isa/rv32ui-v-lw.hex new file mode 100644 index 00000000..2d093bf6 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-lw.hex @@ -0,0 +1,311 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938545A597F6FFFFC7 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938505A297F6FFFF9386C6AD17F6FFFFCA +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C59F01 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385859A97F6FFFF41 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385859397F6FFFF9386C68C17F6FFFF68 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385058A1306100497F6FFFF1E +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C67A97E6FFFF4B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C66B97E6FFFF9386866A8C +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306866297E6FFFF938686647B +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307B003930500001303F30386 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B727900A26 +:102B8000B705080093878747130700009385C5FFA3 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C64D97E6FFFF9386864141 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B03A70000B70EFF0011 +:102C6000938EFE0F93012000631AD7279710000060 +:102C70009380403903A74000B70E01FF938E0EF0FA +:102C800093013000631CD725971000009380803794 +:102C900003A78000B71EF00F938E0EFF9301400034 +:102CA000631ED723971000009380C03503A7C00090 +:102CB000B7FE0FF0938EFE00930150006310D723F0 +:102CC000971000009380C03403A740FFB70EFF00A9 +:102CD000938EFE0F930160006312D72197100000BE +:102CE0009380003303A780FFB70E01FF938E0EF091 +:102CF000930170006314D71F971000009380403138 +:102D000003A7C0FFB71EF00F938E0EFF9301800044 +:102D10006316D71D971000009380802F03A7000033 +:102D2000B7FE0FF0938EFE00930190006318D71B3F +:102D3000971000009380002D938000FE83A2000274 +:102D4000B70EFF00938EFE0F9301A0006398D21977 +:102D5000971000009380002B9380D0FF83A2700017 +:102D6000B70E01FF938E0EF09301B0006398D21757 +:102D70009301C00013020000971000009380C02848 +:102D800003A7400013030700B71EF00F938E0EFF3A +:102D90006316D3151302120093022000E31E52FCA7 +:102DA0009301D000130200009710000093800026CA +:102DB00003A740001300000013030700B7FE0FF045 +:102DC000938EFE00631CD3111302120093022000A5 +:102DD000E31C52FC9301E000130200009710000076 +:102DE0009380402203A7400013000000130000005E +:102DF00013030700B70E01FF938E0EF06310D30F7D +:102E00001302120093022000E31A52FC9301F00017 +:102E100013020000971000009380001F03A74000DA +:102E2000B71EF00F938E0EFF631AD70B130212001A +:102E300093022000E31052FE9301000113020000F0 +:102E4000971000009380801C1300000003A740002F +:102E5000B7FE0FF0938EFE006312D7091302120023 +:102E600093022000E31E52FC9301100113020000A4 +:102E70009710000093800019130000001300000059 +:102E800003A74000B70E01FF938E0EF06318D7051D +:102E90001302120093022000E31C52FC9712000060 +:102EA0009382421603A1020013012000930E20001A +:102EB000930120016314D1039712000093828214BE +:102EC00003A102001300000013012000930E200054 +:102ED000930130016314D101631A3000139511007E +:102EE0006300050013651500730000001305100052 +:082EF00073000000731000C024 +:102EF800417373657274696F6E206661696C65648D +:102F08003A2061646472203E3D202831554C203CB3 +:102F18003C203132292026262061646472203C201E +:102F28003633202A202831554C203C3C2031322988 +:102F38000A000000417373657274696F6E206661E0 +:102F4800696C65643A20212870745B315D5B61644B +:102F580064722F2831554C203C3C203132295D20A9 +:102F68002620307830383029202626206361757372 +:102F780065203D3D203078660A0000004173736586 +:102F88007274696F6E206661696C65643A206E6F51 +:102F980064650A00417373657274696F6E206661B7 +:102FA800696C65643A20757365725F6D61707069EC +:102FB8006E675B616464722F2831554C203C3C205D +:102FC8003132295D2E61646472203D3D20300A0053 +:102FD800417373657274696F6E206661696C6564AC +:102FE8003A2070745B315D5B616464722F283155DF +:102FF8004C203C3C203132295D202620307830346A +:10300800300A0000417373657274696F6E206661DF +:10301800696C65643A2070745B315D5B61646472ED +:103028002F2831554C203C3C203132295D20262068 +:1030380030783038300A0000417373657274696FF4 +:103048006E206661696C65643A2074662D3E657011 +:103058006320252034203D3D20300A0041737365EC +:103068007274696F6E206661696C65643A2021220A +:10307800696C6C6567616C20696E737472756374D2 +:10308800696F6E220A000000417373657274696F7C +:103098006E206661696C65643A202122756E6578D8 +:1030A80070656374656420657863657074696F6EB4 +:1030B800220A0000417373657274696F6E2066613D +:1030C800696C65643A202122756E737570706F7231 +:1030D8007465642073617470206D6F6465220A00E2 +:10400000FF00FF0000FF00FFF00FF00F0FF00FF0B8 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-or.hex b/benchmarks/riscv_tests/isa/rv32ui-v-or.hex new file mode 100644 index 00000000..f834c73a --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-or.hex @@ -0,0 +1,345 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5C897F6FFFF24 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585C597F6FFFF9386C6AD17F6FFFF27 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545C35D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505BE97F6FFFF9D +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938505B797F6FFFF9386C68C17F6FFFFC4 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585AD1306100497F6FFFF7B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306469E97E6FFFF97 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306468F97E6FFFF9386866AD8 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306068697E6FFFF93868664C7 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307E000930500001303F30359 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7979D00B3 +:102B8000B70508009387E737130700009385C5FF53 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306467197E6FFFF938686419D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B70001FF938000F037110F0F1301F1F05F +:102C600033E72000B70E10FF938EFEF09301200093 +:102C70006312D74BB710F00F938000FF37F1F0F0DD +:102C80001301010F33E72000B70EF1FF938E0EFF03 +:102C9000930130006310D749B700FF009380F00F15 +:102CA00037110F0F1301F1F033E72000B71EFF0FAC +:102CB000938EFEFF93014000631ED745B7F00FF0DF +:102CC0009380F00037F1F0F01301010F33E720009B +:102CD000B7FEFFF0938EFE0F93015000631CD743A5 +:102CE000B70001FF938000F037110F0F1301F1F0CF +:102CF000B3E02000B70E10FF938EFEF0930160004A +:102D0000639AD041B70001FF938000F037110F0F95 +:102D10001301F1F033E12000B70E10FF938EFEF0A7 +:102D2000930170006318D13FB70001FF938000F05A +:102D3000B3E01000B70E01FF938E0EF093018000F8 +:102D4000639AD03D13020000B70001FF938000F0AA +:102D500037110F0F1301F1F033E7200013030700C1 +:102D60001302120093022000E31052FEB70E10FF70 +:102D7000938EFEF093019000631ED339130200007E +:102D8000B710F00F938000FF37F1F0F01301010F3F +:102D900033E72000130000001303070013021200A2 +:102DA00093022000E31E52FCB70EF1FF938E0EFF3C +:102DB0009301A0006310D33713020000B700FF0097 +:102DC0009380F00F37110F0F1301F1F033E720005C +:102DD0001300000013000000130307001302120089 +:102DE00093022000E31C52FCB71EFF0F938EFEFFE0 +:102DF0009301B0006310D33313020000B70001FF4A +:102E0000938000F037110F0F1301F1F033E720002A +:102E10001302120093022000E31252FEB70E10FFBD +:102E2000938EFEF09301C0006316D72F13020000AB +:102E3000B710F00F938000FF37F1F0F01301010F8E +:102E40001300000033E72000130212009302200059 +:102E5000E31052FEB70EF1FF938E0EFF9301D000E8 +:102E6000631AD72B13020000B700FF009380F00F06 +:102E700037110F0F1301F1F01300000013000000D1 +:102E800033E720001302120093022000E31E52FCDD +:102E9000B71EFF0F938EFEFF9301E000631CD72740 +:102EA00013020000B70001FF938000F01300000040 +:102EB00037110F0F1301F1F033E720001302120056 +:102EC00093022000E31052FEB70E10FF938EFEF027 +:102ED0009301F0006310D72513020000B710F00F24 +:102EE000938000FF1300000037F1F0F01301010F91 +:102EF0001300000033E720001302120093022000A9 +:102F0000E31E52FCB70EF1FF938E0EFF93010001FA +:102F10006312D72113020000B700FF009380F00F67 +:102F2000130000001300000037110F0F1301F1F020 +:102F300033E720001302120093022000E31E52FC2C +:102F4000B71EFF0F938EFEFF930110016314D71D70 +:102F50001302000037110F0F1301F1F0B70001FF4A +:102F6000938000F033E72000130212009302200048 +:102F7000E31252FEB70E10FF938EFEF09301200174 +:102F8000631AD7191302000037F1F0F01301010F93 +:102F9000B710F00F938000FF1300000033E720000C +:102FA0001302120093022000E31052FEB70EF1FF4D +:102FB000938E0EFF93013001631ED715130200009C +:102FC00037110F0F1301F1F0B700FF009380F00FDE +:102FD000130000001300000033E72000130212006A +:102FE00093022000E31E52FCB71EFF0F938EFEFFDC +:102FF000930140016310D7131302000037110F0F24 +:103000001301F1F013000000B70001FF938000F0FE +:1030100033E720001302120093022000E31052FE57 +:10302000B70E10FF938EFEF0930150016314D70F7B +:103030001302000037F1F0F01301010F130000003C +:10304000B710F00F938000FF1300000033E720005B +:103050001302120093022000E31E52FCB70EF1FF90 +:10306000938E0EFF930160016316D70B13020000CD +:1030700037110F0F1301F1F01300000013000000CF +:10308000B700FF009380F00F33E720001302120017 +:1030900093022000E31E52FCB71EFF0F938EFEFF2B +:1030A000930170016318D707B70001FF938000F008 +:1030B00033611000B70E01FF938E0EF09301800173 +:1030C000631AD105B700FF009380F00F33E10000D1 +:1030D000B70EFF00938EFE0F93019001631CD10386 +:1030E000B3600000930E00009301A0016394D0032D +:1030F000B7101111938010113721222213012122C0 +:1031000033E02000930E00009301B0016314D0015E +:10311000631A300013951100630005001365150054 +:10312000730000001305100073000000731000C04E +:10313000417373657274696F6E206661696C656452 +:103140003A2061646472203E3D202831554C203C79 +:103150003C203132292026262061646472203C20E4 +:103160003633202A202831554C203C3C203132294E +:103170000A000000417373657274696F6E206661A6 +:10318000696C65643A20212870745B315D5B616411 +:1031900064722F2831554C203C3C203132295D206F +:1031A0002620307830383029202626206361757338 +:1031B00065203D3D203078660A000000417373654C +:1031C0007274696F6E206661696C65643A206E6F17 +:1031D00064650A00417373657274696F6E2066617D +:1031E000696C65643A20757365725F6D61707069B2 +:1031F0006E675B616464722F2831554C203C3C2023 +:103200003132295D2E61646472203D3D20300A0018 +:10321000417373657274696F6E206661696C656471 +:103220003A2070745B315D5B616464722F283155A4 +:103230004C203C3C203132295D202620307830342F +:10324000300A0000417373657274696F6E206661A5 +:10325000696C65643A2070745B315D5B61646472B3 +:103260002F2831554C203C3C203132295D2026202E +:1032700030783038300A0000417373657274696FBA +:103280006E206661696C65643A2074662D3E6570D7 +:103290006320252034203D3D20300A0041737365B2 +:1032A0007274696F6E206661696C65643A202122D0 +:1032B000696C6C6567616C20696E73747275637498 +:1032C000696F6E220A000000417373657274696F42 +:1032D0006E206661696C65643A202122756E65789E +:1032E00070656374656420657863657074696F6E7A +:1032F000220A0000417373657274696F6E20666103 +:10330000696C65643A202122756E737570706F72F6 +:103310007465642073617470206D6F6465220A00A7 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-ori.hex b/benchmarks/riscv_tests/isa/rv32ui-v-ori.hex new file mode 100644 index 00000000..99167b53 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-ori.hex @@ -0,0 +1,299 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385459A97F6FFFFD2 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385059797F6FFFF9386C6AD17F6FFFFD5 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C5940C +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385858F97F6FFFF4C +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385858897F6FFFF9386C68C17F6FFFF73 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385057F1306100497F6FFFF39 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C66F97E6FFFF56 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C66097E6FFFF9386866A97 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306865797E6FFFF9386866486 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307F002930500001303F30347 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B767CE03AF +:102B8000B70508009387A79E130700009385C5FF2C +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C64297E6FFFF938686414C +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B70001FF938000F013E7F0F0930EF0F05F +:102C6000930120006314D71DB710F00F938000FF6D +:102C700013E7000FB71EF00F938E0EFF9301300085 +:102C80006316D71BB700FF009380F00F13E7F070B7 +:102C9000B70EFF00938EFE7F930140006318D71993 +:102CA000B7F00FF09380F00013E7000FB7FE0FF0BE +:102CB000938EFE0F93015000631AD717B70001FFE0 +:102CC000938000F093E0000FB70E01FF938E0EFF8C +:102CD00093016000639CD01513020000B710F00F41 +:102CE000938000FF13E7000F130307001302120085 +:102CF00093022000E31452FEB71EF00F938E0EFFD6 +:102D0000930170006314D31313020000B700FF0097 +:102D10009380F00F13E7F070130000001303070017 +:102D20001302120093022000E31252FEB70EFF00BE +:102D3000938EFE7F93018000631AD30F130200006D +:102D4000B7F00FF09380F00013E7000F13000000BE +:102D50001300000013030700130212009302200067 +:102D6000E31052FEB7FE0FF0938EFE0F930190001A +:102D7000631ED30B13020000B710F00F938000FF07 +:102D800013E7000F1302120093022000E31652FE15 +:102D9000B71EF00F938E0EFF9301A0006318D709A2 +:102DA00013020000B700FF009380F00F1300000033 +:102DB00013E7F0F01302120093022000E31452FE16 +:102DC000930EF0FF9301B0006312D70713020000C7 +:102DD000B7F00FF09380F000130000001300000024 +:102DE00013E7000F1302120093022000E31252FEB9 +:102DF000B7FE0FF0938EFE0F9301C0006318D70348 +:102E00009360000F930E000F9301D0006390D003E6 +:102E1000B700FF009380F00F13E0F070930E0000F6 +:102E20009301E0006314D001631A30001395110080 +:102E30006300050013651500730000001305100002 +:082E400073000000731000C0D4 +:102E4800417373657274696F6E206661696C65643D +:102E58003A2061646472203E3D202831554C203C64 +:102E68003C203132292026262061646472203C20CF +:102E78003633202A202831554C203C3C2031322939 +:102E88000A000000417373657274696F6E20666191 +:102E9800696C65643A20212870745B315D5B6164FC +:102EA80064722F2831554C203C3C203132295D205A +:102EB8002620307830383029202626206361757323 +:102EC80065203D3D203078660A0000004173736537 +:102ED8007274696F6E206661696C65643A206E6F02 +:102EE80064650A00417373657274696F6E20666168 +:102EF800696C65643A20757365725F6D617070699D +:102F08006E675B616464722F2831554C203C3C200D +:102F18003132295D2E61646472203D3D20300A0003 +:102F2800417373657274696F6E206661696C65645C +:102F38003A2070745B315D5B616464722F2831558F +:102F48004C203C3C203132295D202620307830341A +:102F5800300A0000417373657274696F6E20666190 +:102F6800696C65643A2070745B315D5B616464729E +:102F78002F2831554C203C3C203132295D20262019 +:102F880030783038300A0000417373657274696FA5 +:102F98006E206661696C65643A2074662D3E6570C2 +:102FA8006320252034203D3D20300A00417373659D +:102FB8007274696F6E206661696C65643A202122BB +:102FC800696C6C6567616C20696E73747275637483 +:102FD800696F6E220A000000417373657274696F2D +:102FE8006E206661696C65643A202122756E657889 +:102FF80070656374656420657863657074696F6E65 +:10300800220A0000417373657274696F6E206661ED +:10301800696C65643A202122756E737570706F72E1 +:103028007465642073617470206D6F6465220A0092 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sb.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sb.hex new file mode 100644 index 00000000..6461f20e --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sb.hex @@ -0,0 +1,333 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A00013051004971500009385C5BB97F6FFFF31 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585B897F6FFFF9386C6AD17F6FFFF34 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545B66A +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505B197F6FFFFAA +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938505AA97F6FFFF9386C68C17F6FFFFD1 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585A01306100497F6FFFF88 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306469197E6FFFFA4 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306468297E6FFFF9386866AE5 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306067997E6FFFF93868664E4 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE709307F002930500001303F30347 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7A7250912 +:102B8000B70508009387E70F130700009385C5FF7B +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306466497E6FFFF93868641AA +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B1301A0FA238020000E +:102C600003870000930EA0FA93012000631CD73D58 +:102C7000971000009380003913010000A38020000A +:102C800003871000930E000093013000631CD73BB4 +:102C9000971000009380003737F1FFFF130101FA0E +:102CA0002381200003972000B7FEFFFF938E0EFACA +:102CB000930140006318D739971000009380803447 +:102CC0001301A000A381200003873000930EA00011 +:102CD000930150006318D737971000009380F032AB +:102CE0001301A0FAA38E20FE0387D0FF930EA0FA53 +:102CF000930160006318D735971000009380F0307F +:102D000013010000238F20FE0387E0FF930E0000D5 +:102D1000930170006318D733971000009380F02E52 +:102D2000130100FAA38F20FE0387F0FF930E00FA31 +:102D3000930180006318D731971000009380F02C26 +:102D40001301A0002380200003870000930EA00041 +:102D5000930190006318D72F971000009380002BE9 +:102D60003751341213018167138200FE23002202BF +:102D700083820000930E80079301A0006394D22DFC +:102D800097100000938080283731000013018109DB +:102D90009380A0FFA38320001712000013021227C4 +:102DA00083020200930E80F99301B000639CD22944 +:102DB0009301C000130200009300D0FD1711000022 +:102DC000130141242300110003070100930ED0FDDD +:102DD000631AD7271302120093022000E31E52FC4D +:102DE0009301D000130200009300D0FC17110000E3 +:102DF0001301412113000000A3001100030711007B +:102E0000930ED0FC6310D72513021200930220000A +:102E1000E31C52FC9301E000130200009300C0FC8D +:102E2000171100001301011E130000001300000021 +:102E30002301110003072100930EC0FC6314D72166 +:102E40001302120093022000E31A52FC9301F000D7 +:102E5000130200009300C0FB1300000017110000D4 +:102E60001301411AA301110003073100930EC0FBA7 +:102E7000631AD71D1302120093022000E31C52FCB8 +:102E800093010001130200009300B0FB1300000047 +:102E90001711000013010117130000002302110095 +:102EA00003074100930EB0FB631ED71913021200F3 +:102EB00093022000E31A52FC930110011302000058 +:102EC0009300B0FA13000000130000001711000077 +:102ED00013014113A302110003075100930EB0FA2E +:102EE0006312D7171302120093022000E31A52FC58 +:102EF000930120011302000017110000130181103B +:102F0000930030032300110003070100930E3003E8 +:102F1000631AD7131302120093022000E31E52FC1F +:102F20009301300113020000171100001301810DFD +:102F30009300300213000000A300110003071100EA +:102F4000930E30026310D711130212009302200077 +:102F5000E31C52FC93014001130200001711000012 +:102F60001301410A93002002130000001300000027 +:102F70002301110003072100930E20026314D70DD3 +:102F80001302120093022000E31A52FC9301500135 +:102F900013020000171100001301C1061300000006 +:102FA00093002001A301110003073100930E2001BB +:102FB000631AD7091302120093022000E31C52FC8B +:102FC0009301600113020000171100001301810337 +:102FD00013000000930010011300000023021100F1 +:102FE00003074100930E1001631ED7051302120060 +:102FF00093022000E31A52FC9301700113020000B7 +:10300000171100001301010013000000130000005D +:1030100093001000A302110003075100930E10004B +:103020006312D7031302120093022000E31A52FC2A +:103030001305F00E971500009385C5FCA381A5002C +:10304000631A300013951100630005001365150025 +:10305000730000001305100073000000731000C01F +:10306000417373657274696F6E206661696C656423 +:103070003A2061646472203E3D202831554C203C4A +:103080003C203132292026262061646472203C20B5 +:103090003633202A202831554C203C3C203132291F +:1030A0000A000000417373657274696F6E20666177 +:1030B000696C65643A20212870745B315D5B6164E2 +:1030C00064722F2831554C203C3C203132295D2040 +:1030D0002620307830383029202626206361757309 +:1030E00065203D3D203078660A000000417373651D +:1030F0007274696F6E206661696C65643A206E6FE8 +:1031000064650A00417373657274696F6E2066614D +:10311000696C65643A20757365725F6D6170706982 +:103120006E675B616464722F2831554C203C3C20F3 +:103130003132295D2E61646472203D3D20300A00E9 +:10314000417373657274696F6E206661696C656442 +:103150003A2070745B315D5B616464722F28315575 +:103160004C203C3C203132295D2026203078303400 +:10317000300A0000417373657274696F6E20666176 +:10318000696C65643A2070745B315D5B6164647284 +:103190002F2831554C203C3C203132295D202620FF +:1031A00030783038300A0000417373657274696F8B +:1031B0006E206661696C65643A2074662D3E6570A8 +:1031C0006320252034203D3D20300A004173736583 +:1031D0007274696F6E206661696C65643A202122A1 +:1031E000696C6C6567616C20696E73747275637469 +:1031F000696F6E220A000000417373657274696F13 +:103200006E206661696C65643A202122756E65786E +:1032100070656374656420657863657074696F6E4A +:10322000220A0000417373657274696F6E206661D3 +:10323000696C65643A202122756E737570706F72C7 +:103240007465642073617470206D6F6465220A0078 +:0A400000EFEFEFEFEFEFEFEFEFEF60 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sh.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sh.hex new file mode 100644 index 00000000..9ea0c328 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sh.hex @@ -0,0 +1,343 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A0001305100497150000938505C497F6FFFFE8 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C097F6FFFF9386C6AD17F6FFFFEC +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585BE22 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545B997F6FFFF62 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B297F6FFFF9386C68C17F6FFFF89 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5A81306100497F6FFFF40 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869997E6FFFF5C +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868A97E6FFFF9386866A9D +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468197E6FFFF938686648C +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093072002930500001303F30317 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7F79A0E48 +:102B8000B70508009387F736130700009385C5FF44 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306866C97E6FFFF9386864162 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B1301A00A23902000EE +:102C600003970000930EA00A93012000631ED7452E +:102C7000971000009380003937B1FFFF130101A0C6 +:102C80002391200003972000B7BEFFFF938E0EA074 +:102C900093013000631AD743971000009380803669 +:102CA0003711EFBE130101AA2392200003A74000B1 +:102CB000B71EEFBE938E0EAA930140006316D74154 +:102CC000971000009380003437A1FFFF1301A1008B +:102CD0002393200003976000B7AEFFFF938EAE00F2 +:102CE000930150006312D73F971000009380603229 +:102CF0001301A00A239D20FE0397A0FF930EA00AB4 +:102D0000930160006312D73D9710000093806030FC +:102D100037B1FFFF130101A0239E20FE0397C0FFE0 +:102D2000B7BEFFFF938E0EA093017000631ED739CC +:102D3000971000009380E02D37110000130101AAC5 +:102D4000239F20FE0397E0FFB71E0000938E0EAA7C +:102D500093018000631AD737971000009380602B8F +:102D600037A1FFFF1301A10023902000039700006B +:102D7000B7AEFFFF938EAE00930190006316D73578 +:102D80009710000093800029375134121301816796 +:102D9000138200FE2310220283920000B75E00001F +:102DA000938E8E679301A0006390D233971000003A +:102DB0009380402637310000130181099380B0FFD2 +:102DC000A3932000171200001302E22483120200D2 +:102DD000B73E0000938E8E099301B0006396D22F08 +:102DE0009301C00013020000B7D0FFFF9380D0CD45 +:102DF0001711000013010121231011000317010016 +:102E0000B7DEFFFF938EDECD6310D72D13021200C5 +:102E100093022000E31A52FC9301D0001302000039 +:102E2000B7C0FFFF9380D0CC171100001301811DA4 +:102E3000130000002311110003172100B7CEFFFF7C +:102E4000938EDECC6312D729130212009302200066 +:102E5000E31852FC9301E00013020000B7C0FFFF2B +:102E60009380C0BC171100001301C11913000000AA +:102E7000130000002312110003174100B7CEFFFF1B +:102E8000938ECEBC6312D72513021200930220004A +:102E9000E31652FC9301F00013020000B7B0FFFFED +:102EA0009380C0BB130000001711000013018115AF +:102EB0002313110003176100B7BEFFFF938ECEBB33 +:102EC0006314D7211302120093022000E31852FC6E +:102ED0009301000113020000B7B0FFFF9380B0AB75 +:102EE00013000000171100001301C11113000000AE +:102EF0002314110003178100B7BEFFFF938EBEABF2 +:102F00006314D71D1302120093022000E31652FC33 +:102F10009301100113020000B7E0FFFF9380B0AAF5 +:102F20001300000013000000171100001301810DB1 +:102F3000231511000317A100B7EEFFFF938EBEAA61 +:102F40006314D7191302120093022000E31652FCF7 +:102F50009301200113020000171100001301810AE0 +:102F6000B7200000938030232310110003170100C5 +:102F7000B72E0000938E3E236318D715130212005C +:102F800093022000E31A52FC930130011302000067 +:102F90001711000013010107B710000093803022C1 +:102FA000130000002311110003172100B71E0000B9 +:102FB000938E3E22631AD71113021200930220004F +:102FC000E31852FC930140011302000017110000A6 +:102FD00013014103B710000093802012130000007A +:102FE000130000002312110003174100B71E000058 +:102FF000938E2E12631AD70D130212009302200033 +:10300000E31652FC93015001130200001711000057 +:10301000130141FF1300000093002011231311003E +:1030200003176100930E20116310D70B13021200D7 +:1030300093022000E31C52FC930160011302000084 +:1030400017110000130101FC130000009300100190 +:10305000130000002314110003178100930E1001C8 +:103060006314D7071302120093022000E31A52FCE4 +:10307000930170011302000017110000130181F881 +:103080001300000013000000B73000009380100010 +:10309000231511000317A100B73E0000938E1E00F8 +:1030A0006314D7031302120093022000E31652FCAC +:1030B00037C500001305F5EE97150000938585F4DC +:1030C0002393A500631A30001395110063000500D7 +:1030D0001365150073000000130510007300000055 +:0430E000731000C0A9 +:1030E400417373657274696F6E206661696C65649F +:1030F4003A2061646472203E3D202831554C203CC6 +:103104003C203132292026262061646472203C2030 +:103114003633202A202831554C203C3C203132299A +:103124000A000000417373657274696F6E206661F2 +:10313400696C65643A20212870745B315D5B61645D +:1031440064722F2831554C203C3C203132295D20BB +:103154002620307830383029202626206361757384 +:1031640065203D3D203078660A0000004173736598 +:103174007274696F6E206661696C65643A206E6F63 +:1031840064650A00417373657274696F6E206661C9 +:10319400696C65643A20757365725F6D61707069FE +:1031A4006E675B616464722F2831554C203C3C206F +:1031B4003132295D2E61646472203D3D20300A0065 +:1031C400417373657274696F6E206661696C6564BE +:1031D4003A2070745B315D5B616464722F283155F1 +:1031E4004C203C3C203132295D202620307830347C +:1031F400300A0000417373657274696F6E206661F2 +:10320400696C65643A2070745B315D5B61646472FF +:103214002F2831554C203C3C203132295D2026207A +:1032240030783038300A0000417373657274696F06 +:103234006E206661696C65643A2074662D3E657023 +:103244006320252034203D3D20300A0041737365FE +:103254007274696F6E206661696C65643A2021221C +:10326400696C6C6567616C20696E737472756374E4 +:10327400696F6E220A000000417373657274696F8E +:103284006E206661696C65643A202122756E6578EA +:1032940070656374656420657863657074696F6EC6 +:1032A400220A0000417373657274696F6E2066614F +:1032B400696C65643A202122756E737570706F7243 +:1032C4007465642073617470206D6F6465220A00F4 +:10400000EFBEEFBEEFBEEFBEEFBEEFBEEFBEEFBE48 +:04401000EFBEEFBE52 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-simple.hex b/benchmarks/riscv_tests/isa/rv32ui-v-simple.hex new file mode 100644 index 00000000..3e062d91 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-simple.hex @@ -0,0 +1,268 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004970500009385857B97F6FFFFC1 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD113051004970500000A +:102520009385457897F6FFFF9386C6AD17F6FFFFB4 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF8130510049705000093850576FA +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57097F6FFFF3B +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C56997F6FFFF9386C68C17F6FFFF52 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097050000938545601306100497F6FFFF18 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306065197E6FFFF34 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306064297E6FFFF9386866A75 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C63897E6FFFF9386866465 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE709307C003930500001303F30376 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B737790F28 +:102B8000B70508009387770F130700009385C5FFEB +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306062497E6FFFF938686412A +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:0C2C50001305100073000000731000C09A +:102C5C00417373657274696F6E206661696C65642B +:102C6C003A2061646472203E3D202831554C203C52 +:102C7C003C203132292026262061646472203C20BD +:102C8C003633202A202831554C203C3C2031322927 +:102C9C000A000000417373657274696F6E2066617F +:102CAC00696C65643A20212870745B315D5B6164EA +:102CBC0064722F2831554C203C3C203132295D2048 +:102CCC002620307830383029202626206361757311 +:102CDC0065203D3D203078660A0000004173736525 +:102CEC007274696F6E206661696C65643A206E6FF0 +:102CFC0064650A00417373657274696F6E20666156 +:102D0C00696C65643A20757365725F6D617070698A +:102D1C006E675B616464722F2831554C203C3C20FB +:102D2C003132295D2E61646472203D3D20300A00F1 +:102D3C00417373657274696F6E206661696C65644A +:102D4C003A2070745B315D5B616464722F2831557D +:102D5C004C203C3C203132295D2026203078303408 +:102D6C00300A0000417373657274696F6E2066617E +:102D7C00696C65643A2070745B315D5B616464728C +:102D8C002F2831554C203C3C203132295D20262007 +:102D9C0030783038300A0000417373657274696F93 +:102DAC006E206661696C65643A2074662D3E6570B0 +:102DBC006320252034203D3D20300A00417373658B +:102DCC007274696F6E206661696C65643A202122A9 +:102DDC00696C6C6567616C20696E73747275637471 +:102DEC00696F6E220A000000417373657274696F1B +:102DFC006E206661696C65643A202122756E657877 +:102E0C0070656374656420657863657074696F6E52 +:102E1C00220A0000417373657274696F6E206661DB +:102E2C00696C65643A202122756E737570706F72CF +:102E3C007465642073617470206D6F6465220A0080 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sll.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sll.hex new file mode 100644 index 00000000..05a2d4d1 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sll.hex @@ -0,0 +1,354 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585D197F6FFFF5B +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545CE97F6FFFF9386C6AD17F6FFFF5E +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505CC94 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C5C697F6FFFFD5 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C5BF97F6FFFF9386C68C17F6FFFFFC +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545B61306100497F6FFFFB2 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E0009305100417160000130606A797E6FFFFCE +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306069897E6FFFF9386866A0F +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306C68E97E6FFFF93868664FF +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093071001930500001303F30328 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B757A202EC +:102B8000B7050800938777E4130700009385C5FF16 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306067A97E6FFFF93868641D4 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930010001301000033972000930E100022 +:102C600093012000631ED75393001000130110003E +:102C700033972000930E2000930130006312D75346 +:102C8000930010001301700033972000930E00088A +:102C9000930140006316D751930010001301E00028 +:102CA00033972000B74E000093015000631AD74FAE +:102CB000930010001301F00133972000B70E00803D +:102CC00093016000631ED74D9300F0FF13010000D5 +:102CD00033972000930EF0FF930170006312D74DDD +:102CE0009300F0FF1301100033972000930EE0FFD4 +:102CF000930180006316D74B9300F0FF130170001F +:102D000033972000930E00F893019000631AD7497F +:102D10009300F0FF1301E00033972000B7CEFFFFD0 +:102D20009301A000631ED7479300F0FF1301F00149 +:102D300033972000B70E00809301B0006312D7478D +:102D4000B720212193801012130100003397200037 +:102D5000B72E2121938E1E129301C0006312D74516 +:102D6000B720212193801012130110003397200007 +:102D7000B74E4242938E2E249301D0006312D74364 +:102D8000B720212193801012130170003397200087 +:102D9000B79E9090938E0E089301E0006312D74186 +:102DA000B7202121938010121301E00033972000F7 +:102DB000B74E48489301F0006314D73FB720212154 +:102DC000938010121301F00133972000B70E00809A +:102DD000930100016316D73DB72021219380101283 +:102DE000130100FC33972000B72E2121938E1E1271 +:102DF000930110016316D73BB72021219380101255 +:102E0000130110FC33972000B74E4242938E2E24BC +:102E1000930120016316D739B72021219380101226 +:102E2000130170FC33972000B79E9090938E0E088C +:102E3000930130016316D737B720212193801012F8 +:102E40001301E0FC33972000B74E4848930140013E +:102E50006318D7359300100013017000B390200061 +:102E6000930E000893016001639CD033930010001F +:102E70001301E00033912000B74E00009301700170 +:102E80006310D13393003000B3901000930E800193 +:102E9000930180016396D03113020000930010006B +:102EA0001301700033972000130307001302120070 +:102EB00093022000E31452FE930E00089301900148 +:102EC0006310D32F13020000930010001301E000E1 +:102ED00033972000130000001303070013021200B1 +:102EE00093022000E31252FEB74E00009301A001AE +:102EF0006318D32B13020000930010001301F0019C +:102F00003397200013000000130000001303070094 +:102F10001302120093022000E31052FEB70E00804D +:102F20009301B001631ED327130200009300100029 +:102F30001301700033972000130212009302200047 +:102F4000E31652FE930E00089301C001631AD725C1 +:102F500013020000930010001301E00013000000B2 +:102F6000339720001302120093022000E31452FE54 +:102F7000B74E00009301D0016314D7231302000061 +:102F8000930010001301F001130000001300000073 +:102F9000339720001302120093022000E31252FE26 +:102FA000B70E00809301E001631CD71F13020000DD +:102FB00093001000130000001301700033972000ED +:102FC0001302120093022000E31452FE930E000835 +:102FD0009301F0016316D71D130200009300100047 +:102FE000130000001301E0001300000033972000DD +:102FF0001302120093022000E31252FEB74E0000AB +:1030000093010002631ED719130200009300100001 +:1030100013000000130000001301F001339720009B +:103020001302120093022000E31252FEB70E00803A +:10303000930110026316D7171302000013017000EA +:103040009300100033972000130212009302200017 +:10305000E31652FE930E0008930120026312D71567 +:10306000130200001301E0009300100013000000A1 +:10307000339720001302120093022000E31452FE43 +:10308000B74E000093013002631CD71113020000F9 +:103090001301F00193001000130000001300000062 +:1030A000339720001302120093022000E31252FE15 +:1030B000B70E0080930140026314D70F1302000083 +:1030C00013017000130000009300100033972000DC +:1030D0001302120093022000E31452FE930E000824 +:1030E00093015002631ED70B130200001301E0008E +:1030F000130000009300100013000000339720001D +:103100001302120093022000E31252FEB74E000099 +:10311000930160026316D709130200001301F00146 +:1031200013000000130000009300100033972000EC +:103130001302120093022000E31252FEB70E008029 +:1031400093017002631ED7059300F0003311100045 +:10315000930E0000930180026314D10593000002D6 +:1031600033910000930E000293019002631AD10381 +:10317000B3100000930E00009301A0026392D003ED +:1031800093000040371100001301018033902000AC +:10319000930E00009301B0026314D001631A300053 +:1031A00013951100630005001365150073000000FE +:0C31B0001305100073000000731000C035 +:1031BC00417373657274696F6E206661696C6564C6 +:1031CC003A2061646472203E3D202831554C203CED +:1031DC003C203132292026262061646472203C2058 +:1031EC003633202A202831554C203C3C20313229C2 +:1031FC000A000000417373657274696F6E2066611A +:10320C00696C65643A20212870745B315D5B616484 +:10321C0064722F2831554C203C3C203132295D20E2 +:10322C0026203078303830292026262063617573AB +:10323C0065203D3D203078660A00000041737365BF +:10324C007274696F6E206661696C65643A206E6F8A +:10325C0064650A00417373657274696F6E206661F0 +:10326C00696C65643A20757365725F6D6170706925 +:10327C006E675B616464722F2831554C203C3C2096 +:10328C003132295D2E61646472203D3D20300A008C +:10329C00417373657274696F6E206661696C6564E5 +:1032AC003A2070745B315D5B616464722F28315518 +:1032BC004C203C3C203132295D20262030783034A3 +:1032CC00300A0000417373657274696F6E20666119 +:1032DC00696C65643A2070745B315D5B6164647227 +:1032EC002F2831554C203C3C203132295D202620A2 +:1032FC0030783038300A0000417373657274696F2E +:10330C006E206661696C65643A2074662D3E65704A +:10331C006320252034203D3D20300A004173736525 +:10332C007274696F6E206661696C65643A20212243 +:10333C00696C6C6567616C20696E7374727563740B +:10334C00696F6E220A000000417373657274696FB5 +:10335C006E206661696C65643A202122756E657811 +:10336C0070656374656420657863657074696F6EED +:10337C00220A0000417373657274696F6E20666176 +:10338C00696C65643A202122756E737570706F726A +:10339C007465642073617470206D6F6465220A001B +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-slli.hex b/benchmarks/riscv_tests/isa/rv32ui-v-slli.hex new file mode 100644 index 00000000..ae6c4cf0 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-slli.hex @@ -0,0 +1,309 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5A497F6FFFF48 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585A197F6FFFF9386C6AD17F6FFFF4B +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385459F81 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385059A97F6FFFFC1 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385059397F6FFFF9386C68C17F6FFFFE8 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585891306100497F6FFFF9F +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306467A97E6FFFFCB +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306466B97E6FFFF9386866A0C +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306066297E6FFFF93868664FB +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307E000930500001303F30359 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B7DF0F42 +:102B8000B705080093878747130700009385C5FFA3 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306464D97E6FFFF93868641C1 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50009300100013970000930E100093012000C2 +:102C6000631AD7279300100013971000930E2000CB +:102C7000930130006310D727930010001397700062 +:102C8000930E0008930140006316D72593001000AF +:102C90001397E000B74E000093015000631CD72348 +:102CA000930010001397F001B70E008093016000AD +:102CB0006312D7239300F0FF13970000930EF0FFE9 +:102CC000930170006318D7219300F0FF1397100051 +:102CD000930EE0FF93018000631ED71F9300F0FF67 +:102CE00013977000930E00F8930190006314D71FA0 +:102CF0009300F0FF1397E000B7CEFFFF9301A00011 +:102D0000631AD71D9300F0FF1397F001B70E0080F0 +:102D10009301B0006310D71DB720212193801012BA +:102D200013970000B72E2121938E1E129301C0002D +:102D30006312D71BB7202121938010121397100024 +:102D4000B74E4242938E2E249301D0006314D719BC +:102D5000B72021219380101213977000B79E909096 +:102D6000938E0E089301E0006316D717B720212138 +:102D7000938010121397E000B74E48489301F0007B +:102D8000631AD715B7202121938010121397F001F1 +:102D9000B70E008093010001631ED713930010004B +:102DA00093907000930E0008930110016394D01368 +:102DB0001302000093001000139770001303070024 +:102DC0001302120093022000E31652FE930E000835 +:102DD000930120016310D31113020000930010002F +:102DE0001397E00013000000130307001302120002 +:102DF00093022000E31452FEB74E0000930130010D +:102E0000631AD30D13020000930010001397F00112 +:102E10001300000013000000130307001302120048 +:102E200093022000E31252FEB70E0080930140018E +:102E30006312D30B1302000093001000139770006D +:102E40001302120093022000E31852FE930E0008B2 +:102E5000930150016310D709130200009300100082 +:102E6000130000001397E0001302120093022000E9 +:102E7000E31652FEB74E000093016001631CD705B4 +:102E80001302000093001000130000001300000064 +:102E90001397F0011302120093022000E31452FE74 +:102EA000B70E0080930170016316D7039310F001F1 +:102EB000930E000093018001639ED00193001002E5 +:102EC00013904001930E0000930190016314D00110 +:102ED000631A300013951100630005001365150097 +:102EE000730000001305100073000000731000C091 +:102EF000417373657274696F6E206661696C656495 +:102F00003A2061646472203E3D202831554C203CBB +:102F10003C203132292026262061646472203C2026 +:102F20003633202A202831554C203C3C2031322990 +:102F30000A000000417373657274696F6E206661E8 +:102F4000696C65643A20212870745B315D5B616453 +:102F500064722F2831554C203C3C203132295D20B1 +:102F6000262030783038302920262620636175737A +:102F700065203D3D203078660A000000417373658E +:102F80007274696F6E206661696C65643A206E6F59 +:102F900064650A00417373657274696F6E206661BF +:102FA000696C65643A20757365725F6D61707069F4 +:102FB0006E675B616464722F2831554C203C3C2065 +:102FC0003132295D2E61646472203D3D20300A005B +:102FD000417373657274696F6E206661696C6564B4 +:102FE0003A2070745B315D5B616464722F283155E7 +:102FF0004C203C3C203132295D2026203078303472 +:10300000300A0000417373657274696F6E206661E7 +:10301000696C65643A2070745B315D5B61646472F5 +:103020002F2831554C203C3C203132295D20262070 +:1030300030783038300A0000417373657274696FFC +:103040006E206661696C65643A2074662D3E657019 +:103050006320252034203D3D20300A0041737365F4 +:103060007274696F6E206661696C65643A20212212 +:10307000696C6C6567616C20696E737472756374DA +:10308000696F6E220A000000417373657274696F84 +:103090006E206661696C65643A202122756E6578E0 +:1030A00070656374656420657863657074696F6EBC +:1030B000220A0000417373657274696F6E20666145 +:1030C000696C65643A202122756E737570706F7239 +:1030D0007465642073617470206D6F6465220A00EA +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-slt.hex b/benchmarks/riscv_tests/isa/rv32ui-v-slt.hex new file mode 100644 index 00000000..4f2df2f9 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-slt.hex @@ -0,0 +1,346 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505C997F6FFFFE3 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C597F6FFFF9386C6AD17F6FFFFE7 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585C31D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545BE97F6FFFF5D +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B797F6FFFF9386C68C17F6FFFF84 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5AD1306100497F6FFFF3B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869E97E6FFFF57 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868F97E6FFFF9386866A98 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468697E6FFFF9386866487 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093079000930500001303F303A9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7A7440EEE +:102B8000B705080093874729130700009385C5FF01 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306867197E6FFFF938686415D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930000001301000033A72000930E000032 +:102C600093012000631AD74B93001000130110004A +:102C700033A72000930E000093013000631ED74954 +:102C8000930030001301700033A72000930E100052 +:102C9000930140006312D749930070001301300084 +:102CA00033A72000930E0000930150006316D7470E +:102CB000930000003781FFFF33A72000930E000030 +:102CC00093016000631AD745B7000080130100002C +:102CD00033A72000930E100093017000631ED743AA +:102CE000B70000803781FFFF33A72000930E10004C +:102CF000930180006312D7439300000037810000E6 +:102D00001301F1FF33A72000930E100093019000F0 +:102D10006314D741B70000809380F0FF13010000D7 +:102D200033A72000930E00009301A0006316D73F45 +:102D3000B70000809380F0FF378100001301F1FF9E +:102D400033A72000930E00009301B0006316D73D17 +:102D5000B7000080378100001301F1FF33A7200086 +:102D6000930E10009301C0006318D73BB70000809A +:102D70009380F0FF3781FFFF33A72000930E000000 +:102D80009301D000631AD739930000001301F0FFBC +:102D900033A72000930E00009301E000631ED73795 +:102DA0009300F0FF1301100033A72000930E1000D2 +:102DB0009301F0006312D7379300F0FF1301F0FF87 +:102DC00033A72000930E0000930100016316D7354E +:102DD0009300E0001301D000B3A02000930E000088 +:102DE00093011001639AD0339300B0001301D00017 +:102DF00033A12000930E100093012001631ED131F6 +:102E00009300D000B3A01000930E00009301300196 +:102E10006394D031130200009300B0001301D0007E +:102E200033A72000130307001302120093022000AF +:102E3000E31452FE930E100093014001631ED32D44 +:102E4000130200009300E0001301D00033A720001C +:102E50001300000013030700130212009302200066 +:102E6000E31252FE930E0000930150016316D32B20 +:102E7000130200009300C0001301D00033A720000C +:102E800013000000130000001303070013021200D8 +:102E900093022000E31052FE930E10009301600194 +:102EA000631CD327130200009300E0001301D0003D +:102EB00033A720001302120093022000E31652FEF3 +:102EC000930E0000930170016318D72513020000D0 +:102ED0009300B0001301D0001300000033A72000BE +:102EE0001302120093022000E31452FE930E10000E +:102EF000930180016312D723130200009300F000B6 +:102F00001301D000130000001300000033A72000BD +:102F10001302120093022000E31252FE930E0000EF +:102F200093019001631AD71F130200009300A000C1 +:102F3000130000001301D00033A720001302120079 +:102F400093022000E31452FE930E10009301A0019F +:102F50006314D71D1302000093000001130000004A +:102F60001301D0001300000033A720001302120049 +:102F700093022000E31252FE930E00009301B00171 +:102F8000631CD71913020000930090001300000087 +:102F9000130000001301D00033A720001302120019 +:102FA00093022000E31252FE930E10009301C00121 +:102FB0006314D717130200001301D000930010010F +:102FC00033A720001302120093022000E31652FEE2 +:102FD000930E00009301D0016310D7151302000077 +:102FE0001301D000930080001300000033A72000DD +:102FF0001302120093022000E31452FE930E1000FD +:103000009301E001631AD711130200001301D000ED +:1030100093002001130000001300000033A72000DC +:103020001302120093022000E31252FE930E0000DE +:103030009301F0016312D70F130200001301D000B7 +:10304000130000009300700033A720001302120049 +:1030500093022000E31452FE930E1000930100022D +:10306000631CD70B130200001301D00013000000F3 +:10307000930030011300000033A720001302120058 +:1030800093022000E31252FE930E000093011002FF +:103090006314D709130200001301D00013000000CD +:1030A000130000009300600033A7200013021200F9 +:1030B00093022000E31252FE930E100093012002AF +:1030C000631CD7059300F0FF33211000930E00001E +:1030D000930130026312D1059300F0FF33A1000089 +:1030E000930E1000930140026318D103B320000037 +:1030F000930E0000930150026390D00393000001EF +:103100001301E00133A02000930E00009301600240 +:103110006314D001631A3000139511006300050099 +:103120001365150073000000130510007300000004 +:04313000731000C058 +:10313400417373657274696F6E206661696C65644E +:103144003A2061646472203E3D202831554C203C75 +:103154003C203132292026262061646472203C20E0 +:103164003633202A202831554C203C3C203132294A +:103174000A000000417373657274696F6E206661A2 +:10318400696C65643A20212870745B315D5B61640D +:1031940064722F2831554C203C3C203132295D206B +:1031A4002620307830383029202626206361757334 +:1031B40065203D3D203078660A0000004173736548 +:1031C4007274696F6E206661696C65643A206E6F13 +:1031D40064650A00417373657274696F6E20666179 +:1031E400696C65643A20757365725F6D61707069AE +:1031F4006E675B616464722F2831554C203C3C201F +:103204003132295D2E61646472203D3D20300A0014 +:10321400417373657274696F6E206661696C65646D +:103224003A2070745B315D5B616464722F283155A0 +:103234004C203C3C203132295D202620307830342B +:10324400300A0000417373657274696F6E206661A1 +:10325400696C65643A2070745B315D5B61646472AF +:103264002F2831554C203C3C203132295D2026202A +:1032740030783038300A0000417373657274696FB6 +:103284006E206661696C65643A2074662D3E6570D3 +:103294006320252034203D3D20300A0041737365AE +:1032A4007274696F6E206661696C65643A202122CC +:1032B400696C6C6567616C20696E73747275637494 +:1032C400696F6E220A000000417373657274696F3E +:1032D4006E206661696C65643A202122756E65789A +:1032E40070656374656420657863657074696F6E76 +:1032F400220A0000417373657274696F6E206661FF +:10330400696C65643A202122756E737570706F72F2 +:103314007465642073617470206D6F6465220A00A3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-slti.hex b/benchmarks/riscv_tests/isa/rv32ui-v-slti.hex new file mode 100644 index 00000000..0889fb1f --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-slti.hex @@ -0,0 +1,308 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5A397F6FFFF49 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585A097F6FFFF9386C6AD17F6FFFF4C +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385459E82 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385059997F6FFFFC2 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385059297F6FFFF9386C68C17F6FFFFE9 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585881306100497F6FFFFA0 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306467997E6FFFFCC +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306466A97E6FFFF9386866A0D +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306066197E6FFFF93868664FC +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093078000930500001303F303B9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7D7F60F0B +:102B8000B7050800938777D5130700009385C5FF25 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306464C97E6FFFF93868641C2 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50009300000013A70000930E000093012000D2 +:102C60006312D7279300100013A71000930E0000E3 +:102C7000930130006318D7259300300013A770002C +:102C8000930E100093014000631ED7239300700041 +:102C900013A73000930E0000930150006314D72354 +:102CA0009300000013A70080930E000093016000C2 +:102CB000631AD721B700008013A70000930E1000FD +:102CC000930170006310D721B700008013A7008024 +:102CD000930E1000930180006316D71F930000002D +:102CE00013A7F07F930E100093019000631CD71D73 +:102CF000B70000809380F0FF13A70000930E000040 +:102D00009301A0006310D71DB70000809380F0FFEF +:102D100013A7F07F930E00009301B0006314D71B3C +:102D2000B700008013A7F07F930E10009301C0003E +:102D3000631AD719B70000809380F0FF13A70080B3 +:102D4000930E00009301D000631ED717930000007C +:102D500013A7F0FF930E00009301E0006314D71750 +:102D60009300F0FF13A71000930E10009301F000E2 +:102D7000631AD7159300F0FF13A7F0FF930E00001E +:102D8000930100016310D7159300B00093A0D00009 +:102D9000930E1000930110016396D01313020000EC +:102DA0009300F00013A7A000130307001302120002 +:102DB00093022000E31652FE930E000093012001BF +:102DC0006312D311130200009300A00013A70001A7 +:102DD00013000000130307001302120093022000E7 +:102DE000E31452FE930E100093013001631CD30DC7 +:102DF000130200009300000113A7900013000000CD +:102E000013000000130307001302120093022000B6 +:102E1000E31252FE930E0000930140016314D30BA2 +:102E2000130200009300B00013A7F0001302120079 +:102E300093022000E31852FE930E100093015001FC +:102E40006312D70913020000930010011300000061 +:102E500013A780001302120093022000E31652FE13 +:102E6000930E000093016001631ED705130200005A +:102E70009300C000130000001300000013A7E0003F +:102E80001302120093022000E31452FE930E10006E +:102E9000930170016318D7039320F0FF930E000095 +:102EA000930180016390D003B700FF009380F00F7F +:102EB00013A0F0FF930E0000930190016314D00162 +:102EC000631A3000139511006300050013651500A7 +:102ED000730000001305100073000000731000C0A1 +:102EE000417373657274696F6E206661696C6564A5 +:102EF0003A2061646472203E3D202831554C203CCC +:102F00003C203132292026262061646472203C2036 +:102F10003633202A202831554C203C3C20313229A0 +:102F20000A000000417373657274696F6E206661F8 +:102F3000696C65643A20212870745B315D5B616463 +:102F400064722F2831554C203C3C203132295D20C1 +:102F5000262030783038302920262620636175738A +:102F600065203D3D203078660A000000417373659E +:102F70007274696F6E206661696C65643A206E6F69 +:102F800064650A00417373657274696F6E206661CF +:102F9000696C65643A20757365725F6D6170706904 +:102FA0006E675B616464722F2831554C203C3C2075 +:102FB0003132295D2E61646472203D3D20300A006B +:102FC000417373657274696F6E206661696C6564C4 +:102FD0003A2070745B315D5B616464722F283155F7 +:102FE0004C203C3C203132295D2026203078303482 +:102FF000300A0000417373657274696F6E206661F8 +:10300000696C65643A2070745B315D5B6164647205 +:103010002F2831554C203C3C203132295D20262080 +:1030200030783038300A0000417373657274696F0C +:103030006E206661696C65643A2074662D3E657029 +:103040006320252034203D3D20300A004173736504 +:103050007274696F6E206661696C65643A20212222 +:10306000696C6C6567616C20696E737472756374EA +:10307000696F6E220A000000417373657274696F94 +:103080006E206661696C65643A202122756E6578F0 +:1030900070656374656420657863657074696F6ECC +:1030A000220A0000417373657274696F6E20666155 +:1030B000696C65643A202122756E737570706F7249 +:1030C0007465642073617470206D6F6465220A00FA +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sltiu.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sltiu.hex new file mode 100644 index 00000000..f6ee262d --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sltiu.hex @@ -0,0 +1,308 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5A397F6FFFF49 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585A097F6FFFF9386C6AD17F6FFFF4C +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385459E82 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385059997F6FFFFC2 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385059297F6FFFF9386C68C17F6FFFFE9 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585881306100497F6FFFFA0 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306467997E6FFFFCC +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306466A97E6FFFF9386866A0D +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306066197E6FFFF93868664FC +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093073001930500001303F30308 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7E70306F7 +:102B8000B705080093870773130700009385C5FFF7 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306464C97E6FFFF93868641C2 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50009300000013B70000930E000093012000C2 +:102C60006312D7279300100013B71000930E0000D3 +:102C7000930130006318D7259300300013B770001C +:102C8000930E100093014000631ED7239300700041 +:102C900013B73000930E0000930150006314D72344 +:102CA0009300000013B70080930E100093016000A2 +:102CB000631AD721B700008013B70000930E0000FD +:102CC000930170006310D721B700008013B7008014 +:102CD000930E1000930180006316D71F930000002D +:102CE00013B7F07F930E100093019000631CD71D63 +:102CF000B70000809380F0FF13B70000930E000030 +:102D00009301A0006310D71DB70000809380F0FFEF +:102D100013B7F07F930E00009301B0006314D71B2C +:102D2000B700008013B7F07F930E00009301C0003E +:102D3000631AD719B70000809380F0FF13B70080A3 +:102D4000930E10009301D000631ED717930000006C +:102D500013B7F0FF930E10009301E0006314D71730 +:102D60009300F0FF13B71000930E00009301F000E2 +:102D7000631AD7159300F0FF13B7F0FF930E00000E +:102D8000930100016310D7159300B00093B0D000F9 +:102D9000930E1000930110016396D01313020000EC +:102DA0009300F00013B7A0001303070013021200F2 +:102DB00093022000E31652FE930E000093012001BF +:102DC0006312D311130200009300A00013B7000197 +:102DD00013000000130307001302120093022000E7 +:102DE000E31452FE930E100093013001631CD30DC7 +:102DF000130200009300000113B7900013000000BD +:102E000013000000130307001302120093022000B6 +:102E1000E31252FE930E0000930140016314D30BA2 +:102E2000130200009300B00013B7F0001302120069 +:102E300093022000E31852FE930E100093015001FC +:102E40006312D70913020000930010011300000061 +:102E500013B780001302120093022000E31652FE03 +:102E6000930E000093016001631ED705130200005A +:102E70009300C000130000001300000013B7E0002F +:102E80001302120093022000E31452FE930E10006E +:102E9000930170016318D7039330F0FF930E100075 +:102EA000930180016390D003B700FF009380F00F7F +:102EB00013B0F0FF930E0000930190016314D00152 +:102EC000631A3000139511006300050013651500A7 +:102ED000730000001305100073000000731000C0A1 +:102EE000417373657274696F6E206661696C6564A5 +:102EF0003A2061646472203E3D202831554C203CCC +:102F00003C203132292026262061646472203C2036 +:102F10003633202A202831554C203C3C20313229A0 +:102F20000A000000417373657274696F6E206661F8 +:102F3000696C65643A20212870745B315D5B616463 +:102F400064722F2831554C203C3C203132295D20C1 +:102F5000262030783038302920262620636175738A +:102F600065203D3D203078660A000000417373659E +:102F70007274696F6E206661696C65643A206E6F69 +:102F800064650A00417373657274696F6E206661CF +:102F9000696C65643A20757365725F6D6170706904 +:102FA0006E675B616464722F2831554C203C3C2075 +:102FB0003132295D2E61646472203D3D20300A006B +:102FC000417373657274696F6E206661696C6564C4 +:102FD0003A2070745B315D5B616464722F283155F7 +:102FE0004C203C3C203132295D2026203078303482 +:102FF000300A0000417373657274696F6E206661F8 +:10300000696C65643A2070745B315D5B6164647205 +:103010002F2831554C203C3C203132295D20262080 +:1030200030783038300A0000417373657274696F0C +:103030006E206661696C65643A2074662D3E657029 +:103040006320252034203D3D20300A004173736504 +:103050007274696F6E206661696C65643A20212222 +:10306000696C6C6567616C20696E737472756374EA +:10307000696F6E220A000000417373657274696F94 +:103080006E206661696C65643A202122756E6578F0 +:1030900070656374656420657863657074696F6ECC +:1030A000220A0000417373657274696F6E20666155 +:1030B000696C65643A202122756E737570706F7249 +:1030C0007465642073617470206D6F6465220A00FA +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sltu.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sltu.hex new file mode 100644 index 00000000..fde5cfd1 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sltu.hex @@ -0,0 +1,346 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505C997F6FFFFE3 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C597F6FFFF9386C6AD17F6FFFFE7 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585C31D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545BE97F6FFFF5D +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B797F6FFFF9386C68C17F6FFFF84 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5AD1306100497F6FFFF3B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869E97E6FFFF57 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868F97E6FFFF9386866A98 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468697E6FFFF9386866487 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307D000930500001303F30369 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7576D0122 +:102B8000B705080093878709130700009385C5FFE1 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306867197E6FFFF938686415D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930000001301000033B72000930E000022 +:102C600093012000631AD74B93001000130110004A +:102C700033B72000930E000093013000631ED74944 +:102C8000930030001301700033B72000930E100042 +:102C9000930140006312D749930070001301300084 +:102CA00033B72000930E0000930150006316D747FE +:102CB000930000003781FFFF33B72000930E100010 +:102CC00093016000631AD745B7000080130100002C +:102CD00033B72000930E000093017000631ED743AA +:102CE000B70000803781FFFF33B72000930E10003C +:102CF000930180006312D7439300000037810000E6 +:102D00001301F1FF33B72000930E100093019000E0 +:102D10006314D741B70000809380F0FF13010000D7 +:102D200033B72000930E00009301A0006316D73F35 +:102D3000B70000809380F0FF378100001301F1FF9E +:102D400033B72000930E00009301B0006316D73D07 +:102D5000B7000080378100001301F1FF33B7200076 +:102D6000930E00009301C0006318D73BB7000080AA +:102D70009380F0FF3781FFFF33B72000930E1000E0 +:102D80009301D000631AD739930000001301F0FFBC +:102D900033B72000930E10009301E000631ED73775 +:102DA0009300F0FF1301100033B72000930E0000D2 +:102DB0009301F0006312D7379300F0FF1301F0FF87 +:102DC00033B72000930E0000930100016316D7353E +:102DD0009300E0001301D000B3B02000930E000078 +:102DE00093011001639AD0339300B0001301D00017 +:102DF00033B12000930E100093012001631ED131E6 +:102E00009300D000B3B01000930E00009301300186 +:102E10006394D031130200009300B0001301D0007E +:102E200033B720001303070013021200930220009F +:102E3000E31452FE930E100093014001631ED32D44 +:102E4000130200009300E0001301D00033B720000C +:102E50001300000013030700130212009302200066 +:102E6000E31252FE930E0000930150016316D32B20 +:102E7000130200009300C0001301D00033B72000FC +:102E800013000000130000001303070013021200D8 +:102E900093022000E31052FE930E10009301600194 +:102EA000631CD327130200009300E0001301D0003D +:102EB00033B720001302120093022000E31652FEE3 +:102EC000930E0000930170016318D72513020000D0 +:102ED0009300B0001301D0001300000033B72000AE +:102EE0001302120093022000E31452FE930E10000E +:102EF000930180016312D723130200009300F000B6 +:102F00001301D000130000001300000033B72000AD +:102F10001302120093022000E31252FE930E0000EF +:102F200093019001631AD71F130200009300A000C1 +:102F3000130000001301D00033B720001302120069 +:102F400093022000E31452FE930E10009301A0019F +:102F50006314D71D1302000093000001130000004A +:102F60001301D0001300000033B720001302120039 +:102F700093022000E31252FE930E00009301B00171 +:102F8000631CD71913020000930090001300000087 +:102F9000130000001301D00033B720001302120009 +:102FA00093022000E31252FE930E10009301C00121 +:102FB0006314D717130200001301D000930010010F +:102FC00033B720001302120093022000E31652FED2 +:102FD000930E00009301D0016310D7151302000077 +:102FE0001301D000930080001300000033B72000CD +:102FF0001302120093022000E31452FE930E1000FD +:103000009301E001631AD711130200001301D000ED +:1030100093002001130000001300000033B72000CC +:103020001302120093022000E31252FE930E0000DE +:103030009301F0016312D70F130200001301D000B7 +:10304000130000009300700033B720001302120039 +:1030500093022000E31452FE930E1000930100022D +:10306000631CD70B130200001301D00013000000F3 +:10307000930030011300000033B720001302120048 +:1030800093022000E31252FE930E000093011002FF +:103090006314D709130200001301D00013000000CD +:1030A000130000009300600033B7200013021200E9 +:1030B00093022000E31252FE930E100093012002AF +:1030C000631CD7059300F0FF33311000930E1000FE +:1030D000930130026312D1059300F0FF33B1000079 +:1030E000930E0000930140026318D103B330000037 +:1030F000930E0000930150026390D00393000001EF +:103100001301E00133B02000930E00009301600230 +:103110006314D001631A3000139511006300050099 +:103120001365150073000000130510007300000004 +:04313000731000C058 +:10313400417373657274696F6E206661696C65644E +:103144003A2061646472203E3D202831554C203C75 +:103154003C203132292026262061646472203C20E0 +:103164003633202A202831554C203C3C203132294A +:103174000A000000417373657274696F6E206661A2 +:10318400696C65643A20212870745B315D5B61640D +:1031940064722F2831554C203C3C203132295D206B +:1031A4002620307830383029202626206361757334 +:1031B40065203D3D203078660A0000004173736548 +:1031C4007274696F6E206661696C65643A206E6F13 +:1031D40064650A00417373657274696F6E20666179 +:1031E400696C65643A20757365725F6D61707069AE +:1031F4006E675B616464722F2831554C203C3C201F +:103204003132295D2E61646472203D3D20300A0014 +:10321400417373657274696F6E206661696C65646D +:103224003A2070745B315D5B616464722F283155A0 +:103234004C203C3C203132295D202620307830342B +:10324400300A0000417373657274696F6E206661A1 +:10325400696C65643A2070745B315D5B61646472AF +:103264002F2831554C203C3C203132295D2026202A +:1032740030783038300A0000417373657274696FB6 +:103284006E206661696C65643A2074662D3E6570D3 +:103294006320252034203D3D20300A0041737365AE +:1032A4007274696F6E206661696C65643A202122CC +:1032B400696C6C6567616C20696E73747275637494 +:1032C400696F6E220A000000417373657274696F3E +:1032D4006E206661696C65643A202122756E65789A +:1032E40070656374656420657863657074696F6E76 +:1032F400220A0000417373657274696F6E206661FF +:10330400696C65643A202122756E737570706F72F2 +:103314007465642073617470206D6F6465220A00A3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sra.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sra.hex new file mode 100644 index 00000000..cf103dcd --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sra.hex @@ -0,0 +1,359 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938545D697F6FFFF96 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938505D397F6FFFF9386C6AD17F6FFFF99 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C5D0D0 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938585CB97F6FFFF10 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938585C497F6FFFF9386C68C17F6FFFF37 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938505BB1306100497F6FFFFED +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306C6AB97E6FFFF0A +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306C69C97E6FFFF9386866A4B +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306869397E6FFFF938686643A +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093077002930500001303F303C7 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B76715006B +:102B8000B70508009387475B130700009385C5FFCF +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C67E97E6FFFF9386864110 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B70000801301000033D72040B70E00807A +:102C6000930120006314D759B700008013011000AE +:102C700033D72040B70E00C0930130006318D757F8 +:102C8000B70000801301700033D72040B70E00FF5B +:102C900093014000631CD755B70000801301E0008A +:102CA00033D72040B70EFEFF930150006310D75575 +:102CB000B7000080938010001301F00133D720404B +:102CC000930EF0FF930160006312D753B7000080AA +:102CD0009380F0FF1301000033D72040B70E00802F +:102CE000938EFEFF930170006312D751B7000080EE +:102CF0009380F0FF1301100033D72040B70E00403F +:102D0000938EFEFF930180006312D74FB7000080BF +:102D10009380F0FF1301700033D72040B70E0001FD +:102D2000938EFEFF930190006312D74DB700008091 +:102D30009380F0FF1301E00033D72040B70E02006C +:102D4000938EFEFF9301A0006312D74BB700008063 +:102D50009380F0FF1301F00133D72040930E000061 +:102D60009301B0006314D749B78081819380101814 +:102D70001301000033D72040B78E8181938E1E1837 +:102D80009301C0006314D747B780818193801018E6 +:102D90001301100033D72040B7CEC0C0938E0E0C65 +:102DA0009301D0006314D745B780818193801018B8 +:102DB0001301700033D72040B70E03FF938E3E30CF +:102DC0009301E0006314D743B7808181938010188A +:102DD0001301E00033D72040B70EFEFF938E6E60E4 +:102DE0009301F0006314D741B7808181938010185C +:102DF0001301F00133D72040930EF0FF930100013F +:102E00006316D73FB780818193801018130100FCAF +:102E100033D72040B78E8181938E1E189301100105 +:102E20006316D73DB780818193801018130110FC81 +:102E300033D72040B7CEC0C0938E0E0C9301200133 +:102E40006316D73BB780818193801018130170FC03 +:102E500033D72040B70E03FF938E3E3093013001ED +:102E60006316D739B7808181938010181301E0FC75 +:102E700033D72040B70EFEFF938E6E609301400162 +:102E80006316D737B7808181938010181301F0FF44 +:102E900033D72040930EF0FF930150016318D735CC +:102EA000B700008013017000B3D02040B70E00FFC0 +:102EB00093016001639CD033B70000801301E000F0 +:102EC00033D12040B70EFEFF930170016310D13360 +:102ED00093007000B3D01040930E00009301800166 +:102EE0006396D03113020000B70000801301700018 +:102EF00033D720401303070013021200930220006F +:102F0000E31452FEB70E00FF930190016310D32F1C +:102F100013020000B70000801301E00033D7204007 +:102F20001300000013030700130212009302200095 +:102F3000E31252FEB70EFEFF9301A0016318D32BDC +:102F400013020000B70000801301F00133D72040C6 +:102F50001300000013000000130307001302120007 +:102F600093022000E31052FE930EF0FF9301B00194 +:102F7000631ED32713020000B70000801301700006 +:102F800033D720401302120093022000E31652FEB2 +:102F9000B70E00FF9301C001631AD725130200008A +:102FA000B70000801301E0001300000033D7204079 +:102FB0001302120093022000E31452FEB70EFEFF2C +:102FC0009301D0016314D72313020000B7000080DF +:102FD0001301F001130000001300000033D720405C +:102FE0001302120093022000E31252FE930EF0FF30 +:102FF0009301E001631CD71F13020000B70000809B +:10300000130000001301700033D720401302120098 +:1030100093022000E31452FEB70E00FF9301F0016B +:103020006316D71D13020000B700008013000000D4 +:103030001301E0001300000033D7204013021200F8 +:1030400093022000E31252FEB70EFEFF930100022E +:10305000631ED71913020000B700008013000000A0 +:10306000130000001301F00133D7204013021200B7 +:1030700093022000E31252FE930EF0FF9301100220 +:103080006316D7171302000013017000B700008009 +:1030900033D720401302120093022000E31652FEA1 +:1030A000B70E00FF930120026312D7151302000030 +:1030B0001301E000B70000801300000033D7204068 +:1030C0001302120093022000E31452FEB70EFEFF1B +:1030D00093013002631CD711130200001301F001A9 +:1030E000B7000080130000001300000033D7204019 +:1030F0001302120093022000E31252FE930EF0FF1F +:10310000930140026314D70F1302000013017000F3 +:1031100013000000B700008033D7204013021200D4 +:1031200093022000E31452FEB70E00FF93015002F9 +:10313000631ED70B130200001301E0001300000010 +:10314000B70000801300000033D7204013021200A4 +:1031500093022000E31252FEB70EFEFF93016002BD +:103160006316D709130200001301F00113000000D9 +:1031700013000000B700008033D720401302120074 +:1031800093022000E31252FE930EF0FF93017002AF +:10319000631ED7059300F00033511040930E0000DA +:1031A000930180026314D1059300000233D10040E3 +:1031B000930E000293019002631AD103B3500040B2 +:1031C000930E00009301A0026392D003930000408D +:1031D000371100001301018033D02040930E00000E +:1031E0009301B0026314D001631A300013951100EB +:1031F000630005001365150073000000130510003F +:0832000073000000731000C010 +:10320800417373657274696F6E206661696C656479 +:103218003A2061646472203E3D202831554C203CA0 +:103228003C203132292026262061646472203C200B +:103238003633202A202831554C203C3C2031322975 +:103248000A000000417373657274696F6E206661CD +:10325800696C65643A20212870745B315D5B616438 +:1032680064722F2831554C203C3C203132295D2096 +:10327800262030783038302920262620636175735F +:1032880065203D3D203078660A0000004173736573 +:103298007274696F6E206661696C65643A206E6F3E +:1032A80064650A00417373657274696F6E206661A4 +:1032B800696C65643A20757365725F6D61707069D9 +:1032C8006E675B616464722F2831554C203C3C204A +:1032D8003132295D2E61646472203D3D20300A0040 +:1032E800417373657274696F6E206661696C656499 +:1032F8003A2070745B315D5B616464722F283155CC +:103308004C203C3C203132295D2026203078303456 +:10331800300A0000417373657274696F6E206661CC +:10332800696C65643A2070745B315D5B61646472DA +:103338002F2831554C203C3C203132295D20262055 +:1033480030783038300A0000417373657274696FE1 +:103358006E206661696C65643A2074662D3E6570FE +:103368006320252034203D3D20300A0041737365D9 +:103378007274696F6E206661696C65643A202122F7 +:10338800696C6C6567616C20696E737472756374BF +:10339800696F6E220A000000417373657274696F69 +:1033A8006E206661696C65643A202122756E6578C5 +:1033B80070656374656420657863657074696F6EA1 +:1033C800220A0000417373657274696F6E2066612A +:1033D800696C65643A202122756E737570706F721E +:1033E8007465642073617470206D6F6465220A00CF +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-srai.hex b/benchmarks/riscv_tests/isa/rv32ui-v-srai.hex new file mode 100644 index 00000000..3e635854 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-srai.hex @@ -0,0 +1,313 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505A897F6FFFF04 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5A497F6FFFF9386C6AD17F6FFFF08 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585A23E +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385459D97F6FFFF7E +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385459697F6FFFF9386C68C17F6FFFFA5 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C58C1306100497F6FFFF5C +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306867D97E6FFFF88 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306866E97E6FFFF9386866AC9 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306466597E6FFFF93868664B8 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307E001930500001303F30358 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7C790038D +:102B8000B7050800938717E3130700009385C5FF77 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306865097E6FFFF938686417E +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C50009300000013D70040930E00009301200062 +:102C60006314D72BB700008013D71040B70E00C0F5 +:102C700093013000631AD729B700008013D7704042 +:102C8000B70E00FF930140006310D729B700008002 +:102C900013D7E040B70EFEFF930150006316D7270D +:102CA000B70000809380100013D7F041930EF0FF1F +:102CB00093016000631AD725B70000809380F0FF6E +:102CC00013D70040B70E0080938EFEFF9301700073 +:102CD000631CD723B70000809380F0FF13D7104008 +:102CE000B70E0040938EFEFF93018000631ED72134 +:102CF000B70000809380F0FF13D77040B70E00013B +:102D0000938EFEFF930190006310D721B7000080DF +:102D10009380F0FF13D7E040B70E0200938EFEFFC2 +:102D20009301A0006312D71FB70000809380F0FFCB +:102D300013D7F041930E00009301B0006316D71D26 +:102D4000B78081819380101813D70040B78E81819E +:102D5000938E1E189301C0006318D71BB780818122 +:102D60009380101813D71040B7CEC0C0938E0E0CAE +:102D70009301D000631AD719B7808181938010180E +:102D800013D77040B70E03FF938E3E309301E000DF +:102D9000631CD717B78081819380101813D7E04048 +:102DA000B70EFEFF938E6E609301F000631ED71581 +:102DB000B78081819380101813D7F041930EF0FFF4 +:102DC000930100016312D715B700008093D07040C3 +:102DD000B70E00FF930110016398D0131302000097 +:102DE000B700008013D770401303070013021200CE +:102DF00093022000E31652FEB70E00FF930120015C +:102E00006314D31113020000B700008013D7E04011 +:102E100013000000130307001302120093022000A6 +:102E2000E31452FEB70EFEFF93013001631ED30D73 +:102E300013020000B70000809380100013D7F04108 +:102E40001300000013000000130307001302120018 +:102E500093022000E31052FE930EF0FF9301400115 +:102E60006314D30B13020000B700008013D7704027 +:102E70001302120093022000E31852FEB70E00FF67 +:102E8000930150016312D70913020000B7000080BC +:102E90001300000013D7E040130212009302200039 +:102EA000E31652FEB70EFEFF93016001631ED705C5 +:102EB00013020000B7000080938010001300000090 +:102EC0001300000013D7F0411302120093022000F8 +:102ED000E31252FE930EF0FF930170016316D703C5 +:102EE00093504040930E000093018001639ED001F7 +:102EF0009300100213D0A040930E000093019001A4 +:102F00006314D001631A30001395110063000500AB +:102F10001365150073000000130510007300000016 +:042F2000731000C06A +:102F2400417373657274696F6E206661696C656460 +:102F34003A2061646472203E3D202831554C203C87 +:102F44003C203132292026262061646472203C20F2 +:102F54003633202A202831554C203C3C203132295C +:102F64000A000000417373657274696F6E206661B4 +:102F7400696C65643A20212870745B315D5B61641F +:102F840064722F2831554C203C3C203132295D207D +:102F94002620307830383029202626206361757346 +:102FA40065203D3D203078660A000000417373655A +:102FB4007274696F6E206661696C65643A206E6F25 +:102FC40064650A00417373657274696F6E2066618B +:102FD400696C65643A20757365725F6D61707069C0 +:102FE4006E675B616464722F2831554C203C3C2031 +:102FF4003132295D2E61646472203D3D20300A0027 +:10300400417373657274696F6E206661696C65647F +:103014003A2070745B315D5B616464722F283155B2 +:103024004C203C3C203132295D202620307830343D +:10303400300A0000417373657274696F6E206661B3 +:10304400696C65643A2070745B315D5B61646472C1 +:103054002F2831554C203C3C203132295D2026203C +:1030640030783038300A0000417373657274696FC8 +:103074006E206661696C65643A2074662D3E6570E5 +:103084006320252034203D3D20300A0041737365C0 +:103094007274696F6E206661696C65643A202122DE +:1030A400696C6C6567616C20696E737472756374A6 +:1030B400696F6E220A000000417373657274696F50 +:1030C4006E206661696C65643A202122756E6578AC +:1030D40070656374656420657863657074696F6E88 +:1030E400220A0000417373657274696F6E20666111 +:1030F400696C65643A202122756E737570706F7205 +:103104007465642073617470206D6F6465220A00B5 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-srl.hex b/benchmarks/riscv_tests/isa/rv32ui-v-srl.hex new file mode 100644 index 00000000..0a9d39bf --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-srl.hex @@ -0,0 +1,357 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C5D497F6FFFF18 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585D197F6FFFF9386C6AD17F6FFFF1B +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545CF51 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505CA97F6FFFF91 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938505C397F6FFFF9386C68C17F6FFFFB8 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585B91306100497F6FFFF6F +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E0009305100417160000130646AA97E6FFFF8B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306469B97E6FFFF9386866ACC +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306069297E6FFFF93868664BB +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093076001930500001303F303D8 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B717C20FFF +:102B8000B705080093872789130700009385C5FFC1 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306467D97E6FFFF9386864191 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B70000801301000033D72000B70E0080BA +:102C6000930120006318D757B700008013011000AC +:102C700033D72000B70E004093013000631CD755B6 +:102C8000B70000801301700033D72000B70E000199 +:102C9000930140006310D755B70000801301E00096 +:102CA00033D72000B70E0200930150006314D753AE +:102CB000B7000080938010001301F00133D720008B +:102CC000930E1000930160006316D7519300F0FF3C +:102CD0001301000033D72000930EF0FF9301700022 +:102CE000631AD74F9300F0FF1301100033D7200071 +:102CF000B70E0080938EFEFF93018000631CD74DBA +:102D00009300F0FF1301700033D72000B70E0002CC +:102D1000938EFEFF93019000631ED74B9300F0FF4C +:102D20001301E00033D72000B70E0400938EFEFF9E +:102D30009301A0006310D74B9300F0FF1301F00143 +:102D400033D72000930E10009301B0006314D749CD +:102D5000B7202121938010121301000033D72000E7 +:102D6000B72E2121938E1E129301C0006314D74702 +:102D7000B7202121938010121301100033D72000B7 +:102D8000B79E9010938E0E099301D0006314D7451F +:102D9000B7202121938010121301700033D7200037 +:102DA000B74E4200938E2E249301E0006314D74364 +:102DB000B7202121938010121301E00033D72000A7 +:102DC000B78E0000938E4E489301F0006314D741F4 +:102DD000B7202121938010121301F00133D7200076 +:102DE000930E0000930100016316D73FB720212105 +:102DF00093801012130100FC33D72000B72E21213D +:102E0000938E1E12930110016316D73DB720212126 +:102E100093801012130110FC33D72000B79E90103E +:102E2000938E0E09930120016316D73BB720212111 +:102E300093801012130170FC33D72000B74E42006C +:102E4000938E2E24930130016316D739B7202121A8 +:102E5000938010121301E0FC33D72000B78E0000DE +:102E6000938E4E48930140016316D737B720212136 +:102E7000938010121301F0FF33D72000930E00004F +:102E8000930150016318D735B7000080130170001B +:102E9000B3D02000B70E000193016001639CD033D2 +:102EA000B70000801301E00033D12000B70E02000C +:102EB000930170016310D13393007000B3D0100000 +:102EC000930E0000930180016396D031130200003D +:102ED000B70000801301700033D7200013030700F0 +:102EE0001302120093022000E31452FEB70E0001F9 +:102EF000930190016310D32F13020000B7000080EC +:102F00001301E00033D72000130000001303070073 +:102F10001302120093022000E31252FEB70E0200C9 +:102F20009301A0016318D32B13020000B7000080A7 +:102F30001301F00133D7200013000000130000003C +:102F4000130307001302120093022000E31052FE45 +:102F5000930E10009301B001631ED32713020000EB +:102F6000B70000801301700033D720001302120055 +:102F700093022000E31652FEB70E00019301C00138 +:102F8000631AD72513020000B70000801301E00088 +:102F90001300000033D72000130212009302200018 +:102FA000E31452FEB70E02009301D0016314D7233D +:102FB00013020000B70000801301F00113000000AD +:102FC0001300000033D720001302120093022000E8 +:102FD000E31252FE930E10009301E001631CD71F11 +:102FE00013020000B70000801300000013017000FE +:102FF00033D720001302120093022000E31452FE84 +:10300000B70E00019301F0016316D71D13020000F3 +:10301000B7000080130000001301E000130000005F +:1030200033D720001302120093022000E31252FE55 +:10303000B70E020093010002631ED71913020000AD +:10304000B700008013000000130000001301F0011E +:1030500033D720001302120093022000E31252FE25 +:10306000930E1000930110026316D717130200008D +:1030700013017000B700008033D720001302120044 +:1030800093022000E31652FEB70E000193012002C6 +:103090006312D715130200001301E000B70000808F +:1030A0001300000033D72000130212009302200007 +:1030B000E31452FEB70E020093013002631CD711D5 +:1030C000130200001301F001B7000080130000009C +:1030D0001300000033D720001302120093022000D7 +:1030E000E31252FE930E1000930140026314D70FB7 +:1030F000130200001301700013000000B7000080ED +:1031000033D720001302120093022000E31452FE72 +:10311000B70E000193015002631ED70B130200008B +:103120001301E00013000000B7000080130000004E +:1031300033D720001302120093022000E31252FE44 +:10314000B70E0200930160026316D7091302000054 +:103150001301F0011300000013000000B70000800D +:1031600033D720001302120093022000E31252FE14 +:10317000930E100093017002631ED7059300F000B8 +:1031800033511000930E0000930180026314D105A7 +:103190009300000233D10000930E000293019002CD +:1031A000631AD103B3500000930E00009301A002F4 +:1031B0006392D00393000040371100001301018097 +:1031C00033D02000930E00009301B0026314D001AD +:1031D000631A300013951100630005001365150094 +:1031E000730000001305100073000000731000C08E +:1031F000417373657274696F6E206661696C656492 +:103200003A2061646472203E3D202831554C203CB8 +:103210003C203132292026262061646472203C2023 +:103220003633202A202831554C203C3C203132298D +:103230000A000000417373657274696F6E206661E5 +:10324000696C65643A20212870745B315D5B616450 +:1032500064722F2831554C203C3C203132295D20AE +:103260002620307830383029202626206361757377 +:1032700065203D3D203078660A000000417373658B +:103280007274696F6E206661696C65643A206E6F56 +:1032900064650A00417373657274696F6E206661BC +:1032A000696C65643A20757365725F6D61707069F1 +:1032B0006E675B616464722F2831554C203C3C2062 +:1032C0003132295D2E61646472203D3D20300A0058 +:1032D000417373657274696F6E206661696C6564B1 +:1032E0003A2070745B315D5B616464722F283155E4 +:1032F0004C203C3C203132295D202620307830346F +:10330000300A0000417373657274696F6E206661E4 +:10331000696C65643A2070745B315D5B61646472F2 +:103320002F2831554C203C3C203132295D2026206D +:1033300030783038300A0000417373657274696FF9 +:103340006E206661696C65643A2074662D3E657016 +:103350006320252034203D3D20300A0041737365F1 +:103360007274696F6E206661696C65643A2021220F +:10337000696C6C6567616C20696E737472756374D7 +:10338000696F6E220A000000417373657274696F81 +:103390006E206661696C65643A202122756E6578DD +:1033A00070656374656420657863657074696F6EB9 +:1033B000220A0000417373657274696F6E20666142 +:1033C000696C65643A202122756E737570706F7236 +:1033D0007465642073617470206D6F6465220A00E7 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-srli.hex b/benchmarks/riscv_tests/isa/rv32ui-v-srli.hex new file mode 100644 index 00000000..329d7259 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-srli.hex @@ -0,0 +1,311 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585A697F6FFFF86 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545A397F6FFFF9386C6AD17F6FFFF89 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505A1BF +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C59B97F6FFFF00 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C59497F6FFFF9386C68C17F6FFFF27 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385458B1306100497F6FFFFDD +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306067C97E6FFFF09 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306066D97E6FFFF9386866A4A +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C66397E6FFFF938686643A +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093070001930500001303F30338 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7C7BA085E +:102B8000B7050800938737E3130700009385C5FF57 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306064F97E6FFFF93868641FF +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B700008013D70000B70E0080930120005A +:102C60006318D729B700008013D71000B70E0040B3 +:102C700093013000631ED727B700008013D7700080 +:102C8000B70E0001930140006314D727B7000080FE +:102C900013D7E000B70E020093015000631AD72546 +:102CA000B70000809380100013D7F001930E10003E +:102CB00093016000631ED7239300F0FF13D7000039 +:102CC000930EF0FF930170006314D7239300F0FF7D +:102CD00013D71000B70E0080938EFEFF9301800083 +:102CE0006318D7219300F0FF13D77000B70E0002CE +:102CF000938EFEFF93019000631CD71F9300F0FF9B +:102D000013D7E000B70E0400938EFEFF9301A000DE +:102D10006310D71F9300F0FF13D7F001930E10003C +:102D20009301B0006316D71DB720212193801012A4 +:102D300013D70000B72E2121938E1E129301C000DD +:102D40006318D71BB72021219380101213D71000CE +:102D5000B79E9010938E0E099301D000631AD71975 +:102D6000B72021219380101213D77000B74E420074 +:102D7000938E2E249301E000631CD717B7202121E6 +:102D80009380101213D7E000B78E0000938E4E4848 +:102D90009301F000631ED715B720212193801012F4 +:102DA00013D7F001930E0000930100016312D715B1 +:102DB000B700008093D07000B70E0001930110019E +:102DC0006398D01313020000B700008013D770007F +:102DD000130307001302120093022000E31652FEB1 +:102DE000B70E0001930120016314D31113020000F8 +:102DF000B700008013D7E0001300000013030700A2 +:102E00001302120093022000E31452FEB70E0200D8 +:102E100093013001631ED30D13020000B700008040 +:102E20009380100013D7F00113000000130000007E +:102E3000130307001302120093022000E31052FE56 +:102E4000930E1000930140016314D30B1302000092 +:102E5000B700008013D77000130212009302200005 +:102E6000E31852FEB70E0001930150016312D70917 +:102E700013020000B70000801300000013D7E00029 +:102E80001302120093022000E31652FEB70E020056 +:102E900093016001631ED70513020000B700008094 +:102EA00093801000130000001300000013D7F001FE +:102EB0001302120093022000E31252FE930E100040 +:102EC000930170016316D70393504000930E0000E6 +:102ED00093018001639ED0019300100213D0A000E3 +:102EE000930E0000930190016314D001631A300027 +:102EF00013951100630005001365150073000000B1 +:0C2F00001305100073000000731000C0E7 +:102F0C00417373657274696F6E206661696C656478 +:102F1C003A2061646472203E3D202831554C203C9F +:102F2C003C203132292026262061646472203C200A +:102F3C003633202A202831554C203C3C2031322974 +:102F4C000A000000417373657274696F6E206661CC +:102F5C00696C65643A20212870745B315D5B616437 +:102F6C0064722F2831554C203C3C203132295D2095 +:102F7C00262030783038302920262620636175735E +:102F8C0065203D3D203078660A0000004173736572 +:102F9C007274696F6E206661696C65643A206E6F3D +:102FAC0064650A00417373657274696F6E206661A3 +:102FBC00696C65643A20757365725F6D61707069D8 +:102FCC006E675B616464722F2831554C203C3C2049 +:102FDC003132295D2E61646472203D3D20300A003F +:102FEC00417373657274696F6E206661696C656498 +:102FFC003A2070745B315D5B616464722F283155CB +:10300C004C203C3C203132295D2026203078303455 +:10301C00300A0000417373657274696F6E206661CB +:10302C00696C65643A2070745B315D5B61646472D9 +:10303C002F2831554C203C3C203132295D20262054 +:10304C0030783038300A0000417373657274696FE0 +:10305C006E206661696C65643A2074662D3E6570FD +:10306C006320252034203D3D20300A0041737365D8 +:10307C007274696F6E206661696C65643A202122F6 +:10308C00696C6C6567616C20696E737472756374BE +:10309C00696F6E220A000000417373657274696F68 +:1030AC006E206661696C65643A202122756E6578C4 +:1030BC0070656374656420657863657074696F6EA0 +:1030CC00220A0000417373657274696F6E20666129 +:1030DC00696C65643A202122756E737570706F721D +:1030EC007465642073617470206D6F6465220A00CE +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sub.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sub.hex new file mode 100644 index 00000000..a7677b11 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sub.hex @@ -0,0 +1,345 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585C897F6FFFF64 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545C597F6FFFF9386C6AD17F6FFFF67 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505C39D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C5BD97F6FFFFDE +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C5B697F6FFFF9386C68C17F6FFFF05 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545AD1306100497F6FFFFBB +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306069E97E6FFFFD7 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306068F97E6FFFF9386866A18 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306C68597E6FFFF9386866408 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093073003930500001303F30306 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7479D05FE +:102B8000B705080093870707130700009385C5FF63 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306067197E6FFFF93868641DD +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930000001301000033872040930E000012 +:102C6000930120006316D74B93001000130110004E +:102C700033872040930E000093013000631AD74938 +:102C8000930030001301700033872040930EC0FF83 +:102C900093014000631ED747930000003781FFFF78 +:102CA00033872040B78E0000930150006312D7474E +:102CB000B70000801301000033872040B70E00806A +:102CC000930160006316D745B70000803781FFFF8E +:102CD00033872040B78E008093017000631AD7437A +:102CE00093000000378100001301F1FF338720407B +:102CF000B78EFFFF938E1E0093018000631AD741A9 +:102D0000B70000809380F0FF13010000338720405C +:102D1000B70E0080938EFEFF93019000631AD73F99 +:102D2000B70000809380F0FF378100001301F1FFAE +:102D300033872040B78EFF7F9301A000631AD73DF1 +:102D4000B7000080378100001301F1FF3387204076 +:102D5000B78EFF7F938E1E009301B000631AD73B9E +:102D6000B70000809380F0FF3781FFFF338720405A +:102D7000B78E0080938EFEFF9301C000631AD7398F +:102D8000930000001301F0FF33872040930E1000E2 +:102D90009301D000631ED7379300F0FF130110009A +:102DA00033872040930EE0FF9301E0006312D73792 +:102DB0009300F0FF1301F0FF33872040930E0000D3 +:102DC0009301F0006316D7359300D0001301B000D3 +:102DD000B3802040930E200093010001639AD0330A +:102DE0009300E0001301B00033812040930E3000C7 +:102DF00093011001631ED1319300D000B3801040C5 +:102E0000930E0000930120016394D031130200005F +:102E10009300D0001301B000338720401303070054 +:102E20001302120093022000E31452FE930E2000BE +:102E300093013001631ED32D130200009300E000C4 +:102E40001301B00033872040130000001303070074 +:102E50001302120093022000E31252FE930E300080 +:102E6000930140016316D32B130200009300F0007E +:102E70001301B0003387204013000000130000004E +:102E8000130307001302120093022000E31052FE06 +:102E9000930E400093015001631CD32713020000DE +:102EA0009300D0001301B0003387204013021200BA +:102EB00093022000E31652FE930E2000930160015E +:102EC0006318D725130200009300E0001301B0003F +:102ED00013000000338720401302120093022000E9 +:102EE000E31452FE930E3000930170016312D72356 +:102EF000130200009300F0001301B0001300000063 +:102F000013000000338720401302120093022000B8 +:102F1000E31252FE930E400093018001631AD71F03 +:102F2000130200009300D000130000001301B00052 +:102F3000338720401302120093022000E31452FE54 +:102F4000930E2000930190016314D71D130200001B +:102F50009300E000130000001301B0001300000014 +:102F6000338720401302120093022000E31252FE26 +:102F7000930E30009301A001631CD71913020000C7 +:102F80009300F00013000000130000001301B000D4 +:102F9000338720401302120093022000E31252FEF6 +:102FA000930E40009301B0016314D7171302000081 +:102FB0001301B0009300D0003387204013021200A9 +:102FC00093022000E31652FE930E20009301C001ED +:102FD0006310D715130200001301B0009300E00046 +:102FE00013000000338720401302120093022000D8 +:102FF000E31452FE930E30009301D001631AD711EF +:10300000130200001301B0009300F0001300000051 +:1030100013000000338720401302120093022000A7 +:10302000E31252FE930E40009301E0016312D70FAA +:10303000130200001301B000130000009300D00041 +:10304000338720401302120093022000E31452FE43 +:10305000930E20009301F001631CD70B13020000B4 +:103060001301B000130000009300E0001300000003 +:10307000338720401302120093022000E31252FE15 +:10308000930E3000930100026314D709130200006D +:103090001301B00013000000130000009300F000C3 +:1030A000338720401302120093022000E31252FEE5 +:1030B000930E400093011002631CD705930010FF8C +:1030C00033011040930EF000930120026312D105EA +:1030D0009300000233810040930E000293013002FE +:1030E0006318D103B3000040930E00009301400227 +:1030F0006390D003930000011301E001338020406E +:10310000930E0000930150026314D001631A300043 +:10311000139511006300050013651500730000008E +:0C3120001305100073000000731000C0C5 +:10312C00417373657274696F6E206661696C656456 +:10313C003A2061646472203E3D202831554C203C7D +:10314C003C203132292026262061646472203C20E8 +:10315C003633202A202831554C203C3C2031322952 +:10316C000A000000417373657274696F6E206661AA +:10317C00696C65643A20212870745B315D5B616415 +:10318C0064722F2831554C203C3C203132295D2073 +:10319C00262030783038302920262620636175733C +:1031AC0065203D3D203078660A0000004173736550 +:1031BC007274696F6E206661696C65643A206E6F1B +:1031CC0064650A00417373657274696F6E20666181 +:1031DC00696C65643A20757365725F6D61707069B6 +:1031EC006E675B616464722F2831554C203C3C2027 +:1031FC003132295D2E61646472203D3D20300A001D +:10320C00417373657274696F6E206661696C656475 +:10321C003A2070745B315D5B616464722F283155A8 +:10322C004C203C3C203132295D2026203078303433 +:10323C00300A0000417373657274696F6E206661A9 +:10324C00696C65643A2070745B315D5B61646472B7 +:10325C002F2831554C203C3C203132295D20262032 +:10326C0030783038300A0000417373657274696FBE +:10327C006E206661696C65643A2074662D3E6570DB +:10328C006320252034203D3D20300A0041737365B6 +:10329C007274696F6E206661696C65643A202122D4 +:1032AC00696C6C6567616C20696E7374727563749C +:1032BC00696F6E220A000000417373657274696F46 +:1032CC006E206661696C65643A202122756E6578A2 +:1032DC0070656374656420657863657074696F6E7E +:1032EC00220A0000417373657274696F6E20666107 +:1032FC00696C65643A202122756E737570706F72FB +:10330C007465642073617470206D6F6465220A00AB +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-sw.hex b/benchmarks/riscv_tests/isa/rv32ui-v-sw.hex new file mode 100644 index 00000000..aa3bf6f5 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-sw.hex @@ -0,0 +1,344 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230178100001301412DF32240F17B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640173300003C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001757000013074704832507006384051C93 +:1023C00083A74500175600000326C6022320F70006 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297570000938707E0D9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009757000023AE07F46FF09FF3AA +:1024A00013051004971500009385C5C497F6FFFF28 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938585C197F6FFFF9386C6AD17F6FFFF2B +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545BF61 +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938505BA97F6FFFFA1 +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938505B397F6FFFF9386C68C17F6FFFFC8 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938585A91306100497F6FFFF7F +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000975400009384449E172D00003D +:10282000130D4D7EB70C0400975B0000938B8BBC9F +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69757000028 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306469A97E6FFFF9B +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306468B97E6FFFF9386866ADC +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306068297E6FFFF93868664CB +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716173600008C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108972500009385855C9F +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009747C07F93870754175700002326F79234 +:102AD0009747C07F9387077217570000232CF79002 +:102AE00037030800174700001307C751174E0000AF +:102AF000130ECE7093076003930500001303F303D6 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097470000D4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B7AD0182 +:102B8000B70508009387F7FA130700009385C5FF80 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306466D97E6FFFF93868641A1 +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000971000009380003B3701AA001301A10ADE +:102C600023A0200003A70000B70EAA00938EAE0A8F +:102C7000930120006310D74797100000938080389D +:102C800037B100AA130101A023A2200003A740002E +:102C9000B7BE00AA938E0EA093013000631CD743E9 +:102CA00097100000938000363711A00A130101AA83 +:102CB00023A4200003A78000B71EA00A938E0EAAAB +:102CC000930140006318D741971000009380803330 +:102CD00037A10AA01301A10023A6200003A7C0006A +:102CE000B7AE0AA0938EAE00930150006314D73F95 +:102CF000971000009380C0323701AA001301A10A87 +:102D000023AA20FE03A740FFB70EAA00938EAE0AA7 +:102D1000930160006310D73D97100000938040300E +:102D200037B100AA130101A023AC20FE03A780FF46 +:102D3000B7BE00AA938E0EA093017000631CD73912 +:102D4000971000009380C02D3711A00A130101AA2B +:102D500023AE20FE03A7C0FFB71EA00A938E0EAAC3 +:102D6000930180006318D737971000009380402BA1 +:102D700037A10AA01301A10023A0200003A700008F +:102D8000B7AE0AA0938EAE00930190006314D735BE +:102D90009710000093800029375134121301816786 +:102DA000138200FE2320220283A20000B75E3412A9 +:102DB000938E8E679301A000639ED231971000001E +:102DC0009380402637312158130181099380D0FF29 +:102DD000A3A3200017120000130202258322020081 +:102DE000B73E2158938E8E099301B0006394D22F81 +:102DF0009301C00013020000B7D0BBAA9380D0CDCE +:102E000017110000130101202320110003270100E6 +:102E1000B7DEBBAA938EDECD631ED72B1302120042 +:102E200093022000E31A52FC9301D0001302000029 +:102E3000B7C0ABDA9380D0CC171100001301811C0E +:102E4000130000002322110003274100B7CEABDAA4 +:102E5000938EDECC6310D729130212009302200058 +:102E6000E31852FC9301E00013020000B7C0AADD92 +:102E70009380C0BC171100001301C118130000009B +:102E8000130000002324110003278100B7CEAADD20 +:102E9000938ECEBC6310D72513021200930220003C +:102EA000E31652FC9301F00013020000B7B0DACD34 +:102EB0009380C0BB130000001711000013018114A0 +:102EC000232611000327C100B7BEDACD938ECEBBF7 +:102ED0006312D7211302120093022000E31852FC60 +:102EE0009301000113020000B7B0DDCC9380B0ABBA +:102EF00013000000171100001301C110130000009F +:102F00002328110003270101B7BEDDCC938EBEAB91 +:102F10006312D71D1302120093022000E31652FC25 +:102F20009301100113020000B7E0CDBC9380B0AA5A +:102F30001300000013000000171100001301810CA2 +:102F4000232A110003274101B7EECDBC938EBEAA00 +:102F50006312D7191302120093022000E31652FCE9 +:102F600093012001130200001711000013018109D1 +:102F7000B720110093803023232011000327010084 +:102F8000B72E1100938E3E236316D715130212003D +:102F900093022000E31A52FC930130011302000057 +:102FA0001711000013010106B71001309380302281 +:102FB000130000002322110003274100B71E013037 +:102FC000938E3E226318D711130212009302200041 +:102FD000E31852FC93014001130200001711000096 +:102FE00013014102B7100033938020121300000038 +:102FF000130000002324110003278100B71E0033B3 +:10300000938E2E126318D70D130212009302200024 +:10301000E31652FC93015001130200001711000047 +:10302000130141FE13000000B700302393802011EC +:10303000232611000327C100B70E3023938E2E11D3 +:10304000631AD7091302120093022000E31852FCFE +:10305000930160011302000017110000130181FAAF +:1030600013000000B700332293801001130000000A +:103070002328110003270101B70E3322938E1E016E +:10308000631AD7051302120093022000E31652FCC4 +:10309000930170011302000017110000130181F663 +:1030A0001300000013000000B730231293801000BB +:1030B000232A110003274101B73E2312938E1E00DD +:1030C000631AD7011302120093022000E31652FC88 +:1030D000631A300013951100630005001365150095 +:1030E000730000001305100073000000731000C08F +:1030F000417373657274696F6E206661696C656493 +:103100003A2061646472203E3D202831554C203CB9 +:103110003C203132292026262061646472203C2024 +:103120003633202A202831554C203C3C203132298E +:103130000A000000417373657274696F6E206661E6 +:10314000696C65643A20212870745B315D5B616451 +:1031500064722F2831554C203C3C203132295D20AF +:103160002620307830383029202626206361757378 +:1031700065203D3D203078660A000000417373658C +:103180007274696F6E206661696C65643A206E6F57 +:1031900064650A00417373657274696F6E206661BD +:1031A000696C65643A20757365725F6D61707069F2 +:1031B0006E675B616464722F2831554C203C3C2063 +:1031C0003132295D2E61646472203D3D20300A0059 +:1031D000417373657274696F6E206661696C6564B2 +:1031E0003A2070745B315D5B616464722F283155E5 +:1031F0004C203C3C203132295D2026203078303470 +:10320000300A0000417373657274696F6E206661E5 +:10321000696C65643A2070745B315D5B61646472F3 +:103220002F2831554C203C3C203132295D2026206E +:1032300030783038300A0000417373657274696FFA +:103240006E206661696C65643A2074662D3E657017 +:103250006320252034203D3D20300A0041737365F2 +:103260007274696F6E206661696C65643A20212210 +:10327000696C6C6567616C20696E737472756374D8 +:10328000696F6E220A000000417373657274696F82 +:103290006E206661696C65643A202122756E6578DE +:1032A00070656374656420657863657074696F6EBA +:1032B000220A0000417373657274696F6E20666143 +:1032C000696C65643A202122756E737570706F7237 +:1032D0007465642073617470206D6F6465220A00E8 +:10400000EFBEADDEEFBEADDEEFBEADDEEFBEADDED0 +:10401000EFBEADDEEFBEADDEEFBEADDEEFBEADDEC0 +:08402000EFBEADDEEFBEADDE28 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-xor.hex b/benchmarks/riscv_tests/isa/rv32ui-v-xor.hex new file mode 100644 index 00000000..3b846cd3 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-xor.hex @@ -0,0 +1,345 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938585C897F6FFFF64 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:10252000938545C597F6FFFF9386C6AD17F6FFFF67 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938505C39D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385C5BD97F6FFFFDE +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385C5B697F6FFFF9386C68C17F6FFFF05 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A00097150000938545AD1306100497F6FFFFBB +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306069E97E6FFFFD7 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306068F97E6FFFF9386866A18 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306C68597E6FFFF9386866408 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093073001930500001303F30308 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7779F00D1 +:102B8000B70508009387772E130700009385C5FFCC +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306067197E6FFFF93868641DD +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B70001FF938000F037110F0F1301F1F05F +:102C600033C72000B7FE0FF0938EFE0093012000C3 +:102C70006310D74BB710F00F938000FF37F1F0F0DF +:102C80001301010F33C72000B70E01FF938E0EF022 +:102C900093013000631ED747B700FF009380F00F09 +:102CA00037110F0F1301F1F033C72000B71EF00FDB +:102CB000938E0EFF93014000631CD745B7F00FF0D1 +:102CC0009380F00037F1F0F01301010F33C72000BB +:102CD000B70EFF00938EFE0F93015000631AD74387 +:102CE000B70001FF938000F037110F0F1301F1F0CF +:102CF000B3C02000B7FE0FF0938EFE00930160007A +:102D00006398D041B70001FF938000F037110F0F97 +:102D10001301F1F033C12000B7FE0FF0938EFE00D7 +:102D2000930170006316D13FB70001FF938000F05C +:102D3000B3C01000930E000093018000639AD03D51 +:102D400013020000B70001FF938000F037110F0F4E +:102D50001301F1F033C72000130307001302120020 +:102D600093022000E31052FEB7FE0FF0938EFE0098 +:102D700093019000631ED33913020000B710F00FC7 +:102D8000938000FF37F1F0F01301010F33C72000EB +:102D90001300000013030700130212009302200027 +:102DA000E31E52FCB70E01FF938E0EF09301A000BC +:102DB0006310D33713020000B700FF009380F00FB9 +:102DC00037110F0F1301F1F033C72000130000007B +:102DD00013000000130307001302120093022000E7 +:102DE000E31C52FCB71EF00F938E0EFF9301B00050 +:102DF0006310D33313020000B70001FF938000F08B +:102E000037110F0F1301F1F033C720001302120026 +:102E100093022000E31252FEB7FE0FF0938EFE00E5 +:102E20009301C0006316D72F13020000B710F00FF4 +:102E3000938000FF37F1F0F01301010F1300000041 +:102E400033C720001302120093022000E31052FE49 +:102E5000B70E01FF938E0EF09301D000631AD72BAB +:102E600013020000B700FF009380F00F37110F0F1F +:102E70001301F1F0130000001300000033C720001D +:102E80001302120093022000E31E52FCB71EF00F43 +:102E9000938E0EFF9301E000631CD72713020000FE +:102EA000B70001FF938000F01300000037110F0FEF +:102EB0001301F1F033C72000130212009302200027 +:102EC000E31052FEB7FE0FF0938EFE009301F00068 +:102ED0006310D72513020000B710F00F938000FF96 +:102EE0001300000037F1F0F01301010F1300000090 +:102EF00033C720001302120093022000E31E52FC8D +:102F0000B70E01FF938E0EF0930100016312D721DB +:102F100013020000B700FF009380F00F13000000C1 +:102F20001300000037110F0F1301F1F033C7200019 +:102F30001302120093022000E31E52FCB71EF00F92 +:102F4000938E0EFF930110016314D71D130200002E +:102F500037110F0F1301F1F0B70001FF938000F05C +:102F600033C720001302120093022000E31252FE26 +:102F7000B7FE0FF0938EFE0093012001631AD7195C +:102F80001302000037F1F0F01301010FB710F00F3A +:102F9000938000FF1300000033C7200013021200CB +:102FA00093022000E31052FEB70E01FF938E0EF045 +:102FB00093013001631ED7151302000037110F0F64 +:102FC0001301F1F0B700FF009380F00F1300000031 +:102FD0001300000033C720001302120093022000E8 +:102FE000E31E52FCB71EF00F938E0EFF93014001BB +:102FF0006310D7131302000037110F0F1301F1F004 +:1030000013000000B70001FF938000F033C72000D9 +:103010001302120093022000E31052FEB7FE0FF0DD +:10302000938EFE00930150016314D70F130200002A +:1030300037F1F0F01301010F13000000B710F00F8B +:10304000938000FF1300000033C72000130212001A +:1030500093022000E31E52FCB70E01FF938E0EF088 +:10306000930160016316D70B1302000037110F0F95 +:103070001301F1F01300000013000000B700FF007F +:103080009380F00F33C72000130212009302200038 +:10309000E31E52FCB71EF00F938E0EFF93017001DA +:1030A0006318D707B70001FF938000F03341100089 +:1030B000B70E01FF938E0EF093018001631AD105C4 +:1030C000B700FF009380F00F33C10000B70EFF0080 +:1030D000938EFE0F93019001631CD103B340000057 +:1030E000930E00009301A0016394D003B710111157 +:1030F00093801011372122221301212233C0200096 +:10310000930E00009301B0016314D001631A3000E4 +:10311000139511006300050013651500730000008E +:0C3120001305100073000000731000C0C5 +:10312C00417373657274696F6E206661696C656456 +:10313C003A2061646472203E3D202831554C203C7D +:10314C003C203132292026262061646472203C20E8 +:10315C003633202A202831554C203C3C2031322952 +:10316C000A000000417373657274696F6E206661AA +:10317C00696C65643A20212870745B315D5B616415 +:10318C0064722F2831554C203C3C203132295D2073 +:10319C00262030783038302920262620636175733C +:1031AC0065203D3D203078660A0000004173736550 +:1031BC007274696F6E206661696C65643A206E6F1B +:1031CC0064650A00417373657274696F6E20666181 +:1031DC00696C65643A20757365725F6D61707069B6 +:1031EC006E675B616464722F2831554C203C3C2027 +:1031FC003132295D2E61646472203D3D20300A001D +:10320C00417373657274696F6E206661696C656475 +:10321C003A2070745B315D5B616464722F283155A8 +:10322C004C203C3C203132295D2026203078303433 +:10323C00300A0000417373657274696F6E206661A9 +:10324C00696C65643A2070745B315D5B61646472B7 +:10325C002F2831554C203C3C203132295D20262032 +:10326C0030783038300A0000417373657274696FBE +:10327C006E206661696C65643A2074662D3E6570DB +:10328C006320252034203D3D20300A0041737365B6 +:10329C007274696F6E206661696C65643A202122D4 +:1032AC00696C6C6567616C20696E7374727563749C +:1032BC00696F6E220A000000417373657274696F46 +:1032CC006E206661696C65643A202122756E6578A2 +:1032DC0070656374656420657863657074696F6E7E +:1032EC00220A0000417373657274696F6E20666107 +:1032FC00696C65643A202122756E737570706F72FB +:10330C007465642073617470206D6F6465220A00AB +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32ui-v-xori.hex b/benchmarks/riscv_tests/isa/rv32ui-v-xori.hex new file mode 100644 index 00000000..ceeee6eb --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32ui-v-xori.hex @@ -0,0 +1,299 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A00013051004971500009385C59A97F6FFFF52 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385859797F6FFFF9386C6AD17F6FFFF55 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938545958B +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004971500009385059097F6FFFFCB +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:102730009385058997F6FFFF9386C68C17F6FFFFF2 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385857F1306100497F6FFFFB9 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306467097E6FFFFD5 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306466197E6FFFF9386866A16 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306065897E6FFFF9386866405 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093072001930500001303F30318 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B757580D2B +:102B8000B705080093870722130700009385C5FF48 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306464397E6FFFF93868641CB +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B710FF00938000F013C7F0F0B7FE00FF3D +:102C6000938EFE00930120006316D71DB710F00F5E +:102C7000938000FF13C7000FB71EF00F938E0EF066 +:102C8000930130006318D71BB710FF009380F08FBB +:102C900013C7F070B71EFF00938E0EFF9301400024 +:102CA000631AD719B7F00FF09380F00013C7000F25 +:102CB000B7FE0FF0938EFE0F93015000631CD717E1 +:102CC000B7F000FF9380007093C0F070B7FE00FF74 +:102CD000938EFE0093016000639ED01513020000E6 +:102CE000B710F00F938000FF13C7000F1303070006 +:102CF0001302120093022000E31452FEB71EF00FDD +:102D0000938E0EF0930170006316D313130200002C +:102D1000B710FF009380F08F13C7F070130000000E +:102D2000130307001302120093022000E31252FE65 +:102D3000B71EFF00938E0EFF93018000631CD30F1C +:102D400013020000B7F00FF09380F00013C7000FDC +:102D50001300000013000000130307001302120009 +:102D600093022000E31052FEB7FE0FF0938EFE0F89 +:102D7000930190006310D30D13020000B710F00F01 +:102D8000938000FF13C7000F13021200930220006C +:102D9000E31652FEB71EF00F938E0EF09301A000C3 +:102DA000631AD70913020000B710FF009380F0FFE9 +:102DB0001300000013C7F00013021200930220005A +:102DC000E31452FEB71EFF00938E0EFF9301B00076 +:102DD0006312D70713020000B7F00FF09380F000E2 +:102DE000130000001300000013C7000F13021200AD +:102DF00093022000E31252FEB7FE0FF0938EFE0FF7 +:102E00009301C0006318D7039340000F930E000F87 +:102E10009301D0006390D003B700FF009380F00FC0 +:102E200013C0F070930E00009301E0006314D00112 +:102E3000631A300013951100630005001365150037 +:102E4000730000001305100073000000731000C031 +:102E5000417373657274696F6E206661696C656435 +:102E60003A2061646472203E3D202831554C203C5C +:102E70003C203132292026262061646472203C20C7 +:102E80003633202A202831554C203C3C2031322931 +:102E90000A000000417373657274696F6E20666189 +:102EA000696C65643A20212870745B315D5B6164F4 +:102EB00064722F2831554C203C3C203132295D2052 +:102EC000262030783038302920262620636175731B +:102ED00065203D3D203078660A000000417373652F +:102EE0007274696F6E206661696C65643A206E6FFA +:102EF00064650A00417373657274696F6E20666160 +:102F0000696C65643A20757365725F6D6170706994 +:102F10006E675B616464722F2831554C203C3C2005 +:102F20003132295D2E61646472203D3D20300A00FB +:102F3000417373657274696F6E206661696C656454 +:102F40003A2070745B315D5B616464722F28315587 +:102F50004C203C3C203132295D2026203078303412 +:102F6000300A0000417373657274696F6E20666188 +:102F7000696C65643A2070745B315D5B6164647296 +:102F80002F2831554C203C3C203132295D20262011 +:102F900030783038300A0000417373657274696F9D +:102FA0006E206661696C65643A2074662D3E6570BA +:102FB0006320252034203D3D20300A004173736595 +:102FC0007274696F6E206661696C65643A202122B3 +:102FD000696C6C6567616C20696E7374727563747B +:102FE000696F6E220A000000417373657274696F25 +:102FF0006E206661696C65643A202122756E657881 +:1030000070656374656420657863657074696F6E5C +:10301000220A0000417373657274696F6E206661E5 +:10302000696C65643A202122756E737570706F72D9 +:103030007465642073617470206D6F6465220A008A +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/rv32um-p-div.hex b/benchmarks/riscv_tests/isa/rv32um-p-div.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-div.hex rename to benchmarks/riscv_tests/isa/rv32um-p-div.hex diff --git a/benchmarks/riscv_tests/rv32um-p-divu.hex b/benchmarks/riscv_tests/isa/rv32um-p-divu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-divu.hex rename to benchmarks/riscv_tests/isa/rv32um-p-divu.hex diff --git a/benchmarks/riscv_tests/rv32um-p-mul.hex b/benchmarks/riscv_tests/isa/rv32um-p-mul.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-mul.hex rename to benchmarks/riscv_tests/isa/rv32um-p-mul.hex diff --git a/benchmarks/riscv_tests/rv32um-p-mulh.hex b/benchmarks/riscv_tests/isa/rv32um-p-mulh.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-mulh.hex rename to benchmarks/riscv_tests/isa/rv32um-p-mulh.hex diff --git a/benchmarks/riscv_tests/rv32um-p-mulhsu.hex b/benchmarks/riscv_tests/isa/rv32um-p-mulhsu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-mulhsu.hex rename to benchmarks/riscv_tests/isa/rv32um-p-mulhsu.hex diff --git a/benchmarks/riscv_tests/rv32um-p-mulhu.hex b/benchmarks/riscv_tests/isa/rv32um-p-mulhu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-mulhu.hex rename to benchmarks/riscv_tests/isa/rv32um-p-mulhu.hex diff --git a/benchmarks/riscv_tests/rv32um-p-rem.hex b/benchmarks/riscv_tests/isa/rv32um-p-rem.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-rem.hex rename to benchmarks/riscv_tests/isa/rv32um-p-rem.hex diff --git a/benchmarks/riscv_tests/rv32um-p-remu.hex b/benchmarks/riscv_tests/isa/rv32um-p-remu.hex similarity index 100% rename from benchmarks/riscv_tests/rv32um-p-remu.hex rename to benchmarks/riscv_tests/isa/rv32um-p-remu.hex diff --git a/benchmarks/riscv_tests/isa/rv32um-v-div.hex b/benchmarks/riscv_tests/isa/rv32um-v-div.hex new file mode 100644 index 00000000..270c457f --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-div.hex @@ -0,0 +1,283 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385458A97F6FFFFE2 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058797F6FFFF9386C6AD17F6FFFFE5 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C5841C +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857F97F6FFFF6C +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857897F6FFFF9386C68C17F6FFFF83 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385056F1306100497F6FFFF49 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65F97E6FFFF66 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C65097E6FFFF9386866AA7 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864797E6FFFF9386866496 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE7093071000930500001303F30329 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7977A07CF +:102B8000B705080093874732130700009385C5FFF8 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C63297E6FFFF938686415C +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930040011301600033C72002930E30003F +:102C6000930120006314D70D9300C0FE1301600090 +:102C700033C72002930ED0FF930130006318D70BA7 +:102C8000930040011301A0FF33C72002930ED0FF31 +:102C900093014000631CD7099300C0FE1301A0FFFD +:102CA00033C72002930E3000930150006310D70900 +:102CB000B70000801301100033C72002B70E008058 +:102CC000930160006314D707B70000801301F0FF81 +:102CD00033C72002B70E0080930170006318D70538 +:102CE000B70000801301000033C72002930EF0FFED +:102CF00093018000631CD7039300100013010000B0 +:102D000033C72002930EF0FF930190006310D703A6 +:102D1000930000001301000033C72002930EF0FF60 +:102D20009301A0006314D701631A300013951100BA +:102D30006300050013651500730000001305100003 +:082D400073000000731000C0D5 +:102D4800417373657274696F6E206661696C65643E +:102D58003A2061646472203E3D202831554C203C65 +:102D68003C203132292026262061646472203C20D0 +:102D78003633202A202831554C203C3C203132293A +:102D88000A000000417373657274696F6E20666192 +:102D9800696C65643A20212870745B315D5B6164FD +:102DA80064722F2831554C203C3C203132295D205B +:102DB8002620307830383029202626206361757324 +:102DC80065203D3D203078660A0000004173736538 +:102DD8007274696F6E206661696C65643A206E6F03 +:102DE80064650A00417373657274696F6E20666169 +:102DF800696C65643A20757365725F6D617070699E +:102E08006E675B616464722F2831554C203C3C200E +:102E18003132295D2E61646472203D3D20300A0004 +:102E2800417373657274696F6E206661696C65645D +:102E38003A2070745B315D5B616464722F28315590 +:102E48004C203C3C203132295D202620307830341B +:102E5800300A0000417373657274696F6E20666191 +:102E6800696C65643A2070745B315D5B616464729F +:102E78002F2831554C203C3C203132295D2026201A +:102E880030783038300A0000417373657274696FA6 +:102E98006E206661696C65643A2074662D3E6570C3 +:102EA8006320252034203D3D20300A00417373659E +:102EB8007274696F6E206661696C65643A202122BC +:102EC800696C6C6567616C20696E73747275637484 +:102ED800696F6E220A000000417373657274696F2E +:102EE8006E206661696C65643A202122756E65788A +:102EF80070656374656420657863657074696F6E66 +:102F0800220A0000417373657274696F6E206661EE +:102F1800696C65643A202122756E737570706F72E2 +:102F28007465642073617470206D6F6465220A0093 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32um-v-divu.hex b/benchmarks/riscv_tests/isa/rv32um-v-divu.hex new file mode 100644 index 00000000..377c3df4 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-divu.hex @@ -0,0 +1,283 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385858A97F6FFFFA2 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385458797F6FFFF9386C6AD17F6FFFFA5 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF8130510049715000093850585DB +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385C57F97F6FFFF2C +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385C57897F6FFFF9386C68C17F6FFFF43 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385456F1306100497F6FFFF09 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306066097E6FFFF25 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306065197E6FFFF9386866A66 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306C64797E6FFFF9386866456 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE709307E002930500001303F30357 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B77E0FA3 +:102B8000B70508009387E796130700009385C5FFF4 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306063397E6FFFF938686411B +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930040011301600033D72002930E30002F +:102C6000930120006316D70D9300C0FE130160008E +:102C700033D72002B7BEAA2A938E7EAA93013000D2 +:102C80006318D70B930040011301A0FF33D7200234 +:102C9000930E000093014000631CD7099300C0FE0F +:102CA0001301A0FF33D72002930E000093015000C0 +:102CB0006310D709B70000801301100033D720023A +:102CC000B70E0080930160006314D707B70000803F +:102CD0001301F0FF33D72002930E00009301700020 +:102CE0006318D705B70000801301000033D7200216 +:102CF000930EF0FF93018000631CD7039300100034 +:102D00001301000033D72002930EF0FF93019000CF +:102D10006310D703930000001301000033D7200293 +:102D2000930EF0FF9301A0006314D701631A3000E3 +:102D30001395110063000500136515007300000072 +:0C2D40001305100073000000731000C0A9 +:102D4C00417373657274696F6E206661696C65643A +:102D5C003A2061646472203E3D202831554C203C61 +:102D6C003C203132292026262061646472203C20CC +:102D7C003633202A202831554C203C3C2031322936 +:102D8C000A000000417373657274696F6E2066618E +:102D9C00696C65643A20212870745B315D5B6164F9 +:102DAC0064722F2831554C203C3C203132295D2057 +:102DBC002620307830383029202626206361757320 +:102DCC0065203D3D203078660A0000004173736534 +:102DDC007274696F6E206661696C65643A206E6FFF +:102DEC0064650A00417373657274696F6E20666165 +:102DFC00696C65643A20757365725F6D617070699A +:102E0C006E675B616464722F2831554C203C3C200A +:102E1C003132295D2E61646472203D3D20300A0000 +:102E2C00417373657274696F6E206661696C656459 +:102E3C003A2070745B315D5B616464722F2831558C +:102E4C004C203C3C203132295D2026203078303417 +:102E5C00300A0000417373657274696F6E2066618D +:102E6C00696C65643A2070745B315D5B616464729B +:102E7C002F2831554C203C3C203132295D20262016 +:102E8C0030783038300A0000417373657274696FA2 +:102E9C006E206661696C65643A2074662D3E6570BF +:102EAC006320252034203D3D20300A00417373659A +:102EBC007274696F6E206661696C65643A202122B8 +:102ECC00696C6C6567616C20696E73747275637480 +:102EDC00696F6E220A000000417373657274696F2A +:102EEC006E206661696C65643A202122756E657886 +:102EFC0070656374656420657863657074696F6E62 +:102F0C00220A0000417373657274696F6E206661EA +:102F1C00696C65643A202122756E737570706F72DE +:102F2C007465642073617470206D6F6465220A008F +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32um-v-mul.hex b/benchmarks/riscv_tests/isa/rv32um-v-mul.hex new file mode 100644 index 00000000..389ba825 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-mul.hex @@ -0,0 +1,346 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505C997F6FFFFE3 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C597F6FFFF9386C6AD17F6FFFFE7 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585C31D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545BE97F6FFFF5D +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B797F6FFFF9386C68C17F6FFFF84 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5AD1306100497F6FFFF3B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869E97E6FFFF57 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868F97E6FFFF9386866A98 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468697E6FFFF9386866487 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE7093073001930500001303F30308 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B70E0022 +:102B8000B70508009387E797130700009385C5FFF3 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306867197E6FFFF938686415D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000B7800000938000E03771DBB6130171DBB1 +:102C600033872002B71E0000938E0E2093010002CE +:102C70006314D74BB7800000938000FC3771DBB63C +:102C8000130171DB33872002B71E0000938E0E24E0 +:102C9000930110026312D749930000001301000052 +:102CA00033872002930E0000930120006316D7475C +:102CB000930010001301100033872002930E1000C0 +:102CC00093013000631AD745930030001301700060 +:102CD00033872002930E500193014000631ED743B7 +:102CE000930000003781FFFF33872002930E00001E +:102CF000930150006312D743B70000801301000016 +:102D000033872002930E0000930160006316D741C1 +:102D1000B70000803781FFFF33872002930E000049 +:102D200093017000631AD73FB7B0AAAA9380B0AAE4 +:102D3000370103001301D1E733872002B70E0100EA +:102D4000938EFEF79301E0016318D73DB7000300AF +:102D50009380D0E737B1AAAA1301B1AA3387200222 +:102D6000B70E0100938EFEF79301F0016316D73B77 +:102D7000B70000FF370100FF33872002930E0000E9 +:102D800093012002631AD7399300F0FF1301F0FF7B +:102D900033872002930E100093013002631ED73751 +:102DA0009300F0FF1301100033872002930EF0FF11 +:102DB000930140026312D737930010001301F0FF14 +:102DC00033872002930EF0FF930150026316D7352C +:102DD0009300D0001301B000B3802002930EF008DE +:102DE00093018000639AD0339300E0001301B00098 +:102DF00033812002930EA00993019000631ED1310C +:102E00009300D000B3801002930E900A9301A000AB +:102E10006394D031130200009300D0001301B0007E +:102E200033872002130307001302120093022000CD +:102E3000E31452FE930EF0089301B000631ED32DED +:102E4000130200009300E0001301B000338720025A +:102E50001300000013030700130212009302200066 +:102E6000E31252FE930EA0099301C0006316D32B08 +:102E7000130200009300F0001301B000338720021A +:102E800013000000130000001303070013021200D8 +:102E900093022000E31052FE930E500A9301D000DB +:102EA000631CD327130200009300D0001301B0006D +:102EB000338720021302120093022000E31652FE11 +:102EC000930EF0089301E0006318D7251302000069 +:102ED0009300E0001301B0001300000033872002CC +:102EE0001302120093022000E31452FE930EA00975 +:102EF0009301F0006312D723130200009300F00047 +:102F00001301B000130000001300000033872002FB +:102F10001302120093022000E31252FE930E500A95 +:102F200093010001631AD71F130200009300D00021 +:102F3000130000001301B0003387200213021200B7 +:102F400093022000E31452FE930EF0089301100147 +:102F50006314D71D130200009300E000130000006B +:102F60001301B00013000000338720021302120087 +:102F700093022000E31252FE930EA0099301200158 +:102F8000631CD719130200009300F0001300000027 +:102F9000130000001301B000338720021302120057 +:102FA00093022000E31252FE930E500A9301300167 +:102FB0006314D717130200001301B0009300D00070 +:102FC000338720021302120093022000E31652FE00 +:102FD000930EF008930140016310D715130200000F +:102FE0001301B0009300E0001300000033872002BB +:102FF0001302120093022000E31452FE930EA00964 +:1030000093015001631AD711130200001301B0009D +:103010009300F0001300000013000000338720022B +:103020001302120093022000E31252FE930E500A84 +:10303000930160016312D70F130200001301B00067 +:10304000130000009300D000338720021302120007 +:1030500093022000E31452FE930EF00893017001D6 +:10306000631CD70B130200001301B0001300000013 +:103070009300E000130000003387200213021200C7 +:1030800093022000E31252FE930EA00993018001E7 +:103090006314D709130200001301B00013000000ED +:1030A000130000009300F000338720021302120087 +:1030B00093022000E31252FE930E500A93019001F6 +:1030C000631CD7059300F00133011002930E00003A +:1030D0009301A0016312D105930000023381000225 +:1030E000930E00009301B0016318D103B3000002F6 +:1030F000930E00009301C0016390D003930010026F +:103100001301200233802002930E00009301D001AE +:103110006314D001631A3000139511006300050099 +:103120001365150073000000130510007300000004 +:04313000731000C058 +:10313400417373657274696F6E206661696C65644E +:103144003A2061646472203E3D202831554C203C75 +:103154003C203132292026262061646472203C20E0 +:103164003633202A202831554C203C3C203132294A +:103174000A000000417373657274696F6E206661A2 +:10318400696C65643A20212870745B315D5B61640D +:1031940064722F2831554C203C3C203132295D206B +:1031A4002620307830383029202626206361757334 +:1031B40065203D3D203078660A0000004173736548 +:1031C4007274696F6E206661696C65643A206E6F13 +:1031D40064650A00417373657274696F6E20666179 +:1031E400696C65643A20757365725F6D61707069AE +:1031F4006E675B616464722F2831554C203C3C201F +:103204003132295D2E61646472203D3D20300A0014 +:10321400417373657274696F6E206661696C65646D +:103224003A2070745B315D5B616464722F283155A0 +:103234004C203C3C203132295D202620307830342B +:10324400300A0000417373657274696F6E206661A1 +:10325400696C65643A2070745B315D5B61646472AF +:103264002F2831554C203C3C203132295D2026202A +:1032740030783038300A0000417373657274696FB6 +:103284006E206661696C65643A2074662D3E6570D3 +:103294006320252034203D3D20300A0041737365AE +:1032A4007274696F6E206661696C65643A202122CC +:1032B400696C6C6567616C20696E73747275637494 +:1032C400696F6E220A000000417373657274696F3E +:1032D4006E206661696C65643A202122756E65789A +:1032E40070656374656420657863657074696F6E76 +:1032F400220A0000417373657274696F6E206661FF +:10330400696C65643A202122756E737570706F72F2 +:103314007465642073617470206D6F6465220A00A3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32um-v-mulh.hex b/benchmarks/riscv_tests/isa/rv32um-v-mulh.hex new file mode 100644 index 00000000..d135bd73 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-mulh.hex @@ -0,0 +1,346 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505C997F6FFFFE3 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C597F6FFFF9386C6AD17F6FFFFE7 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585C31D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545BE97F6FFFF5D +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B797F6FFFF9386C68C17F6FFFF84 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5AD1306100497F6FFFF3B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869E97E6FFFF57 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868F97E6FFFF9386866A98 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468697E6FFFF9386866487 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307B003930500001303F30386 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B737980E0A +:102B8000B70508009387D799130700009385C5FF01 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306867197E6FFFF938686415D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930000001301000033972002930E000040 +:102C600093012000631AD74B93001000130110004A +:102C700033972002930E000093013000631ED74962 +:102C8000930030001301700033972002930E000070 +:102C9000930140006312D749930000003781FFFF82 +:102CA00033972002930E0000930150006316D7471C +:102CB000B70000801301000033972002930E00003C +:102CC00093016000631AD745B7000080130100002C +:102CD00033972002930E000093017000631ED743C8 +:102CE000B7B0AAAA9380B0AA370103001301D1E7B5 +:102CF00033972002B70EFFFF938E1E089301E00169 +:102D0000631CD741B70003009380D0E737B1AAAA6C +:102D10001301B1AA33972002B70EFFFF938E1E084E +:102D20009301F001631AD73FB70000FF370100FF9E +:102D300033972002B70E010093010002631ED73DB6 +:102D40009300F0FF1301F0FF33972002930E000071 +:102D5000930110026312D73D9300F0FF130110009E +:102D600033972002930EF0FF930120026316D73BA6 +:102D7000930010001301F0FF33972002930EF0FF31 +:102D800093013002631AD739B700D0003701B00081 +:102D9000B3902002B79E0000938E0EF09301800046 +:102DA000639CD037B700E0003701B00033912002B8 +:102DB000B7AE0000938E0EA093019000631ED13534 +:102DC000B700D000B3901002B7BE0000938E0E90F3 +:102DD0009301A0006392D03513020000B700D00029 +:102DE0003701B000339720021303070013021200CB +:102DF00093022000E31452FEB79E0000938E0EF063 +:102E00009301B000631AD33113020000B700E00051 +:102E10003701B000339720021300000013030700AE +:102E20001302120093022000E31252FEB7AE00001C +:102E3000938E0EA09301C0006310D32F13020000E5 +:102E4000B700F0003701B0003397200213000000F4 +:102E50001300000013030700130212009302200066 +:102E6000E31052FEB7AE0000938E0E509301D000D7 +:102E70006314D32B13020000B700D0003701B00059 +:102E8000339720021302120093022000E31652FE31 +:102E9000B79E0000938E0EF09301E000631ED727CB +:102EA00013020000B700E0003701B000130000007B +:102EB000339720021302120093022000E31452FE03 +:102EC000B7AE0000938E0EA09301F0006316D725D5 +:102ED00013020000B700F0003701B000130000003B +:102EE0001300000033972002130212009302200007 +:102EF000E31252FEB7AE0000938E0E509301000114 +:102F0000631CD72113020000B700D000130000009B +:102F10003701B00033972002130212009302200001 +:102F2000E31452FEB79E0000938E0EF09301100141 +:102F30006314D71F13020000B700E0001300000065 +:102F40003701B00013000000339720021302120073 +:102F500093022000E31252FEB7AE0000938E0EA043 +:102F600093012001631AD71B13020000B700F00081 +:102F700013000000130000003701B0003397200257 +:102F80001302120093022000E31252FEB7AE0000BB +:102F9000938E0E50930130016310D7191302000075 +:102FA0003701B000B700D00033972002130212009F +:102FB00093022000E31652FEB79E0000938E0EF09F +:102FC00093014001631AD715130200003701B000C6 +:102FD000B700E00013000000339720021302120034 +:102FE00093022000E31452FEB7AE0000938E0EA0B1 +:102FF000930150016312D713130200003701B00090 +:10300000B700F00013000000130000003397200207 +:103010001302120093022000E31252FEB7AE00002A +:10302000938E0E50930160016318D70F13020000B6 +:103030003701B00013000000B700D0003397200222 +:103040001302120093022000E31452FEB79E000008 +:10305000938E0EF0930170016310D70D13020000E0 +:103060003701B00013000000B700E00013000000BB +:10307000339720021302120093022000E31252FE43 +:10308000B7AE0000938E0EA0930180016316D7099E +:10309000130200003701B00013000000130000000D +:1030A000B700F000339720021302120093022000B1 +:1030B000E31252FEB7AE0000938E0E5093019001C2 +:1030C000631CD705B700007C33111002930E00007B +:1030D0009301A0016312D105B70000803391000273 +:1030E000930E00009301B0016318D103B3100002E6 +:1030F000930E00009301C0016390D003B70010024B +:103100003701200233902002930E00009301D0017A +:103110006314D001631A3000139511006300050099 +:103120001365150073000000130510007300000004 +:04313000731000C058 +:10313400417373657274696F6E206661696C65644E +:103144003A2061646472203E3D202831554C203C75 +:103154003C203132292026262061646472203C20E0 +:103164003633202A202831554C203C3C203132294A +:103174000A000000417373657274696F6E206661A2 +:10318400696C65643A20212870745B315D5B61640D +:1031940064722F2831554C203C3C203132295D206B +:1031A4002620307830383029202626206361757334 +:1031B40065203D3D203078660A0000004173736548 +:1031C4007274696F6E206661696C65643A206E6F13 +:1031D40064650A00417373657274696F6E20666179 +:1031E400696C65643A20757365725F6D61707069AE +:1031F4006E675B616464722F2831554C203C3C201F +:103204003132295D2E61646472203D3D20300A0014 +:10321400417373657274696F6E206661696C65646D +:103224003A2070745B315D5B616464722F283155A0 +:103234004C203C3C203132295D202620307830342B +:10324400300A0000417373657274696F6E206661A1 +:10325400696C65643A2070745B315D5B61646472AF +:103264002F2831554C203C3C203132295D2026202A +:1032740030783038300A0000417373657274696FB6 +:103284006E206661696C65643A2074662D3E6570D3 +:103294006320252034203D3D20300A0041737365AE +:1032A4007274696F6E206661696C65643A202122CC +:1032B400696C6C6567616C20696E73747275637494 +:1032C400696F6E220A000000417373657274696F3E +:1032D4006E206661696C65643A202122756E65789A +:1032E40070656374656420657863657074696F6E76 +:1032F400220A0000417373657274696F6E206661FF +:10330400696C65643A202122756E737570706F72F2 +:103314007465642073617470206D6F6465220A00A3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32um-v-mulhsu.hex b/benchmarks/riscv_tests/isa/rv32um-v-mulhsu.hex new file mode 100644 index 00000000..e658d412 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-mulhsu.hex @@ -0,0 +1,346 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505C997F6FFFFE3 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C597F6FFFF9386C6AD17F6FFFFE7 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585C31D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545BE97F6FFFF5D +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B797F6FFFF9386C68C17F6FFFF84 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5AD1306100497F6FFFF3B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869E97E6FFFF57 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868F97E6FFFF9386866A98 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468697E6FFFF9386866487 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307A003930500001303F30396 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B727FB00C5 +:102B8000B70508009387C7F0130700009385C5FFBA +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306867197E6FFFF938686415D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930000001301000033A72002930E000030 +:102C600093012000631AD74B93001000130110004A +:102C700033A72002930E000093013000631ED74952 +:102C8000930030001301700033A72002930E000060 +:102C9000930140006312D749930000003781FFFF82 +:102CA00033A72002930E0000930150006316D7470C +:102CB000B70000801301000033A72002930E00002C +:102CC00093016000631AD745B70000803781FFFF8A +:102CD00033A72002B74E008093017000631ED743D4 +:102CE000B7B0AAAA9380B0AA370103001301D1E7B5 +:102CF00033A72002B70EFFFF938E1E089301E00159 +:102D0000631CD741B70003009380D0E737B1AAAA6C +:102D10001301B1AA33A72002B70E0200938EEEEF83 +:102D20009301F001631AD73FB70000FF370100FF9E +:102D300033A72002B70E01FF93010002631ED73DA7 +:102D40009300F0FF1301F0FF33A72002930EF0FF72 +:102D5000930110026312D73D9300F0FF130110009E +:102D600033A72002930EF0FF930120026316D73B96 +:102D7000930010001301F0FF33A72002930E000010 +:102D800093013002631AD739B700D0003701B00081 +:102D9000B3A02002B79E0000938E0EF09301800036 +:102DA000639CD037B700E0003701B00033A12002A8 +:102DB000B7AE0000938E0EA093019000631ED13534 +:102DC000B700D000B3A01002B7BE0000938E0E90E3 +:102DD0009301A0006392D03513020000B700D00029 +:102DE0003701B00033A720021303070013021200BB +:102DF00093022000E31452FEB79E0000938E0EF063 +:102E00009301B000631AD33113020000B700E00051 +:102E10003701B00033A7200213000000130307009E +:102E20001302120093022000E31252FEB7AE00001C +:102E3000938E0EA09301C0006310D32F13020000E5 +:102E4000B700F0003701B00033A7200213000000E4 +:102E50001300000013030700130212009302200066 +:102E6000E31052FEB7AE0000938E0E509301D000D7 +:102E70006314D32B13020000B700D0003701B00059 +:102E800033A720021302120093022000E31652FE21 +:102E9000B79E0000938E0EF09301E000631ED727CB +:102EA00013020000B700E0003701B000130000007B +:102EB00033A720021302120093022000E31452FEF3 +:102EC000B7AE0000938E0EA09301F0006316D725D5 +:102ED00013020000B700F0003701B000130000003B +:102EE0001300000033A720021302120093022000F7 +:102EF000E31252FEB7AE0000938E0E509301000114 +:102F0000631CD72113020000B700D000130000009B +:102F10003701B00033A720021302120093022000F1 +:102F2000E31452FEB79E0000938E0EF09301100141 +:102F30006314D71F13020000B700E0001300000065 +:102F40003701B0001300000033A720021302120063 +:102F500093022000E31252FEB7AE0000938E0EA043 +:102F600093012001631AD71B13020000B700F00081 +:102F700013000000130000003701B00033A7200247 +:102F80001302120093022000E31252FEB7AE0000BB +:102F9000938E0E50930130016310D7191302000075 +:102FA0003701B000B700D00033A72002130212008F +:102FB00093022000E31652FEB79E0000938E0EF09F +:102FC00093014001631AD715130200003701B000C6 +:102FD000B700E0001300000033A720021302120024 +:102FE00093022000E31452FEB7AE0000938E0EA0B1 +:102FF000930150016312D713130200003701B00090 +:10300000B700F000130000001300000033A72002F7 +:103010001302120093022000E31252FEB7AE00002A +:10302000938E0E50930160016318D70F13020000B6 +:103030003701B00013000000B700D00033A7200212 +:103040001302120093022000E31452FEB79E000008 +:10305000938E0EF0930170016310D70D13020000E0 +:103060003701B00013000000B700E00013000000BB +:1030700033A720021302120093022000E31252FE33 +:10308000B7AE0000938E0EA0930180016316D7099E +:10309000130200003701B00013000000130000000D +:1030A000B700F00033A720021302120093022000A1 +:1030B000E31252FEB7AE0000938E0E5093019001C2 +:1030C000631CD705B700007C33211002930E00006B +:1030D0009301A0016312D105B700008033A1000263 +:1030E000930E00009301B0016318D103B3200002D6 +:1030F000930E00009301C0016390D003B70010024B +:103100003701200233A02002930E00009301D0016A +:103110006314D001631A3000139511006300050099 +:103120001365150073000000130510007300000004 +:04313000731000C058 +:10313400417373657274696F6E206661696C65644E +:103144003A2061646472203E3D202831554C203C75 +:103154003C203132292026262061646472203C20E0 +:103164003633202A202831554C203C3C203132294A +:103174000A000000417373657274696F6E206661A2 +:10318400696C65643A20212870745B315D5B61640D +:1031940064722F2831554C203C3C203132295D206B +:1031A4002620307830383029202626206361757334 +:1031B40065203D3D203078660A0000004173736548 +:1031C4007274696F6E206661696C65643A206E6F13 +:1031D40064650A00417373657274696F6E20666179 +:1031E400696C65643A20757365725F6D61707069AE +:1031F4006E675B616464722F2831554C203C3C201F +:103204003132295D2E61646472203D3D20300A0014 +:10321400417373657274696F6E206661696C65646D +:103224003A2070745B315D5B616464722F283155A0 +:103234004C203C3C203132295D202620307830342B +:10324400300A0000417373657274696F6E206661A1 +:10325400696C65643A2070745B315D5B61646472AF +:103264002F2831554C203C3C203132295D2026202A +:1032740030783038300A0000417373657274696FB6 +:103284006E206661696C65643A2074662D3E6570D3 +:103294006320252034203D3D20300A0041737365AE +:1032A4007274696F6E206661696C65643A202122CC +:1032B400696C6C6567616C20696E73747275637494 +:1032C400696F6E220A000000417373657274696F3E +:1032D4006E206661696C65643A202122756E65789A +:1032E40070656374656420657863657074696F6E76 +:1032F400220A0000417373657274696F6E206661FF +:10330400696C65643A202122756E737570706F72F2 +:103314007465642073617470206D6F6465220A00A3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32um-v-mulhu.hex b/benchmarks/riscv_tests/isa/rv32um-v-mulhu.hex new file mode 100644 index 00000000..ab8c0060 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-mulhu.hex @@ -0,0 +1,346 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230177100001301412DF32240F18B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640172300004C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001747000013074704832507006384051CA3 +:1023C00083A74500174600000326C6022320F70016 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297470000938707E0E9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009747000023AE07F46FF09FF3BA +:1024A0001305100497150000938505C997F6FFFFE3 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385C5C597F6FFFF9386C6AD17F6FFFFE7 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF81305100497150000938585C31D +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F0001305100497150000938545BE97F6FFFF5D +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049715000036 +:10273000938545B797F6FFFF9386C68C17F6FFFF84 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000971500009385C5AD1306100497F6FFFF3B +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000974400009384449E171D00005D +:10282000130D4D7EB70C0400974B0000938B8BBCAF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69747000038 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004171600001306869E97E6FFFF57 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000171600001306868F97E6FFFF9386866A98 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000171600001306468697E6FFFF9386866487 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F163920716172600009C +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108971500009385855CAF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009737C07F93870754174700002326F79254 +:102AD0009737C07F9387077217470000232CF79022 +:102AE00037030800173700001307C751173E0000CF +:102AF000130ECE709307B003930500001303F30386 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097370000E4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7B7E80E3A +:102B8000B70508009387F75C130700009385C5FF1E +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306867197E6FFFF938686415D +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930000001301000033B72002930E000020 +:102C600093012000631AD74B93001000130110004A +:102C700033B72002930E000093013000631ED74942 +:102C8000930030001301700033B72002930E000050 +:102C9000930140006312D749930000003781FFFF82 +:102CA00033B72002930E0000930150006316D747FC +:102CB000B70000801301000033B72002930E00001C +:102CC00093016000631AD745B70000803781FFFF8A +:102CD00033B72002B7CEFF7F93017000631ED74346 +:102CE000B7B0AAAA9380B0AA370103001301D1E7B5 +:102CF00033B72002B70E0200938EEEEF9301E0018E +:102D0000631CD741B70003009380D0E737B1AAAA6C +:102D10001301B1AA33B72002B70E0200938EEEEF73 +:102D20009301F001631AD73FB70000FF370100FF9E +:102D300033B72002B70E01FE93010002631ED73D98 +:102D40009300F0FF1301F0FF33B72002930EE0FF72 +:102D5000930110026312D73D9300F0FF130110009E +:102D600033B72002930E0000930120026316D73B75 +:102D7000930010001301F0FF33B72002930E000000 +:102D800093013002631AD739B700D0003701B00081 +:102D9000B3B02002B79E0000938E0EF09301800026 +:102DA000639CD037B700E0003701B00033B1200298 +:102DB000B7AE0000938E0EA093019000631ED13534 +:102DC000B700D000B3B01002B7BE0000938E0E90D3 +:102DD0009301A0006392D03513020000B700D00029 +:102DE0003701B00033B720021303070013021200AB +:102DF00093022000E31452FEB79E0000938E0EF063 +:102E00009301B000631AD33113020000B700E00051 +:102E10003701B00033B7200213000000130307008E +:102E20001302120093022000E31252FEB7AE00001C +:102E3000938E0EA09301C0006310D32F13020000E5 +:102E4000B700F0003701B00033B7200213000000D4 +:102E50001300000013030700130212009302200066 +:102E6000E31052FEB7AE0000938E0E509301D000D7 +:102E70006314D32B13020000B700D0003701B00059 +:102E800033B720021302120093022000E31652FE11 +:102E9000B79E0000938E0EF09301E000631ED727CB +:102EA00013020000B700E0003701B000130000007B +:102EB00033B720021302120093022000E31452FEE3 +:102EC000B7AE0000938E0EA09301F0006316D725D5 +:102ED00013020000B700F0003701B000130000003B +:102EE0001300000033B720021302120093022000E7 +:102EF000E31252FEB7AE0000938E0E509301000114 +:102F0000631CD72113020000B700D000130000009B +:102F10003701B00033B720021302120093022000E1 +:102F2000E31452FEB79E0000938E0EF09301100141 +:102F30006314D71F13020000B700E0001300000065 +:102F40003701B0001300000033B720021302120053 +:102F500093022000E31252FEB7AE0000938E0EA043 +:102F600093012001631AD71B13020000B700F00081 +:102F700013000000130000003701B00033B7200237 +:102F80001302120093022000E31252FEB7AE0000BB +:102F9000938E0E50930130016310D7191302000075 +:102FA0003701B000B700D00033B72002130212007F +:102FB00093022000E31652FEB79E0000938E0EF09F +:102FC00093014001631AD715130200003701B000C6 +:102FD000B700E0001300000033B720021302120014 +:102FE00093022000E31452FEB7AE0000938E0EA0B1 +:102FF000930150016312D713130200003701B00090 +:10300000B700F000130000001300000033B72002E7 +:103010001302120093022000E31252FEB7AE00002A +:10302000938E0E50930160016318D70F13020000B6 +:103030003701B00013000000B700D00033B7200202 +:103040001302120093022000E31452FEB79E000008 +:10305000938E0EF0930170016310D70D13020000E0 +:103060003701B00013000000B700E00013000000BB +:1030700033B720021302120093022000E31252FE23 +:10308000B7AE0000938E0EA0930180016316D7099E +:10309000130200003701B00013000000130000000D +:1030A000B700F00033B72002130212009302200091 +:1030B000E31252FEB7AE0000938E0E5093019001C2 +:1030C000631CD705B700007C33311002930E00005B +:1030D0009301A0016312D105B700008033B1000253 +:1030E000930E00009301B0016318D103B3300002C6 +:1030F000930E00009301C0016390D003B70010024B +:103100003701200233B02002930E00009301D0015A +:103110006314D001631A3000139511006300050099 +:103120001365150073000000130510007300000004 +:04313000731000C058 +:10313400417373657274696F6E206661696C65644E +:103144003A2061646472203E3D202831554C203C75 +:103154003C203132292026262061646472203C20E0 +:103164003633202A202831554C203C3C203132294A +:103174000A000000417373657274696F6E206661A2 +:10318400696C65643A20212870745B315D5B61640D +:1031940064722F2831554C203C3C203132295D206B +:1031A4002620307830383029202626206361757334 +:1031B40065203D3D203078660A0000004173736548 +:1031C4007274696F6E206661696C65643A206E6F13 +:1031D40064650A00417373657274696F6E20666179 +:1031E400696C65643A20757365725F6D61707069AE +:1031F4006E675B616464722F2831554C203C3C201F +:103204003132295D2E61646472203D3D20300A0014 +:10321400417373657274696F6E206661696C65646D +:103224003A2070745B315D5B616464722F283155A0 +:103234004C203C3C203132295D202620307830342B +:10324400300A0000417373657274696F6E206661A1 +:10325400696C65643A2070745B315D5B61646472AF +:103264002F2831554C203C3C203132295D2026202A +:1032740030783038300A0000417373657274696FB6 +:103284006E206661696C65643A2074662D3E6570D3 +:103294006320252034203D3D20300A0041737365AE +:1032A4007274696F6E206661696C65643A202122CC +:1032B400696C6C6567616C20696E73747275637494 +:1032C400696F6E220A000000417373657274696F3E +:1032D4006E206661696C65643A202122756E65789A +:1032E40070656374656420657863657074696F6E76 +:1032F400220A0000417373657274696F6E206661FF +:10330400696C65643A202122756E737570706F72F2 +:103314007465642073617470206D6F6465220A00A3 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32um-v-rem.hex b/benchmarks/riscv_tests/isa/rv32um-v-rem.hex new file mode 100644 index 00000000..6eeea7e1 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-rem.hex @@ -0,0 +1,283 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385458A97F6FFFFE2 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058797F6FFFF9386C6AD17F6FFFFE5 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C5841C +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857F97F6FFFF6C +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857897F6FFFF9386C68C17F6FFFF83 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385056F1306100497F6FFFF49 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65F97E6FFFF66 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C65097E6FFFF9386866AA7 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864797E6FFFF9386866496 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE7093074000930500001303F303F9 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B727B90502 +:102B8000B7050800938707B5130700009385C5FFB5 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C63297E6FFFF938686415C +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930040011301600033E72002930E20002F +:102C6000930120006314D70D9300C0FE1301600090 +:102C700033E72002930EE0FF930130006318D70B77 +:102C8000930040011301A0FF33E72002930E2000C0 +:102C900093014000631CD7099300C0FE1301A0FFFD +:102CA00033E72002930EE0FF930150006310D70931 +:102CB000B70000801301100033E72002930E0000DC +:102CC000930160006314D707B70000801301F0FF81 +:102CD00033E72002930E0000930170006318D705BC +:102CE000B70000801301000033E72002B70E008018 +:102CF00093018000631CD7039300100013010000B0 +:102D000033E72002930E1000930190006310D70365 +:102D1000930000001301000033E72002930E00002F +:102D20009301A0006314D701631A300013951100BA +:102D30006300050013651500730000001305100003 +:082D400073000000731000C0D5 +:102D4800417373657274696F6E206661696C65643E +:102D58003A2061646472203E3D202831554C203C65 +:102D68003C203132292026262061646472203C20D0 +:102D78003633202A202831554C203C3C203132293A +:102D88000A000000417373657274696F6E20666192 +:102D9800696C65643A20212870745B315D5B6164FD +:102DA80064722F2831554C203C3C203132295D205B +:102DB8002620307830383029202626206361757324 +:102DC80065203D3D203078660A0000004173736538 +:102DD8007274696F6E206661696C65643A206E6F03 +:102DE80064650A00417373657274696F6E20666169 +:102DF800696C65643A20757365725F6D617070699E +:102E08006E675B616464722F2831554C203C3C200E +:102E18003132295D2E61646472203D3D20300A0004 +:102E2800417373657274696F6E206661696C65645D +:102E38003A2070745B315D5B616464722F28315590 +:102E48004C203C3C203132295D202620307830341B +:102E5800300A0000417373657274696F6E20666191 +:102E6800696C65643A2070745B315D5B616464729F +:102E78002F2831554C203C3C203132295D2026201A +:102E880030783038300A0000417373657274696FA6 +:102E98006E206661696C65643A2074662D3E6570C3 +:102EA8006320252034203D3D20300A00417373659E +:102EB8007274696F6E206661696C65643A202122BC +:102EC800696C6C6567616C20696E73747275637484 +:102ED800696F6E220A000000417373657274696F2E +:102EE8006E206661696C65643A202122756E65788A +:102EF80070656374656420657863657074696F6E66 +:102F0800220A0000417373657274696F6E206661EE +:102F1800696C65643A202122756E737570706F72E2 +:102F28007465642073617470206D6F6465220A0093 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/isa/rv32um-v-remu.hex b/benchmarks/riscv_tests/isa/rv32um-v-remu.hex new file mode 100644 index 00000000..418d2f51 --- /dev/null +++ b/benchmarks/riscv_tests/isa/rv32um-v-remu.hex @@ -0,0 +1,283 @@ +:0200000480007A +:100000006F00C0006F20C0276F2080279300000082 +:10001000130100009301000013020000930200008E +:100020001303000093030000130400009304000076 +:10003000130500009305000013060000930600005E +:100040001307000093070000130800009308000046 +:100050001309000093090000130A0000930A00002E +:10006000130B0000930B0000130C0000930C000016 +:10007000130D0000930D0000130E0000930E0000FE +:10008000130F0000930F000097020000938202F804 +:1000900073905230176100001301412DF32240F19B +:1000A0009392C2003301510073100134EF20103AD3 +:1000B00017350000130505BA6F20D01583224508B7 +:1000C0007390121483204500032185008321C5000D +:1000D0000322050183224501032385018323C501F2 +:1000E00003240502832445028325C5020326050354 +:1000F00083264503032785038327C50303280504B7 +:1001000083284504032985048329C504032A05059A +:10011000832A4505032B8505832BC505032C05067E +:10012000832C4506032D8506832DC506032E050762 +:10013000832E4507032F8507832FC50703258502D7 +:1001400073002010731101142322110023263100A3 +:1001500023284100232A5100232C6100232E710003 +:1001600023208102232291022324A1022326B1020B +:100170002328C102232AD102232CE102232EF102DB +:1001800023200105232211052324210523263105DF +:1001900023284105232A5105232C6105232E7105AF +:1001A00023208107232291072324A1072326B107B7 +:1001B0002328C107232AD107232CE107232EF10787 +:1001C000F312011423245100F322001023205108BC +:1001D000F322101423225108F3223014232451084F +:1001E000F322201423265108130501006F20004735 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000B3E7C500B367F50093F73700B306C50023 +:10201000638407023386C50093070500637ED502FB +:1020200003C705009385150093871700A38FE7FE6C +:10203000E398C5FE67800000E37ED5FE93070500A8 +:1020400003A70500938747009385450023AEE7FE6D +:10205000E3E8D7FE6780000067800000B367C50033 +:1020600093F737003306C5006380070293F5F50F39 +:10207000930705006370C50493871700A38FB7FE0D +:10208000E31CF6FE6780000093F5F50F939785003B +:10209000B3E7B70093950701B3E5F500E374C5FE18 +:1020A000930705009387470023AEB7FEE3ECC7FE16 +:1020B000678000006780000083470500638E07008B +:1020C0009307050003C7170093871700E31C07FE5B +:1020D0003385A7406780000013050000678000007B +:1020E00083470500938515001305150003C7F5FF09 +:1020F00063880700E386E7FE3385E74067800000DA +:10210000930700006FF05FFFB367B50093F73700E8 +:10211000639E07021378C6FF330805016378050341 +:10212000930705006F0000019387470093854500E2 +:1021300063F8070183A6070003A70500E386E6FE10 +:102140003385A7403306A640138507003386C500B4 +:102150006F00400103C705008347F5FF9385150015 +:10216000639AE70013051500E396C5FE130500000A +:10217000678000003385E740678000009307050013 +:1021800003C705009387170093851500A38FE7FE0B +:10219000E31807FE6780000003470500930600026E +:1021A000930705006318D70003C71700938717002C +:1021B000E30CD7FE9306D0026300D7069306B00265 +:1021C0006300D70483C607009305000063820604FA +:1021D0001305000093871700138606FD13172500CB +:1021E00083C607003305A700131515003305A600A5 +:1021F000E39206FE638005023305A040678000007D +:1022000083C617009305000093871700E39206FC2E +:10221000130500006780000083C6170093051000B7 +:1022200093871700E39606FA130500006FF09FFEF0 +:1022300017F6FFFF130606DD032706008327460077 +:102240009355F5413367F7006306070297F6FFFFE2 +:10225000938646DF9307000023A0F60013080000D2 +:1022600023A2060103270600832746003367F700F1 +:10227000E31207FE2320A6002322B6006F00000011 +:10228000130101FF1305903423261100EFF05FFACC +:10229000130101FE1306C1001307B10113039000DF +:1022A0006F008000138707009377F500B337F300C2 +:1022B000B307F04093F777029376F500938707030F +:1022C000B387F6002300F7009396C5011355450028 +:1022D0009307F7FF33E5A60093D54500E314E6FC2A +:1022E0000345C100230E01006302050693050600A5 +:1022F00097F6FFFF938606D117F6FFFF130686D4E5 +:1023000003A7060083A74600130805009385150060 +:102310003367F700B70801016302070213070000E3 +:102320002320E600930700002322F60003A70600FF +:1023300083A746003367F700E31207FE03C50500D5 +:1023400023A0060123A21601E31C05FA13010102D2 +:102350006780000037F6FFFF3307C500B7E70300CB +:102360006370F7149356C50093820640171300005C +:10237000130343C993972200B307F30003A7070091 +:102380003375C5006306070293760704638C060E57 +:1023900093760708639206189306F000639ED5169D +:1023A0001367070823A0E700730005126780000089 +:1023B0001737000013074704832507006384051CB3 +:1023C00083A74500173600000326C6022320F70026 +:1023D0006382C70C03A7050093972200B307F3009D +:1023E0001357C7001317A700136EF70D1366F701F5 +:1023F00023A0C7017300051297370000938707E0F9 +:1024000093963600B386D70083A706006392071E13 +:1024100083A7050023A0F60083A74500B7050400A5 +:1024200023A2F600F3A50510B707C0FFB307F50018 +:10243000B716000013070500B386D70083AE070068 +:1024400003AE470083A8870003A8C7002320D70155 +:102450002322C7012324170123260701938707019D +:1024600013070701E39CD7FC739005109397220094 +:10247000B307F30023A0C700730005120F1000007C +:10248000678000001367070423A0E70073000512AC +:10249000678000009737000023AE07F46FF09FF3CA +:1024A00013051004971500009385458A97F6FFFFE2 +:1024B000938646B517F6FFFF1306C6B803A70600B6 +:1024C00083A7460013030500938515003367F700C3 +:1024D000B703010163020702930700002320F600FF +:1024E000130800002322060103A7060083A7460065 +:1024F0003367F700E31207FE03C5050023A066005B +:1025000023A27600E31C05FA130101FF1305300036 +:1025100023261100EFF0DFD11305100497150000FA +:102520009385058797F6FFFF9386C6AD17F6FFFFE5 +:10253000130646B103A7060083A74600130E050045 +:10254000938515003367F700B70E01016302070298 +:10255000930700002320F600130800002322060141 +:1025600003A7060083A746003367F700E31207FEC0 +:1025700003C5050023A0C60123A2D601E31C05FA6A +:102580006FF09FF813051004971500009385C5841C +:1025900097F6FFFF938606A717F6FFFF130686AA96 +:1025A00003A7060083A74600130F050093851500B7 +:1025B0003367F700B70F01016302070293070000BA +:1025C0002320F600130800002322060103A70600BB +:1025D00083A746003367F700E31207FE03C5050033 +:1025E00023A0E60123A2F601E31C05FA6FF0DFF158 +:1025F00013051004970500009385857F97F6FFFF6C +:10260000938646A017F6FFFF1306C6A303A706008E +:1026100083A7460013080500938515003367F7006C +:10262000B708010163020702130700002320E60038 +:10263000930700002322F60003A7060083A74600A5 +:102640003367F700E31207FE03C5050023A0060168 +:1026500023A21601E31C05FA6FF01FEB8325C508C2 +:10266000130101FB23248104232611042322910456 +:1026700023202105232E3103232C4103232A510338 +:10268000232861032326710323248103232291033A +:102690002320A103232EB10193078000130405001A +:1026A0006386F516930720006380F506938745FF40 +:1026B000130710006376F7009307F0006392F5228A +:1026C00003258408EFF01FC91305040003248104C7 +:1026D0008320C10483244104032901048329C10305 +:1026E000032A8103832A4103032B0103832BC102A5 +:1026F000032C8102832C4102032D0102832DC10191 +:10270000130101056FD09F9B03274508937737007E +:1027100063980708EF078000731030000327070055 +:1027200083A70700630AF706130510049705000046 +:102730009385857897F6FFFF9386C68C17F6FFFF83 +:102740001306469003A7060083A74600130805005A +:10275000938515003367F700B7080101630207028C +:10276000130700002320E600930700002322F60051 +:1027700003A7060083A746003367F700E31207FEAE +:1027800003C5050023A0060123A21601E31C05FAD8 +:1027900013053000EFF0DFA913051000EFF05FA97B +:1027A000970500009385056F1306100497F6FFFF49 +:1027B0009386468517F5FFFF1305C58803A7060016 +:1027C00083A74600130E0600938515003367F700B4 +:1027D000B70E010163020702930700002320F500F2 +:1027E000130800002322050103A7060083A7460063 +:1027F0003367F700E31207FE03C6050023A0C601F6 +:1028000023A2D601E31C06FA6FF09FF8032B850282 +:10281000371C0000973400009384449E170D00007D +:10282000130D4D7EB70C0400973B0000938B8BBCBF +:102830006F00C00123A2870023A08B00B717000000 +:10284000330CFC00B7F703006302FC1C9357CC0069 +:10285000139437003386840003260600E30006FE47 +:102860009387074093972700B307FD0083A70700CE +:1028700013F60704630C06122326F100F3AD0C10C7 +:10288000B707C0FFB305FC003716000013050C00A6 +:102890002324B100EFF05F87630005028327C100A6 +:1028A0008325810093F707086382070A3716000023 +:1028B00013050C00EFF0CFF43384840073900D10F7 +:1028C00083A70B0023200400E39607F69737000048 +:1028D000938787B223A08B0023A087006FF01FF699 +:1028E00093051004170600001306C65F97E6FFFF66 +:1028F0009386467117E5FFFF1305C57403A706000D +:1029000083A7460013830500130616003367F700FC +:10291000B703010163020702930700002320F500BB +:10292000130800002322050103A7060083A7460021 +:102930003367F700E31207FE8345060023A0660015 +:1029400023A27600E39C05FA6FF09FE4930710043E +:10295000170600001306C65097E6FFFF9386866AA7 +:1029600097E5FFFF9385056E138907001306160090 +:10297000B70901016F004001930700001308000030 +:1029800023A0F50023A2050103A7060083A74600A4 +:102990003367F700E31207FE8347060023A02601F2 +:1029A00023A23601E39207FC6FF09FDE9307100429 +:1029B000170600001306864797E6FFFF9386866496 +:1029C00097E5FFFF93850568138A07001306160035 +:1029D000B70A01016F0040019307000013080000CF +:1029E00023A0F50023A2050103A7060083A7460044 +:1029F0003367F700E31207FE8347060023A0460172 +:102A000023A25601E39207FC6FF09FD813050B0039 +:102A1000EFF01F82F32740F16392071617160000AC +:102A20001306465E9357C600130101F69397A7005D +:102A3000232E1108232C8108970500009385855CBF +:102A400093E7170023A0F500B707002093D6C50031 +:102A5000370700809387F70C232EF6FEB3E7E600D6 +:102A600073900718F3260018639AD716130405000D +:102A70001347F7FF9307F00197020000938242018A +:102A8000F39252307310073B7390073A97D7BF7F8A +:102A90009387876B73905710F3270034B708C07F74 +:102AA000B387170173900714B7B700009387071017 +:102AB00073902730B7E701007390073073504030B0 +:102AC0009727C07F93870754173700002326F79274 +:102AD0009727C07F9387077217370000232CF79042 +:102AE00037030800172700001307C751172E0000EF +:102AF000130ECE7093070002930500001303F30337 +:102B0000938888001396F50193D61700B366D60014 +:102B100033866700B3C7F600330817011316C600E3 +:102B2000939757002320C7002322070193F707023A +:102B300013078700B3E7F60093D51500E314EEFC06 +:102B400013060009930500001305010097270000F4 +:102B500023A4076AEFF08FD0B70700803304F40096 +:102B60001305010023228108EFD04FD58320C1092E +:102B7000032481091301010A67800000B7871B083D +:102B8000B70508009387F7A6130700009385C5FFD4 +:102B900037080080370500406F00C0022FA00600F4 +:102BA0001316F70193D61700B366D600B3C7D70044 +:102BB0009397E7013376F5001357170093870600C4 +:102BC0003367E600B3F6B70013F61700B3860601C5 +:102BD000E31606FC03A006006FF09FFC93051004AB +:102BE000170600001306C63297E6FFFF938686415C +:102BF00017E5FFFF1305054503A7060083A7460059 +:102C000013880500130616003367F700B7080101A3 +:102C100063020702130700002320E500930700006A +:102C20002322F50003A7060083A746003367F700B9 +:102C3000E31207FE8345060023A0060123A2160126 +:102C4000E39C05FA13053000EFF08FDE678000008B +:102C5000930040011301600033F72002930E20001F +:102C6000930120006314D70D9300C0FE1301600090 +:102C700033F72002930E2000930130006318D70B26 +:102C8000930040011301A0FF33F72002930E40018F +:102C900093014000631CD7099300C0FE1301A0FFFD +:102CA00033F72002930EC0FE930150006310D70942 +:102CB000B70000801301100033F72002930E0000CC +:102CC000930160006314D707B70000801301F0FF81 +:102CD00033F72002B70E0080930170006318D70508 +:102CE000B70000801301000033F72002B70E008008 +:102CF00093018000631CD7039300100013010000B0 +:102D000033F72002930E1000930190006310D70355 +:102D1000930000001301000033F72002930E00001F +:102D20009301A0006314D701631A300013951100BA +:102D30006300050013651500730000001305100003 +:082D400073000000731000C0D5 +:102D4800417373657274696F6E206661696C65643E +:102D58003A2061646472203E3D202831554C203C65 +:102D68003C203132292026262061646472203C20D0 +:102D78003633202A202831554C203C3C203132293A +:102D88000A000000417373657274696F6E20666192 +:102D9800696C65643A20212870745B315D5B6164FD +:102DA80064722F2831554C203C3C203132295D205B +:102DB8002620307830383029202626206361757324 +:102DC80065203D3D203078660A0000004173736538 +:102DD8007274696F6E206661696C65643A206E6F03 +:102DE80064650A00417373657274696F6E20666169 +:102DF800696C65643A20757365725F6D617070699E +:102E08006E675B616464722F2831554C203C3C200E +:102E18003132295D2E61646472203D3D20300A0004 +:102E2800417373657274696F6E206661696C65645D +:102E38003A2070745B315D5B616464722F28315590 +:102E48004C203C3C203132295D202620307830341B +:102E5800300A0000417373657274696F6E20666191 +:102E6800696C65643A2070745B315D5B616464729F +:102E78002F2831554C203C3C203132295D2026201A +:102E880030783038300A0000417373657274696FA6 +:102E98006E206661696C65643A2074662D3E6570C3 +:102EA8006320252034203D3D20300A00417373659E +:102EB8007274696F6E206661696C65643A202122BC +:102EC800696C6C6567616C20696E73747275637484 +:102ED800696F6E220A000000417373657274696F2E +:102EE8006E206661696C65643A202122756E65788A +:102EF80070656374656420657863657074696F6E66 +:102F0800220A0000417373657274696F6E206661EE +:102F1800696C65643A202122756E737570706F72E2 +:102F28007465642073617470206D6F6465220A0093 +:040000058000000077 +:00000001FF diff --git a/benchmarks/riscv_tests/machineCsr.hex b/benchmarks/riscv_tests/machineCsr.hex deleted file mode 100644 index 55002ee9..00000000 --- a/benchmarks/riscv_tests/machineCsr.hex +++ /dev/null @@ -1,4597 +0,0 @@ -:0200000480007A -:100000006F0000091300000013000000130000003F -:100010001300000013000000130000001300000094 -:10002000732E2034631E0E00130FC0FFF32E103406 -:10003000B3FEEE01938E4E0073901E346F00C0012C -:10004000B70E0080337FDE0163180F00F32E1034EB -:10005000938E4E0073901E34B70E0080938E3E0038 -:100060006396CE01930E800073B04E34B70E0080BD -:10007000938E7E006394CE0173504030B70E0080A3 -:10008000938EBE006394CE017350403073002030D5 -:10009000130E100073000000130E20009302800066 -:1000A00073A002309302800073904230930280006C -:1000B00073A042341300000013000000130000007E -:1000C00013000000130000001300000013000000E4 -:1000D00013000000130000001300000013000000D4 -:1000E00013000000130E300093020008739042309A -:1000F00013000000130000001300000013000000B4 -:10010000130000001300000013000000130E400055 -:10011000B7120000938202807390423013000000F7 -:100120001300000013000000130000001300000083 -:100130001300000013000000130E5000B70110F070 -:10014000938101F403A2010083A241001302F23F54 -:1001500023A4410023A65100130E600013020008DF -:1001600073104230130E700073005010130E800095 -:100170009301100023A04100130E90002390410032 -:10018000130EA00003A20100130EB00003920100A1 -:10019000130EC000130ED000832000006F0020005B -:1001A00083200000130EE00073002020130EF000E7 -:1001B000B70010F0938000F603A10000130E0001B9 -:0C01C00023A02000130E10016780000037 -:1001D0001305000067800000130500006780000021 -:1001E00013050000678000006FF09FFE13050000FC -:1001F000678000001305000067800000B70710F05B -:1002000023A0A7F067800000130101FF23248100D1 -:10021000232611001304050003450500630A0500A9 -:1002200013041400EFF09FFD03450400E31A05FEDC -:100230008320C100032481001301010167800000B5 -:10024000130101FF23202101232611002324810013 -:100250002322910013090600630E06001384050093 -:10026000B384C5000345040013041400EFF01FF924 -:10027000E39A84FE8320C100032481001305090052 -:10028000832441000329010013010101678000005C -:100290006780000037050180130101FF1305856F9A -:1002A00023261100EF00C0058320C100B70710F01E -:1002B00023A007F21305000013010101678000006D -:1002C000130101FC2324C1022326D1022328E102C9 -:1002D000232AF102232C0103232E11031386050088 -:1002E0008325850093068102232E11002326D10049 -:1002F000EF0040068320C101130101046780000064 -:10030000130101FC2324C1022326D102232AF10276 -:100310002322B1022328E102232C0103232E1103FF -:1003200097270100938707BE83A707009306410222 -:100330001306050083A5870013850700232E1100EF -:100340002326D100EF0000018320C1011301010425 -:1003500067800000130101E32326111C2322911C56 -:100360002320211D232E311B232A511B1389050015 -:1003700093040600938A06002324811C232C411B2E -:100380002328611B2326711B2324811B2322911BFD -:100390002320A11B232EB11993090500EF40104023 -:1003A00083270500138507002324F102EF60502204 -:1003B000232AA1002328010C232A010C232C010C41 -:1003C000232E010C638A090083A789036396070023 -:1003D00013850900EF20C04F8317C9001397270129 -:1003E00063420702B726000003274906B3E7D70098 -:1003F0002316F900B7E7FFFF9387F7FFB377F700FE -:100400002322F9068357C90093F78700638E0706F6 -:1004100083270901638A07068357C9001307A000D1 -:1004200093F7A7016390E7088317E90063CC0706F9 -:1004300093860A00138604009305090013850900BA -:10044000EF10906E232CA1008320C11C0324811C7B -:10045000032581018324411C0329011C8329C11B1D -:10046000032A811B832A411B032B011B832BC11AE7 -:10047000032C811A832C411A032D011A832DC119D3 -:100480001301011D67800000930509001385090011 -:10049000EF105075E30205F89307F0FF232CF100ED -:1004A0006FF09FFA9308C10E2322110D2326010C31 -:1004B0002324010C130A0000232A0102232801022D -:1004C000232401002322010223260102232C010000 -:1004D0001384040013075002834704006384070059 -:1004E0006392E70C330B9440630A0B048327C10C1F -:1004F00023A0980023A26801B38767012326F10C8B -:100500008327810C13077000938888009387170056 -:100510002324F10C635EF7001306410C93050900D8 -:1005200013850900EF80D0066318054E9308C10EAD -:1005300083278101B3876701232CF10083470400DF -:10054000639407006F10905A930714002328F1005A -:10055000A303010A130BF0FF232E01001304000074 -:10056000930B90009306A0051306A00283270101B8 -:1005700003CD0700938717002328F10093070DFE92 -:1005800063F4F6006F10C026170701001307C717A2 -:1005900093972700B387E70083A70700B387E70097 -:1005A00067800700130414006FF01FF39707010022 -:1005B00093878730232AF10293770402639407001C -:1005C0006F10C004938A7A0093FA8AFF83AC0A0002 -:1005D00003AC4A0093878A002326F1009377140026 -:1005E000638E0700B3E78C01638A0700930700035B -:1005F0002304F10AA304A10B136424001374F4BFB1 -:10060000930720006F001041138509002322110178 -:10061000EF40D01883274500138507002326F102F9 -:10062000EF60007B2322A10213850900EF40101721 -:1006300083278500832841002324F100832741027A -:10064000E38207F283278100E38E07F083C7070068 -:10065000E38A07F0136404406FF0DFF08347710A08 -:10066000E39207F093070002A303F10A6FF09FEFF4 -:10067000136414006FF01FEF83A70A00938A4A00E7 -:10068000232EF100E3D007EEB307F040232EF10054 -:10069000136444006FF01FED9307B0026FF0DFFCAE -:1006A0000327010183270101034D070093871700EA -:1006B0006310CD0403AB0A0013874A0063540B0098 -:1006C000130BF0FF930A07002328F1006FF09FE956 -:1006D0009305A0003303BB029387170003CDF7FFF8 -:1006E000330BE30013070DFDE3F4EBFE6FF0DFE8DF -:1006F000130B00006FF01FFF136404086FF09FE6F8 -:1007000083270101232E01000327C1019305A000C7 -:10071000130D0DFD3307B702938717003307ED0064 -:1007200003CDF7FF232EE10013070DFDE3FEEBFCE5 -:100730006FF09FE4136484006FF0DFE28327010110 -:1007400003C7070093078006631CF7008327010196 -:1007500013640420938717002328F1006FF09FE0B3 -:10076000136404046FF01FE08327010103C707002F -:100770009307C006631CF7008327010193871700C6 -:100780002328F100136404026FF0DFDD1364040119 -:100790006FF05FDD93874A002326F10083A70A00EC -:1007A000A303010A2306F11223220100130B1000F8 -:1007B000930A0000130C0000930B0000930C000040 -:1007C0009304C1126F0090351364040193770402FF -:1007D000638E0704938A7A0093FA8AFF83AC0A0037 -:1007E00003AC4A0093878A002326F100635E0C0065 -:1007F000B30C9041B3379001330C8041330CFC4073 -:100800009307D002A303F10A9307F0FFE31EFB62F4 -:10081000E3100C6C93079000E3EC976B938C0C0344 -:10082000A30791199304F1186F00106893874A0089 -:100830002326F100937704016388070083AC0A0044 -:1008400013DCFC416FF09FFA9377040483AC0A0039 -:1008500063880700939C0C0193DC0C416FF05FFEF2 -:1008600093770420E38E07FC939C8C0193DC8C41EE -:100870006FF01FFD937784006382070C93874A0013 -:100880002326F10083A70A0003A6070083A64700DA -:1008900003A7870083A7C7002328C10C232AD10CF4 -:1008A000232CE10C232EF10C1305010D2322110141 -:1008B000EF4000682326A10A930720008328410007 -:1008C0006314F50C8327010D930501081305010935 -:1008D0002328F1088327410D232001082322010842 -:1008E000232AF1088327810D2324010823260108E8 -:1008F000232CF1088327C10D232EF108EFC0903C73 -:1009000083284100635605009307D002A303F10A30 -:100910009307700497040100938404F863C6A70149 -:1009200097040100938404F71374F4F72322010061 -:10093000130B3000930A00006F001058938A7A005E -:1009400093FA8AFF83A50A0003A64A0093878A00C8 -:1009500013050109232211012326F100EFF0C04AFB -:1009600083270109832841002328F10C83274109AB -:10097000232AF10C83278109232CF10C8327C10939 -:10098000232EF10C6FF05FF2930710006318F5024D -:100990008327C10D63D607009307D002A303F10A92 -:1009A0009307700497040100938484EFE3CEA7F7C4 -:1009B00097040100938484EE6FF01FF7937BFDFD95 -:1009C000930710046392FB06930700032304F10AC4 -:1009D00013071006930780056314ED009307800743 -:1009E000A304F10A930730061364240063D8674B0D -:1009F00093051B001385090023221101EF40D00548 -:100A000093040500832841006310054A8357C900F9 -:100A100093E707042316F9008357C90093F70704E7 -:100A2000E38407A26FF05FA79307F0FF6302FB4820 -:100A300093077004232201006394FB0063000B48BA -:100A4000032AC10D936704102320F102232C010215 -:100A5000032E010D832D410D832C810D635A0A0055 -:100A6000B707008033CA47019307D002232CF10255 -:100A7000930710046398FB4813050109232411050B -:100A80002328C109232C9109232AB109232E4109C6 -:100A9000EFF0C0591306C10AEF50506D13860500E0 -:100AA0009305050013050109EFF0003683270109BE -:100AB00013060106930501072328F1068327410940 -:100AC0001305010823200106232AF1068327810943 -:100AD0002322010623240106232CF1068327C109C2 -:100AE000232EF106B707FC3F2326F106EFC0903313 -:100AF000032801080326410883268108832CC108A6 -:100B00009305010813050109232801092322010582 -:100B1000232AC1082320C104232CD108232ED1026B -:100B2000232E9109232001082322010823240108F0 -:100B300023260108EFC040768326C1030326010463 -:100B4000032841048328810463160500130710005D -:100B50002326E10A13071006970A0100938ACAD5D3 -:100B60006316ED00970A0100938ACAD3130EFBFFA8 -:100B7000938D0400B7070340930501082322C108A1 -:100B80001305010913060107232411052322C105BA -:100B900023200109232EF1062324D10823269109BD -:100BA00023280106232A0106232C0106EFC09027E3 -:100BB0000326010983264109130501092320C104E5 -:100BC000232ED102EFE0107693050500130A0500ED -:100BD00013050109832C8109032CC109EFF0C00A18 -:100BE00083270109032601048326C1032320F1067C -:100BF000832741092328C106930501072322F10613 -:100C00008327810913060106130501082324F10631 -:100C10008327C109232C9107232E81072326F10660 -:100C2000232AD106EFD01024B3854A0183C50500DD -:100C3000032E4104032CC108938D1D00832201085B -:100C4000832F4108032F8108232EC103A38FBDFEEC -:100C50009307F0FF930C0C0083288104630CFE06BD -:100C6000130EFEFF9305010813050109232EE1056C -:100C7000232CF105232A5104232811052326C1051D -:100C80002328510823245104232AF1092322F105A2 -:100C9000232CE1092320E105232E810923200108CB -:100CA000232201082324010823260108EFC0C05E87 -:100CB000832601040326410403288104032EC10472 -:100CC0008328010583224105832F8105032FC10558 -:100CD000E31205EAB70CFE3F93050108130501096D -:100CE000232011052328510823265104232AF10922 -:100CF0002324F105232CE1092322E105232E810978 -:100D00002320010823220108232401082326910916 -:100D1000EFC04065832801046346A0048322C10418 -:100D2000832F8104032F4104930501081305010952 -:100D300023285108232AF109232CE109232E8109B4 -:100D400023200108232201082324010823269109D6 -:100D5000EFC0805483280104631C0518137A1A001D -:100D600063080A1803C6FA00232EB10B930500038B -:100D70008326C10B9387F6FF232EF10A83C7F6FF64 -:100D80006384C714130690036394C71483C7AA002F -:100D9000A38FF6FE138A0D0013077004330A9A40DE -:100DA000832CC10A6392EB2A1307D0FF63C4EC00C3 -:100DB000635E9B31130DEDFF1387FCFF2326E10AD1 -:100DC0001376FDFD130510049376FD0F93050000C7 -:100DD0006318A6009386F60093F6F60F93051000AD -:100DE000230AD10A9307B0026358070013071000C3 -:100DF000330797419307D002A30AF10A93079000A3 -:100E000063D8E7289307310C9385070013059000FA -:100E10001308A000B36607031386F7FF33470703E1 -:100E200093860603A38FD7FE6346E52413070703C3 -:100E30009387E7FFA30FE6FE9306610B63E0B724F9 -:100E40009307410BB387F6402328F102338B470108 -:100E50009307100063C64701937714006386070069 -:100E600083274101330BFB001374F4BF9367041015 -:100E70002320F102130C0000930B0000930C0000E0 -:100E800083278103638607001307D002A303E10AC7 -:100E900003240102930A00006F004048232201004E -:100EA0009304C1126FF0DFB92322A1006FF05FB984 -:100EB00023220100130B60006FF09FB82322610111 -:100EC000130B10006FF0DFB7A38FB6FE6FF05FEA71 -:100ED0009387170093F7F70F6FF09FEB130A1A0031 -:100EE000A30FEAFEB3074C41E3DA07FE6FF0DFEA37 -:100EF0008327C103138A0D0013070003338CFD0001 -:100F00006FF05FFE93076004638EFB00930750044D -:100F1000930A1B006384FB00930A0B001306200056 -:100F20006F00C000930A0B00130630009307010BFB -:100F30001308C10B1307C10A93860A009305010920 -:100F400013850900232011052328C109232EC1037D -:100F5000232AB109232C9109232E4109EF3040396E -:100F60009307700493040500032EC1038328010432 -:100F70006396FB00937714006388070A9307600465 -:100F8000338C54016392FB0603C7040093070003EC -:100F90006318F704930501081305010923201105BF -:100FA0002328C109232EC103232AB109232C910927 -:100FB000232E4109232001082322010823240108AC -:100FC00023260108EFC0402D032EC103832801040E -:100FD0006308050093071000B38A57412326510B7D -:100FE0008327C10A330CFC0093050108130501098E -:100FF000232E11032328C109232AB109232C910987 -:10100000232E41092320010823220108232401085B -:1010100023260108EFC040288328C10313070003DB -:10102000631E0500232E810B032AC10B6FF0DFD650 -:1010300093861700232ED10A2380E7008327C10B54 -:10104000E3E887FF6FF05FFE13076004E396EBD6DB -:101050006352900763160B00137714006302070CAA -:10106000832741013387FC00330BEB00130D60062F -:101070006F004009930706006FF09FD99387170010 -:1010800003C7F7FF93861600A38FE6FE6FF01FDB02 -:101090009307610B6398050093070003230BF10A84 -:1010A0009307710B13070703938617002380E7004C -:1010B0006FF01FD963160B00137714006306070641 -:1010C00083274101138717006FF01FFA63C04C0399 -:1010D00013771400138B0C0063060700832741016C -:1010E000338BFC00130D70066F00C0018327410194 -:1010F000130D7006330BFA006346900133039B41D6 -:10110000130B1300937B0440130C0000E38A0BD6EF -:10111000930B0000E35690D79306F00F6F00800307 -:10112000138B0C006FF09FF4130D6006130B10006F -:101130006FF05FFD6356970383278100B38CEC400B -:1011400003C717006308070293871700938B1B00E0 -:101150002324F1008327810003C70700E31CD7FC89 -:101160008327410233878B013307F702330B670173 -:101170006FF01FD1130C1C006FF0DFFD13874A00C6 -:101180002326E1001377040283A70A006300070205 -:101190000327810123A0E7001357F74123A2E700AB -:1011A000832AC100832401016FF08FB213770401F9 -:1011B000630807000327810123A0E7006FF05FFEAB -:1011C0001377040463080700035781012390E700A5 -:1011D0006FF01FFD13740420E30E04FC034781012C -:1011E0002380E7006FF0DFFB1364040193770402B0 -:1011F00063880704938A7A0093FA8AFF83AC0A0013 -:1012000003AC4A0093878A002326F1001374F4BFCD -:1012100093070000A303010A1307F0FF630CEB42DE -:1012200013070400B3E68C011374F4F763940642C9 -:1012300063020B5A130710006392E7426FF00FDE50 -:1012400093874A002326F100937704016386070001 -:1012500083AC0A006F0000019377040463880700E1 -:1012600083DC0A00130C00006FF05FFA9377042010 -:10127000E38007FE83CC0A006FF0DFFE93874A000D -:101280002326F100B787FFFF93C707832314F10AD2 -:1012900097F7000093870761232AF10283AC0A00C5 -:1012A000130C00001364240093072000130D800723 -:1012B0006FF05FF693874A002326F100A303010A2B -:1012C0009307F0FF2320110383A40A006306FB02A7 -:1012D00013060B009305000013850400EF40406ADD -:1012E0002322A10083280102630605E4330B954005 -:1012F000232201006FF00FE413850400EF50502DFE -:1013000083280102130B050023220100930A000029 -:10131000130C0000930B0000930C000023205103DA -:1013200063D46A01232061030347710A630807003D -:1013300083270102938717002320F102937D240065 -:1013400063880D0083270102938727002320F10281 -:1013500093774408232CF102639807068327C10181 -:10136000032701023387E7406350E006930E000134 -:1013700017FE0000130E0E50130F70008326810C11 -:1013800023A0C8010326C10C93861600938588000C -:1013900063CAEE4623A2E8003307C7002326E10C08 -:1013A0002324D10C1307700093880500635ED700D7 -:1013B0001306410C9305090013850900EF70501DB9 -:1013C000E314056C9308C10E0347710A6308070410 -:1013D0001307710A23A0E8001307100023A2E800F6 -:1013E0000327C10C93067000938888001307170029 -:1013F0002326E10C0327810C130717002324E10C9B -:1014000063DEE6001306410C93050900138509000D -:10141000EF701018E31A05669308C10E63880D0477 -:101420001307810A23A0E8001307200023A2E80085 -:101430000327C10C930670009388880013072700C8 -:101440002326E10C0327810C130717002324E10C4A -:1014500063DEE6001306410C9305090013850900BD -:10146000EF701013E31205629308C10E8327810306 -:10147000130700086398E7068327C10103270102C9 -:10148000B38DE7406350B007130E000197F70000DB -:101490009387473F930E70000327810C23A0F80029 -:1014A0008326C10C13071700138688006348BE3BD0 -:1014B00023A2B801B38DDD002326B10D2324E10C56 -:1014C000930670009308060063DEE6001306410CE5 -:1014D0009305090013850900EF70900BE316055A78 -:1014E0009308C10EB38A6A41635050071308000184 -:1014F00097FD0000938D0D39130E70000327810CAA -:1015000023A0B8018326C10C130717001386880097 -:10151000634E583923A25801B38ADA002326510DAD -:101520002324E10C930670009308060063DEE600B6 -:101530001306410C9305090013850900EF7050054F -:10154000E31405549308C10E13770410832DC10CC6 -:101550006312073A3303BB0123A0980023A268015A -:101560002326610C8327810C130770009388880061 -:10157000938717002324F10C6352F74C1306410C98 -:101580009305090013850900EF709000E31E054ED6 -:101590009308C10E6F00804A13640401937704021C -:1015A00063820702938A7A0093FA8AFF83AC0A0067 -:1015B00003AC4A0093878A002326F10093071000AA -:1015C0006FF05FC593874A002326F10093770401EB -:1015D0006386070083AC0A006F0000019377040460 -:1015E0006388070083DC0A00130C00006FF01FFD06 -:1015F00093770420E38007FE83CC0A006FF0DFFEC0 -:1016000097F700009387072A6FE0DFFA93874A0075 -:101610002326F100937704016386070083AC0A0058 -:101620006F000001937704046388070083DC0A00DD -:10163000130C00006FE09FFA93770420E38007FE0D -:1016400083CC0A006FF0DFFE13070400930710003D -:101650006FF05FBD13071000638CE79A130720003B -:10166000638EE712930701199316DC0113F77C00D0 -:1016700093DC3C0013070703B3EC9601135C3C00BA -:10168000A38FE7FEB3E68C019384F7FF639E060207 -:1016900093761400638A0600930600036306D7005E -:1016A000A38FD4FE9384E7FF93070119930A0B00DD -:1016B00023220100338B9740130C0000930B000092 -:1016C000930C00006FF09FC5938704006FF0DFF963 -:1016D000130A0000930D0119937A0440930B9000B4 -:1016E0001306A0009306000013850C0093050C0060 -:1016F00023221101EFA0902D13050503A38FADFE4A -:101700009384FDFF130A1A0083284100638E0A04A4 -:101710008327810083C707006318FA049307F00F3B -:101720006304FA0463140C0063F09B0583274102F1 -:101730008325C10223221101B384F44013860700DC -:1017400013850400EF50806A83278100130A00008C -:101750008328410083C7170063880700832781001F -:10176000938717002324F10013850C0093050C00C8 -:101770001306A0009306000023221101EFA0C06110 -:10178000138C0500B3E5A500930C050083284100E8 -:10179000E38C05F0938D04006FF09FF4930401191E -:1017A0000327410393F7FC009384F4FFB307F7008A -:1017B00083C7070093DC4C002380F4009317CC010F -:1017C000B3EC9701135C4C00B3E78C01E39A07FC80 -:1017D0006FF09FED93040119E39807EC137717005E -:1017E000E30407EC93070003A307F1186FF08F835E -:1017F000E30E0D2E2306A113A303010A2326510194 -:101800006FE09FFA1306060123A2D8012326C10C1C -:101810002324D10C635EDF021306410C93050900FB -:10182000138509002324E1052322C1052320D105C6 -:10183000232EE102EF70C055E3180524032F810425 -:10184000032E4104832E01040327C1039305C10E17 -:10185000130707FF938805006FF05FB293860601B8 -:1018600023A2C8012326D10C2324E10C63DAEE0263 -:101870001306410C93050900138509002320D105A7 -:10188000232EF102232CC103EF708050E31E051EAE -:10189000832E01048327C103032E81031306C10E87 -:1018A000938D0DFF930806006FF01FBF938606010E -:1018B00023A208012326D10C2324E10C6356EE0257 -:1018C0001306410C9305090013850900232EC1035B -:1018D000232C0103EF70C04BE318051A032EC1033C -:1018E000032881031306C10E938A0AFF930806009A -:1018F0006FF0DFC0130750066354A7730327010D71 -:1019000093050108130501092328E1080327410D68 -:10191000232C110323200108232AE1080327810D2A -:101920002322010823240108232CE1080327C10DE9 -:1019300023260108232EE108EFB010168328810327 -:101940006314051897F70000938747F823A0F80061 -:101950009307100023A2F8008327810C938D1D00AC -:101960002326B10D938717002324F10C1307700071 -:1019700093888800635EF7001306410C9305090005 -:1019800013850900EF70C040E31005109308C10EE5 -:101990008327C10A63C64701937714006380070A4F -:1019A00083278102032741019388880023ACF8FE36 -:1019B0008327410123AEF8FE8327C10CB387E700DC -:1019C0002326F10C8327810C1307700093871700DF -:1019D0002324F10C635EF7001306410C9305090004 -:1019E00013850900EF70C03AE310050A9308C10E91 -:1019F0009304FAFF63549004930B000197FA0000DC -:101A0000938A4AE8130C70008327810C23A05801A5 -:101A10000327C10C938717009386880063CA9B062F -:101A200023A29800B384E4002326910C2324F10C14 -:101A30001307700093880600E342F7B41374440060 -:101A40006314047E032DC101832701026354FD004A -:101A5000138D070083278101B387A701232CF10091 -:101A60008327C10C638C07001306410C9305090002 -:101A700013850900EF70C031E3180500832741008A -:101A80002324010CE39C07049308C10E6FF04FF16F -:101A90001307070123A278012326E10C2324F10C6C -:101AA000635EFC001306410C9305090013850900D1 -:101AB000EF70002E631A057C9306C10E938404FF19 -:101AC000938806006FF05FF40327C10A6346E016AF -:101AD00097F70000938787DF23A0F8009307100093 -:101AE00023A2F8008327810C938D1D002326B10DBE -:101AF000938717002324F10C130770009388880044 -:101B0000635EF7001306410C930509001385090075 -:101B1000EF700028631A05769308C10E8327C10A67 -:101B20006398070063160A0093771400E38807F0B0 -:101B300083278102032741019388880023ACF8FEA4 -:101B40008327410123AEF8FE8327C10CB387E7004A -:101B50002326F10C8327810C13077000938717004D -:101B60002324F10C635EF7001306410C9305090072 -:101B700013850900EF70C021631805709308C10E2A -:101B8000832AC10A63D20A06B30A504113870800A8 -:101B9000130C000197FB0000938BCBCE130D70004C -:101BA0008327810C232077018326C10C938717009C -:101BB0009388880063465C0523225701B38ADA00C4 -:101BC0002326510D2324F10C13077000635EF700E8 -:101BD0001306410C9305090013850900EF70401BA3 -:101BE0006314056A9308C10E8327C10C23A09800D3 -:101BF00023A24801B38747012326F10C6FF09F967B -:101C000093860601232287012326D10C2324F10C7D -:101C1000635EFD001306410C93050900138509005E -:101C2000EF700017631205669308C10E938A0AFFCE -:101C3000138708006FF0DFF6938A0C0063549A0153 -:101C4000930A0A00635250050327810CB38DBA0131 -:101C500023A098001307170023A258012326B10DD3 -:101C60002324E10C930670009388880063DEE6006D -:101C70001306410C9305090013850900EF7040110C -:101C8000631405609308C10E63D40A00930A000030 -:101C9000B38A5C4163505007930D000117FD0000AB -:101CA000130D4DBE130B70000327810C23A0A80158 -:101CB0008326C10C130717001386880063C25D1BBF -:101CC00023A25801B38ADA002326510D2324E10C04 -:101CD000930670009308060063DEE6001306410CCD -:101CE0009305090013850900EF70800A631E0558EB -:101CF0009308C10E93770440B38A9401638407026A -:101D0000130D7000338B440197FD0000938D8DB748 -:101D100063940B1863140C18B387440163F45701E0 -:101D2000938A07008327C10A63C64701937714008B -:101D3000638A07048327810203274101938888006F -:101D400023ACF8FE8327410123AEF8FE8327C10CA4 -:101D5000B387E7002326F10C8327810C130770005B -:101D6000938717002324F10C635EF7001306410CE0 -:101D70009305090013850900EF7080016316055073 -:101D80009308C10EB3844401B38754418324C10A2C -:101D9000B3049A4063D4970093840700635490047B -:101DA0008327C10C23A0580123A29800B387F40015 -:101DB0002326F10C8327810C130770009388880079 -:101DC000938717002324F10C635EF7001306410C80 -:101DD0009305090013850900EF60907B6316054A9F -:101DE0009308C10E9387040063D404009307000096 -:101DF0008324C10AB3049A40B384F440E35090C4EE -:101E0000930B000197FA0000938ACAA7130C700085 -:101E10008327810C23A058010327C10C9387170047 -:101E200093868800E3DE9BBE1307070123A2780197 -:101E30002326E10C2324F10C635EFC001306410C05 -:101E40009305090013850900EF609074631E054235 -:101E50009306C10E938404FF938806006FF05FFB26 -:101E60009386060123A2B8012326D10C2324E10C7A -:101E7000635EEB001306410C93050900138509000E -:101E8000EF601071631205401306C10E938A0AFFBA -:101E9000930806006FF05FE163020C0E130CFCFF69 -:101EA0008327C102032741029388880023ACF8FEF0 -:101EB0008327410223AEF8FE8327C10CB387E700D6 -:101EC0002326F10C8327810C938717002324F10C20 -:101ED000635EFD001306410C93050900138509009C -:101EE000EF60106B6312053A9308C10E83278100DF -:101EF00033075B4183C707006354F700930707006C -:101F00006356F0040327C10C23A0580123A2F80054 -:101F10003387E7002326E10C0327810C9388880090 -:101F2000130717002324E10C6352ED021306410C42 -:101F30009305090013850900232CF102EF60506519 -:101F400063140534832781039308C10E13870700A8 -:101F500063D40700130700008327810013080001E2 -:101F600083C70700B387E7406346F00683278100F5 -:101F700083C70700B38AFA006FF09FD983278100D7 -:101F8000938BFBFF9387F7FF2324F1006FF05FF142 -:101F90009386060123A208012326D10C2324E10CF9 -:101FA0006356ED021306410C9305090013850900E1 -:101FB000232E0103232CF102EF60905D6316052CA4 -:101FC0000328C103832781031306C10E938707FFEC -:101FD000930806000327810C23A0B8018326C10CB7 -:101FE0001307170013868800E344F8FA23A2F800C9 -:101FF000B387D7002326F10C2324E10C93080600B5 -:10200000E356EDF61306410C93050900138509000C -:10201000EF601058631A05269308C10E6FF01FF584 -:102020008327810C1307100023A09800938D1D00B7 -:1020300093871700938B88006346470193761400BB -:102040006388061C1307100023A2E8002326B10DA5 -:102050002324F10C13077000635EF7001306410C94 -:102060009305090013850900EF609052631E052057 -:10207000930BC10E8327810203274101938B8B00B1 -:1020800023ACFBFE8327410123AEFBFE8327C10C5B -:10209000B387E7002326F10C8327810C1307700018 -:1020A000938717002324F10C635EF7001306410C9D -:1020B0009305090013850900EF60904D6316051C18 -:1020C000930BC10E8327010D930501081305010928 -:1020D0002328F1088327410D930AFAFF23200108E2 -:1020E000232AF1088327810D2322010823240108D4 -:1020F000232CF1088327C10D23260108232EF10884 -:10210000EFB08019630605088327C10C0327810CF3 -:10211000938414009387F7FFB387470113071700D1 -:1021200023A09B0023A25B012326F10C2324E10CB6 -:1021300093077000938B8B0063DEE7001306410C5E -:102140009305090013850900EF609044631E051292 -:10215000930BC10E9307410B23A0FB0083270103C0 -:102160000327010393888B0023A2FB008327C10C64 -:10217000B387E7002326F10C8327810C1307700037 -:10218000938717002324F10CE35AF78A6FF00FBFEF -:10219000E35250FD130C000197E400009384846E19 -:1021A000130D70000327810C23A09B008327C10C13 -:1021B0001307170093868B0063405C03B387FA0014 -:1021C00023A25B012326F10C2324E10C930770006A -:1021D000938B06006FF05FF69387070123A28B01B4 -:1021E0002326F10C2324E10C635EED001306410C61 -:1021F0009305090013850900EF60903963160508FF -:102200009306C10E938A0AFF938B06006FF09FF925 -:1022100023A2E8002326B10D2324F10C130770003C -:10222000E35AF7F26FF09FF18327C1010327010200 -:102230003384E740E3588080930A000197E400006C -:1022400093844463930B70008327810C23A0980030 -:102250000327C10C9387170063C68A0423A2880052 -:102260003304E4002326810C2324F10C13077000AF -:10227000635AF7FC1306410C930509001385090006 -:10228000EF601031630005FC832741006394070071 -:102290006FE08FF89385070013850900EF00101198 -:1022A0006FE08FF71307070123A258012326E10CE3 -:1022B0002324F10C9388880063DEFB001306410C95 -:1022C0009305090013850900EF60902CE31E05FAC1 -:1022D0009308C10E130404FF6FF01FF7832541001C -:1022E00013850900EF00900C6FF00FFA8327C10CE3 -:1022F000639407006FE04FF21306410C9305090049 -:1023000013850900EF60D0286FE00FF197070100F7 -:10231000938747BF930606001386050093050500C3 -:1023200003A507006FE00F8383D7C500130101B831 -:10233000232C814693F7D7FF231AF10083A7450684 -:1023400013840500232A91462326F10683D7E5004E -:1023500023282147232E1146231BF10083A7C50103 -:1023600013090500232001022322F10283A745025D -:10237000930581002326F102930701072324F1002E -:10238000232CF100930700402328F100232EF100B5 -:10239000EFD05FFC93040500634C050093058100BA -:1023A00013050900EF004038630405009304F0FFB3 -:1023B0008357410193F70704638807008357C400DC -:1023C00093E707042316F4008320C14703248147C1 -:1023D0001385040003290147832441471301014861 -:1023E00067800000130101FF97070100938787B101 -:1023F000232291009304050003A5070023248100F4 -:102400002326110013840500630805008327850334 -:1024100063940700EF00C04B0317C4009317070134 -:1024200093D7070193F68700639E060693F607018C -:10243000639606029307900023A0F4001367070435 -:102440002316E4001305F0FF8320C100032481005C -:1024500083244100130101016780000093F74700C6 -:10246000638C070283250403638C0500930704042F -:102470006386F50013850400EF00407323280402EF -:102480008357C4002322040093F7B7FD2316F400FA -:10249000832704012320F4008357C40093E78700B7 -:1024A0002316F40083270401639007028357C400B6 -:1024B0001307002093F707286388E70093050400BB -:1024C00013850400EF20504A8357C40013F7170008 -:1024D000630C07028327440123240400B307F04060 -:1024E000232CF4008327040113050000E39E07F466 -:1024F0008317C40013F70708E30807F493E70704FA -:102500002316F4006FF01FF493F727001307000061 -:1025100063940700032744012324E4006FF09FFC29 -:102520008397C500130101FE232C81001397070137 -:1025300013570701232A9100232E1100232821017C -:102540002326310193768700930405001384050048 -:10255000639C06163717000013070780B3E7E700F0 -:1025600003A745002396F5006346E00203A7C503D1 -:102570006342E002130500008320C10103248101AE -:1025800083244101032901018329C10013010102B0 -:102590006780000003278402E30E07FC03A9040000 -:1025A0009396370123A004008325C40163D8060C49 -:1025B000032604058357C40093F74700638E070082 -:1025C000832744003306F64083270403638607000D -:1025D0008327C4033306F640832784028325C4017E -:1025E0009306000013850400E78007009307F0FFBF -:1025F0008356C4006312F50283A704001307D001B9 -:10260000636CF70A37074020130717003357F700AA -:10261000137717006302070AB7F7FFFF9387F77F67 -:1026200003270401B3F7D7009397070193D7074116 -:102630002320E4002316F40023220400139737011B -:10264000635C07009307F0FF6316F50083A704009F -:10265000639407002328A4048325040323A02401F2 -:10266000E38A05F0930704046386F50013850400EC -:10267000EF00C053232804026FF0DFEF13060000C1 -:102680009306100013850400E70007009307F0FF8E -:1026900013060500E310F5F283A70400E38C07F0AE -:1026A0001307D0016386E700130760016392E70612 -:1026B00023A024016FF01FEC93E706042316F40017 -:1026C0001305F0FF6FF05FEB83A90501E38409EACE -:1026D00003A905001377370023A0350133093941D9 -:1026E000930700006314070083A745012324F40027 -:1026F000E35220E9832744028325C401930609009D -:102700001386090013850400E78007006348A000D2 -:102710008357C40093E707046FF05FFAB389A900F9 -:102720003309A9406FF0DFFC130101FE232C810067 -:10273000232E110013040500630C05008327850375 -:10274000639807002326B100EF0080188325C1009D -:102750008397C500638C07001305040003248101DF -:102760008320C101130101026FF09FDB8320C101AF -:10277000032481011305000013010102678000009A -:1027800093050500631E050097F7000093874777C0 -:1027900003A5070097050000938545F96F00C072F7 -:1027A00097F700009387077603A507006FF0DFF720 -:1027B0001305000067800000977500009385855D14 -:1027C0006F008070130101FF232481002326110074 -:1027D000130405002316B5002317C50023200500A8 -:1027E00023220500232405002322050623280500B3 -:1027F000232A0500232C0500130680009305000002 -:102800001305C505EF30001A974700009387472F3F -:102810002320F40297470000938707342322F40211 -:10282000974700009387873B2324F40297470000D3 -:1028300093874740232E84002326F4028320C1007F -:1028400003248100130101016780000013050000CB -:1028500067800000130101FF232291001306800608 -:102860009384F5FFB384C40223202101138905005A -:10287000232481002326110093854407EF20D01DD7 -:10288000130405006300050223200500232225010F -:102890001305C5002324A4001386840693050000B5 -:1028A000EF304010130504008320C1000324810091 -:1028B0008324410003290100130101016780000006 -:1028C00097F700009387C76303A507006FF0DFEE5B -:1028D00083278503639E0706130101FF232611004A -:1028E0002324810097070000938747ED232EF502EC -:1028F000930730002322F52E9307C52E13040500FD -:102900002324F52E2320052E032545001306000061 -:1029100093054000EFF01FEB032584001306100021 -:1029200093059000EFF01FEA0325C4001306200072 -:1029300093052001EFF01FE993071000232CF40208 -:102940008320C1000324810013010101678000007E -:1029500067800000130101FF97F700009387475A33 -:102960002322910083A407002320210123261100A4 -:1029700083A78403232481001309050063960700BD -:1029800013850400EFF0DFF49384042E03A4840085 -:1029900083A744009387F7FF63DA070083A7040047 -:1029A000638E070083A404006FF05FFE0317C4006A -:1029B00063040704130484066FF0DFFD93054000F1 -:1029C00013050900EFF01FE923A0A400E31C05FC98 -:1029D0009307C0002320F90013040000130504002E -:1029E0008320C100032481008324410003290100C6 -:1029F0001301010167800000B707FFFF93871700ED -:102A0000232204062320040023220400232404009C -:102A10002326F40023280400232A0400232C040086 -:102A200013068000930500001305C405EF2090777E -:102A300023280402232A0402232204042324040456 -:102A40006FF0DFF96780000067800000678000009A -:102A50006780000097F700009387C74A03A5070027 -:102A600097050000938505D56F00003C97F700009F -:102A70009387474903A5070097050000938545DD27 -:102A80006F00803A130101FD232481022322910269 -:102A900023202103232E31012326B10023261102F6 -:102AA0001309050097F9000093890905EF20507D6F -:102AB00083A789008325C10083A44700B7170000BE -:102AC0001384F7FE93F4C4FF3304B440330494003A -:102AD0001354C4001304F4FF1314C4006356F40227 -:102AE00013050900EF20107A130500008320C102AE -:102AF0000324810283244102032901028329C101A5 -:102B0000130101036780000093050000130509000D -:102B1000EF30106183A78900B3879700E312F5FCBB -:102B2000B305804013050900EF30905F9307F0FF75 -:102B30006312F5049305000013050900EF30505EA1 -:102B400003A789009306F000B307E540E3DAF6F83F -:102B500097F600009386463B83A6060093E717008E -:102B60002322F7003305D54097F6000023ACA63AA0 -:102B70006FF01FF783A78900B384844093E41400A7 -:102B800023A2970097F700009387C73983A7070010 -:102B9000130509003384874097F7000023A4873882 -:102BA000EF20506E130510006FF05FF4638C052664 -:102BB000130101FF23248100232291001304050047 -:102BC0009384050023261100EF20906B83A5C4FF9A -:102BD000938684FF17F50000130505F293F7E5FFD0 -:102BE0003386F600032746000328850093F5150079 -:102BF0001377C7FF631AC806B387E700639005021F -:102C000003A784FFB386E64003A68600B387E700E8 -:102C100003A7C6002326E6002324C70013E71700F6 -:102C200023A2E60017F70000232CD7EC17F70000CB -:102C30001307C72D0327070063ECE70097F7000091 -:102C40009387C72D83A5070013050400EFF09FE3CA -:102C500013050400032481008320C1008324410064 -:102C6000130101016F2010622322E6001308000007 -:102C70006396050283A584FF97F80000938848E8CF -:102C8000B386B640B387B70083A58600638C150B67 -:102C900083A8C60023A6150123A4B800B305E60047 -:102CA00083A5450093F51500639C0502B387E700F3 -:102CB00003278600631C080897F50000938545E408 -:102CC0006316B70817F600002322D6E417F60000B3 -:102CD000232CD6E223A6E60023A4E6001308100066 -:102CE00013E7170023A2E6003387F6002320F7003E -:102CF000E31008F61307F01F6362F70693D7370057 -:102D000013D62740130710003317C70003264500CA -:102D100093871700939737003367C700B307F50011 -:102D200017F60000232CE6DC03A70700138687FFB5 -:102D300023A6C60023A4E60023A0D7002326D7009D -:102D40006FF01FF1130810006FF05FF50326C60047 -:102D50002326C7002324E6006FF09FF813D69700C0 -:102D600013074000636AC70413D76700130787037C -:102D700013061700131636003306C500930586FFA9 -:102D8000032606006396C5089307100013572740D3 -:102D90003397E700832745003367F70097F7000074 -:102DA00023AEE7D423A6B60023A4C60023A4D500EF -:102DB0002326D6006FF0DFE9130740016366C700E2 -:102DC0001307B6056FF0DFFA130740056368C70005 -:102DD00013D7C7001307E7066FF09FF913074015D5 -:102DE0006368C70013D7F700130777076FF05FF822 -:102DF000930540551307E007E3ECC5F613D7270109 -:102E00001307C7076FF0DFF6032686006388C50047 -:102E1000032746001377C7FFE3E8E7FE8325C600D4 -:102E20006FF05FF867800000130101FD2324810229 -:102E300023202103232C4101232A5101232611029F -:102E400023229102232E31011304052E13090000C1 -:102E5000130A1000930AF0FF631604028320C102D4 -:102E6000032481021305090083244102032901027E -:102E70008329C101032A8101832A4101130101032E -:102E80006780000083248400832944009389F9FF2C -:102E900063D60900032404006FF01FFC83D7C4002D -:102EA0006370FA028397E400638C57011385040072 -:102EB0002326B100E78005008325C1003369A900FE -:102EC000938484066FF09FFC130101FD232481028B -:102ED00023202103232C4101232A510123286101AE -:102EE000232671012326110223229102232E310170 -:102EF000130A0500938A05001304052E1309000028 -:102F0000130B1000930BF0FF631A04028320C1021D -:102F100003248102130509008324410203290102CD -:102F20008329C101032A8101832A4101032B010165 -:102F3000832BC100130101036780000083248400F8 -:102F4000832944009389F9FF63D609000324040010 -:102F50006FF09FFB83D7C400637EFB008397E40080 -:102F6000638A77019385040013050A00E7800A004D -:102F70003369A900938484066FF0DFFC9307450151 -:102F800013052500231F05FEE31CF5FE67800000E6 -:102F900093074501130525000357E5FF9385250099 -:102FA000239FE5FEE398A7FE678000009307A50135 -:102FB00013052500231F05FEE31CF5FE67800000B6 -:102FC0001307850193870500130525008356E5FF48 -:102FD00093872700239FD7FEE318A7FE239C0500B5 -:102FE0006780000093074500938545001305A50100 -:102FF000938727009385250083D6E7FF03D7E5FF56 -:103000006398E600E316F5FE1305000067800000F4 -:10301000130510006364D7001305F0FF67800000FC -:1030200093064500930700001305A5013786FFFFAF -:1030300003D70600937517006384050093E7170014 -:1030400093F5270013571700639005029397170015 -:103050002390E600939707019386260093D70701F4 -:10306000E318D5FC678000003367C7006FF01FFED0 -:10307000930665011307000083D726001396070106 -:103080001356064163540600136717009397170001 -:10309000939707011376270093D707016310060261 -:1030A000131717002391F600131707019386E6FF05 -:1030B00013570701E312D5FC6780000093E7170060 -:1030C0006FF01FFE93074500130700001305A501CD -:1030D00083D607009387270013D686003367C7007F -:1030E000239FE7FE13978600131707011357070165 -:1030F000E310F5FE678000009307650113070000E9 -:1031000083D627009387E7FF139686003367C700AF -:103110002392E70013D78600E314F5FE67800000D2 -:1031200093074500130785019387270083D607007F -:10313000239FD7FEE31AF7FE231C050067800000DB -:10314000930785011307A501930645009387E7FFC1 -:1031500003D607001307E7FF2310C700E398F6FE26 -:103160002312050067800000938585011307650120 -:10317000930600008357270003D605001307E7FFD7 -:103180009385E5FFB387C700B387D7002391F50088 -:1031900093D7070193F61700E31EE5FC6780000054 -:1031A00093858501130765019306000083D7050009 -:1031B000035627001307E7FF9385E5FFB387C74052 -:1031C000B387D7402391F50093D7070193F61700F3 -:1031D000E31EE5FC67800000130101FE37030100D8 -:1031E00093888501231D0100231E0100938545005E -:1031F0009306C1011303F3FF03D708009386E6FF8C -:103200009388E8FF631C0702239F06FEE39615FFE1 -:10321000930740001307A00193054100B385F50013 -:1032200083D50500B306F600938727002390B600E8 -:10323000E394E7FE13010102678000003307A70251 -:1032400003D82600B3776700B387070113D80701B7 -:103250002391F6009357070103D70600B387E700D1 -:10326000B38707012390F60093D70701239FF6FE4B -:103270006FF0DFF98357250193C7F7FF1397170105 -:10328000631C070093072501130525000357E5FF7D -:1032900063180700E39AA7FE13050000678000008B -:1032A0001305100067800000130101FF2324810033 -:1032B0002326110013040500EFF0DFFB631E050059 -:1032C000031524011355F5018320C1000324810057 -:1032D0001301010167800000130500006FF0DFFE9D -:1032E00083172501130101FF2326110023248100E8 -:1032F000232291002320210163D807069307F0FFC2 -:103300002390F50003572501B78700009387F7FF47 -:1033100033F7E7002391E500130905016316F7066B -:103320001384050093040500EFF0DFF46302050445 -:1033300093076400231204001385C4FF1309E9FFF7 -:103340000357290093872700239FE7FEE318A9FE70 -:103350008320C1000324810083244100032901004C -:103360001301010167800000239005006FF09FF9B1 -:10337000930744009305A40193872700239F07FE2A -:10338000E39CB7FE6FF0DFFC938765002392050096 -:103390001305E5FF1309E9FF035729009387270069 -:1033A000239FE7FEE318A9FE239C05006FF05FFA58 -:1033B000130101FB2322910423202105232611045C -:1033C000232481041309050093840500EFF09FEA8C -:1033D0006310050E13850400EFF0DFE91304050008 -:1033E0006318050C9305810013050900EFF05FEFEA -:1033F0009305410213850400EFF09FEE035781000F -:10340000835741026380E7069307200093068001FB -:10341000130681003306F60003560600631C0602FD -:10342000130641023306F600035606006314060233 -:1034300093872700E39ED7FC130504008320C10473 -:103440000324810483244104032901041301010599 -:103450006780000013041000E30007FE1304F0FF70 -:103460006FF09FFD13061000638407001306F0FF42 -:103470009307000093058001130781003307F700CD -:1034800083560700130741023307F700035707006D -:103490006398E60093872700E390B7FE6FF0DFF9AB -:1034A00013040600E36AD7F83304C0406FF0DFF876 -:1034B0001304E0FF6FF05FF88357250193C7F7FF10 -:1034C0001397170163100702130101FF2326110050 -:1034D000EFF05FDA8320C1001335150013010101FD -:1034E0006780000013050000678000009307250136 -:1034F00013052500231F05FEE31CF5FE8357050079 -:10350000378700001307F7FFB3E7E7002310F50044 -:1035100067800000130101FE232C81002326310166 -:10352000232E1100232A9100232821012324410165 -:1035300023225101930905001384050063D205106D -:103540003309B040130A090093040000930AF00005 -:1035500063CE4A0313594900930500FFB305B9022E -:10356000130A70003384854013090400634C2A0356 -:1035700093553400930780FFB385F50233848500AB -:10358000631E0402333590006F00400983D7890120 -:1035900013850900130A0AFFB3E4F400EFF05FBAE1 -:1035A0006FF01FFB83C7890113850900130989FF89 -:1035B000B3E49700EFF01FB16FF05FFB83D7890191 -:1035C000138509001304F4FF93F71700B3E4970081 -:1035D000EFF01FA56FF0DFFA13850900EFF05FB47D -:1035E000938404FFE34A99FE93554400930700FF38 -:1035F000B385F502130970003304B400930404008A -:103600006346990493553400930780FFB385F50210 -:103610003304B40063140404130500008320C101C3 -:103620000324810183244101032901018329C1006D -:10363000032A8100832A41001301010267800000F0 -:10364000938405001309F0006FF0DFF9138509007A -:10365000EFF09FAA938484FF6FF09FFA138509000F -:10366000EFF01FA11304F4FF6FF0DFFA835745005A -:10367000130101FF2322910023261100232481003E -:103680002320210193040500639207088317650036 -:10369000130400001309000A63D80702130504008D -:1036A0008320C100032481008324410003290100F9 -:1036B0001301010167800000138504001304040155 -:1036C000EFF01FA6E30C24FD83D76400E38607FE1A -:1036D00083D7640093F707F0638207021309000A97 -:1036E00083976400E3CC07FA1385040013041400E5 -:1036F000EFF01F98E35689FE6FF05FFA1385040020 -:10370000EFF09F9F130484006FF09FFC93F707F086 -:103710001304000063860700EFF0DF9A130480FFB4 -:10372000130900F76F004001138504001304F4FF30 -:10373000EFF01F8FE34424F783D74400E39607FE9E -:103740006FF0DFF59307050113052500231F05FE24 -:10375000E31CF5FEB7C7FFFF2310F500B787FFFF97 -:1037600093C7F7FF2311F5006780000013070500DA -:1037700083560700138505008357270063860600DC -:10378000B786FFFFB3E7D7002319F50003562700DC -:10379000B78600009386F6FF93076700631ED60086 -:1037A0001307A70183D607006398060293872700B3 -:1037B000E39AE7FE6FF09FD3130505011307870116 -:1037C0009387270083D6E7FF1305E5FF2311D50074 -:1037D000E398E7FE678000006FF0DFF6130101FD5C -:1037E0002322910293040500130541002324810242 -:1037F0002326110213840500EFF04FFB03D7E400EA -:103800009317070193D7074163C2070423120100EE -:10381000B78600009386F6FF3377D7009387E400DE -:10382000631CD706138704008356070063860602CD -:1038300013050400EFF01FF18320C102032481026D -:103840008324410213010103678000009307F0FF06 -:103850002312F1006FF0DFFB13072700E396E7FC6C -:1038600013050400EFF08FF113050400EFF01FC8FB -:103870008397E400E3D207FC13050400EFF09F9F59 -:10388000E31C05FA835724013787FFFFB3C7E7001E -:103890002319F4006FF05FFA2313E100930641004F -:1038A0009387E7FF03D60700938626002392C6007E -:1038B000E398F4FE631C0700231401009305040041 -:1038C00013054100EFF09FEA6FF01FF79307100018 -:1038D0009305F0FF130541002314F100EFF09FC39F -:1038E0006FF0DFFD130101FE232C8100232A9100DC -:1038F00023282101232631012324410123225101C0 -:103900001389060013840700232E11009304050079 -:1039100093890500130A0600930A0700EFF01FD5EC -:10392000930700093309A94063D4A704B7870000AF -:103930009387E7FF63C6272D938724009384A40110 -:1039400093872700239F07FEE39C97FE8320C101F6 -:103950000324810183244101032901018329C1003A -:10396000032A8100832A41001301010267800000BD -:10397000635E0900930700F7634CF9129305090091 -:1039800013850400EFF01FB96310051463860A2243 -:1039900003274400832704006306F7061305A401E8 -:1039A000EFF0CFE08327440013078003638EE71610 -:1039B0006340F712130780016386E71A1307500369 -:1039C0006382E7181307C0002324E400370701804F -:1039D0001307F7FF232AE40013071000231CE40059 -:1039E0001307B0002326E4000327C4008356840194 -:1039F00013078700131717003307E4002315D700B8 -:103A00002320F400634220030327440093070009A6 -:103A1000630CF70083D784011385040093F7170024 -:103A2000B3E9F900EFF0CFDF8326840003564401A9 -:103A300083254400139716003387E400835707005B -:103A4000B3F7C7001306F008634AB6009386160062 -:103A5000130607009305C00063DAD51083564401AE -:103A60000356070093C6F6FFB3F6C6002310D7002F -:103A700003576401B376F700638A06106312F702F6 -:103A8000639409108327C400035784019397170098 -:103A9000B387F40083D70700B3F7E7006388070E06 -:103AA000938504001305A401EFF00FEC6F00000EE6 -:103AB000938724009384A40193872700239F07FE04 -:103AC000E39C97FE6FF09FE8930910006FF01FECE6 -:103AD000130700046388E70213071007E394E7EE77 -:103AE000378700401307F7FF9306A000232AE4005E -:103AF0002324D4003787FFFF231CE4002326D400AF -:103B00006FF09FEE130770002324E4003707018055 -:103B10001307F7FF232AE40013071000231CE40017 -:103B2000130760006FF01FEC9306600037078000FA -:103B30001307F70F232AE4002324D40013070010EF -:103B40006FF09FFB370700041307F77F93066000B1 -:103B5000232AE400371700002324D400130707802A -:103B60006FF09FF9930640006FF05FFC035526004D -:103B70006304050093E717002311060093861600DF -:103B8000130626006FF05FEDE30C0AF0634C200192 -:103B900003274400930700096306F7001385040018 -:103BA000EFF00FCD83D7440063880700138504002E -:103BB000EFF00FC713091900B7870000239C04001A -:103BC0009387E7FF63D42703B787FFFF93C7F7FF08 -:103BD0002391F40093874400938484012390070089 -:103BE00093872700E39CF4FE6FF05FD663560900CD -:103BF000239104006FF09FD5239124016FF01FD50E -:103C0000E3980AD8239C04006FF01FFC130101FE07 -:103C100023244101035A2500232C8100138405002D -:103C2000232E1100232A9100232821012322510150 -:103C30002320610113090600130B460323263101DB -:103C4000930A0500EFF09FA283542400330AAA4090 -:103C500013050400EFF09FA1B384A44013050B00EB -:103C6000EFF0CFB463D244051305040003248101AF -:103C70008320C1018329C100032A8100832A4100D6 -:103C8000032B010093070900938604000329010117 -:103C90008324410113070000130600009305000070 -:103CA000130101026FF01FC49305040013850A007D -:103CB000EFF04FB393090000634AA000930504009E -:103CC00013850A00EFF0CFCD9309100013050B0008 -:103CD000EFF00FBA8357C904130504009384F4FF6F -:103CE000B3E9F90023163905EFF08FB86FF09FF7AD -:103CF000130101F72324810823229108232021099D -:103D0000232E310723261108232C4107232A51078C -:103D10002328610723267107232481072322910783 -:103D20009304050013840500130906009389060017 -:103D3000EFF04FD4630205049305090013850400D6 -:103D4000EFF00FA58320C1080324810883244108D4 -:103D5000032901088329C107032A8107832A410710 -:103D6000032B0107832BC106032C8106832C4106FC -:103D7000130101096780000013050400EFF08FCFE5 -:103D80006308050093050900130504006FF05FFB4D -:103D900013850400EFF04FF26314050613050400C9 -:103DA000EFF08FF1630C050097D50000938545B2C5 -:103DB00013850400EFF0CFDF630E050413850400C4 -:103DC000EFF08FEF6318050013050400EFF0CFEE5E -:103DD000630C050413850400EFF00FCD9304050078 -:103DE00013050400EFF04FCC638CA402B787FFFFEC -:103DF0002319F90013050900EFF04FEF6FF09FF45E -:103E000097D500009385C5AC13050400EFF04FDA99 -:103E1000E31605F813050900EFF0DF926FF09FF24B -:103E2000231909006FF01FFD138504009305C100DD -:103E3000EFF00FCB1305040093058102EFF04FCA9A -:103E40000354E1008354A1026314040293070000A9 -:103E5000130760019306C100B386F60083D62600DF -:103E6000638A06101305C100EFF05F803304A040A1 -:103E70008357A102138C04006392070213076001A9 -:103E800093068102B386F60083D62600638E060E63 -:103E900013058102EFF08FFD338CA440835781021C -:103EA000938B490393848903239AF9028357A102D0 -:103EB000138A0B00239BF9029387E90423900400E3 -:103EC00093842400E39C97FE930A0000130B0000E8 -:103ED000930CC0FE9307C100B387570103D5870138 -:103EE000630E05009305810213064104EFF0CFAE87 -:103EF00093850B0013054104EFF00FA783D7C90486 -:103F000013850B00938AEAFF336BFB00EFF04FA39E -:103F1000E3929AFD9307810203570A00130A2A00CD -:103F200093872700239FE7FEE3189AFEB7C6FFFF9B -:103F30003304840193862600938709001307000445 -:103F4000B306D4001306000093050B00130581028D -:103F5000EFF05F990357C10083578102631CF7029A -:103F6000231401029305090013058102EFF01F805D -:103F70006FF05FDD93872700E39EE7EC13050900F0 -:103F8000EFE0DFFF6FF01FDC93872700E39AE7EE97 -:103F90006FF0DFFE9307F0FF2314F1026FF09FFC38 -:103FA000130101F7232481082322910823202109EA -:103FB000232A510723261108232E3107232C4107DA -:103FC00023286107232671072324810723229107D1 -:103FD0002320A1079304050013840500130906009C -:103FE000938A0600EFF00FA9630405049305090006 -:103FF00013850400EFE0DFF98320C1080324810862 -:1040000083244108032901088329C107032A810762 -:10401000832A4107032B0107832BC106032C81064A -:10402000832C4106032D010613010109678000005E -:1040300013050400EFF00FA46308050093050900C1 -:10404000130504006FF01FFB97D50000938545888A -:1040500013850400EFF0CFB56306051E1385040039 -:10406000EFF08FC59309050013050400EFF0CFC4EE -:10407000639A091E63100520138504009305C1008F -:10408000EFF00FA61305040093058102EFF04FA592 -:104090008354A1020354E1006394040293070000D7 -:1040A0001307600193068102B386F60083D62600CB -:1040B0006388061E13058102EFF04FDBB304A040B6 -:1040C0008357E100930B040063920702130760011A -:1040D0009306C100B386F60083D626006388061CCB -:1040E0001305C100EFF08FD8B30BA44083578102B2 -:1040F0000357A10293894A03239AFA0293878A03FA -:10410000239BEA02138A07001387EA049387270098 -:10411000239F07FEE39CE7FE13058102EFE05FF0BB -:10412000035C2101370B0100130BFBFF330D6C0304 -:10413000938CA9018357C1020354E10293970701AD -:10414000B387870013040B006368FD0033D4870333 -:1041500013140401135404019305C1001305040052 -:1041600013064104EFF04F879305810213054104C4 -:10417000EFE05FE76356A002930541041305C10019 -:10418000EFF00F829305810213054104EFE09FE5F4 -:10419000634CA0121304F4FF13140401135404011C -:1041A0009305810213054104EFE09FFF130581028F -:1041B00023108A00130A2A00EFE09FF6E31C9AF707 -:1041C0009307000093050000130760019306810226 -:1041D000B386F60083D6460093872700B3E5D50063 -:1041E000E396E7FEB335B0009307810203D70900D9 -:1041F0009389290093872700239FE7FEE3183AFF5E -:10420000B7460000B38474419386F6FF93870A0093 -:1042100013070004B386D4001306000013058102BF -:10422000EFF04FEC0357C10083578102631CF70A7C -:10423000231401029305090013058102EFF00FD347 -:104240006FF09FDB97C50000938585681305040018 -:10425000EFF00F96E31405E013050900EFF08FCEA1 -:104260006FF09FD9E31A05FE13050900EFE01FD197 -:104270006FF09FD813850400EFF00F8393040500BF -:1042800013050400EFF04F82638CA402B787FFFF91 -:104290002319F90013050900EFF04FA56FF0DFD5E2 -:1042A00093872700E390E7E06FF01FFC93872700D8 -:1042B000E390E7E20357C10083578102E318F7FC5C -:1042C000231909006FF01FFD1304E4FF1314040108 -:1042D000930541041305C10013540401EFE05FECA2 -:1042E0006FF01FEC9307F0FF2314F1026FF09FF4BF -:1042F00003AE050003A3450083A8850083A5C50080 -:10430000130101E2232C811C2326B1021384070030 -:10431000832505049307F0FF2328F1149307000970 -:104320002328211D2326311D2324411D232E711BEB -:10433000232E111C232A911C2322511D2320611D91 -:10434000232C811B232A911B2328A11B2326B11B6D -:10435000232601012320C103232261022324110308 -:10436000232AF11413090500130A06009389060095 -:10437000930B070063800502832745041307100091 -:104380003317F70023A2F50023A4E500EF10407ACD -:10439000232009041305010293050105EFF00FC462 -:1043A00013050105EFE05FF0630E05189307100099 -:1043B0002320F40093073000630AFA1893044001A5 -:1043C000630A0A009384F9FF9307A00263D497005D -:1043D0009304A00283274115130501052328F1004A -:1043E000EFE05FE91304050097C50000938585732E -:1043F000E3140528930700099305C1061305010579 -:10440000232AF114EFE0DFB88357E107930A000095 -:104410001397070113570741635E070037870000B2 -:104420001307F7FFB3F7E700B70A0100231FF106F0 -:10443000938AFAFF9305810817C500001305854A82 -:10444000EFE01FB50357E107E31807201307C10684 -:1044500093070000930690000356070063140610AC -:104460009387170013072700E398D7FE9305010CE5 -:1044700013058108EFE0DFE6930581081305010CC1 -:10448000EFE01FB49305010C1305C106EFE05FE5F3 -:104490009305C1061305010CEFE09FB21306011549 -:1044A0009305C10613058108EFF04FF6035BC119B0 -:1044B00017CC0000130CCC41631A0B0093050C00C1 -:1044C0001305C106EFE0DFEE631E056A9307D00215 -:1044D00063940A0093070002230AF1109307300047 -:1044E000138C04006318FA00338C84009307A00235 -:1044F000E3CE87219307A000631CFB6C9307100396 -:10450000A30AF1109307E002230BF110130B7111B2 -:10451000635A800193070003A30BF110130CFCFFF7 -:10452000130B811113041400635E0C6A130604005C -:1045300097C500009385456113050B00EF2080545B -:104540006F009014232004006FF0DFE693840900CD -:104550006FF09FE78317C10797C500009385855EBD -:10456000E3DC07109305C10617C500001305853766 -:10457000EFE01FE4E30C05EE635805469305410A9E -:104580001305C106EFE0DFA0B74700009387E708F7 -:10459000231BF10AB78700009387F7FF232AF10056 -:1045A000B7C7FFFF93872700130C0000930C00018F -:1045B000232CF10097C700009387073E33858701BE -:1045C00093060115130681089305410AEFF05F9DDC -:1045D0009305C10313058108EFE09F9B83274101E9 -:1045E000035BE1043377FB00832781013307F70086 -:1045F000634EE0041305010CEFE05F98131B0B0101 -:10460000135B0B4163500B12930700001307C103A8 -:104610003307F700835607001307010C3307F70031 -:1046200003570700638AE63A17C500001305852B78 -:10463000EFE05FC4630805089305010C17C500008F -:104640001305452AEFE0DF946F00C00D93070009C2 -:10465000338DE7409305010C1305C103EFE05F9331 -:104660006352A00D9306010C93070D001306F00092 -:104670006342F60493574D00130600FF939617000C -:10468000B387C7021307010CB306D70017C7000092 -:1046900013070724B387A70193971700B307F70001 -:1046A00083D7C71203D70600B3F7E7002390F600BD -:1046B0006FF0DFF423900600938707FF93862600B0 -:1046C0006FF01FFB1305010CEFE0DFBA6308050074 -:1046D0009305010C138505006FF0DFF617C5000088 -:1046E00013054520EFE05FDD130D05001305010CF8 -:1046F000EFE09FDC130B0500630C0D146302051241 -:1047000017C500001305051EEFE01FBA130B0500C7 -:104710001305010CEFE05FB96314AB101305010C36 -:10472000EFF04F8293070000130781083307F7006B -:10473000835607001307010C3307F70003570700E0 -:104740006390E6029387270013072001E39EE7FCAE -:104750009305410A13058108EFE09F833304940118 -:10476000130C4C019307400693DC1C00E314FCE49B -:104770008357610B0357E1079305C1061305410AEF -:10478000B387E70037C7FFFF130727F7B387E700B3 -:10479000231BF10AEFE0CFFF9305810817C5000046 -:1047A00013054514EFE0CFFE130B0000B71C00000B -:1047B000930D401097C70000938707149305410A93 -:1047C00017C5000013054522338C6701EFE05FBE7B -:1047D000E34EA0C89305410A13050C00EFE05FBD4E -:1047E0006348A0021306410A9305060093060115CB -:1047F00013050C00EFF0CFFA13068108930601159C -:104800009305060013050C00EFF08FCE33049401DE -:10481000130B4B0193DC1C00E31EBBF96FF01FC5AB -:1048200017C500001305050C9305010CEFE04FF6CA -:104830001305010CEFE01FA4E31605EE8357210DCD -:104840003787FFFFB3C7E7002319F10C6FF09FED27 -:10485000E31005E89305C10D17C500001305850891 -:10486000EFE01FA89305810F1305010CEFE05FA790 -:104870000357C10D835DA10F8357E10D1347F7FF68 -:10488000131D0701135D0D01231EA10DB387B74151 -:104890006354F008930541111305810F232EF10095 -:1048A000EFE00FF29305810F1305C10DEFE04FF11B -:1048B0009305C10D13054111EFE08FF08327C1016E -:1048C000835DA10FB307F0401307F0F663C6E70856 -:1048D000938507001305C10DEFE0DFC3130D05003D -:1048E0000357C10D8357810F9305810F1305C10D28 -:1048F000631EF70CEFE05F879307011513070004B1 -:1049000093860D0013060B0093050D001305810F10 -:10491000EFE05FFD6F004004E39807FA9305810F15 -:104920001305C10DEFE00FEC631805068357810FE7 -:104930006388A7011305010CEFE04FE46FF09FDEE1 -:1049400063940D020317E10F930700006340070211 -:104950001305810FEFE0CFF19305010C1305810FD3 -:10496000EFE0DFE06FF01FDC93070000130760014A -:104970009306810F3386F60003562600630806006F -:10498000938D1D00231DB10F6FF01FFD938727002E -:10499000E390E7FE6FF01FFF130D0000E352A0F459 -:1049A000930541111305810FEFE08FE19305810F0E -:1049B0001305C10DEFE0CFE09305C10D13054111C3 -:1049C000EFE00FE0130D0B006FF09FF1EFE04FFDF4 -:1049D000130B10006FF05FF293872700130720017D -:1049E000E396E7C26FF01FD48357E10717CB0000AF -:1049F000130B8BFF6388070A9305010C1305C1068F -:104A0000374B0000EFE0DF8D130BEBFF130C50FD75 -:104A10008357810D93F77700639207069305410A48 -:104A20001305010CEFE0CFD91305410AEFE04FDF8A -:104A30001305410AEFE0CFDE9305410A1305010C8F -:104A4000EFE08FF28357610A938737002313F10A4F -:104A50008357810A639E07108357C10B6390070237 -:104A60008357610A636CFB009305010C1305410A2F -:104A70001304F4FFEFE0CFD4E31C84F99305C106DF -:104A80001305010CEFE09FCE6F0040021306C10634 -:104A9000930601159305060013050B00EFF04FA5D3 -:104AA0001304F4FF8317C107E3D207FE9305010C3B -:104AB0001305C106EFE0CFCD9305810817C50000AF -:104AC000130545E2EFE0CFCC930C000037FBFFFF6E -:104AD000130D2000930D401097C700009387C7E186 -:104AE000338C970197C70000938787F3338797012B -:104AF0009305010C17C500001305C5DE232AE1004C -:104B0000EFE01F8B032741016356A0049305010CBE -:104B100013050700EFE0DF89634805021306010C67 -:104B2000930506009306011513050C00EFF04F9C4A -:104B300013068108930601159305060013050C0062 -:104B4000EFF00F9B33046401938C4C01334BAB03A8 -:104B5000E394BCF9130681089306011597C500007C -:104B6000938545D813050600EFF08FC36FF01F90B3 -:104B70001305410AEFE0CFCA8357610A93871700F4 -:104B80006FF0DFEC1305C106EFE08FCE9305410A0D -:104B90001305C106EFE0CFC21305410AEFE04FCD88 -:104BA0001305410AEFE0CFCC9305C1061305410A76 -:104BB000EFE08FDB130601159305C106130581088D -:104BC000EFF0CF841304F4FF035BC1196FF0DF8EA5 -:104BD000130B0B039307E002A30A6111230BF110DF -:104BE000130B7111930A0B00B3876A416356FC04DF -:104BF0008357C11913074000138BFAFFE358F7924C -:104C0000130750006384E70893070B001306E002C4 -:104C100093058003930600039387F7FF03C70700FC -:104C20001377F70763580C0A130710032380E70074 -:104C3000130414006FF09F8F1305C106EFE04FC3FC -:104C40009305410A1305C106EFE08FB71305410A2A -:104C5000EFE00FC21305410AEFE08FC19305C106D3 -:104C60001305410AEFE04FD0130601159305C10665 -:104C700013058108EFE09FF98347C119938A1A0051 -:104C800093870703A38FFAFE6FF01FF69305810841 -:104C90001305C106EFE09FAD97C50000938545C39E -:104CA00013058108EFE0CFF0E31005F6E3400C8830 -:104CB00083C7EAFF938727FD93B7170093C7F7FFD2 -:104CC000B307FB0083C7070093F71700E38007864D -:104CD0006FF09FF36314C70203C7F7FF93068003C7 -:104CE00063E8E60013071700A38FE7FE6FF01F8449 -:104CF00013041400130710036FF01FFF63E8E500AF -:104D0000130717002380E7006FF05F822380D7002E -:104D10006FF09FF01304140023A08B0093870A0008 -:104D20009306E00203C70700631607001307500449 -:104D30006F00C002630CD700938717006FF09FFECF -:104D400003C7170093871700A38FE7FE03C7070069 -:104D5000E31807FE6FF09FFD9387F7FF83C60700F8 -:104D60006384E600E3EAFAFE238007006F00001583 -:104D7000938717006F004015138406006F00C0155D -:104D80001304F4FF230004000347F4FF6316D70065 -:104D900033075441E3C6E7FE9307300013879900B9 -:104DA0006314FA0283270116B384F40063D8040065 -:104DB000230A011023A00B0013840A0083A70B0011 -:104DC000B389F900138739002322090493074000AF -:104DD00093864701832549046378D70613050900A4 -:104DE000EF00904A2320A90493850A00930405004C -:104DF000EF10507C8327C1006388070033045441BF -:104E00003384840023A087008320C11D0324811DD7 -:104E1000138504000329011D8324411D8329C11C1E -:104E2000032A811C832A411C032B011C832BC11BD9 -:104E3000032C811B832C411B032D011B832DC11AC5 -:104E40001301011E67800000938515002322B90419 -:104E5000939717006FF0DFF7B78700009387F7FF8E -:104E6000631AF7EE97C50000938505CD63860A00A7 -:104E700097C50000938585CB1305411137240000A9 -:104E8000EF1050401304F47083270101130501054E -:104E900023208116232AF114EFE00FE2930A411137 -:104EA0006318050013050105EFE0CFBCE30405E638 -:104EB000B72700009387F77023A0FB0093870A00B1 -:104EC000130600029306D00203C70700E302C7EAF5 -:104ED000E300D7EA13840A009387170003C7F7FF9C -:104EE00093061400A38FE6FEE31807E813072000DB -:104EF000930710006308EA008327011663D4970024 -:104F000093870400930600036FF01FE89307A00047 -:104F1000130CA002E31EFBCA93071003A30AF110AF -:104F20009307E002230BF110130CA0026FF08FDE49 -:104F300083270500130101FC930541012320F100A3 -:104F400083274500232E11022322F10083278500A9 -:104F50002324F1008327C500130501002326F10057 -:104F6000EFE0DF87835761021305000093C7F7FF67 -:104F700013971701631A070013054101EFE08FAF84 -:104F800013351500130515008320C1031301010417 -:104F9000678000001305050F6780000097D70000A9 -:104FA000938747F683A7070003A547036316050009 -:104FB00017D500001305859D1305050F67800000B8 -:104FC00097D70000938707F483A7070003A547033B -:104FD0006316050017D500001305459B1305050F43 -:104FE0006780000063080606130101FF97C50000F3 -:104FF000938505B61305060023248100232611009E -:1050000013040600EF1050436308050297C5000023 -:105010009385C5B313050400EF101042630E05001D -:1050200097B500009385056E13050400EF10D0407E -:10503000930700006316050097C70000938707B128 -:105040008320C1000324810013850700130101019F -:105050006780000097C70000938747AF138507005C -:105060006780000097D700009387C7E983A70700F0 -:1050700083A747036396070097D70000938707919C -:1050800003C58712678000000325C50E67800000F6 -:1050900097D70000938707E783A7070083A74703F5 -:1050A0006396070097D700009387478E03A5C70E26 -:1050B0006780000097D700009387C7E41386050038 -:1050C0009305050003A507006FF0DFF1130101FA56 -:1050D000232A9104938405008395E500232C810401 -:1050E000232E11041304060063DE050083D7C400D9 -:1050F00023A0060093F7070863980704930700406E -:105100006F00C004130641012326D100EF40107147 -:105110008326C100E34C05FC03278101B7F700009B -:1051200037150000B3F7E70037E7FFFFB387E70065 -:1051300093B7170023A0F600930700402320F40044 -:10514000130505806F000001930700042320F4007D -:10515000130500008320C105032481058324410534 -:10516000130101066780000083D7C500130101FE0B -:10517000232C8100232E1100232A910023282101B2 -:1051800093F727001384050063880702930734040C -:105190002320F4002328F40093071000232AF400AE -:1051A0008320C101032481018324410103290101DA -:1051B00013010102678000009306C10013068100FD -:1051C00093040500EFF09FF083258100130905008B -:1051D00013850400EF004008631005028317C40024 -:1051E00013F70720E31E07FA93F7C7FF93E727009B -:1051F0002316F4006FF09FF997D7FFFF9387075CA2 -:1052000023AEF4028357C4002320A4002328A40063 -:1052100093E707082316F40083278100232AF4006C -:105220008327C100638207028315E400138504000D -:10523000EF50C029630A05008357C40093F7C7FFE6 -:1052400093E717002316F4008357C4003369F9006D -:10525000231624016FF0DFF4130101FD2326110250 -:10526000232481022322910223202103232E3101B2 -:10527000232C4101232A5101232861012326710196 -:10528000232481019387B500130760016374F70439 -:1052900093F487FF63D204049307C0002320F50032 -:1052A000130500008320C1020324810283244102EC -:1052B000032901028329C101032A8101832A4101B3 -:1052C000032B0101832BC100032C81001301010377 -:1052D0006780000093040001E3E0B4FC13090500BB -:1052E000EF00007A9307701F97D900009389C98057 -:1052F00063EA9704138784003387E9000324470097 -:10530000930687FF93D734006318D4000324C700A3 -:105310009387270063008708832744000327C4007E -:105320008326840093F7C7FFB307F40023A6E600A3 -:105330002324D70003A747001367170023A2E70021 -:105340006F00C00A13D794009307F003630A0700A5 -:105350009307400063E4E70A93D7640093878703C9 -:1053600013871700131737003387E900032447001A -:10537000930587FF1305F000630CB4000327440076 -:105380001377C7FF330697406352C50C9387F7FF27 -:105390009387170003A4090197C5000093854576FC -:1053A0006302B414032744009306F0001377C7FF89 -:1053B0003306974063DEC60A93E714002322F40005 -:1053C000B306940097C7000023A2D77497C70000C4 -:1053D00023ACD7729367160023A6B60023A4B600A9 -:1053E00023A2F6003307E4002320C70013050900B9 -:1053F000EF004069130584006FF0DFEA9307400176 -:1054000063E6E7009307B7056FF09FF59307400544 -:1054100063E8E70093D7C4009387E7066FF05FF473 -:105420009307401563E8E70093D7F4009387770765 -:105430006FF01FF3930640559307E007E3E2E6F2AF -:1054400093D724019387C7076FF09FF18326C40089 -:10545000634C06008327840023A6D70023A4F6000C -:10546000B307E4006FF01FED138406006FF0DFF068 -:1054700097C6000023ACB66897C6000023A6B6689E -:10548000634C06003307E4008327470093E71700C7 -:105490002322F7006FF09FF59306F01F03A8490041 -:1054A00063E2E61A1357370013562740930610009D -:1054B00013071700B396C600131737003387E900A8 -:1054C000B3E6060117C60000232AD662832607002A -:1054D000130687FF2326C4002324D400232087003B -:1054E00023A6860013D72740130310003313E300CD -:1054F00003A74900636C6706B3766700639C0600E8 -:1055000093F7C7FF13131300B37667009387470021 -:10551000E38A06FE130EF00093963700B386D90097 -:1055200013880600138507000324C800631E041DAA -:10553000130515001377350013088800E31607FEDE -:1055400013F737006314072403A749009347F3FFB9 -:10555000B377F70017C700002322F75A03A74900C3 -:1055600013131300636467006316032483AB89007D -:1055700003A44B00937AC4FF63E89A0033879A40F0 -:105580009307F00063C0E73697D700009387079929 -:1055900003A4070097D700009387079783A6070007 -:1055A0001307F0FF33848400138A07006398E62012 -:1055B000130404019305040013050900EF1040369D -:1055C0009307F0FF130B05006302F52AB3875B0115 -:1055D0006374F500639C3B2917DC0000130C8C946A -:1055E00003270C003307E40097D6000023ACE692B3 -:1055F0006392671F93964701639E061C83A78900E9 -:1056000033848A001364140023A2870017D7000094 -:105610001307879083270C00032707006376F700A2 -:1056200017D70000232AF78E17D700001307878E9D -:1056300003270700637CF72217D70000232CF78C81 -:105640006F00C022135697009306400063E8C6041B -:10565000935667009386860313861600131636004A -:105660003386C900130586FF032606006314C508A8 -:105670001307100093D62640B316D700B3E60601F1 -:1056800017C70000232CD7462326A4002324C400D8 -:1056900023248500232686006FF0DFE49306400173 -:1056A00063E6C6009306B6056FF01FFB9306400540 -:1056B00063E8C6009356C7009386E6066FF0DFF9ED -:1056C0009306401563E8C6009356F7009386760765 -:1056D0006FF09FF8130540559306E007E36EC5F69B -:1056E000935627019386C6076FF01FF7032686009F -:1056F0006308C5008326460093F6C6FFE368D7FE1D -:105700000325C6006FF05FF8032744000326C4009A -:105710001377C7FFB308974063541E0593E714003F -:105720002322F40083278400B30694003307E400A7 -:1057300023A6C7002324F60097C7000023A8D73C60 -:1057400097C7000023A2D73C93E7180023A6B60012 -:1057500023A4B60023A2F600232017016FF01FC96F -:1057600063C208023307E4008327470093E717006A -:105770002322F7008327840023A6C7002324F600F2 -:105780006FF0DFC6130406006FF05FDA138786FF41 -:1057900083A606009387F7FFE384E6DA6FF01FDC49 -:1057A0009387470013131300B3766700E38A06FE5E -:1057B0006FF09FD6930705006FF01FFFB71700002B -:1057C0009387F7003304F400B7F7FFFF3374F40056 -:1057D0006FF05FDE03260A009306F0FF631CD60A13 -:1057E00097C7000023A2677393757B006388050049 -:1057F00093078000B385B740330BBB00B717000099 -:10580000B385F50033048B009387F7FF3374F400FE -:10581000338A854093050A0013050900EF104010F4 -:105820009307F0FF6316F50013050B00130A000041 -:1058300083270C0033056541B3874701330A4501CF -:1058400017C700002320F76E136A1A0097C70000DD -:1058500023A8672B23224B01E38A3BDB1307F000CD -:1058600063645705930710002322FB0083A7890078 -:1058700083A7470093F7C7FF3387974063E69700F6 -:105880009307F00063C0E70613050900EF00801FCF -:105890006FF01FA1B307FB40B387E70017C70000F5 -:1058A0002322F7686FF05FF483A74B0013844AFF4D -:1058B000137484FF93F71700B3E7870023A2FB005C -:1058C00093065000B3878B0023A2D70023A4D700F0 -:1058D000E37E87D293858B0013050900EFD00FADCF -:1058E0006FF0DFD203A4890093E714002322F400B1 -:1058F000B307940097C6000023A4F6206FF0DFA33F -:1059000097C700009387076083A7070083A7470313 -:105910006396070097C700009387470703A3470EC6 -:1059200067000300639A0502130101FF9305C1009C -:1059300013050000630E06001305E0FF638A0600EE -:105940008347060023A0F500034506003335A00079 -:1059500013010101678000001305000063000602C7 -:105960001305E0FF638C06008347060023A0F500C3 -:10597000034506003335A000678000006780000003 -:1059800093F5F50F3306C5006316C5001305000037 -:105990006780000083470500E38CB7FE1305150000 -:1059A0006FF09FFE1303F00013070500637EC30230 -:1059B0009377F7006390070A63920508937606FFD2 -:1059C0001376F600B386E6002320B7002322B70043 -:1059D0002324B7002326B70013070701E366D7FE89 -:1059E0006314060067800000B306C3409396260048 -:1059F00097020000B38656006780C6002307B700F1 -:105A0000A306B7002306B700A305B7002305B70018 -:105A1000A304B7002304B700A303B7002303B70010 -:105A2000A302B7002302B700A301B7002301B70008 -:105A3000A300B7002300B7006780000093F5F50FBF -:105A400093968500B3E5D50093960501B3E5D5009F -:105A50006FF0DFF69396270097020000B38656009A -:105A600093820000E78006FA93800200938707FF85 -:105A70003307F7403306F600E378C3F66FF0DFF341 -:105A800067800000678000008327C504130101FFC1 -:105A900023229100232021012326110023248100A9 -:105AA00093040500138905006382070403A7C40457 -:105AB00093172900B307F70003A507006310050635 -:105AC0001304100033142401130654001316260087 -:105AD0009305100013850400EF40001D63020502CA -:105AE00023222501232485006F00C0031306100222 -:105AF00093054000EF40401B23A6A404E31805FAD9 -:105B0000130500008320C100032481008324410089 -:105B1000032901001301010167800000032705002C -:105B200023A0E70023280500232605006FF09FFD32 -:105B30006380050283A74500139727008327C504C8 -:105B4000B387E70003A7070023A0E50023A0B70061 -:105B500067800000130101FD232E31019309050028 -:105B600037050100232481022322910213840500BA -:105B700083A40501232611022320210393854501D7 -:105B8000130800001305F5FF83A705009385450062 -:105B90001308180033F7A7003307C70293D707018C -:105BA000B387C7023307D700935607013377A7009F -:105BB000B387D70093D6070193970701B387E70010 -:105BC00023AEF5FEE34298FC638406068327840037 -:105BD00063C4F40483254400138509002326D100FF -:105BE00093851500EFF05FEA032604019305C400D6 -:105BF0001309050013062600131626001305C50019 -:105C0000EF40D0169305040013850900EFF05FF212 -:105C10008326C1001304090093874400939727004B -:105C2000B307F40023A2D700938414002328940020 -:105C3000130504008320C10203248102832441024E -:105C4000032901028329C1011301010367800000B8 -:105C5000130101FD93878600232A5101938A0600D0 -:105C6000930690002324810223229102232C4101D8 -:105C700013840500B3C7D702232611022320210372 -:105C8000232E3101130A0500930406009306100029 -:105C90009305000063C6F60813050A002326E100F9 -:105CA000EFF09FDE0327C100930710002328F500C3 -:105CB000232AE5009307900063DA970613099400FE -:105CC00093090900330494009389190083C6F9FFEE -:105CD000930505001306A000938606FD13050A0030 -:105CE000EFF05FE7E39289FE33049900130484FF29 -:105CF000B3848440B307940063C057058320C10276 -:105D00000324810283244102032901028329C10162 -:105D1000032A8101832A41011301010367800000E6 -:105D200093961600938515006FF0DFF61304A40018 -:105D3000930490006FF0DFFB130414008346F4FF1C -:105D4000930505001306A000938606FD13050A00BF -:105D5000EFF05FE06FF01FFA3707FFFF3377E500E2 -:105D600093070500130500006316070093970701CA -:105D700013050001370700FF33F7E700631607003C -:105D80001305850093978700370700F033F7E70086 -:105D9000631607001305450093974700370700C0B7 -:105DA00033F7E700631607001305250093972700D4 -:105DB00063CC0700139717006356070013051500FF -:105DC000678000001305000267800000832705003C -:105DD00013F77700630E070293F61700130700000E -:105DE000639C060013F72700630C070093D7170086 -:105DF0002320F5001307100013050700678000003B -:105E000093D727002320F500130720006FF0DFFE53 -:105E10009396070193D606011307000063960600C8 -:105E200093D707011307000193F6F70F6396060057 -:105E30001307870093D7870093F6F7006396060051 -:105E40001307470093D7470093F637006396060081 -:105E50001307270093D7270093F6170063980600CF -:105E600093D7170063880700130717002320F50056 -:105E70006FF09FF8130700026FF01FF8130101FF86 -:105E800023248100138405009305100023261100AC -:105E9000EFF09FBF232A85008320C10003248100E7 -:105EA000130710002328E50013010101678000009B -:105EB00003A7050183270601130101FD2322910297 -:105EC000232611022324810223202103232E3101C2 -:105ED000938405006356F7009304060013860500BB -:105EE00083A904010329060183A7840083A5440034 -:105EF0003384290163D48700938515002326C100CC -:105F0000EFF09FB80326C1001308450113132400C6 -:105F1000330368009307080063EC6704938544012A -:105F20009398290013064601131E2900B7060100A5 -:105F3000B3881501330EC6019386F6FF6360C6056C -:105F4000635880001303C3FF83270300638607128F -:105F5000232885008320C102032481028324410277 -:105F6000032901028329C101130101036780000095 -:105F700023A00700938747006FF01FFA032F060046 -:105F8000337FDF0063040F06930F08009382050040 -:105F90009304000003A7020083A30F009382420032 -:105FA000B37ED700B38EEE03B3F7D30093D30301D0 -:105FB000B38EFE0093570701B387E703B38E9E00AD -:105FC00013D70E01B3FEDE00B3877700B387E70077 -:105FD00093D407019397070113874F00B3E7D701C5 -:105FE000232EF7FE63E2120923A29F0083522600AC -:105FF0006386020683270800930E0800138F0500AE -:10600000930F000003270F0083D32E00B3F7D700B0 -:106010003377D70033075702130F4F00330777004A -:106020003307F701931F0701B3E7FF0093834E0087 -:1060300023AEF3FE8357EFFF83AF4E0013570701E4 -:10604000B3875702B3FFDF00B387F701B387E700D9 -:1060500093DF0701636E1F0123A2FE0013064600B3 -:10606000130848006FF09FED930F07006FF09FF249 -:10607000938E03006FF01FF91304F4FF6FF05FECD1 -:10608000130101FE232A9100232821012326310137 -:10609000232E1100232C8100232441019377360005 -:1060A0001309050093040600938905006384070221 -:1060B0009387F7FF17B70000130747AA93972700A6 -:1060C000B307F70003A6070093060000EFF09FA8B0 -:1060D0009309050093D424406380040803248904B1 -:1060E000631E04009305102713050900EFF01FD964 -:1060F0002324A904130405002320050093F71400AA -:106100006384070293850900130604001305090040 -:10611000EFF01FDA130A0500938509001305090043 -:10612000EFF01FA193090A0093D414406386040280 -:1061300003250400631E05001306040093050400F4 -:1061400013050900EFF0DFD62320A400232005006B -:10615000130405006FF09FFA8320C101032481011D -:106160001385090083244101032901018329C1000A -:10617000032A81001301010267800000130101FD61 -:106180002322910293840500232E310183A9040167 -:106190002324810283A545001354564083A784001D -:1061A000B309340123202103232A5101232611029C -:1061B000232C4101930A05001389190063C6270D9A -:1061C00013850A002326C100EFF01F8C0326C100AF -:1061D00093074501130A0500938607001307000083 -:1061E000938646006348870A635404001304000042 -:1061F00083A6040113142400338787009396260096 -:10620000938744011376F601B386D700630E060820 -:10621000130800023308C8409305000003A50700D7 -:1062200093084700938747003315C500B365B50051 -:1062300023AEB8FE83A5C7FFB3D5050163E2D70639 -:106240002322B70063840500138929001309F9FF8D -:1062500023282A0113850A0093850400EFF05F8D3F -:106260008320C1020324810213050A008324410212 -:10627000032901028329C101032A8101832A4101E3 -:1062800013010103678000009385150093971700A1 -:106290006FF0DFF223AE06FE130717006FF05FF416 -:1062A000138708006FF09FF79387470003A6C7FF87 -:1062B00013074700232EC7FEE3E8D7FE6FF01FF950 -:1062C0008327050103A70501B387E740639C070205 -:1062D000131727001305450193854501B306E50013 -:1062E000B385E5009386C6FF9385C5FF03A6060028 -:1062F00003A70500630CE6009307F0FF6364E60064 -:10630000930710001385070067800000E36CD5FC3D -:106310006FF05FFF130101FE232A910093840500B3 -:106320002326310193050600930905001385040017 -:10633000232C8100232E11002328210113040600A1 -:10634000EFF01FF8631C0502930500001385090098 -:10635000EFF08FF3930710002328F500232A0500A0 -:106360008320C10103248101832441010329010108 -:106370008329C10013010102678000001309100086 -:10638000634A050093070400130900001384040006 -:10639000938407008325440013850900EFF0CFEEB6 -:1063A0000323040183A8040113064401131E2300E0 -:1063B0001388440193982800B70E01002326250175 -:1063C000330EC601B308180193064501130F0000F0 -:1063D000938EFEFF03270600832F08009386460056 -:1063E000B375D701B3F7DF01B385E501B385F54098 -:1063F00093DF0F0193570701B387F74113D7054187 -:10640000B387E70013DF0741B3F5D5019397070181 -:10641000B3E7B7001308480023AEF6FE13064600A4 -:10642000E36A18FBB70501009385F5FF636CC601AD -:106430009386C6FF83A706006382070423286500AE -:106440006FF01FF28327060093864600130646006E -:1064500033F7B7003307E7011358074193D7070114 -:10646000B387070113DF07413377B700939707011D -:10647000B3E7E70023AEF6FE6FF05FFB1303F3FF15 -:106480006FF01FFBB707F07FB3F5B700B707C0FC8D -:10649000B385F5006358B00093070000138507002B -:1064A00067800000B305B04093D745411307300122 -:1064B0006348F700B7050800B3D5F5406FF0DFFD7E -:1064C0009387C7FE9306E0019305000013071000B1 -:1064D00063C6F60093C7F7FF3317F700930707006B -:1064E0006FF0DFFB130101FD2322910283240501DC -:1064F000232E31019309450193942400B38499001C -:106500002324810203A4C4FF232021032326B100F6 -:106510001305040023261102EFF01F848325C10018 -:1065200093070002B387A74023A0F5009307A000BC -:106530001389C4FF63CCA7049307B000B387A740B7 -:106540003707F03FB356F400B3E6E6001307000048 -:1065500063F4290103A784FF130555013315A40033 -:10656000B357F700B367F5008320C102032481020B -:1065700083244102032901028329C10113850700F5 -:106580009385060013010103678000009307000054 -:1065900063F6290183A784FF138984FF130555FF40 -:1065A000630E0502130700023306A7403314A4004C -:1065B0003707F03F3364E400B3D6C700B366D400B6 -:1065C0001307000063F429010327C9FFB397A7004D -:1065D0003357C700B3E7E7006FF01FF9B706F03F86 -:1065E000B366D4006FF05FF8130101FD232481022C -:1065F0001384050093051000232291022320210318 -:1066000093040600232E3101232C410113090700B6 -:1066100023261102138A0600EFF00FC73707100078 -:106620009307F7FFB3F7970093D4440193F4F47FF3 -:1066300093090500639A04082326F100630E0408F9 -:106640001305810023248100EFF04FF88326810099 -:10665000630005080327C10093070002B387A74022 -:10666000B317F700B3E7D7003357A70023AAF90001 -:106670002326E1000324C10023AC890033348000C9 -:106680001304140023A88900638A04069384D4BCED -:10669000B384A4009307500323209A003385A740B6 -:1066A0002320A9008320C10203248102138509004D -:1066B00083244102032901028329C101032A8101A4 -:1066C0001301010367800000B3E7E7006FF0DFF616 -:1066D00023AAD9006FF01FFA1305C100EFF00FEFE6 -:1066E0008327C100130505021304100023AAF90033 -:1066F0009307100023A8F9006FF01FF993172400E7 -:106700001305E5BCB387F9002320AA0003A5070100 -:1067100013145400EFF04FE43304A4402320890005 -:106720006FF05FF8130101FD232021031389050099 -:106730009305810023261102232481022322910242 -:10674000232E3101232C4101130A0500EFF09FD9BC -:1067500093090500938405001384050013050900BF -:106760009305C100EFF01FD88327090103270A0111 -:10677000832681003307F7408327C1001317570092 -:10678000B386F640B307D7006354F00493974701EC -:106790001386050033849700130706009305040051 -:1067A000130605009306070013850900EF501063D8 -:1067B0008320C102032481028324410203290102B0 -:1067C0008329C101032A81011301010367800000AD -:1067D0003707F0FFB387E7023386B7006FF0DFFBC0 -:1067E000130101FF2324810023261100232221010C -:1067F00023203101930770011304050063CAA70227 -:106800001314350097A7000093874735338487001A -:1068100003250401832544018320C1000324810052 -:106820000329410083290100130101016780000051 -:1068300097B70000938707BB03A5070083A5470010 -:1068400097B70000938787BA03A9070083A9470079 -:1068500013060900938609001304F4FFEF60004655 -:10686000E31804FE6FF05FFB9387F5FF0327060133 -:1068700093D75740938717009397270093064601B5 -:1068800013172700B307F5003387E60063E6E60039 -:10689000636EF500678000009386460003A6C6FF7E -:1068A00013054500232EC5FE6FF05FFE130545005E -:1068B000232E05FE6FF0DFFD8326050193D755409B -:1068C0001307450163C0F60463D4D70293F5F501BD -:1068D0006380050293962700B306D70003A606003F -:1068E00013051000B356B600B395B6006318B60290 -:1068F00093972700B307F700636AF70013050000BA -:1069000067800000938706006FF09FFE9387C7FFA4 -:1069100083A60700E38206FE1305100067800000CF -:10692000130101FF232481001304050013850500D2 -:1069300097B7000023AC076023261100EF90D041E9 -:106940009307F0FF631CF50097B70000938707607B -:1069500083A70700638407002320F4008320C1007D -:10696000032481001301010167800000130101FF6E -:1069700023229100B70400802324810023261100E4 -:1069800093C4F4FF33F7B400232006003708F07FE8 -:106990009306050093870500130406006354070758 -:1069A0003368A70063000806B707100013860500C8 -:1069B0006356F70297B700009387C7A303A60700A3 -:1069C00083A64700EF60802F9307A0FC9306050085 -:1069D0001386050033F7B4002320F4008327040056 -:1069E00013574741130727C03387E700B7071080C5 -:1069F0009387F7FF3376F600B707E03F2320E400E4 -:106A0000B367F6008320C100032481008324410082 -:106A100013850600938507001301010167800000BC -:106A2000130101F6232AF108B707008093C7F7FF87 -:106A3000232EF1002328F100B707FFFF2326D108FA -:106A40002324B100232CB100938787209306C1082B -:106A500093058100232E1106232AF1002328E10843 -:106A6000232C0109232E11092322D100EF00803CA1 -:106A700083278100238007008320C1071301010AB7 -:106A800067800000130101F6232AF108B707008090 -:106A900093C7F7FF232EF1002328F100B707FFFF6C -:106AA000938787202324C1082326D1082328E108BF -:106AB000232C0109232E1109232AF10097B7000086 -:106AC000938747442324A100232CA10003A507009A -:106AD000930681081386050093058100232E110675 -:106AE0002322D100EF000035832781002380070097 -:106AF0008320C1071301010A67800000130101FF11 -:106B000023248100138405008395E50023261100CA -:106B1000EF3090396340050283270405B387A7004F -:106B20002328F4048320C100032481001301010100 -:106B3000678000008357C40037F7FFFF1307F7FF94 -:106B4000B3F7E7002316F4006FF0DFFD1305000034 -:106B50006780000083D7C500130101FE232C81004C -:106B6000232A91002328210123263101232E1100FD -:106B700093F707109304050013840500130906001A -:106B800093890600638A07008395E5009306200039 -:106B900013060000EF3050188357C40037F7FFFF8B -:106BA0001307F7FFB3F7E7002316F4008315E4009B -:106BB000032481018320C101938609001306090083 -:106BC0008329C100032901011385040083244101A5 -:106BD000130101026F300008130101FF232481001B -:106BE000138405008395E50023261100EF30D012B1 -:106BF0009307F0FF0357C4006312F502B7F7FFFFD6 -:106C00009387F7FFB3F7E7002316F4008320C10052 -:106C1000032481001301010167800000B717000001 -:106C2000B367F7002316F4002328A4046FF01FFEB7 -:106C30008395E5006F3000113367B5009303F0FFD3 -:106C40001377370063100710B7877F7F9387F7F7B5 -:106C50000326050083A60500B372F6003363F60031 -:106C6000B382F200B3E26200639272106316D60838 -:106C70000326450083A64500B372F6003363F60091 -:106C8000B382F200B3E26200639E720C6316D60612 -:106C90000326850083A68500B372F6003363F600F1 -:106CA000B382F200B3E262006398720C6316D604FA -:106CB0000326C50083A6C500B372F6003363F60051 -:106CC000B382F200B3E262006392720C6316D602E2 -:106CD0000326050183A60501B372F6003363F600AF -:106CE000B382F200B3E26200639C720A13054501AD -:106CF00093854501E30ED6F4131706019397060119 -:106D0000631EF7001357060193D706013305F740BA -:106D10009375F50F63900502678000001357070114 -:106D200093D707013305F7409375F50F639405007A -:106D3000678000001377F70F93F7F70F3305F740DD -:106D4000678000000346050083C605001305150093 -:106D5000938515006314D600E31606FE3305D6406E -:106D6000678000001305450093854500E31CD6FCB1 -:106D700013050000678000001305850093858500DA -:106D8000E312D6FC13050000678000001305C50060 -:106D90009385C500E318D6FA13050000678000004C -:106DA0001305050193850501E31ED6F813050000C0 -:106DB000678000009307050003C70500938717004D -:106DC00093851500A38FE7FEE31807FE6780000098 -:106DD000930705009387170003C7F7FFE31C07FE1F -:106DE0003385A7401305F5FF6780000013070500F2 -:106DF00063140600678000009385150083C6F5FFC5 -:106E0000930717001308F6FFA38FD7FE63980600B9 -:106E10003307C700639AE700678000001387070005 -:106E2000130608006FF0DFFC93871700A38F07FE9F -:106E30006FF05FFE130101E32326111C2322911C36 -:106E40002320211D232E311B232A511B938905004A -:106E500093040600938A06002324811C232C411BE3 -:106E60002328611B2326711B2324811B2322911BB2 -:106E70002320A11B232EB11913090500EFE00F9267 -:106E800083270500138507002324F102EFF05FF448 -:106E900083D7C900232AA1002328010C232A010C2F -:106EA000232C010C232E010C93F7070863800704A1 -:106EB00083A70901639C07029305000413050900D9 -:106EC000EFE08FB923A0A90023A8A900631C050047 -:106ED0009307C0002320F9009307F0FF232CF10053 -:106EE0006F00C0589307000423AAF9009308C10E4D -:106EF0002322110D2326010C2324010C130A000068 -:106F0000232A010223280102232401002322010253 -:106F100023260102232C01001384040013075002CE -:106F200083470400638407006392E70C330B9440AB -:106F3000630A0B048327C10C23A0980023A26801D5 -:106F4000B38767012326F10C8327810C1307700098 -:106F500093888800938717002324F10C635EF70061 -:106F60001306410C9385090013050900EF305063A7 -:106F70006318054E9308C10E83278101B38767010B -:106F8000232CF10083470400639407006F10505EC8 -:106F9000930714002328F100A303010A130BF0FF49 -:106FA000232E010013040000930B90009306A0050C -:106FB0001306A0028327010103CD07009387170062 -:106FC0002328F10093070DFE63F4F6006F10802A6A -:106FD00017A70000130707CB93972700B387E70095 -:106FE00083A70700B387E700678007001304140036 -:106FF0006FF01FF397A700009387078C232AF102F5 -:1070000093770402639407006F108008938A7A00D4 -:1070100093FA8AFF03AC0A0083AC4A0093878A0084 -:107020002326F10093771400638E0700B3679C0159 -:10703000638A0700930700032304F10AA304A10B4A -:10704000136424001374F4BF930720006F00D0442E -:107050001305090023221101EFD05FF483274500B7 -:10706000138507002326F102EFF09FD62322A10209 -:1070700013050900EFD09FF2832785008328410084 -:107080002324F10083274102E38207F28327810052 -:10709000E38E07F083C70700E38A07F01364044018 -:1070A0006FF0DFF08347710AE39207F09307000265 -:1070B000A303F10A6FF09FEF136414006FF01FEF4A -:1070C00083A70A00938A4A00232EF100E3D007EE3B -:1070D000B307F040232EF100136444006FF01FED5E -:1070E0009307B0026FF0DFFC032701018327010142 -:1070F000034D0700938717006310CD0403AB0A000C -:1071000013874A0063540B00130BF0FF930A070028 -:107110002328F1006FF09FE99305A0003303BB0221 -:107120009387170003CDF7FF330BE30013070DFD23 -:10713000E3F4EBFE6FF0DFE8130B00006FF01FFFCE -:10714000136404086FF09FE683270101232E0100DA -:107150000327C1019305A000130D0DFD3307B702EE -:10716000938717003307ED0003CDF7FF232EE100CF -:1071700013070DFDE3FEEBFC6FF09FE41364840046 -:107180006FF0DFE28327010103C707009307800642 -:10719000631CF70083270101136404209387170001 -:1071A0002328F1006FF09FE0136404046FF01FE0E8 -:1071B0008327010103C707009307C006631CF7007C -:1071C00083270101938717002328F1001364040229 -:1071D0006FF0DFDD136404016FF05FDD93874A0019 -:1071E0002326F10083A70A00A303010A2306F11254 -:1071F00023220100130B1000930D0000130C00005C -:10720000930B0000930C00009304C1126F005039DF -:107210001364040193770402638E0704938A7A004F -:1072200093FA8AFF03AC0A0083AC4A0093878A0072 -:107230002326F10063DE0C00330C8041B33780015C -:10724000B30C9041B38CFC409307D002A303F10A26 -:107250009307F0FFE31CFB66E39E0C6E9307900020 -:10726000E3EA876F130C0C03A30781199304F11849 -:107270006F00D06B93874A002326F10093770401B7 -:107280006388070003AC0A00935CFC416FF09FFA2F -:107290009377040403AC0A0063880700131C0C01F5 -:1072A000135C0C416FF05FFE93770420E38E07FCC4 -:1072B000131C8C01135C8C416FF01FFD93778400CD -:1072C0006382070C93874A002326F10083A70A00F4 -:1072D00003A6070083A6470003A7870083A7C7006C -:1072E0002328C10C232AD10C232CE10C232EF10CD2 -:1072F0001305010D23221101EFD09FC32326A10AFC -:1073000093072000832841006314F50C8327010DA7 -:1073100093050108130501092328F1088327410D6E -:107320002320010823220108232AF1088327810D45 -:107330002324010823260108232CF1088327C10DEB -:10734000232EF108EF6000188328410063560500E2 -:107350009307D002A303F10A9307700497940000E7 -:107360009384845363C6A701979400009384845246 -:107370001374F4F723220100130B3000930D000067 -:107380006F00D05B938A7A0093FA8AFF83A50A0084 -:1073900003A64A0093878A001305010923221101DD -:1073A0002326F100EF80502683270109832841001E -:1073B0002328F10C83274109232AF10C8327810913 -:1073C000232CF10C8327C109232EF10C6FF05FF2FF -:1073D000930710006318F5028327C10D63D60700D9 -:1073E0009307D002A303F10A930770049794000057 -:1073F0009384044BE3CEA7F7979400009384044A48 -:107400006FF01FF7937BFDFD930710046390FB0A59 -:10741000930700032304F10A13071006930780055E -:107420006314ED0093078007A304F10A9307300665 -:107430001364240063D6674F93051B0013050900EE -:1074400023221101EFD05FE193040500832841005E -:10745000631E054C83D7C90093E707042396F90000 -:1074600083D7C90093F70704E39807A68320C11CBC -:107470000324811C032581018324411C0329011C51 -:107480008329C11B032A811B832A411B032B011B58 -:10749000832BC11A032C811A832C411A032D011A44 -:1074A000832DC1191301011D678000009307F0FFB0 -:1074B0006302FB4893077004232201006394FB00DE -:1074C00063000B48832AC10D936704102320F10247 -:1074D000232C0102032E010D832D410D832C810DE0 -:1074E00063DA0A00B7070080B3CA57019307D002D6 -:1074F000232CF102930710046398FB48130501093C -:10750000232411052328C109232C9109232AB10919 -:10751000232E5109EF8090311306C10AEFF00FC5F9 -:10752000138605009305050013050109EF80D00DB2 -:107530008327010913060106930501072328F10695 -:10754000832741091305010823200106232AF10698 -:10755000832781092322010623240106232CF10617 -:107560008327C109232EF106B707FC3F2326F10626 -:10757000EF60400B03280108032641088326810899 -:10758000832CC1089305010813050109232801096B -:1075900023220105232AC1082320C104232CD1085A -:1075A000232ED102232E9109232001082322010832 -:1075B0002324010823260108EF50104E8326C1031F -:1075C000032601040328410483288104631605006F -:1075D000130710002326E10A13071006979A0000EC -:1075E000938A8A2D6316ED00979A0000938A8A2B5E -:1075F000130EFBFF938D0400B707034093050108AA -:107600002322C108130501091306010723241105CC -:107610002322C10523200109232EF1062324D108AA -:107620002326910923280106232A0106232C01067B -:10763000EF50507F032601098326410913050109F4 -:107640002320C104232ED102EF80C04D93050500F5 -:10765000130A050013050109832C8109032CC109B4 -:10766000EF80806283270109032601048326C1037A -:107670002320F106832741092328C106930501072A -:107680002322F10683278109130601061305010849 -:107690002324F1068327C109232C9107232E810778 -:1076A0002326F106232AD106EF60D07BB3854A0159 -:1076B00083C50500032E4104032CC108938D1D00D2 -:1076C00083220108832F4108032F8108232EC10341 -:1076D000A38FBDFE9307F0FF930C0C008328810459 -:1076E000630CFE06130EFEFF930501081305010946 -:1076F000232EE105232CF105232A5104232811050B -:107700002326C1052328510823245104232AF109E3 -:107710002322F105232CE1092320E105232E8109F1 -:10772000232001082322010823240108232601081D -:10773000EF50903683260104032641040328810478 -:10774000032EC1048328010583224105832F81056F -:10775000032FC105E31205EAB70CFE3F93050108AC -:10776000130501092320110523285108232651045C -:10777000232AF1092324F105232CE1092322E10521 -:10778000232E810923200108232201082324010834 -:1077900023269109EF50103D832801046346A0047D -:1077A0008322C104832F8104032F41049305010820 -:1077B0001305010923285108232AF109232CE10983 -:1077C000232E8109232001082322010823240108F4 -:1077D00023269109EF50502C83280104631C0518BF -:1077E000137A1A0063080A1803C6FA00232EB10B95 -:1077F000930500038326C10B9387F6FF232EF10A1E -:1078000083C7F6FF6384C714130690036394C714F9 -:1078100083C7AA00A38FF6FE138A0D001307700416 -:10782000330A9A40832CC10A6392EB2A1307D0FFD4 -:1078300063C4EC00635E9B31130DEDFF1387FCFF07 -:107840002326E10A1376FDFD130510049376FD0F40 -:10785000930500006318A6009386F60093F6F60FD2 -:1078600093051000230AD10A9307B002635807005A -:1078700013071000330797419307D002A30AF10AB8 -:107880009307900063D8E7289307310C938507008E -:10789000130590001308A000B36607031386F7FFD3 -:1078A0003347070393860603A38FD7FE6346E52479 -:1078B000130707039387E7FFA30FE6FE9306610B09 -:1078C00063E0B7249307410BB387F6402328F10206 -:1078D000338B47019307100063C647019377140069 -:1078E0006386070083274101330BFB001374F4BF49 -:1078F000936704102320F102130C0000930B000087 -:10790000930C000083278103638607001307D002CE -:10791000A303E10A03240102930D00006F00404815 -:10792000232201009304C1126FF0DFB92322A100CA -:107930006FF05FB923220100130B60006FF09FB856 -:1079400023226101130B10006FF0DFB7A38FB6FE87 -:107950006FF05FEA9387170093F7F70F6FF09FEBD5 -:10796000130A1A00A30FEAFEB3074C41E3DA07FE3D -:107970006FF0DFEA8327C103138A0D0013070003AA -:10798000338CFD006FF05FFE93076004638EFB0095 -:1079900093075004130C1B006384FB00130C0B00B3 -:1079A000130620006F00C000130C0B0013063000FC -:1079B0009307010B1308C10B1307C10A93060C00B0 -:1079C0009305010913050900232011052328C10986 -:1079D000232EC103232AB109232C9109232E5109F7 -:1079E000EFC01F919307700493040500032EC10399 -:1079F000832801046396FB00937714006388070AC9 -:107A000093076004338A84016392FB0603C7040072 -:107A1000930700036318F704930501081305010990 -:107A2000232011052328C109232EC103232AB109CC -:107A3000232C9109232E5109232001082322010818 -:107A40002324010823260108EF501005032EC1034B -:107A5000832801046308050093071000338C8741D5 -:107A60002326810B8327C10A330AFA0093050108F4 -:107A700013050109232E11032328C109232AB10963 -:107A8000232C9109232E51092320010823220108C8 -:107A90002324010823260108EF5010008328C10386 -:107AA00013070003631E0500232E410B032AC10B9D -:107AB0006FF0DFD693861700232ED10A2380E700CC -:107AC0008327C10BE3E847FF6FF05FFE13076004F5 -:107AD000E396EBD66352900763160B0013771400FE -:107AE0006302070C832741013387FC00330BEB0053 -:107AF000130D60066F004009930706006FF09FD9D1 -:107B00009387170003C7F7FF93861600A38FE6FE3F -:107B10006FF01FDB9307610B639805009307000369 -:107B2000230BF10A9307710B1307070393861700C2 -:107B30002380E7006FF01FD963160B001377140042 -:107B40006306070683274101138717006FF01FFAAA -:107B500063C04C0313771400138B0C0063060700FB -:107B600083274101338BFC00130D70066F00C001A9 -:107B700083274101130D7006330BFA006346900111 -:107B800033039B41130B1300937B0440130C000041 -:107B9000E38A0BD6930B0000E35690D79306F00FC1 -:107BA0006F008003138B0C006FF09FF4130D6006C1 -:107BB000130B10006FF05FFD63569703832781005E -:107BC000B38CEC4003C717006308070293871700C4 -:107BD000938B1B002324F1008327810003C7070038 -:107BE000E31CD7FC8327410233878B013307F7025D -:107BF000330B67016FF01FD1130C1C006FF0DFFD1A -:107C000013874A002326E1001377040283A70A00A2 -:107C1000630007020327810123A0E7001357F74100 -:107C200023A2E700832AC100832401016FF0CFAEB5 -:107C300013770401630807000327810123A0E700ED -:107C40006FF05FFE13770404630807000357810198 -:107C50002390E7006FF01FFD13740420E30E04FC73 -:107C6000034781012380E7006FF0DFFB1364040109 -:107C70009377040263880704938A7A0093FA8AFF51 -:107C800003AC0A0083AC4A0093878A002326F100E4 -:107C90001374F4BF93070000A303010A1307F0FF56 -:107CA000630CEB4213070400B3669C011374F4F7F2 -:107CB0006394064263020B5A130710006392E74273 -:107CC0006FF04FDA93874A002326F100937704017F -:107CD0006386070003AC0A006F0000019377040479 -:107CE0006388070003DC0A00930C00006FF05FFA62 -:107CF00093770420E38007FE03CC0A006FF0DFFED9 -:107D000093874A002326F100B787FFFF93C70783B5 -:107D10002314F10A979700009387C7B8232AF1022A -:107D200003AC0A00930C00001364240093072000A6 -:107D3000130D80076FF05FF693874A002326F1004A -:107D4000A303010A9307F0FF2320110383A40A0071 -:107D50006306FB0213060B00930500001385040065 -:107D6000EFD01FC22322A10083280102630805E08F -:107D7000330B9540232201006FF04FE01385040080 -:107D8000EFF00F8583280102130B05002322010069 -:107D9000930D0000130C0000930B0000930C0000E7 -:107DA0002320B10363D46D01232061030347710ACB -:107DB0006308070083270102938717002320F1023D -:107DC00093772400232CF1026388070083270102A4 -:107DD000938727002320F102937A440863980A06C8 -:107DE0008327C10103270102338EE7406350C00798 -:107DF000130F0001979E0000938E8EFF930F70006B -:107E00008326810C23A0D8010327C10C938616007A -:107E100013868800634ACF473307EE0023A2C801C8 -:107E20002326E10C2324D10C1307700093080600CD -:107E3000635ED7001306410C938509001305090002 -:107E4000EF201076E314056C9308C10E0347710A06 -:107E5000630807041307710A23A0E8001307100042 -:107E600023A2E8000327C10C9306700093888800C2 -:107E7000130717002326E10C0327810C13071700B3 -:107E80002324E10C63DEE6001306410C9385090010 -:107E900013050900EF20D070E31A05669308C10EA0 -:107EA00083278103638807041307810A23A0E8005E -:107EB0001307200023A2E8000327C10C93067000DB -:107EC00093888800130727002326E10C0327810CE1 -:107ED000130717002324E10C63DEE6001306410CB0 -:107EE0009385090013050900EF20906BE3100562EC -:107EF0009308C10E130700086398EA068327C1019F -:107F000003270102B38AE74063505007130E0001B4 -:107F1000979700009387C7EE930E70008326810C1D -:107F200023A0F8000327C10C93861600138688004F -:107F300063485E3B3387EA0023A258012326E10C05 -:107F40002324D10C1307700093080600635ED7004A -:107F50001306410C9385090013050900EF205064B6 -:107F6000E316055A9308C10EB38A6D41635050075A -:107F700013080001979D0000938D8DE8130E70008B -:107F80000327810C23A0B8018326C10C1307170017 -:107F900013868800634E583923A25801B38ADA0049 -:107FA0002326510D2324E10C93067000930806004C -:107FB00063DEE6001306410C9385090013050900F2 -:107FC000EF20105EE31405549308C10E13770410DC -:107FD000832DC10C6312073A3303BB0123A0980021 -:107FE00023A268012326610C8327810C13077000EC -:107FF00093888800938717002324F10C6352F74C71 -:108000001306410C9385090013050900EF20505910 -:10801000E31E054E9308C10E6F00804A13640401ED -:108020009377040263820702938A7A0093FA8AFFA5 -:1080300003AC0A0083AC4A0093878A002326F10030 -:10804000930710006FF05FC593874A002326F10065 -:10805000937704016386070003AC0A006F000001F8 -:10806000937704046388070003DC0A00930C000084 -:108070006FF01FFD93770420E38007FE03CC0A0016 -:108080006FF0DFFE979700009387C7816FE01FF7BF -:1080900093874A002326F100937704016386070043 -:1080A00003AC0A006F0000019377040463880700A3 -:1080B00003DC0A00930C00006FE0DFF693770420E6 -:1080C000E38007FE03CC0A006FF0DFFE1307040015 -:1080D000930710006FF05FBD13071000638EE796E3 -:1080E00013072000638EE712930701199396DC01B2 -:1080F00013777C00135C3C001307070333EC860105 -:1081000093DC3C00A38FE7FEB3669C019384F7FFEA -:10811000639E060293761400638A060093060003AA -:108120006306D700A38FD4FE9384E7FF930701195A -:10813000930D0B0023220100338B9740130C00009A -:10814000930B0000930C00006FF09FC59387040011 -:108150006FF0DFF9130A0000930D0119937A0440C0 -:10816000930B90001306A0009306000013050C006B -:1081700093850C0023221101EF40400513050503F0 -:10818000A38FADFE9384FDFF130A1A0083284100DC -:10819000638E0A048327810083C707006318FA04EB -:1081A0009307F00F6304FA0463940C0063F08B05EB -:1081B000832741028325C10223221101B384F440A5 -:1081C0001386070013850400EFE05FC28327810058 -:1081D000130A00008328410083C717006388070043 -:1081E00083278100938717002324F10013050C00D7 -:1081F00093850C001306A0009306000023221101B2 -:10820000EF309039938C0500B3E5A500130C050001 -:1082100083284100E38C05F0938D04006FF09FF4F8 -:1082200093040119032741039377FC009384F4FF1F -:10823000B307F70083C70700135C4C002380F400EA -:108240009397CC0133EC870193DC4C00B3679C011E -:10825000E39A07FC6FF09FED93040119E39807EC94 -:1082600013771700E30407EC93070003A307F11843 -:108270006FE0DFFFE30E0D2E2306A113A303010A17 -:10828000232651016FE0DFF61307070123A2E8015F -:108290002326E10C2324D10C63DEDF021306410CFC -:1082A00093850900130509002324F1052322D10534 -:1082B0002320E105232EC103EF20902EE31805248F -:1082C000832F8104832E4104032F0104032EC10355 -:1082D0001306C10E130E0EFF930806006FF05FB277 -:1082E0001307070123A2C8012326E10C2324D10C84 -:1082F00063DADE021306410C9385090013050900B9 -:108300002320D105232EF102232CC103EF20502975 -:10831000E31E051E832E01048327C103032E810360 -:108320001306C10E938A0AFF930806006FF01FBF61 -:108330009386060123A208012326D10C2324E10CF5 -:108340006356EE021306410C9385090013050900DC -:10835000232EC103232C0103EF209024E318051AD8 -:10836000032EC103032881031306C10E938A0AFF5B -:10837000930806006FF0DFC0130750066354A7731D -:108380000327010D93050108130501092328E108BE -:108390000327410D232C110323200108232AE10880 -:1083A0000327810D2322010823240108232CE1083F -:1083B0000327C10D23260108232EE108EF40D06DCD -:1083C000832881036314051897870000938707505B -:1083D00023A0F8009307100023A2F8008327810C44 -:1083E000938D1D002326B10D938717002324F10CD4 -:1083F0001307700093888800635EF7001306410C32 -:108400009385090013050900EF209019E31005106A -:108410009308C10E8327C10A63C6470193771400EE -:108420006380070A8327810203274101938888001C -:1084300023ACF8FE8327410123AEF8FE8327C10C4D -:10844000B387E7002326F10C8327810C1307700004 -:10845000938717002324F10C635EF7001306410C89 -:108460009385090013050900EF209013E310050A16 -:108470009308C10E9304FAFF63549004930B000118 -:10848000979A0000938ACA97130C70008327810C77 -:1084900023A058010327C10C9387170093868800F7 -:1084A00063CA9B0623A29800B384E4002326910CA0 -:1084B0002324F10C1307700093880600E342F7B4FD -:1084C000137444006314047E032DC1018327010249 -:1084D0006354FD00138D070083278101B387A70133 -:1084E000232CF1008327C10C638C07001306410C79 -:1084F0009385090013050900EF20900AE318050091 -:10850000832741002324010CE39C07049308C10E38 -:108510006FF04FF11307070123A278012326E10C26 -:108520002324F10C635EFC001306410C93850900C3 -:1085300013050900EF20D006631A057C9306C10ECF -:10854000938404FF938806006FF05FF40327C10A49 -:108550006346E016978700009387473723A0F8000B -:108560009307100023A2F8008327810C938D1D0030 -:108570002326B10D938717002324F10C13077000F5 -:1085800093888800635EF7001306410C9385090009 -:1085900013050900EF20D000631A05769308C10E79 -:1085A0008327C10A6398070063160A0093771400B3 -:1085B000E38807F08327810203274101938888001D -:1085C00023ACF8FE8327410123AEF8FE8327C10CBC -:1085D000B387E7002326F10C8327810C1307700073 -:1085E000938717002324F10C635EF7001306410CF8 -:1085F0009385090013050900EF20807A6318057040 -:108600009308C10E832AC10A63D20A06B30A5041F5 -:1086100013870800130C0001978B0000938B4B7E8F -:10862000130D70008327810C232077018326C10C52 -:10863000938717009388880063465C0523225701BF -:10864000B38ADA002326510D2324F10C130770009E -:10865000635EF7001306410C9385090013050900BA -:10866000EF2000746314056A9308C10E8327C10CC0 -:1086700023A0980023A24801B38747012326F10CC9 -:108680006FF09F9693860601232287012326D10C43 -:108690002324F10C635EFD001306410C9385090051 -:1086A00013050900EF20C06F631205669308C10E21 -:1086B000938A0AFF138708006FF0DFF6938A0C0095 -:1086C00063549A01930A0A00635250050327810CF0 -:1086D000B38DBA0123A098001307170023A25801F5 -:1086E0002326B10D2324E10C9306700093888800A3 -:1086F00063DEE6001306410C9385090013050900AB -:10870000EF20006A631405609308C10E63D40A0069 -:10871000930A0000B38A5C4163505007930D000137 -:10872000178D0000130DCD6D130B70000327810C06 -:1087300023A0A8018326C10C130717001386880005 -:1087400063C25D1B23A25801B38ADA002326510DB0 -:108750002324E10C930670009308060063DEE60014 -:108760001306410C9385090013050900EF204063AF -:10877000631E05589308C10E93770440B38A940191 -:1087800063840702130D7000338B4401978D000042 -:10879000938D0D6763940B1863140C18B387440111 -:1087A00063F45701938A07008327C10A63C6470110 -:1087B00093771400638A070483278102032741010A -:1087C0009388880023ACF8FE8327410123AEF8FE8E -:1087D0008327C10CB387E7002326F10C8327810C84 -:1087E00013077000938717002324F10C635EF700D2 -:1087F0001306410C9385090013050900EF20405A28 -:10880000631605509308C10EB3844401B3875441E5 -:108810008324C10AB3049A4063D497009384070069 -:10882000635490048327C10C23A0580123A298000D -:10883000B387F4002326F10C8327810C1307700003 -:1088400093888800938717002324F10C635EF70058 -:108850001306410C9385090013050900EF204054CD -:108860006316054A9308C10E9387040063D404007D -:10887000930700008324C10AB3049A40B384F440F0 -:10888000E35090C4930B0001978A0000938A4A57E3 -:10889000130C70008327810C23A058010327C10CFF -:1088A0009387170093868800E3DE9BBE13070701BA -:1088B00023A278012326E10C2324F10C635EFC0043 -:1088C0001306410C9385090013050900EF20404D64 -:1088D000631E05429306C10E938404FF938806002D -:1088E0006FF05FFB9386060123A2B8012326D10C0B -:1088F0002324E10C635EEB001306410C9385090011 -:1089000013050900EF20C049631205401306C10E8C -:10891000938A0AFF930806006FF05FE163020C0E72 -:10892000130CFCFF8327C1020327410293888800B0 -:1089300023ACF8FE8327410223AEF8FE8327C10C47 -:10894000B387E7002326F10C8327810C9387170058 -:108950002324F10C635EFD001306410C938509008E -:1089600013050900EF20C0436312053A9308C10EB6 -:108970008327810033075B4183C707006354F700F7 -:10898000930707006356F0040327C10C23A0580186 -:1089900023A2F8003387E7002326E10C0327810C8C -:1089A00093888800130717002324E10C6352ED021B -:1089B0001306410C9385090013050900232CF102CD -:1089C000EF20003E63140534832781039308C10E12 -:1089D0001387070063D40700130700008327810073 -:1089E0001308000183C70700B387E7406346F0061A -:1089F0008327810083C70700B38AFA006FF09FD9ED -:108A000083278100938BFBFF9387F7FF2324F100DB -:108A10006FF05FF19386060123A208012326D10C93 -:108A20002324E10C6356ED021306410C93850900E3 -:108A300013050900232E0103232CF102EF204036F9 -:108A40006316052C0328C103832781031306C10E77 -:108A5000938707FF930806000327810C23A0B80122 -:108A60008326C10C1307170013868800E344F8FA25 -:108A700023A2F800B387D7002326F10C2324E10CAE -:108A800093080600E356EDF61306410C93850900A2 -:108A900013050900EF20C030631A05269308C10EA4 -:108AA0006FF01FF58327810C1307100023A0980097 -:108AB000938D1D0093871700938B880063464701B1 -:108AC000937614006388061C1307100023A2E800A5 -:108AD0002326B10D2324F10C13077000635EF70009 -:108AE0001306410C9385090013050900EF20402B64 -:108AF000631E0520930BC10E8327810203274101CA -:108B0000938B8B0023ACFBFE8327410123AEFBFE3E -:108B10008327C10CB387E7002326F10C8327810C40 -:108B200013077000938717002324F10C635EF7008E -:108B30001306410C9385090013050900EF20402618 -:108B40006316051C930BC10E8327010D93050108C5 -:108B5000130501092328F1088327410D930AFAFF21 -:108B600023200108232AF1088327810D23220108ED -:108B700023240108232CF1088327C10D2326010893 -:108B8000232EF108EF404071630605088327C10CCE -:108B90000327810C938414009387F7FFB387470161 -:108BA0001307170023A09B0023A25B012326F10CCF -:108BB0002324E10C93077000938B8B0063DEE700A6 -:108BC0001306410C9385090013050900EF20401D91 -:108BD000631E0512930BC10E9307410B23A0FB00EC -:108BE000832701030327010393888B0023A2FB0043 -:108BF0008327C10CB387E7002326F10C8327810C60 -:108C000013077000938717002324F10CE35AF78AA7 -:108C10006FF00FBFE35250FD130C0001978400006A -:108C20009384041E130D70000327810C23A09B0066 -:108C30008327C10C1307170093868B0063405C03E6 -:108C4000B387FA0023A25B012326F10C2324E10C55 -:108C500093077000938B06006FF05FF69387070110 -:108C600023A28B012326F10C2324E10C635EED008B -:108C70001306410C9385090013050900EF204012EB -:108C8000631605089306C10E938A0AFF938B0600AC -:108C90006FF09FF923A2E8002326B10D2324F10CE5 -:108CA00013077000E35AF7F26FF09FF18327C101B9 -:108CB000032701023384E740E3588080930A0001D0 -:108CC000978400009384C412930B70008327810C57 -:108CD00023A098000327C10C9387170063C68A045A -:108CE00023A288003304E4002326810C2324F10C02 -:108CF00013077000635AF7FC1306410C93850900B3 -:108D000013050900EF20C009630005FC832741001B -:108D1000639407006FE0CFF4938507001305090003 -:108D2000EF90DFE86FE0CFF31307070123A25801AC -:108D30002326E10C2324F10C9388880063DEFB00DA -:108D40001306410C9385090013050900EF20400527 -:108D5000E31E05FA9308C10E130404FF6FF01FF71A -:108D60008325410013050900EF905FE46FF00FFACF -:108D70008327C10C639407006FE08FEE1306410C4C -:108D80009385090013050900EF2080016FE04FED86 -:108D900083278600130101FD23248102232611026B -:108DA0002322910223202103232E3101232C410170 -:108DB000232A5101232861012326710123248101E3 -:108DC00013040600639E0702232206001305000019 -:108DD0008320C1020324810283244102032901026A -:108DE0008329C101032A8101832A4101032B010147 -:108DF000832BC100032C8100130101036780000055 -:108E000083A745061389050013972701635A0706B0 -:108E100083240600130A0500930BF0FF83278400C8 -:108E2000639A070013050000232404002322040092 -:108E30006FF01FFA83A9440003AB0400930A0000FB -:108E400013DC290063CE8A018327840093F9C9FFCC -:108E500093848400B3893741232434016FF01FFCCD -:108E600083250B001306090013050A00EF1080127A -:108E7000130B4B00630A7501938A1A006FF09FFC75 -:108E8000EF10C01E6FF05FFA1305F0FF6FF0DFF90F -:108E9000130101ED2324811223202113232E3111EC -:108EA000232C41112326111223229112232A51111E -:108EB000232861112326711123248111232291116A -:108EC0002320A111232EB10F93090500138405005F -:108ED000130A06001389060063080500832785032B -:108EE00063940700EF90DF9E8317C4001397270158 -:108EF00063420702B726000003274406B3E7D70002 -:108F00002316F400B7E7FFFF9387F7FFB377F70067 -:108F10002322F4068357C40093F78700638E070665 -:108F200083270401638A07068357C4001307A00040 -:108F300093F7A701639EE7068317E40063CA070659 -:108F40009306090013060A0093050400138509001F -:108F5000EF00503F930B05008320C11203248112C0 -:108F600013850B0083244112032901128329C111A7 -:108F7000032A8111832A4111032B0111832BC11074 -:108F8000032C8110832C4110032D0110832DC10F60 -:108F90001301011367800000930504001385090085 -:108FA000EF904FC4E30205F8930BF0FF6FF0DFFA88 -:108FB000130BC1042320610523240104232201048F -:108FC00013070B002328010023260100232A010098 -:108FD000232C0100930B000093040A009306500217 -:108FE00083C70400638407006394D70AB38A4441AB -:108FF00063860A0483278104232047012322570123 -:10900000B38757012324F10483274104930670009A -:1090100013078700938717002322F10463DEF6000D -:10902000130601049305040013850900EFF05FD6D1 -:10903000E31A052813070B00B38B5B0183C70400F9 -:10904000E386072C138A1400A30D01029304F0FF9A -:10905000930A0000130D0000130C90001305A005E7 -:109060001308A00203460A00130A1A00930606FE1C -:10907000E36AD50E97870000938787D993962600D9 -:10908000B386F60083A60600B386F6006780060066 -:10909000938414006FF0DFF4978700009387C781F3 -:1090A0002328F10093760D026388066C130979007A -:1090B000137989FF83280900832C4900130C890048 -:1090C00093761D00638E0600B3E69801638A06005E -:1090D00093060003230ED102A30EC102136D2D00CF -:1090E000137DFDBF6F004032138509002324E1008A -:1090F000EFB0DFEA8327450013850700232CF1003A -:10910000EFD01FCD232AA10013850900EFB01FE97E -:1091100083278500032781002326F100832741014F -:10912000E38E07F28327C100E38A07F283C60700B4 -:10913000E38606F2136D0D406FF05FF28346B103D4 -:10914000E39E06F093060002A30DD1026FF01FF11B -:10915000136D1D006FF09FF0832A09001309490069 -:10916000E3DE0AEEB30A5041136D4D006FF01FEFBE -:109170009306B0026FF05FFD03460A0093061A00E3 -:1091800063120605832409001306490063D4040012 -:109190009304F0FF13090600138A06006FF01FEC1A -:1091A0009307A000B384F4029386160003C6F6FF6B -:1091B000B384B400930506FDE374BCFE138A060075 -:1091C0006FF0DFEA930400006FF0DFFE136D0D080F -:1091D0006FF0DFE893060A00930A00009307A000EF -:1091E000B38AFA02130606FD93861600B30A5601E7 -:1091F00003C6F6FF930506FDE372BCFE6FF01FFC8D -:1092000003460A00930680066318D600130A1A0064 -:10921000136D0D206FF09FE4136D0D046FF01FE4CC -:1092200003460A009306C0066318D600130A1A0004 -:10923000136D0D026FF09FE2136D0D016FF01FE2D1 -:1092400083260900130C4900A30D01022306D1084F -:1092500093041000930C00001309C1086F00C01E96 -:10926000136D0D0193760D02638C060413097900CA -:10927000137989FF83280900832C4900130C890086 -:1092800063DE0C00B3081041B33610013303904184 -:10929000B30CD3409306D002A30DD1029306F0FF86 -:1092A0006398D45063920C589306900063EE16575F -:1092B00093880803A307110F1309F10E6F0040559F -:1092C00093760D01130C490063880600832809007A -:1092D00093DCF8416FF0DFFA93760D0483280900E0 -:1092E000638806009398080193D808416FF05FFEE9 -:1092F00093760D20E38E06FC9398880193D88841DD -:109300006FF01FFD13760D02832609001309490033 -:10931000630A060093D7FB4123A0760123A2F6003F -:109320006FF09FCB13760D016306060023A0760134 -:109330006FF09FCA13760D04630606002390760132 -:109340006FF09FC993770D20E38207FE238076019B -:109350006FF09FC8136D0D0193760D0263860604AE -:1093600013097900137989FF83280900832C4900A8 -:10937000130C8900137DFDBF93060000A30D0102AD -:109380001306F0FF638CC44213060D00B3E5980189 -:10939000137DFDF7639405426388045A1306100099 -:1093A0006392C6426FF0DFF093760D01130C490013 -:1093B00063860600832809006F00000193760D0480 -:1093C0006388060083580900930C00006FF09FFA31 -:1093D00093760D20E38006FE834809006FF0DFFEE0 -:1093E000B786FFFF8328090093C60683977700009E -:1093F0009387474B130C4900930C0000136D2D000D -:10940000231ED1022328F100930620006FF01FF7DE -:10941000A30D01029306F0FF2324E100130C490081 -:10942000032909006388D42C1386040093050000E7 -:1094300013050900EFC0CFD4930C0000032781006F -:1094400063040500B30425412324910163D49C00E7 -:10945000232491008346B10363880600832781009B -:10946000938717002324F100937D2D0063880D005E -:1094700083278100938727002324F10093774D08E9 -:10948000232EF1006396070683278100B386FA40F6 -:109490006350D0069308000117880000130808AE37 -:1094A0001303700003264104232007018325810450 -:1094B000130616001305870063C0D84C2322D7007B -:1094C000B386B6002324D1042322C104930670007E -:1094D0001307050063DEC6001306010493050400AC -:1094E00013850900EFF0DF8A631E055C13070B008C -:1094F0008346B103638806041306B1032320C70023 -:1095000013061000832641042322C700032681048A -:10951000938616002322D104130616002324C104C7 -:109520001306700013078700635ED600130601045C -:109530009305040013850900EFF09F856314055817 -:1095400013070B0063880D041306C1032320C70013 -:1095500013062000832641042322C700032681042A -:10956000938616002322D104130626002324C10467 -:109570001306700013078700635ED600130601040C -:109580009305040013850900EFF09F80631C0552CA -:1095900013070B008327C101930600086396D706C3 -:1095A00083278100B38DFA406350B0079308000110 -:1095B000178800001308889D130370008326410458 -:1095C0002320070103268104938616009305870054 -:1095D00063C0B8412322B701B38DCD002324B10568 -:1095E0002322D1041306700013870500635ED600A2 -:1095F000130601049305040013850900EFF04FF9E9 -:109600006312054C13070B00B38C9C40635090070A -:1096100013080001978D0000938D4D9793087000FB -:10962000832641042320B701032681049386160074 -:10963000930587006346983F23229701B38CCC00A3 -:10964000232491052322D1041306700013870500FB -:10965000635ED60013060104930504001385090018 -:10966000EFF00FF36310054613070B008326810408 -:109670002322970023202701B384960083264104E8 -:109680002324910413067000938616002322D1042C -:1096900013078700635ED6001306010493050400D8 -:1096A00013850900EFF0CFEE631E054013070B0092 -:1096B00093774D00639A073A8327810063D4FA00B9 -:1096C000938A070083278104B38B5B01638C0700B7 -:1096D000130601049305040013850900EFF04FEB16 -:1096E0006312053E2322010413090C0013070B002B -:1096F0006FF09F8E13050900EFD08FED93040500E6 -:10970000930C0000032781006FF01FD4136D0D012F -:1097100093760D026380060213097900137989FF9D -:1097200083280900832C4900130C8900930610003C -:109730006FF0DFC493760D01130C490063860600B9 -:10974000832809006F00000193760D0463880600EA -:1097500083580900930C00006FF05FFD93760D2095 -:10976000E38006FE834809006FF0DFFE9777000074 -:10977000938747136FF0DF9293760D01130C490026 -:1097800063860600832809006F00000193760D04AC -:109790006388060083580900930C00006FF05F9205 -:1097A00093760D20E38006FE834809006FF0DFFE0C -:1097B00013060D00930610006FF05FBD1306100036 -:1097C000E382C6AE130620006384C6149306010F1D -:1097D0009395DC0113F6780093D83800130606033E -:1097E000B3E8150193DC3C00A38FC6FEB3E59801F6 -:1097F0001389F6FF6396050293751D00638A0500C1 -:10980000930500036306B600A30FB9FE1389E6FFB4 -:109810009307010F938C0400B38427416FF0DFC2DC -:10982000930609006FF0DFFA93770D40930D000067 -:10983000130E010F2324F100138508001306A00066 -:109840009306000093850C002322E1021309FEFF1A -:109850002320C103232E1101EF205017032E0102F4 -:109860008327810013050503A30FAEFE938D1D0012 -:109870008328C10103274102638207068327C100B1 -:1098800083C60700639CB6059307F00F6388FD0449 -:1098900063960C009307900063F21705832741013C -:1098A00083258101232011033309F9401386070022 -:1098B00013050900232EE100EFD04FD38327C10009 -:1098C000930D00000327C10183C6170083280102FE -:1098D00063860600938717002326F100138508008E -:1098E00093850C001306A00093060000232EE100D0 -:1098F000EF20804A938C0500B3E5A500930805008E -:109900000327C101E38605F0130E09006FF0DFF2B3 -:109910001309010F8327010193F6F8001309F9FFDA -:10992000B386D70083C6060093D848002300D90029 -:109930009396CC01B3E8160193DC4C00B3E6980192 -:10994000E39A06FC6FF0DFEC1309010FE39206ECDB -:1099500013761600E30E06EA93060003A307D10E62 -:109960006FF09F956304061A2306C108A30D010238 -:10997000130C09006FF0DF8D938505012322170179 -:109980002324B1042322C104635EC302130601042D -:109990009305040013850900232661022324010393 -:1099A000232211032320D102EFF08FBE631C051088 -:1099B0000323C10203288102832841028326010276 -:1099C00013050B00938606FF130705006FF09FAD8C -:1099D00013060601232217012324C1042322D104E4 -:1099E000635AD3021306010493050400138509008A -:1099F0002322610223200103232E1101EFF04FB92E -:109A00006312050C03234102032801028328C101CC -:109A100093050B00938D0DFF138705006FF01FBAA0 -:109A200013060601232207012324C1042322D104A3 -:109A300063D6D802130601049305040013850900B8 -:109A400023201103232E0101EFF08FB4631C0506C0 -:109A5000832801020328C10193050B00938C0CFF9E -:109A6000138705006FF0DFBB83278100B384FA40C2 -:109A7000E35490C4930C00011779000013090950B6 -:109A8000930D70008327410423202701832681043E -:109A90009387170063C09C0423229700B384D400EB -:109AA000232491042322F10413077000E356F7C026 -:109AB000130601049305040013850900EFF04FAD70 -:109AC000E30C05BE8357C40093F70704638607C8F9 -:109AD0006FF08FCD93860601232297012324D104B2 -:109AE0002322F1041307870063DEFD00130601043F -:109AF0009305040013850900EFF08FA9E31405FC1A -:109B000013070B00938404FF6FF0DFF783278104B2 -:109B1000E38A07FA1306010493050400138509007C -:109B2000EFF00FA76FF01FFA978700009387873D2C -:109B300093060600138605009305050003A507009C -:109B40006FF00FB583D7C500130101B8232C8146F0 -:109B500093F7D7FF231AF10083A745061384050066 -:109B6000232A91462326F10683D7E500232821479F -:109B7000232E1146231BF10083A7C50113090500FD -:109B8000232001022322F10283A7450293058100CD -:109B90002326F102930701072324F100232CF1006F -:109BA000930700402328F100232EF100EFF04FAE81 -:109BB00093040500634C050093058100130509001B -:109BC000EF809FB6630405009304F0FF83574101C3 -:109BD00093F70704638807008357C40093E70704DB -:109BE0002316F4008320C147032481471385040012 -:109BF000032901478324414713010148678000007E -:109C0000978700009387073083A7070083A7470340 -:109C10006396070097870000938747D703A3070E33 -:109C200067000300638405029307F00F63FAC7001F -:109C30009307A0082320F5001305F0FF67800000BC -:109C40002380C50013051000678000001305000085 -:109C500067800000130101FF232481001304050025 -:109C600013850500930506001386060097870000FC -:109C700023AE072C23261100EF60901B9307F0FF03 -:109C8000631CF500978700009387472C83A7070084 -:109C9000638407002320F4008320C1000324810093 -:109CA0001301010167800000B385C502130101FFA4 -:109CB0002324810023261100EFB00FDA13040500DE -:109CC000630205040326C5FF130740021376C6FF8F -:109CD0001306C6FF6362C7069306300193070500AB -:109CE00063FCC60023200500232205009307B00172 -:109CF00063E4C7029307850023A0070023A207009F -:109D000023A40700130504008320C100032481005D -:109D100013010101678000002324050023260500AC -:109D200093070501E31AE6FC232805009307850144 -:109D3000232A05006FF05FFC93050000EFB09FC67B -:109D40006FF05FFC130101FF232481001304050061 -:109D5000138505009787000023AA071E23261100FC -:109D6000EF6000679307F0FF631CF5009787000022 -:109D70009387C71D83A70700638407002320F4008F -:109D80008320C100032481001301010167800000CA -:109D9000130101FF232611002324810023229100B7 -:109DA0002320210163920502130900008320C100D2 -:109DB00003248100130509008324410003290100C5 -:109DC000130101016780000093040500138405005E -:109DD000630805008327850363940700EF805FAF66 -:109DE0008317C400E38207FC930504001385040075 -:109DF000EF800FF38327C40213090500638C07006B -:109E00008325C40113850400E7800700635405001F -:109E10001309F0FF8357C40093F70708638807000E -:109E20008325040113850400EF805FD88325040394 -:109E3000638C0500930704046386F5001385040012 -:109E4000EF80DFD6232804028325440463880500BD -:109E500013850400EF809FD523220404EF809FBE6A -:109E600023160400EF805FBE6FF05FF49787000059 -:109E7000938747099305050003A507006FF05FF17D -:109E8000130101FD2324810223229102232C41018D -:109E90002326110223202103232E3101232A5101DD -:109EA00023286101130A05009384050013040600AA -:109EB000EFB04F9B93071000631AF5049387F4FFEC -:109EC0001307E00F6364F704230691009309100061 -:109ED00013090000930AF0FF130BA0006312390767 -:109EE000138504008320C1020324810283244102DC -:109EF000032901028329C101032A8101832A410127 -:109F0000032B010113010103678000009306C405C0 -:109F1000138604009305C10013050A00EF10105DBD -:109F20009307F0FF93090500E314F5FA8357C40083 -:109F300093E707042316F4001305F0FF6FF09FFA70 -:109F40009307C100B387270183C5070083278400D7 -:109F50009387F7FF2324F40063D8070003278401C5 -:109F600063C0E702638E650183270400138717002F -:109F70002320E4002380B700130919006FF01FF6B7 -:109F80001306040013050A00EF10D041E31655FF35 -:109F90006FF09FFA8317C6001397270163400702EB -:109FA00003274606B7260000B3E7D7002316F600BE -:109FB000B7270000B367F7002322F6066FF05FECC7 -:109FC000130101FE978700009387C7F3232C8100BC -:109FD00003A40700232A9100232E110093040500F7 -:109FE00013860500630E040083278403639A070029 -:109FF000130504002326B100EF809F8D0326C100C6 -:10A0000013050400032481018320C101938504000A -:10A0100083244101130101026FF0DFF7130101FFF7 -:10A020002324810013040500138505009305060011 -:10A030009787000023AC07F023261100EF60803ED5 -:10A040009307F0FF631CF50097870000938707F0E4 -:10A0500083A70700638407002320F4008320C10046 -:10A06000032481001301010167800000832786001B -:10A0700063980700930700001385070067800000BE -:10A0800083D7C500130101FB23248104232021056C -:10A09000232A51032326110423229104232E310362 -:10A0A000232C4103232861032326710323248103E6 -:10A0B000232291032320A103232EB10193F78700CC -:10A0C000930A060013840500130905006382070E36 -:10A0D00083A70501638E070C8357C40003AA0A00F7 -:10A0E00013F72700631A071693F7170063840720F6 -:10A0F000930B000013050000130B000093090000F0 -:10A100006384093663120502138609009305A000D3 -:10A1100013050B00EFB0DF86938B19006306050073 -:10A1200013051500B30B6541138C0B0063F4790123 -:10A13000138C0900032504008327040183264401AE -:10A1400063FEA73283248400B384960063D88433EB -:10A1500093050B0013860400EF00C04F8327040013 -:10A160009305040013050900B38797002320F4002A -:10A17000EF808FDB63160516B38B9B401305100031 -:10A18000639A0B009305040013050900EF80CFD9F3 -:10A190006318051483A78A00330B9B00B389994089 -:10A1A000B384974023A49A00E39C04F46F008006D4 -:10A1B0009305040013050900EF80CFA29307F0FF79 -:10A1C000E30C05F06F00400583290A0083244A0050 -:10A1D000130A8A00E38A04FE9386040063749B00DA -:10A1E00093060B00832744028325C40113860900CC -:10A1F00013050900E78007006354A00E83A78A00B7 -:10A20000B389A900B384A4403385A74023A4AA003E -:10A21000E31205FC930700008320C104032481049A -:10A2200083244104032901048329C103032A8103F0 -:10A23000832A4103032B0103832BC102032C8102D8 -:10A24000832C4102032D0102832DC10113850700D8 -:10A250001301010567800000370B0080930900009F -:10A2600093040000134B0BC06FF0DFF6032B0A00C2 -:10A2700083244A00130A8A00E38A04FE0357C400B9 -:10A28000832784000325040093760720638806143F -:10A2900063E2F40C93760748638E060A832D44012B -:10A2A00083250401B38DBC03B309B540938719001E -:10A2B000B3879700B3CDAD0363F4FD00938D070022 -:10A2C000137707406304070E93850D0013050900FB -:10A2D000EFA09FF8631005049307C0002320F90046 -:10A2E0008357C40093E707042316F4009307F0FF95 -:10A2F0006FF09FF2B70B008013CCEBFF130B000045 -:10A300009304000093CBFBFF930C3000130D20004F -:10A310006FF09FF683250401138609002326A10010 -:10A32000EF00C0240357C4008327C1001377F7B799 -:10A33000136707082316E4002328F400232AB40136 -:10A34000B3873701B38D3D412320F4002324B401AA -:10A35000938704009389040063F4F4009387040056 -:10A36000032504001386070093050B002326F10044 -:10A37000EF00402E032784008327C1003307F740F6 -:10A380002324E40003270400B307F7002320F4008C -:10A3900083A78A00330B3B01B3843441B38937412F -:10A3A00023A43A01E39A09EC6FF0DFE613860D006F -:10A3B00013050900EF00803493070500E31E05F63E -:10A3C0008325040113050900EF804FFE8357C40065 -:10A3D00093F7F7F72316F4006FF01FF0032704013B -:10A3E0006366A7008326440163F6D40493890700BB -:10A3F00063F4F400938904001386090093050B00AD -:10A40000EF0040258327840003270400B3873741EA -:10A41000330737012324F4002320E400E39A07F6EE -:10A420009305040013050900EF800FB0E30205F661 -:10A430006FF01FEB93870B0063649C00938704000D -:10A44000B3C7D702032744028325C40113060B00B8 -:10A4500013050900B386D702E7000700930905003A -:10A46000E348A0F26FF0DFE7032B0A0083294A00DC -:10A4700013050000130A8A006FF09FC86342DC02D4 -:10A48000832744028325C40113060B00130509002A -:10A49000E780070093040500E340A0CE6FF05FE47F -:10A4A00013060C0093050B00EF00C01A83278400ED -:10A4B00093040C00B38787412324F400832704000E -:10A4C000B38787012320F4006FF01FCB130101FF36 -:10A4D00023248100130405001385050097870000DD -:10A4E00023A607A623261100EF50907A9307F0FFCA -:10A4F000631CF50097870000938747A583A7070093 -:10A50000638407002320F4008320C100032481001A -:10A510001301010167800000130101FF2324810062 -:10A520001304050013850500930506001386060035 -:10A530009787000023AC07A023261100EF50507826 -:10A540009307F0FF631CF50097870000938707A02F -:10A5500083A70700638407002320F4008320C10041 -:10A56000032481001301010167800000B3C7A50027 -:10A5700093F737003307C500639607009307300051 -:10A5800063E4C70293070500636CE5006780000081 -:10A5900083C605009387170093851500A38FD7FE08 -:10A5A000E3E8E7FE678000009377350063920708D1 -:10A5B000930705009376C7FF138606FE63F6C70868 -:10A5C00083A3050083A2450083AF850003AFC500C8 -:10A5D00083AE050103AE450103A3850183A8C50130 -:10A5E000938545029387470203A8C5FF23AE77FCF6 -:10A5F00023A057FE23A2F7FF23A4E7FF23A6D7FF3C -:10A6000023A8C7FF23AA67FE23AC17FF23AE07FFCB -:10A610006FF0DFFA83C60500938717009385150056 -:10A62000A38FD7FE93F63700E39606FE6FF09FF8F0 -:10A63000930705006FF01FFF03A6050093874700EF -:10A640009385450023AEC7FEE3E8D7FEE3EAE7F4CF -:10A65000678000003307C50063E8A5009307050085 -:10A66000639AE70267800000B387C5003306F640AF -:10A67000E376F5FEB386C7006394060067800000AA -:10A680009387F7FF83C607001307F7FF2300D70060 -:10A690006FF05FFE9385150083C6F5FF9387170063 -:10A6A000A38FD7FE6FF0DFFB130101FF232481008E -:10A6B00013040500138505009305060013860600A4 -:10A6C0009787000023A4078823261100EF50106409 -:10A6D0009307F0FF631CF5009787000093870787B7 -:10A6E00083A70700638407002320F4008320C100B0 -:10A6F000032481001301010167800000130101FCA4 -:10A70000232C8102232E110213840500232A910297 -:10A710002328210323263103232441032322510329 -:10A7200023206103232E71019305060063180402A0 -:10A73000032481038320C1038324410303290103EC -:10A740008329C102032A8102832A4102032B0102C9 -:10A75000832BC101130101046FA01FB0930A0500F0 -:10A760002326C100EFB0CFB18325C1008326C4FFEB -:10A77000930760019389B500930B84FF13F9C6FF1B -:10A7800063F4370513FB89FF63520B049307C00082 -:10A7900023A0FA00130A00008320C10303248103CD -:10A7A00013050A0083244103032901038329C102FD -:10A7B000032A8102832A4102032B0102832BC10158 -:10A7C0001301010467800000130B0001E360BBFC70 -:10A7D000635E694517770000130707320326870079 -:10A7E000B3872B0103A74700630CF6001375E7FF3F -:10A7F0003385A7000325450013751500631C050A62 -:10A800001377C7FFB309E9006312F60413050B01C0 -:10A8100063C6A90AB38B6B01B389694197770000BE -:10A8200023A0772F93E9190023A23B018329C4FFBA -:10A8300013850A00130A040093F91900B3E96901AA -:10A84000232E34FFEFB00FA46FF01FF563C8690724 -:10A8500003A7C70083A7870023A6E7002324F700E8 -:10A8600003A74B00B38669411306F0001377170066 -:10A87000B3873B016370D63CB369EB0023A23B0175 -:10A88000B3856B0193E6160023A2D50003A747000A -:10A890009385850013850A001367170023A2E7003C -:10A8A000EF80CFB013850A00EFB0CF9D138A8B00E5 -:10A8B0006FF09FEE130700009307000093F6160059 -:10A8C00063940628832484FFB3849B4003AA440036 -:10A8D000137ACAFF330A2A01638E071AB3094701A4 -:10A8E0006318F60E93070B0163C6F91A03A78400D9 -:10A8F00083A7C4001306C9FF138A84002326F70028 -:10A9000023A4E70013074002636CC70A93063001D3 -:10A9100093070A0063F2C6028327040023A4F4000D -:10A920008327440023A6F4009307B00163ECC70417 -:10A9300013048400938704010327040023A0E70085 -:10A940000327440023A2E7000327840023A4E70091 -:10A95000B3876401B3896941177700002322F71A8E -:10A9600093E9190023A2370183A7440093F7170046 -:10A97000B3E9670123A2340113850A00EFB08F9079 -:10A980006FF09FE18327840023A8F4008327C4008D -:10A9900023AAF4006308E6001304040193878401EA -:10A9A0006FF09FF9832704011304840123ACF400A2 -:10A9B0000327C4FF9387040223AEE4006FF0DFF7A0 -:10A9C0009305040013050A00EFF0DFC86FF05FF88D -:10A9D00063C2690D03A7C70083A787001306C9FFD9 -:10A9E0001385840023A6E7002324F70003A784002F -:10A9F00083A7C4002326F70023A4E700930740029F -:10AA000063E4C708130730016372C7020327040019 -:10AA100023A4E4000327440023A6E4001307B001A5 -:10AA20006366C702130484001385040183270400AE -:10AA30002320F500832744002322F5008327840088 -:10AA40002324F500938B04006FF09FE1032784001B -:10AA500023A8E4000327C40023AAE4006308F60047 -:10AA600013040401138584016FF05FFC8327040144 -:10AA7000138504021304840123ACF4008327C4FF6C -:10AA800023AEF4006FF09FFA93050400EFF09FBC33 -:10AA90006FF05FFB634A6A0B83A7C40003A78400BF -:10AAA0001306C9FF138584002326F70023A4E700BB -:10AAB0009307400263E4C708130730016372C702BB -:10AAC0000327040023A4E4000327440023A6E40092 -:10AAD0001307B0016366C7021304840013850401E1 -:10AAE000832704002320F500832744002322F50058 -:10AAF000832784002324F50093090A006FF09FF454 -:10AB00000327840023A8E4000327C40023AAE40049 -:10AB10006308F60013040401138584016FF05FFCE1 -:10AB200083270401138504021304840123ACF40079 -:10AB30008327C4FF23AEF4006FF09FFA930504004F -:10AB4000EFF05FB16FF05FFB13850A00EFA0CFF06D -:10AB5000130A0500E30205E28327C4FF130785FFFC -:10AB600093F7E7FFB387FB00639AE7008329C5FFEC -:10AB700093F9C9FFB38929016FF09FCE1306C9FF6E -:10AB80009307400263EEC708130730016374C708D8 -:10AB9000032704002320E500032744002322E500C7 -:10ABA0001307B001636AC702130784009307850087 -:10ABB0008326070023A0D7008326470023A2D700BF -:10ABC0000327870023A4E7009305040013850A00E8 -:10ABD000EF70DFFD6FF05FDA032784002324E500C8 -:10ABE0000327C4002326E5006308F60013070401C9 -:10ABF000930705016FF0DFFB83270401130784012E -:10AC00002328F5008326440193078501232AD500D4 -:10AC10006FF01FFA93070500130704006FF05FF948 -:10AC200093050400EFF01FA36FF01FFA93090900CA -:10AC30006FF01FC3B3E9E90023A23B0103A747005C -:10AC40001367170023A2E7006FF0DFC5130101FFB0 -:10AC5000232481001384050083A50500232291008D -:10AC6000232611009304050063840500EFF01FFE06 -:10AC700093050400032481008320C1001385040090 -:10AC800083244100130101016F705FF29777000088 -:10AC90009387472783A707006382A7108327C504EC -:10ACA000130101FE232C8100232A91002328210176 -:10ACB000232E110023263101130405009304000004 -:10ACC00013090008639407048325040463860500C0 -:10ACD00013050400EF709FED83258414638C050435 -:10ACE0009304C4146388950403A9050013050400A4 -:10ACF000EF70DFEB930509006FF0DFFEB385950081 -:10AD000083A50500639E0500938444008325C40445 -:10AD1000E39624FF13050400EF705FE96FF0DFFA9C -:10AD200083A9050013050400EF705FE8938509000F -:10AD30006FF05FFD8325440563860500130504005D -:10AD4000EF70DFE683278403638C07028327C40345 -:10AD500013050400E78007008325042E63820502A3 -:10AD600013050400032481018320C10183244101D0 -:10AD7000032901018329C100130101026FF01FEDB6 -:10AD80008320C1010324810183244101032901019E -:10AD90008329C10013010102678000006780000061 -:10ADA00083278600130101FD232E31012326110282 -:10ADB000232481022322910223202103232C4101F9 -:10ADC000232A5101232861012326710123248101B3 -:10ADD000232291012320A101930906006384071215 -:10ADE000832A0600130A050013840500130B0000D4 -:10ADF00013090000930B3000130C200063000908B6 -:10AE0000032D84006360A90D8357C40013F707481E -:10AE1000630A070A8324040083250401B38CB44029 -:10AE20008324440113871C0033072701B3849B024A -:10AE3000B3C4840363F4E4009304070093F707406A -:10AE4000638207109385040013050A00EFA0CFC0AA -:10AE5000130D0500631C05029307C0002320FA00B0 -:10AE60008357C4001305F0FF93E707042316F4008B -:10AE700023A4090023A209006F00400903AB0A00C4 -:10AE800003A94A00938A8A006FF05FF783250401C3 -:10AE900013860C00EFF08FED8357C40093F7F7B7DC -:10AEA00093E707082316F4002328A401232A94001B -:10AEB000330D9D01B38494412320A40123249400E5 -:10AEC000130D09006374A901130D09000325040083 -:10AED00013060D0093050B00EFF0CFF783278400D6 -:10AEE000B387A7412324F40083270400338DA701EF -:10AEF00083A789002320A4013389274123A42901A2 -:10AF0000E31E09F623A20900130500008320C102F5 -:10AF10000324810283244102032901028329C10100 -:10AF2000032A8101832A4101032B0101832BC100E4 -:10AF3000032C8100832C4100032D01001301010328 -:10AF4000678000001386040013050A00EFF00FFB72 -:10AF5000130D0500E31A05F48325040113050A0007 -:10AF6000EF70DFC46FF05FEF83D7C500130101ED11 -:10AF70002322911223202113232E3111232A511130 -:10AF80002326111223248112232C4111232861111D -:10AF90002326711123248111232291112320A11131 -:10AFA000232EB10F93F70708930A050013890500B4 -:10AFB0009309060093840600638C070283A70501AA -:10AFC0006398070293050004EFA00FA92320A900AE -:10AFD0002328A900631A05009307C00023A0FA00E4 -:10AFE000930BF0FF6F00D03293070004232AF9007F -:10AFF000130BC1042320610523240104232201042F -:10B0000013070B002328010023260100232A010037 -:10B01000232C0100930B00001384090093065002B7 -:10B0200083470400638407006394D70A330A3441DA -:10B0300063060A0483278104232037012322470162 -:10B04000B38747012324F10483274104930670004A -:10B0500013078700938717002322F10463DEF600AD -:10B06000130601049305090013850A00EFF05FD36E -:10B07000E31A052813070B00B38B4B018347040029 -:10B08000E384073093091400A30D01021304F0FFB9 -:10B09000130A0000130D0000130C90001305A00507 -:10B0A0001308A00203C6090093891900930606FE3F -:10B0B000E36AD50E97670000938787FE9396260074 -:10B0C000B386F60083A60600B386F6006780060006 -:10B0D000130414006FF0DFF4975700009387C77DC7 -:10B0E0002328F10093760D026388066C9384740024 -:10B0F00093F484FF83A8040083AC4400138C840081 -:10B1000093761D00638E0600B3E69801638A0600FD -:10B1100093060003230ED102A30EC102136D2D006E -:10B12000137DFDBF6F00403213850A002324E10028 -:10B13000EF90DFE68327450013850700232CF100FD -:10B14000EFB01FC9232AA10013850A00EF901FE565 -:10B1500083278500032781002326F10083274101EF -:10B16000E38E07F28327C100E38A07F283C6070054 -:10B17000E38606F2136D0D406FF05FF28346B10374 -:10B18000E39E06F093060002A30DD1026FF01FF1BB -:10B19000136D1D006FF09FF003AA04009384440018 -:10B1A000E35E0AEE330A4041136D4D006FF01FEF6E -:10B1B0009306B0026FF05FFD03C609009386190085 -:10B1C0006312060503A404001386440063540400BC -:10B1D0001304F0FF93040600938906006FF01FEC40 -:10B1E0009307A0003304F4029386160003C6F6FF0B -:10B1F0003304B400930506FDE374BCFE9389060096 -:10B200006FF0DFEA130400006FF0DFFE136D0D082E -:10B210006FF0DFE893860900130A00009307A0008F -:10B22000330AFA02130606FD93861600330A460116 -:10B2300003C6F6FF930506FDE372BCFE6FF01FFC2C -:10B2400003C60900930680066318D6009389190087 -:10B25000136D0D206FF09FE4136D0D046FF01FE46C -:10B2600003C609009306C0066318D6009389190027 -:10B27000136D0D026FF09FE2136D0D016FF01FE271 -:10B2800083A60400138C4400A30D01022306D108F9 -:10B2900013041000930C00009304C1086F00C01E3B -:10B2A000136D0D0193760D02638C06049384740074 -:10B2B00093F484FF83A8040083AC4400138C8400BF -:10B2C00063DE0C00B3081041B33610013303904124 -:10B2D000B30CD3409306D002A30DD1029306F0FF26 -:10B2E0006318D45063920C589306900063EE16577F -:10B2F00093880803A307110F9304F10E6F004055C4 -:10B3000093760D01138C44006388060083A8040023 -:10B3100093DCF8416FF0DFFA93760D0483A8040004 -:10B32000638806009398080193D808416FF05FFE88 -:10B3300093760D20E38E06FC9398880193D888417C -:10B340006FF01FFD13760D0283A604009384440062 -:10B35000630A060093D7FB4123A0760123A2F600DF -:10B360006FF09FCB13760D016306060023A07601D4 -:10B370006FF09FCA13760D046306060023907601D2 -:10B380006FF09FC993770D20E38207FE238076013B -:10B390006FF09FC8136D0D0193760D02638606044E -:10B3A0009384740093F484FF83A8040083AC440066 -:10B3B000138C8400137DFDBF93060000A30D0102D2 -:10B3C0001306F0FF630CC44213060D00B3E59801A9 -:10B3D000137DFDF7639405426308045A13061000B9 -:10B3E0006392C6426FF0DFF093760D01138C440038 -:10B3F0006386060083A804006F00000193760D04A5 -:10B400006388060083D80400930C00006FF09FFA55 -:10B4100093760D20E38006FE83C804006FF0DFFE04 -:10B42000B786FFFF83A8040093C6068397570000E2 -:10B4300093874747138C4400930C0000136D2D0035 -:10B44000231ED1022328F100930620006FF01FF77E -:10B45000A30D01029306F0FF2324E100138C4400A6 -:10B4600083A404006308D42C130604009305000091 -:10B4700013850400EFA0CFD0930C000003278100B8 -:10B4800063040500330495402324910163D48C00A8 -:10B49000232481008346B10363880600832781004B -:10B4A000938717002324F100937D2D0063880D00FE -:10B4B00083278100938727002324F10093774D0889 -:10B4C000232EF1006396070683278100B306FA4016 -:10B4D0006350D0069308000117680000130808D3D2 -:10B4E00013037000032641042320070183258104F0 -:10B4F000130616001305870063C0D84C2322D7001B -:10B50000B386B6002324D1042322C104930670001D -:10B510001307050063DEC600130601049305090046 -:10B5200013850A00EFF0DF87631E055C13070B002D -:10B530008346B103638806041306B1032320C700C2 -:10B5400013061000832641042322C700032681042A -:10B55000938616002322D104130616002324C10467 -:10B560001306700013078700635ED60013060104FC -:10B570009305090013850A00EFF09F8263140558B4 -:10B5800013070B0063880D041306C1032320C700B3 -:10B5900013062000832641042322C70003268104CA -:10B5A000938616002322D104130626002324C10407 -:10B5B0001306700013078700635ED60013060104AC -:10B5C0009305090013850A00EFF08FFD631C0552F7 -:10B5D00013070B008327C101930600086396D70663 -:10B5E00083278100B30DFA406350B0079308000130 -:10B5F00017680000130888C21303700083264104F3 -:10B6000023200701032681049386160093058700F3 -:10B6100063C0B8412322B701B38DCD002324B10507 -:10B620002322D1041306700013870500635ED60041 -:10B63000130601049305090013850A00EFF04FF685 -:10B640006312054C13070B00B38C8C4063509007BA -:10B6500013080001976D0000938D4DBC9308700096 -:10B66000832641042320B701032681049386160014 -:10B67000930587006346983F23229701B38CCC0043 -:10B68000232491052322D10413067000138705009B -:10B69000635ED600130601049305090013850A00B2 -:10B6A000EFF00FF06310054613070B0083268104AB -:10B6B00023228700232097003384860083264104B9 -:10B6C0002324810413067000938616002322D104DC -:10B6D00013078700635ED600130601049305090073 -:10B6E00013850A00EFF0CFEB631E054013070B0034 -:10B6F00093774D00639A073A832781006354FA00D9 -:10B70000138A070083278104B38B4B01638C0700E6 -:10B71000130601049305090013850A00EFF04FE8B2 -:10B720006312053E2322010493040C0013070B004F -:10B730006FF09F8E13850400EFB08FE913040500AE -:10B74000930C0000032781006FF01FD4136D0D01CF -:10B7500093760D02638006029384740093F484FF51 -:10B7600083A8040083AC4400138C8400930610006B -:10B770006FF0DFC493760D01138C440063860600DE -:10B7800083A804006F00000193760D04638806000F -:10B7900083D80400930C00006FF05FFD93760D20BA -:10B7A000E38006FE83C804006FF0DFFE97570000B9 -:10B7B0009387470F6FF0DF9293760D01138C44004F -:10B7C0006386060083A804006F00000193760D04D1 -:10B7D0006388060083D80400930C00006FF05F922A -:10B7E00093760D20E38006FE83C804006FF0DFFE31 -:10B7F00013060D00930610006FF05FBD13061000D6 -:10B80000E382C6AE130620006384C6149306010FBC -:10B810009395DC0113F6780093D8380013060603DD -:10B82000B3E8150193DC3C00A38FC6FEB3E5980195 -:10B830009384F6FF6396050293751D00638A0500E5 -:10B84000930500036306B600A38FB4FE9384E6FF5E -:10B850009307010F930C0400338497406FF0DFC20D -:10B86000938604006FF0DFFA93770D40930D00008C -:10B87000130E010F2324F100138508001306A00006 -:10B880009306000093850C002322E1029304FEFF3F -:10B890002320C103232E1101EF005013032E0102B8 -:10B8A0008327810013050503A30FAEFE938D1D00B2 -:10B8B0008328C10103274102638207068327C10051 -:10B8C00083C60700639CB6059307F00F6388FD04E9 -:10B8D00063960C009307900063F2170583274101DC -:10B8E0008325810123201103B384F44013860700CC -:10B8F00013850400232EE100EFB04FCF8327C10052 -:10B90000930D00000327C10183C61700832801029D -:10B9100063860600938717002326F100138508002D -:10B9200093850C001306A00093060000232EE1006F -:10B93000EF008046938C0500B3E5A5009308050051 -:10B940000327C101E38605F0138E04006FF0DFF2D8 -:10B950009304010F8327010193F6F8009384F4FF09 -:10B96000B386D70083C6060093D848002380D4004E -:10B970009396CC01B3E8160193DC4C00B3E6980132 -:10B98000E39A06FC6FF0DFEC9304010FE39206EC00 -:10B9900013761600E30E06EA93060003A307D10E02 -:10B9A0006FF09F956302061E2306C108A30D0102D6 -:10B9B000138C04006FF0DF8D93850501232217019E -:10B9C0002324B1042322C104635EC30213060104CD -:10B9D0009305090013850A0023266102232401032D -:10B9E000232211032320D102EFF08FBB631C05102B -:10B9F0000323C10203288102832841028326010216 -:10BA000013050B00938606FF130705006FF09FAD2B -:10BA100013060601232217012324C1042322D10483 -:10BA2000635AD302130601049305090013850A0023 -:10BA30002322610223200103232E1101EFF04FB6D0 -:10BA40006312050C03234102032801028328C1016C -:10BA500093050B00938D0DFF138705006FF01FBA40 -:10BA600013060601232207012324C1042322D10443 -:10BA700063D6D802130601049305090013850A0052 -:10BA800023201103232E0101EFF08FB1631C050663 -:10BA9000832801020328C10193050B00938C0CFF3E -:10BAA000138705006FF0DFBB832781003304FA4062 -:10BAB000E35480C4930C00019754000093840475F0 -:10BAC000930D70008327410423209700832681046F -:10BAD0009387170063CE8C06232287003304D4009B -:10BAE000232481042322F10413077000E356F7C0D6 -:10BAF000130601049305090013850A00EFF04FAA0D -:10BB0000E30C05BE8357C90093F70704639A07CC7B -:10BB10008320C1120324811213850B008324411258 -:10BB2000032901128329C111032A8111832A41119A -:10BB3000032B0111832BC110032C8110832C411086 -:10BB4000032D0110832DC10F130101136780000025 -:10BB500093860601232297012324D1042322F10492 -:10BB60001307870063DEFD00130601049305090037 -:10BB700013850A00EFF0CFA2E31605F813070B00B8 -:10BB8000130404FF6FF01FF483278104E38C07F68E -:10BB9000130601049305090013850A00EFF04FA076 -:10BBA0006FF05FF6130101FE232C8100232A910020 -:10BBB00023282101232E110023263101130905001A -:10BBC000938405001304060063080500832785039A -:10BBD00063940700EF60DFCF832784012324F40000 -:10BBE0008357C40093F78700638A070883270401FB -:10BBF000638607088317C40093F9F40F93F4F40FD6 -:10BC0000139727016356070A8327040103250400BD -:10BC10003305F54083274401634AF500930504008A -:10BC200013050900EF605FB06312050683278400E7 -:10BC3000130515009387F7FF2324F40083270400DE -:10BC4000138717002320E400238037018327440152 -:10BC5000638CA7008357C40093F71700638A070219 -:10BC60009307A0006396F4029305040013050900EE -:10BC7000EF609FAB630E05006F0040019305040069 -:10BC800013050900EF600FF6E30605F69304F0FFD5 -:10BC90008320C101032481011385040003290101CC -:10BCA000832441018329C100130101026780000040 -:10BCB00037270000B3E7E7002316F4008327440684 -:10BCC00037E7FFFF1307F7FFB3F7E7002322F40678 -:10BCD0006FF09FF3976700009387C72213860500D4 -:10BCE0009305050003A507006FF0DFEB97670000E1 -:10BCF0009387472183A70700130101FE232C8100AE -:10BD0000232A9100232E11001304050093840600BA -:10BD100083A74703639805046396070097670000AD -:10BD20009387C7C683A7070E9386040013060000F7 -:10BD30009305410013050400E78007009307F0FF17 -:10BD40006318F50023A004009307A0082320F40043 -:10BD50008320C101032481018324410113010102D5 -:10BD6000678000006396070097670000938707C20B -:10BD700083A7070E938604006FF0DFFB9767000030 -:10BD80009387471893060600138605009305050060 -:10BD900003A507006FF09FF59387050013080600C1 -:10BDA00013870600130305006396062897580000C2 -:10BDB0009388085363F6C50E370701006378E60CD5 -:10BDC0001307F00F3337C70013173700B356E600D9 -:10BDD000B388D80083C608003387E60093060002C4 -:10BDE000B386E640638C0600B397D7003357E5006F -:10BDF0003318D600B365F7003313D5001355080187 -:10BE0000B3D7A50213160801135606019356030172 -:10BE100033F7A502B305F60213170701B366D7007F -:10BE20001387070063FEB600B38606011387F7FF8A -:10BE300063E8060163F6B6001387E7FFB3860601E1 -:10BE4000B386B640B3F7A6021313030113530301DD -:10BE5000B3D6A6029397070133E36700B305D60272 -:10BE600013850600637CB300330368001385F6FF77 -:10BE7000636603016374B3001385E6FF13170701BC -:10BE80003367A700930500006F00400EB70600015E -:10BE900013070001E36CD6F2130780016FF01FF364 -:10BEA000631606009306100033D8C602B7060100D9 -:10BEB0006372D80C9306F00F63F406011307800039 -:10BEC000B356E800B388D80083C60800B386E600FE -:10BED000130700023307D7406318070AB3870741E7 -:10BEE00093051000135608019318080193D8080110 -:10BEF0009356030133F7C702B3D7C70213170701DD -:10BF0000B366D7003385F8021387070063FEA600E7 -:10BF1000B38606011387F7FF63E8060163F6A60000 -:10BF20001387E7FFB3860601B386A640B3F7C602C0 -:10BF30001313030113530301B3D6C60293970701EA -:10BF400033E36700B388D80213850600637C1301CE -:10BF5000330368001385F6FF6366030163741301FE -:10BF60001385E6FF131707013367A70013050700C2 -:10BF700067800000B706000113070001E362D8F4F0 -:10BF8000130780016FF0DFF33318E800B3D5D70053 -:10BF90003313E500B356D50013550801B397E700F6 -:10BFA00033F7A502B3E8F6009317080193D707010A -:10BFB00013D60801B3D5A502131707013367C700CD -:10BFC000B386B70213860500637ED70033070701E7 -:10BFD0001386F5FF636807016376D7001386E5FFD4 -:10BFE00033070701B306D74033F7A6029398080139 -:10BFF00093D80801B3D6A60213170701B385D70259 -:10C00000B36717011387060063FEB700B387070104 -:10C010001387F6FF63E8070163F6B7001387E6FFAF -:10C02000B3870701B387B74093150601B3E5E50071 -:10C030006FF05FEB63E6D5183707010063F4E604A1 -:10C040001308F00F3337D8001317370033D8E60042 -:10C05000975500009385C528B385050103C80500E1 -:10C06000930500023308E800B38505416396050295 -:10C0700013071000E3ECF6EE3335C5001347150047 -:10C080006FF0DFEEB705000113070001E3E0B6FC37 -:10C09000130780016FF09FFB33570601B396B6007C -:10C0A000B366D70093DE060133D70701B378D70311 -:10C0B000B397B700335805013363F800939706012F -:10C0C00093D70701135803013316B6003357D7032C -:10C0D0009398080133E80801338FE702130E070035 -:10C0E000637EE8013308D800130EF7FF6368D800B9 -:10C0F0006376E801130EE7FF3308D8003308E84100 -:10C10000B378D8033358D80393980801B38E070344 -:10C110009317030193D70701B3E7F800130708004B -:10C1200063FED701B387D7001307F8FF63E8D70092 -:10C1300063F6D7011307E8FFB387D700131E0E017C -:10C14000B387D741B70E01003367EE001388FEFFB7 -:10C15000337307019358070133780601135606011C -:10C16000330E03033388080393560E013303C302CF -:10C1700033030301B3866600B388C80263F4060183 -:10C18000B388D80113D60601B308160163E6170376 -:10C19000E39A17CFB70701009387F7FFB3F6F600CE -:10C1A00093960601337EFE003315B500B386C601B3 -:10C1B00093050000E37CD5DA1307F7FF6FF09FCCFF -:10C1C00093050000130700006FF05FDA9308060084 -:10C1D000138706009307050013880500639C062259 -:10C1E000975600009386C60F63FCC50C3703010009 -:10C1F000637E660A1303F00F6374C30013078000A5 -:10C200003353E600B386660003CE06001303000234 -:10C21000330EEE003303C341630C0300B395650096 -:10C22000335EC501B31866003368BE00B3176500FE -:10C2300013D608013377C802139508011355050179 -:10C2400093D607013358C80213170701B366D70006 -:10C250003308050363FA0601B386160163E6160187 -:10C2600063F40601B3861601B386064133F7C602AE -:10C270009397070193D70701B3D6C602B306D50239 -:10C2800013150701B367F50063FAD700B3871701E9 -:10C2900063E6170163F4D700B3871701B387D7406C -:10C2A00033D5670093050000678000003703000165 -:10C2B00013070001E36666F4130780016FF05FF473 -:10C2C0006316060013061000B35816033706010064 -:10C2D00063F2C80A1306F00F637416011307800097 -:10C2E00033D6E800B386C60003CE0600130300026F -:10C2F000330EEE003303C34163180308B3851541C1 -:10C3000013D70801139508011355050113D607012A -:10C31000B3F6E502B3D5E50293960601B3E6C6008F -:10C32000B305B50263FAB600B386160163E61601DB -:10C3300063F4B600B3861601B385B640B3F6E502E2 -:10C340009397070193D70701B3D5E502B305B5026B -:10C3500013950601B367F50063FAB700B3871701B9 -:10C3600063E6170163F4B700B3871701B387B740DB -:10C370006FF01FF33706000113070001E3E2C8F670 -:10C38000130780016FF0DFF5B398680033D7C5015C -:10C39000B3176500335EC50113D50801B376A70254 -:10C3A000B3956500336EBE009395080193D50501E2 -:10C3B00013560E013357A70293960601B3E6C60043 -:10C3C0003387E50263FAE600B386160163E61601D9 -:10C3D00063F4E600B38616013386E640B376A60220 -:10C3E000131E0E01135E0E013356A602939606012C -:10C3F0003386C502B3E5C60163FAC500B3851501EE -:10C4000063E6150163F4C500B3851501B385C54026 -:10C410006FF01FEFE3EAD5E83707010063FCE6049D -:10C42000930EF00F33B7DE001317370033D3E60057 -:10C43000975800009388C8EAB388680083CE080044 -:10C44000130E0002B38EEE00330EDE41631E0E02A9 -:10C4500063E4B600636AC500B307C540B385D54041 -:10C460003335F5003388A540138507009305080090 -:10C470006FF09FE3B708000113070001E3E816FB24 -:10C48000130780016FF09FFA3357D601B396C601A8 -:10C49000B366D700B357D50133D7D501B395C501DE -:10C4A000B3E7B70093D506013373B702139F0601B4 -:10C4B000135F0F0193D807013316C6013315C50169 -:10C4C0003357B70213130301B36813013308EF02A4 -:10C4D0001303070063FE0801B388D8001303F7FFB6 -:10C4E00063E8D80063F608011303E7FFB388D800B8 -:10C4F000B3880841B3FFB802B3D8B802939F0F01C5 -:10C50000B3051F03139F0701135F0F0133EFEF0103 -:10C5100013870800637EBF00330FDF001387F8FF27 -:10C520006368DF006376BF001387E8FF330FDF0027 -:10C5300013130301B70801003363E3009387F8FF87 -:10C5400013580601330FBF40B375F30013530301B3 -:10C55000B377F6003387F502B307F302B38505031B -:10C5600033030303B385F500135807013308B800FC -:10C570006374F80033031301B70701009387F7FFD3 -:10C58000935508013378F800131808013377F70042 -:10C59000B38565003307E8006366BF00631EBF0014 -:10C5A000637CE5003306C7403337C700B385D54009 -:10C5B000B385E540130706003307E5403335E50052 -:10C5C000B305BF40B385A540B397D5013357C70125 -:10C5D00033E5E700B3D5C5016FF01FCD130101FDB1 -:10C5E00023248102232291022328610113040500E0 -:10C5F000130B0500B704100013D5450123202103B8 -:10C60000232E3101232671019384F4FF2326110286 -:10C61000232C4101232A51011375F57F930B06004A -:10C6200093890600B3F4B40013D9F5016306050A33 -:10C630009307F07F6306F51093943400B7068000EB -:10C64000B3E4D400935ADB01B3EA9A0013143B001D -:10C65000130A15C0130B000013D54901B7041000CD -:10C660009384F4FF1375F57FB3F43401938F0B00BB -:10C6700093D9F901630205109307F07F6302F51661 -:10C68000B707800093943400B3E4F40093D7DB0140 -:10C69000B3E79700939F3B00130515C013070000F5 -:10C6A00093162B00B3E6E6009386F6FF9305E000B1 -:10C6B000334639013305AA4063E0D516975500008B -:10C6C0009385C5B693962600B386B60083A606006A -:10C6D000B386B60067800600B3EA6401638E0A067B -:10C6E0006380040413850400EF30D049930755FF9D -:10C6F0001307C001634EF702930AD001130485FFAC -:10C70000B38AFA40B3948400B35A5B01B3EA9A0047 -:10C7100033148B00130AD0C0330AAA406FF09FF382 -:10C7200013050B00EF301046130505026FF01FFCD8 -:10C73000930485FDB31A9B00130400006FF09FFD66 -:10C74000B3EA640163820A02938A0400130AF07F49 -:10C75000130B30006FF05FF013040000130A0000A9 -:10C76000130B10006FF05FEF13040000130AF07F4B -:10C77000130B20006FF05FEEB3E77401638E0706C2 -:10C780006380040413850400EF30D03F130755FF86 -:10C790009307C00163CEE7029307D001930F85FF93 -:10C7A000B387E740B394F401B3D7FB00B3E7970036 -:10C7B000B39FFB011306D0C03305A6406FF01FEEF8 -:10C7C00013850B00EF30103C130505026FF01FFCC2 -:10C7D000930785FDB397FB00930F00006FF09FFD5B -:10C7E000B3E7740163820702938704001305F07FA7 -:10C7F000130730006FF0DFEA930F0000130500000D -:10C80000130710006FF0DFE9930F00001305F07FAE -:10C81000130720006FF0DFE863E657016390FA36F4 -:10C82000636EF4359395FA01935614001317F401CF -:10C8300093DA1A0033E4D5009397870013D88F0159 -:10C840003368F800935E0801B3D5DA03131E0801BC -:10C85000135E0E019356040193988F00B3F4DA032C -:10C86000938F0500B307BE0293940401B3E69600CC -:10C8700063FEF600B3860601938FF5FF63E80601B9 -:10C8800063F6F600938FE5FFB3860601B386F640A4 -:10C8900033D3D6031314040113540401B3F6D6039F -:10C8A00093070300B3056E0293960601B366D400A6 -:10C8B00063FEB600B38606019307F3FF63E8060143 -:10C8C00063F6B6009307E3FFB38606013384B640F0 -:10C8D000939F0F01B7050100B3EFFF001383F5FF2E -:10C8E00093D60F01B3F76F0013DF080133F368002D -:10C8F000B3836702B3846602B307FF02B382E60321 -:10C90000B386970093D70301B387D70063F49700EA -:10C91000B382B20093D60701B3865600B702010076 -:10C920009382F2FFB3F5570093950501B3F35300DB -:10C93000B38575006368D40093870F006314D40433 -:10C940006372B70433071701B3321701B3820201D0 -:10C95000330454009387FFFF6366880063148802E2 -:10C96000636217036366D400639E8600637CB7002E -:10C97000330717019387EFFFB33F1701B38F0F0101 -:10C980003304F401B305B7403304D4403337B70060 -:10C990003304E440930FF0FF63048812B352D403CE -:10C9A00093D605013374D40313870200B30F5E02DC -:10C9B0001314040133E48600637EF401330404019C -:10C9C0001387F2FF636804016376F4011387E2FFC3 -:10C9D000330404013304F441B356D40393950501A1 -:10C9E00093D505013374D403330EDE02131404010E -:10C9F00033E4850093850600637EC401330404019B -:10CA00009385F6FF636804016376C4019385E6FFAE -:10CA10003304040113170701B365B7001397050129 -:10CA2000135707013304C44113DE0501B30E670237 -:10CA300033036E02330ECF03330FEF0213D70E0111 -:10CA4000330F6F003307E70163766700B706010015 -:10CA5000330EDE00135307013303C301370E010009 -:10CA6000130EFEFFB376C70193960601B3FECE0107 -:10CA7000B386D60163686400938F05006310640475 -:10CA80006380060433048800938FF5FF6364040316 -:10CA9000636664006314640263F0D802139718009D -:10CAA000B338170133880801938FE5FF330404017D -:10CAB00093080700631464006384160193EF1F005A -:10CAC0009306F53F635AD01013F77F006300070207 -:10CAD00013F7FF0093054000630AB70093854F00EA -:10CAE000B3BFF501B387F701938F05001397770064 -:10CAF000635A0700370700FF1307F7FFB3F7E70094 -:10CB0000930605401307E07F634AD7181397D701B0 -:10CB100093DF3F003367F70193D73700B705100065 -:10CB20009385F5FFB3F7B700B70510809385F5FF40 -:10CB300093F6F67F93964601B3F7B7008320C102C0 -:10CB4000032481021316F601B3E7D700B3E6C7004A -:10CB500083244102032901028329C101032A81019F -:10CB6000832A4101032B0101832BC1001305070018 -:10CB70009385060013010103678000001305F5FF8C -:10CB8000130700006FF05FCB1306090093870A00BC -:10CB9000930F040013070B00930620006300D710C7 -:10CBA000930630006302D70E93061000E31AD7F005 -:10CBB00093070000130700006F0040091386090067 -:10CBC0006FF09FFDB7070800930F000013060000E9 -:10CBD000130730006FF05FFC93051000B385D5405C -:10CBE00013078003E346B7FC1307F0016344B7065D -:10CBF0001305E5413397A700B3D6BF003395AF00C7 -:10CC00003367D7003335A0003367A700B3D7B70029 -:10CC100093767700638006029376F70093054000D1 -:10CC2000638AB6009306470033B7E600B387E70090 -:10CC3000138706009396870063CA06069396D7016A -:10CC40001357370033E7E60093D737009306000009 -:10CC50006FF0DFEC130710FE3307D7401308000214 -:10CC600033D7E70093060000638605011305E5430B -:10CC7000B396A70033E5F6013335A0003367A7006C -:10CC8000930700006FF0DFF8B707080013070000F4 -:10CC90009306F07F130600006FF05FE89307000033 -:10CCA000130700009306F07F6FF05FE79307000023 -:10CCB00013070000930610006FF05FE6130101FDFB -:10CCC00023202103232A51013709100093DA45015B -:10CCD000232E3101232C41012328610123267101D8 -:10CCE0001309F9FF23261102232481022322910232 -:10CCF00093FAFA7F130B0500930B0600138A0600C4 -:10CD00003379B90093D9F50163880A0A9307F07F54 -:10CD10006386FA10370480001319390033698900DB -:10CD20001354D5013364240193143500938A1AC037 -:10CD3000130B000013554A01370910001309F9FFBE -:10CD40001375F57F3379490113870B00135AFA01E4 -:10CD5000630405109307F07F6304F516B70780009E -:10CD6000131939003369F90093D7DB01B3E72701C1 -:10CD700013973B00130515C09306000093152B0075 -:10CD8000B3E5D5003385AA009385F5FF9308E0004D -:10CD900033C649011308150063E0B81617450000B3 -:10CDA0001305854C93952500B385A50083A5050043 -:10CDB000B385A500678005003364A900630E0406EF -:10CDC0006300090413050900EF30C05B930755FFAA -:10CDD0001307C001634CF7021304D001930485FFCD -:10CDE0003304F4403319990033548B003364240125 -:10CDF000B3149B00930AD0C0B38AAA406FF05FF3CC -:10CE0000EF304058130505026FF05FFC130485FDF9 -:10CE100033148B00930400006FF0DFFD3364A9002E -:10CE2000630404029304050013040900930AF07FCD -:10CE3000130B30006FF01FF093040000930A000002 -:10CE4000130B10006FF01FEF93040000930AF07FA4 -:10CE5000130B20006FF01FEEB3677901638E070696 -:10CE60006300090413050900EF30C051930655FF14 -:10CE70009307C00163CED7029307D001130785FF44 -:10CE8000B387D7403319E900B3D7FB00B3E72701D5 -:10CE90003397EB009306D0C03385A6406FF0DFEDEB -:10CEA00013850B00EF30004E130505026FF01FFCD9 -:10CEB000930785FDB397FB00130700006FF09FFDFC -:10CEC000B367790163820702930709001305F07FB6 -:10CED000930630006FF09FEA13070000130500006F -:10CEE000930610006FF09FE9130700001305F07F11 -:10CEF000930620006FF09FE8B70F0100138FFFFF2C -:10CF000093D6040113530701B3F4E4013377E70127 -:10CF1000B3089302B3059702B382E602338E58003A -:10CF200093D80501B388C801B38E660263F4580034 -:10CF3000B38EFE0113D90801B3F8E80193DF0701AE -:10CF4000B3F5E501B3F3E70193980801B388B8009E -:10CF5000B3877602B3859302B3849F02338EF400C5 -:10CF600093D40501B384C401B386F60363F6F400D9 -:10CF7000B7070100B386F60013DF0401B70901000B -:10CF8000330FDF009386F9FFB3F4D400B3F5D50077 -:10CF900093570401939404013374D400B384B40010 -:10CFA000B306870233099900338EE702B305830283 -:10CFB0003307F3023383C50193D50601B3856500BA -:10CFC00063F4C5013307370113D30501B709010025 -:10CFD000B302E3001387F9FFB3F5E500B3F6E6000B -:10CFE0003383830293950501B385D5003387770298 -:10CFF00033848F02338EFF023304E400935703011E -:10D00000338487006374E400330E3E01B7070100E8 -:10D010009387F7FFB376F4003373F300939606011A -:10D02000B38E2E01B3866600B3B49E00B386E601CC -:10D03000B3879600B38EBE00B3B5BE0033835700EE -:10D04000B30FB300B3B6E601B3B79700B3E7F6008A -:10D050001354040133335300B3B5BF00B3878700C3 -:10D06000B365B300B387B700B387C70113D77F0198 -:10D0700093979700B3E7E70013979E003367170174 -:10D080003337E00093DE7E0193969F003367D7012C -:10D090003367D7009396770063DA0610935617002C -:10D0A0001377170033E7E6009396F7013367D7004D -:10D0B00093D717009305F83F635EB00E9376770021 -:10D0C000638006029376F70013054000638AA6008A -:10D0D0009306470033B7E600B387E70013870600DF -:10D0E0009396770063DA0600B70600FF9386F6FF93 -:10D0F000B3F7D700930508409306E07F63CEB616DA -:10D10000935637001397D7013367D70093D737006B -:10D11000B70610009386F6FFB3F7D70093F6F57FB6 -:10D12000B70510809385F5FF93964601B3F7B700D6 -:10D130008320C102032481021316F601B3E7D7004E -:10D14000B3E6C70083244102032901028329C101F8 -:10D15000032A8101832A4101032B0101832BC10092 -:10D160001305070093850600130101036780000083 -:10D1700013860900930704001387040093060B002D -:10D1800093052000638AB60E93053000638CB60CBD -:10D1900093051000E390B6F2930700001307000018 -:10D1A0006F00800813060A006FF09FFD130805004A -:10D1B0006FF05FF0130510003305B5409306800350 -:10D1C000E3CCA6FC9306F00163C4A6061308E8416D -:10D1D000B3960701B355A70033170701B3E6B600AE -:10D1E0003337E00033E7E600B3D7A7009376770044 -:10D1F000638006029376F70093054000638AB600C9 -:10D200009306470033B7E600B387E70013870600AD -:10D210009396870063CA06069396D7011357370083 -:10D2200033E7E60093D73700930500006FF05FEE19 -:10D23000930610FEB386B64093080002B3D6D7001B -:10D2400093050000630615011308E843B395070131 -:10D2500033E7E5003337E00033E7E60093070000EB -:10D260006FF0DFF8B7070800130700009305F07FA1 -:10D27000130600006FF0DFE99307000013070000BA -:10D280009305F07F6FF0DFE89307000013070000BD -:10D29000930510006FF0DFE78327C50003AF05009B -:10D2A00083AF450083A2850083A5C50037870000B2 -:10D2B00093D607011307F7FF13980701939E050103 -:10D2C00013D6F701B3F6E60093D70501130101FF6A -:10D2D0008328050003234500032E85001358080109 -:10D2E00093DE0E01B3F7E70093D5F5016390E602F4 -:10D2F00033E768003367C701336707011305100080 -:10D30000631A07046398D7046F008000639CE700EA -:10D310003367FF01336757003367D70113051000E8 -:10D32000631A0702130510006396D7026394E8039B -:10D330006312F30363105E02631ED8016300B6023A -:10D34000639A070033E568003365C501336505015D -:10D350003335A000130101016780000013050000B0 -:10D360006FF05FFF8327C50083A8C500032F05006A -:10D3700003264500032885003785000013D70701E1 -:10D380001305F5FF939E080193D6080183A20500BB -:10D3900003A3450003AE85003377A70093950701EB -:10D3A000130101FF93D5050193D7F70193DE0E0119 -:10D3B000B3F6A60093D8F8016310A702B36FCF00AD -:10D3C000B3EF0F01B3EFBF001305E0FF63800F0E53 -:10D3D00013010101678000006398A602B3EF6200A9 -:10D3E000B3EFCF01B3EFDF011305E0FFE3920FFED0 -:10D3F000631207043365CF00336505013365B5005B -:10D40000133515006F00C0026314070A3365CF009F -:10D41000336505013365B50013351500639A0600C1 -:10D42000B3EF6200B3EFCF01B3EFDF01638C0F0600 -:10D43000631A0500638E170113051000E38A07F8CD -:10D440006F008000E39608F81305F0FF6FF05FF8B7 -:10D45000E3C4E6FE635AD7001305F0FFE38A07F63C -:10D46000130510006FF0DFF6E3E8BEFC6396D5030A -:10D47000E3640EFD6314C805E360C3FC6314660037 -:10D48000E3ECE2FBE36A66FC13050000E31266F4DA -:10D49000E3645FFC6FF0DFF3E3E0D5FD130500000C -:10D4A0006FF01FF3E31C05FE6FF01FF9E388E6F24F -:10D4B00013050000E38606F66FF0DFF7E36EC8F9A8 -:10D4C0006FF0DFFD8327C50083A8C500032F05008B -:10D4D00003264500032885003785000013D7070180 -:10D4E0001305F5FF939E080193D6080183A205005A -:10D4F00003A3450003AE85003377A700939507018A -:10D50000130101FF93D5050193D7F70193DE0E01B7 -:10D51000B3F6A60093D8F8016310A702B36FCF004B -:10D52000B3EF0F01B3EFBF001305200063800F0EB0 -:10D5300013010101678000006398A602B3EF620047 -:10D54000B3EFCF01B3EFDF0113052000E3920FFE2D -:10D55000631207043365CF00336505013365B500F9 -:10D56000133515006F00C0026314070A3365CF003E -:10D57000336505013365B50013351500639A060060 -:10D58000B3EF6200B3EFCF01B3EFDF01638C0F069F -:10D59000631A0500638E170113051000E38A07F86C -:10D5A0006F008000E39608F81305F0FF6FF05FF856 -:10D5B000E3C4E6FE635AD7001305F0FFE38A07F6DB -:10D5C000130510006FF0DFF6E3E8BEFC6396D503A9 -:10D5D000E3640EFD6314C805E360C3FC63146600D6 -:10D5E000E3ECE2FBE36A66FC13050000E31266F479 -:10D5F000E3645FFC6FF0DFF3E3E0D5FD13050000AB -:10D600006FF01FF3E31C05FE6FF01FF9E388E6F2ED -:10D6100013050000E38606F66FF0DFF7E36EC8F946 -:10D620006FF0DFFD130101F42326310B83A9C50040 -:10D6300083A6050083A745002326A10003A5850036 -:10D64000139709012328210B2324410B2322510B7B -:10D650002320610B032A0600032B4600832A860041 -:10D660000329C60037860000232A910A13570701B1 -:10D6700093D409011306F6FF23263107232E110A3E -:10D68000232C810A232E7109232C8109232A910935 -:10D690002328A1092326B1092320D1062322F1063C -:10D6A0002324A1062328D102232AF102232CA1023C -:10D6B000232EE102B3F4C40093D9F901638A041262 -:10D6C000638AC424B7070100B367F700232EF10271 -:10D6D000130601039307C10303A7070083A6C7FF2F -:10D6E0009387C7FF1317370093D6D6013367D70048 -:10D6F00023A2E700E312F6FE8327010337C5FFFFED -:10D7000013051500939737002328F102B384A40072 -:10D71000930B000093170901378700001355090187 -:10D7200093D707011307F7FF23262107232041077B -:10D730002322610723245107232041052322610569 -:10D74000232451052326F1043375E5001359F9010B -:10D750006306051E6308E530B70A0100B3EA570106 -:10D7600023265105130601049307C10403A70700EC -:10D7700083A6C7FF9387C7FF1317370093D6D60139 -:10D780003367D70023A2E700E312F6FE83270104E4 -:10D79000939737002320F104B7C7FFFF9387170043 -:10D7A0003305F50013070000B3C729012328F10052 -:10D7B000B30795002320F10293871700232EF10071 -:10D7C00093972B00B3E7E7009387F7FF9306E000FA -:10D7D00063EEF62A974600009386C6AC939727001F -:10D7E000B387D70083A70700B387D70067800700F8 -:10D7F00033E6D7003366A6003366E600630A0612F6 -:10D80000630E070413050700EF20D037130745FF09 -:10D81000935757401377F701630C07069306C0FF31 -:10D82000B386D7021308000293952700130E00FF5A -:10D830003308E8409386C6FF6394C609930601083F -:10D84000B385B600832601039387F7FF3397E6007D -:10D8500023A8E5FA9306F0FF6F00800A630805002D -:10D86000EF205032130505026FF05FFA638A07005C -:10D8700013850700EF201031130505046FF01FF921 -:10D8800013850600EF201030130505066FF01FF812 -:10D890001306C0FF3386C702130701039306300047 -:10D8A000B305C70083A5C5009386F6FF1307C7FF1E -:10D8B0002328B700E3D6F6FE9387F7FF6FF09FF9B2 -:10D8C000130601033303D600B388D500B30816014D -:10D8D0000326C30003230301335606013313E30079 -:10D8E0003366660023A8C8006FF0DFF413972700A3 -:10D8F000130601033307E600232007009387F7FF91 -:10D90000E396D7FEB7C4FFFF93841401B384A44009 -:10D910006FF01FE0B3E7D700B3E7A700B3E7E70076 -:10D92000930B2000E38807DE930B30006FF09FDE3F -:10D9300093040000930B10006FF0DFDD33676A0182 -:10D94000336757013367F700630C0712638E0704D0 -:10D9500013850700EF201023130745FF9357574007 -:10D960001377F701630E07069306C0FFB386D7024D -:10D970001308000293952700130E00FF3308E840B8 -:10D980009386C6FF6396C60993060108B385B60061 -:10D99000832601049387F7FF3397E60023A0E5FC75 -:10D9A0009306F0FF6F00C00A638A0A0013850A001D -:10D9B000EF20501D130505026FF01FFA630A0B00DC -:10D9C00013050B00EF20101C130505046FF0DFF8A2 -:10D9D00013050A00EF20101B130505066FF0DFF793 -:10D9E0001306C0FF3386C7021307010493063000F5 -:10D9F000B305C70083A5C5009386F6FF1307C7FFCD -:10DA00002328B700E3D6F6FE9387F7FF6FF05FF9A0 -:10DA1000130601043303D600B388D500B3081601FA -:10DA20000326C30003230301335606013313E30027 -:10DA30003366660023A8C8006FF09FF41397270091 -:10DA4000130601043307E600232007009387F7FF3E -:10DA5000E396D7FEB7C7FFFF938717013385A7402B -:10DA60006FF05FD4336A6A01B36A5A01B3EAFA000D -:10DA700013072000E38A0AD2130730006FF0DFD2C9 -:10DA800013050000130710006FF01FD203270103D6 -:10DA9000032E0104370501009306F5FF935F07018C -:10DAA000935A0E013377D700337EDE00B387EA0244 -:10DAB0003306EE023388CF03B3850701935706017F -:10DAC000B387B700338B5F0363F40701330BAB00FD -:10DAD000032F410493D20701B3F7D7003376D60062 -:10DAE00093970701B387C70093540F01337FDF007B -:10DAF0002322F1022320F106B306EF02B387E402EA -:10DB00003386EF033385C70093D70601B387A70099 -:10DB1000338A9F0263F6C70037060100330ACA0042 -:10DB2000370601009305F6FF33F5B70093DD0701D3 -:10DB300083274103B3F6B6001315050113D9070176 -:10DB4000B3F5B7003305D500B387BA02B382A2009C -:10DB5000B306BE023303C9033388670093D70601B7 -:10DB6000B3870701B3882A0363F46700B388C8004A -:10DB700093D90701B3891901B70801001386F8FF8B -:10DB800033F8C700B3F6C600131808013308D800ED -:10DB90003386E503B307E903935E0601B386B40257 -:10DBA000B386F600B386DE003383240363F4F60005 -:10DBB0003303130193D70601832E8104B3876700D3 -:10DBC000B70301002324F1029387F3FF13D40E015E -:10DBD000B3FEFE00B308E4023376F600B3F6F600B7 -:10DBE00093960601B386C6003383EE02B38BDF0340 -:10DBF000B387780193580301B388F80033868F0206 -:10DC000063F478013306760093D70801370C0100DE -:10DC1000B387C7001306FCFF2326F102B3F7C80041 -:10DC2000832881033373C3009397070193D30801BB -:10DC300033F6C800B3876700B308C603B38CC303C9 -:10DC400013DD08013383CA023303930133036D00EC -:10DC5000B38B7A0263749301B38B8B01135C030162 -:10DC6000B30B7C01370C0100B3025B00930CFCFF8B -:10DC700033B5A20033739301B38DAD0013130301C9 -:10DC8000B3F89801338A4D01B308130133830201BD -:10DC900033380301232A61002322610633033A014A -:10DCA000330B0301B339330133380B0133E8090176 -:10DCB0003335AA003305A80003288102B302DB0034 -:10DCC00083298102B3B6D200330505010323C102C3 -:10DCD0003308D500B382F20033353501B336D800AE -:10DCE000B3B7F200B30D6800B366D5000325C102D7 -:10DCF0003383FD00B3821201B3B81201B337F300CE -:10DD0000232C510023245106B30273010323C104C1 -:10DD1000338D1201B3BDAD00B3E7FD00B3BB72019B -:10DD2000B3381D01B386F6009352030133EA1B0199 -:10DD300033739301B307E302338A46013387E20268 -:10DD400093D80701B3866F023307D700B388E80082 -:10DD5000B38F5F0263F4D800B38F8F018329C103AF -:10DD6000B70601001385F6FF13D70801B3F8A80022 -:10DD70003307F701B3F7A70093DF09019398080170 -:10DD8000B3F9A900B388F800338BFA03930D0700A9 -:10DD9000B3073E03B38A3A0313D80701338ECF0388 -:10DDA000B38ACA01B30A580163F4CA01330BDB001A -:10DDB00013D80A0133076801370B01002324E1025D -:10DDC0001307FBFF33F8EA00B3F7E7001318080165 -:10DDD0003308F800B386BE02330ED90313D506010B -:10DDE000B307B402B387C701B307F500330789024D -:10DDF00063F4C7013307670113D507013307E50053 -:10DE0000370B01002326E1021307FBFF33F5E70080 -:10DE1000B3F6E600338EE303131505013305D50091 -:10DE20003307E603B387C40293560701B387C701DC -:10DE3000B387F600B38A740263F4C701B38A6A0138 -:10DE4000B7060100138EF6FFB3F6C70193DB070197 -:10DE5000B3071D013377C701B3B81701330ABA01FD -:10DE600093960601B386E600330D1A01032781025B -:10DE7000B3381D01333ABA01B3870701336A1A0177 -:10DE80008328810233B80701330BED000327C10259 -:10DE9000B30C0B01B387A700333B1B0133B80C0154 -:10DEA00033B5A7003387EC00336B0B010328C102A5 -:10DEB000330CA700B38B5B01B387D700B3B6D70091 -:10DEC000B30A7C01338EDA00333707013335AC00F7 -:10DED0003367A700B336DE00330A6A01B3BA7A01AA -:10DEE000330AEA00B3EADA00B3065A013388CE02F5 -:10DEF0002326F106338AD303135508013307C402DE -:10DF0000330747013307E500B3087402637647011E -:10DF100037050100B388A800370A0100135507012F -:10DF2000930AFAFFB3081501337557013378580186 -:10DF300013150501B30A6902330505013308B3025D -:10DF4000B385B20213570801B38555013307B700F3 -:10DF5000330959026374570133094901B70A0100B3 -:10DF600093550701138AFAFF337848013389250155 -:10DF7000B3754701939505013387E903B38505011F -:10DF8000338FEF0313580701338AF403B384340348 -:10DF9000B384E401B304980063F4E401330A5A0142 -:10DFA00013DB0401330B4B01370A0100130FFAFF97 -:10DFB00033F8E4013377E701B384630213180801EF -:10DFC0003308E800330F66023386C20213570F018D -:10DFD000330696003306C700B3835302637496007A -:10DFE000B3834301370A0100135706019304FAFF74 -:10DFF000B303770033779600337F9F001317070131 -:10E000003307E70133063403338F3E03B38EDF0358 -:10E01000935A0F013306D6013386CA00B304F403C2 -:10E020006374D601B3844401135C0601B70C01008C -:10E03000330C9C00330EAE009384FCFF3335AE00EE -:10E04000B386160133769600B38DA600337F9F000A -:10E05000330EBE00131606013306E601B335BE00CB -:10E06000338F2D01330E0E01330DBF00B30E6D0142 -:10E070002328C107333E0E01338ACE01B3B6160101 -:10E08000B335BD0033B5AD0033392F0133E5A600FC -:10E090003369B900B3BE6E01333ECA0133052501B1 -:10E0A000B3EECE013308EA003305D5013337E8007B -:10E0B00033057500B306E500B3337500330533034C -:10E0C0003308C80033B7E6003336C800B38686018C -:10E0D000B385C60033BC860133B6C500232A0107C9 -:10E0E00033E7E30033836F02935605013366CC00B8 -:10E0F000B3893203B3896900B38FF203B382360167 -:10E1000063F46200B38F9F01B3F692009396060109 -:10E11000B3749500B384960093D20201B385950041 -:10E12000B382E2008326410103274102B382C20089 -:10E13000B3B49500B3829200B38FF201B362D700FB -:10E14000032781019397D700232EF107B36257006D -:10E15000232CB106B3E7570013070106130600008E -:10E16000130540008326C700832507011306160008 -:10E1700093D636019395D500B3E6B6002320D70099 -:10E1800013074700E310A6FE032701068326810636 -:10E19000B337F000B3E7E700232CD1040327C1060F -:10E1A000832641062328F104232EE104232AD104E7 -:10E1B0009316B70063D406249397F701130701055C -:10E1C000130600001305300083260700832547004F -:10E1D0001306160093D616009395F501B3E6B60024 -:10E1E0002320D70013074700E310A6FE0327C1052D -:10E1F000B337F00013571700232EE104032701055E -:10E20000B367F7002328F1040327C101B7470000D3 -:10E210009387F7FFB307F7006354F0200327010546 -:10E2200093767700638406049376F7001306400024 -:10E23000638EC60283264105130747002328E104A5 -:10E2400013374700B306D70033B7E600232AD104BB -:10E2500083268105B306D700232CD104B3B6E6008C -:10E260000327C105B386E600232ED1040327C10589 -:10E270009316B70063D00602B707F0FF9387F7FF46 -:10E280003377F700232EE1040327C101B7470000CD -:10E29000B307F7001307010513060000130530004C -:10E2A00083260700832547001306160093D6360001 -:10E2B0009395D501B3E6B6002320D7001307470096 -:10E2C000E310A6FE378700009306E7FF63CEF61241 -:10E2D0000327C10513573700232EE1040327C10587 -:10E2E000B70601809386F6FF2316E1063787000004 -:10E2F0001307F7FFB3F7E7000327C106939707015A -:10E300008320C10B3377D700B367F70003270101E0 -:10E31000B706008093C6F6FF1317F701B3F7D700CF -:10E32000B3E7E7008326C100032701050324810B1F -:10E3300023A6F60023A0E600032741058324410B12 -:10E340000329010B23A2E600032781058329C10AC3 -:10E35000032A810A23A4E600832A410A032B010A27 -:10E36000832BC109032C8109832C4109032D010949 -:10E37000832DC108138506001301010C678000007E -:10E3800023283101832701032328F1048327410334 -:10E39000232AF10483278103232CF1048327C1035B -:10E3A000232EF104930720006380FB28930730009D -:10E3B000638AFB2893071000E398FBE4232E0104F3 -:10E3C000232C0104232A0104232801046F00C02107 -:10E3D0002328210183270104930B07002328F1043C -:10E3E00083274104232AF10483278104232CF10489 -:10E3F0008327C104232EF1046FF0DFFA8327010283 -:10E40000232EF1006FF05FE0232E0104232C010482 -:10E41000232A0104232801049307F7FF6FF01FEC60 -:10E4200093061000B387F640130740076342F71CBA -:10E4300013D6574093F6F701130700009307000027 -:10E44000931527006312C702639806041305300072 -:10E45000130601053305E5406354D50293064000D9 -:10E460003387E6406F00400813050105B305B5008A -:10E4700083A5050013071700B3E7B7006FF05FFC33 -:10E480003308B600032808009386160013064600DA -:10E49000232E06FF6FF05FFC130601083306B6005B -:10E4A000032606FD130800023308D8403316060180 -:10E4B000B3E7C700130630009308010513030000FB -:10E4C0003306E6406346C302930540003387E540C8 -:10E4D00013162600930501083386C5008325C10560 -:10E4E000B3D6D5002328D6FC130640006F000004E5 -:10E4F000338EB80003250E00032E4E0013031300C5 -:10E500003355D500331E0E013365C50123A0A80085 -:10E51000938848006FF01FFB9316270093050105B1 -:10E52000B386D50023A0060013071700E316C7FE25 -:10E5300083260105B337F000B3E7D7002328F104A1 -:10E5400093F677006382060493F6F700638EE60283 -:10E5500003274105938747002328F10493B7470019 -:10E560003387E700B337F700232AE1040327810547 -:10E570003387E700232CE1043337F7008327C105F5 -:10E580003307F700232EE1048327C1051397C70043 -:10E59000635E0700232E0104232C0104232A0104B7 -:10E5A00023280104930710006FF05FD39307010540 -:10E5B000930600009305300003A7070003A6470059 -:10E5C00093861600135737001316D6013367C7001A -:10E5D00023A0E70093874700E390B6FE8327C10599 -:10E5E00093D73700232EF104930700006FF01FCF5D -:10E5F00083274105032701053367F700832781053A -:10E600003367F7008327C1053367F70093070000DE -:10E61000E30607CC232E0104232C0104232A010442 -:10E62000232801046FF09FCBB7870000232E01043D -:10E63000232C0104232A0104232801049387F7FFD4 -:10E640006FF0DFC9B7870000232EF104232C0104EB -:10E65000232A0104232801049387F7FF23280100BC -:10E660006FF0DFC7130101FA83A785002328210576 -:10E6700003A9C50083A6050003A74500232A91042A -:10E68000232CF10293040500232CF100032E060035 -:10E690009317090103234600832886000325C6003B -:10E6A000232C810493D7070113141900232E21036F -:10E6B000232E11042326310523244105232251054D -:10E6C0002328D102232AE1022328D100232AE100B2 -:10E6D000232EF100135414011359F90113080101F9 -:10E6E0009305C10183A7050003A7C5FF9385C5FF57 -:10E6F000939737001357D701B3E7E70023A2F5003C -:10E70000E312B8FE832601019317050113161500C5 -:10E710009396360093D70701232A6102232C110315 -:10E72000232EA10223226102232411032328D100D6 -:10E730002328C1032320C1032326F1021356160107 -:10E740001355F501930801021303C1028327030047 -:10E750000327C3FF1303C3FF939737001357D70152 -:10E76000B3E7E7002322F300E39268FE8327010268 -:10E77000378700001307F7FF939737002320F10234 -:10E780006310E602032E8102032741023367C701AB -:10E79000032EC1023367C7013367F7006314070014 -:10E7A000134515003307C440E31825116354E030C6 -:10E7B0006318061403254102832581020328C10240 -:10E7C0003366B500336606013366F600631406024D -:10E7D000832741012328D10213040700232AF102D1 -:10E7E00083278101232CF1028327C101232EF1020B -:10E7F0006F0080301306F7FF631E060C03274101EC -:10E80000B387F600B3B6D7003306E5002328F1023C -:10E81000B307D600B3B6D700232AF10283278101BC -:10E820003337E600B366D7003387F5003306D700E9 -:10E83000B337F7000327C101B336D600B3E7D700DB -:10E840003308E800B3870701232CC102232EF1020D -:10E85000130410008327C1031397C700635E0728C2 -:10E860003707F8FF1307F7FFB3F7E700232EF1028E -:10E870008327010313041400130701039397F7017F -:10E880001306000013053000832607008325470088 -:10E890001306160093D616009395F501B3E6B6005D -:10E8A0002320D70013074700E310A6FE0327C10368 -:10E8B000B337F00013571700232EE102032701039B -:10E8C000B367F7002328F102B78700009387F7FFAB -:10E8D0006F00007DB78700009387F7FFE30AF7EE2C -:10E8E0009307400763D2C70693071000232601024F -:10E8F00023240102232201022320F1026F00C0140D -:10E90000B78700009387F7FF6312F4028327410162 -:10E910002328D102232AF10283278101232CF1022B -:10E920008327C101232EF1026F00001D8327C1023E -:10E93000B7060800B3E7D7002326F1029307400784 -:10E94000E3C4E7FA13060700935656401377F6011F -:10E950009307000013060000939527006390D702E9 -:10E960006314070493063000B386F64063D2E602D0 -:10E9700013074000B307F7406F00C007B385B80026 -:10E9800083A50500938717003366B6006FF0DFFCA0 -:10E990003305B300032505001307170013034300D5 -:10E9A000232EA3FE6FF09FFC93060104B386B600EE -:10E9B00083A606FE130800023308E840B39606015A -:10E9C0003366D60093063000130E0000B386F6407F -:10E9D0006346DE0293054000B387F5409396260018 -:10E9E00093050104B386D5008325C10233D7E50022 -:10E9F00023A0E6FE930640006F00C003B30EB300F1 -:10EA000003A50E0083AE4E00130E1E003355E50025 -:10EA1000B39E0E013365D5012320A30013034300E9 -:10EA20006FF01FFB139727003387E80023200700B0 -:10EA300093871700E398D7FE832701023336C0007F -:10EA400033E6C7002320C102832601018327010288 -:10EA50000327410183258102B387F600B3B6D700AF -:10EA60002328F102832741020325C102B307F700DF -:10EA70003386D70033B7E700B337D600B367F70064 -:10EA8000032781018326C101232AC102B305B700F0 -:10EA90003386F50033B7E500B337F600B386A6003A -:10EAA0003367F7003387E600232CC102232EE102EF -:10EAB0006FF05FDA6300073E631604248328410188 -:10EAC00003258101032EC10133E3A8003363C30191 -:10EAD0003363D300631E03182328F1028327410206 -:10EAE00013040600232AF10283278102232CF1025A -:10EAF0008327C102232EF1028327010313F7770036 -:10EB00006304070413F7F70093064000630ED7026F -:10EB100003274103938747002328F10293B7470057 -:10EB20003387E700B337F700232AE1020327810385 -:10EB30003387E700232CE1023337F7008327C10333 -:10EB40003307F700232EE1028327C1031397C70081 -:10EB50006352070237870000130414001307F7FFFE -:10EB6000E308E47A3707F8FF1307F7FFB3F7E70086 -:10EB7000232EF10293070103930600009305300052 -:10EB800003A7070003A64700938616001357370014 -:10EB90001316D6013367C70023A0E7009387470009 -:10EBA000E390B6FE8327C103B786000013D7370072 -:10EBB000232EE1029387F6FF631AF4020326410332 -:10EBC00083270103B3E7C70003268103B3E7C70028 -:10EBD000B3E7E700638C0700232ED102232C010248 -:10EBE000232A010223280102130900008327C103FD -:10EBF000370701801307F7FF2316F100B7870000DE -:10EC00009387F7FF3374F400931704010324C100C2 -:10EC10008320C105138504003374E4003364F400D9 -:10EC20009317F901370900801349F9FF3374240160 -:10EC30003369F400832701030324810523A62401FB -:10EC400023A0F40083274103032901058329C1047C -:10EC500023A2F40083278103032A8104832A410429 -:10EC600023A4F400832441051301010667800000FA -:10EC70001303F0FF6310670683254102B386F60095 -:10EC8000B3B7F6003388B8003307F800B337F7009E -:10EC9000232AE10203278102B335B800B3E7F50068 -:10ECA0002328D102B306E500B385F600B3B7F5001B -:10ECB00033B7E6003367F7008327C102232CB10284 -:10ECC000330EFE003307C701232EE10213040600B2 -:10ECD0006FF05FB8B78600009386F6FFE30ED6DECE -:10ECE0001347F7FF9307400763D2E7049307100029 -:10ECF000232E0100232C0100232A01002328F100E8 -:10ED00006F00C012B78600009386F6FFE306D6DCDC -:10ED10008327C101B7060800B3E7D700232EF1000F -:10ED20009307C0F8E344F7FC3307E040935657409D -:10ED3000130500001377F70193070000939827004D -:10ED40006390D7026314070493063000B386F6403D -:10ED500063D2E60213074000B307F7406F00C00715 -:10ED6000B308180183A808009387170033651501BD -:10ED70006FF0DFFC33831501032303001307170033 -:10ED80009385450023AE65FE6FF09FFC930601045A -:10ED9000B386160183A606FD130E0002330EEE4065 -:10EDA000B396C6013365D50093063000930E00007C -:10EDB000B386F64063C6DE0293054000B387F54094 -:10EDC0009396260093050104B386D5008325C101DF -:10EDD00033D7E50023A8E6FC930640006F00C0038C -:10EDE000338F150103230F00032F4F00938E1E0056 -:10EDF0003353E300331FCF013363E30123A06500E6 -:10EE0000938545006FF01FFB139727003307E80039 -:10EE10002320070093871700E398D7FE832701017B -:10EE20003335A00033E5A7002328A1008326010283 -:10EE3000832701010327410203258101B387F600DF -:10EE4000B3B6D7002328F102832741010328C1016B -:10EE5000B307F700B385D70033B7E700B3B7D500E2 -:10EE6000B367F700032781028326C102232AB10278 -:10EE70003305A700B305F5003337E500B3B7F50058 -:10EE8000B38606013367F700232CB1023387E6000F -:10EE90006FF09FE3378F000093051400930EFFFF80 -:10EEA000B3F2D501930F100003264102032781021C -:10EEB0000325C102032E4101832881010323C101DF -:10EEC0001308010363C65F14B3651E01B3E5650053 -:10EED000B3E5D5006316040A639C05002328F102FC -:10EEE000232AC102232CE102232EA1026FF0DFC0EE -:10EEF000B365E600B3E5A500B3E5F500639C050046 -:10EF00002328D102232AC103232C1103232E6102BB -:10EF10006FF09FBEB387F6003306C6012328F102C7 -:10EF2000B3B7D700B306F600232AD1023336C601A1 -:10EF3000B3B6F600B366D600B3051701B387D500A4 -:10EF400033B71501B3B6D700B366D70033076500F2 -:10EF50003387E600232CF1029317C70063C607002E -:10EF6000232EE1026FF05FB9B706F8FF9386F6FF34 -:10EF70003377D700232EE102130410006FF0DFB7C0 -:10EF8000639E05002328F102232AC102232CE102FB -:10EF9000232EA10213840E006FF01FB63367E60024 -:10EFA0003367A700B367F700639C07002328D102EB -:10EFB000232AC103232C1103232E61026FF09FFD2E -:10EFC000232EE103232C0102232A0102232801021C -:10EFD0009307C10303A7070083A6C7FF9387C7FF53 -:10EFE0001317370093D6D6013367D70023A2E70063 -:10EFF000E312F8FE83270103378400001304F4FFB3 -:10F00000939737002328F102130900006FF0DFAE59 -:10F01000B387F6003306C6012328F102B3B7D70041 -:10F02000B306F600232AD1023336C601B3B6F60082 -:10F03000B366D600330717013306D700B336D600C0 -:10F0400033371701B366D700330765003387E6000F -:10F05000232CC102232EE10293070800930600002F -:10F060001305300003A7070003A647009386160088 -:10F07000135717001316F6013367C70023A0E700E4 -:10F0800093874700E390A6FE8327C10313840500FE -:10F0900093D71700232EF102B78700009387F7FF5D -:10F0A000E31CF4A4232E0102232C0102232A0102D3 -:10F0B000232801026FF05FA46354E0286310060E5A -:10F0C0000325410283258102032EC1023368B50066 -:10F0D0003368C8013368F800630C08EE1306F7FFC5 -:10F0E0006318060883284101B387F64033B7F6005A -:10F0F0003388A84033B308013308E8402328F102DD -:10F10000232A01031307000063F6F60033071541B5 -:10F11000133717000328810133676700B306B8402F -:10F120003335D800B386E640232CD10263060700AE -:10F13000B385054113B615008327C1013366A600C8 -:10F1400013041000B387C7413386C740232EC10282 -:10F150008327C1031397C700E350079A37070800B6 -:10F160001307F7FFB3F7E700232EF1026F00407398 -:10F17000B78700009387F7FF630CF7E49307400716 -:10F1800063D2C7049307100023260102232401023F -:10F19000232201022320F1026F00C012B787000072 -:10F1A0009387F7FF6304F4F68327C102B7060800CC -:10F1B000B3E7D7002326F10293074007E3C4E7FC37 -:10F1C0001306070013575640930600001376F60106 -:10F1D00093070000939527006390E70263140604E9 -:10F1E000130730003307F7406352C702130740008C -:10F1F000B307F7406F00C007B385B80083A50500CB -:10F2000093871700B3E6B6006FF0DFFC3305B30059 -:10F21000032505001306160013034300232EA3FE47 -:10F220006FF09FFC130701043307B700032707FEA5 -:10F23000130800023308C84033170701B3E6E6009D -:10F2400013073000130E00003307F7406346EE0249 -:10F2500093054000B387F540131727009305010479 -:10F260003387E5008325C10233D6C5002320C7FEBE -:10F27000130640006F00C003B30EB30003A50E00D9 -:10F2800083AE4E00130E1E003355C500B39E0E0113 -:10F290003365D5012320A300130343006FF01FFB48 -:10F2A000139727003387E800232007009387170070 -:10F2B000E398C7FE83270102B336D000B3E6D70038 -:10F2C0002320D10283264101832501010327010266 -:10F2D000832741023387E540B387F64033B6F60013 -:10F2E000B3B6E500B386D740232AD1022328E10232 -:10F2F0009306000063F4E50093B61700B3E6C6007A -:10F3000003278102032681013307E640B307D74074 -:10F31000232CF102B335E6001306000063840600D7 -:10F32000133617008327C1010327C1023366B600D5 -:10F33000B387E740B387C740232EF1026FF05FE148 -:10F34000630E0728631C040E0323410183288101F7 -:10F35000832EC101336E1301336EDE01336EDE0086 -:10F3600063160E022328F1028327410213040600CC -:10F37000232AF10283278102232CF1028327C10271 -:10F38000232EF102130905006FF00FF7130EF0FFA3 -:10F39000631EC70703284102B386D74033B7D7009F -:10F3A000B3056840333EB800B385E5402328D10259 -:10F3B000232AB1021307000063F6D7003307034185 -:10F3C00013371700032881023367C7019306000033 -:10F3D000B30518413333B800B385E540232CB1029F -:10F3E00063060700B388084193B618008327C1025B -:10F3F000B3E86600B387D741B3871741232EF102E4 -:10F4000013040600130905006FF09FD4B7860000AF -:10F410009386F6FFE308D6F41347F7FF93074007F8 -:10F4200063D2E70493071000232E0100232C010070 -:10F43000232A01002328F1006F00C012B7860000C4 -:10F440009386F6FFE300D6F28327C101B7060800D2 -:10F45000B3E7D700232EF1009307C0F8E344F7FC8D -:10F460003307E04093565740930800001377F701A5 -:10F4700093070000139327006390D70263140704D7 -:10F4800093063000B386F64063D2E60213074000CD -:10F49000B307F7406F00C00733036800032303007E -:10F4A00093871700B3E868006FF0DFFC338E6500C8 -:10F4B000032E0E00130717009385450023AEC5FFEA -:10F4C0006FF09FFC93060104B386660083A606FDD9 -:10F4D000930E0002B38EEE40B396D601B3E8D80087 -:10F4E00093063000130F0000B386F6406346DF0238 -:10F4F00093054000B387F5409396260093050104D9 -:10F50000B386D5008325C10133D7E50023A8E6FCE7 -:10F51000930640006F00C003B38F650003AE0F0079 -:10F5200083AF4F00130F1F00335EEE00B39FDF0168 -:10F53000336EFE0123A0C501938545006FF01FFBCC -:10F54000139727003307E80023200700938717004D -:10F55000E398D7FE83270101B3381001B3E8170100 -:10F5600023281101832641020328010203270101F8 -:10F57000832741013307E840B387F640B3B5F6006F -:10F58000B336E800B386D740232AD1022328E1020C -:10F59000930600006374E80093B61700B3E6B60064 -:10F5A00003278101832581023387E540B307D740D4 -:10F5B000232CF10233B8E5009305000063840600B4 -:10F5C000933517008327C1020327C101B3E5050165 -:10F5D000B387E740B387B7406FF05FE2B78F0000B3 -:10F5E000130814009382FFFF33785800130F1000A4 -:10F5F000832541020326410183288101832EC10115 -:10F6000003238102032EC102634E0F1D33E8650000 -:10F61000336F16013368C801336FDF013368F800B8 -:10F62000336FDF006318041063120F022328F10206 -:10F63000232AB102232C6102232EC103E31408D430 -:10F6400013040000130900006FF00FD0631C0800C2 -:10F650002328D102232AC102232C1103232ED103F4 -:10F660006FF08FC93388F640B302B640B3BF0601CE -:10F67000333F5600B382F24123280103232A51026B -:10F68000930F000063F60601B38FC54093BF1F00C0 -:10F69000B3836840B3EFEF01338AF341232C410376 -:10F6A000B3BA78009309000063840F0093B9130084 -:10F6B000338FCE41B3E95901330F3F41232EE1038C -:10F6C000931FCF0063DE0F04B386D7403386C54057 -:10F6D00033B8D70033080641232A01032328D10277 -:10F6E000B3B5C5001308000063F4D7001338160043 -:10F6F000B3071341B365B800B336F300B387B7401F -:10F70000232CF1026384050013B71300B307DE4115 -:10F710003367D7003387E740232EE1026FF09FC69F -:10F7200033685800336848013368E801E30A08F099 -:10F730006FF08FBC93030103631E0F04631E080266 -:10F74000232EF103232C0102232A01022328010284 -:10F750009307C10303A7070083A6C7FF9387C7FFCB -:10F760001317370093D6D6013367D70023A2E700DB -:10F77000E392F3FE6FF01F882328F102232AB102DF -:10F78000232C6102232EC1031309050013840200F8 -:10F790006FF08FB6631C08002328D102232AC10210 -:10F7A000232C1103232ED1036FF05FFE232EF103D0 -:10F7B000232C0102232A0102232801029307C103FB -:10F7C00003A7070083A6C7FF9387C7FF1317370058 -:10F7D00093D6D6013367D70023A2E700E392F3FE66 -:10F7E0006FF05F813388F640B302B640B3BF0601C5 -:10F7F000333F5600B382F24123280103232A5102EA -:10F80000930F000063F60601B38FC54093BF1F003E -:10F81000B3836840B3EFEF01338AF341232C4103F4 -:10F82000B3BA78009309000063840F0093B9130002 -:10F83000338FCE41B3E95901330F3F41232EE1030A -:10F84000931FCF0063DC0F0AB386D7403386C540D1 -:10F8500033B8D70033080641232A01032328D102F5 -:10F86000B3B5C5001308000063F4D70013381600C1 -:10F87000B3071341B365B800B336F300B387B7409D -:10F88000232CF1026384050013B71300B307DE4194 -:10F890003367D7003387E740232EE10213090500C1 -:10F8A0000325C10363060506EF00D02D130545FFB0 -:10F8B000930600023368D502B347D50263060808F1 -:10F8C0001307C0FF93952700130E00FFB386064170 -:10F8D0003387E7021307C7FF6310C70B1307010441 -:10F8E000B305B700032701039387F7FF3318070118 -:10F8F00023A805FF9306F0FF6F00000C3368580043 -:10F90000336848013368E801E30C08D26FF05FF90F -:10F910000325810363080500EF00D02613050502C7 -:10F920006FF0DFF80325410363080500EF00902521 -:10F93000130505046FF09FF703250103EF009024E2 -:10F94000130505066FF09FF61306C0FF3386C70246 -:10F950001307010393063000B305C70083A5C50054 -:10F960009386F6FF1307C7FF2328B700E3D6F6FEFA -:10F970009387F7FF6FF01FF8130601033303E600C8 -:10F98000B388E500B30816010326C300032303016F -:10F990003356D600331303013366660023A8C8002C -:10F9A0006FF05FF313972700130601033307E60098 -:10F9B000232007009387F7FFE396D7FE634E851257 -:10F9C000330485401307000213041400B347E40214 -:10F9D000130500003364E40213070000634AF702D2 -:10F9E0001387070063D40700130700001393270051 -:10F9F000631A04049306300013070103B386F6402C -:10FA000063D6860213074000B307F7406F00C008B3 -:10FA10009316270013060103B306D60083A606003B -:10FA2000130717003365D5006FF05FFB33066700DF -:10FA3000032606001304140013074700232EC7FEF5 -:10FA40006FF01FFC13172700930601043387E600AD -:10FA5000032707FF13060002330686403317C7004B -:10FA60003365E50013073000930501031308000018 -:10FA70003307F7406346E80293064000B387F64039 -:10FA800013172700930601043387E6008326C1037A -:10FA900033D48600232887FE930630006F000004CD -:10FAA000B388650083A6080083A8480013081800DF -:10FAB000B3D68600B398C800B3E6160123A0D500DC -:10FAC000938545006FF01FFB139727001306010372 -:10FAD0003307E6002320070093871700E3D6F6FEDE -:10FAE00003270103B337A00013040000B367F70036 -:10FAF0002328F1026FF04F808327C1033707F8FFF7 -:10FB00001307F7FF3304A440B3F7E7006FE09FE16A -:10FB1000232E0102232C0102232A010223280102A1 -:10FB20006FF04F8503274500832785000326C50016 -:10FB300083260500130101FE2322E1002324F100A6 -:10FB4000232AE100232CF100374700009317160009 -:10FB50002320D1002328D1002326C10093D61701EA -:10FB60009307E7FF1305000063D0D7029307D7017F -:10FB7000931506011356F60163DCD70037050080A4 -:10FB80001345F5FF3305A60013010102678000004D -:10FB9000B707010093D50501B3E5F5009307F70614 -:10FBA000B387D74013D75740232EB10093F7F701FF -:10FBB0006392070A9305300093060101131527008D -:10FBC000B385E54063DEF502930740003387E740E5 -:10FBD0009306010193172700B387F60093064000B0 -:10FBE00023A007001307170093874700E31AD7FEE7 -:10FBF00003250101E30A06F83305A0406FF0DFF8A2 -:10FC00003388A600032808009387170093864600D0 -:10FC100023AE06FF6FF01FFB832605FF032307FFBC -:10FC2000B39616013353F300B3E666002328D100E0 -:10FC300093061000E3C206FF1387160013050102A6 -:10FC400093962600B306D500B3D7F50023A8F6FE99 -:10FC50006FF01FF813051700930801021308300016 -:10FC6000131525003308E8403385A8001317270033 -:10FC7000930800021303010293060000B388F840C2 -:10FC80003307E3006FF01FFB130101FD23229102F4 -:10FC9000232611022324810223202103930405003B -:10FCA000638605141384050013D9F50163D4050098 -:10FCB0003304B04013050400EF00C06C9305150534 -:10FCC000B74700009387E70113D7554023288100E9 -:10FCD000232A0100232C0100232E010093F5F501B6 -:10FCE000B387A740638C050293062000631CD70EE0 -:10FCF00093060002B386B640B356D400232ED1003B -:10FD00009306F7FF13060102131727003307E600D7 -:10FD10003314B400232887FE6F004003930630009D -:10FD2000B386E6401306010293962600B306D6007A -:10FD300083A606FF13062000232ED1009306200081 -:10FD40006316C700232C81009306100013060101DF -:10FD5000139726003307E6001306F0FF2320070061 -:10FD60009386F6FF1307C7FFE39AC6FE0327C10178 -:10FD7000B70601809386F6FF2316E100378700005F -:10FD80001307F7FFB3F7E700139707018327C100B5 -:10FD90001319F9018320C102B3F7D700B3E7E700D5 -:10FDA000370700801347F7FFB3F7E7000327010188 -:10FDB00003248102B3E7270123A0E40003274101C4 -:10FDC00023A6F4001385040023A2E4000327810185 -:10FDD0000329010223A4E400832441021301010347 -:10FDE00067800000130730006FF09FF1232E0100A1 -:10FDF000232C0100232A010023280100930700007F -:10FE0000130900006FF09FF6935746013707100063 -:10FE10001307F7FF93F7F77F130101FD3377C7004F -:10FE20009386170023248102232291021354F601A2 -:10FE3000232611022328B100232AE100232E0100EA -:10FE4000232C010093F6F67F13061000930405009F -:10FE50006354D60AB7460000938606C013D5450002 -:10FE6000B387D700935647001317C7013367A7001E -:10FE70009395C501232ED100232CE100232AB10044 -:10FE8000232801000327C101378500001305F5FF72 -:10FE90002316E1000327C100B7060180B3F7A700CE -:10FEA0009386F6FF3377D70093970701B367F70080 -:10FEB000370700801347F7FFB3F7E7001314F40187 -:10FEC00033E487008327010123A684008320C10235 -:10FED00023A0F40083274101032481021385040039 -:10FEE00023A2F4008327810123A4F4008324410288 -:10FEF00013010103678000003365B700639A070EA2 -:10FF0000E30205F86300070613050700EF008047CA -:10FF10009306150313D7564093F6F601638A060439 -:10FF20001306C0FF3306C70213080002930701013E -:10FF3000130300FF3308D8401306C6FF9387C7FF9B -:10FF400063166608930701021306F7FF13172700CD -:10FF50003387E70083270101B396D7002328D7FE14 -:10FF60006F00C003EF000042130505026FF05FFA57 -:10FF70001306C0FF3306C702930601019307300042 -:10FF8000B385C60083A5C5009387F7FF9386C6FF98 -:10FF900023A8B600E3D6E7FE1306F7FF9307010197 -:10FFA000131726003387E7009307F0FF232007008D -:10FFB0001306F6FF1307C7FFE31AF6FEB747000064 -:10FFC0009387C7C0B387A7406FF0DFEB93050101AC -:10FFD000B388C50083A5C80083A80801B3D505016F -:10FFE000B398D800B3E5150123A8B7006FF0DFF48C -:10FFF000B7870000630805029317C70193D6450031 -:02000004800179 -:10000000B3E7D700232CF10013574700B787000050 -:100010009395C5013367F700232AB1002328010017 -:10002000232EE1009387F7FF6FF0DFE58325C500FE -:100030008327850003274500130101FE8326050061 -:100040002324F100232CF100939705012322E100E2 -:10005000232AE10093D70701139715002326B10047 -:100060002320D1002328D100232EF100135717019C -:1000700093D5F501130301011306C101832706007F -:100080008326C6FF1306C6FF9397370093D6D60183 -:10009000B3E7D7002322F600E312C3FE8326010153 -:1000A0009307170013953600B78600009386F6FF76 -:1000B000B3F7D7002328A1009306100063DCF61ADB -:1000C000B7C7FFFF938707403307F7009307E07F29 -:1000D00063CEE71E6358E006032881010326C101B1 -:1000E000832741019356C801131646003366D60094 -:1000F00093964700B3E6A60093D7C70113184800AC -:10010000B336D000B3E70701B3E6F600232AC100F7 -:100110002328D100832601018327410113F67600AD -:10012000630C061A13F6F600130540006306A61AC0 -:1001300013864600B336D600B387D7009306060071 -:100140006F0080199307C0FC635AF700232A01004F -:100150002328D100130700006FF0DFFB8327C101C4 -:10016000B706080093080000B3E7D700232EF1007C -:100170009307D0033387E740135557409307030095 -:100180001377F7019306000003A807009386160073 -:1001900093874700B3E80801E318D5FE939E260035 -:1001A000631A070293073000B387D74063D8E7008C -:1001B00093074000B386D7406F0080063305D60111 -:1001C000032505001307170013064600232EA6FE7D -:1001D0006FF0DFFD93070102B387D70183A707FF05 -:1001E000130800023308E840B3970701B3E8F800AA -:1001F00093073000130E0000B387D7406348FE0416 -:1002000013064000B306D640939727001306010259 -:10021000B307F6000326C1013357E60023A8E7FE23 -:100220001307400093972600B307F30023A00700AD -:1002300093861600E398E6FE03270101B337100109 -:10024000B367F7002328F1006FF0DFF0330FD6011A -:1002500003250F00032F4F00130E1E003355E5003A -:10026000331F0F013365E5012320A6001306460066 -:100270006FF0DFF803264101832781010328C101C4 -:10028000B366F600B3E60601B3E6A60063180700FE -:10029000B336D000930700006FF05FE8638A060C66 -:1002A0009356C601131848001396470093D7C70109 -:1002B00037074000B3E6C600B3E70701B3E7E7003E -:1002C00093F686FF1307F07F6FF05FE5930700005A -:1002D000930600001307F07F13968700635E060005 -:1002E000130717001306F07F6308C708370680FF5F -:1002F0001306F6FFB3F7C7001396D70193D636005F -:10030000B366D6001306F07F93D73700631EC7008D -:10031000B3E6F6009307000063880600B7070800FD -:100320009306000093050000370610001306F6FF41 -:10033000B3F7C700370610801377F77F1306F6FF71 -:1003400013174701B3F7C700B3E7E700370700808B -:100350001347F7FF9395F501B3F7E70033E7B700CD -:100360001385060093050700130101026780000052 -:10037000930700006FF01FF693070000930600003C -:100380006FF09FF7B7070100637AF5029307F00F4C -:10039000B3B7A70093973700130700023307F7405E -:1003A000B357F50017150000130585F3B307F500E3 -:1003B00003C507003305A740678000003707000129 -:1003C00093070001E36AE5FC930780016FF0DFFC0F -:1003D000130101FF2326110023248100930500004F -:1003E00013060000930600001307000093070000A7 -:1003F000930890037300000013040500635A05007E -:1004000033048040EF00402E232085001304F0FFCA -:10041000130504008320C10003248100130101019E -:1004200067800000130101F8232A9106232E11068C -:1004300093840500232C8106930581001306000098 -:1004400093060000130700009307000093080005BF -:100450007300000013040500635A05003304804054 -:10046000EF008028232085001304F0FF138504008B -:1004700093058100EF008020130504008320C1074D -:1004800003248107832441071301010867800000CA -:10049000130101FB9305410023261104EFF09FF89F -:1004A0009307F0FF6308F500032581001355D5007D -:1004B000137515008320C104130101056780000036 -:1004C000130101FF2326110023248100930600005D -:1004D00013070000930700009308E0037300000077 -:1004E00013040500635A050033048040EF00C01F69 -:1004F000232085001304F0FF130504008320C100AE -:10050000032481001301010167800000130101FF32 -:100510002326110023248100930600001307000006 -:10052000930700009308F003730000001304050014 -:10053000635A050033048040EF00001B2320850030 -:100540001304F0FF130504008320C100032481007D -:100550001301010167800000130101FF23229100B4 -:10056000972400009384C49B83A7040023202101C7 -:10057000232611002324810013090500639C07042E -:100580001305000093050000130600009306000009 -:10059000130700009308600D7300000013040500AA -:1005A00063560502EF004014330480402320850089 -:1005B0001305F0FF8320C100032481008324410040 -:1005C0000329010013010101678000009727000043 -:1005D00023A8A79403A504009305000013060000B8 -:1005E0003305A900930600001307000093070000DD -:1005F0009308600D7300000013040500635A0500A2 -:1006000033048040EF00400E232085001304F0FFE8 -:1006100083A704001305F0FF3309F900E31C24F954 -:1006200017270000232E878E138507006FF09FF891 -:10063000130101FF232611002324810093060000EB -:1006400013070000930700009308000473000000E4 -:1006500013040500635A050033048040EF00C0080E -:10066000232085001304F0FF130504008320C1003C -:1006700003248100130101016780000083A70500A6 -:100680002310F50083A785002311F50083A705013A -:100690002322F50083A745012314F50083A78501D4 -:1006A0002315F50083A7C5012316F50083A70502CE -:1006B0002317F50083A705032328F50083A7050466 -:1006C0002328F50283A785032326F50283A7850443 -:1006D000232AF50083A70505232EF50083A78505AA -:1006E0002322F50267800000972700009387878107 -:1006F00003A50700678000004D69616F7520212107 -:100700000000000058FFFEFFEC10FFFFEC10FFFFA1 -:100710006CFFFEFFEC10FFFFEC10FFFFEC10FFFF83 -:1007200004FFFEFFEC10FFFFEC10FFFF74FFFEFF65 -:1007300094FFFEFFEC10FFFF8CFFFEFF9CFFFEFF0F -:10074000EC10FFFFF4FFFEFFFCFFFEFFFCFFFEFFCF -:10075000FCFFFEFFFCFFFEFFFCFFFEFFFCFFFEFFB9 -:10076000FCFFFEFFFCFFFEFFFCFFFEFFEC10FFFFA7 -:10077000EC10FFFFEC10FFFFEC10FFFFEC10FFFF91 -:10078000EC10FFFFEC10FFFF7001FFFFEC10FFFF0C -:100790009000FFFFC400FFFF7001FFFF7001FFFF2B -:1007A0007001FFFFEC10FFFFEC10FFFFEC10FFFFEC -:1007B000EC10FFFF3000FFFFEC10FFFFEC10FFFF1D -:1007C000E40AFFFFEC10FFFFEC10FFFFEC10FFFF4F -:1007D000B00BFFFFEC10FFFF940EFFFFEC10FFFFCC -:1007E000EC10FFFFA8FEFEFFEC10FFFFEC10FFFF78 -:1007F000EC10FFFFEC10FFFFEC10FFFFEC10FFFF11 -:10080000EC10FFFFEC10FFFF7001FFFFEC10FFFF8B -:100810009000FFFFC800FFFF7001FFFF7001FFFFA6 -:100820007001FFFF3800FFFFC800FFFF8000FFFFDF -:10083000EC10FFFF6400FFFFEC10FFFF780AFFFFE2 -:10084000E80AFFFF780BFFFF8000FFFFEC10FFFFBF -:10085000B00BFFFF68FEFEFF980EFFFFEC10FFFFDE -:10086000EC10FFFFFC0EFFFFEC10FFFF68FEFEFF29 -:100870002020202020202020202020202020202078 -:100880003030303030303030303030303030303068 -:10089000494E4600696E66004E414E006E616E0024 -:1008A00030313233343536373839616263646566E6 -:1008B00000000000303132333435363738394142A8 -:1008C00043444546000000003000000000000000E6 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000000000000000008 -:1008F0000080FF3F7665924A4A803F154CC99A971F -:10090000208A025260C42575326A52CE9A32CE28AD -:100910004DA7E45D3DC55D3B8B9E925A6C52CE5017 -:100920008BF1283D0D65170C7581867576C9484D8C -:10093000669CF85850BC545C65CCC6910EA6AEA01F -:1009400019E3A3461E85B7EAFE981B90BBDD8DDE3A -:10095000F99DFBEB7EAA514335023701B1366C336A -:100960006FC6DF8CE980C947BA93A841F850FB25D0 -:100970006BC7716BBF3CD5A6CFFF491F78C2D34070 -:10098000000000000000000020F09DB5702BA8AD15 -:10099000C59D69400000000000000000000000004C -:1009A0000004BFC91B8E344000000000000000009E -:1009B0000000000000000020BCBE19400000000044 -:1009C000000000000000000000000000409C0C40FF -:1009D0000000000000000000000000000000000017 -:1009E00000C80540000000000000000000000000FA -:1009F0000000000000A00240FFFFFEFFFCFFF8FF28 -:100A0000F0FFE0FFC0FF80FF00FF00FE00FC00F8E9 -:100A100000F000E000C00080000000003020FCCFAB -:100A2000C3A12381E32DDE9FCED2C804DDA6D80A60 -:100A30006482CBD2EAF2D4122549E42D36344F53E6 -:100A4000AECE6B253FF598F6D36B5801A687BDC097 -:100A500057DAA582A6A2B53231E7D404F2E332D345 -:100A600032711CD223DB32EE49905A393EA2085330 -:100A7000FBFE551191FA39197A63254331C0AC3C1C -:100A80006DE2DEDB5DD0F6B37CACA0E4BC647C46FA -:100A9000D0DD553E202A2462B347D798233FA5E9ED -:100AA00039A527EA7FA82A3F5B0BF24A81A5ED18FA -:100AB000DE67BA943945AD1EB1CF943F71BFB3A97B -:100AC000897968BE2E4C5BE14DC4BE9495E6C93F62 -:100AD0004D3D3D7CBA362B0DC2FDFCCE61841177B5 -:100AE000CCABE43F55C1A8A44E401361C3D32B65E2 -:100AF00019E25817B7D1F13F0AD7A3703D0AD7A31F -:100B0000703D0AD7A3703D0AD7A3F83FCDCCCCCC1B -:100B1000CCCCCCCCCCCCCCCCCCCCCCCCCCCCFB3F73 -:100B2000204E614E20000000202D496E66696E69DE -:100B30007479200020496E66696E6974792000001E -:100B40004E614E004525640043000000504F53495C -:100B5000580000002E0000000500000019000000F1 -:100B60007D00000000000000000000000000F03FD9 -:100B70000000000000002440000000000000594078 -:100B80000000000000408F40000000000088C340CB -:100B900000000000006AF8400000000080842E4140 -:100BA00000000000D01263410000000084D797418C -:100BB0000000000065CDCD41000000205FA0024292 -:100BC000000000E876483742000000A2941A6D4207 -:100BD000000040E59C30A2420000901EC4BCD642FA -:100BE00000003426F56B0C430080E03779C34143A5 -:100BF00000A0D8855734764300C84E676DC1AB431B -:100C0000003D9160E458E143408CB5781DAF154438 -:100C100050EFE2D6E41A4B4492D54D06CFF0804413 -:100C2000F64AE1C7022DB544B49DD9794378EA4428 -:100C3000BC89D897B2D29C3C33A7A8D523F64939B2 -:100C40003DA7F444FD0FA5329D978CCF08BA5B25D4 -:100C5000436FAC642806C80A0080E03779C341437B -:100C6000176E05B5B5B89346F5F93FE9034F384D12 -:100C7000321D30F94877825A3CBF737FDD4F1575BE -:100C80002464FFFFF475FFFFF475FFFF3864FFFF76 -:100C9000F475FFFFF475FFFFF475FFFFD063FFFFEE -:100CA000F475FFFFF475FFFF4064FFFF6064FFFF12 -:100CB000F475FFFF5864FFFF6864FFFFF475FFFFE2 -:100CC000C064FFFFC864FFFFC864FFFFC864FFFF84 -:100CD000C864FFFFC864FFFFC864FFFFC864FFFF6C -:100CE000C864FFFFC864FFFFF475FFFFF475FFFFE2 -:100CF000F475FFFFF475FFFFF475FFFFF475FFFF58 -:100D0000F475FFFF3C66FFFFF475FFFF5C65FFFFB6 -:100D10009065FFFF3C66FFFF3C66FFFF3C66FFFF00 -:100D2000F475FFFFF475FFFFF475FFFFF475FFFF27 -:100D3000FC64FFFFF475FFFFF475FFFFEC6FFFFF2E -:100D4000F475FFFFF475FFFFF475FFFFB870FFFF48 -:100D5000F475FFFF9C73FFFFF475FFFFF475FFFF51 -:100D60007463FFFFF475FFFFF475FFFFF475FFFF79 -:100D7000F475FFFFF475FFFFF475FFFFF475FFFFD7 -:100D8000F475FFFF3C66FFFFF475FFFF5C65FFFF36 -:100D90009465FFFF3C66FFFF3C66FFFF3C66FFFF7C -:100DA0000465FFFF9465FFFF4C65FFFFF475FFFFCF -:100DB0003065FFFFF475FFFF806FFFFFF06FFFFFEF -:100DC0008070FFFF4C65FFFFF475FFFFB870FFFFF9 -:100DD0003463FFFFA073FFFFF475FFFFF475FFFF9F -:100DE0000474FFFFF475FFFF3463FFFF2020202011 -:100DF00020202020202020202020202030303030B3 -:100E00003030303030303030303030303083FFFFF1 -:100E1000588BFFFF588BFFFF4483FFFF588BFFFF6A -:100E2000588BFFFF588BFFFFDC82FFFF588BFFFFC3 -:100E3000588BFFFF4C83FFFF6483FFFF588BFFFF3E -:100E40005C83FFFF6C83FFFF588BFFFFC083FFFFB6 -:100E5000C883FFFFC883FFFFC883FFFFC883FFFF6E -:100E6000C883FFFFC883FFFFC883FFFFC883FFFF5E -:100E7000C883FFFF588BFFFF588BFFFF588BFFFF86 -:100E8000588BFFFF588BFFFF588BFFFF588BFFFFDE -:100E9000588BFFFF588BFFFF3484FFFF5484FFFF04 -:100EA000588BFFFF588BFFFF588BFFFF588BFFFFBE -:100EB000588BFFFF588BFFFF588BFFFF588BFFFFAE -:100EC000588BFFFF588BFFFF4885FFFF588BFFFFB4 -:100ED000588BFFFF588BFFFF0486FFFF588BFFFFE7 -:100EE0000089FFFF588BFFFF588BFFFF8C82FFFFAD -:100EF000588BFFFF588BFFFF588BFFFF588BFFFF6E -:100F0000588BFFFF588BFFFF588BFFFF588BFFFF5D -:100F1000588BFFFF588BFFFF3484FFFF5884FFFF7F -:100F2000588BFFFF588BFFFF588BFFFFF483FFFFA9 -:100F30005884FFFF2484FFFF588BFFFF1484FFFFBA -:100F4000588BFFFFF884FFFF4C85FFFFD485FFFF20 -:100F50002484FFFF588BFFFF0486FFFF5882FFFFAA -:100F60000489FFFF588BFFFF588BFFFF6089FFFF4D -:100F7000588BFFFF5882FFFF2020202020202020B8 -:100F800020202020202020203030303030303030E1 -:100F900030303030303030300020202020202020F1 -:100FA0002020282828282820202020202020202019 -:100FB0002020202020202020208810101010101029 -:100FC0001010101010101010100404040404040475 -:100FD000040404101010101010104141414141410F -:100FE00001010101010101010101010101010101F1 -:100FF0000101010110101010101042424242424201 -:1010000002020202020202020202020202020202C0 -:101010000202020210101010200000000000000068 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:1010400000000000000000000000000000000000A0 -:101050000000000000000000000000000000000090 -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:101080000000000000000000000000000000000060 -:10109000000000000000000000000000E0A0FFFFD2 -:1010A00008A9FFFF08A9FFFFF4A0FFFF08A9FFFFA1 -:1010B00008A9FFFF08A9FFFF8CA0FFFF08A9FFFFF9 -:1010C00008A9FFFFFCA0FFFF14A1FFFF08A9FFFF75 -:1010D0000CA1FFFF1CA1FFFF08A9FFFF70A1FFFFEC -:1010E00078A1FFFF78A1FFFF78A1FFFF78A1FFFFA4 -:1010F00078A1FFFF78A1FFFF78A1FFFF78A1FFFF94 -:1011000078A1FFFF08A9FFFF08A9FFFF08A9FFFFBB -:1011100008A9FFFF08A9FFFF08A9FFFF08A9FFFF13 -:1011200008A9FFFF08A9FFFFE4A1FFFF04A2FFFF3A -:1011300008A9FFFF08A9FFFF08A9FFFF08A9FFFFF3 -:1011400008A9FFFF08A9FFFF08A9FFFF08A9FFFFE3 -:1011500008A9FFFF08A9FFFFF8A2FFFF08A9FFFFEA -:1011600008A9FFFF08A9FFFFB4A3FFFF08A9FFFF1D -:10117000B0A6FFFF08A9FFFF08A9FFFF3CA0FFFFE3 -:1011800008A9FFFF08A9FFFF08A9FFFF08A9FFFFA3 -:1011900008A9FFFF08A9FFFF08A9FFFF08A9FFFF93 -:1011A00008A9FFFF08A9FFFFE4A1FFFF08A2FFFFB6 -:1011B00008A9FFFF08A9FFFF08A9FFFFA4A1FFFFDF -:1011C00008A2FFFFD4A1FFFF08A9FFFFC4A1FFFFF2 -:1011D00008A9FFFFA8A2FFFFFCA2FFFF84A3FFFF57 -:1011E000D4A1FFFF08A9FFFFB4A3FFFF08A0FFFFE2 -:1011F000B4A6FFFF08A9FFFF08A9FFFF10A7FFFF84 -:1012000008A9FFFF08A0FFFF202020202020202089 -:10121000202020202020202030303030303030304E -:10122000303030303030303074BAFFFF88B9FFFFD3 -:1012300094B9FFFF88B9FFFF60BAFFFF88B9FFFFCD -:1012400094B9FFFF74BAFFFF74BAFFFF60BAFFFFE3 -:1012500094B9FFFF60B9FFFF60B9FFFF60B9FFFFFE -:101260009CB9FFFF1CBFFFFF1CBFFFFF40BFFFFF7C -:1012700010BFFFFF10BFFFFF00C0FFFF40BFFFFF19 -:1012800010BFFFFF00C0FFFF10BFFFFF40BFFFFF09 -:101290000CBFFFFF0CBFFFFF0CBFFFFF00C0FFFF35 -:1012A00034D1FFFF34D1FFFF30D1FFFFE4D0FFFF87 -:1012B000E4D0FFFFA4D3FFFF30D1FFFFE4D0FFFF56 -:1012C000A4D3FFFFE4D0FFFF30D1FFFFE0D0FFFF4A -:1012D000E0D0FFFFE0D0FFFFA4D3FFFF0001020238 -:1012E00003030303040404040404040405050505BE -:1012F000050505050505050505050505060606069A -:10130000060606060606060606060606060606067D -:101310000606060606060606060606060707070769 -:10132000070707070707070707070707070707074D -:10133000070707070707070707070707070707073D -:10134000070707070707070707070707070707072D -:101350000707070707070707070707070808080819 -:1013600008080808080808080808080808080808FD -:1013700008080808080808080808080808080808ED -:1013800008080808080808080808080808080808DD -:1013900008080808080808080808080808080808CD -:1013A00008080808080808080808080808080808BD -:1013B00008080808080808080808080808080808AD -:1013C000080808080808080808080808080808089D -:1013D00008080808080808080808080800000000AD -:1013E000000000000000F03F00000000000024406A -:1013F000000000000000504310000000000000004A -:10140000017A5200017C01011B0D02001000000056 -:1014100018000000BCEDFEFF080000000000000006 -:10142000100000002C000000B0EDFEFF08000000DE -:10143000000000001000000040000000A4EDFEFFCE -:101440000800000000000000100000005400000030 -:1014500098EDFEFF040000000000000010000000F6 -:101460006800000088EDFEFF08000000000000009A -:10147000100000007C0000007CEDFEFF0800000072 -:1014800000000000100000009000000070EDFEFF62 -:101490000C000000000000001C000000A400000080 -:1014A00068EDFEFF3800000000440E1048880281FD -:1014B0000160C144C8440E0024000000C4000000C4 -:1014C00080EDFEFF5000000000440E105092048199 -:1014D000018802890364C144C848C944D2440E004B -:1014E00018000000EC000000ACEDFEFF2C00000036 -:1014F00000480E1048810148C1500E001000000045 -:10150000080100008CEDFEFF040000000000000058 -:101510001000000000000000017A5200017C01016F -:101520001B0D020010000000180000006CA8FFFF57 -:101530003404000000000000100000000000000063 -:10154000017A5200017C01011B0D02001000000015 -:101550001800000078ACFFFF10040000000000003D -:10156000000000004C180180B41801801C19018093 -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B000000000000000000000000000000000002B -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000000000000000000000EB -:1016000000000000000000000100000000000000D9 -:101610000E33CDAB34126DE6ECDE05000B0000009E -:1016200000000000000000000000000000000000BA -:1016300000000000000000000000000000000000AA -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:10167000000000000000000000000000000000006A -:10168000000000000000000000000000000000005A -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B000000000000000000000000000000000002A -:1016C000000000000000000000000000000000001A -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:1017000000000000000000000000000000000000D9 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:101740000000000000000000000000000000000099 -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:101780000000000000000000000000000000000059 -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000000000000000000000000019 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000000000000000000000D8 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:101840000000000000000000000000000000000098 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000000000000058 -:101890000000000000000000000000000000000048 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C0000000000000000000000000000000000018 -:1018D0000000000000000000000000000000000008 -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:1019100000000000000000000000000000000000C7 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:101950000000000000000000000000000000000087 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000430000000000000014 -:101990000000000000000000000000000000000047 -:1019A00000000000000000004300000000000000F4 -:1019B0000000000000000000000000000000000027 -:1019C00000000000000000004300000000000000D4 -:1019D0000000000000000000000000000000000007 -:1019E00000000000000000004300000000000000B4 -:1019F00000000000000000000000000000000000E7 -:101A00000000000000000000430000000000000093 -:101A100000000000000000000000000000000000C6 -:101A20000000000000000000430000000000000073 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000430000000000000053 -:101A50000000000000000000000000000000000086 -:101A60000000000000000000249C00802459008039 -:101A700000000000980F0180540B018000070180D6 -:101A80000007018000070180000701800007018036 -:101A90000007018000070180000701800007018026 -:101AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000044 -:101AB00001004153434949000000000000000000BC -:101AC0000000000000000000000000000000000016 -:101AD000000041534349490000000000000000009D -:101AE00000000000000000000000000000000000F6 -:101AF000000000000000000000000000F41A018057 -:101B0000F41A0180FC1A0180FC1A0180041B018078 -:101B1000041B01800C1B01800C1B0180141B018025 -:101B2000141B01801C1B01801C1B0180241B0180D5 -:101B3000241B01802C1B01802C1B0180341B018085 -:101B4000341B01803C1B01803C1B0180441B018035 -:101B5000441B01804C1B01804C1B0180541B0180E5 -:101B6000541B01805C1B01805C1B0180641B018095 -:101B7000641B01806C1B01806C1B0180741B018045 -:101B8000741B01807C1B01807C1B0180841B0180F5 -:101B9000841B01808C1B01808C1B0180941B0180A5 -:101BA000941B01809C1B01809C1B0180A41B018055 -:101BB000A41B0180AC1B0180AC1B0180B41B018005 -:101BC000B41B0180BC1B0180BC1B0180C41B0180B5 -:101BD000C41B0180CC1B0180CC1B0180D41B018065 -:101BE000D41B0180DC1B0180DC1B0180E41B018015 -:101BF000E41B0180EC1B0180EC1B0180F41B0180C5 -:101C0000F41B0180FC1B0180FC1B0180041C018073 -:101C1000041C01800C1C01800C1C0180141C018020 -:101C2000141C01801C1C01801C1C0180241C0180D0 -:101C3000241C01802C1C01802C1C0180341C018080 -:101C4000341C01803C1C01803C1C0180441C018030 -:101C5000441C01804C1C01804C1C0180541C0180E0 -:101C6000541C01805C1C01805C1C0180641C018090 -:101C7000641C01806C1C01806C1C0180741C018040 -:101C8000741C01807C1C01807C1C0180841C0180F0 -:101C9000841C01808C1C01808C1C0180941C0180A0 -:101CA000941C01809C1C01809C1C0180A41C018050 -:101CB000A41C0180AC1C0180AC1C0180B41C018000 -:101CC000B41C0180BC1C0180BC1C0180C41C0180B0 -:101CD000C41C0180CC1C0180CC1C0180D41C018060 -:101CE000D41C0180DC1C0180DC1C0180E41C018010 -:101CF000E41C0180EC1C0180EC1C0180F41C0180C0 -:101D0000F41C0180FC1C0180FC1C0180041D01806E -:101D1000041D01800C1D01800C1D0180141D01801B -:101D2000141D01801C1D01801C1D0180241D0180CB -:101D3000241D01802C1D01802C1D0180341D01807B -:101D4000341D01803C1D01803C1D0180441D01802B -:101D5000441D01804C1D01804C1D0180541D0180DB -:101D6000541D01805C1D01805C1D0180641D01808B -:101D7000641D01806C1D01806C1D0180741D01803B -:101D8000741D01807C1D01807C1D0180841D0180EB -:101D9000841D01808C1D01808C1D0180941D01809B -:101DA000941D01809C1D01809C1D0180A41D01804B -:101DB000A41D0180AC1D0180AC1D0180B41D0180FB -:101DC000B41D0180BC1D0180BC1D0180C41D0180AB -:101DD000C41D0180CC1D0180CC1D0180D41D01805B -:101DE000D41D0180DC1D0180DC1D0180E41D01800B -:101DF000E41D0180EC1D0180EC1D0180F41D0180BB -:101E0000F41D0180FC1D0180FC1D0180041E018069 -:101E1000041E01800C1E01800C1E0180141E018016 -:101E2000141E01801C1E01801C1E0180241E0180C6 -:101E3000241E01802C1E01802C1E0180341E018076 -:101E4000341E01803C1E01803C1E0180441E018026 -:101E5000441E01804C1E01804C1E0180541E0180D6 -:101E6000541E01805C1E01805C1E0180641E018086 -:101E7000641E01806C1E01806C1E0180741E018036 -:101E8000741E01807C1E01807C1E0180841E0180E6 -:101E9000841E01808C1E01808C1E0180941E018096 -:101EA000941E01809C1E01809C1E0180A41E018046 -:101EB000A41E0180AC1E0180AC1E0180B41E0180F6 -:101EC000B41E0180BC1E0180BC1E0180C41E0180A6 -:101ED000C41E0180CC1E0180CC1E0180D41E018056 -:101EE000D41E0180DC1E0180DC1E0180E41E018006 -:101EF000E41E0180EC1E0180EC1E01806015018053 -:0C1F000060150180FFFFFFFF00000200E1 -:0400000580000090E7 -:00000001FF diff --git a/benchmarks/riscv_tests/machineCsrCompressed.hex b/benchmarks/riscv_tests/machineCsrCompressed.hex deleted file mode 100644 index e4d96b2f..00000000 --- a/benchmarks/riscv_tests/machineCsrCompressed.hex +++ /dev/null @@ -1,37 +0,0 @@ -:0200000480007A -:100000006F0000091300000013000000130000003F -:100010001300000013000000130000001300000094 -:10002000732E2034631E0E00130FC0FFF32E103406 -:10003000B3FEEE01938E4E0073901E346F00C0012C -:10004000B70E0080337FDE0163180F00F32E1034EB -:10005000938E4E0073901E34B70E0080938E3E0038 -:100060006396CE01930E800073B04E34B70E0080BD -:10007000938E7E006394CE0173504030B70E0080A3 -:10008000938EBE006394CE017350403073002030D5 -:10009000130E100073000000130E20009302800066 -:1000A00073A002309302800073904230930280006C -:1000B00073A042341300000013000000130000007E -:1000C00013000000130000001300000013000000E4 -:1000D00013000000130000001300000013000000D4 -:1000E00013000000130E300093020008739042309A -:1000F00013000000130000001300000013000000B4 -:10010000130000001300000013000000130E400055 -:10011000B7120000938202807390423013000000F7 -:100120001300000013000000130000001300000083 -:100130001300000013000000130E5000B70110F070 -:10014000938101F403A2010083A241001302F23F54 -:1001500023A4410023A65100130E600013020008DF -:1001600073104230130E700073005010130E800095 -:100170009301100023A04100130E90002390410032 -:10018000130EA00003A20100130EB00003920100A1 -:10019000130EC000130ED00083200000130EE000E9 -:1001A00073002020130EF000B70010F0938000F6CB -:1001B00003A10000130E000123A02000130E100164 -:0401C0006780000054 -:1001C4006780000013050000678000001000000035 -:1001D40000000000017A5200017C01011B0D0200A5 -:1001E4001000000018000000DCFFFFFF0800000002 -:1001F40000000000100000002C000000C4FFFFFFFE -:080204000400000000000000EE -:0400000580000090E7 -:00000001FF diff --git a/benchmarks/riscv_tests/mmu.hex b/benchmarks/riscv_tests/mmu.hex deleted file mode 100644 index 41403fe1..00000000 --- a/benchmarks/riscv_tests/mmu.hex +++ /dev/null @@ -1,4791 +0,0 @@ -:0200000480007A -:100000006F00000413000000130000001300000044 -:100010001300000013000000130000001300000094 -:10002000732E2034732E3034B74E0C00370F01F08E -:10003000930F40000FF00E000FF0EF03730020301D -:10004000130E10001303F0011303F3FF0F700302EC -:10005000E31C03FE130E200037020C00B70201F070 -:10006000130300000F7002000F70530237120C00D0 -:10007000B70201F0130310000F7002000F7053025B -:1000800037220C00B70202F0130320000F700200A9 -:100090000F70530237320C00B70202F01303300026 -:1000A0000F7002000F705302130E30003702001061 -:1000B000B70200C0370300C1B7030020370400C2F5 -:1000C000B70400C3370500C4371611111306161103 -:1000D000B726222293862622373733331307373346 -:1000E0002320C200032E020003AE0200032E0300F1 -:1000F00023A0D31003AE0310032E041003AE04108C -:10010000130E4000032E02002320E30003AE020082 -:10011000032E0200130E5000032E0500130E600084 -:10012000130E700037620C00B70200F01303F001E9 -:100130000F7002000F705302130000001300000044 -:10014000130000001300000013000000370200C677 -:1001500067000200130000001300000013000000FD -:08016000130000001300000071 -:100168001305000067800000130500006780000089 -:1001780013050000678000006FF09FFE1305000064 -:10018800678000001305000067800000B70710F0C3 -:1001980023A0A7F067800000130101FF232481003A -:1001A800232611001304050003450500630A050012 -:1001B80013041400EFF09FFD03450400E31A05FE45 -:1001C8008320C1000324810013010101678000001E -:1001D800130101FF2320210123261100232481007C -:1001E8002322910013090600630E060013840500FC -:1001F800B384C5000345040013041400EFF01FF98D -:10020800E39A84FE8320C1000324810013050900BA -:1002180083244100032901001301010167800000C4 -:100228006780000037150180130101FF1305C527FA -:1002380023261100EF00C0058320C100B70710F086 -:1002480023A007F2130500001301010167800000D5 -:10025800130101FC2324C1022326D1022328E10231 -:10026800232AF102232C0103232E110313860500F0 -:100278008325850093068102232E11002326D100B1 -:10028800EF0040068320C1011301010467800000CC -:10029800130101FC2324C1022326D102232AF102DF -:1002A8002322B1022328E102232C0103232E110368 -:1002B800973701009387078583A7070093064102B4 -:1002C8001306050083A5870013850700232E110058 -:1002D8002326D100EF0000018320C101130101048E -:1002E80067800000130101E32326111C2322911CBF -:1002F8002320211D232E311B2320A11B1389050038 -:1003080093040600138D06002324811C232C411B13 -:10031800232A511B2328611B2326711B2324811B9D -:100328002322911B232EB11993090500EF40104792 -:1003380083270500138507002324F102EF60503757 -:10034800232AA1002328010C232A010C232C010CA9 -:10035800232E010C638A090083A78903639607008B -:1003680013850900EF2080518317C90013972701CF -:1003780063420702B726000003274906B3E7D70000 -:100388002316F900B7E7FFFF9387F7FFB377F70066 -:100398002322F9068357C90093F78700638E07065F -:1003A80083270901638A07068357C9001307A0003A -:1003B80093F7A7016390E7088317E90063CC070662 -:1003C80093060D00138604009305090013850900A0 -:1003D800EF10906F232CA1008320C11C0324811CE3 -:1003E800032581018324411C0329011C8329C11B86 -:1003F800032A811B832A411B032B011B832BC11A50 -:10040800032C811A832C411A032D011A832DC1193B -:100418001301011D67800000930509001385090079 -:10042800EF105076E30205F89307F0FF232CF10054 -:100438006FF09FFA9307C10E2322F10C2326010CBB -:100448002324010C130A0000138B0700232A01023E -:10045800232801022324010023220102232601026A -:10046800232C01001384040013075002834704005F -:10047800638407006392E70CB30A9440638A0A0412 -:100488008327C10C23209B0023225B01B3875701DC -:100498002326F10C8327810C13077000130B8B00A4 -:1004A800938717002324F10C635EF7001306410CB1 -:1004B8009305090013850900EF80101F631A05765C -:1004C800130BC10E83278101B3875701232CF10039 -:1004D80083470400639407006F10505B9307140070 -:1004E8002328F100A303010A930CF0FF232E010037 -:1004F80013040000930B9000130CA0028327010142 -:1005080083CA0700938717002328F10093870AFE00 -:100518001307A0056374F7006F10C02417170100B4 -:10052800130747D693972700B387E70083A70700E9 -:10053800B387E70067800700130414006FF01FF308 -:1005480097170100938707EF232AF1029377040294 -:10055800639407006F104003130D7D00137D8DFF1A -:1005680093078D00832D0D00032D4D002326F100E8 -:1005780093771400638E0700B3E7AD01638A070021 -:10058800930700032304F10AA304510B1364240006 -:100598001374F4BF930720006F00106913850900D6 -:1005A800EF40D01F83274500138507002326F1025B -:1005B800EF6010102322A10213850900EF40101EDE -:1005C800832785002324F10083274102E38807F26B -:1005D80083278100E38407F283C70700E38007F2DB -:1005E800136404406FF09FF18347710AE39807F0A2 -:1005F80093070002A303F10A6FF05FF0136414007D -:100608006FF0DFEF83270D00130D4D00232EF1004F -:10061800E3D607EEB307F040232EF100136444003D -:100628006FF0DFED9307B0026FF0DFFC8327010165 -:1006380083CA0700938D170063988A05832C0D00E1 -:1006480093074D0063D40C00930CF0FF138D070043 -:100658002328B1016FF09FEA13850C009305A000D1 -:100668002322F100EF00417C83274100938D1D0078 -:1006780083CAFDFFB30CF50093870AFDE3FEFBFC7C -:100688002328B1016FF09FE8930C00006FF0DFFEA4 -:10069800136404086FF09FE6832D0101232E0100E7 -:1006A8000325C1019305A000938A0AFDEF00C177D5 -:1006B800938D1D00B387AA0083CAFDFF232EF10086 -:1006C80093870AFDE3FEFBFC6FF09FFB1364840035 -:1006D8006FF0DFE28327010103C707009307800655 -:1006E800631CF70083270101136404209387170014 -:1006F8002328F1006FF09FE0136404046FF01FE0FB -:100708008327010103C707009307C006631CF7008E -:1007180083270101938717002328F100136404023B -:100728006FF0DFDD136404016FF05FDD93074D00A8 -:100738002326F10083270D00A303010A2306F112E3 -:1007480023220100930C1000930D0000130C0000ED -:10075800930B0000130D00009304C1122320B10372 -:1007680063D49D01232091030347710A630807009E -:1007780083270102938717002320F102937724002F -:10078800232CF1026388070083270102938727003F -:100798002320F10293774408232EF102639C070675 -:1007A8008327C101032701023387E7406354E0062A -:1007B800930E0001171E0100130E8EC3130F700055 -:1007C8008326810C2320CB010326C10C93861600B7 -:1007D80093058B0063D4EE006F00107A2322EB00A0 -:1007E8003307C7002326E10C2324D10C130770001C -:1007F800138B05006350D7021306410C93050900BB -:1008080013850900EF80406A630405006F10D0214A -:10081800130BC10E0347710A630A07041307710A11 -:100828002320EB00130710002322EB000327C10C41 -:1008380093067000130B8B00130717002326E10C97 -:100848000327810C130717002324E10C63D0E60269 -:100858001306410C9305090013850900EF80C06455 -:10086800630405006F10501C130BC10E832781030E -:10087800638A07041307810A2320EB00130720006B -:100888002322EB000327C10C93067000130B8B0087 -:10089800130727002326E10C0327810C13071700F1 -:1008A8002324E10C63D0E6021306410C93050900EA -:1008B80013850900EF80405F630405006F10D016B0 -:1008C800130BC10E8327C10313070008639AE706B9 -:1008D8008327C10103270102B387E7406352F0066B -:1008E800930E0001171E0100130E8EB1130F700036 -:1008F8008326810C2320CB010327C10C9386160085 -:1009080013068B00E3C6FE6C3387E7002322FB0047 -:100918002326E10C2324D10C13077000130B0600C7 -:100928006350D7021306410C93050900138509008B -:10093800EF808057630405006F10100F130BC10E72 -:10094800B38D9D416352B007130E000117180100C3 -:10095800130808AB930E70000327810C23200B01AA -:100968008326C10C1307170013068B00E34EBE6BDA -:100978002322BB01B38DDD002326B10D2324E10C16 -:1009880093067000130B060063D0E6021306410CB1 -:100998009305090013850900EF80005163040500E1 -:1009A8006F109008130BC10E13770410832DC10C20 -:1009B800E314076C8327810C3383BC0123209B003D -:1009C8009387170023229B012326610C2324F10C13 -:1009D80013077000130B8B006344F7006F10801629 -:1009E8001306410C9305090013850900EF80C04BDD -:1009F800630405006F105003130BC10E6F108014B1 -:100A08001364040193770402638E0704130D7D00B9 -:100A1800137D8DFF93078D00832D0D00032D4D0051 -:100A28002326F100635E0D00B30DB041B337B0016A -:100A3800330DA041330DFD409307D002A303F10A03 -:100A48009307F0FFE390FC38E3120D409307900002 -:100A5800E3EEB73F938D0D03A307B1199304F11883 -:100A68006F00503C93074D002326F1009377040153 -:100A780063880700832D0D0013DDFD416FF09FFA99 -:100A880093770404832D0D0063880700939D0D015F -:100A980093DD0D416FF05FFE93770420E38E07FC32 -:100AA800939D8D0193DD8D416FF01FFD9377840039 -:100AB800638C070A93074D002326F10083270D0056 -:100AC80003A6070083A6470003A7870083A7C700DC -:100AD8002328C10C232AD10C232CE10C1305010D6A -:100AE800232EF10CEF40C0442326A10A93072000CF -:100AF800631CF50A8327010D9305010813050109F5 -:100B08002328F1088327410D232001082322010807 -:100B1800232AF1088327810D2324010823260108AD -:100B2800232CF1088327C10D232EF108EFC0D07ABA -:100B3800635605009307D002A303F10A93077004D4 -:100B4800971401009384048D63C65701971401001C -:100B58009384048C1374F4F723220100930C30005F -:100B6800930D00006F00102D130D7D00137D8DFF78 -:100B780083250D0003264D0093078D0013050109F9 -:100B88002326F100EFF0D04F832701092328F10C29 -:100B980083274109232AF10C83278109232CF10C8F -:100BA8008327C1096FF09FF3930710006318F502BC -:100BB8008327C10D63D607009307D002A303F10A68 -:100BC800930770049714010093844485E3C457F98C -:100BD80097140100938444846FF0DFF793FBFAFDC8 -:100BE80093071004639EFB04930700032304F10A90 -:100BF80013071006930780056394EA00930780079C -:100C0800A304F10A930730061364240063D6974BB4 -:100C180093851C0013850900EF40006493040500C8 -:100C28006312054A8357C90093E707042316F9009E -:100C38008357C90093F70704638007FA6FF0CFFE64 -:100C48009307F0FF6384FC48930770042322010094 -:100C58006394FB0063820C48032AC10D9367041058 -:100C68002320F102232C0102832E010D032E410DB6 -:100C7800832D810D635A0A00B707008033CA4701E4 -:100C88009307D002232CF10293071004639AFB48C0 -:100C9800130501092328D109232AC109232CB109E5 -:100CA800232E4109EFF0D0621306C10AEF50105A03 -:100CB800138605009305050013050109EFF0503C64 -:100CC8008327010913060106930501072328F10666 -:100CD800832741091305010823200106232AF10669 -:100CE800832781092322010623240106232CF106E8 -:100CF8008327C109232EF106B707FC3F2326F106F7 -:100D0800EFC0907303280108032641088326810851 -:100D1800832DC1089305010813050109232801093A -:100D280023220105232AC1082320C104232CD1082A -:100D3800232ED102232EB1092320010823220108E2 -:100D48002324010823260108EFC050368326C10357 -:100D58000326010403284104631605001307100045 -:100D68002326E10A13071006170C0100130C8C6CDC -:100D78006396EA00170C0100130C8C6A138EFCFFB3 -:100D8800138D0400B7070340930501082322C10807 -:100D980013050109130601072324C10523200109AE -:100DA8002324D1082326B109232EF106232801067E -:100DB800232A0106232C0106EFC010680326010927 -:100DC8008326410983278109130501092322C104C8 -:100DD8002320D104232EF102EFF0407C9305050077 -:100DE800130A050013050109832DC109EFF05011FD -:100DF8008327C1030326410483260104232CF1061B -:100E0800832701092328C106930501072320F1063A -:100E18008327410913060106130501082322F10659 -:100E280083278109232EB107232AD1062324F1061B -:100E38008327C109130D1D002326F106EFE0C02505 -:100E4800B3054C0183C50500032E8104832EC10818 -:100E580083220108832F4108032F8108232EC10311 -:100E6800A30FBDFE9307F0FF938D0E00630CFE06E3 -:100E7800130EFEFF9305010813050109232ED10562 -:100E8800232CE105232AF105232851042326C10533 -:100E98002328510823245104232AF1092322F10588 -:100EA800232CE1092320E105232ED1092320010861 -:100EB800232201082324010823260108EFC0101F5C -:100EC800832601040326410403288104032EC10458 -:100ED80083220105832F4105032F8105832EC10538 -:100EE800E31205EAB70DFE3F930501081305010952 -:100EF8002328510823265104232AF1092324F10524 -:100F0800232CE1092322E105232ED1092320D10531 -:100F18002320010823220108232401082326B109DC -:100F2800EFC090256346A0048322C104832F810467 -:100F3800032F4104832E01049305010813050109B9 -:100F480023285108232AF109232CE109232ED1094A -:100F58002320010823220108232401082326B1099C -:100F6800EFC0D0146314051A137A1A0063000A1A22 -:100F78000346FC00232EA10B930500038326C10B17 -:100F88009387F6FF232EF10A83C7F6FF638CC714F5 -:100F980013069003639CC7148347AC00A38FF6FE27 -:100FA800130A0D0013077004330A9A40032DC10A6F -:100FB8006396EB2A1307D0FF6344ED0063D2AC338A -:100FC800938AEAFF930BFDFF2326710B93F6FAFD34 -:100FD8009305100413F7FA0F130600006398B60080 -:100FE8001307F7001377F70F13061000230AE10A17 -:100FF8009307B00263D80B00930B1000B38BAB417F -:101008009307D002A30AF10A9307900063DC7729BB -:10101800130C310C930D0C00930C90009305A00059 -:1010280013850B00EFF0D06A13050503A30FACFE80 -:101038009305A00013850B00EFF05061130DFCFF22 -:10104800930B050063C2AC24930B0503130CECFF50 -:10105800A30F7DFF9307610B636CBC231307410B40 -:10106800B387E7402328F102B38C470193071000A8 -:1010780063C64701937714006386070083274101FD -:10108800B38CFC001374F4BF936704102320F1029F -:10109800130C0000930B0000130D0000832781033D -:1010A800638607001307D002A303E10A03240102A1 -:1010B800930D00006FF08FEA232201009304C11200 -:1010C8006FF09FB92322A1006FF01FB923220100FE -:1010D800930C60006FF05FB823229101930C10000D -:1010E8006FF09FB7A38FB6FE6FF05FE99387170085 -:1010F80093F7F70F6FF09FEA130A1A00A30FEAFE9F -:10110800B3074D41E3DA07FE6FF0DFE98327C10338 -:10111800130A0D0013070003330DFD006FF05FFE87 -:1011280093076004638EFB0093075004138C1C0024 -:101138006384FB00138C0C00130620006F00C000B2 -:10114800138C0C00130630009307010B1308C10B16 -:101158001307C10A93060C009305010913850900BA -:101168002328D1092320D105232AC109232EC1030D -:10117800232CB109232E4109EF304017930770043F -:1011880093040500032EC103832E01046396FB001C -:10119800937714006384070A93076004338D8401EE -:1011A8006392FB0603C70400930700036318F70460 -:1011B80093050108130501092328D1092320D10526 -:1011C800232AC109232EC103232CB109232E410947 -:1011D80023200108232201082324010823260108CB -:1011E800EFC0C06C032EC103832E01046308050001 -:1011F80093071000338C87412326810B8327C10A6C -:10120800330DFD0093050108130501092328D109B1 -:10121800232AC109232CB109232E410923200108BF -:10122800232201082324010823260108EFC00068AF -:1012380013070003631E0500232EA10B032AC10B0D -:101248006FF05FD693861700232ED10A2380E7001C -:101258008327C10BE3E8A7FF6FF05FFE1307600465 -:10126800E392EBD66352A00763960C001377140041 -:101278006302070C832741013307FD00B38CEC00A0 -:10128800930A60066F004009130C0D006FF01FD918 -:10129800130C1C000347FCFF93871700A38FE7FE7E -:1012A8006FF09FDB1307610B6318060093070003B9 -:1012B800230BF10A1307710B938B0B03930717008A -:1012C800230077016FF09FD963960C001377140001 -:1012D8006306070683274101138717006FF01FFA7B -:1012E80063404D0313771400930C0D006306070049 -:1012F80083274101B30CFD00930A70066F00C001FB -:1013080083274101930A7006B30CFA006346A001D3 -:101318003383AC41930C1300937B0440130C0000FF -:10132800E38E0BD6930B0000E35AA0D79306F00F79 -:101338006F008003930C0D006FF09FF4930A600612 -:10134800930C10006FF05FFD6356A703832781009D -:10135800330DED4003C71700630807029387170092 -:10136800938B1B002324F1008327810003C7070008 -:10137800E31CD7FC8325410233858B01EFF0D02A8B -:10138800B30C95016FF09FD1130C1C006FF0DFFDBB -:1013980013074D002326E1001377040283270D006D -:1013A800630007020327810123A0E7001357F741D1 -:1013B80023A2E700032DC100832401016FF08F8A67 -:1013C80013770401630807000327810123A0E700BE -:1013D8006FF05FFE13770404630807000357810169 -:1013E8002390E7006FF01FFD13740420E30E04FC44 -:1013F800034781012380E7006FF0DFFB13640401DA -:101408009377040263880704130D7D00137D8DFF15 -:1014180093078D00832D0D00032D4D002326F10029 -:101428001374F4BF93070000A303010A1307F0FF26 -:101438006380EC1A13070400B3E6AD011374F4F7E4 -:101448006398061863820C30130710006396E71838 -:101458006FF04FE093074D002326F10093770401C6 -:1014680063860700832D0D006F0000019377040445 -:1014780063880700835D0D00130D00006FF05FFAAD -:1014880093770420E38007FE834D0D006FF0DFFEA5 -:1014980093074D002326F100B787FFFF93C7078303 -:1014A8002314F10A97070100938787F7832D0D000E -:1014B800232AF102130D000013642400930720006F -:1014C800930A80076FF05FF693074D002326F1001B -:1014D800A303010A9307F0FF83240D006384FC0231 -:1014E80013860C009305000013850400EF40404963 -:1014F8002322A100630605E6B30C954023220100D0 -:101508006FF00FE613850400EF50901A930C050056 -:101518006FF0DFFE1364040193770402638207020D -:10152800130D7D00137D8DFF93078D00832D0D0016 -:10153800032D4D002326F100930710006FF0DFEE16 -:1015480093074D002326F100937704016386070073 -:10155800832D0D006F000001937704046388070052 -:10156800835D0D00130D00006FF01FFD93770420BD -:10157800E38007FE834D0D006FF0DFFE9707010043 -:10158800938707EA6FE05FFC93074D002326F1007D -:101598009377040163860700832D0D006F00000117 -:1015A8009377040463880700835D0D00130D000022 -:1015B8006FE01FFC93770420E38007FE834D0D0046 -:1015C8006FF0DFFE13070400930710006FF0DFE6EB -:1015D80013071000638AE7C613072000638AE7121F -:1015E800930701199316DD0113F77D0093DD3D0084 -:1015F80013070703B3EDB601135D3D00A38FE7FEA4 -:10160800B3E6AD019384F7FF639E06029376140058 -:10161800638A0600930600036306D700A38FD4FEEF -:101628009384E7FF93070119938D0C00232201008F -:10163800B38C9740130C0000930B0000130D0000AF -:101648006FF0CF91938704006FF0DFF913770440B0 -:10165800130A0000930701192322E100930BF00FEE -:10166800130C90001306A0009306000013850D00CC -:1016780093050D009384F7FF2320F102EFA0106378 -:101688008327010213050503130A1A00A38FA7FE77 -:1016980083274100638807048327810083C70700E5 -:1016A8006312FA0463007A0563140D00637CBC03BB -:1016B800832741028325C102130A0000B384F44042 -:1016C8001386070013850400EF505000832781001C -:1016D80083C7170063880700832781009387170053 -:1016E8002324F10013850D0093050D001306A000B7 -:1016F80093060000EFA0C07D138D0500B3E5A5009B -:10170800930D0500E38005F2938704006FF09FF5C1 -:10171800930401190327410393F7FD009384F4FF11 -:10172800B307F70083C7070093DD4D002380F4005B -:101738009317CD01B3EDB701135D4D00B3E7AD01CC -:10174800E39A07FC6FF01FEE93040119E39C07EC82 -:1017580013771700E30807EC93070003A307F118B2 -:101768006FF0CFAFE3840A3223065113A303010AB3 -:101778002326A1016FE0DFFC130606012322DB010B -:101788002326C10C2324D10C635EDF021306410C0F -:1017980093050900138509002326E1052324C105C3 -:1017A8002322D1052320E104EF700070E31E0526F3 -:1017B800032FC104032E8104832E4104032701044F -:1017C8009305C10E130707FF138B05006FE05FFF3A -:1017D800130707012322DB012326E10C2324D10C64 -:1017E800635EDF021306410C9305090013850900A7 -:1017F8002322E1052320C105232ED103232CF10246 -:10180800EF70806AE3120522032F4104032E0104BE -:10181800832EC103832781031306C10E938707FF15 -:10182800130B06006FF0CF8C938606012322CB01A1 -:101838002326D10C2324E10C63DAEE021306410CB3 -:1018480093050900138509002320D105232E0103E0 -:10185800232CC103EF704065E318051C832E010497 -:101868000328C103032E81031306C10E938D0DFFB8 -:10187800130B06006FF04F8E13075006635257750F -:101888000327010D93050108130501092328E10821 -:101898000327410D2320010823220108232AE108F8 -:1018A8000327810D2324010823260108232CE1089E -:1018B8000327C10D232EE108EFB0507F631C0512EA -:1018C80097070100938747B82320FB009307100070 -:1018D8002322FB008327810C938D1D002326B10D45 -:1018E800938717002324F10C13077000130B8B0048 -:1018F800635EF7001306410C930509001385090080 -:10190800EF70805AE3120512130BC10E8327C10A28 -:1019180063C64701937714006386072283278102F1 -:1019280003274101130B8B00232CFBFE8327410166 -:10193800232EFBFE8327C10CB387E7002326F10C77 -:101948008327810C13077000938717002324F10C59 -:10195800635EF7001306410C93050900138509001F -:10196800EF708054E312050C130BC10E9304FAFFB9 -:10197800635A901C930B0001970A0100938A4AA8A6 -:10198800130C70008327810C23205B010327C10CF3 -:101998009387170093068B0063C29B0223229B0048 -:1019A800B384E4002326910C2324F10C1307700060 -:1019B800138B06006358F7186FF08F82130707011F -:1019C80023227B012326E10C2324F10C635EFC0017 -:1019D8001306410C9305090013850900EF70C04CEC -:1019E800E31405049306C10E938404FF138B0600C9 -:1019F8006FF05FF90327C10A634CE01C97070100E9 -:101A0800938787A42320FB00930710002322FB0061 -:101A18008327810C938D1D002326B10D9387170012 -:101A28002324F10C13077000130B8B00635EF7007F -:101A38001306410C9305090013850900EF70C04691 -:101A48006314057E130BC10E8327C10A6398070030 -:101A580063160A00937714006386070E83278102B2 -:101A68000327410193088B002320FB0083274101B2 -:101A78002322FB008327C10CB387E7002326F10C40 -:101A88008327810C13077000938717002324F10C18 -:101A9800635EF7001306410C9305090013850900DE -:101AA800EF708040631205789308C10E832AC10A3B -:101AB80063D20A06B30A504113870800130C0001C9 -:101AC800970B0100938BCB93930D70008327810CA8 -:101AD800232077018326C10C9387170093888800F9 -:101AE800634C5C0B23225701B38ADA002326510D7D -:101AF8002324F10C13077000635EF7001306410CF2 -:101B08009305090013850900EF70003A631E0570FC -:101B18009308C10E8327C10C23A0980023A2480173 -:101B2800B38747012326F10C8327810C1307700024 -:101B3800138B8800938717002324F10C6354F70054 -:101B48006FE01FEA1374440063100468832AC1011C -:101B58008327010263D4FA00938A0700832781014F -:101B6800B3875701232CF1008327C10C638C07002E -:101B78001306410C9305090013850900EF70C03264 -:101B88006314056A832741002324010C6398076EB8 -:101B9800130BC10E6FF01F82938606012322870163 -:101BA8002326D10C2324F10C63DEFD001306410C1F -:101BB8009305090013850900EF70002F6316056669 -:101BC8009308C10E938A0AFF138708006FF01FF06D -:101BD800930A0D006354AA01930A0A006352500540 -:101BE8000327810CB38DBA0123209B00130717002C -:101BF80023225B012326B10D2324E10C93067000F8 -:101C0800130B8B0063DEE6001306410C93050900F5 -:101C180013850900EF70402963180560130BC10E86 -:101C280063D40A00930A0000B30A5D416350500769 -:101C3800930C000197FD0000938D8D7C13037000B9 -:101C48000327810C2320BB018326C10C130717002F -:101C580013068B0063C25C1B23225B01B38ADA0084 -:101C68002326510D2324E10C93067000130B060064 -:101C780063DEE6001306410C93050900138509008D -:101C8800EF7080226312055A130BC10E937704403C -:101C9800B38AA40163840702930D7000338D440155 -:101CA80097FC0000938CCC7563980B1863180C187C -:101CB800B387440163F45701938A07008327C10A55 -:101CC80063C6470193771400638A07048327810258 -:101CD80003274101130B8B00232CFBFE83274101B3 -:101CE800232EFBFE8327C10CB387E7002326F10CC4 -:101CF8008327810C13077000938717002324F10CA6 -:101D0800635EF7001306410C93050900138509006B -:101D1800EF708019631A0550130BC10EB384440188 -:101D2800B38754418324C10AB3049A4063D497000B -:101D380093840700635490048327C10C23205B011C -:101D480023229B00B387F4002326F10C8327810C00 -:101D580013077000130B8B00938717002324F10CD3 -:101D6800635EF7001306410C93050900138509000B -:101D7800EF708013631A054A130BC10E9387040092 -:101D880063D40400930700008324C10AB3049A4073 -:101D9800B384F440E35890DA930B000197FA0000FB -:101DA800938A0A66130C70008327810C23205B0139 -:101DB8000327C10C9387170093068B00E3D09BBEC3 -:101DC8001307070123227B012326E10C2324F10CAE -:101DD800635EFC001306410C930509001385090096 -:101DE800EF70800C631205449306C10E938404FFC0 -:101DF800138B06006FF05FFB9386060123229B017D -:101E08002326D10C2324E10C6352E3021306410C70 -:101E18009305090013850900232C6102EF70C0089F -:101E280063140540032381031306C10E938A0AFF36 -:101E3800130B06006FF0DFE063020C0E130CFCFFBF -:101E48008327C10203274102130B8B00232CFBFEBF -:101E580083274102232EFBFE8327C10CB387E700AB -:101E68002326F10C8327810C938717002324F10C78 -:101E780063DEFD001306410C930509001385090074 -:101E8800EF7080026312053A130BC10E832781009D -:101E980033075D4183C707006354F70093070700C2 -:101EA8006356F0040327C10C23205B012322FB00A7 -:101EB8003387E7002326E10C0327810C130B8B00E3 -:101EC800130717002324E10C63D2ED021306410C1B -:101ED8009305090013850900232CF102EF60D07CDB -:101EE8006314053483278103130BC10E138707007E -:101EF80063D407001307000083278100130800013B -:101F080083C70700B387E7406346F006832781004D -:101F180083C70700B38AFA006FF01FD983278100AF -:101F2800938BFBFF9387F7FF2324F1006FF05FF19A -:101F38009386060123220B012326D10C2324E10CCE -:101F480063D6ED021306410C9305090013850900B9 -:101F5800232E0103232CF102EF6010756316052C64 -:101F68000328C103832781031306C10E938707FF44 -:101F7800130B06000327810C23209B018326C10C29 -:101F88001307170013068B00E344F8FA2322FB001B -:101F9800B387D7002326F10C2324E10C130B06008A -:101FA800E3D6EDF61306410C9305090013850900E5 -:101FB800EF60906F631A0526130BC10E6FF01FF5C3 -:101FC8008327810C1307100023209B00938D1D008D -:101FD80093871700930B8B00634647019376140091 -:101FE8006388061C130710002322EB002326B10D7B -:101FF8002324F10C13077000635EF7001306410CED -:102008009305090013850900EF60106A631E052017 -:10201800930BC10E8327810203274101938B8B0009 -:1020280023ACFBFE8327410123AEFBFE8327C10CB3 -:10203800B387E7002326F10C8327810C1307700070 -:10204800938717002324F10C635EF7001306410CF5 -:102058009305090013850900EF6010656316051CD8 -:10206800930BC10E8327010D930501081305010980 -:102078002328F1088327410D930AFAFF232001083A -:10208800232AF1088327810D23220108232401082C -:10209800232CF1088327C10D23260108232EF108DC -:1020A800EFB0D000630605088327C10C0327810C15 -:1020B800938414009387F7FFB3874701130717002A -:1020C80023A09B0023A25B012326F10C2324E10C0F -:1020D80093077000938B8B0063DEE7001306410CB7 -:1020E8009305090013850900EF60105C631E051253 -:1020F800930BC10E9307410B23A0FB008327010319 -:1021080003270103138B8B0023A2FB008327C10C39 -:10211800B387E7002326F10C8327810C130770008F -:10212800938717002324F10CE35EF7A06FE05F8B21 -:10213800E35250FD130C000197F400009384442CE3 -:10214800930D70000327810C23A09B008327C10CEB -:102158001307170093868B0063405C03B387FA006C -:1021680023A25B012326F10C2324E10C93077000C2 -:10217800938B06006FF05FF69387070123A28B010C -:102188002326F10C2324E10C63DEED001306410C39 -:102198009305090013850900EF60105163160508BF -:1021A8009306C10E938A0AFF938B06006FF09FF97E -:1021B8002322EB002326B10D2324F10C1307700012 -:1021C800E35AF7F26FF09FF18327C1010327010259 -:1021D8003384E740E35C8096930A000197F400009B -:1021E80093840421930B70008327810C23209B0088 -:1021F8000327C10C9387170063C68A0423228B0028 -:102208003304E4002326810C2324F10C1307700007 -:10221800E35EF7921306410C930509001385090044 -:10222800EF609048E3040592832741006394070018 -:102238006FE01FA09385070013850900EF00D011F8 -:102248006FE01F9F1307070123225B012326E10C80 -:102258002324F10C130B8B0063DEFB001306410CE7 -:102268009305090013850900EF601044E31E05FA81 -:10227800130BC10E130404FF6FF01FF783254100F1 -:1022880013850900EF00500D6FF09F908327C10C54 -:10229800639407006FE0DF991306410C930509006A -:1022A80013850900EF6050406FE09F989717010071 -:1022B8009387478593060600138605009305050056 -:1022C80003A507006FE00F8283D7C500130101B88B -:1022D800232C814693F7D7FF231AF10083A74506DD -:1022E80013840500232A91462326F10683D7E500A7 -:1022F80023282147232E1146231BF10083A7C5015C -:1023080013090500232001022322F10283A74502B5 -:10231800930581002326F102930701072324F10086 -:10232800232CF100930700402328F100232EF1000D -:10233800EFD05FFB93040500634C05009305810013 -:1023480013050900EF004038630405009304F0FF0B -:102358008357410193F70704638807008357C40034 -:1023680093E707042316F4008320C1470324814719 -:1023780013850400032901478324414713010148B9 -:1023880067800000130101FF970701009387877793 -:10239800232291009304050003A50700232481004C -:1023A800232611001384050063080500832785038D -:1023B80063940700EF00804C0317C40093170701CC -:1023C80093D7070193F68700639E060693F60701E5 -:1023D800639606029307900023A0F400136707048E -:1023E8002316E4001305F0FF8320C10003248100B5 -:1023F80083244100130101016780000093F747001F -:10240800638C070283250403638C05009307040487 -:102418006386F50013850400EF0000742328040286 -:102428008357C4002322040093F7B7FD2316F40052 -:10243800832704012320F4008357C40093E787000F -:102448002316F40083270401639007028357C4000E -:102458001307002093F707286388E7009305040013 -:1024680013850400EF2050508357C40013F717005A -:10247800630C07028327440123240400B307F040B8 -:10248800232CF4008327040113050000E39E07F4BE -:102498008317C40013F70708E30807F493E7070452 -:1024A8002316F4006FF01FF493F7270013070000BA -:1024B80063940700032744012324E4006FF09FFC82 -:1024C8008397C500130101FE232C81001397070190 -:1024D80013570701232A9100232E110023282101D5 -:1024E80023263101937687009304050013840500A1 -:1024F800639C06163717000013070780B3E7E70049 -:1025080003A745002396F5006346E00203A7C50329 -:102518006342E002130500008320C1010324810106 -:1025280083244101032901018329C1001301010208 -:102538006780000003278402E30E07FC03A9040058 -:102548009396370123A004008325C40163D8060CA1 -:10255800032604058357C40093F74700638E0700DA -:10256800832744003306F640832704036386070065 -:102578008327C4033306F640832784028325C401D6 -:102588009306000013850400E78007009307F0FF17 -:102598008356C4006312F50283A704001307D00111 -:1025A800636CF70A37074020130717003357F70003 -:1025B800137717006302070AB7F7FFFF9387F77FC0 -:1025C80003270401B3F7D7009397070193D707416F -:1025D8002320E4002316F400232204001397370174 -:1025E800635C07009307F0FF6316F50083A70400F8 -:1025F800639407002328A4048325040323A024014B -:10260800E38A05F0930704046386F5001385040044 -:10261800EF008054232804026FF0DFEF1306000058 -:102628009306100013850400E70007009307F0FFE6 -:1026380013060500E310F5F283A70400E38C07F006 -:102648001307D0016386E700130760016392E7066A -:1026580023A024016FF01FEC93E706042316F4006F -:102668001305F0FF6FF05FEB83A90501E38409EA26 -:1026780003A905001377370023A035013309394131 -:10268800930700006314070083A745012324F4007F -:10269800E35220E9832744028325C40193060900F5 -:1026A8001386090013850400E78007006348A0002B -:1026B8008357C40093E707046FF05FFAB389A90052 -:1026C8003309A9406FF0DFFC130101FE232C8100C0 -:1026D800232E110013040500630C050083278503CE -:1026E800639807002326B100EF0040198325C10035 -:1026F8008397C500638C0700130504000324810138 -:102708008320C101130101026FF09FDB8320C10107 -:1027180003248101130500001301010267800000F2 -:1027280093050500631E0500970701009387473D41 -:1027380003A5070097050000938545F96F0080738E -:10274800970701009387073C03A507006FF0DFF7A1 -:102758001305000067800000977500009385857653 -:102768006F004071130101FF23248100232611000B -:10277800130405002316B5002317C5002320050000 -:10278800232205002324050023220506232805000B -:10279800232A0500232C050013068000930500005A -:1027A8001305C505EF30002097470000938747437E -:1027B8002320F40297470000938707482322F40256 -:1027C800974700009387874F2324F4029747000018 -:1027D80093874754232E84002326F4028320C100C4 -:1027E8000324810013010101678000001305000024 -:1027F80067800000130101FF2320210113890500D0 -:102808002324810093058006130405001305F9FFAE -:102818002326110023229100EFE00061930545076C -:102828009304050013050400EF201023130405008A -:102838006300050223200500232225011305C50096 -:102848002324A4001386840693050000EF30801526 -:10285800130504008320C100032481008324410060 -:102868000329010013010101678000009707010097 -:102878009387072903A507006FF01FEE83278503B9 -:10288800639E0706130101FF2326110023248100FC -:1028980097070000938787EC232EF50293073000F3 -:1028A8002322F52E9307C52E130405002324F52EA5 -:1028B8002320052E0325450013060000930540003C -:1028C800EFF05FEA032584001306100093059000DB -:1028D800EFF05FE90325C4001306200093052001EB -:1028E800EFF05FE893071000232CF4028320C10067 -:1028F8000324810013010101678000006780000044 -:10290800130101FF970701009387871F2322910076 -:1029180083A40700232021012326110083A7840311 -:10292800232481001309050063960700138504001A -:10293800EFF0DFF49384042E03A4840083A74400FB -:102948009387F7FF63DA070083A70400638E070005 -:1029580083A404006FF05FFE0317C4006304070438 -:10296800130484066FF0DFFD93054000130509008A -:10297800EFF05FE823A0A400E31C05FC9307C00068 -:102988002320F90013040000130504008320C1006C -:10299800032481008324410003290100130101015C -:1029A80067800000B707FFFF9387170023220406FC -:1029B8002320040023220400232404002326F400F7 -:1029C80023280400232A0400232C04001306800073 -:1029D800930500001305C405EF20D07C23280402CA -:1029E800232A040223220404232404046FF0DFF9B9 -:1029F8006780000067800000678000006780000033 -:102A0800970701009387071003A5070097050000A3 -:102A1800938545D46F00003C970701009387870E84 -:102A280003A5070097050000938585DC6F00803AB1 -:102A3800130101FD23248102232291022320210373 -:102A4800232E31012326B100232611021309050084 -:102A580097090100938949CAEF30800283A789004A -:102A68008325C10083A44700B71700001384F7FE2D -:102A780093F4C4FF3304B440330494001354C400E3 -:102A88001304F4FF1314C4006356F4021305090079 -:102A9800EF20507F130500008320C1020324810228 -:102AA80083244102032901028329C101130101037F -:102AB800678000009305000013050900EF3050748B -:102AC80083A78900B3879700E312F5FCB30580401C -:102AD80013050900EF30D0729307F0FF6312F50475 -:102AE8009305000013050900EF30907103A78900D2 -:102AF8009306F000B307E540E3DAF6F8970601001D -:102B08009386860083A6060093E717002322F70022 -:102B18003305D5409706010023A6A6006FF01FF7DE -:102B280083A78900B384844093E4140023A2970008 -:102B380097070100938707FF83A70700130509007C -:102B4800338487409707010023AE87FCEF209073FA -:102B5800130510006FF05FF4638C0526130101FF65 -:102B68002324810023229100130405009384050087 -:102B780023261100EF20D07083A5C4FF938684FF1D -:102B880017050100130545B793F7E5FF3386F600EF -:102B9800032746000328850093F515001377C7FF20 -:102BA800631AC806B387E7006390050203A784FF8A -:102BB800B386E64003A68600B387E70003A7C600EE -:102BC8002326E6002324C70013E7170023A2E60004 -:102BD800170701002326D7B217070100130707F3C9 -:102BE8000327070063ECE70097070100938707F3C3 -:102BF80083A5070013050400EFF09FE31305040005 -:102C0800032481008320C1008324410013010101B2 -:102C18006F2050672322E600130800006396050220 -:102C280083A584FF97080100938888ADB386B640D2 -:102C3800B387B70083A58600638C150B83A8C600ED -:102C480023A6150123A4B800B305E60083A5450013 -:102C580093F51500639C0502B387E70003278600F8 -:102C6800631C080897050100938585A96316B708B2 -:102C780017060100232CD6A8170601002326D6A87C -:102C880023A6E60023A4E6001308100013E71700A4 -:102C980023A2E6003387F6002320F700E31008F6A6 -:102CA8001307F01F6362F70693D7370013D6274040 -:102CB800130710003317C700032645009387170032 -:102CC800939737003367C700B307F500170601006D -:102CD8002326E6A203A70700138687FF23A6C600BC -:102CE80023A4E60023A0D7002326D7006FF01FF106 -:102CF800130810006FF05FF50326C6002326C700EF -:102D08002324E6006FF09FF813D6970013074000BE -:102D1800636AC70413D767001307870313061700EE -:102D2800131636003306C500930586FF03260600F2 -:102D38006396C50893071000135727403397E70099 -:102D4800832745003367F7009707010023A8E79A10 -:102D580023A6B60023A4C60023A4D5002326D600A4 -:102D68006FF0DFE9130740016366C7001307B60574 -:102D78006FF0DFFA130740056368C70013D7C70071 -:102D88001307E7066FF09FF9130740156368C7003C -:102D980013D7F700130777076FF05FF893054055CF -:102DA8001307E007E3ECC5F613D727011307C70796 -:102DB8006FF0DFF6032686006388C5000327460008 -:102DC8001377C7FFE3E8E7FE8325C6006FF05FF8D7 -:102DD80067800000130101FD2324810223202103C1 -:102DE800232C4101232A5101232611022322910277 -:102DF800232E31011304052E13090000130A1000B5 -:102E0800930AF0FF631604028320C102032481029F -:102E18001305090083244102032901028329C10102 -:102E2800032A8101832A41011301010367800000FD -:102E380083248400832944009389F9FF63D6090019 -:102E4800032404006FF01FFC83D7C4006370FA02E8 -:102E58008397E400638C5701138504002326B1008F -:102E6800E78005008325C1003369A900938484069F -:102E78006FF09FFC130101FD23248102232021030D -:102E8800232C4101232A51012328610123267101A2 -:102E98002326110223229102232E3101130A050051 -:102EA800938A05001304052E13090000130B100064 -:102EB800930BF0FF631A04028320C10203248102EA -:102EC8001305090083244102032901028329C10152 -:102ED800032A8101832A4101032B0101832BC100AD -:102EE80013010103678000008324840083294400C0 -:102EF8009389F9FF63D60900032404006FF09FFB50 -:102F080083D7C400637EFB008397E400638A77015C -:102F18009385040013050A00E7800A003369A900B5 -:102F2800938484066FF0DFFC9307450113052500A1 -:102F3800231F05FEE31CF5FE67800000930745018B -:102F4800130525000357E5FF93852500239FE5FE1C -:102F5800E398A7FE678000009307A50113052500E5 -:102F6800231F05FEE31CF5FE67800000130785019B -:102F780093870500130525008356E5FF93872700EF -:102F8800239FD7FEE318A7FE239C05006780000057 -:102F980093074500938545001305A50193872700EE -:102FA8009385250083D6E7FF03D7E5FF6398E600FE -:102FB800E316F5FE130500006780000013051000F6 -:102FC8006364D7001305F0FF67800000930645008F -:102FD800930700001305A5013786FFFF03D70600F6 -:102FE800937517006384050093E7170093F527008E -:102FF8001357170063900502939717002390E60074 -:10300800939707019386260093D70701E318D5FC09 -:10301800678000003367C7006FF01FFE93066501E5 -:103028001307000083D7260013960701135606419D -:1030380063540600136717009397170093970701C7 -:103048001376270093D7070163100602131717009A -:103058002391F600131707019386E6FF135707011C -:10306800E312D5FC6780000093E717006FF01FFE9E -:1030780093074500130700001305A50183D6070031 -:103088009387270013D686003367C700239FE7FE80 -:10309800139786001317070113570701E310F5FE6E -:1030A80067800000930765011307000083D6270097 -:1030B8009387E7FF139686003367C7002392E700DC -:1030C80013D78600E314F5FE6780000093074500D8 -:1030D800130785019387270083D60700239FD7FE10 -:1030E800E31AF7FE231C050067800000930785019B -:1030F8001307A501930645009387E7FF03D607004A -:103108001307E7FF2310C700E398F6FE2312050014 -:103118006780000093858501130765019306000009 -:103128008357270003D605001307E7FF9385E5FFBC -:10313800B387C700B387D7002391F50093D707015A -:1031480093F61700E31EE5FC678000009385850170 -:10315800130765019306000083D70500035627006F -:103168001307E7FF9385E5FFB387C740B387D740C9 -:103178002391F50093D7070193F61700E31EE5FCAA -:1031880067800000130101FB232E3103B7090100FA -:10319800232481042322910423202105232C410385 -:1031A80023261104130A0500231501022316010220 -:1031B80093848501138945001304C1029389F9FF9B -:1031C80003D504001304E4FF9384E4FF63180504A3 -:1031D800231F04FEE31699FE930740001307A0017E -:1031E80093054101B385F50083D50500B306F600C4 -:1031F800938727002390B600E394E7FE8320C10459 -:103208000324810483244104032901048329C1037D -:10321800032A8103130101056780000093050A0052 -:103228002326C100EFD0504003572400B37735015F -:1032380013550501B387E700035704002311F40071 -:1032480093D707013305E5003305F5002310A400E3 -:1032580013550501231FA4FE0326C1006FF09FF735 -:103268008357250193C7F7FF13971701631C0700BE -:1032780093072501130525000357E5FF6318070089 -:10328800E39AA7FE130500006780000013051000ED -:1032980067800000130101FF232481002326110009 -:1032A80013040500EFF0DFFB631E0500031524017E -:1032B8001355F5018320C100032481001301010186 -:1032C80067800000130500006FF0DFFE83172501FB -:1032D800130101FF232611002324810023229100DA -:1032E8002320210163D807069307F0FF2390F500F8 -:1032F80003572501B78700009387F7FF33F7E700E7 -:103308002391E500130905016316F70613840500E8 -:1033180093040500EFF0DFF46302050493076400EB -:10332800231204001385C4FF1309E9FF035729007A -:1033380093872700239FE7FEE318A9FE8320C10097 -:1033480003248100832441000329010013010101A2 -:1033580067800000239005006FF09FF993074400F1 -:103368009305A40193872700239F07FEE39CB7FEDC -:103378006FF0DFFC93876500239205001305E5FFD6 -:103388001309E9FF0357290093872700239FE7FEC6 -:10339800E318A9FE239C05006FF05FFA130101FBF7 -:1033A80023229104232021052326110423248104A8 -:1033B8001309050093840500EFF09FEA6310050EDA -:1033C80013850400EFF0DFE9130405006318050C0A -:1033D8009305810013050900EFF05FEF93054102A3 -:1033E80013850400EFF09FEE0357810083574102D5 -:1033F8006380E70693072000930680011306810087 -:103408003306F60003560600631C06021306410243 -:103418003306F60003560600631406029387270056 -:10342800E39ED7FC130504008320C1040324810410 -:103438008324410403290104130101056780000066 -:1034480013041000E30007FE1304F0FF6FF09FFD64 -:1034580013061000638407001306F0FF93070000AB -:1034680093058001130781003307F700835607008F -:10347800130741023307F700035707006398E60074 -:1034880093872700E390B7FE6FF0DFF91304060077 -:10349800E36AD7F83304C0406FF0DFF81304E0FFA5 -:1034A8006FF05FF88357250193C7F7FF139717014C -:1034B80063100702130101FF23261100EFF05FDA02 -:1034C8008320C10013351500130101016780000036 -:1034D80013050000678000009307250113052500E8 -:1034E800231F05FEE31CF5FE835705003787000000 -:1034F8001307F7FFB3E7E7002310F5006780000024 -:10350800130101FE232C810023282101232E110001 -:10351800232A91002326310123244101232251012A -:10352800130905001384050063D20510330AB0405F -:1035380093090A0093040000930AF00063CE3A034B -:1035480013554A00930500FFEFD0100E3304854051 -:1035580093090400130A7000634C3A0313553400AE -:10356800930580FFEFD0500C33048500631E0402DE -:10357800333590006F00400983578901130509000E -:10358800938909FFB3E4F400EFF05FB66FF01FFB17 -:103598008347890113050900938989FFB3E49700DC -:1035A800EFF01FAD6FF05FFB83578901130509002A -:1035B8001304F4FF93F71700B3E49700EFF01FA18B -:1035C8006FF0DFFA13050900EFF05FB0938404FF92 -:1035D800E3CA99FE13554400930500FFEFD0D004C9 -:1035E8003304A400930404009309700063C699048B -:1035F80013553400930580FFEFD010033304A40063 -:1036080063140404130500008320C101032481010D -:1036180083244101032901018329C100032A810070 -:10362800832A41001301010267800000938405008A -:103638009309F0006FF0DFF913050900EFF09FA67A -:10364800938484FF6FF09FFA13050900EFF01F9D24 -:103658001304F4FF6FF0DFFA83574500130101FFED -:1036680023229100232611002324810023202101F5 -:10367800930405006392070883176500130400008C -:103688001309000A63D80702130504008320C10048 -:10369800032481008324410003290100130101014F -:1036A800678000001385040013040401EFF01FA2D3 -:1036B800E30C24FD83D76400E38607FE83D7640008 -:1036C80093F707F0638207021309000A83976400DF -:1036D800E3CC07FA1385040013041400EFF01F94D9 -:1036E800E35689FE6FF05FFA13850400EFF09F9BA5 -:1036F800130484006FF09FFC93F707F01304000095 -:1037080063860700EFF0DF96130480FF130900F7C4 -:103718006F004001138504001304F4FFEFF01F8BC2 -:10372800E34424F783D74400E39607FE6FF0DFF500 -:103738009307050113052500231F05FEE31CF5FE6D -:10374800B7C7FFFF2310F500B787FFFF93C7F7FF41 -:103758002311F50067800000130705008356070052 -:10376800138505008357270063860600B786FFFF89 -:10377800B3E7D7002319F50003562700B7860000E2 -:103788009386F6FF93076700631ED6001307A70109 -:1037980083D607006398060293872700E39AE7FE1B -:1037A8006FF09FD31305050113078701938727003F -:1037B80083D6E7FF1305E5FF2311D500E398E7FE5D -:1037C800678000006FF0DFF6130101FD23229102EC -:1037D80093040500130541002324810223261102C6 -:1037E80013840500EFF04FF703D7E40093170701A0 -:1037F80093D7074163C2070423120100B78600006C -:103808009386F6FF3377D7009387E400631CD706C7 -:103818001387040083560700638606021305040015 -:10382800EFF01FF18320C1020324810283244102A7 -:1038380013010103678000009307F0FF2312F100D2 -:103848006FF0DFFB13072700E396E7FC130504007E -:10385800EFF08FED13050400EFF01FC88397E40025 -:10386800E3D207FC13050400EFF09F9FE31C05FA61 -:10387800835724013787FFFFB3C7E7002319F400F4 -:103888006FF05FFA2313E100930641009387E7FF87 -:1038980003D60700938626002392C600E398F4FE19 -:1038A800631C07002314010093050400130541005D -:1038B800EFF09FEA6FF01FF7930710009305F0FFF2 -:1038C800130541002314F100EFF09FC36FF0DFFDF3 -:1038D800130101FE232C8100232A910023282101B2 -:1038E8002326310123244101232251011389060093 -:1038F80013840700232E1100930405009389050003 -:10390800130A0600930A0700EFF01FD59307000972 -:103918003309A94063D4A704B78700009387E7FF5A -:1039280063C6272D938724009384A40193872700D7 -:10393800239F07FEE39C97FE8320C1010324810196 -:1039480083244101032901018329C100032A81003D -:10395800832A41001301010267800000635E0900A9 -:10396800930700F7634CF9129305090013850400C7 -:10397800EFF01FB96310051463860A220327440079 -:10398800832704006306F7061305A401EFF0CFDCD4 -:103998008327440013078003638EE7166340F712FA -:1039A800130780016386E71A130750036382E71839 -:1039B8001307C0002324E400370701801307F7FF2B -:1039C800232AE40013071000231CE4001307B000A7 -:1039D8002326E4000327C4008356840113078700C5 -:1039E800131717003307E4002315D7002320F4002A -:1039F800634220030327440093070009630CF70080 -:103A080083D784011385040093F71700B3E9F900FD -:103A1800EFF0CFDB8326840003564401832544005E -:103A2800139716003387E40083570700B3F7C700DE -:103A38001306F008634AB6009386160013060700BB -:103A48009305C00063DAD510835644010356070076 -:103A580093C6F6FFB3F6C6002310D70003576401D8 -:103A6800B376F700638A06106312F70263940910AD -:103A78008327C4000357840193971700B387F40082 -:103A880083D70700B3F7E7006388070E9385040020 -:103A98001305A401EFF00FE86F00000E93872400D0 -:103AA8009384A40193872700239F07FEE39C97FE36 -:103AB8006FF09FE8930910006FF01FEC13070004E4 -:103AC8006388E70213071007E394E7EE378700409F -:103AD8001307F7FF9306A000232AE4002324D40049 -:103AE8003787FFFF231CE4002326D4006FF09FEEE6 -:103AF800130770002324E400370701801307F7FF3A -:103B0800232AE40013071000231CE40013076000B5 -:103B18006FF01FEC93066000370780001307F70F5C -:103B2800232AE4002324D400130700106FF09FFB1E -:103B3800370700041307F77F93066000232AE40081 -:103B4800371700002324D400130707806FF09FF96C -:103B5800930640006FF05FFC0355260063040500E0 -:103B680093E7170023110600938616001306260014 -:103B78006FF05FEDE30C0AF0634C2001032744006B -:103B8800930700096306F70013850400EFF00FC9D7 -:103B980083D744006388070013850400EFF00FC340 -:103BA80013091900B7870000239C04009387E7FFD7 -:103BB80063D42703B787FFFF93C7F7FF2391F40068 -:103BC80093874400938484012390070093872700F8 -:103BD800E39CF4FE6FF05FD663560900239104005E -:103BE8006FF09FD5239124016FF01FD5E3980AD871 -:103BF800239C04006FF01FFC130101FE23244101E4 -:103C0800035A2500232C810013840500232E11005C -:103C1800232A910023282101232251012320610115 -:103C280013090600130B460323263101930A0500E6 -:103C3800EFF09FA283542400330AAA40130504001E -:103C4800EFF09FA1B384A44013050B00EFF0CFB0B1 -:103C580063D2440513050400032481018320C101B4 -:103C68008329C100032A8100832A4100032B010014 -:103C78009307090093860400032901018324410165 -:103C8800130700001306000093050000130101024A -:103C98006FF01FC49305040013850A00EFF04FAFBF -:103CA80093090000634AA0009305040013850A00E5 -:103CB800EFF0CFC99309100013050B00EFF00FB612 -:103CC8008357C904130504009384F4FFB3E9F9008A -:103CD80023163905EFF08FB46FF09FF7130101F742 -:103CE800232481082322910823202109232E310728 -:103CF80023261108232C4107232A5107232861076B -:103D080023267107232481072322910793040500A2 -:103D1800138405001309060093890600EFF04FD4B9 -:103D2800630205049305090013850400EFF00FA151 -:103D38008320C1080324810883244108032901083A -:103D48008329C107032A8107832A4107032B010717 -:103D5800832BC106032C8106832C4106130101091C -:103D68006780000013050400EFF08FCF630805009B -:103D780093050900130504006FF05FFB1385040029 -:103D8800EFF04FF26314050613050400EFF08FF10E -:103D9800630C050097D500009385456B13850400D7 -:103DA800EFF0CFDF630E050413850400EFF08FEF0B -:103DB8006318050013050400EFF0CFEE630C05044B -:103DC80013850400EFF00FCD9304050013050400DC -:103DD800EFF04FCC638CA402B787FFFF2319F900DB -:103DE80013050900EFF04FEF6FF09FF497D500002F -:103DF8009385C56513050400EFF04FDAE31605F85F -:103E080013050900EFF0DF926FF09FF22319090004 -:103E18006FF01FFD138504009305C100EFF00FCB71 -:103E28001305040093058102EFF04FCA0354E10023 -:103E38008354A1026314040293070000130760016E -:103E48009306C100B386F60083D62600638A06105F -:103E58001305C100EFF05F803304A0408357A1022F -:103E6800138C040063920702130760019306810212 -:103E7800B386F60083D62600638E060E13058102EC -:103E8800EFF08FFD338CA44083578102938B490355 -:103E980093848903239AF9028357A102138A0B009A -:103EA800239BF9029387E904239004009384240058 -:103EB800E39C97FE930A0000130B0000930CC0FECE -:103EC8009307C100B387570103D58701630E050027 -:103ED8009305810213064104EFF0CFAA93850B00E6 -:103EE80013054104EFF00FA383D7C90413850B0012 -:103EF800938AEAFF336BFB00EFF04F9FE3929AFD42 -:103F08009307810203570A00130A2A0093872700A0 -:103F1800239FE7FEE3189AFEB7C6FFFF3304840128 -:103F2800938626009387090013070004B306D4007C -:103F38001306000093050B0013058102EFF05F994B -:103F48000357C10083578102631CF702231401023F -:103F58009305090013058102EFF01F806FF05FDD04 -:103F680093872700E39EE7EC13050900EFE0DFFBEA -:103F78006FF01FDC93872700E39AE7EE6FF0DFFE10 -:103F88009307F0FF2314F1026FF09FFC130101F770 -:103F9800232481082322910823202109232A510759 -:103FA80023261108232E3107232C410723286107D4 -:103FB8002326710723248107232291072320A107A1 -:103FC800930405001384050013090600938A06006C -:103FD800EFF00FA963040504930509001385040095 -:103FE800EFE0DFF58320C10803248108832441081A -:103FF800032901088329C107032A8107832A410766 -:10400800032B0107832BC106032C8106832C410651 -:10401800032D010613010109678000001305040040 -:10402800EFF00FA4630805009305090013050400C9 -:104038006FF01FFB97D50000938545411385040059 -:10404800EFF0CFB5630E051E13850400EFF08FC5A2 -:104058009309050013050400EFF0CFC4639209200B -:1040680063180520138504009305C100EFF00FA61F -:104078001305040093058102EFF04FA58354A102B4 -:104088000354E100639404029307000013076001DE -:1040980093068102B386F60083D626006380062045 -:1040A80013058102EFF04FDBB304A0408357E10012 -:1040B800930B040063920702130760019306C10083 -:1040C800B386F60083D626006380061E1305C1005A -:1040D800EFF08FD8B30BA440835781020357A10296 -:1040E80093894A03239AFA0293878A03239BEA0255 -:1040F800138A07001387EA0493872700239F07FE84 -:10410800E39CE7FE13058102EFE05FEC035C21010D -:10411800370B01009305FBFF13050C00EFC0D050CF -:10412800130D0500938CA901130BFBFF0355C10266 -:104138008357E10213040B00131505013305F5003D -:10414800636AAD0093050C00EFC0D050131405014D -:10415800135404019305C100130504001306410418 -:10416800EFF04F829305810213054104EFE05FE20F -:104178006356A002930541041305C100EFE01FFD3B -:104188009305810213054104EFE09FE0634CA01200 -:104198001304F4FF1314040113540401930581025A -:1041A80013054104EFE09FFA1305810223108A00EA -:1041B800130A2A00EFE09FF1E31A9AF79307000029 -:1041C800930500001307600193068102B386F60089 -:1041D80083D6460093872700B3E5D500E396E7FE2C -:1041E800B335B0009307810203D7090093892900EA -:1041F80093872700239FE7FEE3183AFFB74600009E -:10420800B38474419386F6FF93870A00130700046A -:10421800B386D4001306000013058102EFF04FEBBC -:104228000357C10083578102631CF70A2314010254 -:104238009305090013058102EFF00FD26FF09FDAA2 -:1042480097D500009385852013050400EFF00F959E -:10425800E31C05DE13050900EFF08FCD6FF09FD842 -:10426800E31A05FE13050900EFE01FCC6FF09FD796 -:1042780013850400EFF00F82930405001305040072 -:10428800EFF04F81638CA402B787FFFF2319F90071 -:1042980013050900EFF04FA46FF0DFD493872700D0 -:1042A800E398E7DE6FF01FFC93872700E398E7E0C9 -:1042B8000357C10083578102E318F7FC231909004B -:1042C8006FF01FFD1304E4FF131404019305410468 -:1042D8001305C10013540401EFE05FE76FF01FEC12 -:1042E8009307F0FF2314F1026FF09FF403AE05006B -:1042F80003A3450083A8850083A5C500130101E237 -:10430800232C811C2326B10213840700832505046E -:104318009307F0FF2328F114930700092328211D90 -:104328002326311D2324411D232E711B232E111CEE -:10433800232A911C2322511D2320611D232C811B1C -:10434800232A911B2328A11B2326B11B2326010105 -:104358002320C1032322610223241103232AF114F9 -:1043680013090500130A060093890600930B07003A -:104378006380050283274504130710003317F700ED -:1043880023A2F50023A4E500EF10807A2320090476 -:104398001305010293050105EFF00FC3130501058D -:1043A800EFE05FEF630E0518930710002320F40079 -:1043B80093073000630AFA1893044001630A0A005D -:1043C8009384F9FF9307A00263D497009304A00293 -:1043D80083274115130501052328F100EFE05FE865 -:1043E8001304050097D500009385852BE31605284F -:1043F800930700099305C10613050105232AF11443 -:10440800EFE0DFB38357E107930A00001397070132 -:1044180013570741635E0700378700001307F7FF4C -:10442800B3F7E700B70A0100231FF106938AFAFFE2 -:104438009305810817D5000013058502EFE01FB02A -:104448000357E107E31A07201307C1069307000083 -:10445800930690000356070063140610938717000D -:1044680013072700E398D7FE9305010C130581086D -:10447800EFE0DFE5930581081305010CEFE01FAFBE -:104488009305010C1305C106EFE05FE49305C1062F -:104498001305010CEFE09FAD130601159305C10646 -:1044A80013058108EFF04FF5035BC11917DC000015 -:1044B800130CCCF9631A0B0093050C001305C10605 -:1044C800EFE0DFED6310056C9307D00263940A00F8 -:1044D80093070002230AF11093073000138C04009D -:1044E8006318FA00338C84009307A002E3C0872383 -:1044F8009307A000631EFB6C93071003A30AF11037 -:104508009307E002230BF110130B7111635A80011A -:1045180093070003A30BF110130CFCFF130B81117D -:104528001304140063500C6C1306040097D50000A4 -:104538009385451913050B00EF20C0626F00D01456 -:10454800232004006FF0DFE6938409006FF09FE7F3 -:104558008317C10797D5000093858516E3DE0710FA -:104568009305C10617D50000130585EFEFE01FE39B -:10457800E30C05EE635805469305410A1305C10689 -:10458800EFE0DF9BB74700009387E708231BF10A9A -:10459800B78700009387F7FF232AF100B7C7FFFF0B -:1045A80093872700130C0000930C0001232CF100C3 -:1045B80097D70000938707F633858701930601157F -:1045C800130681089305410AEFF05F9C13058108E3 -:1045D8009305C103EFE09F9683274101035BE10444 -:1045E80003278101B377FB003385E700634EA004FE -:1045F8001305010CEFE05F93131B0B01135B0B41D9 -:1046080063500B12930700001307C1033307F70029 -:10461800835607001307010C3307F70003570700F9 -:10462800638AE63A17D50000130585E3EFE05FC318 -:10463800630805089305010C17D50000130545E22A -:10464800EFE0DF8F6F00C00D93070009B38DA7401F -:104658009305010C1305C103EFE05F8E6352B00DA3 -:104668009306010C13870D001306F0006342E6045D -:1046780013D54D009307010C13171500930500FF80 -:10468800338DE700EFC0407A3305B50197D70000B6 -:104698009387C7DB131515003385A70083560D00D4 -:1046A8008357C512B3F7D7002310FD006FF0DFF46E -:1046B80023900600130707FF938626006FF01FFB61 -:1046C8001305010CEFE0DFB9630805009305010C41 -:1046D800138505006FF0DFF617D50000130545D8E0 -:1046E800EFE05FDC130D05001305010CEFE09FDB25 -:1046F800130B0500630C0D146302051217D5000097 -:10470800130505D6EFE01FB9130B05001305010CBF -:10471800EFE05FB86314AB101305010CEFF04F81A5 -:1047280093070000130781083307F7008356070033 -:104738001307010C3307F700035707006390E602DD -:104748009387270013072001E39EE7FC9305410A9E -:1047580013058108EFE08FFE33049401130C4C011C -:104768009307400693DC1C00E314FCE48357610BB9 -:104778000357E1079305C1061305410AB387E7000C -:1047880037C7FFFF130727F7B387E700231BF10A93 -:10479800EFE0CFFA9305810817D50000130545CC43 -:1047A800EFE0CFF9130B0000B71C0000930D401089 -:1047B80097D70000938707CC9305410A17D50000C7 -:1047C800130545DA338C6701EFE05FBDE34EA0C8FF -:1047D8009305410A13050C00EFE05FBC6348A00293 -:1047E8001306410A930506009306011513050C00EC -:1047F800EFF0CFF91306810893060115930506001B -:1048080013050C00EFF08FCD33049401130B4B010B -:1048180093DC1C00E31EBBF96FF01FC517D5000021 -:10482800130505C49305010CEFE04FF11305010CC6 -:10483800EFE01FA3E31605EE8357210D3787FFFF2F -:10484800B3C7E7002319F10C6FF09FEDE31005E8FB -:104858009305C10D17D50000130585C0EFE01FA70C -:104868009305810F1305010CEFE05FA60357C10DF7 -:10487800835DA10F8357E10D1347F7FF131D070150 -:10488800135D0D01231EA10DB387B7416354F008D2 -:10489800930541111305810F232EF100EFE00FED71 -:1048A8009305810F1305C10DEFE04FEC9305C10D82 -:1048B80013054111EFE08FEB8327C101835DA10F41 -:1048C800B307F0401307F0F663C6E70893850700BF -:1048D8001305C10DEFE0DFC2130D05000357C10D2D -:1048E8008357810F9305810F1305C10D631EF70CC4 -:1048F800EFE05F82930701151307000493860D000C -:1049080013060B0093050D001305810FEFE05FFC04 -:104918006F004004E39807FA9305810F1305C10D52 -:10492800EFE00FE7631805068357810F6388A70137 -:104938001305010CEFE04FDF6FF09FDE63940D026B -:104948000317E10F93070000634007021305810F67 -:10495800EFE0CFEC9305010C1305810FEFE0DFDFEB -:104968006FF01FDC93070000130760019306810FA7 -:104978003386F6000356260063080600938D1D0053 -:10498800231DB10F6FF01FFD93872700E390E7FE0B -:104998006FF01FFF130D0000E352A0F493054111BF -:1049A8001305810FEFE08FDC9305810F1305C10D0F -:1049B800EFE0CFDB9305C10D13054111EFE00FDBED -:1049C800130D0B006FF09FF1EFE04FF8130B100081 -:1049D8006FF05FF29387270013072001E396E7C281 -:1049E8006FF01FD48357E10717DB0000130B8BB759 -:1049F8006388070A9305010C1305C106374B0000AD -:104A0800EFE0DF8C130BEBFF130C50FD8357810D88 -:104A180093F77700639207069305410A1305010C83 -:104A2800EFE0CFD41305410AEFE04FDA1305410A4E -:104A3800EFE0CFD99305410A1305010CEFE08FEDA4 -:104A48008357610A938737002313F10A8357810A32 -:104A5800639007128357C10B639007028357610A5B -:104A6800636CFB009305010C1305410A1304F4FF62 -:104A7800EFE0CFCFE31C84F99305C1061305010CC1 -:104A8800EFE09FCD6F0040021306C10693060115A3 -:104A98009305060013050B00EFF04FA41304F4FF71 -:104AA8008317C107E3D207FE9305010C1305C1065E -:104AB800EFE0CFC89305810817D500001305459A84 -:104AC800EFE0CFC7930C000037FBFFFF17DD0000B6 -:104AD800130D4D9A930D401097D70000938707AC9C -:104AE800338797019305010C17D5000013054597E7 -:104AF800232AE100EFE09F8A330C9D01032741013F -:104B0800635AA0049305010C13050700EFE01F8901 -:104B1800634805021306010C930506009306011568 -:104B280013050C00EFF08F9B1306810893060115FF -:104B38009305060013050C00EFF04F9A3304640147 -:104B48001357FB01330B6701938C4C01135B1B401C -:104B5800E394BCF9130681089306011597D5000064 -:104B68009385059013050600EFF04FC26FF0DF8FB5 -:104B78001305410AEFE08FC58357610A9387170031 -:104B88006FF09FEC1305C106EFE04FC99305410A8A -:104B98001305C106EFE08FBD1305410AEFE00FC80A -:104BA8001305410AEFE08FC79305C1061305410AB3 -:104BB800EFE04FD6130601159305C10613058108CA -:104BC800EFF08F831304F4FF035BC1196FF09F8E1E -:104BD800130B0B039307E002A30A6111230BF110D7 -:104BE800130B7111930A0B00B3876A416356FC04D7 -:104BF8008357C11913074000138BFAFFE356F79246 -:104C0800130750006384E70893070B001306E002BC -:104C180093058003930600039387F7FF03C70700F4 -:104C28001377F70763580C0A130710032380E7006C -:104C3800130414006FF05F8F1305C106EFE00FBE79 -:104C48009305410A1305C106EFE04FB21305410A67 -:104C5800EFE0CFBC1305410AEFE04FBC9305C10656 -:104C68001305410AEFE00FCB130601159305C106A2 -:104C780013058108EFE05FF88347C119938A1A008A -:104C880093870703A38FFAFE6FF01FF69305810839 -:104C98001305C106EFE05FAC97C500009385057B5F -:104CA80013058108EFE08FEFE31005F6E34E0C865D -:104CB80083C7EAFF938727FD93B7170093C7F7FFCA -:104CC800B307FB0083C7070093F71700E38E078439 -:104CD8006FF09FF36314C70203C7F7FF93068003BF -:104CE80063E8E60013071700A38FE7FE6FF0DF8382 -:104CF80013041400130710036FF01FFF63E8E500A7 -:104D0800130717002380E7006FF01F822380D70066 -:104D18006FF09FF01304140023A08B0093870A0000 -:104D28009306E00203C70700631607001307500441 -:104D38006F00C002630CD700938717006FF09FFEC7 -:104D480003C7170093871700A38FE7FE03C7070061 -:104D5800E31807FE6FF09FFD9387F7FF83C60700F0 -:104D68006384E600E3EAFAFE238007006F0000157B -:104D7800938717006F004015138406006F00C01555 -:104D88001304F4FF230004000347F4FF6316D7005D -:104D980033075441E3C6E7FE9307300013879900B1 -:104DA8006314FA0283270116B384F40063D804005D -:104DB800230A011023A00B0013840A0083A70B0009 -:104DC800B389F900138739002322090493074000A7 -:104DD80093864701832549046378D706130509009C -:104DE800EF00904A2320A90493850A009304050044 -:104DF800EF20400A8327C100638807003304544129 -:104E08003384840023A087008320C11D0324811DCF -:104E1800138504000329011D8324411D8329C11C16 -:104E2800032A811C832A411C032B011C832BC11BD1 -:104E3800032C811B832C411B032D011B832DC11ABD -:104E48001301011E67800000938515002322B90411 -:104E5800939717006FF0DFF7B78700009387F7FF86 -:104E68006318F7EE97D500009385C58463860A001A -:104E780097D5000093854583130541113724000019 -:104E8800EF10504E1304F470832701011305010538 -:104E980023208116232AF114EFE0CFE0930A411171 -:104EA8006318050013050105EFE08FBBE30405E671 -:104EB800B72700009387F77023A0FB0093870A00A9 -:104EC800130600029306D00203C70700E302C7EAED -:104ED800E300D7EA13840A009387170003C7F7FF94 -:104EE80093061400A38FE6FEE31807E813072000D3 -:104EF800930710006308EA008327011663D497001C -:104F080093870400930600036FF01FE89307A0003F -:104F1800130CA002E31EFBCA93071003A30AF110A7 -:104F28009307E002230BF110130CA0026FF04FDE81 -:104F380083270500130101FC930541012320F1009B -:104F480083274500232E11022322F10083278500A1 -:104F58002324F1008327C500130501002326F1004F -:104F6800EFE09F86835761021305000093C7F7FFA0 -:104F780013971701631A070013054101EFE04FAEBD -:104F880013351500130515008320C103130101040F -:104F9800678000001305050F6780000097E7000091 -:104FA800938747B683A7070003A547036316050041 -:104FB80017D500001305855D1305050F67800000F0 -:104FC80097E70000938707B483A7070003A5470363 -:104FD8006316050017D500001305455B1305050F7B -:104FE8006780000063080606130101FF97C50000EB -:104FF8009385C56D1305060023248100232611001F -:1050080013040600EF1050516308050297C500000D -:105018009385856B13050400EF101050630E05008F -:1050280097C500009385C52513050400EF10D04EE1 -:10503800930700006316050097C700009387C768A9 -:105048008320C10003248100138507001301010197 -:105058006780000097C700009387076713850700DC -:105068006780000097E700009387C7A983A7070018 -:1050780083A747036396070097D7000093870751D4 -:1050880003C58712678000000325C50E67800000EE -:1050980097E70000938707A783A7070083A747031D -:1050A8006396070097D700009387474E03A5C70E5E -:1050B8006780000097E700009387C7A41386050060 -:1050C8009305050003A507006FF0DFF1130101FA4E -:1050D800232A9104938405008395E500232C8104F9 -:1050E800232E11041304060063DE050083D7C400D1 -:1050F80023A0060093F70708639807049307004066 -:105108006F00C004130641012326D100EF500004AC -:105118008326C100E34C05FC03278101B7F7000093 -:1051280037150000B3F7E70037E7FFFFB387E7005D -:1051380093B7170023A0F600930700402320F4003C -:10514800130505806F000001930700042320F40075 -:10515800130500008320C10503248105832441052C -:10516800130101066780000083D7C500130101FE03 -:10517800232C8100232E1100232A910023282101AA -:1051880093F7270013840500638807029307340404 -:105198002320F4002328F40093071000232AF400A6 -:1051A8008320C101032481018324410103290101D2 -:1051B80013010102678000009306C10013068100F5 -:1051C80093040500EFF09FF0832581001309050083 -:1051D80013850400EF004008631005028317C4001C -:1051E80013F70720E31E07FA93F7C7FF93E7270093 -:1051F8002316F4006FF09FF997D7FFFF93870756A0 -:1052080023AEF4028357C4002320A4002328A4005B -:1052180093E707082316F40083278100232AF40064 -:105228008327C100638207028315E4001385040005 -:10523800EF50003D630A05008357C40093F7C7FF8A -:1052480093E717002316F4008357C4003369F90065 -:10525800231624016FF0DFF4130101FD2326110248 -:10526800232481022322910223202103232E3101AA -:10527800232C4101232A510123286101232671018E -:10528800232481019387B500130760016374F70431 -:1052980093F487FF63D204049307C0002320F5002A -:1052A800130500008320C1020324810283244102E4 -:1052B800032901028329C101032A8101832A4101AB -:1052C800032B0101832BC100032C8100130101036F -:1052D8006780000093040001E3E0B4FC13090500B3 -:1052E800EF00007A9307701F97D900009389C9408F -:1052F80063EA9704138784003387E900032447008F -:10530800930687FF93D734006318D4000324C7009B -:105318009387270063008708832744000327C40076 -:105328008326840093F7C7FFB307F40023A6E6009B -:105338002324D70003A747001367170023A2E70019 -:105348006F00C00A13D794009307F003630A07009D -:105358009307400063E4E70A93D7640093878703C1 -:1053680013871700131737003387E9000324470012 -:10537800930587FF1305F000630CB400032744006E -:105388001377C7FF330697406352C50C9387F7FF1F -:105398009387170003A4090197D500009385453624 -:1053A8006302B414032744009306F0001377C7FF81 -:1053B8003306974063DEC60A93E714002322F400FD -:1053C800B306940097D7000023A2D73497D70000DC -:1053D80023ACD7329367160023A6B60023A4B600E1 -:1053E80023A2F6003307E4002320C70013050900B1 -:1053F800EF004069130584006FF0DFEA930740016E -:1054080063E6E7009307B7056FF09FF5930740053C -:1054180063E8E70093D7C4009387E7066FF05FF46B -:105428009307401563E8E70093D7F400938777075D -:105438006FF01FF3930640559307E007E3E2E6F2A7 -:1054480093D724019387C7076FF09FF18326C40081 -:10545800634C06008327840023A6D70023A4F60004 -:10546800B307E4006FF01FED138406006FF0DFF060 -:1054780097D6000023ACB62897D6000023A6B628F6 -:10548800634C06003307E4008327470093E71700BF -:105498002322F7006FF09FF59306F01F03A8490039 -:1054A80063E2E61A13573700135627409306100095 -:1054B80013071700B396C600131737003387E900A0 -:1054C800B3E6060117D60000232AD6228326070052 -:1054D800130687FF2326C4002324D4002320870033 -:1054E80023A6860013D72740130310003313E300C5 -:1054F80003A74900636C6706B3766700639C0600E0 -:1055080093F7C7FF13131300B37667009387470019 -:10551800E38A06FE130EF00093963700B386D9008F -:1055280013880600138507000324C800631E041DA2 -:10553800130515001377350013088800E31607FED6 -:1055480013F737006314072403A749009347F3FFB1 -:10555800B377F70017D700002322F71A03A74900EB -:1055680013131300636467006316032483AB890075 -:1055780003A44B00937AC4FF63E89A0033879A40E8 -:105588009307F00063C0E73697D700009387075961 -:1055980003A4070097D700009387075783A607003F -:1055A8001307F0FF33848400138A07006398E6200A -:1055B800130404019305040013050900EF10404487 -:1055C8009307F0FF130B05006302F52AB3875B010D -:1055D8006374F500639C3B2917DC0000130C8C54A2 -:1055E80003270C003307E40097D6000023ACE652EB -:1055F8006392671F93964701639E061C83A78900E1 -:1056080033848A001364140023A2870017D700008C -:105618001307875083270C00032707006376F700DA -:1056280017D70000232AF74E17D700001307874E15 -:1056380003270700637CF72217D70000232CF74CB9 -:105648006F00C022135697009306400063E8C60413 -:105658009356670093868603138616001316360042 -:105668003386C900130586FF032606006314C508A0 -:105678001307100093D62640B316D700B3E60601E9 -:1056880017D70000232CD7062326A4002324C40000 -:1056980023248500232686006FF0DFE4930640016B -:1056A80063E6C6009306B6056FF01FFB9306400538 -:1056B80063E8C6009356C7009386E6066FF0DFF9E5 -:1056C8009306401563E8C6009356F700938676075D -:1056D8006FF09FF8130540559306E007E36EC5F693 -:1056E800935627019386C6076FF01FF70326860097 -:1056F8006308C5008326460093F6C6FFE368D7FE15 -:105708000325C6006FF05FF8032744000326C40092 -:105718001377C7FFB308974063541E0593E7140037 -:105728002322F40083278400B30694003307E4009F -:1057380023A6C7002324F60097D7000023A8D7FC88 -:1057480097D7000023A2D7FC93E7180023A6B6003A -:1057580023A4B60023A2F600232017016FF01FC967 -:1057680063C208023307E4008327470093E7170062 -:105778002322F7008327840023A6C7002324F600EA -:105788006FF0DFC6130406006FF05FDA138786FF39 -:1057980083A606009387F7FFE384E6DA6FF01FDC41 -:1057A8009387470013131300B3766700E38A06FE56 -:1057B8006FF09FD6930705006FF01FFFB717000023 -:1057C8009387F7003304F400B7F7FFFF3374F4004E -:1057D8006FF05FDE03260A009306F0FF631CD60A0B -:1057E80097D7000023A2673393757B006388050071 -:1057F80093078000B385B740330BBB00B717000091 -:10580800B385F50033048B009387F7FF3374F400F6 -:10581800338A854093050A0013050900EF10401EDE -:105828009307F0FF6316F50013050B00130A000039 -:1058380083270C0033056541B3874701330A4501C7 -:1058480017D700002320F72E136A1A0097D70000F5 -:1058580023A867EB23224B01E38A3BDB1307F00005 -:1058680063645705930710002322FB0083A7890070 -:1058780083A7470093F7C7FF3387974063E69700EE -:105888009307F00063C0E70613050900EF00801FC7 -:105898006FF01FA1B307FB40B387E70017D70000DD -:1058A8002322F7286FF05FF483A74B0013844AFF85 -:1058B800137484FF93F71700B3E7870023A2FB0054 -:1058C80093065000B3878B0023A2D70023A4D700E8 -:1058D800E37E87D293858B0013050900EFD0CFA70D -:1058E8006FF0DFD203A4890093E714002322F400A9 -:1058F800B307940097D6000023A4F6E06FF0DFA367 -:1059080097D700009387072083A7070083A747033B -:105918006396070097D70000938747C703A3470EEE -:1059280067000300639A0502130101FF9305C10094 -:1059380013050000630E06001305E0FF638A0600E6 -:105948008347060023A0F500034506003335A00071 -:1059580013010101678000001305000063000602BF -:105968001305E0FF638C06008347060023A0F500BB -:10597800034506003335A0006780000067800000FB -:1059880093F5F50F3306C5006316C500130500002F -:105998006780000083470500E38CB7FE13051500F8 -:1059A8006FF09FFE1303F00013070500637EC30228 -:1059B8009377F7006390070A63920508937606FFCA -:1059C8001376F600B386E6002320B7002322B7003B -:1059D8002324B7002326B70013070701E366D7FE81 -:1059E8006314060067800000B306C3409396260040 -:1059F80097020000B38656006780C6002307B700E9 -:105A0800A306B7002306B700A305B7002305B70010 -:105A1800A304B7002304B700A303B7002303B70008 -:105A2800A302B7002302B700A301B7002301B70000 -:105A3800A300B7002300B7006780000093F5F50FB7 -:105A480093968500B3E5D50093960501B3E5D50097 -:105A58006FF0DFF69396270097020000B386560092 -:105A680093820000E78006FA93800200938707FF7D -:105A78003307F7403306F600E378C3F66FF0DFF339 -:105A880067800000678000008327C504130101FFB9 -:105A980023229100232021012326110023248100A1 -:105AA80093040500138905006382070403A7C4044F -:105AB80093172900B307F70003A50700631005062D -:105AC800130410003314240113065400131626007F -:105AD8009305100013850400EF40C02E63020502F1 -:105AE80023222501232485006F00C003130610021A -:105AF80093054000EF40002D23A6A404E31805FAFF -:105B0800130500008320C100032481008324410081 -:105B18000329010013010101678000000327050024 -:105B280023A0E70023280500232605006FF09FFD2A -:105B38006380050283A74500139727008327C504C0 -:105B4800B387E70003A7070023A0E50023A0B70059 -:105B580067800000130101FD2322910283A405013F -:105B6800232A5101B70A010023248102232021039B -:105B7800232E310123286101232671012324810169 -:105B880023261102232C410123229101130B050026 -:105B980013840500930B06001389060093894501B9 -:105BA800130C0000938AFAFF83AC090093850B005D -:105BB8009389490033F55C01EFB00027330A2501CA -:105BC80093850B0013D50C01EFB0002693570A01FB -:105BD8003305F50013590501337A5A0113150501E8 -:105BE8003305450123AEA9FE130C1C00E34E9CFAB5 -:105BF800630009068327840063C0F40483254400F6 -:105C080013050B0093851500EFF01FE80326040128 -:105C18009305C400930905001306260013162600F1 -:105C28001305C500EF40D0279305040013050B00AA -:105C3800EFF01FF01384090093874400939727001F -:105C4800B307F40023A227019384140023289400A7 -:105C5800130504008320C102032481028324410226 -:105C6800032901028329C101032A8101832A4101F1 -:105C7800032B0101832BC100032C8100832C4100DD -:105C88001301010367800000130101FE232C81002A -:105C98002324410113840500130A0500930590008D -:105CA80013858600232A91002328210123225101EC -:105CB800232E11002326310193040600938A06003F -:105CC80013090700EFB08018930710009305000030 -:105CD80063C2A70813050A00EFF01FDB9307100043 -:105CE8002328F500232A25019307900063DA9706F5 -:105CF8001309940093090900330494009389190047 -:105D080083C6F9FF930505001306A000938606FDD8 -:105D180013050A00EFF01FE4E39289FE33049900AB -:105D2800130484FFB3848440B307940063C0570509 -:105D38008320C10103248101832441010329010136 -:105D48008329C100032A8100832A4100130101022B -:105D58006780000093971700938515006FF05FF731 -:105D68001304A400930490006FF0DFFB13041400E5 -:105D78008346F4FF930505001306A000938606FDED -:105D880013050A00EFF01FDD6FF01FFA3707FFFF5A -:105D98003377E50093070500130500006316070035 -:105DA8009397070113050001370700FF33F7E70052 -:105DB800631607001305850093978700370700F0DF -:105DC80033F7E7006316070013054500939747006C -:105DD800370700C033F7E7006316070013052500EF -:105DE8009397270063CC07001397170063560700A3 -:105DF8001305150067800000130500026780000086 -:105E08008327050013F77700630E070293F6170040 -:105E180013070000639C060013F72700630C0700B4 -:105E280093D717002320F500130710001305070068 -:105E38006780000093D727002320F5001307200070 -:105E48006FF0DFFE9396070193D606011307000053 -:105E58006396060093D707011307000193F6F70F1F -:105E6800639606001307870093D7870093F6F70019 -:105E7800639606001307470093D7470093F6370049 -:105E8800639606001307270093D7270093F6170099 -:105E98006398060093D71700638807001307170055 -:105EA8002320F5006FF09FF8130700026FF01FF82A -:105EB800130101FF232481001384050093051000BA -:105EC80023261100EFF05FBC232A85008320C10040 -:105ED80003248100130710002328E50013010101A2 -:105EE8006780000003A7050183270601130101FA53 -:105EF800232A910423244105232E1104232C8104F1 -:105F08002328210523263105232251052320610555 -:105F1800232E7103232C8103232A91032328A10311 -:105F28002326B103138A0500930406006356F7007D -:105F3800130A06009384050003290A0183A90401B2 -:105F480083278A0083254A00330C390163D48701EB -:105F580093851500EFF05FB3930B4501931C2C005C -:105F6800130D0500B38C9B0193870B0063E497091D -:105F7800130A4A0113192900B3072A01938444011B -:105F8800939929002326F100B70A0100B387340149 -:105F98002328F100938AFAFF8327010163E2F406BC -:105FA80063588001938CCCFF83A70C00638A071881 -:105FB8008320C1050324810523288D0113050D00C5 -:105FC80083244105032901058329C104032A810487 -:105FD800832A4104032B0104832BC103032C81036F -:105FE800832C4103032D0103832DC10213010106F4 -:105FF8006780000023A00700938747006FF01FF712 -:1060080083AD0400B3FD5D0163880D0813890B009F -:1060180013070A00930900000326070093850D0063 -:106028000324090033755601232AE100232CC100FB -:10603800EFA0905F0326810103274101337B5401C0 -:10604800330B6501130747001355060193850D00AF -:10605800330B3B01232AE100232EE10013540401F2 -:10606800EFA0905C3305850013540B0133058500C0 -:1060780093590501337B5B01131505018327C10083 -:10608800032741011306490033656501232EA6FE47 -:106098006360F70A2322390103D92400630409083D -:1060A80003A40B00938D0B0093090A0093060000CC -:1060B80003A5090093050900232AD100337555016A -:1060C800EFA0905603DB2D00832641013374540161 -:1060D800330B6501330BDB0013150B0133648500AB -:1060E80023A08D009389490003D5E9FF13864D004D -:1060F80093050900232AC100EFA0105303A44D0003 -:106108008327C100135B0B013374540133048500EA -:1061180033046401935604010326410163EEF90038 -:1061280023A28D0093844400938B4B006FF0DFE62D -:10613800130906006FF05FEE930D06006FF05FF72E -:10614800130CFCFF6FF0DFE5130101FE232A910019 -:106158002328210123263101232E1100232C81001D -:1061680023244101937736001309050093040600A0 -:1061780093890500638407029387F7FF17B7000028 -:106188001307C75593972700B307F70003A607001F -:1061980093060000EFF01F9C9309050093D4244058 -:1061A8006380040803248904631E040093051027F0 -:1061B80013050900EFF0DFCF2324A9041304050019 -:1061C8002320050093F714006384070293850900D0 -:1061D8001306040013050900EFF0DFD0130A0500C9 -:1061E8009385090013050900EFF09F9493090A00AD -:1061F80093D414406386040203250400631E05003B -:10620800130604009305040013050900EFF09FCD61 -:106218002320A40023200500130405006FF09FFA33 -:106228008320C101032481011385090083244101CE -:10623800032901018329C100032A810013010102F6 -:1062480067800000130101FD232291029384050059 -:10625800232E310183A904012324810283A545004B -:106268001354564083A78400B30934012320210323 -:10627800232A510123261102232C4101930A0500E8 -:106288001389190063C6270D13850A002326C10048 -:10629800EFF08FFF0326C10093074501130A05009D -:1062A8009386070013070000938646006348870A11 -:1062B800635404001304000083A60401131424008B -:1062C8003387870093962600938744011376F60157 -:1062D800B386D700630E0608130800023308C840C7 -:1062E8009305000003A5070093084700938747001C -:1062F8003315C500B365B50023AEB8FE83A5C7FF47 -:10630800B3D5050163E2D7062322B70063840500ED -:10631800138929001309F9FF23282A0113850A0084 -:1063280093850400EFF0DF808320C10203248102FB -:1063380013050A0083244102032901028329C101AC -:10634800032A8101832A41011301010367800000A8 -:1063580093851500939717006FF0DFF223AE06FEC2 -:10636800130717006FF05FF4138708006FF09FF7AB -:106378009387470003A6C7FF13074700232EC7FECE -:10638800E3E8D7FE6FF01FF98327050103A705018E -:10639800B387E740639C07021317270013054501DD -:1063A80093854501B306E500B385E5009386C6FFEE -:1063B8009385C5FF03A6060003A70500630CE60046 -:1063C8009307F0FF6364E600930710001385070046 -:1063D80067800000E36CD5FC6FF05FFF130101FEDE -:1063E800232A910093840500232631019305060092 -:1063F8009309050013850400232C8100232E110026 -:106408002328210113040600EFF01FF8631C05027E -:106418009305000013850900EFF00FE793071000BC -:106428002328F500232A05008320C10103248101C4 -:1064380083244101032901018329C10013010102B9 -:106448006780000013091000634A050093070400E1 -:106458001309000013840400938407008325440073 -:1064680013850900EFF04FE20323040183A8040118 -:1064780013064401131E230013884401939828002F -:10648800B70E010023262501330EC601B3081801F3 -:1064980093064501130F0000938EFEFF03270600A5 -:1064A800832F080093864600B375D701B3F7DF0141 -:1064B800B385E501B385F54093DF0F0193570701D5 -:1064C800B387F74113D70541B387E70013DF0741C7 -:1064D800B3F5D50193970701B3E7B7001308480050 -:1064E80023AEF6FE13064600E36A18FBB705010063 -:1064F8009385F5FF636CC6019386C6FF83A70600E4 -:1065080063820704232865006FF01FF283270600C3 -:10651800938646001306460033F7B7003307E701B2 -:106528001358074193D70701B387070113DF0741C2 -:106538003377B70093970701B3E7E70023AEF6FE7A -:106548006FF05FFB1303F3FF6FF01FFBB707F07FDC -:10655800B3F5B700B707C0FCB385F5006358B000C2 -:10656800930700001385070067800000B305B0405B -:1065780093D74541130730016348F700B705080072 -:10658800B3D5F5406FF0DFFD9387C7FE9306E001B2 -:10659800930500001307100063C6F60093C7F7FFC2 -:1065A8003317F700930707006FF0DFFB130101FDB6 -:1065B8002322910283240501232E310193094501E9 -:1065C80093942400B38499002324810203A4C4FF74 -:1065D800232021032326B1001305040023261102DA -:1065E800EFF0CFFA8325C10093070002B387A740D5 -:1065F80023A0F5009307A0001389C4FF63CCA70468 -:106608009307B000B387A7403707F03FB356F400AD -:10661800B3E6E6001307000063F4290103A784FF2B -:10662800130555013315A400B357F700B367F500F8 -:106638008320C10203248102832441020329010229 -:106648008329C101138507009385060013010103FF -:10665800678000009307000063F6290183A784FF81 -:10666800138984FF130555FF630E05021307000203 -:106678003306A7403314A4003707F03F3364E4001F -:10668800B3D6C700B366D4001307000063F429012A -:106698000327C9FFB397A7003357C700B3E7E7003D -:1066A8006FF01FF9B706F03FB366D4006FF05FF8DC -:1066B800130101FD232481021384050093051000B2 -:1066C800232291022320210393040600232E310163 -:1066D800232C41011309070023261102138A0600FF -:1066E800EFF08FBA370710009307F7FFB3F797005B -:1066F80093D4440193F4F47F93090500639A040842 -:106708002326F100630E0408130581002324810069 -:10671800EFF00FEF83268100630005080327C1000F -:1067280093070002B387A740B317F700B3E7D70072 -:106738003357A70023AAF9002326E1000324C10048 -:1067480023AC8900333480001304140023A8890083 -:10675800638A04069384D4BCB384A40093075003CB -:1067680023209A003385A7402320A9008320C10253 -:1067780003248102138509008324410203290102AD -:106788008329C101032A81011301010367800000E5 -:10679800B3E7E7006FF0DFF623AAD9006FF01FFA1E -:1067A8001305C100EFF0CFE58327C10013050502EB -:1067B8001304100023AAF9009307100023A8F90076 -:1067C8006FF01FF9931724001305E5BCB387F90090 -:1067D8002320AA0003A5070113145400EFF00FDBD0 -:1067E8003304A440232089006FF05FF8130101FDF2 -:1067F800232C4101138A05009305810023261102E9 -:106808002324810223229102232E3101232A5101BC -:106818002328610123202103130B0500EFF01FD962 -:1068280013040500938905009384050013050A00E5 -:106838009305C100EFF09FD7930A050083270B014A -:1068480003250A010327C100B387A7400325810058 -:10685800939757003305E5403385A7006358A00494 -:106868001315450193860500B30435019387060087 -:1068780013860A0013050400938504009386070015 -:10688800EF60C0128320C1020324810283244102E5 -:10689800032901028329C101032A8101832A4101B5 -:1068A800032B010113010103678000001389050010 -:1068B800B705F0FFEFA04057B30625016FF01FFBA7 -:1068C800130101FF23248100232611002322210123 -:1068D80023203101930770011304050063CAA7023E -:1068E8001314350097B70000938747DF3384870078 -:1068F80003250401832544018320C100032481006A -:106908000329410083290100130101016780000068 -:1069180097B700009387076503A5070083A547007D -:1069280097B700009387876403A9070083A94700E6 -:1069380013060900938609001304F4FFEF6010089A -:10694800E31804FE6FF05FFB9387F5FF032706014A -:1069580093D75740938717009397270093064601CC -:1069680013172700B307F5003387E60063E6E60050 -:10697800636EF500678000009386460003A6C6FF95 -:1069880013054500232EC5FE6FF05FFE1305450075 -:10699800232E05FE6FF0DFFD8326050193D75540B2 -:1069A8001307450163C0F60463D4D70293F5F501D4 -:1069B8006380050293962700B306D70003A6060056 -:1069C80013051000B356B600B395B6006318B602A7 -:1069D80093972700B307F700636AF70013050000D1 -:1069E80067800000938706006FF09FFE9387C7FFBC -:1069F80083A60700E38206FE1305100067800000E7 -:106A0800130101FF232481001304050013850500E9 -:106A180097C7000023AC071223261100EFA0806B54 -:106A28009307F0FF631CF50097C7000093870712D0 -:106A380083A70700638407002320F4008320C10094 -:106A4800032481001301010167800000130101FF85 -:106A580023229100B70400802324810023261100FB -:106A680093C4F4FF33F7B400232006003708F07FFF -:106A7800930605009387050013040600635407076F -:106A88003368A70063000806B707100013860500DF -:106A98006356F70297B700009387C74D03A6070010 -:106AA80083A64700EF6080719307A0FC930605005A -:106AB8001386050033F7B4002320F400832704006D -:106AC80013574741130727C03387E700B7071080DC -:106AD8009387F7FF3376F600B707E03F2320E400FB -:106AE800B367F6008320C10003248100832441009A -:106AF80013850600938507001301010167800000D4 -:106B0800130101F6232AF108B707008093C7F7FF9E -:106B1800232EF1002328F100B707FFFF2326D10811 -:106B28002324B100232CB100938787209306C10842 -:106B380093058100232E1106232AF1002328E1085A -:106B4800232C0109232E11092322D100EF00803CB8 -:106B580083278100238007008320C1071301010ACE -:106B680067800000130101F6232AF108B7070080A7 -:106B780093C7F7FF232EF1002328F100B707FFFF83 -:106B8800938787202324C1082326D1082328E108D6 -:106B9800232C0109232E1109232AF10097C700008D -:106BA800938747F62324A100232CA10003A50700FF -:106BB800930681081386050093058100232E11068C -:106BC8002322D100EF0000358327810023800700AE -:106BD8008320C1071301010A67800000130101FF28 -:106BE80023248100138405008395E50023261100E2 -:106BF800EF30D03E6340050283270405B387A70022 -:106C08002328F4048320C100032481001301010117 -:106C1800678000008357C40037F7FFFF1307F7FFAB -:106C2800B3F7E7002316F4006FF0DFFD130500004B -:106C38006780000083D7C500130101FE232C810063 -:106C4800232A91002328210123263101232E110014 -:106C580093F7071093040500138405001309060031 -:106C680093890600638A07008395E5009306200050 -:106C780013060000EF30901D8357C40037F7FFFF5D -:106C88001307F7FFB3F7E7002316F4008315E400B2 -:106C9800032481018320C10193860900130609009A -:106CA8008329C100032901011385040083244101BC -:106CB800130101026F30C00B130101FF232481006F -:106CC800138405008395E50023261100EF30101882 -:106CD8009307F0FF0357C4006312F502B7F7FFFFED -:106CE8009387F7FFB3F7E7002316F4008320C1006A -:106CF800032481001301010167800000B717000019 -:106D0800B367F7002316F4002328A4046FF01FFECE -:106D18008395E5006F3000163367B5009303F0FFE5 -:106D28001377370063100710B7877F7F9387F7F7CC -:106D38000326050083A60500B372F6003363F60048 -:106D4800B382F200B3E26200639272106316D6084F -:106D58000326450083A64500B372F6003363F600A8 -:106D6800B382F200B3E26200639E720C6316D60629 -:106D78000326850083A68500B372F6003363F60008 -:106D8800B382F200B3E262006398720C6316D60411 -:106D98000326C50083A6C500B372F6003363F60068 -:106DA800B382F200B3E262006392720C6316D602F9 -:106DB8000326050183A60501B372F6003363F600C6 -:106DC800B382F200B3E26200639C720A13054501C4 -:106DD80093854501E30ED6F4131706019397060130 -:106DE800631EF7001357060193D706013305F740D2 -:106DF8009375F50F6390050267800000135707012C -:106E080093D707013305F7409375F50F6394050091 -:106E1800678000001377F70F93F7F70F3305F740F4 -:106E2800678000000346050083C6050013051500AA -:106E3800938515006314D600E31606FE3305D64085 -:106E4800678000001305450093854500E31CD6FCC8 -:106E580013050000678000001305850093858500F1 -:106E6800E312D6FC13050000678000001305C50077 -:106E78009385C500E318D6FA130500006780000063 -:106E88001305050193850501E31ED6F813050000D7 -:106E9800678000009307050003C705009387170064 -:106EA80093851500A38FE7FEE31807FE67800000AF -:106EB800930705009387170003C7F7FFE31C07FE36 -:106EC8003385A7401305F5FF678000001307050009 -:106ED80063140600678000009385150083C6F5FFDC -:106EE800930717001308F6FFA38FD7FE63980600D1 -:106EF8003307C700639AE70067800000138707001D -:106F0800130608006FF0DFFC93871700A38F07FEB6 -:106F18006FF05FFE130101E32326111C2322911C4D -:106F28002320211D232E311B2322911B9389050029 -:106F380093040600938C06002324811C232C411BF8 -:106F4800232A511B2328611B2326711B2324811B01 -:106F58002320A11B232EB11913090500EFE00F848C -:106F680083270500138507002324F102EFF05FF45F -:106F780083D7C900232AA1002328010C232A010C46 -:106F8800232C010C232E010C93F7070863800704B8 -:106F980083A70901639C07029305000413050900F0 -:106FA800EFE08FAB23A0A90023A8A900631C05006C -:106FB8009307C0002320F9009307F0FF232CF1006A -:106FC8006F00405A9307000423AAF9009307C10EE3 -:106FD8002322F10C2326010C2324010C130A0000A0 -:106FE80093880700232A0102232801022324010091 -:106FF8002322010223260102232C0100138404000A -:107008001307500283470400638407006392E70C68 -:10701800B30A9440638A0A048327C10C23A098000A -:1070280023A25801B38757012326F10C8327810C2B -:107038001307700093888800938717002324F10CA6 -:10704800635EF7001306410C9385090013050900D8 -:10705800EF305068631205509308C10E83278101F1 -:10706800B3875701232CF10083470400639407007A -:107078006F109061930714002328F100A303010AFD -:10708800930BF0FF232E010013040000930A9000D5 -:10709800130CA0028327010103CB07009387170075 -:1070A8002328F10093070BFE1307A0056374F7006C -:1070B8006F10C02D17A700001307C77493972700F8 -:1070C800B387E70083A70700B387E7006780070057 -:1070D800130414006FF01FF397A7000093878735F8 -:1070E800232AF10293770402639407006F10C00B00 -:1070F800938C7C0093FC8CFF93878C0003AD0C0071 -:1071080083AC4C002326F10093771400638E0700AC -:10711800B3679D01638A0700930700032304F10AFC -:10712800A304610B136424001374F4BF93072000B5 -:107138006F0010481305090023221101EFD01FE644 -:1071480083274500138507002326F102EFF05FD659 -:107158002322A10213050900EFD05FE483278500ED -:10716800832841002324F10083274102E38407F2A6 -:1071780083278100E38007F283C70700E38C07F0C9 -:10718800136404406FF01FF18347710AE39407F01A -:1071980093070002A303F10A6FF0DFEF13641400F2 -:1071A8006FF05FEF83A70C00938C4C00232EF10047 -:1071B800E3D207EEB307F040232EF1001364440036 -:1071C8006FF05FED9307B0026FF0DFFC83270101DA -:1071D80003CB0700138D170063188B0583AB0C00D6 -:1071E80093874C0063D40B00930BF0FF938C07003C -:1071F8002328A1016FF01FEA13850B009305A00057 -:1072080023221101130D1D00EF9010428328410025 -:10721800034BFDFFB30BB501930D0BFDE3FEBAFD68 -:107228002328A1016FF01FE8930B00006FF0DFFE29 -:10723800136404086FF01FE6032D0101232E0100DB -:107248000325C1019305A00023221101130B0BFD97 -:10725800EF90903D130D1D00B307AB00034BFDFFEE -:10726800232EF1008328410093070BFDE3FAFAFC73 -:107278006FF01FFB136484006FF0DFE183270101C7 -:1072880003C7070093078006631CF70083270101E3 -:1072980013640420938717002328F1006FF09FDF01 -:1072A800136404046FF01FDF8327010103C707007D -:1072B8009307C006631CF700832701019387170013 -:1072C8002328F100136404026FF0DFDC1364040167 -:1072D8006FF05FDC93874C002326F10083A70C0036 -:1072E800A303010A2306F11223220100930B1000C5 -:1072F800930D0000930C0000130C0000130D000008 -:107308009304C1126F00503B136404019377040285 -:10731800638E0704938C7C0093FC8CFF93878C000E -:1073280003AD0C0083AC4C002326F10063DE0C0097 -:10733800330DA041B337A001B30C9041B38CFC408E -:107348009307D002A303F10A9307F0FFE39CFB68BD -:10735800E39E0C7093079000E3EAA771130D0D03E9 -:10736800A307A1199304F1186F00D06D93874C00FF -:107378002326F100937704016388070003AD0C000E -:10738800935CFD416FF09FFA9377040403AD0C0002 -:1073980063880700131D0D01135D0D416FF05FFE3B -:1073A80093770420E38E07FC131D8D01135D8D4137 -:1073B8006FF01FFD937784006382070C93874C005E -:1073C8002326F10083A70C0003A6070083A6470025 -:1073D80003A7870083A7C7002328C10C232AD10C41 -:1073E800232CE10C232EF10C1305010D232211018E -:1073F800EFD01FB42326A10A930720008328410059 -:107408006314F50C8327010D930501081305010981 -:107418002328F1088327410D23200108232201088E -:10742800232AF1088327810D232401082326010834 -:10743800232CF1088327C10D232EF108EF60C069C2 -:1074480083284100635605009307D002A303F10A7D -:107458009307700497A400009384C4FB63C6670174 -:1074680097A400009384C4FA1374F4F7232201004C -:10747800930B3000930D00006F00D05D938C7C005F -:1074880093FC8CFF83A50C0003A64C0093878C000B -:1074980013050109232211012326F100EF90403E34 -:1074A80083270109832841002328F10C83274109F8 -:1074B800232AF10C83278109232CF10C8327C10986 -:1074C800232EF10C6FF05FF2930710006318F5029A -:1074D8008327C10D63D607009307D002A303F10ADF -:1074E8009307700497A40000938444F3E3CE67F7EE -:1074F80097A40000938444F26FF01FF7137CFBFD00 -:10750800930710046310FC0A930700032304F10A8D -:1075180013071006930780056314EB009307800791 -:10752800A304F10A930730061364240063D2775149 -:1075380093851B001305090023221101EFD0DFD129 -:107548009304050083284100631A054E83D7C900B8 -:1075580093E707042396F90083D7C90093F7070434 -:10756800E39C07A48320C11C0324811C03258101FB -:107578008324411C0329011C8329C11B032A811B65 -:10758800832A411B032B011B832BC11A032C811A4D -:10759800832C411A032D011A832DC1191301011DD2 -:1075A800678000009307F0FF638EFB489307700421 -:1075B800232201006314FC00638C0B48832AC10D4D -:1075C800936704102320F102232C0102032E010DDE -:1075D800832D410D032D810D63DA0A00B707008062 -:1075E800B3CA57019307D002232CF1029307100462 -:1075F8006314FC4A13050109232411052328C10932 -:10760800232CA109232AB109232E5109EF90404CBC -:107618001306C10AEFF08FC3138605009305050012 -:1076280013050109EF90C0258327010913060106F8 -:10763800930501072328F10683274109130501084B -:1076480023200106232AF106832781092322010624 -:1076580023240106232CF1068327C109232EF106D2 -:10766800B707FC3F2326F106EF60005D03280108F9 -:107678000326410883268108032DC10893050108C4 -:10768800130501092328010923220105232AC1081A -:107698002320C104232CD108232ED102232EA10993 -:1076A8002320010823220108232401082326010896 -:1076B800EF60C01F8326C103032601040328410489 -:1076C8008328810463160500130710002326E10AA6 -:1076D8001307100697AA0000938ACAD56316EB0011 -:1076E80097AA0000938ACAD3138EFBFF938D0400D8 -:1076F800B7070340930501082322C10813050109B0 -:1077080013060107232411052322C105232001099B -:10771800232EF1062324D1082326A10923280106B4 -:10772800232A0106232C0106EF60005103260109D4 -:1077380083264109130501092320C104232ED10200 -:10774800EF80D06593050500130A050013050109AC -:10775800032D8109832CC109EF80907A83270109C1 -:10776800032601048326C1032320F1068327410948 -:107778002328C106930501072322F10683278109DF -:1077880013060106130501082324F1068327C109FE -:10779800232CA107232E91072326F106232AD1069D -:1077A800EF70900FB3854A0183C50500032E41048D -:1077B800832CC108938D1D0083220108832F410863 -:1077C800032F8108232EC103A38FBDFE9307F0FF6B -:1077D800138D0C0083288104630CFE06130EFEFF34 -:1077E8009305010813050109232EE105232CF10552 -:1077F800232A5104232811052326C10523285108CB -:1078080023245104232AF1092322F105232CE10919 -:107818002320E105232E91092320010823220108B2 -:107828002324010823260108EF6040088326010469 -:107838000326410403288104032EC104832801057B -:1078480083224105832F8105032FC105E31205EA31 -:10785800370DFE3F93050108130501092320110583 -:107868002328510823265104232AF1092324F1054A -:10787800232CE1092322E105232E91092320010865 -:1078880023220108232401082326A109EF60C00E42 -:10789800832801046346A0048322C104832F810442 -:1078A800032F4104930501081305010923285108F2 -:1078B800232AF109232CE109232E91092320010809 -:1078C80023220108232401082326A109EF50107E52 -:1078D800832801046318051A137A1A0063040A1A24 -:1078E80003C6FA00232EB10B930500038326C10BB0 -:1078F8009387F6FF232EF10A83C7F6FF6380C71626 -:10790800130690036390C71683C7AA00A38FF6FED9 -:10791800138A0D0013077004330A9A40032DC10A15 -:10792800631EEC2A1307D0FF6344ED0063DAAB3320 -:10793800130BEBFF930AFDFF2326510B9376FBFDF8 -:10794800930510041377FB0F130600006398B60025 -:107958001307F7001377F70F13061000230AE10A3D -:107968009307B00263D80A00930A1000B38AAA41A9 -:107978009307D002A30AF10A9307900063D4572B08 -:10798800130C310C130D0C00930D90009305A000FF -:1079980013850A0023201103EF9080531305050374 -:1079A800A30FACFE9305A00013850A00EF90004AD0 -:1079B800930CFCFF930A05008328010263C6AD24DB -:1079C800930A0503130CECFFA38F5CFF9307610B6D -:1079D8006360AC251307410BB387E7402328F10206 -:1079E800B38B47019307100063C6470193771400D0 -:1079F8006386070083274101B38BFB001374F4BF30 -:107A0800936704102320F102930C0000130C00006C -:107A1800130D000083278103638607001307D00234 -:107A2800A303E10A03240102930D00006F00C0487C -:107A3800232201009304C1126FF05FB82322A10032 -:107A48006FF0DFB723220100930B60006FF01FB7C0 -:107A580023227101930B10006FF05FB6A38FB6FE5F -:107A68006FF0DFE89387170093F7F70F6FF01FEABF -:107A7800130A1A00A30FEAFEB3874C41E3DA07FEA4 -:107A88006FF05FE98327C103138A0D001307000312 -:107A9800B38CFD006FF05FFE93076004630EFC007B -:107AA80093075004938C1B006304FC00938C0B0019 -:107AB800130620006F00C000938C0B0013063000E3 -:107AC8009307010B1308C10B1307C10A93860C0017 -:107AD8009305010913050900232011052328C1096D -:107AE800232EC103232AB109232CA109232E5109CE -:107AF800EFC0CFFF9307700493040500032EC10362 -:107B0800832801046316FC00937714006388070A2E -:107B180093076004338A94016312FC0603C70400C8 -:107B2800930700036318F704930501081305010977 -:107B3800232011052328C109232EC103232AB109B3 -:107B4800232CA109232E51092320010823220108EF -:107B58002324010823260108EF505055032EC103A2 -:107B6800832801046308050093071000B38C97412C -:107B78002326910B8327C10A330AFA0093050108CB -:107B880013050109232E11032328C109232AB1094A -:107B9800232CA109232E510923200108232201089F -:107BA8002324010823260108EF5050508328C103DD -:107BB80013070003631E0500232E410B032AC10B84 -:107BC8006FF05FD593861700232ED10A2380E70034 -:107BD8008327C10BE3E847FF6FF05FFE13076004DC -:107BE800E31AECD46352A00763960B0013771400D2 -:107BF8006302070C832741013307FD00B38BEB00B9 -:107C0800130B60066F004009138C0C006FF01FD82F -:107C1800130C1C000347FCFF93871700A38FE7FE94 -:107C28006FF01FDB1307610B63180600930700034F -:107C3800230BF10A1307710B938A0A0393071700A2 -:107C4800230057016FF01FD963960B0013771400B8 -:107C58006306070683274101138717006FF01FFA91 -:107C680063404D0313771400930B0D006306070060 -:107C780083274101B30BFD00130B70066F00C00191 -:107C880083274101130B7006B30BFA006346A0016A -:107C98003383AB41930B1300137C0440930C000017 -:107CA800E30A0CD6130C0000E356A0D79306F00F96 -:107CB8006F008003930B0D006FF09FF4130B6006A9 -:107CC800930B10006FF05FFD6356A70383278100B5 -:107CD800330DED4003C71700630C070293871700A5 -:107CE800130C1C002324F1008327810003C707001D -:107CF800E31CD7FC8325410233059C01232E110385 -:107D0800EF908012B30B75018328C1036FF09FD0E9 -:107D1800938C1C006FF05FFD13874C002326E10055 -:107D28001377040283A70C0063000702032781016D -:107D380023A0E7001357F74123A2E700832CC100D3 -:107D4800832401016FF08FAB1377040163080700E8 -:107D58000327810123A0E7006FF05FFE1377040477 -:107D680063080700035781012390E7006FF01FFDA8 -:107D780013740420E30E04FC034781012380E70009 -:107D88006FF0DFFB13640401937704026388070430 -:107D9800938C7C0093FC8CFF93878C0003AD0C00C4 -:107DA80083AC4C002326F1001374F4BF9307000042 -:107DB800A303010A1307F0FF638CEB4213070400C7 -:107DC800B3669D011374F4F76394064263820B5AF9 -:107DD800130710006392E7426FF04FD893874C0067 -:107DE8002326F100937704016386070003AD0C0096 -:107DF8006F000001937704046388070003DD0C001B -:107E0800930C00006FF05FFA93770420E38007FE7D -:107E180003CD0C006FF0DFFE93874C002326F100A2 -:107E2800B787FFFF93C707832314F10A97970000CA -:107E38009387075F03AD0C00232AF102930C00001F -:107E48001364240093072000130B80076FF05FF67C -:107E580093874C002326F100A303010A9307F0FF40 -:107E68002320110383A40C006386FB0213860B00F6 -:107E78009305000013850400EFD09FB02322A100D2 -:107E880083280102630805DEB30B95402322010015 -:107E98006FF04FDE13850400EFF08F818328010215 -:107EA800930B050023220100930D0000930C0000A2 -:107EB800130C0000130D00002320B10363D47D01CF -:107EC800232071030347710A63080700832701020F -:107ED800938717002320F102937A240063880A000D -:107EE80083270102938727002320F1029377440810 -:107EF800232CF102639807068327C1010327010297 -:107F0800338EE7406350C007130F000197AE00009F -:107F1800938E0EA6930F70008326810C23A0D801A0 -:107F28000327C10C9386160013868800634ACF473F -:107F38003307EE0023A2C8012326E10C2324D10C29 -:107F48001307700093080600635ED7001306410C00 -:107F58009385090013050900EF20D077E314056C19 -:107F68009308C10E0347710A630807041307710ACF -:107F780023A0E8001307100023A2E8000327C10C80 -:107F88009306700093888800130717002326E10CD6 -:107F98000327810C130717002324E10C63DEE60096 -:107FA8001306410C9385090013050900EF20907210 -:107FB800E31A05669308C10E63880A041307810A49 -:107FC80023A0E8001307200023A2E8000327C10C20 -:107FD8009306700093888800130727002326E10C76 -:107FE8000327810C130717002324E10C63DEE60046 -:107FF8001306410C9385090013050900EF20906DC5 -:10800800E31205629308C10E832781031307000852 -:108018006398E7068327C10103270102B38AE74073 -:1080280063505007130E000197A7000093874795E8 -:10803800930E70008326810C23A0F8000327C10C3F -:10804800938616001386880063485E3B3387EA00F0 -:1080580023A258012326E10C2324D10C1307700016 -:1080680093080600635ED7001306410C9385090048 -:1080780013050900EF201066E316055A9308C10E90 -:10808800B38A7D41635050071308000197AD000083 -:10809800938D0D8F130E70000327810C23A0B80158 -:1080A8008326C10C1307170013868800634E5839BE -:1080B80023A25801B38ADA002326510D2324E10CA8 -:1080C800930670009308060063DEE6001306410C71 -:1080D8009385090013050900EF20D05FE3140554C8 -:1080E8009308C10E13770410832DC10C6312073A4D -:1080F8003383BB0123A0980023A278012326610CB7 -:108108008327810C130770009388880093871700D2 -:108118002324F10C6352F74C1306410C9385090094 -:1081280013050900EF20105BE31E054E9308C10EEE -:108138006F00804A13640401937704026382070284 -:10814800938C7C0093FC8CFF93878C0003AD0C0010 -:1081580083AC4C002326F100930710006FF05FC535 -:1081680093874C002326F100937704016386070068 -:1081780003AD0C006F0000019377040463880700C7 -:1081880003DD0C00930C00006FF01FFD93770420B3 -:10819800E38007FE03CD0C006FF0DFFE9797000029 -:1081A800938707286FE0DFF393874C002326F100BD -:1081B800937704016386070003AD0C006F0000018C -:1081C800937704046388070003DD0C00930C000018 -:1081D8006FE09FF393770420E38007FE03CD0C0044 -:1081E8006FF0DFFE13070400930710006FF05FBD08 -:1081F80013071000638EE79413072000638EE712BD -:10820800930701199396DC0113777D00135D3D00F8 -:108218001307070333EDA60193DC3C00A38FE7FEA9 -:10822800B3669D019384F7FF639E0602937614005C -:10823800638A0600930600036306D700A38FD4FE63 -:108248009384E7FF93070119938D0B002322010004 -:10825800B38B9740930C0000130C0000130D000023 -:108268006FF09FC5938704006FF0DFF9130A0000D1 -:10827800930D0119937A0440130C90001306A00083 -:108288009306000013050D0093850C0023221101AD -:10829800EF40C02113050503A38FADFE9384FDFFB6 -:1082A800130A1A0083284100638E0A048327810079 -:1082B80083C707006318FA049307F00F6304FA04EE -:1082C80063940C006370AC05832741028325C102C7 -:1082D80023221101B384F440138607001385040098 -:1082E800EFE0DFBE83278100130A000083284100E6 -:1082F80083C71700638807008327810093871700C7 -:108308002324F10013050D0093850C001306A0002B -:108318009306000023221101EF30903B938C050057 -:10832800B3E5A500130D050083284100E38C05F093 -:10833800938D04006FF09FF4930401190327410300 -:108348009377FD009384F4FFB307F70083C7070012 -:10835800135D4D002380F4009397CC0133EDA70102 -:1083680093DC4C00B3679D01E39A07FC6FF09FED27 -:1083780093040119E39807EC13771700E30407EC5B -:1083880093070003A307F1186FE0DFFDE30E0B2E40 -:1083980023066113A303010A232691016FE0DFF48A -:1083A8001307070123A2E8012326E10C2324D10C9B -:1083B80063DEDF021306410C9385090013050900EB -:1083C8002324F1052322D1052320E105232EC1030F -:1083D800EF205030E3180524832F8104832E4104B5 -:1083E800032F0104032EC1031306C10E130E0EFF43 -:1083F800930806006FF05FB21307070123A2C801B4 -:108408002326E10C2324D10C63DADE021306410C87 -:1084180093850900130509002320D105232EF102B5 -:10842800232CC103EF20102BE31E051E832E01040D -:108438008327C103032E81031306C10E938A0AFF03 -:10844800930806006FF01FBF9386060123A2080158 -:108458002326D10C2324E10C6356EE021306410CAB -:108468009385090013050900232EC103232C01035A -:10847800EF205026E318051A032EC10303288103B1 -:108488001306C10E938A0AFF930806006FF0DFC037 -:1084980013075006635467730327010D93050108FA -:1084A800130501092328E1080327410D232C110393 -:1084B80023200108232AE1080327810D232201082C -:1084C80023240108232CE1080327C10D23260108D2 -:1084D800232EE108EF50803D83288103631405189B -:1084E80097970000938747F623A0F800930710009A -:1084F80023A2F8008327810C938D1D002326B10D3C -:10850800938717002324F10C1307700093888800C1 -:10851800635EF7001306410C9385090013050900F3 -:10852800EF20501BE31005109308C10E8327C10AE2 -:1085380063C64701937714006380070A8327810283 -:10854800032741019388880023ACF8FE8327410163 -:1085580023AEF8FE8327C10CB387E7002326F10C6E -:108568008327810C13077000938717002324F10CCD -:10857800635EF7001306410C938509001305090093 -:10858800EF205015E310050A9308C10E9304FAFF73 -:1085980063549004130B0001979A0000938A4A3E93 -:1085A800130C70008327810C23A058010327C10CEA -:1085B8009387170093868800634A9B0623A2980036 -:1085C800B384E4002326910C2324F10C13077000D4 -:1085D80093880600E342F7B4137444006314047EDE -:1085E800032BC101832701026354FB00138B07008F -:1085F80083278101B3876701232CF1008327C10CEE -:10860800638C07001306410C9385090013050900C4 -:10861800EF20500CE3180500832741002324010CA8 -:10862800E39C07049308C10E6FF04FF1130707018D -:1086380023A268012326E10C2324F10C635EFC00CD -:108648001306410C9385090013050900EF209008D3 -:10865800631A057C9306C10E938404FF9388060071 -:108668006FF05FF40327C10A6346E016979700008E -:10867800938787DD23A0F8009307100023A2F80052 -:108688008327810C938D1D002326B10D9387170036 -:108698002324F10C1307700093888800635EF700A9 -:1086A8001306410C9385090013050900EF20900279 -:1086B800631A05769308C10E8327C10A63980700D9 -:1086C80063160A0093771400E38807F08327810272 -:1086D800032741019388880023ACF8FE83274101D2 -:1086E80023AEF8FE8327C10CB387E7002326F10CDD -:1086F8008327810C13077000938717002324F10C3C -:10870800635EF7001306410C938509001305090001 -:10871800EF20407C631805709308C10E832AC10AB4 -:1087280063D20A06B30A504113870800130C0001EC -:10873800179B0000130BCB24930C70008327810C2C -:10874800232067018326C10C93871700938888002C -:1087580063465C0523225701B38ADA002326510DAC -:108768002324F10C13077000635EF7001306410C15 -:108778009385090013050900EF20C0756314056A85 -:108788009308C10E8327C10C23A0980023A2480197 -:10879800B38747012326F10C6FF09F969386060155 -:1087A800232287012326D10C2324F10C63DEFC004D -:1087B8001306410C9385090013050900EF20807109 -:1087C800631205669308C10E938A0AFF138708008F -:1087D8006FF0DFF6930A0D006354AA01930A0A00AA -:1087E800635250050327810CB38DBA0123A098006A -:1087F8001307170023A258012326B10D2324E10CE7 -:10880800930670009388880063DEE6001306410C27 -:108818009385090013050900EF20C06B63140560F8 -:108828009308C10E63D40A00930A0000B30A5D419D -:1088380063505007930D0001179B0000130B4B1456 -:10884800930B70000327810C23A068018326C10CB9 -:10885800130717001386880063C25D1B23A2580103 -:10886800B38ADA002326510D2324E10C9306700005 -:108878009308060063DEE6001306410C93850900A1 -:1088880013050900EF200065631E05589308C10E03 -:1088980093770440B38AA40163840702130B700022 -:1088A800B38B4401979D0000938D8D0D63140C18B4 -:1088B80063940C18B387440163F45701938A070043 -:1088C8008327C10A63C6470193771400638A0704A4 -:1088D80083278102032741019388880023ACF8FE8F -:1088E8008327410123AEF8FE8327C10CB387E70035 -:1088F8002326F10C8327810C130770009387170038 -:108908002324F10C635EF7001306410C93850900DC -:1089180013050900EF20005C631605509308C10E8B -:10892800B3844401B38754418324C10AB3049A40F1 -:1089380063D4970093840700635490048327C10C81 -:1089480023A0580123A29800B387F4002326F10C32 -:108958008327810C1307700093888800938717007A -:108968002324F10C635EF7001306410C938509007C -:1089780013050900EF2000566316054A9308C10E37 -:108988009387040063D40400930700008324C10A7A -:10899800B3049A40B384F440E35090C4130B00012D -:1089A800979A0000938ACAFD130C70008327810CE4 -:1089B80023A058010327C10C9387170093868800CA -:1089C800E35E9BBE1307070123A268012326E10C7F -:1089D8002324F10C635EFC001306410C9385090007 -:1089E80013050900EF20004F631E05429306C10ED0 -:1089F800938404FF938806006FF05FFB938606015B -:108A080023A2B8012326D10C2324E10C63DEEB005A -:108A18001306410C9385090013050900EF20804BCC -:108A2800631205401306C10E938A0AFF93080600D5 -:108A38006FF05FE163820C0E938CFCFF8327C10209 -:108A4800032741029388880023ACF8FE832741025C -:108A580023AEF8FE8327C10CB387E7002326F10C69 -:108A68008327810C938717002324F10C635EFB0096 -:108A78001306410C9385090013050900EF20804572 -:108A88006312053A9308C10E8327810033875B413F -:108A980083C707006354F700930707006356F00481 -:108AA8000327C10C23A0580123A2F8003387E7004D -:108AB8002326E10C0327810C9388880013071700ED -:108AC8002324E10C6352EB021306410C9385090041 -:108AD80013050900232CF102EF20C03F631405346D -:108AE800832781039308C10E1387070063D4070007 -:108AF80013070000832781001308000183C70700BC -:108B0800B387E7406346F0068327810083C70700E1 -:108B1800B38AFA006FF09FD983278100130CFCFFFA -:108B28009387F7FF2324F1006FF05FF19386060126 -:108B380023A208012326D10C2324E10C6356EB025F -:108B48001306410C9385090013050900232E010320 -:108B5800232CF102EF2000386316052C0328C103EB -:108B6800832781031306C10E938707FF9308060026 -:108B78000327810C23A0B8018326C10C1307170013 -:108B880013868800E344F8FA23A2F800B387D700D5 -:108B98002326F10C2324E10C93080600E356EBF698 -:108BA8001306410C9385090013050900EF20803254 -:108BB800631A05269308C10E6FF01FF58327810CF1 -:108BC8001307100023A09800938D1D0093871700AA -:108BD800138B880063464701937614006388061C4C -:108BE8001307100023A2E8002326B10D2324F10C5B -:108BF80013077000635EF7001306410C93850900A4 -:108C080013050900EF20002D631E0520130BC10E6C -:108C18008327810203274101130B8B00232CFBFEC2 -:108C280083274101232EFBFE8327C10CB387E7006E -:108C38002326F10C8327810C1307700093871700F4 -:108C48002324F10C635EF7001306410C9385090099 -:108C580013050900EF2000286316051C130BC10E2D -:108C68008327010D93050108130501092328F1083D -:108C78008327410D930AFAFF23200108232AF108CC -:108C88008327810D2322010823240108232CF108BE -:108C98008327C10D23260108232EF108EF40104138 -:108CA800630605088327C10C0327810C93841400ED -:108CB8009387F7FFB38747011307170023209B000B -:108CC80023225B012326F10C2324E10C9307700077 -:108CD800130B8B0063DEE7001306410C9385090034 -:108CE80013050900EF20001F631E0512130BC10EA8 -:108CF8009307410B2320FB0083270103032701036C -:108D080093088B002322FB008327C10CB387E7005D -:108D18002326F10C8327810C130770009387170013 -:108D28002324F10CE35AF78A6FF00FBFE35250FD8A -:108D3800130C000197940000938484C4930C700072 -:108D48000327810C23209B008327C10C13071700DE -:108D580093068B0063405C03B387FA0023225B0110 -:108D68002326F10C2324E10C93077000138B0600D3 -:108D78006FF05FF69387070123228B012326F10CFE -:108D88002324E10C63DEEC001306410C93850900F3 -:108D980013050900EF200014631605089306C10E99 -:108DA800938A0AFF138B06006FF09FF923A2E8004D -:108DB8002326B10D2324F10C13077000E35AF7F2B0 -:108DC8006FF09FF18327C101032701023384E74035 -:108DD800E3588080930A000197940000938444B973 -:108DE800130B70008327810C23A098000327C10C64 -:108DF8009387170063C68A0423A288003304E4001B -:108E08002326810C2324F10C13077000635AF7FC06 -:108E18001306410C9385090013050900EF20800B08 -:108E2800630005FC83274100639407006FE0CFF2DD -:108E38009385070013050900EF901FD26FE0CFF16B -:108E48001307070123A258012326E10C2324F10C60 -:108E580093888800635EFB001306410C9385090024 -:108E680013050900EF200007E31E05FA9308C10E59 -:108E7800130404FF6FF01FF7832541001305090051 -:108E8800EF909FCD6FF00FFA8327C10C6394070012 -:108E98006FE08FEC1306410C938509001305090058 -:108EA800EF2040036FE04FEB83278600130101FD9D -:108EB8002324810223261102232291022320210345 -:108EC800232E3101232C4101232A5101232861013A -:108ED800232671012324810113040600639E0702DF -:108EE80023220600130500008320C1020324810207 -:108EF80083244102032901028329C101032A810134 -:108F0800832A4101032B0101832BC100032C81001B -:108F1800130101036780000083A745061389050034 -:108F280013972701635A070683240600130A0500CE -:108F3800930BF0FF83278400639A07001305000052 -:108F480023240400232204006FF01FFA83A944009D -:108F580003AB0400930A000013DC290063CE8A01E6 -:108F68008327840093F9C9FF93848400B389374128 -:108F7800232434016FF01FFC83250B00130609001E -:108F880013050A00EF100014130B4B00630A750158 -:108F9800938A1A006FF09FFCEF1040206FF05FFA81 -:108FA8001305F0FF6FF0DFF9130101ED232481129F -:108FB800232E3111232C41112320A1112326111214 -:108FC8002322911223202113232A511123286111CE -:108FD800232671112324811123229111232EB10FED -:108FE8009309050013840500130A0600138D060073 -:108FF800630805008327850363940700EF901F88A3 -:109008008317C4001397270163420702B72600009D -:1090180003274406B3E7D7002316F400B7E7FFFF9A -:109028009387F7FFB377F7002322F4068357C4002A -:1090380093F78700638E070683270401638A070670 -:109048008357C4001307A00093F7A7016390E708AC -:109058008317E40063CC070693060D0013060A0085 -:109068009305040013850900EF00903F2322A10017 -:109078008320C11203248112032541008324411255 -:10908800032901128329C111032A8111832A41115D -:10909800032B0111832BC110032C8110832C411049 -:1090A800032D0110832DC10F1301011367800000E8 -:1090B8009305040013850900EF90CFACE30205F88F -:1090C8009307F0FF2322F1006FF09FFA930BC1047E -:1090D800232071052324010423220104938D0B000E -:1090E800232601002324010023280100232A01004C -:1090F8002322010093040A009306500283C7040048 -:10910800638407006396D70A33894441630A0904D4 -:109118008327810423A04D0123A22D01B3872701B2 -:109128002324F1048327410493067000938D8D0056 -:10913800938717002322F10463DEF6001306010467 -:109148009305040013850900EFF01FD6E31A0528DC -:10915800938D0B0083274100B38727012322F10059 -:1091680083C70400E382072C138A1400A30D0102AD -:109178001309F0FF130B0000130C00009304A00266 -:10918800930AA00503460A00130A1A00930606FE6E -:10919800E3E2DA0E978700009387877F939626008D -:1091A800B386F60083A60600B386F600678006003D -:1091B800938414006FF09FF49787000093878727A4 -:1091C8002326F10093760C02638C066C130D7D0048 -:1091D800137D8DFF83280D00832A4D00930C8D008D -:1091E80093761C00638E0600B3E65801638A060076 -:1091F80093060003230ED102A30EC102136C2C00A8 -:10920800137CFCBF6F00403413850900EFB01FD9F1 -:109218008327450013850700232AF100EFD05FC993 -:109228002328A10013850900EFB05FD783278500A5 -:109238002324F10083270101E38407F483278100B5 -:10924800E38007F483C60700E38C06F2136C0C4036 -:109258006FF01FF38346B103E39406F2930600020E -:10926800A30DD1026FF0DFF1136C1C006FF05FF1FA -:10927800032B0D00130D4D00E3540BF0330B60412D -:10928800136C4C006FF0DFEF9306B0026FF05FFDD8 -:1092980003460A00930C1A006316960403290D006E -:1092A80093064D00635409001309F0FF138D06005F -:1092B800138A0C006FF0DFEC130509009305A0007A -:1092C800EF709036938C1C0003C6FCFF33094501F0 -:1092D800130A06FD93079000E3F047FF138A0C007A -:1092E8006FF0DFEA130900006FF09FFE136C0C08A3 -:1092F8006FF01FE9930C0A00130B000013050B0015 -:109308009305A000232CC100EF70103203268101C1 -:10931800938C1C0093079000130B06FD03C6FCFFFB -:10932800330BAB00930606FDE3FAD7FC6FF01FFB87 -:1093380003460A00930680066318D600130A1A002B -:10934800136C0C206FF0DFE3136C0C046FF05FE319 -:1093580003460A009306C0066318D600130A1A00CB -:10936800136C0C026FF0DFE1136C0C016FF05FE11E -:1093780083260D00930C4D00A30D01022306D1088E -:1093880013091000930A00009304C1086F00401FDE -:10939800136C0C0193760C02638C0604130D7D008C -:1093A800137D8DFF83280D00832A4D00930C8D00BB -:1093B80063DE0A00B3081041B3361001330350418D -:1093C800B30AD3409306D002A30DD1029306F0FF4F -:1093D8006314D950639E0A569307900063EA17579F -:1093E80093880803A307110F9304F10E6F00C0546C -:1093F80093760C01930C4D006388060083280D00BA -:1094080093DAF8416FF0DFFA93760C0483280D00A5 -:10941800638806009398080193D808416FF05FFEAF -:1094280093760C20E38E06FC9398880193D88841A4 -:109438006FF01FFD13760C0283260D00130D4D00EF -:10944800630C06008327410023A0F60093D7F74159 -:1094580023A2F6006FF01FCA13760C0163080600FA -:109468008327410023A0F6006FF0DFC813760C04B1 -:1094780063080600835741002390F6006FF09FC7EA -:1094880093770C20E38E07FC834741002380F60086 -:109498006FF05FC6136C0C0193760C0263860604AA -:1094A800130D7D00137D8DFF83280D00832A4D0049 -:1094B800930C8D00137CFCBF93060000A30D0102E2 -:1094C8001306F0FF6300C94213060C00B3E5580108 -:1094D800137CFCF7639805406300095813061000D5 -:1094E8006396C6406FF0DFEF93760C01930C4D0046 -:1094F8006386060083280D006F00000193760C0434 -:109508006388060083580D00930A00006FF09FFAE5 -:1095180093760C20E38006FE83480D006FF0DFFE93 -:10952800B786FFFF83280D0093C606839787000040 -:10953800938707EF930C4D00930A0000136C2C00DF -:10954800231ED1022326F100930620006FF01FF797 -:10955800A30D01029306F0FF930C4D0083240D0028 -:109568006300D92C13060900930500001385040035 -:10957800EFC00FC1930A000063040500330995404A -:10958800138D0A0063D42A01130D09008346B10321 -:1095980063840600130D1D0093772C00232CF10023 -:1095A80063840700130D2D0093774C08232EF100D8 -:1095B80063940706B306AB416350D00693080001D5 -:1095C800178800001308885313037000032641040A -:1095D80023A00D01832581041306160013858D0031 -:1095E80063C4D84A23A2DD00B386B6002324D1047D -:1095F8002322C10493067000930D050063DEC600A4 -:10960800130601049305040013850900EFF0DF89B0 -:109618006318055C938D0B008346B10363880604C9 -:109628001306B10323A0CD001306100083264104BE -:1096380023A2CD0003268104938616002322D10499 -:10964800130616002324C10413067000938D8D00A1 -:10965800635ED60013060104930504001385090010 -:10966800EFF09F84631E0556938D0B0083278101BD -:10967800638807041306C10323A0CD001306200046 -:109688008326410423A2CD00032681049386160075 -:109698002322D104130626002324C10413067000D4 -:1096A800938D8D00635ED6001306010493050400B4 -:1096B80013850900EFF04FFF63140552938D0B00DB -:1096C8008327C101930600086394D706B306AB410C -:1096D8006350D00693080001178800001308084358 -:1096E800130370000326410423A00D018325810480 -:1096F8001306160013858D0063C4D83E23A2DD002F -:10970800B386B6002324D1042322C1049306700033 -:10971800930D050063DEC6001306010493050400DB -:1097280013850900EFF04FF8631C054A938D0B0071 -:10973800B38A2A4163505007930800011788000034 -:109748001308C83C130370008326410423A00D01AD -:10975800032681049386160093858D0063CE583DB9 -:1097680023A25D01B38ACA00232451052322D10410 -:1097780013067000938D0500635ED600130601047E -:109788009305040013850900EFF00FF2631A0544EE -:10979800938D0B008326810423A22D0123A09D0015 -:1097A80033892601832641042324210513067000EA -:1097B800938616002322D10413878D00635ED6009A -:1097C800130601049305040013850900EFF0CFED9B -:1097D8006318054013870B0093774C006396073A8C -:1097E8006354AB01130B0D0083274100B387670156 -:1097F8002322F10083278104638C070013060104E8 -:109808009305040013850900EFF00FEA631A053C7D -:1098180023220104138D0C00938D0B006FF09F8D94 -:1098280013850400EFD0CFE813090500930A000060 -:109838006FF01FD5136C0C0193760C02638006023F -:10984800130D7D00137D8DFF83280D00832A4D00A5 -:10985800930C8D00930610006FF05FC693760C0191 -:10986800930C4D006386060083280D006F000001ED -:1098780093760C046388060083580D00930A000051 -:109888006FF05FFD93760C20E38006FE83480D00A1 -:109898006FF0DFFE97870000938787B86FF05F92BD -:1098A80093760C01930C4D006386060083280D0007 -:1098B8006F00000193760C046388060083580D003E -:1098C800930A00006FF0DF9193760C20E38006FE88 -:1098D80083480D006FF0DFFE13060C00930610009E -:1098E8006FF0DFBE13061000E386C6AE1306200035 -:1098F8006388C6129306010F9395DA0113F6780070 -:1099080093D8380013060603B3E8150193DA3A0032 -:10991800A38FC6FEB3E558019384F6FF639605024C -:1099280093751C00638A0500930500036306B6005F -:10993800A38FB4FE9384E6FF9307010F930A0900EF -:10994800338997406FF0DFC3938604006FF0DFFA26 -:1099580093770C40130D0000130E010F232CF10018 -:10996800138508001306A0009306000093850A00DB -:109978009304FEFF2320C103232E1101EF2010338F -:10998800032E01028327810113050503A30FAEFEF1 -:10999800130D1D008328C101638E070483278100EE -:1099A80083C607006398A6059307F00F6304FD04B8 -:1099B80063960A009307900063FE1703832701014B -:1099C80083254101232E1101B384F4401386070037 -:1099D80013850400EFD08FCF83278100130D00007B -:1099E8008328C10183C61700638606009387170082 -:1099F8002324F1001385080093850A001306A000AC -:109A080093060000EF20C04C938A0500B3E5A5003B -:109A180093080500E38205F2138E04006FF05FF4EB -:109A28009304010F8327C10093F6F8009384F4FF91 -:109A3800B386D70083C6060093D848002380D40095 -:109A48009396CA01B3E8160193DA4A00B3E65801BF -:109A5800E39A06FC6FF05FEE9304010FE39E06ECB9 -:109A680013761600E30A06EC93060003A307D10E4B -:109A78006FF09F97630A061A2306C108A30D010217 -:109A8800930C0D006FF0DF8F9385050123A21D0154 -:109A98002324B1042322C104635EC3021306010414 -:109AA800930504001385090023266102232401037A -:109AB800232211032320D102EFF00FBF63120512F6 -:109AC8000323C1020328810283284102832601025D -:109AD80013850B00938606FF930D05006FF01FAFEB -:109AE8009385050123A21D012324B1042322C10467 -:109AF800635EC3021306010493050400138509007D -:109B08002322610223200103232E1101232CD100DB -:109B1800EFF08FB96316050C0323410203280102F5 -:109B28008328C1018326810113850B00938606FFD4 -:109B3800930D05006FF01FBB1306060123A21D013C -:109B48002324C1042322D104635AD3021306010437 -:109B5800930504001385090023206102232E0101C7 -:109B6800232C1101EFF04FB4631C050603230102F7 -:109B78000328C1018328810193850B00938A0AFF7A -:109B8800938D05006FF05FBCB304AB41E35A90C4FA -:109B9800930A000117890000130949F6130C700095 -:109BA80083274104232027018326810493871700F4 -:109BB80063C09A0423229700B384D4002324910419 -:109BC8002322F10413077000E35CF7C013060104B5 -:109BD8009305040013850900EFF00FADE30205C0FB -:109BE8008357C40093F70704638407C86FF04FCD09 -:109BF80093860601232257012324D1042322F1044A -:109C080013078700635EFC00130601049305040034 -:109C180013850900EFF04FA9E31405FC13870B0027 -:109C2800938404FF6FF0DFF783278104E38A07FA40 -:109C3800130601049305040013850900EFF0CFA66D -:109C48006FF01FFA979700009387C7EB93060600FB -:109C5800138605009305050003A507006FF0CFB430 -:109C680083D7C500130101B8232C814693F7D7FF8A -:109C7800231AF10083A7450613840500232A914679 -:109C88002326F10683D7E50023282147232E1146F2 -:109C9800231BF10083A7C501130905002320010236 -:109CA8002322F10283A74502930581002326F102AE -:109CB800930701072324F100232CF10093070040A8 -:109CC8002328F100232EF100EFF00FAE93040500D6 -:109CD800634C05009305810013050900EF80DF9EA2 -:109CE800630405009304F0FF8357410193F70704C9 -:109CF800638807008357C40093E707042316F4001A -:109D08008320C147032481471385040003290147A1 -:109D1800832441471301014867800000979700009A -:109D2800938747DE83A7070083A747036396070047 -:109D3800979700009387878503A3070E67000300A2 -:109D4800638405029307F00F63FAC7009307A0081E -:109D58002320F5001305F0FF678000002380C5006D -:109D680013051000678000001305000067800000DD -:109D7800130101FF23248100130405001385050046 -:109D880093050600138606009797000023A007DCBA -:109D980023261100EF7080419307F0FF631CF50044 -:109DA80097970000938787DA83A7070063840700E3 -:109DB8002320F4008320C100032481001301010142 -:109DC80067800000130101FF2324810013040500AC -:109DD800138505009305060023261100EF70C004C3 -:109DE8009305050013050400EFB00FC71304050021 -:109DF800630205040326C5FF130740021376C6FF56 -:109E08001306C6FF6362C706930630019307050071 -:109E180063FCC60023200500232205009307B00138 -:109E280063E4C7029307850023A0070023A2070065 -:109E380023A40700130504008320C1000324810024 -:109E48001301010167800000232405002326050073 -:109E580093070501E31AE6FC23280500930785010B -:109E6800232A05006FF05FFC93050000EFB09FB355 -:109E78006FF05FFC130101FF232481001304050028 -:109E8800138505009797000023A207CC232611000D -:109E9800EF70C00B9307F0FF631CF5009797000065 -:109EA8009387C7CA83A70700638407002320F400A9 -:109EB8008320C10003248100130101016780000091 -:109EC800130101FF2326110023248100232291007E -:109ED8002320210163920502130900008320C10099 -:109EE800032481001305090083244100032901008C -:109EF8001301010167800000930405001384050025 -:109F0800630805008327850363940700EF801F9784 -:109F18008317C400E38207FC93050400138504003B -:109F2800EF800FDA8327C40213090500638C07004A -:109F38008325C40113850400E780070063540500E6 -:109F48001309F0FF8357C40093F7070863880700D5 -:109F58008325040113850400EF801FC083250403B3 -:109F6800638C0500930704046386F50013850400D9 -:109F7800EF809FBE232804028325440463880500DC -:109F880013850400EF805FBD23220404EF805FA6E1 -:109F980023160400EF801FA66FF05FF49797000068 -:109FA800938747B69305050003A507006FF05FF197 -:109FB800130101FD2324810223229102232C410154 -:109FC8002326110223202103232E3101232A5101A4 -:109FD80023286101130A0500938405001304060071 -:109FE800EFB04F8893071000631AF5049387F4FFC6 -:109FF8001307E00F6364F704230691009309100028 -:10A0080013090000930AF0FF130BA000631239072D -:10A01800138504008320C1020324810283244102A2 -:10A02800032901028329C101032A8101832A4101ED -:10A03800032B010113010103678000009306C40587 -:10A04800138604009305C10013050A00EF10905D04 -:10A058009307F0FF93090500E314F5FA8357C4004A -:10A0680093E707042316F4001305F0FF6FF09FFA37 -:10A078009307C100B387270183C50700832784009E -:10A088009387F7FF2324F40063D80700032784018C -:10A0980063C0E702638E65018327040013871700F6 -:10A0A8002320E4002380B700130919006FF01FF67E -:10A0B8001306040013050A00EF105042E31655FF7B -:10A0C8006FF09FFA8317C6001397270163400702B2 -:10A0D80003274606B7260000B3E7D7002316F60085 -:10A0E800B7270000B367F7002322F6066FF05FEC8E -:10A0F800130101FE979700009387C7A0232C8100C6 -:10A1080003A40700232A9100232E110093040500BD -:10A1180013860500630E040083278403639A0700EF -:10A12800130504002326B100EF804FF50326C10074 -:10A1380013050400032481018320C10193850400D1 -:10A1480083244101130101026FF0DFF7130101FFBE -:10A1580023248100130405001385050093050600D8 -:10A168009797000023A4079E23261100EF605063F1 -:10A178009307F0FF631CF500979700009387079DEE -:10A1880083A70700638407002320F4008320C1000D -:10A1980003248100130101016780000083278600E2 -:10A1A8006398070093070000138507006780000085 -:10A1B80083D7C500130101FC232C81022328210326 -:10A1C80023206103232E1102232A9102232631031F -:10A1D8002324410323225103232E7101232C8101BF -:10A1E800232A91012328A1012326B10193F787008F -:10A1F800130B060013840500130905006382070E7C -:10A2080083A70501638E070C8357C400032A0B003C -:10A2180013F72700631A071693F71700930B00002C -:10A22800638A072013050000930A000093090000C1 -:10A238006386093663120502138609009305A00098 -:10A2480013850A00EFB0CFF3938B1900630605005E -:10A2580013051500B30B5541138C0B0063F47901FA -:10A26800138C090003250400832704018326440175 -:10A2780063F0A73483248400B384960063DA8433BC -:10A2880093850A0013860400EF000050832704001A -:10A298009305040013050900B38797002320F400F1 -:10A2A800EF808FC2631E0516B38B9B401305100009 -:10A2B800639A0B009305040013050900EF80CFC0D3 -:10A2C8006310051683278B00B38A9A00B3899940D7 -:10A2D800B384974023249B00E39C04F46F0080061A -:10A2E8009305040013050900EF80CF899307F0FF59 -:10A2F800E30C05F06F00400583290A0083244A0017 -:10A30800130A8A00E38A04FE9386040063F49A0021 -:10A3180093860A00832744028325C4011386090013 -:10A3280013050900E7800700635CA00E83278B00F4 -:10A33800B389A900B384A4403385A7402324AB0084 -:10A34800E31205FC930700008320C1030324810363 -:10A3580083244103032901038329C102032A8102BB -:10A36800832A4102032B0102832BC101032C8101A3 -:10A37800832C4101032D0101832DC10013850700A2 -:10A388001301010467800000B70A008093090000E8 -:10A398009304000093CA0AC06FF0DFF6832B0A000B -:10A3A80083244A00130A8A00E38A04FE8359C400FE -:10A3B800832D84000325040093F709206384071480 -:10A3C80063E0B40D93F70948638C070A832D0401F1 -:10A3D80093053000330DB54103254401EF60D024C7 -:10A3E800935AF501B38AAA0093071D0093DA1A401D -:10A3F800B387970063F4FA00938A070093F909403A -:10A408006388090C93850A0013050900EFA0DFE4AF -:10A4180093090500631A05029307C0002320F90079 -:10A428008357C40093E707042316F4009307F0FF4B -:10A438006FF09FF1370C0080934CECFF9304000001 -:10A44800134CFCFF6FF05FF68325040113060D0023 -:10A45800EF0000258357C40093F7F7B793E7070881 -:10A468002316F40023283401232A5401B389A901AF -:10A47800B38AAA4123203401938D04002324540174 -:10A488009389040063F4B401938D04000325040048 -:10A4980013860D0093850B00EF00002F832784009F -:10A4A800B387B7412324F40083270400B38DB70191 -:10A4B8002320B40183278B00B38B3B01B384344141 -:10A4C800B389374123243B01E39009EE6FF09FE7FE -:10A4D80013860A0093850D0013050900EF00403527 -:10A4E80093090500E31005F8832504011305090005 -:10A4F800EF808FE68357C40093F7F7F72316F4002D -:10A508006FF09FF18327040163E6A70083294401C4 -:10A5180063F6340593890D0063F4B401938904004C -:10A528001386090093850B00EF000026832784001B -:10A5380003270400B3873741330737012324F40086 -:10A548002320E400E39807F69305040013050900A7 -:10A55800EF808F97E30005F66FF09FEC13050C0072 -:10A5680063E49C001385040093850900EF60100ED6 -:10A5780093850900EF60500B832744028325C401AB -:10A588009306050013860B0013050900E7800700F2 -:10A5980093090500E340A0F26FF09FE8832A0A00C0 -:10A5A80083294A0013050000130A8A006FF05FC868 -:10A5B8006342DC02832744028325C40113860A0010 -:10A5C80013050900E780070093040500E34EA0CCBB -:10A5D8006FF01FE513060C0093850A00EF00C01A00 -:10A5E8008327840093040C00B38787412324F40055 -:10A5F80083270400B38787012320F4006FF0DFCAA4 -:10A60800130101FF232481001304050013850500AD -:10A618009787000023AC075223261100EF60101F14 -:10A628009307F0FF631CF500978700009387075294 -:10A6380083A70700638407002320F4008320C10058 -:10A64800032481001301010167800000130101FF49 -:10A6580023248100130405001385050093050600D3 -:10A66800138606009787000023A2074E23261100B1 -:10A67800EF60D01C9307F0FF631CF500978700007C -:10A688009387C74C83A70700638407002320F4003F -:10A698008320C100032481001301010167800000A9 -:10A6A800B3C7A50093F737003307C50063960700C3 -:10A6B8009307300063E4C70293070500636CE50065 -:10A6C8006780000083C605009387170093851500EF -:10A6D800A38FD7FEE3E8E7FE678000009377350095 -:10A6E80063920708930705009376C7FF138606FE53 -:10A6F80063F6C70883A3050083A2450083AF8500DE -:10A7080003AFC50083AE050103AE450103A3850170 -:10A7180083A8C501938545029387470203A8C5FF0F -:10A7280023AE77FC23A057FE23A2F7FF23A4E7FF5D -:10A7380023A6D7FF23A8C7FF23AA67FE23AC17FFCA -:10A7480023AE07FF6FF0DFFA83C605009387170073 -:10A7580093851500A38FD7FE93F63700E39606FE80 -:10A768006FF09FF8930705006FF01FFF03A6050021 -:10A77800938747009385450023AEC7FEE3E8D7FEDD -:10A78800E3EAE7F4678000003307C50063E8A50043 -:10A7980093070500639AE70267800000B387C50046 -:10A7A8003306F640E376F5FEB386C70063940600E9 -:10A7B800678000009387F7FF83C607001307F7FF3A -:10A7C8002300D7006FF05FFE9385150083C6F5FF61 -:10A7D80093871700A38FD7FE6FF0DFFB130101FFEC -:10A7E8002324810013040500138505009305060042 -:10A7F800138606009787000023AA07342326110032 -:10A80800EF6090089307F0FF631CF500978700003E -:10A818009387C73383A70700638407002320F400C6 -:10A828008320C10003248100130101016780000017 -:10A83800130101FC232C8102232E1102138405002D -:10A84800232A9102232821032326310323244103A9 -:10A858002322510323206103232E7101930506004F -:10A8680063180402032481038320C1038324410362 -:10A87800032901038329C102032A8102832A410291 -:10A88800032B0102832BC101130101046FA0DF9C7C -:10A89800930A05002326C100EFB08F9E8325C100CF -:10A8A8008326C4FF930760019389B500930B84FF47 -:10A8B80013F9C6FF63F4370513FB89FF63520B04D2 -:10A8C8009307C00023A0FA00130A00008320C103E5 -:10A8D8000324810313050A00832441030329010388 -:10A8E8008329C102032A8102832A4102032B010220 -:10A8F800832BC1011301010467800000130B0001C1 -:10A90800E360BBFC635E6945178700001307C7DE79 -:10A9180003268700B3872B0103A74700630CF600C3 -:10A928001375E7FF3385A700032545001375150048 -:10A93800631C050A1377C7FFB309E9006312F6041D -:10A9480013050B0163C6A90AB38B6B01B38969416F -:10A958009787000023A677DB93E9190023A23B0120 -:10A968008329C4FF13850A00130A040093F9190008 -:10A97800B3E96901232E34FFEFB0CF906FF01FF5D4 -:10A9880063C8690703A7C70083A7870023A6E70052 -:10A998002324F70003A74B00B38669411306F00090 -:10A9A80013771700B3873B016370D63CB369EB009C -:10A9B80023A23B01B3856B0193E6160023A2D500C1 -:10A9C80003A747009385850013850A0013671700BE -:10A9D80023A2E700EF804F9813850A00EFB08F8A13 -:10A9E800138A8B006FF09FEE130700009307000097 -:10A9F80093F6160063940628832484FFB3849B404F -:10AA080003AA4400137ACAFF330A2A01638E071A7D -:10AA1800B30947016318F60E93070B0163C6F91AC9 -:10AA280003A7840083A7C4001306C9FF138A840000 -:10AA38002326F70023A4E70013074002636CC70A24 -:10AA48009306300193070A0063F2C60283270400C5 -:10AA580023A4F4008327440023A6F4009307B0013D -:10AA680063ECC704130484009387040103270400DC -:10AA780023A0E7000327440023A2E700032784005C -:10AA880023A4E700B3876401B389694117870000ED -:10AA98002328F7C693E9190023A2370183A74400A6 -:10AAA80093F71700B3E9670123A2340113850A005D -:10AAB800EFA05FFD6FF09FE18327840023A8F400D7 -:10AAC8008327C40023AAF4006308E60013040401E2 -:10AAD800938784016FF09FF983270401130484018D -:10AAE80023ACF4000327C4FF9387040223AEE400D9 -:10AAF8006FF0DFF79305040013050A00EFF0DFC8D5 -:10AB08006FF05FF863C2690D03A7C70083A78700CA -:10AB18001306C9FF1385840023A6E7002324F70042 -:10AB280003A7840083A7C4002326F70023A4E70013 -:10AB38009307400263E4C708130730016372C70232 -:10AB48000327040023A4E4000327440023A6E40009 -:10AB58001307B0016366C702130484001385040158 -:10AB6800832704002320F500832744002322F500CF -:10AB7800832784002324F500938B04006FF09FE162 -:10AB88000327840023A8E4000327C40023AAE400C1 -:10AB98006308F60013040401138584016FF05FFC59 -:10ABA80083270401138504021304840123ACF400F1 -:10ABB8008327C4FF23AEF4006FF09FFA93050400C7 -:10ABC800EFF09FBC6FF05FFB634A6A0B83A7C4007A -:10ABD80003A784001306C9FF138584002326F70002 -:10ABE80023A4E7009307400263E4C7081307300172 -:10ABF8006372C7020327040023A4E4000327440068 -:10AC080023A6E4001307B0016366C7021304840097 -:10AC180013850401832704002320F50083274400BB -:10AC28002322F500832784002324F50093090A00D2 -:10AC38006FF09FF40327840023A8E4000327C400CF -:10AC480023AAE4006308F6001304040113858401B1 -:10AC58006FF05FFC83270401138504021304840149 -:10AC680023ACF4008327C4FF23AEF4006FF09FFAEF -:10AC780093050400EFF05FB16FF05FFB13850A00E6 -:10AC8800EFA08FDD130A0500E30205E28327C4FF66 -:10AC9800130785FF93F7E7FFB387FB00639AE70085 -:10ACA8008329C5FF93F9C9FFB38929016FF09FCEA6 -:10ACB8001306C9FF9307400263EEC7081307300164 -:10ACC8006374C708032704002320E5000327440012 -:10ACD8002322E5001307B001636AC7021307840043 -:10ACE800930785008326070023A0D7008326470003 -:10ACF80023A2D7000327870023A4E70093050400B5 -:10AD080013850A00EF705FE56FF05FDA03278400B0 -:10AD18002324E5000327C4002326E5006308F60082 -:10AD280013070401930705016FF0DFFB8327040174 -:10AD3800130784012328F50083264401930785011E -:10AD4800232AD5006FF01FFA9307050013070400A4 -:10AD58006FF05FF993050400EFF01FA36FF01FFA7F -:10AD6800930909006FF01FC3B3E9E90023A23B016F -:10AD780003A747001367170023A2E7006FF0DFC59A -:10AD8800130101FF232481001384050083A5050016 -:10AD980023229100232611009304050063840500F3 -:10ADA800EFF01FFE93050400032481008320C100F7 -:10ADB8001385040083244100130101016F70DFD95A -:10ADC80097870000938707D483A707006382A7109B -:10ADD8008327C504130101FE232C8100232A910037 -:10ADE80023282101232E11002326310113040500F5 -:10ADF80093040000130900086394070483250404DE -:10AE08006386050013050400EF701FD5832584149D -:10AE1800638C05049304C4146388950403A905008E -:10AE280013050400EF705FD3930509006FF0DFFE90 -:10AE3800B385950083A50500639E050093844400AF -:10AE48008325C404E39624FF13050400EF70DFD0C4 -:10AE58006FF0DFFA83A9050013050400EF70DFCF58 -:10AE6800938509006FF05FFD83254405638605001F -:10AE780013050400EF705FCE83278403638C0702F9 -:10AE88008327C40313050400E78007008325042EE5 -:10AE98006382050213050400032481018320C10194 -:10AEA80083244101032901018329C10013010102FF -:10AEB8006FF01FED8320C101032481018324410128 -:10AEC800032901018329C1001301010267800000E1 -:10AED8006780000083278600130101FD232E3101BE -:10AEE80023261102232481022322910223202103F5 -:10AEF800232C4101232A51012328610123267101B2 -:10AF080023248101232291019309060063860712F5 -:10AF1800032B0600930A050013840500930B000019 -:10AF28001309000063060908032A84006366490DB3 -:10AF3800835CC40093F70C486380070C0325440125 -:10AF480083240400032A040193053000EF50D06DD8 -:10AF5800338C44419354F501B384A40093071C0037 -:10AF680093D41440B387270163F4F4009384070053 -:10AF780093FC0C4063800C109385040013850A0031 -:10AF8800EFA08FAD130A0500631C05029307C000EC -:10AF980023A0FA008357C4001305F0FF93E70704C2 -:10AFA8002316F40023A4090023A209006F00400916 -:10AFB800832B0B0003294B00130B8B006FF09FF6BC -:10AFC8008325040113060C00EFF08FED8357C400AE -:10AFD80093F7F7B793E707082316F40023284401EB -:10AFE800232A9400330A8A01B3848441232044012C -:10AFF80023249400130A090063744901130A090001 -:10B008000325040013060A0093850B00EFF0CFF721 -:10B0180083278400B38747412324F400832704004F -:10B02800338A470183A789002320440133892741B4 -:10B0380023A42901E31E09F623A209001305000031 -:10B048008320C102032481028324410203290102CF -:10B058008329C101032A8101832A4101032B0101AC -:10B06800832BC100032C8100832C410013010103B1 -:10B078006780000093050A001386040013850A0000 -:10B08800EFF00FFB130A0500E31A05F4832504010A -:10B0980013850A00EF705FAC6FF05FEF83D7C500D0 -:10B0A800130101ED23202113232E3111232C4111EB -:10B0B8002320A11123261112232481122322911265 -:10B0C800232A511123286111232671112324811168 -:10B0D80023229111232EB10F93F70708130A0500B5 -:10B0E8001389050093090600138D0600638E070275 -:10B0F80083A70501639A070293050004EFA0CF9583 -:10B108002320A9002328A900631C05009307C00079 -:10B118002320FA009307F0FF2322F1006F00D032BA -:10B1280093070004232AF900930BC1042320710517 -:10B138002324010423220104938D0B0023260100FC -:10B148002324010023280100232A010023220100CF -:10B1580013840900930650028347040063840700A0 -:10B168006396D70AB3043441638A040483278104AD -:10B1780023A03D0123A29D00B38797002324F10457 -:10B188008327410493067000938D8D0093871700E1 -:10B198002322F10463DEF600130601049305090077 -:10B1A80013050A00EFF01FD3E31A0528938D0B004F -:10B1B80083274100B38797002322F10083470400C7 -:10B1C800E380073093091400A30D01029304F0FFF4 -:10B1D800130B0000130C00001304A002930AA0052F -:10B1E80003C6090093891900930606FEE3E2DA0E06 -:10B1F800977700009387C7A293962600B386F60038 -:10B2080083A60600B386F6006780060013041400C0 -:10B218006FF09FF4976700009387C7212326F100FA -:10B2280093760C02638C066C130D7D00137D8DFFE5 -:10B2380083280D00832A4D00930C8D0093761C0003 -:10B24800638E0600B3E65801638A0600930600037E -:10B25800230ED102A30EC102136C2C00137CFCBF79 -:10B268006F00403413050A00EF905FD38327450031 -:10B2780013850700232AF100EFB09FC32328A100FC -:10B2880013050A00EF909FD1832785002324F1003E -:10B2980083270101E38407F483278100E38007F40F -:10B2A80083C60700E38C06F2136C0C406FF01FF3A3 -:10B2B8008346B103E39406F293060002A30DD1027C -:10B2C8006FF0DFF1136C1C006FF05FF1032B0D00C2 -:10B2D800130D4D00E3540BF0330B6041136C4C001D -:10B2E8006FF0DFEF9306B0026FF05FFD03C6090051 -:10B2F800938C19006316860483240D0093064D0071 -:10B3080063D404009304F0FF138D060093890C00A6 -:10B318006FF0DFEC138504009305A000EF50D030E8 -:10B32800938C1C0003C6FCFFB3043501930906FD8A -:10B3380093079000E3F037FF93890C006FF0DFEA82 -:10B34800930400006FF09FFE136C0C086FF01FE968 -:10B35800938C0900130B000013050B009305A00044 -:10B36800232CC100EF50502C03268101938C1C0024 -:10B3780093079000130B06FD03C6FCFF330BAB00CD -:10B38800930606FDE3FAD7FC6FF01FFB03C609001E -:10B39800930680066318D60093891900136C0C2055 -:10B3A8006FF0DFE3136C0C046FF05FE303C6090072 -:10B3B8009306C0066318D60093891900136C0C0213 -:10B3C8006FF0DFE1136C0C016FF05FE183260D0075 -:10B3D800930C4D00A30D01022306D108930410001D -:10B3E800930A00001304C1086F00401F136C0C017E -:10B3F80093760C02638C0604130D7D00137D8DFF7C -:10B4080083280D00832A4D00930C8D0063DE0A000B -:10B41800B3081041B336100133035041B30AD34087 -:10B428009306D002A30DD1029306F0FF6394D45083 -:10B43800639E0A569307900063EA17579388080398 -:10B44800A307110F1304F10E6F00C05493760C017B -:10B45800930C4D006388060083280D0093DAF841A9 -:10B468006FF0DFFA93760C0483280D0063880600DA -:10B478009398080193D808416FF05FFE93760C20EB -:10B48800E38E06FC9398880193D888416FF01FFDDE -:10B4980013760C0283260D00130D4D00630C060075 -:10B4A8008327410023A0F60093D7F74123A2F60093 -:10B4B8006FF01FCA13760C0163080600832741004A -:10B4C80023A0F6006FF0DFC813760C0463080600AB -:10B4D800835741002390F6006FF09FC793770C20A5 -:10B4E800E38E07FC834741002380F6006FF05FC6B8 -:10B4F800136C0C0193760C0263860604130D7D0011 -:10B50800137D8DFF83280D00832A4D00930C8D0039 -:10B51800137CFCBF93060000A30D01021306F0FF85 -:10B528006380C44213060C00B3E55801137CFCF792 -:10B538006398054063800458130610006396C6405C -:10B548006FF0DFEF93760C01930C4D0063860600D5 -:10B5580083280D006F00000193760C0463880600B1 -:10B5680083580D00930A00006FF09FFA93760C2021 -:10B57800E38006FE83480D006FF0DFFEB786FFFF0D -:10B5880083280D0093C6068397670000938747E9D1 -:10B59800930C4D00930A0000136C2C00231ED1025B -:10B5A8002326F100930620006FF01FF7A30D010278 -:10B5B8009306F0FF930C4D0003240D006380D42CF8 -:10B5C800138604009305000013050400EFA04FBB89 -:10B5D800930A000063040500B3048540138D0A0034 -:10B5E80063D49A00138D04008346B1036384060074 -:10B5F800130D1D0093772C00232CF10063840700A2 -:10B60800130D2D0093774C08232EF1006394070641 -:10B61800B306AB416350D0069308000117680000D9 -:10B628001308C876130370000326410423A00D01F4 -:10B63800832581041306160013858D0063C4D84A38 -:10B6480023A2DD00B386B6002324D1042322C1043B -:10B6580093067000930D050063DEC600130601040F -:10B668009305090013050A00EFF0DF866318055CEF -:10B67800938D0B008346B103638806041306B10358 -:10B6880023A0CD00130610008326410423A2CD0079 -:10B6980003268104938616002322D104130616007C -:10B6A8002324C10413067000938D8D00635ED600B9 -:10B6B800130601049305090013050A00EFF09F81A2 -:10B6C800631E0556938D0B00832781016388070449 -:10B6D8001306C10323A0CD001306200083264104CE -:10B6E80023A2CD0003268104938616002322D104C9 -:10B6F800130626002324C10413067000938D8D00C1 -:10B70800635ED600130601049305090013050A00B9 -:10B71800EFF04FFC63140552938D0B008327C10192 -:10B72800930600086394D706B306AB416350D0066E -:10B738009308000117680000130848661303700097 -:10B748000326410423A00D01832581041306160056 -:10B7580013858D0063C4D83E23A2DD00B386B600EE -:10B768002324D1042322C10493067000930D0500FD -:10B7780063DEC600130601049305090013050A00D9 -:10B78800EFF04FF5631C054A938D0B00B38A9A407E -:10B7980063505007930800011768000013080860F9 -:10B7A800130370008326410423A00D01032681049E -:10B7B8009386160093858D0063CE583D23A25D01C4 -:10B7C800B38ACA00232451052322D104130670002A -:10B7D800938D0500635ED6001306010493050900E6 -:10B7E80013050A00EFF00FEF631A0544938D0B0061 -:10B7F8008326810423A29D0023A08D00B384960094 -:10B8080083264104232491041306700093861600AE -:10B818002322D10413878D00635ED600130601042A -:10B828009305090013050A00EFF0CFEA63180540F5 -:10B8380013870B0093774C006396073A6354AB0168 -:10B84800130B0D0083274100B38767012322F10002 -:10B8580083278104638C07001306010493050900FC -:10B8680013050A00EFF00FE7631A053C23220104D1 -:10B87800138D0C00938D0B006FF09F8D1305040042 -:10B88800EFB00FE393040500930A00006FF01FD593 -:10B89800136C0C0193760C0263800602130D7D0075 -:10B8A800137D8DFF83280D00832A4D00930C8D0096 -:10B8B800930610006FF05FC693760C01930C4D0051 -:10B8C8006386060083280D006F00000193760C0440 -:10B8D8006388060083580D00930A00006FF05FFD2F -:10B8E80093760C20E38006FE83480D006FF0DFFEA0 -:10B8F800976700009387C7B26FF05F9293760C0149 -:10B90800930C4D006386060083280D006F0000012C -:10B9180093760C046388060083580D00930A000090 -:10B928006FF0DF9193760C20E38006FE83480D00CC -:10B938006FF0DFFE13060C00930610006FF0DFBEF9 -:10B9480013061000E386C6AE130620006388C612ED -:10B958009306010F9395DA0113F6780093D838000F -:10B9680013060603B3E8150193DA3A00A38FC6FE5F -:10B97800B3E558011384F6FF6396050293751C001E -:10B98800638A0500930500036306B600A30FB4FE9F -:10B998001384E6FF9307010F938A0400B38487405A -:10B9A8006FF0DFC3930604006FF0DFFA93770C4063 -:10B9B800130D0000130E010F232CF100138508004E -:10B9C8001306A0009306000093850A001304FEFFE7 -:10B9D8002320C103232E1101EF00502D032E010255 -:10B9E8008327810113050503A30FAEFE130D1D0068 -:10B9F8008328C101638E07048327810083C607005B -:10BA08006398A6059307F00F6304FD0463960A0084 -:10BA18009307900063FE17038327010183254101E3 -:10BA2800232E11013304F440138607001305040084 -:10BA3800EFB0CFC983278100130D00008328C1010F -:10BA480083C6170063860600938717002324F10036 -:10BA58001385080093850A001306A00093060000CA -:10BA6800EF000047938A0500B3E5A5009308050099 -:10BA7800E38205F2130E04006FF05FF41304010F64 -:10BA88008327C10093F6F8001304F4FFB386D700A8 -:10BA980083C6060093D848002300D4009396CA01B1 -:10BAA800B3E8160193DA4A00B3E65801E39A06FCB4 -:10BAB8006FF05FEE1304010FE39E06EC1376160099 -:10BAC800E30A06EC93060003A307D10E6FF09F97D5 -:10BAD8006308061E2306C108A30D0102930C0D007E -:10BAE8006FF0DF8F9385050123A21D012324B10484 -:10BAF8002322C104635EC3021306010493050900EF -:10BB080013050A00232661022324010323221103BB -:10BB18002320D102EFF00FBC631205120323C102E8 -:10BB280003288102832841028326010213850B0022 -:10BB3800938606FF930D05006FF01FAF93850501EF -:10BB480023A21D012324B1042322C104635EC3027E -:10BB5800130601049305090013050A002322610254 -:10BB680023200103232E1101232CD100EFF08FB6DF -:10BB78006316050C03234102032801028328C1012F -:10BB88008326810113850B00938606FF930D05001C -:10BB98006FF01FBB1306060123A21D012324C10455 -:10BBA8002322D104635AD302130601049305090022 -:10BBB80013050A0023206102232E0101232C110101 -:10BBC800EFF04FB1631C0506032301020328C101EE -:10BBD8008328810193850B00938A0AFF938D0500C2 -:10BBE8006FF05FBC3304AB41E35A80C4930A000191 -:10BBF8009764000093848419130C70008327410410 -:10BC080023209700832681049387170063CE8A0632 -:10BC1800232287003304D400232481042322F1043F -:10BC280013077000E35CF7C01306010493050900CD -:10BC380013050A00EFF00FAAE30205C08357C900F5 -:10BC480093F70704639807CC8320C1120324811259 -:10BC58000325410083244112032901128329C111BC -:10BC6800032A8111832A4111032B0111832BC1104F -:10BC7800032C8110832C4110032D0110832DC10F3B -:10BC880013010113678000009386060123225701E0 -:10BC98002324D1042322F10413078700635EFC00E8 -:10BCA800130601049305090013050A00EFF08FA29B -:10BCB800E31605F813870B00130404FF6FF01FF455 -:10BCC80083278104E38C07F6130601049305090012 -:10BCD80013050A00EFF00FA06FF05FF6130101FEE5 -:10BCE800232C8100232A910023282101232E1100CF -:10BCF8002326310113090500938405001304060067 -:10BD0800630805008327850363940700EF601FB766 -:10BD1800832784012324F4008357C40093F7870002 -:10BD2800638A070883270401638607088317C4000A -:10BD380093F9F40F93F4F40F139727016356070A46 -:10BD480083270401032504003305F54083274401B4 -:10BD5800634AF5009305040013050900EF60DF96B8 -:10BD68006312050683278400130515009387F7FFE0 -:10BD78002324F40083270400138717002320E400FA -:10BD88002380370183274401638CA7008357C400AD -:10BD980093F71700638A07029307A0006396F402DB -:10BDA8009305040013050900EF601F92630E050058 -:10BDB8006F0040019305040013050900EF608FDC54 -:10BDC800E30605F69304F0FF8320C10103248101F3 -:10BDD8001385040003290101832441018329C1003B -:10BDE800130101026780000037270000B3E7E7006E -:10BDF8002316F4008327440637E7FFFF1307F7FFEE -:10BE0800B3F7E7002322F4066FF09FF3977700005B -:10BE1800938747CF138605009305050003A5070000 -:10BE28006FF0DFEB977700009387C7CD83A70700F4 -:10BE3800130101FE232C8100232A9100232E1100D7 -:10BE4800130405009384060083A747036398050439 -:10BE580063960700976700009387477383A7070EC9 -:10BE6800938604001306000093054100130504009F -:10BE7800E78007009307F0FF6318F50023A004008C -:10BE88009307A0082320F4008320C1010324810123 -:10BE980083244101130101026780000063960700B3 -:10BEA800976700009387876E83A7070E9386040021 -:10BEB8006FF0DFFB977700009387C7C493060600EF -:10BEC800138605009305050003A507006FF09FF58D -:10BED800130101FD23229102232A51012326110275 -:10BEE8002324810223202103232E3101232C410105 -:10BEF8002328610123267101232481012322910132 -:10BF08002320A101930A050093840500639E063847 -:10BF1800130406009309050017690000130949F482 -:10BF280063F8C512B7070100138B05006378F61094 -:10BF38001307F00F3337C70013173700B357E6005E -:10BF48003309F900834609003387E60093060002A7 -:10BF5800B386E640638C0600B394D40033D7EA0076 -:10BF68003314D600336B9700B399DA00935A04015F -:10BF780093850A0013050B00EF4050721309050062 -:10BF880093850A00931B040113050B00EF40906C86 -:10BF980093DB0B01930405009305050013850B0043 -:10BFA800EF4090681319090193D70901B367F900A5 -:10BFB800138A040063FEA700B3878700138AF4FF7F -:10BFC80063E8870063F6A700138AE4FFB387870056 -:10BFD800B384A74093850A0013850400EF40106CD2 -:10BFE8001309050093850A0013850400EF40906645 -:10BFF8009399090193040500930505001319090194 -:10C0080013850B0093D90901EF401062B369390118 -:10C018001386040063FCA900B30934011386F4FFF6 -:10C0280063E6890063F4A9001386E4FF13140A0188 -:10C038003364C400130A00006F000013B70700013F -:10C0480013070001E36CF6EE130780016FF01FEF92 -:10C05800138A0600631A06009305000013051000F2 -:10C06800EF40505F13040500B7070100637EF41228 -:10C078009307F00F63F48700130A8000B357440155 -:10C088003309F90003470900930600023307470103 -:10C09800B386E64063940612B3848440130A100002 -:10C0A800135B040193050B0013850400EF40105F38 -:10C0B8001309050093050B0013850400931B040165 -:10C0C800EF40505993DB0B019304050093050500DD -:10C0D80013850B00EF4050551319090193D7090137 -:10C0E800B367F900938A040063FEA700B38787004B -:10C0F800938AF4FF63E8870063F6A700938AE4FF56 -:10C10800B3878700B384A74093050B001385040009 -:10C11800EF40D0581309050093050B001385040060 -:10C12800EF405053939909019304050093050500C6 -:10C138001319090113850B0093D90901EF40D04E5B -:10C14800B36939011386040063FCA900B3093401FB -:10C158001386F4FF63E6890063F4A9001386E4FFFD -:10C1680013940A013364C4001305040093050A00FC -:10C178008320C1020324810283244102032901028E -:10C188008329C101032A8101832A4101032B01016B -:10C19800832BC100032C8100832C4100032D010057 -:10C1A8001301010367800000B7070001130A0001AB -:10C1B800E366F4EC130A80016FF05FEC3314D400EB -:10C1C80033DAE400B399DA0033D7EA00935A04016A -:10C1D800B394D40093850A0013050A00336B9700C3 -:10C1E800EF40D04B1309050093850A0013050A0098 -:10C1F800931B0401EF40104693DB0B0193040500E9 -:10C208009305050013850B00EF401042131909012F -:10C2180013570B013367E900138A0400637EA700F4 -:10C2280033078700138AF4FF636887006376A700E3 -:10C23800138AE4FF33078700B304A74093850A00F5 -:10C2480013850400EF4090451309050093850A0003 -:10C2580013850400EF401040930405009305050082 -:10C2680013850B00EF40503C13170B0113570701C0 -:10C2780013190901B367E9001387040063FEA700D7 -:10C28800B38787001387F4FF63E8870063F6A70086 -:10C298001387E4FFB3878700131A0A01B384A74002 -:10C2A800336AEA006FF0DFDF63ECD51EB7070100E1 -:10C2B80063F4F6041307F00FB335D70093953500F0 -:10C2C80033D7B60097670000938787B9B387E7002D -:10C2D80003C70700130A00023307B700330AEA400E -:10C2E80063160A0213041000E3E096E833B6CA00A6 -:10C2F800134416006FF05FE7B707000193050001CC -:10C30800E3E0F6FC930580016FF09FFBB35CE60069 -:10C31800B3964601B3ECDC0033D4E40093DB0C01A4 -:10C32800B397440133D7EA0093850B001305040043 -:10C33800336BF700B3194601EF4050361309050077 -:10C3480093850B0013050400139C0C01EF409030FB -:10C35800135C0C01930405009305050013050C00FC -:10C36800EF40902C1319090113570B013367E900AB -:10C3780013840400637EA700330797011384F4FF36 -:10C38800636897016376A7001384E4FF3307970176 -:10C39800B304A74093850B0013850400EF401030C9 -:10C3A8001309050093850B0013850400EF40902ABC -:10C3B800930405009305050013050C00EF40D026F3 -:10C3C80093170B011319090193D70701B367F900F4 -:10C3D8001386040063FEA700B38797011386F4FF52 -:10C3E80063E8970163F6A7001386E4FFB387970114 -:10C3F80013140401B70B01003364C4001389FBFF55 -:10C40800337D240133F92901B384A740930509003A -:10C4180013050D00EF405021935C040193050900BA -:10C42800130B050013850C00EF40102093D9090168 -:10C43800130C05009385090013850C00EF40D01EEE -:10C44800130905009385090013050D00EF40D01D61 -:10C458003305850193570B013385A7006374850164 -:10C468003309790193570501B387270163E6F4027D -:10C47800E392F4BCB70701009387F7FF3375F50023 -:10C4880013150501337BFB0033964A01330565011B -:10C49800130A0000E37AA6CC1304F4FF6FF09FB9E7 -:10C4A800130A0000130400006FF01FCC130101FBF6 -:10C4B8002324810423229104232E31032322910370 -:10C4C8002326110423202105232C4103232A510369 -:10C4D8002328610323267103232481032320A10336 -:10C4E800232EB101930C0500938905001304050060 -:10C4F80093840500639E062613090600138A060026 -:10C50800976A0000938ACA9563F4C514B7070100B7 -:10C518006376F6129307F00F63F4C700130A8000DE -:10C52800B3574601B38AFA0003C70A00130500028D -:10C5380033074701330AE540630C0A00B395490104 -:10C5480033D7EC0033194601B364B70033944C0178 -:10C55800935A090193850A0013850400EF401014CB -:10C568009309050093850A00131B0901138504002C -:10C57800EF40500E135B0B019305050013050B00EC -:10C58800EF40900A9399090193570401B3E7F90022 -:10C5980063FAA700B387270163E6270163F4A700BE -:10C5A800B3872701B384A74093850A001385040045 -:10C5B800EF40D00E9309050093850A001385040007 -:10C5C800EF405009131404019305050093990901DC -:10C5D80013050B0013540401EF40100533E48900E0 -:10C5E800637AA40033042401636624016374A400FD -:10C5F800330424013304A440335544019305000057 -:10C608008320C104032481048324410403290104F1 -:10C618008329C103032A8103832A4103032B0103CE -:10C62800832BC102032C8102832C4102032D0102BA -:10C63800832DC1011301010567800000B7070001C0 -:10C64800130A0001E36EF6EC130A80016FF05FED48 -:10C65800631A06009305000013051000EF40807F61 -:10C6680013090500B7070100637AF90E9307F00F65 -:10C6780063F42701130A8000B3574901B38AFA000B -:10C6880003C70A0013050002B38429413307470191 -:10C69800330AE540E30E0AEA33194901B3DAE9003F -:10C6A800B395490133D7EC0093540901336BB700B4 -:10C6B80013850A0093850400EF40407E9309050026 -:10C6C80093850400931B090113850A00EF408078C5 -:10C6D80093DB0B019305050013850B00EF40C07435 -:10C6E8009399090193570B01B3E7F90033944C016F -:10C6F80063FAA700B387270163E6270163F4A7005D -:10C70800B3872701B38AA7409385040013850A00DD -:10C71800EF40C078930905009385040013850A004B -:10C72800EF4040739305050013850B00EF40C06F81 -:10C7380093150B019399090193D50501B3E5B90048 -:10C7480063FAA500B385250163E6250163F4A50016 -:10C75800B3852501B384A5406FF09FDFB7070001BB -:10C76800130A0001E36AF9F0130A80016FF0DFF0A1 -:10C77800E3E8D5E8B707010063FCF604930BF00F74 -:10C7880033B5DB001315350033D7A60097570000E3 -:10C798009387076DB387E70083CB070093050002F3 -:10C7A800B38BAB00338B7541631E0B0263E4360118 -:10C7B80063EACC003384CC40B386D94033B58C00CF -:10C7C800B384A64013050400938504006FF05FE36B -:10C7D800B707000113050001E3E8F6FA1305800125 -:10C7E8006FF09FFAB3966601335D7601336DDD0015 -:10C7F80033D47901B395690133DC7C0193540D017D -:10C80800336CBC001305040093850400B31A660159 -:10C81800EF40C068130A050093850400130504005F -:10C8280033996C01931C0D01EF40C06293DC0C013D -:10C83800130405009305050013850C00EF40C05E46 -:10C84800131A0A0113570C013367EA00130A04008C -:10C85800637EA7003307A701130AF4FF6368A701E3 -:10C868006376A700130AE4FF3307A701B309A740BB -:10C878009385040013850900EF4040629385040006 -:10C888001304050013850900EF40C05C93050500FB -:10C898009304050013850C00EF40005993150C0113 -:10C8A8001314040193D50501B365B400138704007C -:10C8B80063FEA500B385A5011387F4FF63E8A5010E -:10C8C80063F6A5001387E4FFB385A501131A0A01CF -:10C8D800B70C0100336AEA001384FCFFB3778A00BF -:10C8E80033F48A00B384A540138507009305040038 -:10C8F8002326F100135A0A01EF400053930905005B -:10C908009305040013050A00EF40005213DC0A01E6 -:10C91800930D050093050C0013050A00EF40C05065 -:10C928008327C100130A050093050C00138507002F -:10C93800EF40804F3305B50113D709013307A7002E -:10C948006374B701330A9A01B70701009387F7FFA9 -:10C95800935507013377F70013170701B3F7F90069 -:10C96800B3854501B307F70063E6B400639EB400DE -:10C97800637CF90033865741B3B7C700B385A54137 -:10C98800B385F54093070600B307F9403339F9003A -:10C99800B385B440B385254133947501B3D7670196 -:10C9A8003365F400B3D565016FF09FC5130101FB32 -:10C9B80023248104232C41033704100013DA450192 -:10C9C80023202105232E3103232A51032324810305 -:10C9D8001304F4FF2326110423229104232861035E -:10C9E80023267103232291032320A103232EB101BF -:10C9F800137AFA7F13090500130C0600938A0600C0 -:10CA08003374B40093D9F50163060A0A9307F07FDB -:10CA18006304FA1013143400B70780003364F40079 -:10CA2800135BD501336B8B0093143500130A1AC0BE -:10CA3800930B000013D54A01370910001309F9FFB9 -:10CA48001375F57F3379590193050C0093DAFA01D0 -:10CA5800630205109307F07F6302F5163704800020 -:10CA680013193900336989001354DC013364240134 -:10CA780093153C00130515C09307000013972B006E -:10CA88003367F7001307F7FF9306E00033C959012E -:10CA9800330AAA4063E0E6169756000093860631EB -:10CAA800131727003307D700032707003307D700DA -:10CAB80067000700336BA400630E0B0663000404D1 -:10CAC80013050400EF40C043930755FF1307C00147 -:10CAD800634CF702130BD001930485FF330BFB4023 -:10CAE80033149400335B6901336B8B00B3149900E2 -:10CAF800130AD0C0330AAA406FF09FF3EF404040BA -:10CB0800130505026FF05FFC130485FD331B8900D4 -:10CB1800930400006FF0DFFD336BA40063040B0285 -:10CB280093040500130B0400130AF07F930B3000E5 -:10CB38006FF05FF093040000130A0000930B1000DD -:10CB48006FF05FEF93040000130AF07F930B20004F -:10CB58006FF05FEE33648901630E04066300090415 -:10CB680013050900EF40C039930755FF1307C001AB -:10CB7800634EF7021304D001930585FF3304F44094 -:10CB88003319B90033548C0033642401B315BC0045 -:10CB98001307D0C03305A7406FF01FEE13050C0034 -:10CBA800EF400036130505026FF01FFC130485FDE6 -:10CBB80033148C00930500006FF09FFD33648901E6 -:10CBC80063020402130409001305F07F9307300081 -:10CBD8006FF0DFEA930500001305000093071000CB -:10CBE8006FF0DFE9930500001305F07F930720003D -:10CBF8006FF0DFE86366640163128B4863E0B44852 -:10CC08009316FB0113D71400139CF401135B1B004C -:10CC1800B3E4E6001314840093DC8501B3EC8C00C4 -:10CC280093DA0C0193970C0193D70701139D8500A4 -:10CC380013050B0093850A002322F100EF408021A1 -:10CC480093050500930B050013950C011355050179 -:10CC5800EF40801D1304050093850A0013050B009F -:10CC6800EF40C0231315050113D704013365A7004E -:10CC780093890B00637E8500330595019389FBFF3B -:10CC880063689501637685009389EBFF3305950109 -:10CC98003304854093850A0013050400EF40801B88 -:10CCA80093050500930B050013950C011355050119 -:10CCB800EF408017130B050093850A001305040045 -:10CCC800EF40C01D939D04011315050193DD0D016F -:10CCD800B3EDAD0013870B0063FE6D01B38D9D01AD -:10CCE8001387FBFF63E89D0163F66D011387EBFF74 -:10CCF800B38D9D0193960901B7040100B3E6E600E0 -:10CD0800B38D6D41138BF4FF33F76601337B6D01EF -:10CD18001305070093050B0013D406012326D10041 -:10CD28002324E100EF4040102322A10093050B00CB -:10CD380013050400EF40400F935B0D0193090500B4 -:10CD480093850B0013050400EF40000E03278100B4 -:10CD58001304050013850B0093050700EF40C00C72 -:10CD680003264100330535018326C1001357060108 -:10CD78003307A700637437013304940037050100B3 -:10CD88001305F5FF93540701B379A7009399090197 -:10CD98003376A600B3848400B389C90063E89D0094 -:10CDA8001384060063949D0463723C05330CAC0144 -:10CDB8003337AC0133079701B38DED001384F6FFC9 -:10CDC80063E6BC016394BC036362AC0363E69D0045 -:10CDD800639EB401637C3C01330CAC013337AC0176 -:10CDE800330797011384E6FFB38DED00B3093C4187 -:10CDF800B3849D40B3373C01B384F4409305F0FFFE -:10CE080063889C1A93850A0013850400EF40800408 -:10CE1800930505002324A10013950C011355050162 -:10CE2800EF4080002322A10093850A0013850400A7 -:10CE3800EF40C00683268100032741001315050132 -:10CE480093D7090133E5A700938D0600637EE500BB -:10CE580033059501938DF6FF636895016376E500C8 -:10CE6800938DE6FF33059501B304E54093850A00E9 -:10CE780013850400EF30107E930505002322A100DE -:10CE880013950C0113550501EF30107A130C0500AA -:10CE980093850A0013850400EF4040009399090127 -:10CEA800032741001315050193D9090133E5A900AA -:10CEB80093070700637E8501330595019307F7FF04 -:10CEC80063689501637685019307E7FF330595014C -:10CED80093940D01B3E4F4009397040193D70701E9 -:10CEE80093050B00B3098541138507002322F10040 -:10CEF80093DD0401EF30507393050B00930A05008E -:10CF080013850D00EF305072130C050093850D004A -:10CF180013850B00EF30507183274100130B050078 -:10CF280013850B0093850700EF30107033058501DA -:10CF380093D70A013385A70063768501B7070100F7 -:10CF4800330BFB00B70601009386F6FF93570501E4 -:10CF58003377D50013170701B3FADA00B3876701EF -:10CF68003307570163E8F900938504006390F904D7 -:10CF78006300070433853C019385F4FF63649503DC -:10CF88006366F5006314F5026370ED0293161D00E5 -:10CF980033BDA601B30C9D019385E4FF33059501CC -:10CFA800138D06006314F5006304A70193E51500CB -:10CFB8001307FA3F6352E01293F775006380070284 -:10CFC80093F7F50093064000638AD70093864500DF -:10CFD800B3B5B6003304B400938506009317740004 -:10CFE80063DA0700B70700FF9387F7FF3374F4008D -:10CFF80013070A409307E07F63C2E71A9317D40127 -:10D0080093D53500B3E7B70013543400B7061000C2 -:10D018009386F6FF3374D400B70610801377F77F32 -:10D028009386F6FF131747013374D4001319F901D7 -:10D038003364E400336724018320C104032481049A -:10D0480083244104032901048329C103032A81039A -:10D05800832A4103032B0103832BC102032C810282 -:10D06800832C4102032D0102832DC1011385070082 -:10D07800930507001301010567800000130AFAFFF2 -:10D08800130C00006FF01FB91389090013040B007B -:10D098009385040093870B00130720006380E71033 -:10D0A800130730006382E70E13071000E392E7F0DE -:10D0B80013040000930700006F00400913890A0059 -:10D0C8006FF09FFD37040800930500001309000066 -:10D0D800930730006FF05FFC93061000B386E640BC -:10D0E80093078003E3C6D7FC9307F00163C4D70610 -:10D0F800130AEA41B317440133D7D500339A4501DF -:10D10800B3E7E700333A4001B3E747013354D400AB -:10D1180013F777006300070213F7F7009306400040 -:10D12800630AD70013874700B337F7003304F400C6 -:10D138009307070013178400634A07061317D401DF -:10D1480093D73700B367F700135434001307000070 -:10D158006FF0DFEB930710FEB387E7401307000279 -:10D16800B357F400130500006386E600130AEA4388 -:10D1780033154401336AB500333A4001B3E7470138 -:10D18800130400006FF0DFF837040800930700006D -:10D198001307F07F130900006FF05FE71304000026 -:10D1A800930700001307F07F6FF05FE61304000099 -:10D1B80093070000130710006FF05FE5130101FAF1 -:10D1C800232C8104232631053704100093D9450107 -:10D1D800232A910423206105232E7103232C810324 -:10D1E8001304F4FF232E11042328210523244105C9 -:10D1F80023225105232A91032328A1032326B103BF -:10D2080093F9F97F93040500930B0600138C06002D -:10D218003374B40013DBF5016388090A9307F07FC0 -:10D228006386F9103709800013143400336424012D -:10D238001359D50133698900131D3500938919C025 -:10D24800930C000013554C01370A1000130AFAFF1B -:10D258001375F57F337A8A0193840B00135CFC0104 -:10D26800630405109307F07F6304F5163704800004 -:10D27800131A3A00336A8A0013D4DB013364440179 -:10D2880093943B00130515C09307000013972C00D7 -:10D298003367F700B389A9001307F7FF9306E00087 -:10D2A800B34B8B01938A190063E0E616975600008A -:10D2B800938686B3131727003307D7000327070081 -:10D2C8003307D700670007003369A400630E090617 -:10D2D8006300040413050400EF309042930755FFE0 -:10D2E8001307C001634CF7021309D001130D85FF22 -:10D2F8003309F9403314A40133D92401336989006F -:10D30800339DA4019309D0C0B389A9406FF05FF39E -:10D31800EF30103F130505026FF05FFC130985FD20 -:10D3280033992401130D00006FF0DFFD3369A40069 -:10D3380063040902130D0500130904009309F07F23 -:10D34800930C30006FF01FF0130D000093090000DC -:10D35800930C10006FF01FEF130D00009309F07F7E -:10D36800930C20006FF01FEE33647A01630E0406FD -:10D3780063000A0413050A00EF309038930755FF3D -:10D388001307C001634EF7021304D001930485FF0D -:10D398003304F440331A9A0033D48B0033644401C5 -:10D3A800B3949B009307D0C03385A7406FF0DFED9F -:10D3B80013850B00EF30D034130505026FF01FFC06 -:10D3C800130485FD33948B00930400006FF09FFDD8 -:10D3D80033647A016302040213040A001305F07F20 -:10D3E800930730006FF09FEA9304000013050000D4 -:10D3F800930710006FF09FE9930400001305F07F76 -:10D40800930720006FF09FE837070100130AF7FF22 -:10D41800135C0D0193DD0401337D4D01B3F4440128 -:10D4280093050D00138504002328E100EF30D01F79 -:10D43800930C05009385040013050C00EF30D01EF3 -:10D448002326A10093850D0013050C00EF30D01D95 -:10D45800130B050093050D0013850D00EF30D01C4C -:10D468008326C10093D70C013305D5003385A70067 -:10D478006376D50003270101330BEB0093560501B2 -:10D4880033754501B3FC4C0113150501B30795012C -:10D49800935C04013374440193050D0013050400E3 -:10D4A800232AD1002326F100EF3010182328A100E9 -:10D4B8009305040013050C00EF301017130A05003C -:10D4C80093850C0013050C00EF301016130C0500A3 -:10D4D80093050D0013850C00EF301015032701018B -:10D4E8003305450183264101935707013385A7007A -:10D4F80063764501B7070100330CFC0037060100CD -:10D5080093570501338C87019307F6FF337AF500AB -:10D518003377F700131A0A01135D0901330AEA0089 -:10D528003379F90033874601930509001385040010 -:10D538002328E100232EC100EF30100F938504004B -:10D54800232CA10013050D00EF30100E232AA10093 -:10D5580093050D0013850D00EF30100D93040500A1 -:10D568009305090013850D00EF30100C8326410147 -:10D57800032781013305D500935707013385A70099 -:10D588006376D5000326C101B384C400B706010041 -:10D598009387F6FF935D0501B3849D00B37DF50085 -:10D5A8003377F7009305090013050400939D0D01D7 -:10D5B800B38DED00232CD100EF3010079305040044 -:10D5C800232AA10013050D00EF30100693050D0066 -:10D5D8001304050013850C00EF301005130D05002A -:10D5E8009305090013850C00EF301004032741014F -:10D5F80033058500935707013385A70063768500B7 -:10D6080083268101330DDD0083270101B706010060 -:10D618009386F6FF330BFB00B377D5003377D7003B -:10D6280093970701B387E700333A4B01B387870124 -:10D6380033844701330BBB0133079400B33DBB016F -:10D64800B306B70133BC870133344401935705014E -:10D658003337970033648C00B3BDB6013304F4004C -:10D66800B36DB7013304B4013304A40193D7760131 -:10D67800131494003364F4008327C10093149B00AF -:10D68800135B7B01B3E4F400B334900093979600E6 -:10D69800B3E46401B3E4F4009317740063D207128F -:10D6A80093D7140093F41400B3E497009317F4018C -:10D6B800B3E4F400135414001387FA3F6356E010E0 -:10D6C80093F774006380070293F7F4009306400011 -:10D6D800638AD70093874400B3B497003304940057 -:10D6E800938407009317740063DA0700B70700FFF5 -:10D6F8009387F7FF3374F40013870A409307E07F9A -:10D7080063C6E71893DA34009314D401B3E45401E0 -:10D7180013543400B70710009387F7FF3374F400ED -:10D728009377F77F370710801307F7FF9397470121 -:10D738003374E400939BFB013364F400B367740112 -:10D748008320C105032481051385040003290105ED -:10D75800832441058329C104032A8104832A4104BF -:10D76800032B0104832BC103032C8103832C410366 -:10D77800032D0103832DC1029385070013010106C0 -:10D7880067800000930B0B001304090093040D003D -:10D7980093870C0013072000638AE70E13073000F5 -:10D7A800638CE70C13071000E398E7F013040000FC -:10D7B800930400006F008008930B0C006FF09FFD2E -:10D7C800938A09006FF05FEF93061000B386E64076 -:10D7D80093078003E3CCD7FC9307F00163C4D70613 -:10D7E800938AEA41B317540133D7D400B394540150 -:10D7F800B3E7E700B3349000B3E497003354D400A0 -:10D8080093F774006380070293F7F400130740004E -:10D81800638AE70093874400B3B497003304940005 -:10D82800938407009317840063CA07069317D401EB -:10D8380093D43400B3E49700135434001307000062 -:10D848006FF05FED930710FEB387E7401306000201 -:10D85800B357F400130700006386C600938AEA43AF -:10D8680033175401B3649700B3349000B3E49700BE -:10D87800130400006FF0DFF8370408009304000079 -:10D888001307F07F930B00006FF0DFE8130400002C -:10D89800930400001307F07F6FF0DFE71304000024 -:10D8A80093040000130710006FF0DFE68327C5001C -:10D8B80003AF050083AF450083A2850083A5C5009B -:10D8C8003787000093D607011307F7FF139807015E -:10D8D800939E050113D6F701B3F6E60093D7050129 -:10D8E800130101FF8328050003234500032E85004B -:10D8F8001358080193DE0E01B3F7E70093D5F5013D -:10D908006390E60233E768003367C70133670701AE -:10D9180013051000631A07046398D7046F0080008A -:10D92800639CE7003367FF01336757003367D7010C -:10D9380013051000631A0702130510006396D70237 -:10D948006394E8036312F30363105E02631ED80155 -:10D958006300B602639A070033E568003365C501C2 -:10D96800336505013335A00013010101678000000C -:10D97800130500006FF05FFF8327C50083A8C5006B -:10D98800032F05000326450003288500378500007E -:10D9980013D707011305F5FF939E080193D60801D5 -:10D9A80083A2050003A3450003AE85003377A700D3 -:10D9B80093950701130101FF93D5050193D7F7014B -:10D9C80093DE0E01B3F6A60093D8F8016310A70200 -:10D9D800B36FCF00B3EF0F01B3EFBF001305E0FF44 -:10D9E80063800F0E13010101678000006398A6028F -:10D9F800B3EF6200B3EFCF01B3EFDF011305E0FF30 -:10DA0800E3920FFE631207043365CF003365050107 -:10DA18003365B500133515006F00C0026314070A9B -:10DA28003365CF00336505013365B500133515003F -:10DA3800639A0600B3EF6200B3EFCF01B3EFDF01E3 -:10DA4800638C0F06631A0500638E17011305100017 -:10DA5800E38A07F86F008000E39608F81305F0FFE3 -:10DA68006FF05FF8E3C4E6FE635AD7001305F0FFD2 -:10DA7800E38A07F6130510006FF0DFF6E3E8BEFC53 -:10DA88006396D503E3640EFD6314C805E360C3FC25 -:10DA980063146600E3ECE2FBE36A66FC130500002E -:10DAA800E31266F4E3645FFC6FF0DFF3E3E0D5FDB7 -:10DAB800130500006FF01FF3E31C05FE6FF01FF95C -:10DAC800E388E6F213050000E38606F66FF0DFF759 -:10DAD800E36EC8F96FF0DFFD8327C50083A8C50092 -:10DAE800032F05000326450003288500378500001D -:10DAF80013D707011305F5FF939E080193D6080174 -:10DB080083A2050003A3450003AE85003377A70071 -:10DB180093950701130101FF93D5050193D7F701E9 -:10DB280093DE0E01B3F6A60093D8F8016310A7029E -:10DB3800B36FCF00B3EF0F01B3EFBF0013052000A1 -:10DB480063800F0E13010101678000006398A6022D -:10DB5800B3EF6200B3EFCF01B3EFDF01130520008D -:10DB6800E3920FFE631207043365CF0033650501A6 -:10DB78003365B500133515006F00C0026314070A3A -:10DB88003365CF00336505013365B50013351500DE -:10DB9800639A0600B3EF6200B3EFCF01B3EFDF0182 -:10DBA800638C0F06631A0500638E170113051000B6 -:10DBB800E38A07F86F008000E39608F81305F0FF82 -:10DBC8006FF05FF8E3C4E6FE635AD7001305F0FF71 -:10DBD800E38A07F6130510006FF0DFF6E3E8BEFCF2 -:10DBE8006396D503E3640EFD6314C805E360C3FCC4 -:10DBF80063146600E3ECE2FBE36A66FC13050000CD -:10DC0800E31266F4E3645FFC6FF0DFF3E3E0D5FD55 -:10DC1800130500006FF01FF3E31C05FE6FF01FF9FA -:10DC2800E388E6F213050000E38606F66FF0DFF7F7 -:10DC3800E36EC8F96FF0DFFD130101F22326310D01 -:10DC480083A9C50083A6050083A745002328A10052 -:10DC580003A58500139709012328210D2324410DCD -:10DC68002322510D2320610D032A0600032B4600B1 -:10DC7800832A86000329C60037860000232C810CDE -:10DC88001357070113D409011306F6FF2326310998 -:10DC9800232E110C232A910C232E710B232C810B7C -:10DCA800232A910B2328A10B2326B10B2320D1086B -:10DCB8002322F1082324A1082328D104232AF104CC -:10DCC800232CA104232EE1043374C40093D9F90151 -:10DCD800630A04126300C426370501003365A700F0 -:10DCE800232EA104130601059307C10503A7070006 -:10DCF80083A6C7FF9387C7FF1317370093D6D601AC -:10DD08003367D70023A2E700E312F6FE8327010555 -:10DD1800939737002328F104B7C7FFFF93871700AD -:10DD28003304F400930400009317090137870000B7 -:10DD38001355090193D707011307F7FF2326210974 -:10DD48002320410923226109232451092320410763 -:10DD580023226107232451072326F1063375E500A2 -:10DD68001359F901630C051E6304E532B70A010073 -:10DD7800B3EA570123265107130601069307C10684 -:10DD880003A7070083A6C7FF9387C7FF13173700AA -:10DD980093D6D6013367D70023A2E700E312F6FE35 -:10DDA80083270106939737002320F106B7C7FFFFA3 -:10DDB800938717003305F50013070000B3C729013F -:10DDC800232AF100B30785002324F1029387170063 -:10DDD8002322F10293972400B3E7E7009387F7FF24 -:10DDE8009306E00063EAF62C9746000093868603C4 -:10DDF80093972700B387D70083A70700B387D70077 -:10DE08006780070033E6D7003366A6003366E6006E -:10DE1800630006146302070613050700EF30400E7F -:10DE2800130C0500930B4CFF93D45B4093FBFB0151 -:10DE3800638E0B069305C0FF13850400EF20D07E88 -:10DE48009306000213972400130800FFB386764157 -:10DE58001305C5FF631605099307010A3387E70011 -:10DE6800832701059384F4FFB39B7701232877FB6D -:10DE78001307F0FF6F00C00A63080500EF30400881 -:10DE8800130C05026FF01FFA638A07001385070059 -:10DE9800EF300007130C05046FF0DFF81385060058 -:10DEA800EF300006130C05066FF0DFF79305C0FF8F -:10DEB80013850400EF205077130401059307300001 -:10DEC8003307A4000327C7009387F7FF1304C4FF91 -:10DED8002328E400E3D697FE9384F4FF6FF05FF9FC -:10DEE80093070105B385A7003306A7003386C7004B -:10DEF80083A7C50083A50501B3D7D700B3957501DE -:10DF0800B3E7B7002328F6006FF09FF49397240037 -:10DF180093060105B387F60023A007009384F4FF56 -:10DF2800E396E4FE37C4FFFF13041401330484416D -:10DF38006FF05FDFB3E7D700B3E7A70033E5E7008B -:10DF480093042000E30205DE930430006FF0DFDD68 -:10DF580013040000930410006FF01FDD33676A019B -:10DF6800336757013367F7006302071463820706B4 -:10DF780013850700EF20D078130B0500930A4BFF99 -:10DF880013DA5A4093FAFA0163800A089305C0FF2E -:10DF980013050A00EF2050699306000213172A00A0 -:10DFA800130800FFB38656411305C5FF631805091A -:10DFB8009307010A3387E70083270106130AFAFF4C -:10DFC800B39A5701232057FD1307F0FF6F00000B8A -:10DFD800638A0A0013850A00EF209072130B05026A -:10DFE8006FF0DFF9630A0B0013050B00EF20507187 -:10DFF800130B05046FF09FF813050A00EF2050700B -:10E00800130B05066FF09FF79305C0FF13050A0071 -:10E01800EF209061930A0106930730003387AA0026 -:10E028000327C7009387F7FF938ACAFF23A8EA004C -:10E03800E3D647FF130AFAFF6FF01FF993070106AB -:10E04800B385A7003306A7003386C70083A7C5009A -:10E0580083A50501B3D7D700B3955501B3E7B7003A -:10E068002328F6006FF05FF493172A009306010641 -:10E07800B387F60023A00700130AFAFFE316EAFEA7 -:10E0880037C5FFFF13051501330565416FF0DFD272 -:10E09800336A6A01B36A5A01B3EAFA001307200027 -:10E0A800E38E0AD0130730006FF05FD1130500002C -:10E0B800130710006FF09FD0832901050324010680 -:10E0C800370B01009304FBFF93DA0901135904018C -:10E0D800B3F999003374940093850900130504007B -:10E0E800EF209054130A05009305040013850A00D5 -:10E0F800EF209053130C05009305090013850A00BF -:10E10800EF209052930B0500938509001305090031 -:10E11800EF2090513305850193570A013385A700F5 -:10E1280063748501B38B6B01832C4106135D050174 -:10E1380033759500337A9A0013150501B307450125 -:10E1480013DA0C01B3FC9C009385090013850C00BD -:10E158002326F1022320F108EF20104D130B0500B0 -:10E1680093850C0013850A00EF20104C93040500DA -:10E1780093050A0013850A00EF20104B130C0500C5 -:10E188009385090013050A00EF20104A330595000E -:10E1980093570B013385A70063769500B7070100F5 -:10E1A800330CFC00B706010093570501232CF1003E -:10E1B8009387F6FFB37DF50083244105337BFB008D -:10E1C800939D0D01B38D6D013307BD0113DD04016E -:10E1D800B3F4F4009385040013050400232AE10234 -:10E1E8002324D100EF2050442322A10093050400EA -:10E1F80013050D00EF2050432320A10093050D00C7 -:10E2080013050900EF205042130B05009385040005 -:10E2180013050900EF2050410326010003274100A0 -:10E228003305C500935707013385A7006376C500FA -:10E2380083268100330BDB00935705013706010065 -:10E24800B3876701232EF1009307F6FF337BF500B0 -:10E258003377F70093850C00131B0B01138504001B -:10E26800330BEB002326C100EF20103C2324A10030 -:10E2780093850C0013050D00EF20103B2322A1000D -:10E2880093050D0013050A00EF20103A2320A10082 -:10E298009385040013050A00EF2010390328410074 -:10E2A80003278100832601003305050193570701E1 -:10E2B8003385A700637605010326C100B386C6002F -:10E2C8009357050137060100B387D7002320F102D1 -:10E2D8009307F6FF3375F500131505013377F7003B -:10E2E8003307E5002328E102032781069385090007 -:10E2F800232EC102B377F700935607011385070051 -:10E308002320D1002324F100EF201032832581003F -:10E31800232CA10213850A00EF2010318325010068 -:10E328002326A10013850A00EF2010302322A10024 -:10E338000325010093850900EF20102F0328C10051 -:10E3480003278103832641003305050193570701FD -:10E358003385A700637605010326C103B386C6008B -:10E368003708010093570501B386D7009307F8FFD4 -:10E378003376F5003377F700131606013306E60007 -:10E38800032781052326D10493050400B377F700FA -:10E3980093560701138507002322C1042322D100C5 -:10E3A8002326F10023240105EF2010282320A104AF -:10E3B8000325410093050400EF2010278325410021 -:10E3C800232EA10213050900EF2010268325C10082 -:10E3D800232CA10213050900EF2010258328C1036F -:10E3E8000323010403278103330515019357030110 -:10E3F800B387A700032641048326C10463F61701E7 -:10E40800032881043307070113D807013308E800FC -:10E41800370701009305F7FFB3F7B7003373B3006D -:10E4280093970701B38E670083274103232CE102EA -:10E4380003270103B38BFB0083278101B3BDBB0115 -:10E44800B388B701B3876B0133BB6701232CF10095 -:10E458002322F1088327C101B3888801B387F80014 -:10E46800338C67013303EC00333EE3000327C1011B -:10E47800333C6C01B3B8B801B3B7E70033EC87019C -:10E4880083270102330C1C013303C300330CFC0047 -:10E498003305CC01B308D500032701023336C30086 -:10E4A800B307D301338FC80033B3D701232EF1004C -:10E4B8002324F108032BC106B3070F01333EC5011E -:10E4C800333CEC00B3B6D8003336CF00B38D6700C9 -:10E4D800B3E6C600336CCC01B3B7070133B36D00A4 -:10E4E800330CDC00B3E76700935B0B01337BBB00A5 -:10E4F800B307FC009385090013050B002320F102E4 -:10E50800EF209012130C050093050B0013850A00E9 -:10E51800EF2090112328A10293850B0013850A0090 -:10E52800EF209010930A05009385090013850B00CE -:10E53800EF20900F8326010393570C013305D50074 -:10E548003385A7006376D50003278103B38AEA00E1 -:10E5580093570501B7060100B38757012328F10235 -:10E56800832AC1059387F6FFB379F500337CFC0055 -:10E5780093990901B389890113DC0A01B3FAFA00F6 -:10E5880093850A0013050400232ED102EF20D00939 -:10E5980093050400232CA10213050C00EF20D008DA -:10E5A800232AA10293050C0013050900EF20D007C8 -:10E5B8001304050093850A0013050900EF20D0060F -:10E5C80003264103032781033305C5009357070139 -:10E5D8003385A7006376C5008326C1033304D400BE -:10E5E8003708010093570501338487009307F8FF24 -:10E5F8003379F500032581003377F700938504000C -:10E6080013190901232001053309E900EF20D0017E -:10E6180083258100232EA10213050D00EF20D000D1 -:10E6280083250100232CA10213050D00EF20C07FD4 -:10E63800232AA1020325010093850400EF20C07E50 -:10E64800832881038326C10303264103330515016B -:10E6580093D706013385A7006376150103280104C3 -:10E6680033060601B70801009387F8FF3377F500F2 -:10E67800135E05010325C100B3F6F6001317070161 -:10E68800330ECE003307D70093850C002324C10531 -:10E698002320E10423221105EF200079232EA10273 -:10E6A8000325410093850C00EF2000788325410065 -:10E6B800232CA10213050A00EF2000778325C1004F -:10E6C800232AA10213050A00EF2000760323810301 -:10E6D8000328C10303264103330565009356080147 -:10E6E8003385A60003270104032E810463766500A1 -:10E6F8008328410433061601370301009306F3FF0C -:10E7080093580501B388C800B377D5003378D8008B -:10E718000326010383260102B38D3D01B3BF3D01EA -:10E72800B386C600338FF601B38D2D019397070189 -:10E73800B387070133B92D0133088F00B30E2801C1 -:10E74800B38DED00232A610203230103B385CE01B3 -:10E7580033B7ED003386FD003385E50033B92E016C -:10E76800B3B5C501B3B66600333FFF013334880043 -:10E77800B337F6002320C1022326C1083337E5004A -:10E788003306150133E7E50033EFE601B309F60078 -:10E79800336424018325C1000325810033048F00DD -:10E7A80033361601B3B7F9003304E400B367F60053 -:10E7B8003304F400EF2040672328A1028325810059 -:10E7C80003254100EF204066130905008325410019 -:10E7D80003250100EF204065930D05008325C10046 -:10E7E80003250100EF2040640327010333052501B9 -:10E7F800935707013385A700637625010323410357 -:10E80800B38D6D00B706010093570501B38DB701AD -:10E818009387F6FF3379F5003377F7009385040083 -:10E828001319090113050B003309E900232CD10240 -:10E83800EF20805F232AA10293050B0013050D002A -:10E84800EF20805E2328A10293850B0013050D009D -:10E85800EF20805D130D05009385040013850B00E0 -:10E86800EF20805C03260103032741033305C5001D -:10E87800935707013385A7006376C5008326810374 -:10E88800330DDD00B706010093570501338DA7014D -:10E898009387F6FFB374F5003377F70093850C0080 -:10E8A8009394040113850A00B384E400232CD10255 -:10E8B800EF20805793850C00232AA10213050C0032 -:10E8C800EF2080562328A10293050C0013050A00A7 -:10E8D800EF208055930C050093850A0013050A0064 -:10E8E800EF20805403260103032741033305C500A5 -:10E8F800935707013385A7006376C50083268103F4 -:10E90800B38CDC003708010093570501B38C9701DD -:10E918009307F8FF337AF5000325C1003377F70032 -:10E9280093050B00131A0A01330AEA00232C01038A -:10E93800EF20804F232AA1020325410093050B00F5 -:10E94800EF20804E2328A1020325410093850B0068 -:10E95800EF20804D8325C1002322A10013850B00E1 -:10E96800EF20804C832801038326410303264100BE -:10E978003305150113D706013305A7006376150182 -:10E988000328810333060601370801001307F8FF3F -:10E99800B377E5001353050103258100B3F6E600BC -:10E9A800939707013303C300B387D70093850A0001 -:10E9B800232C61022328F102232A0103EF20C046F9 -:10E9C800832581002326A10013050C00EF20C045F4 -:10E9D8002324A1000325010093050C00EF20C04467 -:10E9E8002322A1000325010093850A00EF20C043DC -:10E9F80083288100032EC100032641003305150139 -:10EA080093560E013385A600832701030323810350 -:10EA18006376150103284103330606013708010010 -:10EA280093580501B3892901B388C80033B929016E -:10EA38001306F8FF3304B401B30E24013377C5007D -:10EA4800B3899900337ECE00B385AE01B3B4990083 -:10EA5800131707013307C701B3894901338E95009E -:10EA6800330F9E0133BA4901B30F4F0133B52E015D -:10EA78003334B40133BDA501B3349E00336E9D0019 -:10EA8800B33C9F0133BA4F013365A4003305C50178 -:10EA980033EA4C01B386FF003305450133056500B1 -:10EAA800B3B7F600B305F500B3B7F5003335650025 -:10EAB800B386E60033B7E6003364F5003385150105 -:10EAC800B304E50033B7E4003335150123283109D1 -:10EAD80093850A00B369E50013050B002320C100E4 -:10EAE80023220101232AD108EF20003493050B00CB -:10EAF800130A050013050C00EF200033130B050063 -:10EB080093050C0013850B00EF2000321309050054 -:10EB180093850A0013850B00EF200031330565014A -:10EB280013570A013305A700032601006376650120 -:10EB38000328410033090901B377C50093970701FA -:10EB48003376CA003386C700032781018327C102B1 -:10EB580013550501B384C400B3E7E7000327C101D7 -:10EB68003305850033B6C400B36BF7008327010271 -:10EB7800330535013305C500330525019397D700C3 -:10EB8800232EA108232C9108B3E777011307010866 -:10EB980013060000130540008326C70083250701DC -:10EBA8001306160093D636019395D500B3E6B60042 -:10EBB8002320D70013074700E310A6FE0327010808 -:10EBC80083268108B337F000B3E7E700232CD1068A -:10EBD8000327C108832641082328F106232EE106CE -:10EBE800232AD1069316B70063D406249397F70116 -:10EBF80013070107130600001305300083260700DA -:10EC0800832547001306160093D616009395F50141 -:10EC1800B3E6B6002320D70013074700E310A6FE8B -:10EC28000327C107B337F00013571700232EE10657 -:10EC380003270107B367F7002328F10603274102DA -:10EC4800B74700009387F7FFB307F7006354F02036 -:10EC58000327010793767700638406049376F70009 -:10EC680013064000638EC602832641071307470038 -:10EC78002328E10613374700B306D70033B7E60069 -:10EC8800232AD10683268107B306D700232CD10671 -:10EC9800B3B6E6000327C107B386E600232ED106E4 -:10ECA8000327C1079316B70063D00602B707F0FF22 -:10ECB8009387F7FF3377F700232EE10603274102F6 -:10ECC800B7470000B307F700130701071306000052 -:10ECD8001305300083260700832547001306160016 -:10ECE80093D636009395D501B3E6B6002320D70016 -:10ECF80013074700E310A6FE378700009306E7FFD7 -:10ED080063CEF6120327C10713573700232EE106F7 -:10ED18000327C107B70601809386F6FF2316E1088B -:10ED2800378700001307F7FFB3F7E7000327C10889 -:10ED3800939707018320C10D3377D700B367F70096 -:10ED480003274101B706008093C6F6FF1317F701A2 -:10ED5800B3F7D700B3E7E7008326010103270107CC -:10ED68000324810D23A6F60023A0E600032741070C -:10ED78008324410D0329010D23A2E60003278107FF -:10ED88008329C10C032A810C23A4E600832A410CA1 -:10ED9800032B010C832BC10B032C810B832C410B00 -:10EDA800032D010B832DC10A138506001301010EE3 -:10EDB80067800000232A3101832701052328F106F3 -:10EDC80083274105232AF10683278105232CF10691 -:10EDD8008327C105232EF106930720006380F428BA -:10EDE80093073000638AF42893071000E398F4E44B -:10EDF800232E0106232C0106232A010623280106B7 -:10EE08006F00C021232A21018327010693040700EC -:10EE18002328F10683274106232AF1068327810642 -:10EE2800232CF1068327C106232EF1066FF0DFFAA3 -:10EE3800832781022322F1026FF05FE0232E01066F -:10EE4800232C0106232A0106232801069307F7FF2E -:10EE58006FF01FEC93061000B387F64013074007C6 -:10EE68006342F71C13D6574093F6F70113070000C7 -:10EE780093070000931527006312C70263980604DE -:10EE880013053000130601073305E5406354D50226 -:10EE9800930640003387E6406F00400813050107DA -:10EEA800B305B50083A5050013071700B3E7B7003E -:10EEB8006FF05FFC3308B60003280800938616003D -:10EEC80013064600232E06FF6FF05FFC1306010AA7 -:10EED8003306B600032606FD130800023308D8409F -:10EEE80033160601B3E7C70013063000930801077D -:10EEF800130300003306E6406346C302930540004F -:10EF08003387E540131626009305010A3386C500AA -:10EF18008325C107B3D6D5002328D6FC13064000A5 -:10EF28006F000004338EB80003250E00032E4E0038 -:10EF3800130313003355D500331E0E013365C50185 -:10EF480023A0A800938848006FF01FFB93162700A2 -:10EF580093050107B386D50023A006001307170001 -:10EF6800E316C7FE83260107B337F000B3E7D700DF -:10EF78002328F10693F677006382060493F6F700D8 -:10EF8800638EE60203274107938747002328F1068B -:10EF980093B747003387E700B337F700232AE10622 -:10EFA800032781073387E700232CE1063337F7006F -:10EFB8008327C1073307F700232EE1068327C107FC -:10EFC8001397C700635E0700232E0106232C010652 -:10EFD800232A010623280106930710006FF05FD348 -:10EFE80093070107930600009305300003A7070065 -:10EFF80003A6470093861600135737001316D60149 -:10F008003367C70023A0E70093874700E390B6FE65 -:10F018008327C10793D73700232EF10693070000F3 -:10F028006FF01FCF83274107032701073367F700D6 -:10F03800832781073367F7008327C1073367F70002 -:10F0480093070000E30607CC232E0106232C0106B4 -:10F05800232A0106232801066FF09FCBB7870000FB -:10F06800232E0106232C0106232A01062328010644 -:10F078009387F7FF6FF0DFC9B7870000232EF106EB -:10F08800232C0106232A0106232801069387F7FF6C -:10F09800232A01006FF0DFC7130101FA83A7850057 -:10F0A8002324410503AAC50083A6050003A745003C -:10F0B800232CF102232CF10093170A01232C81043D -:10F0C80093D7070113141A00232A91040323060077 -:10F0D8009304050083284600832586000325C6007F -:10F0E800232E4103232E110423282105232631052D -:10F0F800232251052328D102232AE1022328D10003 -:10F10800232AE100232EF10013541401135AFA01A3 -:10F11800130801011306C101832706000327C6FF50 -:10F128001306C6FF939737001357D701B3E7E700D5 -:10F138002322F600E312C8FE832601019317050176 -:10F14800232CB102939636002324B10293D70701EA -:10F158009315150023286102232A1103232EA102E7 -:10F1680023206102232211032328D1002326F10240 -:10F1780093D515011355F501930801021303C10234 -:10F18800832703000327C3FF1303C3FF93973700A5 -:10F198001357D701B3E7E7002322F300E39268FE91 -:10F1A80083270102378700001307F7FF939737007B -:10F1B8002320F1026390E502032E81020327410216 -:10F1C8003367C701032EC1023367C7013367F700EE -:10F1D80063140700134515003307B440E3164511BF -:10F1E8006352E030639605140325410283258102AA -:10F1F8000328C1023366B500336606013366F6009C -:10F2080063140602832741012328D102130407004F -:10F21800232AF10283278101232CF1028327C101CC -:10F22800232EF1026F0040301306F7FF631E060C11 -:10F2380003274101B387F600B3B6D7003306E500CC -:10F248002328F102B307D600B3B6D700232AF10268 -:10F25800832781013337E600B366D7003387F5008B -:10F268003306D700B337F7000327C101B336D600FA -:10F27800B3E7D7003308E800B3870701232CC1029E -:10F28800232EF102130410008327C1031397C7002C -:10F29800635C07283707F8FF1307F7FFB3F7E700A2 -:10F2A800232EF1028327010313041400130701031B -:10F2B8009397F70113060000130530008326070013 -:10F2C800832547001306160093D616009395F5017B -:10F2D800B3E6B6002320D70013074700E310A6FEC5 -:10F2E8000327C103B337F00013571700232EE10299 -:10F2F80003270103B367F7002328F102B78700004B -:10F308009387F7FF6F00C07CB78700009387F7FFEC -:10F31800E30AF7EE9307400763D0C70623260102E6 -:10F328002324010223220102930710006F00801496 -:10F33800B78700009387F7FF6312F4028327410120 -:10F348002328D102232AF10283278101232CF102E9 -:10F358008327C101232EF1026F00001D8327C102FC -:10F36800B7060800B3E7D7002326F1029307400742 -:10F37800E3C6E7FA13060700135756409305000043 -:10F388001376F60193070000939627006390E7022F -:10F3980063140604130730003307F7406352C702AB -:10F3A80013074000B307F7406F00C007B386D800C3 -:10F3B80083A6060093871700B3E5D5006FF0DFFC3E -:10F3C8003305D30003250500130616001303430075 -:10F3D800232EA3FE6FF09FFC130701043307D70009 -:10F3E800032707FE130800023308C8403317070134 -:10F3F800B3E5E50013073000130E00003307F740AC -:10F408006346EE0293064000B387F64013172700C1 -:10F41800930601043387E6008326C10233D6C6006B -:10F428002320C7FE930640006F00C003B30ED3002D -:10F4380003A50E0083AE4E00130E1E003355C50003 -:10F44800B39E0E013365D5012320A30013034300A7 -:10F458006FF01FFB139727003387E800232007006E -:10F4680093871700E398D7FE03270102B337B0004C -:10F47800B367F7002320F1028326010183270102E5 -:10F488000327410183258102B387F600B3B6D7006D -:10F498002328F102832741020325C102B307F7009D -:10F4A8003386D70033B7E700B337D600B367F70022 -:10F4B800032781018326C101232AC102B305B700AE -:10F4C8003386F50033B7E500B337F600B386A600F8 -:10F4D8003367F7003387E600232CC102232EE102AD -:10F4E8006FF09FDA6300073E631604248328410106 -:10F4F80003258101032EC10133E3A8003363C3014F -:10F508003363D3006310031A2328F10283274102CF -:10F5180013840500232AF10283278102232CF10298 -:10F528008327C102232EF1028327010313F77700F3 -:10F538006304070413F7F70093064000630ED7022D -:10F5480003274103938747002328F10293B7470015 -:10F558003387E700B337F700232AE1020327810343 -:10F568003387E700232CE1023337F7008327C103F1 -:10F578003307F700232EE1028327C1031397C7003F -:10F588006354070237870000130414001307F7FFBA -:10F598006314E4006F00507F3707F8FF1307F7FF85 -:10F5A800B3F7E700232EF102930701039306000047 -:10F5B8009305300003A7070003A6470093861600AB -:10F5C800135737001316D6013367C70023A0E70087 -:10F5D80093874700E390B6FE8327C103B7860000F0 -:10F5E80013D73700232EE1029387F6FF631AF4023C -:10F5F8000326410383270103B3E7C70003268103DA -:10F60800B3E7C700B3E7E700638C0700232ED102F6 -:10F61800232C0102232A010223280102130A0000D5 -:10F628008327C103370701801307F7FF2316F1006B -:10F63800B78700009387F7FF3374F400931704012A -:10F648000324C1008320C105138504003374E4003A -:10F658003364F4009317FA01370A0080134AFAFF5B -:10F6680033744401336AF4008327010303248105BA -:10F6780023A6440123A0F40083274103032901059D -:10F688008329C10423A2F40083278103032A810468 -:10F69800832A410423A4F4008324410513010106AD -:10F6A800678000001303F0FF63106706032641021A -:10F6B800B386F600B3B7F6003388C8003307F800FE -:10F6C800B337F700232AE102032781023336C80043 -:10F6D800B367F6002328D102B306E5003386F600A7 -:10F6E800B337F60033B7E6003367F7008327C10264 -:10F6F800232CC102330EFE003307C701232EE1027B -:10F70800138405006FF05FB8B78600009386F6FF94 -:10F71800E38CD5DE1347F7FF9307400763D0E70470 -:10F72800232E0100232C0100232A01009307100037 -:10F738006F008012B78600009386F6FFE386D5DC5B -:10F748008327C101B7060800B3E7D700232EF100CD -:10F758009307C0F8E346F7FC3307E0409356574059 -:10F76800930800001377F70193070000139527000B -:10F778006390D7026314070493063000B386F640FB -:10F7880063D2E60213074000B307F7406F00C007D3 -:10F798003305A8000325050093871700B3E8A800E0 -:10F7A8006FF0DFFC3303A6000323030013071700E1 -:10F7B80013064600232E66FE6FF09FFC9306010495 -:10F7C800B386A60083A606FD130E0002330EEE4094 -:10F7D800B396C601B3E8D80093063000930E000034 -:10F7E800B386F64063C6DE0213064000B307F64050 -:10F7F8009396260013060104B306D6000326C1011A -:10F808003357E60023A8E6FC930640006F00C003C8 -:10F81800330FA60003230F00032F4F00938E1E0003 -:10F828003353E300331FCF013363E3012320660022 -:10F83800130646006FF01FFB139727003307E800F5 -:10F848002320070093871700E398D7FE03270101B9 -:10F85800B3371001B367F7002328F10083260102AC -:10F86800832701010327410203258101B387F6009D -:10F87800B3B6D7002328F102832741010328C10129 -:10F88800B307F7003386D70033B7E700B337D6009E -:10F89800B367F700032781028326C102232AC10226 -:10F8A8003305A7003306F5003337E500B337F60014 -:10F8B800B38606013367F700232CC1023387E600BD -:10F8C8006FF0DFE3378F000013051400930EFFFF7E -:10F8D800B372D501930F100003274102032681025A -:10F8E8000328C10283254101032E81010323C1019D -:10F8F8009308010363C65F1433E5C50133656500EA -:10F908003365D5006316040A631C05002328F10239 -:10F91800232AE102232CC102232E01036FF0DFC04A -:10F928003365C700336505013365F500631C0500C1 -:10F938002328D102232AB102232CC103232E6102DA -:10F948006FF09FBEB387F6003307B7002328F10294 -:10F95800B3B7D700B306F700232AD1023337B7006D -:10F96800B3B6F600B366D700B305C601B387D500B2 -:10F9780033B6C501B3B6D700B366D6003306680000 -:10F988003386C600232CF1029317C60063C607000E -:10F99800232EC1026FF05FB9B706F8FF9386F6FF12 -:10F9A8003376D600232EC102130410006FF0DFB7A0 -:10F9B800631E05002328F102232AE102232CC10239 -:10F9C800232E010313840E006FF01FB63366C700A1 -:10F9D80033660601B367F600639C07002328D1024B -:10F9E800232AB102232CC103232E61026FF09FFD4D -:10F9F800232EE103232C0102232A010223280102DA -:10FA08001307C103832707008326C7FF1307C7FF10 -:10FA18009397370093D6D601B3E7D7002322F70090 -:10FA2800E392E8FE83270103378400001304F4FF00 -:10FA3800939737002328F102130A00006FF0DFAE16 -:10FA4800B387F6003307B7002328F102B3B7D7000E -:10FA5800B306F700232AD1023337B700B3B6F6004E -:10FA6800B366D7003306C6013307D600B336D700CE -:10FA78003336C6013366D600B30668003306D600AF -:10FA8800232CE102232EC10293870800930600006D -:10FA98009305300003A7070003A6470093861600C6 -:10FAA800135717001316F6013367C70023A0E700A2 -:10FAB80093874700E390B6FE8327C103130405002C -:10FAC80093D71700232EF102B78700009387F7FF1B -:10FAD800E31CF4A4232E0102232C0102232A010291 -:10FAE800232801026FF05FA46352E028639E050C8F -:10FAF8000325410283258102032EC1023368B50024 -:10FB08003368C8013368F800630E08EE1306F7FF80 -:10FB18006318060883284101B387F64033B7F60017 -:10FB28003388A84033B308013308E8402328F1029A -:10FB3800232A01031307000063F6F6003307154173 -:10FB4800133717000328810133676700B306B840ED -:10FB58003335D800B386E640232CD102630607006C -:10FB6800B385054113B615008327C1013366A60086 -:10FB780013041000B387C7413386C740232EC10240 -:10FB88008327C1031397C700E350079A3707080074 -:10FB98001307F7FFB3F7E700232EF1026F00C072D7 -:10FBA800B78700009387F7FF630EF7E493074007D2 -:10FBB80063D0C70423260102232401022322010261 -:10FBC800930710006F008012B78700009387F7FF34 -:10FBD8006306F4F68327C102B7060800B3E7D70027 -:10FBE8002326F10293074007E3C6E7FC1306070044 -:10FBF80013575640930500001376F601930700004B -:10FC0800939627006390E7026314060413073000F5 -:10FC18003307F7406352C70213074000B307F740A2 -:10FC28006F00C007B386D80083A606009387170025 -:10FC3800B3E5D5006FF0DFFC3305D30003250500DD -:10FC48001306160013034300232EA3FE6FF09FFC38 -:10FC5800130701043307D700032707FE1308000220 -:10FC68003308C84033170701B3E5E5001307300030 -:10FC7800130E00003307F7406346EE029306400078 -:10FC8800B387F64013172700930601043387E6006D -:10FC98008326C10233D6C6002320C7FE9306400040 -:10FCA8006F00C003B30ED30003A50E0083AE4E0051 -:10FCB800130E1E003355C500B39E0E013365D501E2 -:10FCC8002320A300130343006FF01FFB13972700A3 -:10FCD8003387E8002320070093871700E398D7FEAF -:10FCE80003270102B337B000B367F7002320F102FE -:10FCF800832641018325010103270102832741024D -:10FD08003387E540B387F64033B6F600B3B6E5006F -:10FD1800B386D740232AD1022328E10293060000A4 -:10FD280063F4E50093B61700B3E6C6000327810223 -:10FD3800032681013307E640B307D740232CF1029D -:10FD4800B335E60013060000638406001336170077 -:10FD58008327C1010327C1023366B600B387E74092 -:10FD6800B387C740232EF1026FF09FE1630C072889 -:10FD7800631A040E0323410183288101832EC101E4 -:10FD8800336E1301336EDE01336EDE0063160E022E -:10FD98002328F1028327410213840500232AF10254 -:10FDA80083278102232CF1028327C102232EF1022B -:10FDB800130A05006FF04FF7130EF0FF631EC70715 -:10FDC80003284102B386D74033B7D70033066840CB -:10FDD800333EC8003306E6402328D102232AC10255 -:10FDE8001307000063F6D7003307034113371700E2 -:10FDF800032881023367C7019306000033061841C0 -:10FE08003333C8003306E640232CC10263060700DB -:10FE1800B388084193B618008327C102B3E8660087 -:10FE2800B387D741B3871741232EF1021384050006 -:10FE3800130A05006FF0DFD4B78600009386F6FF3B -:10FE4800E388D5F41347F7FF9307400763D0E70427 -:10FE5800232E0100232C0100232A01009307100000 -:10FE68006F008012B78600009386F6FFE382D5F212 -:10FE78008327C101B7060800B3E7D700232EF10096 -:10FE88009307C0F8E346F7FC3307E0409356574022 -:10FE9800130300001377F7019307000093982700D6 -:10FEA8006390D7026314070493063000B386F640C4 -:10FEB80063D2E60213074000B307F7406F00C0079C -:10FEC800B308180183A80800938717003363130148 -:10FED8006FF0DFFC330E1601032E0E001307170018 -:10FEE80013064600232EC6FF6FF09FFC93060104FD -:10FEF800B386160183A606FD930E0002B38EEE406C -:10FF0800B396D6013363D30093063000130F000075 -:10FF1800B386F6406346DF0213064000B307F64097 -:10FF28009396260013060104B306D6000326C101E2 -:10FF38003357E60023A8E6FC930640006F00C00391 -:10FF4800B30F160103AE0F0083AF4F00130F1F004E -:10FF5800335EEE00B39FDF01336EFE012320C6013E -:10FF6800130646006FF01FFB139727003307E800BE -:10FF78002320070093871700E398D7FE0327010182 -:10FF8800B3376000B367F7002328F10083264102E6 -:10FF98000328010203270101832741013307E840B1 -:10FFA800B387F64033B6F600B336E800B386D740D9 -:10FFB800232AD1022328E102930600006374E80093 -:10FFC80093B61700B3E6C600032781010326810212 -:10FFD8003307E640B307D740232CF1023338E60055 -:10FFE8001306000063840600133617008327C10236 -:08FFF8000327C1013366060175 -:02000004800179 -:10000000B387E740B387C7406FF09FE2B78F000028 -:10001000930E14009382FFFFB3FE5E00130F1000D7 -:10002000832541020326410103288101032EC101DA -:10003000832881020323C102634EDF1DB3EE150145 -:10004000336F0601B3EE6E00336FCF01B3EEFE00E7 -:10005000336FDF006318041063120F022328F102CC -:10006000232AB102232C1103232E6102E3960ED41E -:1000700013040000130A00006FF08FD0639C0E0081 -:100080002328D102232AC102232C0103232EC103DA -:100090006FF00FCAB38EF640B302B640B3BFD601BD -:1000A000333F5600B382F2412328D103232A510261 -:1000B000930F000063F6D601B38FC54093BF1F00B6 -:1000C000B3031841B3EFEF01B389F341232C31039C -:1000D000B33A78001309000063840F0013B91300CA -:1000E000330F6E4033695901330F2F41232EE10343 -:1000F000931FCF0063DE0F04B386D7403386C5401D -:10010000B3BED700B30ED641232AD1032328D10290 -:10011000B3B5C500930E000063F4D700933E1600FC -:10012000B3870841B3E5BE00B3B6F800B387B74064 -:10013000232CF1026384050013B713003303C3417A -:100140003367D7003303E340232E61026FF0DFC62D -:10015000B3EE5E00B3EE3E01B3EEEE01E38A0EF0C5 -:100160006FF00FBD93030103631E0F04639E0E0225 -:10017000232EF103232C0102232A0102232801024A -:100180009307C10303A7070083A6C7FF9387C7FF91 -:100190001317370093D6D6013367D70023A2E700A1 -:1001A000E392F3FE6FF09F882328F102232AB10225 -:1001B000232C1103232E6102130A0500138402006D -:1001C0006FF00FB7639C0E002328D102232AC102CF -:1001D000232C0103232EC1036FF05FFE232EF103B6 -:1001E000232C0102232A0102232801029307C103C1 -:1001F00003A7070083A6C7FF9387C7FF131737001E -:1002000093D6D6013367D70023A2E700E392F3FE2B -:100210006FF0DF81B38EF640B302B640B3BFD601B4 -:10022000333F5600B382F2412328D103232A5102DF -:10023000930F000063F6D601B38FC54093BF1F0034 -:10024000B3031841B3EFEF01B389F341232C31031A -:10025000B33A78001309000063840F0013B9130048 -:10026000330F6E4033695901330F2F41232EE103C1 -:10027000931FCF0063D00F0EB386D7403386C5409F -:10028000B3BED700B30ED641232AD1032328D1020F -:10029000B3B5C500930E000063F4D700933E16007B -:1002A000B3870841B3E5BE00B3B6F800B387B740E3 -:1002B000232CF1026384050013B713003303C341F9 -:1002C0003367D7003307E340232EE102130A05000A -:1002D0000325C103630A0508EF001043930A45FF95 -:1002E00013D9FA41B70900801379F9019389F9010B -:1002F00033095901B3F93A011359594063D8090038 -:100300009389F9FF93E909FE93891900638A090823 -:100310009305C0FF13050900EF009031930600021A -:1003200013172900130800FFB38636411305C5FFD4 -:100330006312050B930701043387E700832701034A -:100340001309F9FFB3993701232837FF1307F0FF8B -:100350006F00400CB3EE5E00B3EE3E01B3EEEE0173 -:10036000E3880ED06FF0DFF60325810363080500F4 -:10037000EF009039130505026FF05FF60325410386 -:1003800063080500EF005038130505046FF01FF5F2 -:1003900003250103EF005037130505066FF01FF426 -:1003A0009305C0FF13050900EF009028930901038E -:1003B000930730003387A9000327C7009387F7FF0F -:1003C0009389C9FF23A8E900E3D627FF1309F9FFA2 -:1003D0006FF0DFF793070103B385A7003306A7008B -:1003E0003386C70083A7C50083A50501B3D7D7000F -:1003F000B3953501B3E7B7002328F6006FF01FF37C -:100400009317290093060103B387F60023A0070082 -:100410001309F9FFE316E9FE63C08A1633848A40A4 -:10042000130414009357F4413707008093F7F70142 -:100430001307F701B38787003374E40093D757405D -:10044000635804001304F4FF136404FE130414003F -:10045000930604001305000013070000634AF70227 -:100460001387070063D407001307000013932700C6 -:10047000631A040413063000130701033306F64021 -:100480006356D60213074000B307F7406F00C00859 -:1004900013162700930501033386C50003260600C3 -:1004A000130717003365C5006FF05FFBB3056700E6 -:1004B00083A505009386160013074700232EB7FE79 -:1004C0006FF01FFC13172700930601043387E60023 -:1004D000032707FF13060002330686403317C700C1 -:1004E0003365E5001307300093050103130800008E -:1004F0003307F7406346E80293064000B387F640AF -:1005000013172700930601043387E6008326C103EF -:1005100033D48600232887FE930630006F00000442 -:10052000B388650083A6080083A848001308180054 -:10053000B3D68600B398C800B3E6160123A0D50051 -:10054000938545006FF01FFB1397270013060103E7 -:100550003307E6002320070093871700E3D6F6FE53 -:1005600003270103B337A00013040000B367F700AB -:100570002328F1026FE0DFFB8327C1033707F8FF71 -:100580001307F7FF33045441B3F7E7006FE01FDDB3 -:10059000232E0102232C0102232A01022328010217 -:1005A0006FF00F8103274500832785000326C500D0 -:1005B00083260500130101FE2322E1002324F1001C -:1005C000232AE100232CF10037470000931716007F -:1005D0002320D1002328D1002326C10093D6170160 -:1005E0009307E7FF1305000063D0D7029307D701F5 -:1005F000931506011356F60163DCD700370500801A -:100600001345F5FF3305A6001301010267800000C2 -:10061000B707010093D50501B3E5F5009307F70689 -:10062000B387D74013D75740232EB10093F7F70174 -:100630006392070A93053000930601011315270002 -:10064000B385E54063DEF502930740003387E7405A -:100650009306010193172700B387F6009306400025 -:1006600023A007001307170093874700E31AD7FE5C -:1006700003250101E30A06F83305A0406FF0DFF817 -:100680003388A60003280800938717009386460046 -:1006900023AE06FF6FF01FFB832605FF032307FF32 -:1006A000B39616013353F300B3E666002328D10056 -:1006B00093061000E3C206FF13871600130501021C -:1006C00093962600B306D500B3D7F50023A8F6FE0F -:1006D0006FF01FF81305170093080102130830008C -:1006E000131525003308E8403385A80013172700A9 -:1006F000930800021303010293060000B388F84038 -:100700003307E3006FF01FFB130101FD2322910269 -:1007100023261102232481022320210393040500B0 -:10072000638605141384050013D9F50163D405000D -:100730003304B04013050400EF00007D9305150558 -:10074000B74700009387E70113D75540232881005E -:10075000232A0100232C0100232E010093F5F5012B -:10076000B387A740638C050293062000631CD70E55 -:1007700093060002B386B640B356D400232ED100B0 -:100780009306F7FF13060102131727003307E6004D -:100790003314B400232887FE6F0040039306300013 -:1007A000B386E6401306010293962600B306D600F0 -:1007B00083A606FF13062000232ED10093062000F7 -:1007C0006316C700232C8100930610001306010155 -:1007D000139726003307E6001306F0FF23200700D7 -:1007E0009386F6FF1307C7FFE39AC6FE0327C101EE -:1007F000B70601809386F6FF2316E10037870000D5 -:100800001307F7FFB3F7E700139707018327C1002A -:100810001319F9018320C102B3F7D700B3E7E7004A -:10082000370700801347F7FFB3F7E70003270101FD -:1008300003248102B3E7270123A0E4000327410139 -:1008400023A6F4001385040023A2E40003278101FA -:100850000329010223A4E4008324410213010103BC -:1008600067800000130730006FF09FF1232E010016 -:10087000232C0100232A01002328010093070000F4 -:10088000130900006FF09FF69357460137071000D9 -:100890001307F7FF93F7F77F130101FC3377C700C6 -:1008A00093861700232C8102232A9102232E110202 -:1008B0009354F601232821032326310323244103E3 -:1008C000232251032328B100232AE100232E010013 -:1008D000232C010093F6F67F130610001304050085 -:1008E000635CD60AB7460000938606C013D5450060 -:1008F000B387D700935647001317C7013367A70084 -:100900009395C501232ED100232CE100232AB100A9 -:10091000232801000327C101B70601809386F6FF53 -:100920002316E100378700001307F7FFB3F7E7004E -:100930000327C100939707019394F4013377D700FD -:10094000B367F700370700801347F7FFB3F7E700F7 -:10095000B3E49700832701012326940013050400C4 -:100960002320F400832741018320C1038324410312 -:100970002322F40083278101032901038329C10273 -:100980002324F40003248103032A8102832A4102E1 -:1009900013010104678000003365B70063900710FE -:1009A000E30A05F66304070613050700EF00C055C8 -:1009B000130A050093091A0313D9594093F9F90151 -:1009C000638C09049305C0FF13050900EF0040463E -:1009D00093070002930A0101130600FFB387374112 -:1009E0001305C5FF938ACAFF6318C5089307010260 -:1009F0009306F9FF13192900338927018327010181 -:100A0000B3993701232839FF6F000004EF00C04F6E -:100A1000130A05026FF01FFA9305C0FF13050900C2 -:100A2000EF00004193090101930730003387A900CB -:100A30000327C7009387F7FF9389C9FF23A8E9001D -:100A4000E3D627FF9306F9FF9307010113972600CA -:100A50003387E7009307F0FF232007009386F6FF14 -:100A60001307C7FFE39AF6FEB74700009387C7C096 -:100A7000B38747416FF01FEA13070101B306A700D0 -:100A800003A7C60083A606013357F700B3963601C5 -:100A90003367D70023A8EA006FF09FF4B787000000 -:100AA000630805029317C70193D64500B3E7D70043 -:100AB000232CF10013574700B78700009395C50119 -:100AC0003367F700232AB10023280100232EE10019 -:100AD0009387F7FF6FF01FE48325C5008327850008 -:100AE00003274500130101FE832605002324F1009E -:100AF000232CF100939705012322E100232AE10032 -:100B000093D70701139715002326B1002320D100A6 -:100B10002328D100232EF1001357170193D5F50197 -:100B2000130301011306C101832706008326C6FFB4 -:100B30001306C6FF9397370093D6D601B3E7D700C5 -:100B40002322F600E312C3FE832601019307170058 -:100B500013953600B78600009386F6FFB3F7D700EB -:100B60002328A1009306100063DCF61AB7C7FFFF25 -:100B7000938707403307F7009307E07F63CEE71EB4 -:100B80006358E006032881010326C1018327410140 -:100B90009356C801131646003366D6009396470055 -:100BA000B3E6A60093D7C70113184800B336D000A8 -:100BB000B3E70701B3E6F600232AC1002328D100DA -:100BC000832601018327410113F67600630C061A80 -:100BD00013F6F600130540006306A61A13864600B6 -:100BE000B336D600B387D700930606006F0080198E -:100BF0009307C0FC635AF700232A01002328D10081 -:100C0000130700006FF0DFFB8327C101B706080060 -:100C100093080000B3E7D700232EF1009307D00319 -:100C20003387E74013555740930703001377F701C5 -:100C30009306000003A807009386160093874700D9 -:100C4000B3E80801E318D5FE939E2600631A070255 -:100C500093073000B387D74063D8E700930740007D -:100C6000B386D7406F0080063305D6010325050003 -:100C70001307170013064600232EA6FE6FF0DFFDB4 -:100C800093070102B387D70183A707FF1308000268 -:100C90003308E840B3970701B3E8F8009307300042 -:100CA000130E0000B387D7406348FE0413064000CC -:100CB000B306D6409397270013060102B307F60048 -:100CC0000326C1013357E60023A8E7FE13074000BF -:100CD00093972600B307F30023A00700938616001E -:100CE000E398E6FE03270101B3371001B367F7006D -:100CF0002328F1006FF0DFF0330FD60103250F003A -:100D0000032F4F00130E1E003355E500331F0F0154 -:100D10003365E5012320A600130646006FF0DFF8D7 -:100D200003264101832781010328C101B366F60030 -:100D3000B3E60601B3E6A60063180700B336D00099 -:100D4000930700006FF05FE8638A060C9356C601B4 -:100D5000131848001396470093D7C7013707400080 -:100D6000B3E6C600B3E70701B3E7E70093F686FFF3 -:100D70001307F07F6FF05FE5930700009306000014 -:100D80001307F07F13968700635E060013071700B2 -:100D90001306F07F6308C708370680FF1306F6FFC7 -:100DA000B3F7C7001396D70193D63600B366D600C3 -:100DB0001306F07F93D73700631EC700B3E6F60033 -:100DC0009307000063880600B70708009306000039 -:100DD00093050000370610001306F6FFB3F7C700AF -:100DE000370610801377F77F1306F6FF13174701B6 -:100DF000B3F7C700B3E7E700370700801347F7FFF3 -:100E00009395F501B3F7E70033E7B70013850600C4 -:100E1000930507001301010267800000930700009B -:100E20006FF01FF693070000930600006FF09FF726 -:100E3000130605001305000093F6150063840600F1 -:100E40003305C50093D5150013161600E39605FE6D -:100E5000678000006340050663C60506138605002B -:100E6000930505001305F0FF630C060293061000BE -:100E7000637AB6006358C0001316160093961600E6 -:100E8000E36AB6FE1305000063E6C500B385C540FE -:100E90003365D50093D6160013561600E39606FE6A -:100EA0006780000093820000EFF05FFB1385050070 -:100EB000678002003305A04063D80500B305B04049 -:100EC0006FF0DFF9B305B04093820000EFF01FF937 -:100ED0003305A040678002009382000063CA0500CA -:100EE000634C0500EFF09FF7138505006780020053 -:100EF000B305B040E35805FE3305A040EFF01FF600 -:100F00003305B04067800200B7070100637AF5023D -:100F10009307F00FB3B7A7009397370013070002AA -:100F20003307F740B357F500171500001305C5F355 -:100F3000B307F50003C507003305A740678000002D -:100F40003707000193070001E36AE5FC930780017E -:100F50006FF0DFFC130101FF232611002324810021 -:100F6000930500001306000093060000130700001D -:100F7000930700009308900373000000130405001A -:100F8000635A050033048040EF00402E2320850083 -:100F90001304F0FF130504008320C1000324810023 -:100FA0001301010167800000130101F8232A910653 -:100FB000232E110693840500232C810693058100BE -:100FC00013060000930600001307000093070000BB -:100FD000930800057300000013040500635A050020 -:100FE00033048040EF008028232085001304F0FFA5 -:100FF0001385040093058100EF0080201305040091 -:101000008320C107032481078324410713010108BA -:1010100067800000130101FB9305410023261104A2 -:10102000EFF09FF89307F0FF6308F50003258100B8 -:101030001355D500137515008320C1041301010554 -:1010400067800000130101FF232611002324810083 -:101050009306000013070000930700009308E003C5 -:101060007300000013040500635A05003304804038 -:10107000EF00C01F232085001304F0FF13050400B8 -:101080008320C10003248100130101016780000057 -:10109000130101FF23261100232481009306000081 -:1010A00013070000930700009308F003730000008B -:1010B00013040500635A050033048040EF00001B51 -:1010C000232085001304F0FF130504008320C100D2 -:1010D000032481001301010167800000130101FF57 -:1010E0002322910097240000938404A483A7040082 -:1010F0002320210123261100232481001309050048 -:10110000639C07041305000093050000130600000C -:1011100093060000130700009308600D73000000A1 -:101120001304050063560502EF00401433048040A9 -:10113000232085001305F0FF8320C10003248100D4 -:10114000832441000329010013010101678000008D -:101150009727000023AAA79C03A50400930500007D -:10116000130600003305A9009306000013070000D2 -:10117000930700009308600D73000000130405003E -:10118000635A050033048040EF00400E23208500A1 -:101190001304F0FF83A704001305F0FF3309F900DF -:1011A000E31C24F9172700002320879813850700E4 -:1011B0006FF09FF8130101FF232611002324810003 -:1011C0009306000013070000930700009308000433 -:1011D0007300000013040500635A050033048040C7 -:1011E000EF00C008232085001304F0FF130504005E -:1011F0008320C100032481001301010167800000E6 -:1012000083A705002310F50083A785002311F500AF -:1012100083A705012322F50083A745012314F500C8 -:1012200083A785012315F50083A7C5012316F500C3 -:1012300083A705022317F50083A705032328F500DC -:1012400083A705042328F50283A785032326F50237 -:1012500083A78504232AF50083A70505232EF5001F -:1012600083A785052322F5026780000097270000E9 -:101270009387C78903A50700678000004D69616FE8 -:10128000752021210000000068F3FEFFE404FFFF49 -:10129000E404FFFF7CF3FEFFE404FFFFE404FFFF30 -:1012A000E404FFFF1CF3FEFFE404FFFFE404FFFF80 -:1012B00084F3FEFFA4F3FEFFE404FFFF9CF3FEFFB4 -:1012C000ACF3FEFFE404FFFF10F4FEFF18F4FEFF92 -:1012D00018F4FEFF18F4FEFF18F4FEFF18F4FEFFEA -:1012E00018F4FEFF18F4FEFF18F4FEFF18F4FEFFDA -:1012F000E404FFFFE404FFFFE404FFFFE404FFFF56 -:10130000E404FFFFE404FFFFE404FFFF2CF8FEFF0A -:10131000E404FFFFACF4FEFF80F7FEFF2CF8FEFFB5 -:101320002CF8FEFF2CF8FEFFE404FFFFE404FFFFAF -:10133000E404FFFFE404FFFF4CF4FEFFE404FFFFBE -:10134000E404FFFF7C01FFFFE404FFFFE404FFFF70 -:10135000E404FFFF4802FFFFE404FFFF9402FFFFE5 -:10136000E404FFFFE404FFFFC0F2FEFFE404FFFF1C -:10137000E404FFFFE404FFFFE404FFFFE404FFFFD5 -:10138000E404FFFFE404FFFFE404FFFF2CF8FEFF8A -:10139000E404FFFFACF4FEFF84F7FEFF2CF8FEFF31 -:1013A0002CF8FEFF2CF8FEFF54F4FEFF84F7FEFF3E -:1013B0009CF4FEFFE404FFFF80F4FEFFE404FFFF63 -:1013C0001001FFFF8001FFFF1002FFFF9CF4FEFFF2 -:1013D000E404FFFF4802FFFF7CF2FEFF9802FFFFDC -:1013E000E404FFFFE404FFFFFC02FFFFE404FFFF4F -:1013F0007CF2FEFF20202020202020202020202002 -:10140000202020203030303030303030303030301C -:1014100030303030494E4600696E66004E414E0015 -:101420006E616E00303132333435363738396162AF -:10143000636465660000000030313233343536377E -:101440003839414243444546000000003000000066 -:10145000000000000000000000000000000000008C -:10146000000000000000000000000000000000007C -:10147000000000000080FF3F7665924A4A803F15D9 -:101480004CC99A97208A025260C42575326A52CE9E -:101490009A32CE284DA7E45D3DC55D3B8B9E925AA6 -:1014A0006C52CE508BF1283D0D65170C75818675F9 -:1014B00076C9484D669CF85850BC545C65CCC691C2 -:1014C0000EA6AEA019E3A3461E85B7EAFE981B90B0 -:1014D000BBDD8DDEF99DFBEB7EAA51433502370162 -:1014E000B1366C336FC6DF8CE980C947BA93A84127 -:1014F000F850FB256BC7716BBF3CD5A6CFFF491FCA -:1015000078C2D340000000000000000020F09DB52C -:10151000702BA8ADC59D69400000000000000000D0 -:10152000000000000004BFC91B8E34400000000012 -:10153000000000000000000000000020BCBE1940B8 -:10154000000000000000000000000000000000009B -:10155000409C0C4000000000000000000000000063 -:101560000000000000C8054000000000000000006E -:10157000000000000000000000A00240FFFFFEFF8E -:10158000FCFFF8FFF0FFE0FFC0FF80FF00FF00FE60 -:1015900000FC00F800F000E000C000800000000047 -:1015A0003020FCCFC3A12381E32DDE9FCED2C8041F -:1015B000DDA6D80A6482CBD2EAF2D4122549E42D02 -:1015C00036344F53AECE6B253FF598F6D36B5801AA -:1015D000A687BDC057DAA582A6A2B53231E7D404EA -:1015E000F2E332D332711CD223DB32EE49905A3906 -:1015F0003EA20853FBFE551191FA39197A6325432F -:1016000031C0AC3C6DE2DEDB5DD0F6B37CACA0E477 -:10161000BC647C46D0DD553E202A2462B347D7986F -:10162000233FA5E939A527EA7FA82A3F5B0BF24AA9 -:1016300081A5ED18DE67BA943945AD1EB1CF943F50 -:1016400071BFB3A9897968BE2E4C5BE14DC4BE94CD -:1016500095E6C93F4D3D3D7CBA362B0DC2FDFCCE13 -:1016600061841177CCABE43F55C1A8A44E4013610F -:10167000C3D32B6519E25817B7D1F13F0AD7A3702E -:101680003D0AD7A3703D0AD7A3703D0AD7A3F83F00 -:10169000CDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC89 -:1016A000CCCCFB3F204E614E20000000202D496E27 -:1016B00066696E697479200020496E66696E697486 -:1016C000792000004E614E00452564004300000073 -:1016D000504F5349580000002E0000000000000049 -:1016E00005000000190000007D000000000000005F -:1016F000000000000000F03F000000000000244057 -:1017000000000000000059400000000000408F4031 -:10171000000000000088C34000000000006AF8409C -:101720000000000080842E4100000000D0126341C0 -:101730000000000084D797410000000065CDCD4136 -:10174000000000205FA00242000000E87648374217 -:10175000000000A2941A6D42000040E59C30A242B5 -:101760000000901EC4BCD64200003426F56B0C432A -:101770000080E03779C3414300A0D88557347643D1 -:1017800000C84E676DC1AB43003D9160E458E14332 -:10179000408CB5781DAF154450EFE2D6E41A4B44A7 -:1017A00092D54D06CFF08044F64AE1C7022DB544EC -:1017B000B49DD9794378EA44BC89D897B2D29C3C8D -:1017C00033A7A8D523F649393DA7F444FD0FA53228 -:1017D0009D978CCF08BA5B25436FAC642806C80A76 -:1017E0000080E03779C34143176E05B5B5B893461D -:1017F000F5F93FE9034F384D321D30F94877825AE9 -:101800003CBF737FDD4F15758859FFFF8C6BFFFF61 -:101810008C6BFFFF9C59FFFF8C6BFFFF8C6BFFFFF6 -:101820008C6BFFFF3459FFFF8C6BFFFF8C6BFFFF4E -:10183000A459FFFFC459FFFF8C6BFFFFBC59FFFF8A -:10184000CC59FFFF8C6BFFFF305AFFFF385AFFFF68 -:10185000385AFFFF385AFFFF385AFFFF385AFFFF48 -:10186000385AFFFF385AFFFF385AFFFF385AFFFF38 -:101870008C6BFFFF8C6BFFFF8C6BFFFF8C6BFFFF94 -:101880008C6BFFFF8C6BFFFF8C6BFFFFB45BFFFF6C -:101890008C6BFFFFD45AFFFF085BFFFFB45BFFFFB9 -:1018A000B45BFFFFB45BFFFF8C6BFFFF8C6BFFFF34 -:1018B0008C6BFFFF8C6BFFFF745AFFFF8C6BFFFF7D -:1018C0008C6BFFFF8465FFFF8C6BFFFF8C6BFFFF52 -:1018D0008C6BFFFF5066FFFF8C6BFFFF3469FFFFCF -:1018E0008C6BFFFF8C6BFFFFD858FFFF8C6BFFFFEB -:1018F0008C6BFFFF8C6BFFFF8C6BFFFF8C6BFFFF14 -:101900008C6BFFFF8C6BFFFF8C6BFFFFB45BFFFFEB -:101910008C6BFFFFD45AFFFF0C5BFFFFB45BFFFF34 -:10192000B45BFFFFB45BFFFF7C5AFFFF0C5BFFFF64 -:10193000C45AFFFF8C6BFFFFA85AFFFF8C6BFFFFA1 -:101940001865FFFF8865FFFF1866FFFFC45AFFFF99 -:101950008C6BFFFF5066FFFF9458FFFF3869FFFF55 -:101960008C6BFFFF8C6BFFFF9C69FFFF8C6BFFFF95 -:101970009458FFFF202020202020202020202020FD -:101980002020202030303030303030303030303097 -:1019900030303030C878FFFFE880FFFFE880FFFF7D -:1019A000DC78FFFFE880FFFFE880FFFFE880FFFFB3 -:1019B0007C78FFFFE880FFFFE880FFFFE478FFFF0F -:1019C000FC78FFFFE880FFFFF478FFFF0479FFFF5A -:1019D000E880FFFF6079FFFF6879FFFF6879FFFF0C -:1019E0006879FFFF6879FFFF6879FFFF6879FFFF7B -:1019F0006879FFFF6879FFFF6879FFFFE880FFFFE4 -:101A0000E880FFFFE880FFFFE880FFFFE880FFFF3E -:101A1000E880FFFFE880FFFFE880FFFFE880FFFF2E -:101A2000E479FFFF047AFFFFE880FFFFE880FFFF13 -:101A3000E880FFFFE880FFFFE880FFFFE880FFFF0E -:101A4000E880FFFFE880FFFFE880FFFFE880FFFFFE -:101A5000087BFFFFE880FFFFE880FFFFE880FFFFD3 -:101A6000C47BFFFFE880FFFFA87EFFFFE880FFFF49 -:101A7000E880FFFF2C78FFFFE880FFFFE880FFFF92 -:101A8000E880FFFFE880FFFFE880FFFFE880FFFFBE -:101A9000E880FFFFE880FFFFE880FFFFE880FFFFAE -:101AA000E479FFFF087AFFFFE880FFFFE880FFFF8F -:101AB000E880FFFFA479FFFF087AFFFFD479FFFFDA -:101AC000E880FFFFC479FFFFE880FFFFA87AFFFFEF -:101AD0000C7BFFFF947BFFFFD479FFFFE880FFFFC3 -:101AE000C47BFFFFF877FFFFAC7EFFFFE880FFFFBE -:101AF000E880FFFF087FFFFFE880FFFFF877FFFF28 -:101B000020202020202020202020202020202020D5 -:101B100030303030303030303030303030303030C5 -:101B200000202020202020202020282828282820AD -:101B300020202020202020202020202020202020A5 -:101B4000208810101010101010101010101010100D -:101B500010040404040404040404041010101010FD -:101B600010104141414141410101010101010101C7 -:101B70000101010101010101010101011010101019 -:101B80001010424242424242020202020202020299 -:101B900002020202020202020202020210101010ED -:101BA0002000000000000000000000000000000015 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE00000000000000000000000000000000000F5 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C2000000000009496FFFFB49EFFFFB49EFFFFEC -:101C3000A896FFFFB49EFFFFB49EFFFFB49EFFFF78 -:101C40004896FFFFB49EFFFFB49EFFFFB096FFFFD4 -:101C5000C896FFFFB49EFFFFC096FFFFD096FFFF20 -:101C6000B49EFFFF2C97FFFF3497FFFF3497FFFFD1 -:101C70003497FFFF3497FFFF3497FFFF3497FFFF40 -:101C80003497FFFF3497FFFF3497FFFFB49EFFFFA9 -:101C9000B49EFFFFB49EFFFFB49EFFFFB49EFFFF04 -:101CA000B49EFFFFB49EFFFFB49EFFFFB49EFFFFF4 -:101CB000B097FFFFD097FFFFB49EFFFFB49EFFFFDA -:101CC000B49EFFFFB49EFFFFB49EFFFFB49EFFFFD4 -:101CD000B49EFFFFB49EFFFFB49EFFFFB49EFFFFC4 -:101CE000D498FFFFB49EFFFFB49EFFFFB49EFFFF9A -:101CF0009099FFFFB49EFFFF749CFFFFB49EFFFF0F -:101D0000B49EFFFFF895FFFFB49EFFFFB49EFFFF58 -:101D1000B49EFFFFB49EFFFFB49EFFFFB49EFFFF83 -:101D2000B49EFFFFB49EFFFFB49EFFFFB49EFFFF73 -:101D3000B097FFFFD497FFFFB49EFFFFB49EFFFF55 -:101D4000B49EFFFF7097FFFFD497FFFFA097FFFFA0 -:101D5000B49EFFFF9097FFFFB49EFFFF7498FFFFB4 -:101D6000D898FFFF6099FFFFA097FFFFB49EFFFF89 -:101D70009099FFFFC495FFFF789CFFFFB49EFFFF83 -:101D8000B49EFFFFD49CFFFFB49EFFFFC495FFFFEE -:101D90002020202020202020202020202020202043 -:101DA0003030303030303030303030303030303033 -:101DB000F4B3FFFF08B3FFFF14B3FFFF08B3FFFF47 -:101DC000E0B3FFFF08B3FFFF14B3FFFFF4B3FFFF5F -:101DD000F4B3FFFFE0B3FFFF14B3FFFFE0B2FFFF78 -:101DE000E0B2FFFFE0B2FFFF1CB3FFFFB0B9FFFF9F -:101DF000B0B9FFFFD4B9FFFFA4B9FFFFA4B9FFFF3B -:101E000094BAFFFFD4B9FFFFA4B9FFFF94BAFFFF54 -:101E1000A4B9FFFFD4B9FFFFA0B9FFFFA0B9FFFF2E -:101E2000A0B9FFFF94BAFFFFE8CFFFFFE8CFFFFFA5 -:101E3000E4CFFFFF98CFFFFF98CFFFFF58D2FFFFFF -:101E4000E4CFFFFF98CFFFFF58D2FFFF98CFFFFFEF -:101E5000E4CFFFFF94CFFFFF94CFFFFF94CFFFFFAE -:101E600058D2FFFF00010202030303030404040429 -:101E70000404040405050505050505050505050516 -:101E800005050505060606060606060606060606F6 -:101E900006060606060606060606060606060606E2 -:101EA00006060606070707070707070707070707C6 -:101EB00007070707070707070707070707070707B2 -:101EC00007070707070707070707070707070707A2 -:101ED0000707070707070707070707070707070792 -:101EE0000707070708080808080808080808080876 -:101EF0000808080808080808080808080808080862 -:101F00000808080808080808080808080808080851 -:101F10000808080808080808080808080808080841 -:101F20000808080808080808080808080808080831 -:101F30000808080808080808080808080808080821 -:101F40000808080808080808080808080808080811 -:101F50000808080808080808080808080808080801 -:101F60000808080800000000000000000000F03F22 -:101F7000000000000000244000000000000050436A -:101F80001000000000000000017A5200017C0101F5 -:101F90001B0D02001000000018000000CCE1FEFF45 -:101FA0000800000000000000100000002C000000ED -:101FB000C0E1FEFF0800000000000000100000006B -:101FC00040000000B4E1FEFF080000000000000037 -:101FD0001000000054000000A8E1FEFF0400000013 -:101FE00000000000100000006800000098E1FEFF03 -:101FF0000800000000000000100000007C0000004D -:102000008CE1FEFF0800000000000000100000004E -:102010009000000080E1FEFF0C00000000000000C6 -:102020001C000000A400000078E1FEFF3800000062 -:1020300000440E10488802810160C144C8440E006B -:1020400024000000C400000090E1FEFF50000000EA -:1020500000440E1050920481018802890364C14437 -:10206000C848C944D2440E0018000000EC0000002B -:10207000BCE1FEFF2C00000000480E104881014822 -:10208000C1500E0010000000080100009CE1FEFF9E -:10209000040000000000000010000000000000002C -:1020A000017A5200017C01011B0D02004C0000006E -:1020B00018000000249EFFFFDC05000000440E30E5 -:1020C000708903950781018802920493059406960E -:1020D000089709980A990B9A0C0370020AC144C820 -:1020E00044C944D244D344D444D544D644D744D834 -:1020F00044D944DA440E00440B00000010000000F4 -:1021000000000000017A5200017C01011B0D020059 -:1021100050000000180000009CA3FFFF0005000015 -:1021200000440E5074880289039305990B81019233 -:10213000049406950796089709980A9A0C9B0D0334 -:1021400020010AC144C844C944D244D344D444D52C -:1021500044D644D744D844D944DA44DB440E00443E -:042160000B00000070 -:102168000000000054240180BC2401802425018043 -:102178000000000000000000000000000000000057 -:102188000000000000000000000000000000000047 -:102198000000000000000000000000000000000037 -:1021A8000000000000000000000000000000000027 -:1021B8000000000000000000000000000000000017 -:1021C8000000000000000000000000000000000007 -:1021D80000000000000000000000000000000000F7 -:1021E80000000000000000000000000000000000E7 -:1021F80000000000000000000000000000000000D7 -:1022080000000000000000000100000000000000C5 -:102218000E33CDAB34126DE6ECDE05000B0000008A -:1022280000000000000000000000000000000000A6 -:102238000000000000000000000000000000000096 -:102248000000000000000000000000000000000086 -:102258000000000000000000000000000000000076 -:102268000000000000000000000000000000000066 -:102278000000000000000000000000000000000056 -:102288000000000000000000000000000000000046 -:102298000000000000000000000000000000000036 -:1022A8000000000000000000000000000000000026 -:1022B8000000000000000000000000000000000016 -:1022C8000000000000000000000000000000000006 -:1022D80000000000000000000000000000000000F6 -:1022E80000000000000000000000000000000000E6 -:1022F80000000000000000000000000000000000D6 -:1023080000000000000000000000000000000000C5 -:1023180000000000000000000000000000000000B5 -:1023280000000000000000000000000000000000A5 -:102338000000000000000000000000000000000095 -:102348000000000000000000000000000000000085 -:102358000000000000000000000000000000000075 -:102368000000000000000000000000000000000065 -:102378000000000000000000000000000000000055 -:102388000000000000000000000000000000000045 -:102398000000000000000000000000000000000035 -:1023A8000000000000000000000000000000000025 -:1023B8000000000000000000000000000000000015 -:1023C8000000000000000000000000000000000005 -:1023D80000000000000000000000000000000000F5 -:1023E80000000000000000000000000000000000E5 -:1023F80000000000000000000000000000000000D5 -:1024080000000000000000000000000000000000C4 -:1024180000000000000000000000000000000000B4 -:1024280000000000000000000000000000000000A4 -:102438000000000000000000000000000000000094 -:102448000000000000000000000000000000000084 -:102458000000000000000000000000000000000074 -:102468000000000000000000000000000000000064 -:102478000000000000000000000000000000000054 -:102488000000000000000000000000000000000044 -:102498000000000000000000000000000000000034 -:1024A8000000000000000000000000000000000024 -:1024B8000000000000000000000000000000000014 -:1024C8000000000000000000000000000000000004 -:1024D80000000000000000000000000000000000F4 -:1024E80000000000000000000000000000000000E4 -:1024F80000000000000000000000000000000000D4 -:1025080000000000000000000000000000000000C3 -:1025180000000000000000000000000000000000B3 -:1025280000000000000000000000000000000000A3 -:102538000000000000000000000000000000000093 -:102548000000000000000000000000000000000083 -:102558000000000000000000000000000000000073 -:102568000000000000000000000000000000000063 -:102578000000000000000000000000000000000053 -:102588000000000000000000430000000000000000 -:102598000000000000000000000000000000000033 -:1025A80000000000000000004300000000000000E0 -:1025B8000000000000000000000000000000000013 -:1025C80000000000000000004300000000000000C0 -:1025D80000000000000000000000000000000000F3 -:1025E80000000000000000004300000000000000A0 -:1025F80000000000000000000000000000000000D3 -:10260800000000000000000043000000000000007F -:1026180000000000000000000000000000000000B2 -:10262800000000000000000043000000000000005F -:102638000000000000000000000000000000000092 -:10264800000000000000000043000000000000003F -:102658000000000000000000000000000000000072 -:102668000000000000000000489D00802C590080F8 -:1026780000000000201B0180D81601808412018010 -:1026880084120180841201808412018084120180E6 -:1026980084120180841201808412018084120180D6 -:1026A800FFFFFFFFFFFFFFFFFFFFFFFFFFFF000030 -:1026B80001004153434949000000000000000000A8 -:1026C8000000000000000000000000000000000002 -:1026D8000000415343494900000000000000000089 -:1026E80000000000000000000000000000000000E2 -:1026F800000000000000000000000000FC2601802F -:10270800FC26018004270180042701800C27018012 -:102718000C27018014270180142701801C270180C1 -:102728001C27018024270180242701802C27018071 -:102738002C27018034270180342701803C27018021 -:102748003C27018044270180442701804C270180D1 -:102758004C27018054270180542701805C27018081 -:102768005C27018064270180642701806C27018031 -:102778006C27018074270180742701807C270180E1 -:102788007C27018084270180842701808C27018091 -:102798008C27018094270180942701809C27018041 -:1027A8009C270180A4270180A4270180AC270180F1 -:1027B800AC270180B4270180B4270180BC270180A1 -:1027C800BC270180C4270180C4270180CC27018051 -:1027D800CC270180D4270180D4270180DC27018001 -:1027E800DC270180E4270180E4270180EC270180B1 -:1027F800EC270180F4270180F4270180FC27018061 -:10280800FC27018004280180042801800C2801800D -:102818000C28018014280180142801801C280180BC -:102828001C28018024280180242801802C2801806C -:102838002C28018034280180342801803C2801801C -:102848003C28018044280180442801804C280180CC -:102858004C28018054280180542801805C2801807C -:102868005C28018064280180642801806C2801802C -:102878006C28018074280180742801807C280180DC -:102888007C28018084280180842801808C2801808C -:102898008C28018094280180942801809C2801803C -:1028A8009C280180A4280180A4280180AC280180EC -:1028B800AC280180B4280180B4280180BC2801809C -:1028C800BC280180C4280180C4280180CC2801804C -:1028D800CC280180D4280180D4280180DC280180FC -:1028E800DC280180E4280180E4280180EC280180AC -:1028F800EC280180F4280180F4280180FC2801805C -:10290800FC28018004290180042901800C29018008 -:102918000C29018014290180142901801C290180B7 -:102928001C29018024290180242901802C29018067 -:102938002C29018034290180342901803C29018017 -:102948003C29018044290180442901804C290180C7 -:102958004C29018054290180542901805C29018077 -:102968005C29018064290180642901806C29018027 -:102978006C29018074290180742901807C290180D7 -:102988007C29018084290180842901808C29018087 -:102998008C29018094290180942901809C29018037 -:1029A8009C290180A4290180A4290180AC290180E7 -:1029B800AC290180B4290180B4290180BC29018097 -:1029C800BC290180C4290180C4290180CC29018047 -:1029D800CC290180D4290180D4290180DC290180F7 -:1029E800DC290180E4290180E4290180EC290180A7 -:1029F800EC290180F4290180F4290180FC29018057 -:102A0800FC290180042A0180042A01800C2A018003 -:102A18000C2A0180142A0180142A01801C2A0180B2 -:102A28001C2A0180242A0180242A01802C2A018062 -:102A38002C2A0180342A0180342A01803C2A018012 -:102A48003C2A0180442A0180442A01804C2A0180C2 -:102A58004C2A0180542A0180542A01805C2A018072 -:102A68005C2A0180642A0180642A01806C2A018022 -:102A78006C2A0180742A0180742A01807C2A0180D2 -:102A88007C2A0180842A0180842A01808C2A018082 -:102A98008C2A0180942A0180942A01809C2A018032 -:102AA8009C2A0180A42A0180A42A0180AC2A0180E2 -:102AB800AC2A0180B42A0180B42A0180BC2A018092 -:102AC800BC2A0180C42A0180C42A0180CC2A018042 -:102AD800CC2A0180D42A0180D42A0180DC2A0180F2 -:102AE800DC2A0180E42A0180E42A0180EC2A0180A2 -:102AF800EC2A0180F42A0180F42A018068210180EF -:0C2B080068210180FFFFFFFF00000200B9 -:040000058000004037 -:00000001FF diff --git a/benchmarks/riscv_tests/rv32mi-p-csr.dump b/benchmarks/riscv_tests/rv32mi-p-csr.dump deleted file mode 100644 index 15f55d92..00000000 --- a/benchmarks/riscv_tests/rv32mi-p-csr.dump +++ /dev/null @@ -1,262 +0,0 @@ - -rv32mi-p-csr: 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: 00000f17 auipc t5,0x0 -80000024: 26cf0f13 addi t5,t5,620 # 8000028c -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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00002537 lui a0,0x2 -800000f8: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> -800000fc: 30052073 csrs mstatus,a0 -80000100: 00000297 auipc t0,0x0 -80000104: 01428293 addi t0,t0,20 # 80000114 -80000108: 34129073 csrw mepc,t0 -8000010c: f1402573 csrr a0,mhartid -80000110: 30200073 mret -80000114: 3401d073 csrwi mscratch,3 - -80000118 : -80000118: 34002573 csrr a0,mscratch -8000011c: 00300e93 li t4,3 -80000120: 00200193 li gp,2 -80000124: 13d51c63 bne a0,t4,8000025c - -80000128 : -80000128: 3400f5f3 csrrci a1,mscratch,1 -8000012c: 00300e93 li t4,3 -80000130: 00300193 li gp,3 -80000134: 13d59463 bne a1,t4,8000025c - -80000138 : -80000138: 34026673 csrrsi a2,mscratch,4 -8000013c: 00200e93 li t4,2 -80000140: 00400193 li gp,4 -80000144: 11d61c63 bne a2,t4,8000025c - -80000148 : -80000148: 340156f3 csrrwi a3,mscratch,2 -8000014c: 00600e93 li t4,6 -80000150: 00500193 li gp,5 -80000154: 11d69463 bne a3,t4,8000025c - -80000158 : -80000158: 0bad2537 lui a0,0xbad2 -8000015c: dea50513 addi a0,a0,-534 # bad1dea <_start-0x7452e216> -80000160: 340515f3 csrrw a1,mscratch,a0 -80000164: 00200e93 li t4,2 -80000168: 00600193 li gp,6 -8000016c: 0fd59863 bne a1,t4,8000025c - -80000170 : -80000170: 00002537 lui a0,0x2 -80000174: dea50513 addi a0,a0,-534 # 1dea <_start-0x7fffe216> -80000178: 34053573 csrrc a0,mscratch,a0 -8000017c: 0bad2eb7 lui t4,0xbad2 -80000180: deae8e93 addi t4,t4,-534 # bad1dea <_start-0x7452e216> -80000184: 00700193 li gp,7 -80000188: 0dd51a63 bne a0,t4,8000025c - -8000018c : -8000018c: 0000c537 lui a0,0xc -80000190: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111> -80000194: 34052573 csrrs a0,mscratch,a0 -80000198: 0bad0eb7 lui t4,0xbad0 -8000019c: 00800193 li gp,8 -800001a0: 0bd51e63 bne a0,t4,8000025c - -800001a4 : -800001a4: 34002573 csrr a0,mscratch -800001a8: 0badceb7 lui t4,0xbadc -800001ac: eefe8e93 addi t4,t4,-273 # badbeef <_start-0x74524111> -800001b0: 00900193 li gp,9 -800001b4: 0bd51463 bne a0,t4,8000025c -800001b8: 30102573 csrr a0,misa -800001bc: 02057513 andi a0,a0,32 -800001c0: 02050863 beqz a0,800001f0 -800001c4: 000065b7 lui a1,0x6 -800001c8: 3005a073 csrs mstatus,a1 -800001cc: f0000053 fmv.w.x ft0,zero -800001d0: 3005b073 csrc mstatus,a1 -800001d4: 00002597 auipc a1,0x2 -800001d8: e2c58593 addi a1,a1,-468 # 80002000 - -800001dc : -800001dc: 0005a027 fsw ft0,0(a1) -800001e0: 0005a503 lw a0,0(a1) -800001e4: 00100e93 li t4,1 -800001e8: 00a00193 li gp,10 -800001ec: 07d51863 bne a0,t4,8000025c -800001f0: 30102573 csrr a0,misa -800001f4: 01455513 srli a0,a0,0x14 -800001f8: 00157513 andi a0,a0,1 -800001fc: 04050463 beqz a0,80000244 -80000200: 000022b7 lui t0,0x2 -80000204: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> -80000208: 3002b073 csrc mstatus,t0 -8000020c: 00000297 auipc t0,0x0 -80000210: 01028293 addi t0,t0,16 # 8000021c -80000214: 34129073 csrw mepc,t0 -80000218: 30200073 mret - -8000021c : -8000021c: 0ff00513 li a0,255 -80000220: c0001573 csrrw a0,cycle,zero -80000224: 0ff00e93 li t4,255 -80000228: 00b00193 li gp,11 -8000022c: 03d51863 bne a0,t4,8000025c - -80000230 : -80000230: 0ff00513 li a0,255 -80000234: 30002573 csrr a0,mstatus -80000238: 0ff00e93 li t4,255 -8000023c: 00c00193 li gp,12 -80000240: 01d51e63 bne a0,t4,8000025c - -80000244 : -80000244: 0ff0000f fence -80000248: 00100193 li gp,1 -8000024c: 05d00893 li a7,93 -80000250: 00000513 li a0,0 -80000254: 00000073 ecall -80000258: 02301063 bne zero,gp,80000278 - -8000025c : -8000025c: 0ff0000f fence -80000260: 00018063 beqz gp,80000260 -80000264: 00119193 slli gp,gp,0x1 -80000268: 0011e193 ori gp,gp,1 -8000026c: 05d00893 li a7,93 -80000270: 00018513 mv a0,gp -80000274: 00000073 ecall - -80000278 : -80000278: 0ff0000f fence -8000027c: 00100193 li gp,1 -80000280: 05d00893 li a7,93 -80000284: 00000513 li a0,0 -80000288: 00000073 ecall - -8000028c : -8000028c: 00900293 li t0,9 -80000290: 0051e663 bltu gp,t0,8000029c -80000294: 00b00293 li t0,11 -80000298: 0232f263 bgeu t0,gp,800002bc -8000029c: 342022f3 csrr t0,mcause -800002a0: 00800313 li t1,8 -800002a4: fa629ce3 bne t0,t1,8000025c -800002a8: 0ff0000f fence -800002ac: 00100193 li gp,1 -800002b0: 05d00893 li a7,93 -800002b4: 00000513 li a0,0 -800002b8: 00000073 ecall - -800002bc : -800002bc: 342022f3 csrr t0,mcause -800002c0: 00200313 li t1,2 -800002c4: f8629ce3 bne t0,t1,8000025c -800002c8: 341022f3 csrr t0,mepc -800002cc: 00428293 addi t0,t0,4 -800002d0: 34129073 csrw mepc,t0 -800002d4: 30200073 mret -800002d8: c0001073 unimp -800002dc: 0000 unimp -800002de: 0000 unimp -800002e0: 0000 unimp -800002e2: 0000 unimp -800002e4: 0000 unimp -800002e6: 0000 unimp -800002e8: 0000 unimp -800002ea: 0000 unimp -800002ec: 0000 unimp -800002ee: 0000 unimp -800002f0: 0000 unimp -800002f2: 0000 unimp -800002f4: 0000 unimp -800002f6: 0000 unimp -800002f8: 0000 unimp -800002fa: 0000 unimp -800002fc: 0000 unimp -800002fe: 0000 unimp -80000300: 0000 unimp -80000302: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: 0001 nop -80002002: 0000 unimp -80002004: 0000 unimp -80002006: 0000 unimp -80002008: 0000 unimp -8000200a: 0000 unimp -8000200c: 0000 unimp -8000200e: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32mi-p-illegal.dump b/benchmarks/riscv_tests/rv32mi-p-illegal.dump deleted file mode 100644 index 714d800c..00000000 --- a/benchmarks/riscv_tests/rv32mi-p-illegal.dump +++ /dev/null @@ -1,368 +0,0 @@ - -rv32mi-p-illegal: 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: 00000f17 auipc t5,0x0 -80000024: 2e0f0f13 addi t5,t5,736 # 80000300 -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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00002537 lui a0,0x2 -800000f8: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> -800000fc: 30052073 csrs mstatus,a0 -80000100: 00000297 auipc t0,0x0 -80000104: 01428293 addi t0,t0,20 # 80000114 -80000108: 34129073 csrw mepc,t0 -8000010c: f1402573 csrr a0,mhartid -80000110: 30200073 mret -80000114: 00200193 li gp,2 - -80000118 : -80000118: 0000 unimp -8000011a: 0000 unimp -8000011c: 0f40006f j 80000210 -80000120: 000022b7 lui t0,0x2 -80000124: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> -80000128: 3002b073 csrc mstatus,t0 -8000012c: 00001337 lui t1,0x1 -80000130: 80030313 addi t1,t1,-2048 # 800 <_start-0x7ffff800> -80000134: 30032073 csrs mstatus,t1 -80000138: 300023f3 csrr t2,mstatus -8000013c: 0053f3b3 and t2,t2,t0 -80000140: 0e731663 bne t1,t2,8000022c - -80000144 : -80000144: 34415073 csrwi mip,2 -80000148: 30415073 csrwi mie,2 -8000014c: 00000297 auipc t0,0x0 -80000150: 1b528293 addi t0,t0,437 # 80000301 -80000154: 30529473 csrrw s0,mtvec,t0 -80000158: 305022f3 csrr t0,mtvec -8000015c: 0012f293 andi t0,t0,1 -80000160: 00028663 beqz t0,8000016c -80000164: 30046073 csrsi mstatus,8 -80000168: 0000006f j 80000168 - -8000016c : -8000016c: 30541073 csrw mtvec,s0 -80000170: 30315073 csrwi mideleg,2 -80000174: 00000297 auipc t0,0x0 -80000178: 02828293 addi t0,t0,40 # 8000019c -8000017c: 34129073 csrw mepc,t0 -80000180: 000022b7 lui t0,0x2 -80000184: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> -80000188: 3002b073 csrc mstatus,t0 -8000018c: 00001337 lui t1,0x1 -80000190: 80030313 addi t1,t1,-2048 # 800 <_start-0x7ffff800> -80000194: 30032073 csrs mstatus,t1 -80000198: 30200073 mret -8000019c: 10500073 wfi - -800001a0 : -800001a0: 0000 unimp -800001a2: 0000 unimp -800001a4: 06c0006f j 80000210 - -800001a8 : -800001a8: 10500073 wfi -800001ac: 0640006f j 80000210 -800001b0: 12000073 sfence.vma -800001b4: 180022f3 csrr t0,satp - -800001b8 : -800001b8: 0000 unimp -800001ba: 0000 unimp -800001bc: 0540006f j 80000210 - -800001c0 : -800001c0: 12000073 sfence.vma -800001c4: 04c0006f j 80000210 - -800001c8 : -800001c8: 180022f3 csrr t0,satp -800001cc: 0440006f j 80000210 -800001d0: 00000297 auipc t0,0x0 -800001d4: 02028293 addi t0,t0,32 # 800001f0 -800001d8: 14129073 csrw sepc,t0 -800001dc: 10000293 li t0,256 -800001e0: 1002a073 csrs sstatus,t0 -800001e4: 02000293 li t0,32 -800001e8: 1002b073 csrc sstatus,t0 -800001ec: 10200073 sret - -800001f0 : -800001f0: 0000 unimp -800001f2: 0000 unimp -800001f4: 01c0006f j 80000210 -800001f8: 00000297 auipc t0,0x0 -800001fc: 01028293 addi t0,t0,16 # 80000208 -80000200: 14129073 csrw sepc,t0 - -80000204 : -80000204: 10200073 sret -80000208: 0080006f j 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: 00000013 nop -80000244: 00000013 nop -80000248: 00000013 nop -8000024c: 00000013 nop -80000250: 00000013 nop -80000254: 00000013 nop -80000258: 00000013 nop -8000025c: 00000013 nop -80000260: 00000013 nop -80000264: 00000013 nop -80000268: 00000013 nop -8000026c: 00000013 nop -80000270: 00000013 nop -80000274: 00000013 nop -80000278: 00000013 nop -8000027c: 00000013 nop -80000280: 00000013 nop -80000284: 00000013 nop -80000288: 00000013 nop -8000028c: 00000013 nop -80000290: 00000013 nop -80000294: 00000013 nop -80000298: 00000013 nop -8000029c: 00000013 nop -800002a0: 00000013 nop -800002a4: 00000013 nop -800002a8: 00000013 nop -800002ac: 00000013 nop -800002b0: 00000013 nop -800002b4: 00000013 nop -800002b8: 00000013 nop -800002bc: 00000013 nop -800002c0: 00000013 nop -800002c4: 00000013 nop -800002c8: 00000013 nop -800002cc: 00000013 nop -800002d0: 00000013 nop -800002d4: 00000013 nop -800002d8: 00000013 nop -800002dc: 00000013 nop -800002e0: 00000013 nop -800002e4: 00000013 nop -800002e8: 00000013 nop -800002ec: 00000013 nop -800002f0: 00000013 nop -800002f4: 00000013 nop -800002f8: 00000013 nop -800002fc: 00000013 nop - -80000300 : -80000300: 0400006f j 80000340 -80000304: e69ff06f j 8000016c -80000308: f09ff06f j 80000210 -8000030c: f05ff06f j 80000210 -80000310: f01ff06f j 80000210 -80000314: efdff06f j 80000210 -80000318: ef9ff06f j 80000210 -8000031c: ef5ff06f j 80000210 -80000320: ef1ff06f j 80000210 -80000324: eedff06f j 80000210 -80000328: ee9ff06f j 80000210 -8000032c: ee5ff06f j 80000210 -80000330: ee1ff06f j 80000210 -80000334: eddff06f j 80000210 -80000338: ed9ff06f j 80000210 -8000033c: ed5ff06f j 80000210 - -80000340 : -80000340: 00200313 li t1,2 -80000344: 342022f3 csrr t0,mcause -80000348: ec6294e3 bne t0,t1,80000210 -8000034c: 341022f3 csrr t0,mepc -80000350: 343023f3 csrr t2,mtval -80000354: 00038e63 beqz t2,80000370 -80000358: 0002d303 lhu t1,0(t0) -8000035c: 0063c3b3 xor t2,t2,t1 -80000360: 0022d303 lhu t1,2(t0) -80000364: 01031313 slli t1,t1,0x10 -80000368: 0063c3b3 xor t2,t2,t1 -8000036c: ea0392e3 bnez t2,80000210 -80000370: 00000317 auipc t1,0x0 -80000374: da830313 addi t1,t1,-600 # 80000118 -80000378: 04628e63 beq t0,t1,800003d4 -8000037c: 00000317 auipc t1,0x0 -80000380: e2430313 addi t1,t1,-476 # 800001a0 -80000384: 04628e63 beq t0,t1,800003e0 -80000388: 00000317 auipc t1,0x0 -8000038c: e2030313 addi t1,t1,-480 # 800001a8 -80000390: 04628263 beq t0,t1,800003d4 -80000394: 00000317 auipc t1,0x0 -80000398: e2430313 addi t1,t1,-476 # 800001b8 -8000039c: 04628863 beq t0,t1,800003ec -800003a0: 00000317 auipc t1,0x0 -800003a4: e2030313 addi t1,t1,-480 # 800001c0 -800003a8: 02628663 beq t0,t1,800003d4 -800003ac: 00000317 auipc t1,0x0 -800003b0: e1c30313 addi t1,t1,-484 # 800001c8 -800003b4: 02628063 beq t0,t1,800003d4 -800003b8: 00000317 auipc t1,0x0 -800003bc: e3830313 addi t1,t1,-456 # 800001f0 -800003c0: 02628c63 beq t0,t1,800003f8 -800003c4: 00000317 auipc t1,0x0 -800003c8: e4030313 addi t1,t1,-448 # 80000204 -800003cc: 02628c63 beq t0,t1,80000404 -800003d0: e41ff06f j 80000210 -800003d4: 00828293 addi t0,t0,8 -800003d8: 34129073 csrw mepc,t0 -800003dc: 30200073 mret -800003e0: 00200337 lui t1,0x200 -800003e4: 30032073 csrs mstatus,t1 -800003e8: fedff06f j 800003d4 -800003ec: 00100337 lui t1,0x100 -800003f0: 30032073 csrs mstatus,t1 -800003f4: fe1ff06f j 800003d4 -800003f8: 00400337 lui t1,0x400 -800003fc: 30032073 csrs mstatus,t1 -80000400: fd5ff06f j 800003d4 -80000404: fd1ff06f j 800003d4 -80000408: c0001073 unimp -8000040c: 0000 unimp -8000040e: 0000 unimp -80000410: 0000 unimp -80000412: 0000 unimp -80000414: 0000 unimp -80000416: 0000 unimp -80000418: 0000 unimp -8000041a: 0000 unimp -8000041c: 0000 unimp -8000041e: 0000 unimp -80000420: 0000 unimp -80000422: 0000 unimp -80000424: 0000 unimp -80000426: 0000 unimp -80000428: 0000 unimp -8000042a: 0000 unimp -8000042c: 0000 unimp -8000042e: 0000 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 -80000444: 0000 unimp -80000446: 0000 unimp -80000448: 0000 unimp -8000044a: 0000 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 -80000484: 0000 unimp -80000486: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32mi-p-sbreak.dump b/benchmarks/riscv_tests/rv32mi-p-sbreak.dump deleted file mode 100644 index 0ceef528..00000000 --- a/benchmarks/riscv_tests/rv32mi-p-sbreak.dump +++ /dev/null @@ -1,123 +0,0 @@ - -rv32mi-p-sbreak: 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: 00000f17 auipc t5,0x0 -80000024: 134f0f13 addi t5,t5,308 # 80000154 -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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00002537 lui a0,0x2 -800000f8: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> -800000fc: 30052073 csrs mstatus,a0 -80000100: 00000297 auipc t0,0x0 -80000104: 01428293 addi t0,t0,20 # 80000114 -80000108: 34129073 csrw mepc,t0 -8000010c: f1402573 csrr a0,mhartid -80000110: 30200073 mret -80000114: 00200193 li gp,2 - -80000118 : -80000118: 00100073 ebreak -8000011c: 0080006f j 80000124 -80000120: 02301063 bne zero,gp,80000140 - -80000124 : -80000124: 0ff0000f fence -80000128: 00018063 beqz gp,80000128 -8000012c: 00119193 slli gp,gp,0x1 -80000130: 0011e193 ori gp,gp,1 -80000134: 05d00893 li a7,93 -80000138: 00018513 mv a0,gp -8000013c: 00000073 ecall - -80000140 : -80000140: 0ff0000f fence -80000144: 00100193 li gp,1 -80000148: 05d00893 li a7,93 -8000014c: 00000513 li a0,0 -80000150: 00000073 ecall - -80000154 : -80000154: 00300313 li t1,3 -80000158: 342022f3 csrr t0,mcause -8000015c: fc6294e3 bne t0,t1,80000124 -80000160: 00000317 auipc t1,0x0 -80000164: fb830313 addi t1,t1,-72 # 80000118 -80000168: 341022f3 csrr t0,mepc -8000016c: fa629ce3 bne t0,t1,80000124 -80000170: fd1ff06f j 80000140 -80000174: c0001073 unimp -80000178: 0000 unimp -8000017a: 0000 unimp -8000017c: 0000 unimp -8000017e: 0000 unimp -80000180: 0000 unimp -80000182: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32mi-p-scall.dump b/benchmarks/riscv_tests/rv32mi-p-scall.dump deleted file mode 100644 index a76dc80a..00000000 --- a/benchmarks/riscv_tests/rv32mi-p-scall.dump +++ /dev/null @@ -1,140 +0,0 @@ - -rv32mi-p-scall: 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: 00000f17 auipc t5,0x0 -80000024: 174f0f13 addi t5,t5,372 # 80000194 -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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00002537 lui a0,0x2 -800000f8: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> -800000fc: 30052073 csrs mstatus,a0 -80000100: 00000297 auipc t0,0x0 -80000104: 01428293 addi t0,t0,20 # 80000114 -80000108: 34129073 csrw mepc,t0 -8000010c: f1402573 csrr a0,mhartid -80000110: 30200073 mret -80000114: 00200193 li gp,2 -80000118: 00800313 li t1,8 -8000011c: 000022b7 lui t0,0x2 -80000120: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> -80000124: 3002b073 csrc mstatus,t0 -80000128: 300023f3 csrr t2,mstatus -8000012c: 0072f2b3 and t0,t0,t2 -80000130: 00028463 beqz t0,80000138 -80000134: 00b00313 li t1,11 -80000138: 000022b7 lui t0,0x2 -8000013c: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> -80000140: 3002b073 csrc mstatus,t0 -80000144: 00000297 auipc t0,0x0 -80000148: 01028293 addi t0,t0,16 # 80000154 -8000014c: 34129073 csrw mepc,t0 -80000150: 30200073 mret -80000154: 00100193 li gp,1 - -80000158 : -80000158: 00000073 ecall -8000015c: 0080006f j 80000164 -80000160: 02301063 bne zero,gp,80000180 - -80000164 : -80000164: 0ff0000f fence -80000168: 00018063 beqz gp,80000168 -8000016c: 00119193 slli gp,gp,0x1 -80000170: 0011e193 ori gp,gp,1 -80000174: 05d00893 li a7,93 -80000178: 00018513 mv a0,gp -8000017c: 00000073 ecall - -80000180 : -80000180: 0ff0000f fence -80000184: 00100193 li gp,1 -80000188: 05d00893 li a7,93 -8000018c: 00000513 li a0,0 -80000190: 00000073 ecall - -80000194 : -80000194: 342022f3 csrr t0,mcause -80000198: fc6296e3 bne t0,t1,80000164 -8000019c: 00000397 auipc t2,0x0 -800001a0: fbc38393 addi t2,t2,-68 # 80000158 -800001a4: 341022f3 csrr t0,mepc -800001a8: fa729ee3 bne t0,t2,80000164 -800001ac: fd5ff06f j 80000180 -800001b0: c0001073 unimp -800001b4: 0000 unimp -800001b6: 0000 unimp -800001b8: 0000 unimp -800001ba: 0000 unimp -800001bc: 0000 unimp -800001be: 0000 unimp -800001c0: 0000 unimp -800001c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-add.dump b/benchmarks/riscv_tests/rv32ui-p-add.dump deleted file mode 100644 index d1926a50..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-add.dump +++ /dev/null @@ -1,504 +0,0 @@ - -rv32ui-p-add: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00000093 li ra,0 -8000010c: 00000113 li sp,0 -80000110: 00208733 add a4,ra,sp -80000114: 00000e93 li t4,0 -80000118: 00200193 li gp,2 -8000011c: 4dd71663 bne a4,t4,800005e8 - -80000120 : -80000120: 00100093 li ra,1 -80000124: 00100113 li sp,1 -80000128: 00208733 add a4,ra,sp -8000012c: 00200e93 li t4,2 -80000130: 00300193 li gp,3 -80000134: 4bd71a63 bne a4,t4,800005e8 - -80000138 : -80000138: 00300093 li ra,3 -8000013c: 00700113 li sp,7 -80000140: 00208733 add a4,ra,sp -80000144: 00a00e93 li t4,10 -80000148: 00400193 li gp,4 -8000014c: 49d71e63 bne a4,t4,800005e8 - -80000150 : -80000150: 00000093 li ra,0 -80000154: ffff8137 lui sp,0xffff8 -80000158: 00208733 add a4,ra,sp -8000015c: ffff8eb7 lui t4,0xffff8 -80000160: 00500193 li gp,5 -80000164: 49d71263 bne a4,t4,800005e8 - -80000168 : -80000168: 800000b7 lui ra,0x80000 -8000016c: 00000113 li sp,0 -80000170: 00208733 add a4,ra,sp -80000174: 80000eb7 lui t4,0x80000 -80000178: 00600193 li gp,6 -8000017c: 47d71663 bne a4,t4,800005e8 - -80000180 : -80000180: 800000b7 lui ra,0x80000 -80000184: ffff8137 lui sp,0xffff8 -80000188: 00208733 add a4,ra,sp -8000018c: 7fff8eb7 lui t4,0x7fff8 -80000190: 00700193 li gp,7 -80000194: 45d71a63 bne a4,t4,800005e8 - -80000198 : -80000198: 00000093 li ra,0 -8000019c: 00008137 lui sp,0x8 -800001a0: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001a4: 00208733 add a4,ra,sp -800001a8: 00008eb7 lui t4,0x8 -800001ac: fffe8e93 addi t4,t4,-1 # 7fff <_start-0x7fff8001> -800001b0: 00800193 li gp,8 -800001b4: 43d71a63 bne a4,t4,800005e8 - -800001b8 : -800001b8: 800000b7 lui ra,0x80000 -800001bc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001c0: 00000113 li sp,0 -800001c4: 00208733 add a4,ra,sp -800001c8: 80000eb7 lui t4,0x80000 -800001cc: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> -800001d0: 00900193 li gp,9 -800001d4: 41d71a63 bne a4,t4,800005e8 - -800001d8 : -800001d8: 800000b7 lui ra,0x80000 -800001dc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001e0: 00008137 lui sp,0x8 -800001e4: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001e8: 00208733 add a4,ra,sp -800001ec: 80008eb7 lui t4,0x80008 -800001f0: ffee8e93 addi t4,t4,-2 # 80007ffe <_end+0x5ffe> -800001f4: 00a00193 li gp,10 -800001f8: 3fd71863 bne a4,t4,800005e8 - -800001fc : -800001fc: 800000b7 lui ra,0x80000 -80000200: 00008137 lui sp,0x8 -80000204: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -80000208: 00208733 add a4,ra,sp -8000020c: 80008eb7 lui t4,0x80008 -80000210: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x5fff> -80000214: 00b00193 li gp,11 -80000218: 3dd71863 bne a4,t4,800005e8 - -8000021c : -8000021c: 800000b7 lui ra,0x80000 -80000220: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -80000224: ffff8137 lui sp,0xffff8 -80000228: 00208733 add a4,ra,sp -8000022c: 7fff8eb7 lui t4,0x7fff8 -80000230: fffe8e93 addi t4,t4,-1 # 7fff7fff <_start-0x8001> -80000234: 00c00193 li gp,12 -80000238: 3bd71863 bne a4,t4,800005e8 - -8000023c : -8000023c: 00000093 li ra,0 -80000240: fff00113 li sp,-1 -80000244: 00208733 add a4,ra,sp -80000248: fff00e93 li t4,-1 -8000024c: 00d00193 li gp,13 -80000250: 39d71c63 bne a4,t4,800005e8 - -80000254 : -80000254: fff00093 li ra,-1 -80000258: 00100113 li sp,1 -8000025c: 00208733 add a4,ra,sp -80000260: 00000e93 li t4,0 -80000264: 00e00193 li gp,14 -80000268: 39d71063 bne a4,t4,800005e8 - -8000026c : -8000026c: fff00093 li ra,-1 -80000270: fff00113 li sp,-1 -80000274: 00208733 add a4,ra,sp -80000278: ffe00e93 li t4,-2 -8000027c: 00f00193 li gp,15 -80000280: 37d71463 bne a4,t4,800005e8 - -80000284 : -80000284: 00100093 li ra,1 -80000288: 80000137 lui sp,0x80000 -8000028c: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffffdfff> -80000290: 00208733 add a4,ra,sp -80000294: 80000eb7 lui t4,0x80000 -80000298: 01000193 li gp,16 -8000029c: 35d71663 bne a4,t4,800005e8 - -800002a0 : -800002a0: 00d00093 li ra,13 -800002a4: 00b00113 li sp,11 -800002a8: 002080b3 add ra,ra,sp -800002ac: 01800e93 li t4,24 -800002b0: 01100193 li gp,17 -800002b4: 33d09a63 bne ra,t4,800005e8 - -800002b8 : -800002b8: 00e00093 li ra,14 -800002bc: 00b00113 li sp,11 -800002c0: 00208133 add sp,ra,sp -800002c4: 01900e93 li t4,25 -800002c8: 01200193 li gp,18 -800002cc: 31d11e63 bne sp,t4,800005e8 - -800002d0 : -800002d0: 00d00093 li ra,13 -800002d4: 001080b3 add ra,ra,ra -800002d8: 01a00e93 li t4,26 -800002dc: 01300193 li gp,19 -800002e0: 31d09463 bne ra,t4,800005e8 - -800002e4 : -800002e4: 00000213 li tp,0 -800002e8: 00d00093 li ra,13 -800002ec: 00b00113 li sp,11 -800002f0: 00208733 add a4,ra,sp -800002f4: 00070313 mv t1,a4 -800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002fc: 00200293 li t0,2 -80000300: fe5214e3 bne tp,t0,800002e8 -80000304: 01800e93 li t4,24 -80000308: 01400193 li gp,20 -8000030c: 2dd31e63 bne t1,t4,800005e8 - -80000310 : -80000310: 00000213 li tp,0 -80000314: 00e00093 li ra,14 -80000318: 00b00113 li sp,11 -8000031c: 00208733 add a4,ra,sp -80000320: 00000013 nop -80000324: 00070313 mv t1,a4 -80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000032c: 00200293 li t0,2 -80000330: fe5212e3 bne tp,t0,80000314 -80000334: 01900e93 li t4,25 -80000338: 01500193 li gp,21 -8000033c: 2bd31663 bne t1,t4,800005e8 - -80000340 : -80000340: 00000213 li tp,0 -80000344: 00f00093 li ra,15 -80000348: 00b00113 li sp,11 -8000034c: 00208733 add a4,ra,sp -80000350: 00000013 nop -80000354: 00000013 nop -80000358: 00070313 mv t1,a4 -8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000360: 00200293 li t0,2 -80000364: fe5210e3 bne tp,t0,80000344 -80000368: 01a00e93 li t4,26 -8000036c: 01600193 li gp,22 -80000370: 27d31c63 bne t1,t4,800005e8 - -80000374 : -80000374: 00000213 li tp,0 -80000378: 00d00093 li ra,13 -8000037c: 00b00113 li sp,11 -80000380: 00208733 add a4,ra,sp -80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000388: 00200293 li t0,2 -8000038c: fe5216e3 bne tp,t0,80000378 -80000390: 01800e93 li t4,24 -80000394: 01700193 li gp,23 -80000398: 25d71863 bne a4,t4,800005e8 - -8000039c : -8000039c: 00000213 li tp,0 -800003a0: 00e00093 li ra,14 -800003a4: 00b00113 li sp,11 -800003a8: 00000013 nop -800003ac: 00208733 add a4,ra,sp -800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003b4: 00200293 li t0,2 -800003b8: fe5214e3 bne tp,t0,800003a0 -800003bc: 01900e93 li t4,25 -800003c0: 01800193 li gp,24 -800003c4: 23d71263 bne a4,t4,800005e8 - -800003c8 : -800003c8: 00000213 li tp,0 -800003cc: 00f00093 li ra,15 -800003d0: 00b00113 li sp,11 -800003d4: 00000013 nop -800003d8: 00000013 nop -800003dc: 00208733 add a4,ra,sp -800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003e4: 00200293 li t0,2 -800003e8: fe5212e3 bne tp,t0,800003cc -800003ec: 01a00e93 li t4,26 -800003f0: 01900193 li gp,25 -800003f4: 1fd71a63 bne a4,t4,800005e8 - -800003f8 : -800003f8: 00000213 li tp,0 -800003fc: 00d00093 li ra,13 -80000400: 00000013 nop -80000404: 00b00113 li sp,11 -80000408: 00208733 add a4,ra,sp -8000040c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000410: 00200293 li t0,2 -80000414: fe5214e3 bne tp,t0,800003fc -80000418: 01800e93 li t4,24 -8000041c: 01a00193 li gp,26 -80000420: 1dd71463 bne a4,t4,800005e8 - -80000424 : -80000424: 00000213 li tp,0 -80000428: 00e00093 li ra,14 -8000042c: 00000013 nop -80000430: 00b00113 li sp,11 -80000434: 00000013 nop -80000438: 00208733 add a4,ra,sp -8000043c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000440: 00200293 li t0,2 -80000444: fe5212e3 bne tp,t0,80000428 -80000448: 01900e93 li t4,25 -8000044c: 01b00193 li gp,27 -80000450: 19d71c63 bne a4,t4,800005e8 - -80000454 : -80000454: 00000213 li tp,0 -80000458: 00f00093 li ra,15 -8000045c: 00000013 nop -80000460: 00000013 nop -80000464: 00b00113 li sp,11 -80000468: 00208733 add a4,ra,sp -8000046c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000470: 00200293 li t0,2 -80000474: fe5212e3 bne tp,t0,80000458 -80000478: 01a00e93 li t4,26 -8000047c: 01c00193 li gp,28 -80000480: 17d71463 bne a4,t4,800005e8 - -80000484 : -80000484: 00000213 li tp,0 -80000488: 00b00113 li sp,11 -8000048c: 00d00093 li ra,13 -80000490: 00208733 add a4,ra,sp -80000494: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000498: 00200293 li t0,2 -8000049c: fe5216e3 bne tp,t0,80000488 -800004a0: 01800e93 li t4,24 -800004a4: 01d00193 li gp,29 -800004a8: 15d71063 bne a4,t4,800005e8 - -800004ac : -800004ac: 00000213 li tp,0 -800004b0: 00b00113 li sp,11 -800004b4: 00e00093 li ra,14 -800004b8: 00000013 nop -800004bc: 00208733 add a4,ra,sp -800004c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004c4: 00200293 li t0,2 -800004c8: fe5214e3 bne tp,t0,800004b0 -800004cc: 01900e93 li t4,25 -800004d0: 01e00193 li gp,30 -800004d4: 11d71a63 bne a4,t4,800005e8 - -800004d8 : -800004d8: 00000213 li tp,0 -800004dc: 00b00113 li sp,11 -800004e0: 00f00093 li ra,15 -800004e4: 00000013 nop -800004e8: 00000013 nop -800004ec: 00208733 add a4,ra,sp -800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004f4: 00200293 li t0,2 -800004f8: fe5212e3 bne tp,t0,800004dc -800004fc: 01a00e93 li t4,26 -80000500: 01f00193 li gp,31 -80000504: 0fd71263 bne a4,t4,800005e8 - -80000508 : -80000508: 00000213 li tp,0 -8000050c: 00b00113 li sp,11 -80000510: 00000013 nop -80000514: 00d00093 li ra,13 -80000518: 00208733 add a4,ra,sp -8000051c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000520: 00200293 li t0,2 -80000524: fe5214e3 bne tp,t0,8000050c -80000528: 01800e93 li t4,24 -8000052c: 02000193 li gp,32 -80000530: 0bd71c63 bne a4,t4,800005e8 - -80000534 : -80000534: 00000213 li tp,0 -80000538: 00b00113 li sp,11 -8000053c: 00000013 nop -80000540: 00e00093 li ra,14 -80000544: 00000013 nop -80000548: 00208733 add a4,ra,sp -8000054c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000550: 00200293 li t0,2 -80000554: fe5212e3 bne tp,t0,80000538 -80000558: 01900e93 li t4,25 -8000055c: 02100193 li gp,33 -80000560: 09d71463 bne a4,t4,800005e8 - -80000564 : -80000564: 00000213 li tp,0 -80000568: 00b00113 li sp,11 -8000056c: 00000013 nop -80000570: 00000013 nop -80000574: 00f00093 li ra,15 -80000578: 00208733 add a4,ra,sp -8000057c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000580: 00200293 li t0,2 -80000584: fe5212e3 bne tp,t0,80000568 -80000588: 01a00e93 li t4,26 -8000058c: 02200193 li gp,34 -80000590: 05d71c63 bne a4,t4,800005e8 - -80000594 : -80000594: 00f00093 li ra,15 -80000598: 00100133 add sp,zero,ra -8000059c: 00f00e93 li t4,15 -800005a0: 02300193 li gp,35 -800005a4: 05d11263 bne sp,t4,800005e8 - -800005a8 : -800005a8: 02000093 li ra,32 -800005ac: 00008133 add sp,ra,zero -800005b0: 02000e93 li t4,32 -800005b4: 02400193 li gp,36 -800005b8: 03d11863 bne sp,t4,800005e8 - -800005bc : -800005bc: 000000b3 add ra,zero,zero -800005c0: 00000e93 li t4,0 -800005c4: 02500193 li gp,37 -800005c8: 03d09063 bne ra,t4,800005e8 - -800005cc : -800005cc: 01000093 li ra,16 -800005d0: 01e00113 li sp,30 -800005d4: 00208033 add zero,ra,sp -800005d8: 00000e93 li t4,0 -800005dc: 02600193 li gp,38 -800005e0: 01d01463 bne zero,t4,800005e8 -800005e4: 02301063 bne zero,gp,80000604 - -800005e8 : -800005e8: 0ff0000f fence -800005ec: 00018063 beqz gp,800005ec -800005f0: 00119193 slli gp,gp,0x1 -800005f4: 0011e193 ori gp,gp,1 -800005f8: 05d00893 li a7,93 -800005fc: 00018513 mv a0,gp -80000600: 00000073 ecall - -80000604 : -80000604: 0ff0000f fence -80000608: 00100193 li gp,1 -8000060c: 05d00893 li a7,93 -80000610: 00000513 li a0,0 -80000614: 00000073 ecall -80000618: c0001073 unimp -8000061c: 0000 unimp -8000061e: 0000 unimp -80000620: 0000 unimp -80000622: 0000 unimp -80000624: 0000 unimp -80000626: 0000 unimp -80000628: 0000 unimp -8000062a: 0000 unimp -8000062c: 0000 unimp -8000062e: 0000 unimp -80000630: 0000 unimp -80000632: 0000 unimp -80000634: 0000 unimp -80000636: 0000 unimp -80000638: 0000 unimp -8000063a: 0000 unimp -8000063c: 0000 unimp -8000063e: 0000 unimp -80000640: 0000 unimp -80000642: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-addi.dump b/benchmarks/riscv_tests/rv32ui-p-addi.dump deleted file mode 100644 index 64f6a99f..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-addi.dump +++ /dev/null @@ -1,308 +0,0 @@ - -rv32ui-p-addi: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00000093 li ra,0 -8000010c: 00008713 mv a4,ra -80000110: 00000e93 li t4,0 -80000114: 00200193 li gp,2 -80000118: 27d71c63 bne a4,t4,80000390 - -8000011c : -8000011c: 00100093 li ra,1 -80000120: 00108713 addi a4,ra,1 -80000124: 00200e93 li t4,2 -80000128: 00300193 li gp,3 -8000012c: 27d71263 bne a4,t4,80000390 - -80000130 : -80000130: 00300093 li ra,3 -80000134: 00708713 addi a4,ra,7 -80000138: 00a00e93 li t4,10 -8000013c: 00400193 li gp,4 -80000140: 25d71863 bne a4,t4,80000390 - -80000144 : -80000144: 00000093 li ra,0 -80000148: 80008713 addi a4,ra,-2048 -8000014c: 80000e93 li t4,-2048 -80000150: 00500193 li gp,5 -80000154: 23d71e63 bne a4,t4,80000390 - -80000158 : -80000158: 800000b7 lui ra,0x80000 -8000015c: 00008713 mv a4,ra -80000160: 80000eb7 lui t4,0x80000 -80000164: 00600193 li gp,6 -80000168: 23d71463 bne a4,t4,80000390 - -8000016c : -8000016c: 800000b7 lui ra,0x80000 -80000170: 80008713 addi a4,ra,-2048 # 7ffff800 <_end+0xffffd800> -80000174: 80000eb7 lui t4,0x80000 -80000178: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd800> -8000017c: 00700193 li gp,7 -80000180: 21d71863 bne a4,t4,80000390 - -80000184 : -80000184: 00000093 li ra,0 -80000188: 7ff08713 addi a4,ra,2047 -8000018c: 7ff00e93 li t4,2047 -80000190: 00800193 li gp,8 -80000194: 1fd71e63 bne a4,t4,80000390 - -80000198 : -80000198: 800000b7 lui ra,0x80000 -8000019c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001a0: 00008713 mv a4,ra -800001a4: 80000eb7 lui t4,0x80000 -800001a8: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> -800001ac: 00900193 li gp,9 -800001b0: 1fd71063 bne a4,t4,80000390 - -800001b4 : -800001b4: 800000b7 lui ra,0x80000 -800001b8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001bc: 7ff08713 addi a4,ra,2047 -800001c0: 80000eb7 lui t4,0x80000 -800001c4: 7fee8e93 addi t4,t4,2046 # 800007fe <_end+0xffffe7fe> -800001c8: 00a00193 li gp,10 -800001cc: 1dd71263 bne a4,t4,80000390 - -800001d0 : -800001d0: 800000b7 lui ra,0x80000 -800001d4: 7ff08713 addi a4,ra,2047 # 800007ff <_end+0xffffe7ff> -800001d8: 80000eb7 lui t4,0x80000 -800001dc: 7ffe8e93 addi t4,t4,2047 # 800007ff <_end+0xffffe7ff> -800001e0: 00b00193 li gp,11 -800001e4: 1bd71663 bne a4,t4,80000390 - -800001e8 : -800001e8: 800000b7 lui ra,0x80000 -800001ec: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001f0: 80008713 addi a4,ra,-2048 -800001f4: 7ffffeb7 lui t4,0x7ffff -800001f8: 7ffe8e93 addi t4,t4,2047 # 7ffff7ff <_start-0x801> -800001fc: 00c00193 li gp,12 -80000200: 19d71863 bne a4,t4,80000390 - -80000204 : -80000204: 00000093 li ra,0 -80000208: fff08713 addi a4,ra,-1 -8000020c: fff00e93 li t4,-1 -80000210: 00d00193 li gp,13 -80000214: 17d71e63 bne a4,t4,80000390 - -80000218 : -80000218: fff00093 li ra,-1 -8000021c: 00108713 addi a4,ra,1 -80000220: 00000e93 li t4,0 -80000224: 00e00193 li gp,14 -80000228: 17d71463 bne a4,t4,80000390 - -8000022c : -8000022c: fff00093 li ra,-1 -80000230: fff08713 addi a4,ra,-1 -80000234: ffe00e93 li t4,-2 -80000238: 00f00193 li gp,15 -8000023c: 15d71a63 bne a4,t4,80000390 - -80000240 : -80000240: 800000b7 lui ra,0x80000 -80000244: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -80000248: 00108713 addi a4,ra,1 -8000024c: 80000eb7 lui t4,0x80000 -80000250: 01000193 li gp,16 -80000254: 13d71e63 bne a4,t4,80000390 - -80000258 : -80000258: 00d00093 li ra,13 -8000025c: 00b08093 addi ra,ra,11 -80000260: 01800e93 li t4,24 -80000264: 01100193 li gp,17 -80000268: 13d09463 bne ra,t4,80000390 - -8000026c : -8000026c: 00000213 li tp,0 -80000270: 00d00093 li ra,13 -80000274: 00b08713 addi a4,ra,11 -80000278: 00070313 mv t1,a4 -8000027c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000280: 00200293 li t0,2 -80000284: fe5216e3 bne tp,t0,80000270 -80000288: 01800e93 li t4,24 -8000028c: 01200193 li gp,18 -80000290: 11d31063 bne t1,t4,80000390 - -80000294 : -80000294: 00000213 li tp,0 -80000298: 00d00093 li ra,13 -8000029c: 00a08713 addi a4,ra,10 -800002a0: 00000013 nop -800002a4: 00070313 mv t1,a4 -800002a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002ac: 00200293 li t0,2 -800002b0: fe5214e3 bne tp,t0,80000298 -800002b4: 01700e93 li t4,23 -800002b8: 01300193 li gp,19 -800002bc: 0dd31a63 bne t1,t4,80000390 - -800002c0 : -800002c0: 00000213 li tp,0 -800002c4: 00d00093 li ra,13 -800002c8: 00908713 addi a4,ra,9 -800002cc: 00000013 nop -800002d0: 00000013 nop -800002d4: 00070313 mv t1,a4 -800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002dc: 00200293 li t0,2 -800002e0: fe5212e3 bne tp,t0,800002c4 -800002e4: 01600e93 li t4,22 -800002e8: 01400193 li gp,20 -800002ec: 0bd31263 bne t1,t4,80000390 - -800002f0 : -800002f0: 00000213 li tp,0 -800002f4: 00d00093 li ra,13 -800002f8: 00b08713 addi a4,ra,11 -800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000300: 00200293 li t0,2 -80000304: fe5218e3 bne tp,t0,800002f4 -80000308: 01800e93 li t4,24 -8000030c: 01500193 li gp,21 -80000310: 09d71063 bne a4,t4,80000390 - -80000314 : -80000314: 00000213 li tp,0 -80000318: 00d00093 li ra,13 -8000031c: 00000013 nop -80000320: 00a08713 addi a4,ra,10 -80000324: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000328: 00200293 li t0,2 -8000032c: fe5216e3 bne tp,t0,80000318 -80000330: 01700e93 li t4,23 -80000334: 01600193 li gp,22 -80000338: 05d71c63 bne a4,t4,80000390 - -8000033c : -8000033c: 00000213 li tp,0 -80000340: 00d00093 li ra,13 -80000344: 00000013 nop -80000348: 00000013 nop -8000034c: 00908713 addi a4,ra,9 -80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000354: 00200293 li t0,2 -80000358: fe5214e3 bne tp,t0,80000340 -8000035c: 01600e93 li t4,22 -80000360: 01700193 li gp,23 -80000364: 03d71663 bne a4,t4,80000390 - -80000368 : -80000368: 02000093 li ra,32 -8000036c: 02000e93 li t4,32 -80000370: 01800193 li gp,24 -80000374: 01d09e63 bne ra,t4,80000390 - -80000378 : -80000378: 02100093 li ra,33 -8000037c: 03208013 addi zero,ra,50 -80000380: 00000e93 li t4,0 -80000384: 01900193 li gp,25 -80000388: 01d01463 bne zero,t4,80000390 -8000038c: 02301063 bne zero,gp,800003ac - -80000390 : -80000390: 0ff0000f fence -80000394: 00018063 beqz gp,80000394 -80000398: 00119193 slli gp,gp,0x1 -8000039c: 0011e193 ori gp,gp,1 -800003a0: 05d00893 li a7,93 -800003a4: 00018513 mv a0,gp -800003a8: 00000073 ecall - -800003ac : -800003ac: 0ff0000f fence -800003b0: 00100193 li gp,1 -800003b4: 05d00893 li a7,93 -800003b8: 00000513 li a0,0 -800003bc: 00000073 ecall -800003c0: c0001073 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-and.dump b/benchmarks/riscv_tests/rv32ui-p-and.dump deleted file mode 100644 index 0a63089f..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-and.dump +++ /dev/null @@ -1,460 +0,0 @@ - -rv32ui-p-and: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: ff0100b7 lui ra,0xff010 -8000010c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000110: 0f0f1137 lui sp,0xf0f1 -80000114: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000118: 0020f733 and a4,ra,sp -8000011c: 0f001eb7 lui t4,0xf001 -80000120: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> -80000124: 00200193 li gp,2 -80000128: 49d71c63 bne a4,t4,800005c0 - -8000012c : -8000012c: 0ff010b7 lui ra,0xff01 -80000130: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000134: f0f0f137 lui sp,0xf0f0f -80000138: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -8000013c: 0020f733 and a4,ra,sp -80000140: 00f00eb7 lui t4,0xf00 -80000144: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> -80000148: 00300193 li gp,3 -8000014c: 47d71a63 bne a4,t4,800005c0 - -80000150 : -80000150: 00ff00b7 lui ra,0xff0 -80000154: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000158: 0f0f1137 lui sp,0xf0f1 -8000015c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000160: 0020f733 and a4,ra,sp -80000164: 000f0eb7 lui t4,0xf0 -80000168: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> -8000016c: 00400193 li gp,4 -80000170: 45d71863 bne a4,t4,800005c0 - -80000174 : -80000174: f00ff0b7 lui ra,0xf00ff -80000178: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -8000017c: f0f0f137 lui sp,0xf0f0f -80000180: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000184: 0020f733 and a4,ra,sp -80000188: f000feb7 lui t4,0xf000f -8000018c: 00500193 li gp,5 -80000190: 43d71863 bne a4,t4,800005c0 - -80000194 : -80000194: ff0100b7 lui ra,0xff010 -80000198: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -8000019c: 0f0f1137 lui sp,0xf0f1 -800001a0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800001a4: 0020f0b3 and ra,ra,sp -800001a8: 0f001eb7 lui t4,0xf001 -800001ac: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> -800001b0: 00600193 li gp,6 -800001b4: 41d09663 bne ra,t4,800005c0 - -800001b8 : -800001b8: 0ff010b7 lui ra,0xff01 -800001bc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -800001c0: f0f0f137 lui sp,0xf0f0f -800001c4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800001c8: 0020f133 and sp,ra,sp -800001cc: 00f00eb7 lui t4,0xf00 -800001d0: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> -800001d4: 00700193 li gp,7 -800001d8: 3fd11463 bne sp,t4,800005c0 - -800001dc : -800001dc: ff0100b7 lui ra,0xff010 -800001e0: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800001e4: 0010f0b3 and ra,ra,ra -800001e8: ff010eb7 lui t4,0xff010 -800001ec: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -800001f0: 00800193 li gp,8 -800001f4: 3dd09663 bne ra,t4,800005c0 - -800001f8 : -800001f8: 00000213 li tp,0 -800001fc: ff0100b7 lui ra,0xff010 -80000200: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000204: 0f0f1137 lui sp,0xf0f1 -80000208: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000020c: 0020f733 and a4,ra,sp -80000210: 00070313 mv t1,a4 -80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000218: 00200293 li t0,2 -8000021c: fe5210e3 bne tp,t0,800001fc -80000220: 0f001eb7 lui t4,0xf001 -80000224: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> -80000228: 00900193 li gp,9 -8000022c: 39d31a63 bne t1,t4,800005c0 - -80000230 : -80000230: 00000213 li tp,0 -80000234: 0ff010b7 lui ra,0xff01 -80000238: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000023c: f0f0f137 lui sp,0xf0f0f -80000240: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000244: 0020f733 and a4,ra,sp -80000248: 00000013 nop -8000024c: 00070313 mv t1,a4 -80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000254: 00200293 li t0,2 -80000258: fc521ee3 bne tp,t0,80000234 -8000025c: 00f00eb7 lui t4,0xf00 -80000260: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> -80000264: 00a00193 li gp,10 -80000268: 35d31c63 bne t1,t4,800005c0 - -8000026c : -8000026c: 00000213 li tp,0 -80000270: 00ff00b7 lui ra,0xff0 -80000274: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000278: 0f0f1137 lui sp,0xf0f1 -8000027c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000280: 0020f733 and a4,ra,sp -80000284: 00000013 nop -80000288: 00000013 nop -8000028c: 00070313 mv t1,a4 -80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000294: 00200293 li t0,2 -80000298: fc521ce3 bne tp,t0,80000270 -8000029c: 000f0eb7 lui t4,0xf0 -800002a0: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> -800002a4: 00b00193 li gp,11 -800002a8: 31d31c63 bne t1,t4,800005c0 - -800002ac : -800002ac: 00000213 li tp,0 -800002b0: ff0100b7 lui ra,0xff010 -800002b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800002b8: 0f0f1137 lui sp,0xf0f1 -800002bc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800002c0: 0020f733 and a4,ra,sp -800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002c8: 00200293 li t0,2 -800002cc: fe5212e3 bne tp,t0,800002b0 -800002d0: 0f001eb7 lui t4,0xf001 -800002d4: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> -800002d8: 00c00193 li gp,12 -800002dc: 2fd71263 bne a4,t4,800005c0 - -800002e0 : -800002e0: 00000213 li tp,0 -800002e4: 0ff010b7 lui ra,0xff01 -800002e8: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -800002ec: f0f0f137 lui sp,0xf0f0f -800002f0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800002f4: 00000013 nop -800002f8: 0020f733 and a4,ra,sp -800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000300: 00200293 li t0,2 -80000304: fe5210e3 bne tp,t0,800002e4 -80000308: 00f00eb7 lui t4,0xf00 -8000030c: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> -80000310: 00d00193 li gp,13 -80000314: 2bd71663 bne a4,t4,800005c0 - -80000318 : -80000318: 00000213 li tp,0 -8000031c: 00ff00b7 lui ra,0xff0 -80000320: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000324: 0f0f1137 lui sp,0xf0f1 -80000328: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000032c: 00000013 nop -80000330: 00000013 nop -80000334: 0020f733 and a4,ra,sp -80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000033c: 00200293 li t0,2 -80000340: fc521ee3 bne tp,t0,8000031c -80000344: 000f0eb7 lui t4,0xf0 -80000348: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> -8000034c: 00e00193 li gp,14 -80000350: 27d71863 bne a4,t4,800005c0 - -80000354 : -80000354: 00000213 li tp,0 -80000358: ff0100b7 lui ra,0xff010 -8000035c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000360: 00000013 nop -80000364: 0f0f1137 lui sp,0xf0f1 -80000368: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000036c: 0020f733 and a4,ra,sp -80000370: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000374: 00200293 li t0,2 -80000378: fe5210e3 bne tp,t0,80000358 -8000037c: 0f001eb7 lui t4,0xf001 -80000380: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> -80000384: 00f00193 li gp,15 -80000388: 23d71c63 bne a4,t4,800005c0 - -8000038c : -8000038c: 00000213 li tp,0 -80000390: 0ff010b7 lui ra,0xff01 -80000394: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000398: 00000013 nop -8000039c: f0f0f137 lui sp,0xf0f0f -800003a0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800003a4: 00000013 nop -800003a8: 0020f733 and a4,ra,sp -800003ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003b0: 00200293 li t0,2 -800003b4: fc521ee3 bne tp,t0,80000390 -800003b8: 00f00eb7 lui t4,0xf00 -800003bc: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> -800003c0: 01000193 li gp,16 -800003c4: 1fd71e63 bne a4,t4,800005c0 - -800003c8 : -800003c8: 00000213 li tp,0 -800003cc: 00ff00b7 lui ra,0xff0 -800003d0: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800003d4: 00000013 nop -800003d8: 00000013 nop -800003dc: 0f0f1137 lui sp,0xf0f1 -800003e0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800003e4: 0020f733 and a4,ra,sp -800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003ec: 00200293 li t0,2 -800003f0: fc521ee3 bne tp,t0,800003cc -800003f4: 000f0eb7 lui t4,0xf0 -800003f8: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> -800003fc: 01100193 li gp,17 -80000400: 1dd71063 bne a4,t4,800005c0 - -80000404 : -80000404: 00000213 li tp,0 -80000408: 0f0f1137 lui sp,0xf0f1 -8000040c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000410: ff0100b7 lui ra,0xff010 -80000414: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000418: 0020f733 and a4,ra,sp -8000041c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000420: 00200293 li t0,2 -80000424: fe5212e3 bne tp,t0,80000408 -80000428: 0f001eb7 lui t4,0xf001 -8000042c: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> -80000430: 01200193 li gp,18 -80000434: 19d71663 bne a4,t4,800005c0 - -80000438 : -80000438: 00000213 li tp,0 -8000043c: f0f0f137 lui sp,0xf0f0f -80000440: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000444: 0ff010b7 lui ra,0xff01 -80000448: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000044c: 00000013 nop -80000450: 0020f733 and a4,ra,sp -80000454: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000458: 00200293 li t0,2 -8000045c: fe5210e3 bne tp,t0,8000043c -80000460: 00f00eb7 lui t4,0xf00 -80000464: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> -80000468: 01300193 li gp,19 -8000046c: 15d71a63 bne a4,t4,800005c0 - -80000470 : -80000470: 00000213 li tp,0 -80000474: 0f0f1137 lui sp,0xf0f1 -80000478: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000047c: 00ff00b7 lui ra,0xff0 -80000480: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000484: 00000013 nop -80000488: 00000013 nop -8000048c: 0020f733 and a4,ra,sp -80000490: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000494: 00200293 li t0,2 -80000498: fc521ee3 bne tp,t0,80000474 -8000049c: 000f0eb7 lui t4,0xf0 -800004a0: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> -800004a4: 01400193 li gp,20 -800004a8: 11d71c63 bne a4,t4,800005c0 - -800004ac : -800004ac: 00000213 li tp,0 -800004b0: 0f0f1137 lui sp,0xf0f1 -800004b4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800004b8: 00000013 nop -800004bc: ff0100b7 lui ra,0xff010 -800004c0: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800004c4: 0020f733 and a4,ra,sp -800004c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004cc: 00200293 li t0,2 -800004d0: fe5210e3 bne tp,t0,800004b0 -800004d4: 0f001eb7 lui t4,0xf001 -800004d8: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> -800004dc: 01500193 li gp,21 -800004e0: 0fd71063 bne a4,t4,800005c0 - -800004e4 : -800004e4: 00000213 li tp,0 -800004e8: f0f0f137 lui sp,0xf0f0f -800004ec: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800004f0: 00000013 nop -800004f4: 0ff010b7 lui ra,0xff01 -800004f8: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -800004fc: 00000013 nop -80000500: 0020f733 and a4,ra,sp -80000504: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000508: 00200293 li t0,2 -8000050c: fc521ee3 bne tp,t0,800004e8 -80000510: 00f00eb7 lui t4,0xf00 -80000514: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> -80000518: 01600193 li gp,22 -8000051c: 0bd71263 bne a4,t4,800005c0 - -80000520 : -80000520: 00000213 li tp,0 -80000524: 0f0f1137 lui sp,0xf0f1 -80000528: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000052c: 00000013 nop -80000530: 00000013 nop -80000534: 00ff00b7 lui ra,0xff0 -80000538: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -8000053c: 0020f733 and a4,ra,sp -80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000544: 00200293 li t0,2 -80000548: fc521ee3 bne tp,t0,80000524 -8000054c: 000f0eb7 lui t4,0xf0 -80000550: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> -80000554: 01700193 li gp,23 -80000558: 07d71463 bne a4,t4,800005c0 - -8000055c : -8000055c: ff0100b7 lui ra,0xff010 -80000560: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000564: 00107133 and sp,zero,ra -80000568: 00000e93 li t4,0 -8000056c: 01800193 li gp,24 -80000570: 05d11863 bne sp,t4,800005c0 - -80000574 : -80000574: 00ff00b7 lui ra,0xff0 -80000578: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -8000057c: 0000f133 and sp,ra,zero -80000580: 00000e93 li t4,0 -80000584: 01900193 li gp,25 -80000588: 03d11c63 bne sp,t4,800005c0 - -8000058c : -8000058c: 000070b3 and ra,zero,zero -80000590: 00000e93 li t4,0 -80000594: 01a00193 li gp,26 -80000598: 03d09463 bne ra,t4,800005c0 - -8000059c : -8000059c: 111110b7 lui ra,0x11111 -800005a0: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> -800005a4: 22222137 lui sp,0x22222 -800005a8: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> -800005ac: 0020f033 and zero,ra,sp -800005b0: 00000e93 li t4,0 -800005b4: 01b00193 li gp,27 -800005b8: 01d01463 bne zero,t4,800005c0 -800005bc: 02301063 bne zero,gp,800005dc - -800005c0 : -800005c0: 0ff0000f fence -800005c4: 00018063 beqz gp,800005c4 -800005c8: 00119193 slli gp,gp,0x1 -800005cc: 0011e193 ori gp,gp,1 -800005d0: 05d00893 li a7,93 -800005d4: 00018513 mv a0,gp -800005d8: 00000073 ecall - -800005dc : -800005dc: 0ff0000f fence -800005e0: 00100193 li gp,1 -800005e4: 05d00893 li a7,93 -800005e8: 00000513 li a0,0 -800005ec: 00000073 ecall -800005f0: c0001073 unimp -800005f4: 0000 unimp -800005f6: 0000 unimp -800005f8: 0000 unimp -800005fa: 0000 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-andi.dump b/benchmarks/riscv_tests/rv32ui-p-andi.dump deleted file mode 100644 index 87e3441f..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-andi.dump +++ /dev/null @@ -1,240 +0,0 @@ - -rv32ui-p-andi: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: ff0100b7 lui ra,0xff010 -8000010c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000110: f0f0f713 andi a4,ra,-241 -80000114: ff010eb7 lui t4,0xff010 -80000118: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -8000011c: 00200193 li gp,2 -80000120: 1bd71463 bne a4,t4,800002c8 - -80000124 : -80000124: 0ff010b7 lui ra,0xff01 -80000128: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000012c: 0f00f713 andi a4,ra,240 -80000130: 0f000e93 li t4,240 -80000134: 00300193 li gp,3 -80000138: 19d71863 bne a4,t4,800002c8 - -8000013c : -8000013c: 00ff00b7 lui ra,0xff0 -80000140: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000144: 70f0f713 andi a4,ra,1807 -80000148: 00f00e93 li t4,15 -8000014c: 00400193 li gp,4 -80000150: 17d71c63 bne a4,t4,800002c8 - -80000154 : -80000154: f00ff0b7 lui ra,0xf00ff -80000158: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -8000015c: 0f00f713 andi a4,ra,240 -80000160: 00000e93 li t4,0 -80000164: 00500193 li gp,5 -80000168: 17d71063 bne a4,t4,800002c8 - -8000016c : -8000016c: ff0100b7 lui ra,0xff010 -80000170: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000174: 0f00f093 andi ra,ra,240 -80000178: 00000e93 li t4,0 -8000017c: 00600193 li gp,6 -80000180: 15d09463 bne ra,t4,800002c8 - -80000184 : -80000184: 00000213 li tp,0 -80000188: 0ff010b7 lui ra,0xff01 -8000018c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000190: 70f0f713 andi a4,ra,1807 -80000194: 00070313 mv t1,a4 -80000198: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000019c: 00200293 li t0,2 -800001a0: fe5214e3 bne tp,t0,80000188 -800001a4: 70000e93 li t4,1792 -800001a8: 00700193 li gp,7 -800001ac: 11d31e63 bne t1,t4,800002c8 - -800001b0 : -800001b0: 00000213 li tp,0 -800001b4: 00ff00b7 lui ra,0xff0 -800001b8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800001bc: 0f00f713 andi a4,ra,240 -800001c0: 00000013 nop -800001c4: 00070313 mv t1,a4 -800001c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001cc: 00200293 li t0,2 -800001d0: fe5212e3 bne tp,t0,800001b4 -800001d4: 0f000e93 li t4,240 -800001d8: 00800193 li gp,8 -800001dc: 0fd31663 bne t1,t4,800002c8 - -800001e0 : -800001e0: 00000213 li tp,0 -800001e4: f00ff0b7 lui ra,0xf00ff -800001e8: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -800001ec: f0f0f713 andi a4,ra,-241 -800001f0: 00000013 nop -800001f4: 00000013 nop -800001f8: 00070313 mv t1,a4 -800001fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000200: 00200293 li t0,2 -80000204: fe5210e3 bne tp,t0,800001e4 -80000208: f00ffeb7 lui t4,0xf00ff -8000020c: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -80000210: 00900193 li gp,9 -80000214: 0bd31a63 bne t1,t4,800002c8 - -80000218 : -80000218: 00000213 li tp,0 -8000021c: 0ff010b7 lui ra,0xff01 -80000220: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000224: 70f0f713 andi a4,ra,1807 -80000228: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000022c: 00200293 li t0,2 -80000230: fe5216e3 bne tp,t0,8000021c -80000234: 70000e93 li t4,1792 -80000238: 00a00193 li gp,10 -8000023c: 09d71663 bne a4,t4,800002c8 - -80000240 : -80000240: 00000213 li tp,0 -80000244: 00ff00b7 lui ra,0xff0 -80000248: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -8000024c: 00000013 nop -80000250: 0f00f713 andi a4,ra,240 -80000254: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000258: 00200293 li t0,2 -8000025c: fe5214e3 bne tp,t0,80000244 -80000260: 0f000e93 li t4,240 -80000264: 00b00193 li gp,11 -80000268: 07d71063 bne a4,t4,800002c8 - -8000026c : -8000026c: 00000213 li tp,0 -80000270: f00ff0b7 lui ra,0xf00ff -80000274: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -80000278: 00000013 nop -8000027c: 00000013 nop -80000280: 70f0f713 andi a4,ra,1807 -80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000288: 00200293 li t0,2 -8000028c: fe5212e3 bne tp,t0,80000270 -80000290: 00f00e93 li t4,15 -80000294: 00c00193 li gp,12 -80000298: 03d71863 bne a4,t4,800002c8 - -8000029c : -8000029c: 0f007093 andi ra,zero,240 -800002a0: 00000e93 li t4,0 -800002a4: 00d00193 li gp,13 -800002a8: 03d09063 bne ra,t4,800002c8 - -800002ac : -800002ac: 00ff00b7 lui ra,0xff0 -800002b0: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800002b4: 70f0f013 andi zero,ra,1807 -800002b8: 00000e93 li t4,0 -800002bc: 00e00193 li gp,14 -800002c0: 01d01463 bne zero,t4,800002c8 -800002c4: 02301063 bne zero,gp,800002e4 - -800002c8 : -800002c8: 0ff0000f fence -800002cc: 00018063 beqz gp,800002cc -800002d0: 00119193 slli gp,gp,0x1 -800002d4: 0011e193 ori gp,gp,1 -800002d8: 05d00893 li a7,93 -800002dc: 00018513 mv a0,gp -800002e0: 00000073 ecall - -800002e4 : -800002e4: 0ff0000f fence -800002e8: 00100193 li gp,1 -800002ec: 05d00893 li a7,93 -800002f0: 00000513 li a0,0 -800002f4: 00000073 ecall -800002f8: c0001073 unimp -800002fc: 0000 unimp -800002fe: 0000 unimp -80000300: 0000 unimp -80000302: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-auipc.dump b/benchmarks/riscv_tests/rv32ui-p-auipc.dump deleted file mode 100644 index 9c86bd9f..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-auipc.dump +++ /dev/null @@ -1,149 +0,0 @@ - -rv32ui-p-auipc: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002517 auipc a0,0x2 -8000010c: 71c50513 addi a0,a0,1820 # 80002824 <_end+0x824> -80000110: 004005ef jal a1,80000114 -80000114: 40b50533 sub a0,a0,a1 -80000118: 00002eb7 lui t4,0x2 -8000011c: 710e8e93 addi t4,t4,1808 # 2710 <_start-0x7fffd8f0> -80000120: 00200193 li gp,2 -80000124: 03d51463 bne a0,t4,8000014c - -80000128 : -80000128: ffffe517 auipc a0,0xffffe -8000012c: 8fc50513 addi a0,a0,-1796 # 7fffda24 <_start-0x25dc> -80000130: 004005ef jal a1,80000134 -80000134: 40b50533 sub a0,a0,a1 -80000138: ffffeeb7 lui t4,0xffffe -8000013c: 8f0e8e93 addi t4,t4,-1808 # ffffd8f0 <_end+0x7fffb8f0> -80000140: 00300193 li gp,3 -80000144: 01d51463 bne a0,t4,8000014c -80000148: 02301063 bne zero,gp,80000168 - -8000014c : -8000014c: 0ff0000f fence -80000150: 00018063 beqz gp,80000150 -80000154: 00119193 slli gp,gp,0x1 -80000158: 0011e193 ori gp,gp,1 -8000015c: 05d00893 li a7,93 -80000160: 00018513 mv a0,gp -80000164: 00000073 ecall - -80000168 : -80000168: 0ff0000f fence -8000016c: 00100193 li gp,1 -80000170: 05d00893 li a7,93 -80000174: 00000513 li a0,0 -80000178: 00000073 ecall -8000017c: c0001073 unimp -80000180: 0000 unimp -80000182: 0000 unimp -80000184: 0000 unimp -80000186: 0000 unimp -80000188: 0000 unimp -8000018a: 0000 unimp -8000018c: 0000 unimp -8000018e: 0000 unimp -80000190: 0000 unimp -80000192: 0000 unimp -80000194: 0000 unimp -80000196: 0000 unimp -80000198: 0000 unimp -8000019a: 0000 unimp -8000019c: 0000 unimp -8000019e: 0000 unimp -800001a0: 0000 unimp -800001a2: 0000 unimp -800001a4: 0000 unimp -800001a6: 0000 unimp -800001a8: 0000 unimp -800001aa: 0000 unimp -800001ac: 0000 unimp -800001ae: 0000 unimp -800001b0: 0000 unimp -800001b2: 0000 unimp -800001b4: 0000 unimp -800001b6: 0000 unimp -800001b8: 0000 unimp -800001ba: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-beq.dump b/benchmarks/riscv_tests/rv32ui-p-beq.dump deleted file mode 100644 index fcf03f41..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-beq.dump +++ /dev/null @@ -1,318 +0,0 @@ - -rv32ui-p-beq: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000093 li ra,0 -80000110: 00000113 li sp,0 -80000114: 00208663 beq ra,sp,80000120 -80000118: 2a301863 bne zero,gp,800003c8 -8000011c: 00301663 bne zero,gp,80000128 -80000120: fe208ee3 beq ra,sp,8000011c -80000124: 2a301263 bne zero,gp,800003c8 - -80000128 : -80000128: 00300193 li gp,3 -8000012c: 00100093 li ra,1 -80000130: 00100113 li sp,1 -80000134: 00208663 beq ra,sp,80000140 -80000138: 28301863 bne zero,gp,800003c8 -8000013c: 00301663 bne zero,gp,80000148 -80000140: fe208ee3 beq ra,sp,8000013c -80000144: 28301263 bne zero,gp,800003c8 - -80000148 : -80000148: 00400193 li gp,4 -8000014c: fff00093 li ra,-1 -80000150: fff00113 li sp,-1 -80000154: 00208663 beq ra,sp,80000160 -80000158: 26301863 bne zero,gp,800003c8 -8000015c: 00301663 bne zero,gp,80000168 -80000160: fe208ee3 beq ra,sp,8000015c -80000164: 26301263 bne zero,gp,800003c8 - -80000168 : -80000168: 00500193 li gp,5 -8000016c: 00000093 li ra,0 -80000170: 00100113 li sp,1 -80000174: 00208463 beq ra,sp,8000017c -80000178: 00301463 bne zero,gp,80000180 -8000017c: 24301663 bne zero,gp,800003c8 -80000180: fe208ee3 beq ra,sp,8000017c - -80000184 : -80000184: 00600193 li gp,6 -80000188: 00100093 li ra,1 -8000018c: 00000113 li sp,0 -80000190: 00208463 beq ra,sp,80000198 -80000194: 00301463 bne zero,gp,8000019c -80000198: 22301863 bne zero,gp,800003c8 -8000019c: fe208ee3 beq ra,sp,80000198 - -800001a0 : -800001a0: 00700193 li gp,7 -800001a4: fff00093 li ra,-1 -800001a8: 00100113 li sp,1 -800001ac: 00208463 beq ra,sp,800001b4 -800001b0: 00301463 bne zero,gp,800001b8 -800001b4: 20301a63 bne zero,gp,800003c8 -800001b8: fe208ee3 beq ra,sp,800001b4 - -800001bc : -800001bc: 00800193 li gp,8 -800001c0: 00100093 li ra,1 -800001c4: fff00113 li sp,-1 -800001c8: 00208463 beq ra,sp,800001d0 -800001cc: 00301463 bne zero,gp,800001d4 -800001d0: 1e301c63 bne zero,gp,800003c8 -800001d4: fe208ee3 beq ra,sp,800001d0 - -800001d8 : -800001d8: 00900193 li gp,9 -800001dc: 00000213 li tp,0 -800001e0: 00000093 li ra,0 -800001e4: fff00113 li sp,-1 -800001e8: 1e208063 beq ra,sp,800003c8 -800001ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001f0: 00200293 li t0,2 -800001f4: fe5216e3 bne tp,t0,800001e0 - -800001f8 : -800001f8: 00a00193 li gp,10 -800001fc: 00000213 li tp,0 -80000200: 00000093 li ra,0 -80000204: fff00113 li sp,-1 -80000208: 00000013 nop -8000020c: 1a208e63 beq ra,sp,800003c8 -80000210: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000214: 00200293 li t0,2 -80000218: fe5214e3 bne tp,t0,80000200 - -8000021c : -8000021c: 00b00193 li gp,11 -80000220: 00000213 li tp,0 -80000224: 00000093 li ra,0 -80000228: fff00113 li sp,-1 -8000022c: 00000013 nop -80000230: 00000013 nop -80000234: 18208a63 beq ra,sp,800003c8 -80000238: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000023c: 00200293 li t0,2 -80000240: fe5212e3 bne tp,t0,80000224 - -80000244 : -80000244: 00c00193 li gp,12 -80000248: 00000213 li tp,0 -8000024c: 00000093 li ra,0 -80000250: 00000013 nop -80000254: fff00113 li sp,-1 -80000258: 16208863 beq ra,sp,800003c8 -8000025c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000260: 00200293 li t0,2 -80000264: fe5214e3 bne tp,t0,8000024c - -80000268 : -80000268: 00d00193 li gp,13 -8000026c: 00000213 li tp,0 -80000270: 00000093 li ra,0 -80000274: 00000013 nop -80000278: fff00113 li sp,-1 -8000027c: 00000013 nop -80000280: 14208463 beq ra,sp,800003c8 -80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000288: 00200293 li t0,2 -8000028c: fe5212e3 bne tp,t0,80000270 - -80000290 : -80000290: 00e00193 li gp,14 -80000294: 00000213 li tp,0 -80000298: 00000093 li ra,0 -8000029c: 00000013 nop -800002a0: 00000013 nop -800002a4: fff00113 li sp,-1 -800002a8: 12208063 beq ra,sp,800003c8 -800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b0: 00200293 li t0,2 -800002b4: fe5212e3 bne tp,t0,80000298 - -800002b8 : -800002b8: 00f00193 li gp,15 -800002bc: 00000213 li tp,0 -800002c0: 00000093 li ra,0 -800002c4: fff00113 li sp,-1 -800002c8: 10208063 beq ra,sp,800003c8 -800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d0: 00200293 li t0,2 -800002d4: fe5216e3 bne tp,t0,800002c0 - -800002d8 : -800002d8: 01000193 li gp,16 -800002dc: 00000213 li tp,0 -800002e0: 00000093 li ra,0 -800002e4: fff00113 li sp,-1 -800002e8: 00000013 nop -800002ec: 0c208e63 beq ra,sp,800003c8 -800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002f4: 00200293 li t0,2 -800002f8: fe5214e3 bne tp,t0,800002e0 - -800002fc : -800002fc: 01100193 li gp,17 -80000300: 00000213 li tp,0 -80000304: 00000093 li ra,0 -80000308: fff00113 li sp,-1 -8000030c: 00000013 nop -80000310: 00000013 nop -80000314: 0a208a63 beq ra,sp,800003c8 -80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000031c: 00200293 li t0,2 -80000320: fe5212e3 bne tp,t0,80000304 - -80000324 : -80000324: 01200193 li gp,18 -80000328: 00000213 li tp,0 -8000032c: 00000093 li ra,0 -80000330: 00000013 nop -80000334: fff00113 li sp,-1 -80000338: 08208863 beq ra,sp,800003c8 -8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000340: 00200293 li t0,2 -80000344: fe5214e3 bne tp,t0,8000032c - -80000348 : -80000348: 01300193 li gp,19 -8000034c: 00000213 li tp,0 -80000350: 00000093 li ra,0 -80000354: 00000013 nop -80000358: fff00113 li sp,-1 -8000035c: 00000013 nop -80000360: 06208463 beq ra,sp,800003c8 -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5212e3 bne tp,t0,80000350 - -80000370 : -80000370: 01400193 li gp,20 -80000374: 00000213 li tp,0 -80000378: 00000093 li ra,0 -8000037c: 00000013 nop -80000380: 00000013 nop -80000384: fff00113 li sp,-1 -80000388: 04208063 beq ra,sp,800003c8 -8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000390: 00200293 li t0,2 -80000394: fe5212e3 bne tp,t0,80000378 - -80000398 : -80000398: 00100093 li ra,1 -8000039c: 00000a63 beqz zero,800003b0 -800003a0: 00108093 addi ra,ra,1 -800003a4: 00108093 addi ra,ra,1 -800003a8: 00108093 addi ra,ra,1 -800003ac: 00108093 addi ra,ra,1 -800003b0: 00108093 addi ra,ra,1 -800003b4: 00108093 addi ra,ra,1 -800003b8: 00300e93 li t4,3 -800003bc: 01500193 li gp,21 -800003c0: 01d09463 bne ra,t4,800003c8 -800003c4: 02301063 bne zero,gp,800003e4 - -800003c8 : -800003c8: 0ff0000f fence -800003cc: 00018063 beqz gp,800003cc -800003d0: 00119193 slli gp,gp,0x1 -800003d4: 0011e193 ori gp,gp,1 -800003d8: 05d00893 li a7,93 -800003dc: 00018513 mv a0,gp -800003e0: 00000073 ecall - -800003e4 : -800003e4: 0ff0000f fence -800003e8: 00100193 li gp,1 -800003ec: 05d00893 li a7,93 -800003f0: 00000513 li a0,0 -800003f4: 00000073 ecall -800003f8: c0001073 unimp -800003fc: 0000 unimp -800003fe: 0000 unimp -80000400: 0000 unimp -80000402: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-bge.dump b/benchmarks/riscv_tests/rv32ui-p-bge.dump deleted file mode 100644 index 52dbf591..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-bge.dump +++ /dev/null @@ -1,364 +0,0 @@ - -rv32ui-p-bge: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000093 li ra,0 -80000110: 00000113 li sp,0 -80000114: 0020d663 bge ra,sp,80000120 -80000118: 30301863 bne zero,gp,80000428 -8000011c: 00301663 bne zero,gp,80000128 -80000120: fe20dee3 bge ra,sp,8000011c -80000124: 30301263 bne zero,gp,80000428 - -80000128 : -80000128: 00300193 li gp,3 -8000012c: 00100093 li ra,1 -80000130: 00100113 li sp,1 -80000134: 0020d663 bge ra,sp,80000140 -80000138: 2e301863 bne zero,gp,80000428 -8000013c: 00301663 bne zero,gp,80000148 -80000140: fe20dee3 bge ra,sp,8000013c -80000144: 2e301263 bne zero,gp,80000428 - -80000148 : -80000148: 00400193 li gp,4 -8000014c: fff00093 li ra,-1 -80000150: fff00113 li sp,-1 -80000154: 0020d663 bge ra,sp,80000160 -80000158: 2c301863 bne zero,gp,80000428 -8000015c: 00301663 bne zero,gp,80000168 -80000160: fe20dee3 bge ra,sp,8000015c -80000164: 2c301263 bne zero,gp,80000428 - -80000168 : -80000168: 00500193 li gp,5 -8000016c: 00100093 li ra,1 -80000170: 00000113 li sp,0 -80000174: 0020d663 bge ra,sp,80000180 -80000178: 2a301863 bne zero,gp,80000428 -8000017c: 00301663 bne zero,gp,80000188 -80000180: fe20dee3 bge ra,sp,8000017c -80000184: 2a301263 bne zero,gp,80000428 - -80000188 : -80000188: 00600193 li gp,6 -8000018c: 00100093 li ra,1 -80000190: fff00113 li sp,-1 -80000194: 0020d663 bge ra,sp,800001a0 -80000198: 28301863 bne zero,gp,80000428 -8000019c: 00301663 bne zero,gp,800001a8 -800001a0: fe20dee3 bge ra,sp,8000019c -800001a4: 28301263 bne zero,gp,80000428 - -800001a8 : -800001a8: 00700193 li gp,7 -800001ac: fff00093 li ra,-1 -800001b0: ffe00113 li sp,-2 -800001b4: 0020d663 bge ra,sp,800001c0 -800001b8: 26301863 bne zero,gp,80000428 -800001bc: 00301663 bne zero,gp,800001c8 -800001c0: fe20dee3 bge ra,sp,800001bc -800001c4: 26301263 bne zero,gp,80000428 - -800001c8 : -800001c8: 00800193 li gp,8 -800001cc: 00000093 li ra,0 -800001d0: 00100113 li sp,1 -800001d4: 0020d463 bge ra,sp,800001dc -800001d8: 00301463 bne zero,gp,800001e0 -800001dc: 24301663 bne zero,gp,80000428 -800001e0: fe20dee3 bge ra,sp,800001dc - -800001e4 : -800001e4: 00900193 li gp,9 -800001e8: fff00093 li ra,-1 -800001ec: 00100113 li sp,1 -800001f0: 0020d463 bge ra,sp,800001f8 -800001f4: 00301463 bne zero,gp,800001fc -800001f8: 22301863 bne zero,gp,80000428 -800001fc: fe20dee3 bge ra,sp,800001f8 - -80000200 : -80000200: 00a00193 li gp,10 -80000204: ffe00093 li ra,-2 -80000208: fff00113 li sp,-1 -8000020c: 0020d463 bge ra,sp,80000214 -80000210: 00301463 bne zero,gp,80000218 -80000214: 20301a63 bne zero,gp,80000428 -80000218: fe20dee3 bge ra,sp,80000214 - -8000021c : -8000021c: 00b00193 li gp,11 -80000220: ffe00093 li ra,-2 -80000224: 00100113 li sp,1 -80000228: 0020d463 bge ra,sp,80000230 -8000022c: 00301463 bne zero,gp,80000234 -80000230: 1e301c63 bne zero,gp,80000428 -80000234: fe20dee3 bge ra,sp,80000230 - -80000238 : -80000238: 00c00193 li gp,12 -8000023c: 00000213 li tp,0 -80000240: fff00093 li ra,-1 -80000244: 00000113 li sp,0 -80000248: 1e20d063 bge ra,sp,80000428 -8000024c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000250: 00200293 li t0,2 -80000254: fe5216e3 bne tp,t0,80000240 - -80000258 : -80000258: 00d00193 li gp,13 -8000025c: 00000213 li tp,0 -80000260: fff00093 li ra,-1 -80000264: 00000113 li sp,0 -80000268: 00000013 nop -8000026c: 1a20de63 bge ra,sp,80000428 -80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000274: 00200293 li t0,2 -80000278: fe5214e3 bne tp,t0,80000260 - -8000027c : -8000027c: 00e00193 li gp,14 -80000280: 00000213 li tp,0 -80000284: fff00093 li ra,-1 -80000288: 00000113 li sp,0 -8000028c: 00000013 nop -80000290: 00000013 nop -80000294: 1820da63 bge ra,sp,80000428 -80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000029c: 00200293 li t0,2 -800002a0: fe5212e3 bne tp,t0,80000284 - -800002a4 : -800002a4: 00f00193 li gp,15 -800002a8: 00000213 li tp,0 -800002ac: fff00093 li ra,-1 -800002b0: 00000013 nop -800002b4: 00000113 li sp,0 -800002b8: 1620d863 bge ra,sp,80000428 -800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002c0: 00200293 li t0,2 -800002c4: fe5214e3 bne tp,t0,800002ac - -800002c8 : -800002c8: 01000193 li gp,16 -800002cc: 00000213 li tp,0 -800002d0: fff00093 li ra,-1 -800002d4: 00000013 nop -800002d8: 00000113 li sp,0 -800002dc: 00000013 nop -800002e0: 1420d463 bge ra,sp,80000428 -800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002e8: 00200293 li t0,2 -800002ec: fe5212e3 bne tp,t0,800002d0 - -800002f0 : -800002f0: 01100193 li gp,17 -800002f4: 00000213 li tp,0 -800002f8: fff00093 li ra,-1 -800002fc: 00000013 nop -80000300: 00000013 nop -80000304: 00000113 li sp,0 -80000308: 1220d063 bge ra,sp,80000428 -8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000310: 00200293 li t0,2 -80000314: fe5212e3 bne tp,t0,800002f8 - -80000318 : -80000318: 01200193 li gp,18 -8000031c: 00000213 li tp,0 -80000320: fff00093 li ra,-1 -80000324: 00000113 li sp,0 -80000328: 1020d063 bge ra,sp,80000428 -8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000330: 00200293 li t0,2 -80000334: fe5216e3 bne tp,t0,80000320 - -80000338 : -80000338: 01300193 li gp,19 -8000033c: 00000213 li tp,0 -80000340: fff00093 li ra,-1 -80000344: 00000113 li sp,0 -80000348: 00000013 nop -8000034c: 0c20de63 bge ra,sp,80000428 -80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000354: 00200293 li t0,2 -80000358: fe5214e3 bne tp,t0,80000340 - -8000035c : -8000035c: 01400193 li gp,20 -80000360: 00000213 li tp,0 -80000364: fff00093 li ra,-1 -80000368: 00000113 li sp,0 -8000036c: 00000013 nop -80000370: 00000013 nop -80000374: 0a20da63 bge ra,sp,80000428 -80000378: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000037c: 00200293 li t0,2 -80000380: fe5212e3 bne tp,t0,80000364 - -80000384 : -80000384: 01500193 li gp,21 -80000388: 00000213 li tp,0 -8000038c: fff00093 li ra,-1 -80000390: 00000013 nop -80000394: 00000113 li sp,0 -80000398: 0820d863 bge ra,sp,80000428 -8000039c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003a0: 00200293 li t0,2 -800003a4: fe5214e3 bne tp,t0,8000038c - -800003a8 : -800003a8: 01600193 li gp,22 -800003ac: 00000213 li tp,0 -800003b0: fff00093 li ra,-1 -800003b4: 00000013 nop -800003b8: 00000113 li sp,0 -800003bc: 00000013 nop -800003c0: 0620d463 bge ra,sp,80000428 -800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003c8: 00200293 li t0,2 -800003cc: fe5212e3 bne tp,t0,800003b0 - -800003d0 : -800003d0: 01700193 li gp,23 -800003d4: 00000213 li tp,0 -800003d8: fff00093 li ra,-1 -800003dc: 00000013 nop -800003e0: 00000013 nop -800003e4: 00000113 li sp,0 -800003e8: 0420d063 bge ra,sp,80000428 -800003ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f0: 00200293 li t0,2 -800003f4: fe5212e3 bne tp,t0,800003d8 - -800003f8 : -800003f8: 00100093 li ra,1 -800003fc: 0000da63 bgez ra,80000410 -80000400: 00108093 addi ra,ra,1 -80000404: 00108093 addi ra,ra,1 -80000408: 00108093 addi ra,ra,1 -8000040c: 00108093 addi ra,ra,1 -80000410: 00108093 addi ra,ra,1 -80000414: 00108093 addi ra,ra,1 -80000418: 00300e93 li t4,3 -8000041c: 01800193 li gp,24 -80000420: 01d09463 bne ra,t4,80000428 -80000424: 02301063 bne zero,gp,80000444 - -80000428 : -80000428: 0ff0000f fence -8000042c: 00018063 beqz gp,8000042c -80000430: 00119193 slli gp,gp,0x1 -80000434: 0011e193 ori gp,gp,1 -80000438: 05d00893 li a7,93 -8000043c: 00018513 mv a0,gp -80000440: 00000073 ecall - -80000444 : -80000444: 0ff0000f fence -80000448: 00100193 li gp,1 -8000044c: 05d00893 li a7,93 -80000450: 00000513 li a0,0 -80000454: 00000073 ecall -80000458: c0001073 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/benchmarks/riscv_tests/rv32ui-p-bgeu.dump b/benchmarks/riscv_tests/rv32ui-p-bgeu.dump deleted file mode 100644 index ed45ab9e..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-bgeu.dump +++ /dev/null @@ -1,383 +0,0 @@ - -rv32ui-p-bgeu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000093 li ra,0 -80000110: 00000113 li sp,0 -80000114: 0020f663 bgeu ra,sp,80000120 -80000118: 34301263 bne zero,gp,8000045c -8000011c: 00301663 bne zero,gp,80000128 -80000120: fe20fee3 bgeu ra,sp,8000011c -80000124: 32301c63 bne zero,gp,8000045c - -80000128 : -80000128: 00300193 li gp,3 -8000012c: 00100093 li ra,1 -80000130: 00100113 li sp,1 -80000134: 0020f663 bgeu ra,sp,80000140 -80000138: 32301263 bne zero,gp,8000045c -8000013c: 00301663 bne zero,gp,80000148 -80000140: fe20fee3 bgeu ra,sp,8000013c -80000144: 30301c63 bne zero,gp,8000045c - -80000148 : -80000148: 00400193 li gp,4 -8000014c: fff00093 li ra,-1 -80000150: fff00113 li sp,-1 -80000154: 0020f663 bgeu ra,sp,80000160 -80000158: 30301263 bne zero,gp,8000045c -8000015c: 00301663 bne zero,gp,80000168 -80000160: fe20fee3 bgeu ra,sp,8000015c -80000164: 2e301c63 bne zero,gp,8000045c - -80000168 : -80000168: 00500193 li gp,5 -8000016c: 00100093 li ra,1 -80000170: 00000113 li sp,0 -80000174: 0020f663 bgeu ra,sp,80000180 -80000178: 2e301263 bne zero,gp,8000045c -8000017c: 00301663 bne zero,gp,80000188 -80000180: fe20fee3 bgeu ra,sp,8000017c -80000184: 2c301c63 bne zero,gp,8000045c - -80000188 : -80000188: 00600193 li gp,6 -8000018c: fff00093 li ra,-1 -80000190: ffe00113 li sp,-2 -80000194: 0020f663 bgeu ra,sp,800001a0 -80000198: 2c301263 bne zero,gp,8000045c -8000019c: 00301663 bne zero,gp,800001a8 -800001a0: fe20fee3 bgeu ra,sp,8000019c -800001a4: 2a301c63 bne zero,gp,8000045c - -800001a8 : -800001a8: 00700193 li gp,7 -800001ac: fff00093 li ra,-1 -800001b0: 00000113 li sp,0 -800001b4: 0020f663 bgeu ra,sp,800001c0 -800001b8: 2a301263 bne zero,gp,8000045c -800001bc: 00301663 bne zero,gp,800001c8 -800001c0: fe20fee3 bgeu ra,sp,800001bc -800001c4: 28301c63 bne zero,gp,8000045c - -800001c8 : -800001c8: 00800193 li gp,8 -800001cc: 00000093 li ra,0 -800001d0: 00100113 li sp,1 -800001d4: 0020f463 bgeu ra,sp,800001dc -800001d8: 00301463 bne zero,gp,800001e0 -800001dc: 28301063 bne zero,gp,8000045c -800001e0: fe20fee3 bgeu ra,sp,800001dc - -800001e4 : -800001e4: 00900193 li gp,9 -800001e8: ffe00093 li ra,-2 -800001ec: fff00113 li sp,-1 -800001f0: 0020f463 bgeu ra,sp,800001f8 -800001f4: 00301463 bne zero,gp,800001fc -800001f8: 26301263 bne zero,gp,8000045c -800001fc: fe20fee3 bgeu ra,sp,800001f8 - -80000200 : -80000200: 00a00193 li gp,10 -80000204: 00000093 li ra,0 -80000208: fff00113 li sp,-1 -8000020c: 0020f463 bgeu ra,sp,80000214 -80000210: 00301463 bne zero,gp,80000218 -80000214: 24301463 bne zero,gp,8000045c -80000218: fe20fee3 bgeu ra,sp,80000214 - -8000021c : -8000021c: 00b00193 li gp,11 -80000220: 800000b7 lui ra,0x80000 -80000224: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -80000228: 80000137 lui sp,0x80000 -8000022c: 0020f463 bgeu ra,sp,80000234 -80000230: 00301463 bne zero,gp,80000238 -80000234: 22301463 bne zero,gp,8000045c -80000238: fe20fee3 bgeu ra,sp,80000234 - -8000023c : -8000023c: 00c00193 li gp,12 -80000240: 00000213 li tp,0 -80000244: f00000b7 lui ra,0xf0000 -80000248: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -8000024c: f0000137 lui sp,0xf0000 -80000250: 2020f663 bgeu ra,sp,8000045c -80000254: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000258: 00200293 li t0,2 -8000025c: fe5214e3 bne tp,t0,80000244 - -80000260 : -80000260: 00d00193 li gp,13 -80000264: 00000213 li tp,0 -80000268: f00000b7 lui ra,0xf0000 -8000026c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -80000270: f0000137 lui sp,0xf0000 -80000274: 00000013 nop -80000278: 1e20f263 bgeu ra,sp,8000045c -8000027c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000280: 00200293 li t0,2 -80000284: fe5212e3 bne tp,t0,80000268 - -80000288 : -80000288: 00e00193 li gp,14 -8000028c: 00000213 li tp,0 -80000290: f00000b7 lui ra,0xf0000 -80000294: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -80000298: f0000137 lui sp,0xf0000 -8000029c: 00000013 nop -800002a0: 00000013 nop -800002a4: 1a20fc63 bgeu ra,sp,8000045c -800002a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002ac: 00200293 li t0,2 -800002b0: fe5210e3 bne tp,t0,80000290 - -800002b4 : -800002b4: 00f00193 li gp,15 -800002b8: 00000213 li tp,0 -800002bc: f00000b7 lui ra,0xf0000 -800002c0: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -800002c4: 00000013 nop -800002c8: f0000137 lui sp,0xf0000 -800002cc: 1820f863 bgeu ra,sp,8000045c -800002d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d4: 00200293 li t0,2 -800002d8: fe5212e3 bne tp,t0,800002bc - -800002dc : -800002dc: 01000193 li gp,16 -800002e0: 00000213 li tp,0 -800002e4: f00000b7 lui ra,0xf0000 -800002e8: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -800002ec: 00000013 nop -800002f0: f0000137 lui sp,0xf0000 -800002f4: 00000013 nop -800002f8: 1620f263 bgeu ra,sp,8000045c -800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000300: 00200293 li t0,2 -80000304: fe5210e3 bne tp,t0,800002e4 - -80000308 : -80000308: 01100193 li gp,17 -8000030c: 00000213 li tp,0 -80000310: f00000b7 lui ra,0xf0000 -80000314: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -80000318: 00000013 nop -8000031c: 00000013 nop -80000320: f0000137 lui sp,0xf0000 -80000324: 1220fc63 bgeu ra,sp,8000045c -80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000032c: 00200293 li t0,2 -80000330: fe5210e3 bne tp,t0,80000310 - -80000334 : -80000334: 01200193 li gp,18 -80000338: 00000213 li tp,0 -8000033c: f00000b7 lui ra,0xf0000 -80000340: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -80000344: f0000137 lui sp,0xf0000 -80000348: 1020fa63 bgeu ra,sp,8000045c -8000034c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000350: 00200293 li t0,2 -80000354: fe5214e3 bne tp,t0,8000033c - -80000358 : -80000358: 01300193 li gp,19 -8000035c: 00000213 li tp,0 -80000360: f00000b7 lui ra,0xf0000 -80000364: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -80000368: f0000137 lui sp,0xf0000 -8000036c: 00000013 nop -80000370: 0e20f663 bgeu ra,sp,8000045c -80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000378: 00200293 li t0,2 -8000037c: fe5212e3 bne tp,t0,80000360 - -80000380 : -80000380: 01400193 li gp,20 -80000384: 00000213 li tp,0 -80000388: f00000b7 lui ra,0xf0000 -8000038c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -80000390: f0000137 lui sp,0xf0000 -80000394: 00000013 nop -80000398: 00000013 nop -8000039c: 0c20f063 bgeu ra,sp,8000045c -800003a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003a4: 00200293 li t0,2 -800003a8: fe5210e3 bne tp,t0,80000388 - -800003ac : -800003ac: 01500193 li gp,21 -800003b0: 00000213 li tp,0 -800003b4: f00000b7 lui ra,0xf0000 -800003b8: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -800003bc: 00000013 nop -800003c0: f0000137 lui sp,0xf0000 -800003c4: 0820fc63 bgeu ra,sp,8000045c -800003c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003cc: 00200293 li t0,2 -800003d0: fe5212e3 bne tp,t0,800003b4 - -800003d4 : -800003d4: 01600193 li gp,22 -800003d8: 00000213 li tp,0 -800003dc: f00000b7 lui ra,0xf0000 -800003e0: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -800003e4: 00000013 nop -800003e8: f0000137 lui sp,0xf0000 -800003ec: 00000013 nop -800003f0: 0620f663 bgeu ra,sp,8000045c -800003f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f8: 00200293 li t0,2 -800003fc: fe5210e3 bne tp,t0,800003dc - -80000400 : -80000400: 01700193 li gp,23 -80000404: 00000213 li tp,0 -80000408: f00000b7 lui ra,0xf0000 -8000040c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> -80000410: 00000013 nop -80000414: 00000013 nop -80000418: f0000137 lui sp,0xf0000 -8000041c: 0420f063 bgeu ra,sp,8000045c -80000420: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000424: 00200293 li t0,2 -80000428: fe5210e3 bne tp,t0,80000408 - -8000042c : -8000042c: 00100093 li ra,1 -80000430: 0000fa63 bgeu ra,zero,80000444 -80000434: 00108093 addi ra,ra,1 -80000438: 00108093 addi ra,ra,1 -8000043c: 00108093 addi ra,ra,1 -80000440: 00108093 addi ra,ra,1 -80000444: 00108093 addi ra,ra,1 -80000448: 00108093 addi ra,ra,1 -8000044c: 00300e93 li t4,3 -80000450: 01800193 li gp,24 -80000454: 01d09463 bne ra,t4,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 diff --git a/benchmarks/riscv_tests/rv32ui-p-blt.dump b/benchmarks/riscv_tests/rv32ui-p-blt.dump deleted file mode 100644 index 95ce45de..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-blt.dump +++ /dev/null @@ -1,318 +0,0 @@ - -rv32ui-p-blt: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000093 li ra,0 -80000110: 00100113 li sp,1 -80000114: 0020c663 blt ra,sp,80000120 -80000118: 2a301863 bne zero,gp,800003c8 -8000011c: 00301663 bne zero,gp,80000128 -80000120: fe20cee3 blt ra,sp,8000011c -80000124: 2a301263 bne zero,gp,800003c8 - -80000128 : -80000128: 00300193 li gp,3 -8000012c: fff00093 li ra,-1 -80000130: 00100113 li sp,1 -80000134: 0020c663 blt ra,sp,80000140 -80000138: 28301863 bne zero,gp,800003c8 -8000013c: 00301663 bne zero,gp,80000148 -80000140: fe20cee3 blt ra,sp,8000013c -80000144: 28301263 bne zero,gp,800003c8 - -80000148 : -80000148: 00400193 li gp,4 -8000014c: ffe00093 li ra,-2 -80000150: fff00113 li sp,-1 -80000154: 0020c663 blt ra,sp,80000160 -80000158: 26301863 bne zero,gp,800003c8 -8000015c: 00301663 bne zero,gp,80000168 -80000160: fe20cee3 blt ra,sp,8000015c -80000164: 26301263 bne zero,gp,800003c8 - -80000168 : -80000168: 00500193 li gp,5 -8000016c: 00100093 li ra,1 -80000170: 00000113 li sp,0 -80000174: 0020c463 blt ra,sp,8000017c -80000178: 00301463 bne zero,gp,80000180 -8000017c: 24301663 bne zero,gp,800003c8 -80000180: fe20cee3 blt ra,sp,8000017c - -80000184 : -80000184: 00600193 li gp,6 -80000188: 00100093 li ra,1 -8000018c: fff00113 li sp,-1 -80000190: 0020c463 blt ra,sp,80000198 -80000194: 00301463 bne zero,gp,8000019c -80000198: 22301863 bne zero,gp,800003c8 -8000019c: fe20cee3 blt ra,sp,80000198 - -800001a0 : -800001a0: 00700193 li gp,7 -800001a4: fff00093 li ra,-1 -800001a8: ffe00113 li sp,-2 -800001ac: 0020c463 blt ra,sp,800001b4 -800001b0: 00301463 bne zero,gp,800001b8 -800001b4: 20301a63 bne zero,gp,800003c8 -800001b8: fe20cee3 blt ra,sp,800001b4 - -800001bc : -800001bc: 00800193 li gp,8 -800001c0: 00100093 li ra,1 -800001c4: ffe00113 li sp,-2 -800001c8: 0020c463 blt ra,sp,800001d0 -800001cc: 00301463 bne zero,gp,800001d4 -800001d0: 1e301c63 bne zero,gp,800003c8 -800001d4: fe20cee3 blt ra,sp,800001d0 - -800001d8 : -800001d8: 00900193 li gp,9 -800001dc: 00000213 li tp,0 -800001e0: 00000093 li ra,0 -800001e4: fff00113 li sp,-1 -800001e8: 1e20c063 blt ra,sp,800003c8 -800001ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001f0: 00200293 li t0,2 -800001f4: fe5216e3 bne tp,t0,800001e0 - -800001f8 : -800001f8: 00a00193 li gp,10 -800001fc: 00000213 li tp,0 -80000200: 00000093 li ra,0 -80000204: fff00113 li sp,-1 -80000208: 00000013 nop -8000020c: 1a20ce63 blt ra,sp,800003c8 -80000210: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000214: 00200293 li t0,2 -80000218: fe5214e3 bne tp,t0,80000200 - -8000021c : -8000021c: 00b00193 li gp,11 -80000220: 00000213 li tp,0 -80000224: 00000093 li ra,0 -80000228: fff00113 li sp,-1 -8000022c: 00000013 nop -80000230: 00000013 nop -80000234: 1820ca63 blt ra,sp,800003c8 -80000238: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000023c: 00200293 li t0,2 -80000240: fe5212e3 bne tp,t0,80000224 - -80000244 : -80000244: 00c00193 li gp,12 -80000248: 00000213 li tp,0 -8000024c: 00000093 li ra,0 -80000250: 00000013 nop -80000254: fff00113 li sp,-1 -80000258: 1620c863 blt ra,sp,800003c8 -8000025c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000260: 00200293 li t0,2 -80000264: fe5214e3 bne tp,t0,8000024c - -80000268 : -80000268: 00d00193 li gp,13 -8000026c: 00000213 li tp,0 -80000270: 00000093 li ra,0 -80000274: 00000013 nop -80000278: fff00113 li sp,-1 -8000027c: 00000013 nop -80000280: 1420c463 blt ra,sp,800003c8 -80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000288: 00200293 li t0,2 -8000028c: fe5212e3 bne tp,t0,80000270 - -80000290 : -80000290: 00e00193 li gp,14 -80000294: 00000213 li tp,0 -80000298: 00000093 li ra,0 -8000029c: 00000013 nop -800002a0: 00000013 nop -800002a4: fff00113 li sp,-1 -800002a8: 1220c063 blt ra,sp,800003c8 -800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b0: 00200293 li t0,2 -800002b4: fe5212e3 bne tp,t0,80000298 - -800002b8 : -800002b8: 00f00193 li gp,15 -800002bc: 00000213 li tp,0 -800002c0: 00000093 li ra,0 -800002c4: fff00113 li sp,-1 -800002c8: 1020c063 blt ra,sp,800003c8 -800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d0: 00200293 li t0,2 -800002d4: fe5216e3 bne tp,t0,800002c0 - -800002d8 : -800002d8: 01000193 li gp,16 -800002dc: 00000213 li tp,0 -800002e0: 00000093 li ra,0 -800002e4: fff00113 li sp,-1 -800002e8: 00000013 nop -800002ec: 0c20ce63 blt ra,sp,800003c8 -800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002f4: 00200293 li t0,2 -800002f8: fe5214e3 bne tp,t0,800002e0 - -800002fc : -800002fc: 01100193 li gp,17 -80000300: 00000213 li tp,0 -80000304: 00000093 li ra,0 -80000308: fff00113 li sp,-1 -8000030c: 00000013 nop -80000310: 00000013 nop -80000314: 0a20ca63 blt ra,sp,800003c8 -80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000031c: 00200293 li t0,2 -80000320: fe5212e3 bne tp,t0,80000304 - -80000324 : -80000324: 01200193 li gp,18 -80000328: 00000213 li tp,0 -8000032c: 00000093 li ra,0 -80000330: 00000013 nop -80000334: fff00113 li sp,-1 -80000338: 0820c863 blt ra,sp,800003c8 -8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000340: 00200293 li t0,2 -80000344: fe5214e3 bne tp,t0,8000032c - -80000348 : -80000348: 01300193 li gp,19 -8000034c: 00000213 li tp,0 -80000350: 00000093 li ra,0 -80000354: 00000013 nop -80000358: fff00113 li sp,-1 -8000035c: 00000013 nop -80000360: 0620c463 blt ra,sp,800003c8 -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5212e3 bne tp,t0,80000350 - -80000370 : -80000370: 01400193 li gp,20 -80000374: 00000213 li tp,0 -80000378: 00000093 li ra,0 -8000037c: 00000013 nop -80000380: 00000013 nop -80000384: fff00113 li sp,-1 -80000388: 0420c063 blt ra,sp,800003c8 -8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000390: 00200293 li t0,2 -80000394: fe5212e3 bne tp,t0,80000378 - -80000398 : -80000398: 00100093 li ra,1 -8000039c: 00104a63 bgtz ra,800003b0 -800003a0: 00108093 addi ra,ra,1 -800003a4: 00108093 addi ra,ra,1 -800003a8: 00108093 addi ra,ra,1 -800003ac: 00108093 addi ra,ra,1 -800003b0: 00108093 addi ra,ra,1 -800003b4: 00108093 addi ra,ra,1 -800003b8: 00300e93 li t4,3 -800003bc: 01500193 li gp,21 -800003c0: 01d09463 bne ra,t4,800003c8 -800003c4: 02301063 bne zero,gp,800003e4 - -800003c8 : -800003c8: 0ff0000f fence -800003cc: 00018063 beqz gp,800003cc -800003d0: 00119193 slli gp,gp,0x1 -800003d4: 0011e193 ori gp,gp,1 -800003d8: 05d00893 li a7,93 -800003dc: 00018513 mv a0,gp -800003e0: 00000073 ecall - -800003e4 : -800003e4: 0ff0000f fence -800003e8: 00100193 li gp,1 -800003ec: 05d00893 li a7,93 -800003f0: 00000513 li a0,0 -800003f4: 00000073 ecall -800003f8: c0001073 unimp -800003fc: 0000 unimp -800003fe: 0000 unimp -80000400: 0000 unimp -80000402: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-bltu.dump b/benchmarks/riscv_tests/rv32ui-p-bltu.dump deleted file mode 100644 index c392601b..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-bltu.dump +++ /dev/null @@ -1,337 +0,0 @@ - -rv32ui-p-bltu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000093 li ra,0 -80000110: 00100113 li sp,1 -80000114: 0020e663 bltu ra,sp,80000120 -80000118: 2e301263 bne zero,gp,800003fc -8000011c: 00301663 bne zero,gp,80000128 -80000120: fe20eee3 bltu ra,sp,8000011c -80000124: 2c301c63 bne zero,gp,800003fc - -80000128 : -80000128: 00300193 li gp,3 -8000012c: ffe00093 li ra,-2 -80000130: fff00113 li sp,-1 -80000134: 0020e663 bltu ra,sp,80000140 -80000138: 2c301263 bne zero,gp,800003fc -8000013c: 00301663 bne zero,gp,80000148 -80000140: fe20eee3 bltu ra,sp,8000013c -80000144: 2a301c63 bne zero,gp,800003fc - -80000148 : -80000148: 00400193 li gp,4 -8000014c: 00000093 li ra,0 -80000150: fff00113 li sp,-1 -80000154: 0020e663 bltu ra,sp,80000160 -80000158: 2a301263 bne zero,gp,800003fc -8000015c: 00301663 bne zero,gp,80000168 -80000160: fe20eee3 bltu ra,sp,8000015c -80000164: 28301c63 bne zero,gp,800003fc - -80000168 : -80000168: 00500193 li gp,5 -8000016c: 00100093 li ra,1 -80000170: 00000113 li sp,0 -80000174: 0020e463 bltu ra,sp,8000017c -80000178: 00301463 bne zero,gp,80000180 -8000017c: 28301063 bne zero,gp,800003fc -80000180: fe20eee3 bltu ra,sp,8000017c - -80000184 : -80000184: 00600193 li gp,6 -80000188: fff00093 li ra,-1 -8000018c: ffe00113 li sp,-2 -80000190: 0020e463 bltu ra,sp,80000198 -80000194: 00301463 bne zero,gp,8000019c -80000198: 26301263 bne zero,gp,800003fc -8000019c: fe20eee3 bltu ra,sp,80000198 - -800001a0 : -800001a0: 00700193 li gp,7 -800001a4: fff00093 li ra,-1 -800001a8: 00000113 li sp,0 -800001ac: 0020e463 bltu ra,sp,800001b4 -800001b0: 00301463 bne zero,gp,800001b8 -800001b4: 24301463 bne zero,gp,800003fc -800001b8: fe20eee3 bltu ra,sp,800001b4 - -800001bc : -800001bc: 00800193 li gp,8 -800001c0: 800000b7 lui ra,0x80000 -800001c4: 80000137 lui sp,0x80000 -800001c8: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffffdfff> -800001cc: 0020e463 bltu ra,sp,800001d4 -800001d0: 00301463 bne zero,gp,800001d8 -800001d4: 22301463 bne zero,gp,800003fc -800001d8: fe20eee3 bltu ra,sp,800001d4 - -800001dc : -800001dc: 00900193 li gp,9 -800001e0: 00000213 li tp,0 -800001e4: f00000b7 lui ra,0xf0000 -800001e8: f0000137 lui sp,0xf0000 -800001ec: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -800001f0: 2020e663 bltu ra,sp,800003fc -800001f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001f8: 00200293 li t0,2 -800001fc: fe5214e3 bne tp,t0,800001e4 - -80000200 : -80000200: 00a00193 li gp,10 -80000204: 00000213 li tp,0 -80000208: f00000b7 lui ra,0xf0000 -8000020c: f0000137 lui sp,0xf0000 -80000210: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -80000214: 00000013 nop -80000218: 1e20e263 bltu ra,sp,800003fc -8000021c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000220: 00200293 li t0,2 -80000224: fe5212e3 bne tp,t0,80000208 - -80000228 : -80000228: 00b00193 li gp,11 -8000022c: 00000213 li tp,0 -80000230: f00000b7 lui ra,0xf0000 -80000234: f0000137 lui sp,0xf0000 -80000238: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -8000023c: 00000013 nop -80000240: 00000013 nop -80000244: 1a20ec63 bltu ra,sp,800003fc -80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000024c: 00200293 li t0,2 -80000250: fe5210e3 bne tp,t0,80000230 - -80000254 : -80000254: 00c00193 li gp,12 -80000258: 00000213 li tp,0 -8000025c: f00000b7 lui ra,0xf0000 -80000260: 00000013 nop -80000264: f0000137 lui sp,0xf0000 -80000268: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -8000026c: 1820e863 bltu ra,sp,800003fc -80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000274: 00200293 li t0,2 -80000278: fe5212e3 bne tp,t0,8000025c - -8000027c : -8000027c: 00d00193 li gp,13 -80000280: 00000213 li tp,0 -80000284: f00000b7 lui ra,0xf0000 -80000288: 00000013 nop -8000028c: f0000137 lui sp,0xf0000 -80000290: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -80000294: 00000013 nop -80000298: 1620e263 bltu ra,sp,800003fc -8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a0: 00200293 li t0,2 -800002a4: fe5210e3 bne tp,t0,80000284 - -800002a8 : -800002a8: 00e00193 li gp,14 -800002ac: 00000213 li tp,0 -800002b0: f00000b7 lui ra,0xf0000 -800002b4: 00000013 nop -800002b8: 00000013 nop -800002bc: f0000137 lui sp,0xf0000 -800002c0: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -800002c4: 1220ec63 bltu ra,sp,800003fc -800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002cc: 00200293 li t0,2 -800002d0: fe5210e3 bne tp,t0,800002b0 - -800002d4 : -800002d4: 00f00193 li gp,15 -800002d8: 00000213 li tp,0 -800002dc: f00000b7 lui ra,0xf0000 -800002e0: f0000137 lui sp,0xf0000 -800002e4: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -800002e8: 1020ea63 bltu ra,sp,800003fc -800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002f0: 00200293 li t0,2 -800002f4: fe5214e3 bne tp,t0,800002dc - -800002f8 : -800002f8: 01000193 li gp,16 -800002fc: 00000213 li tp,0 -80000300: f00000b7 lui ra,0xf0000 -80000304: f0000137 lui sp,0xf0000 -80000308: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -8000030c: 00000013 nop -80000310: 0e20e663 bltu ra,sp,800003fc -80000314: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000318: 00200293 li t0,2 -8000031c: fe5212e3 bne tp,t0,80000300 - -80000320 : -80000320: 01100193 li gp,17 -80000324: 00000213 li tp,0 -80000328: f00000b7 lui ra,0xf0000 -8000032c: f0000137 lui sp,0xf0000 -80000330: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -80000334: 00000013 nop -80000338: 00000013 nop -8000033c: 0c20e063 bltu ra,sp,800003fc -80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000344: 00200293 li t0,2 -80000348: fe5210e3 bne tp,t0,80000328 - -8000034c : -8000034c: 01200193 li gp,18 -80000350: 00000213 li tp,0 -80000354: f00000b7 lui ra,0xf0000 -80000358: 00000013 nop -8000035c: f0000137 lui sp,0xf0000 -80000360: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -80000364: 0820ec63 bltu ra,sp,800003fc -80000368: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000036c: 00200293 li t0,2 -80000370: fe5212e3 bne tp,t0,80000354 - -80000374 : -80000374: 01300193 li gp,19 -80000378: 00000213 li tp,0 -8000037c: f00000b7 lui ra,0xf0000 -80000380: 00000013 nop -80000384: f0000137 lui sp,0xf0000 -80000388: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -8000038c: 00000013 nop -80000390: 0620e663 bltu ra,sp,800003fc -80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000398: 00200293 li t0,2 -8000039c: fe5210e3 bne tp,t0,8000037c - -800003a0 : -800003a0: 01400193 li gp,20 -800003a4: 00000213 li tp,0 -800003a8: f00000b7 lui ra,0xf0000 -800003ac: 00000013 nop -800003b0: 00000013 nop -800003b4: f0000137 lui sp,0xf0000 -800003b8: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> -800003bc: 0420e063 bltu ra,sp,800003fc -800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003c4: 00200293 li t0,2 -800003c8: fe5210e3 bne tp,t0,800003a8 - -800003cc : -800003cc: 00100093 li ra,1 -800003d0: 00106a63 bltu zero,ra,800003e4 -800003d4: 00108093 addi ra,ra,1 # f0000001 <_end+0x6fffe001> -800003d8: 00108093 addi ra,ra,1 -800003dc: 00108093 addi ra,ra,1 -800003e0: 00108093 addi ra,ra,1 -800003e4: 00108093 addi ra,ra,1 -800003e8: 00108093 addi ra,ra,1 -800003ec: 00300e93 li t4,3 -800003f0: 01500193 li gp,21 -800003f4: 01d09463 bne ra,t4,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 diff --git a/benchmarks/riscv_tests/rv32ui-p-bne.dump b/benchmarks/riscv_tests/rv32ui-p-bne.dump deleted file mode 100644 index 226d3de4..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-bne.dump +++ /dev/null @@ -1,317 +0,0 @@ - -rv32ui-p-bne: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000093 li ra,0 -80000110: 00100113 li sp,1 -80000114: 00209663 bne ra,sp,80000120 -80000118: 2a301a63 bne zero,gp,800003cc -8000011c: 00301663 bne zero,gp,80000128 -80000120: fe209ee3 bne ra,sp,8000011c -80000124: 2a301463 bne zero,gp,800003cc - -80000128 : -80000128: 00300193 li gp,3 -8000012c: 00100093 li ra,1 -80000130: 00000113 li sp,0 -80000134: 00209663 bne ra,sp,80000140 -80000138: 28301a63 bne zero,gp,800003cc -8000013c: 00301663 bne zero,gp,80000148 -80000140: fe209ee3 bne ra,sp,8000013c -80000144: 28301463 bne zero,gp,800003cc - -80000148 : -80000148: 00400193 li gp,4 -8000014c: fff00093 li ra,-1 -80000150: 00100113 li sp,1 -80000154: 00209663 bne ra,sp,80000160 -80000158: 26301a63 bne zero,gp,800003cc -8000015c: 00301663 bne zero,gp,80000168 -80000160: fe209ee3 bne ra,sp,8000015c -80000164: 26301463 bne zero,gp,800003cc - -80000168 : -80000168: 00500193 li gp,5 -8000016c: 00100093 li ra,1 -80000170: fff00113 li sp,-1 -80000174: 00209663 bne ra,sp,80000180 -80000178: 24301a63 bne zero,gp,800003cc -8000017c: 00301663 bne zero,gp,80000188 -80000180: fe209ee3 bne ra,sp,8000017c -80000184: 24301463 bne zero,gp,800003cc - -80000188 : -80000188: 00600193 li gp,6 -8000018c: 00000093 li ra,0 -80000190: 00000113 li sp,0 -80000194: 00209463 bne ra,sp,8000019c -80000198: 00301463 bne zero,gp,800001a0 -8000019c: 22301863 bne zero,gp,800003cc -800001a0: fe209ee3 bne ra,sp,8000019c - -800001a4 : -800001a4: 00700193 li gp,7 -800001a8: 00100093 li ra,1 -800001ac: 00100113 li sp,1 -800001b0: 00209463 bne ra,sp,800001b8 -800001b4: 00301463 bne zero,gp,800001bc -800001b8: 20301a63 bne zero,gp,800003cc -800001bc: fe209ee3 bne ra,sp,800001b8 - -800001c0 : -800001c0: 00800193 li gp,8 -800001c4: fff00093 li ra,-1 -800001c8: fff00113 li sp,-1 -800001cc: 00209463 bne ra,sp,800001d4 -800001d0: 00301463 bne zero,gp,800001d8 -800001d4: 1e301c63 bne zero,gp,800003cc -800001d8: fe209ee3 bne ra,sp,800001d4 - -800001dc : -800001dc: 00900193 li gp,9 -800001e0: 00000213 li tp,0 -800001e4: 00000093 li ra,0 -800001e8: 00000113 li sp,0 -800001ec: 1e209063 bne ra,sp,800003cc -800001f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001f4: 00200293 li t0,2 -800001f8: fe5216e3 bne tp,t0,800001e4 - -800001fc : -800001fc: 00a00193 li gp,10 -80000200: 00000213 li tp,0 -80000204: 00000093 li ra,0 -80000208: 00000113 li sp,0 -8000020c: 00000013 nop -80000210: 1a209e63 bne ra,sp,800003cc -80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000218: 00200293 li t0,2 -8000021c: fe5214e3 bne tp,t0,80000204 - -80000220 : -80000220: 00b00193 li gp,11 -80000224: 00000213 li tp,0 -80000228: 00000093 li ra,0 -8000022c: 00000113 li sp,0 -80000230: 00000013 nop -80000234: 00000013 nop -80000238: 18209a63 bne ra,sp,800003cc -8000023c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000240: 00200293 li t0,2 -80000244: fe5212e3 bne tp,t0,80000228 - -80000248 : -80000248: 00c00193 li gp,12 -8000024c: 00000213 li tp,0 -80000250: 00000093 li ra,0 -80000254: 00000013 nop -80000258: 00000113 li sp,0 -8000025c: 16209863 bne ra,sp,800003cc -80000260: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000264: 00200293 li t0,2 -80000268: fe5214e3 bne tp,t0,80000250 - -8000026c : -8000026c: 00d00193 li gp,13 -80000270: 00000213 li tp,0 -80000274: 00000093 li ra,0 -80000278: 00000013 nop -8000027c: 00000113 li sp,0 -80000280: 00000013 nop -80000284: 14209463 bne ra,sp,800003cc -80000288: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000028c: 00200293 li t0,2 -80000290: fe5212e3 bne tp,t0,80000274 - -80000294 : -80000294: 00e00193 li gp,14 -80000298: 00000213 li tp,0 -8000029c: 00000093 li ra,0 -800002a0: 00000013 nop -800002a4: 00000013 nop -800002a8: 00000113 li sp,0 -800002ac: 12209063 bne ra,sp,800003cc -800002b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b4: 00200293 li t0,2 -800002b8: fe5212e3 bne tp,t0,8000029c - -800002bc : -800002bc: 00f00193 li gp,15 -800002c0: 00000213 li tp,0 -800002c4: 00000093 li ra,0 -800002c8: 00000113 li sp,0 -800002cc: 10209063 bne ra,sp,800003cc -800002d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d4: 00200293 li t0,2 -800002d8: fe5216e3 bne tp,t0,800002c4 - -800002dc : -800002dc: 01000193 li gp,16 -800002e0: 00000213 li tp,0 -800002e4: 00000093 li ra,0 -800002e8: 00000113 li sp,0 -800002ec: 00000013 nop -800002f0: 0c209e63 bne ra,sp,800003cc -800002f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002f8: 00200293 li t0,2 -800002fc: fe5214e3 bne tp,t0,800002e4 - -80000300 : -80000300: 01100193 li gp,17 -80000304: 00000213 li tp,0 -80000308: 00000093 li ra,0 -8000030c: 00000113 li sp,0 -80000310: 00000013 nop -80000314: 00000013 nop -80000318: 0a209a63 bne ra,sp,800003cc -8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000320: 00200293 li t0,2 -80000324: fe5212e3 bne tp,t0,80000308 - -80000328 : -80000328: 01200193 li gp,18 -8000032c: 00000213 li tp,0 -80000330: 00000093 li ra,0 -80000334: 00000013 nop -80000338: 00000113 li sp,0 -8000033c: 08209863 bne ra,sp,800003cc -80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000344: 00200293 li t0,2 -80000348: fe5214e3 bne tp,t0,80000330 - -8000034c : -8000034c: 01300193 li gp,19 -80000350: 00000213 li tp,0 -80000354: 00000093 li ra,0 -80000358: 00000013 nop -8000035c: 00000113 li sp,0 -80000360: 00000013 nop -80000364: 06209463 bne ra,sp,800003cc -80000368: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000036c: 00200293 li t0,2 -80000370: fe5212e3 bne tp,t0,80000354 - -80000374 : -80000374: 01400193 li gp,20 -80000378: 00000213 li tp,0 -8000037c: 00000093 li ra,0 -80000380: 00000013 nop -80000384: 00000013 nop -80000388: 00000113 li sp,0 -8000038c: 04209063 bne ra,sp,800003cc -80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000394: 00200293 li t0,2 -80000398: fe5212e3 bne tp,t0,8000037c - -8000039c : -8000039c: 00100093 li ra,1 -800003a0: 00009a63 bnez ra,800003b4 -800003a4: 00108093 addi ra,ra,1 -800003a8: 00108093 addi ra,ra,1 -800003ac: 00108093 addi ra,ra,1 -800003b0: 00108093 addi ra,ra,1 -800003b4: 00108093 addi ra,ra,1 -800003b8: 00108093 addi ra,ra,1 -800003bc: 00300e93 li t4,3 -800003c0: 01500193 li gp,21 -800003c4: 01d09463 bne ra,t4,800003cc -800003c8: 02301063 bne zero,gp,800003e8 - -800003cc : -800003cc: 0ff0000f fence -800003d0: 00018063 beqz gp,800003d0 -800003d4: 00119193 slli gp,gp,0x1 -800003d8: 0011e193 ori gp,gp,1 -800003dc: 05d00893 li a7,93 -800003e0: 00018513 mv a0,gp -800003e4: 00000073 ecall - -800003e8 : -800003e8: 0ff0000f fence -800003ec: 00100193 li gp,1 -800003f0: 05d00893 li a7,93 -800003f4: 00000513 li a0,0 -800003f8: 00000073 ecall -800003fc: c0001073 unimp -80000400: 0000 unimp -80000402: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-fence_i.dump b/benchmarks/riscv_tests/rv32ui-p-fence_i.dump deleted file mode 100644 index 492e0add..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-fence_i.dump +++ /dev/null @@ -1,179 +0,0 @@ - -rv32ui-p-fence_i: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret -80000108: 06f00693 li a3,111 -8000010c: 00002517 auipc a0,0x2 -80000110: ef451503 lh a0,-268(a0) # 80002000 -80000114: 00002597 auipc a1,0x2 -80000118: eee59583 lh a1,-274(a1) # 80002002 -8000011c: 00000013 nop -80000120: 00000013 nop -80000124: 00000013 nop -80000128: 00000013 nop -8000012c: 00000013 nop -80000130: 00000013 nop -80000134: 00000013 nop -80000138: 00000013 nop -8000013c: 00000013 nop -80000140: 00000297 auipc t0,0x0 -80000144: 00a29a23 sh a0,20(t0) # 80000154 -80000148: 00000297 auipc t0,0x0 -8000014c: 00b29723 sh a1,14(t0) # 80000156 -80000150: 0000100f fence.i -80000154: 0de68693 addi a3,a3,222 - -80000158 : -80000158: 00000013 nop -8000015c: 1bc00e93 li t4,444 -80000160: 00200193 li gp,2 -80000164: 07d69a63 bne a3,t4,800001d8 -80000168: 06400713 li a4,100 -8000016c: fff70713 addi a4,a4,-1 -80000170: fe071ee3 bnez a4,8000016c -80000174: 00000297 auipc t0,0x0 -80000178: 04a29623 sh a0,76(t0) # 800001c0 -8000017c: 00000297 auipc t0,0x0 -80000180: 04b29323 sh a1,70(t0) # 800001c2 -80000184: 0000100f fence.i -80000188: 00000013 nop -8000018c: 00000013 nop -80000190: 00000013 nop -80000194: 00000013 nop -80000198: 00000013 nop -8000019c: 00000013 nop -800001a0: 00000013 nop -800001a4: 00000013 nop -800001a8: 00000013 nop -800001ac: 00000013 nop -800001b0: 00000013 nop -800001b4: 00000013 nop -800001b8: 00000013 nop -800001bc: 00000013 nop -800001c0: 22b68693 addi a3,a3,555 - -800001c4 : -800001c4: 00000013 nop -800001c8: 30900e93 li t4,777 -800001cc: 00300193 li gp,3 -800001d0: 01d69463 bne a3,t4,800001d8 -800001d4: 02301063 bne zero,gp,800001f4 - -800001d8 : -800001d8: 0ff0000f fence -800001dc: 00018063 beqz gp,800001dc -800001e0: 00119193 slli gp,gp,0x1 -800001e4: 0011e193 ori gp,gp,1 -800001e8: 05d00893 li a7,93 -800001ec: 00018513 mv a0,gp -800001f0: 00000073 ecall - -800001f4 : -800001f4: 0ff0000f fence -800001f8: 00100193 li gp,1 -800001fc: 05d00893 li a7,93 -80000200: 00000513 li a0,0 -80000204: 00000073 ecall -80000208: c0001073 unimp -8000020c: 0000 unimp -8000020e: 0000 unimp -80000210: 0000 unimp -80000212: 0000 unimp -80000214: 0000 unimp -80000216: 0000 unimp -80000218: 0000 unimp -8000021a: 0000 unimp -8000021c: 0000 unimp -8000021e: 0000 unimp -80000220: 0000 unimp -80000222: 0000 unimp -80000224: 0000 unimp -80000226: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: 14d68693 addi a3,a3,333 -80002004: 0000 unimp -80002006: 0000 unimp -80002008: 0000 unimp -8000200a: 0000 unimp -8000200c: 0000 unimp -8000200e: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-jal.dump b/benchmarks/riscv_tests/rv32ui-p-jal.dump deleted file mode 100644 index 9d604b86..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-jal.dump +++ /dev/null @@ -1,153 +0,0 @@ - -rv32ui-p-jal: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000093 li ra,0 -80000110: 0100026f jal tp,80000120 - -80000114 : -80000114: 00000013 nop -80000118: 00000013 nop -8000011c: 0400006f j 8000015c - -80000120 : -80000120: 00000117 auipc sp,0x0 -80000124: ff410113 addi sp,sp,-12 # 80000114 -80000128: 02411a63 bne sp,tp,8000015c - -8000012c : -8000012c: 00100093 li ra,1 -80000130: 0140006f j 80000144 -80000134: 00108093 addi ra,ra,1 -80000138: 00108093 addi ra,ra,1 -8000013c: 00108093 addi ra,ra,1 -80000140: 00108093 addi ra,ra,1 -80000144: 00108093 addi ra,ra,1 -80000148: 00108093 addi ra,ra,1 -8000014c: 00300e93 li t4,3 -80000150: 00300193 li gp,3 -80000154: 01d09463 bne ra,t4,8000015c -80000158: 02301063 bne zero,gp,80000178 - -8000015c : -8000015c: 0ff0000f fence -80000160: 00018063 beqz gp,80000160 -80000164: 00119193 slli gp,gp,0x1 -80000168: 0011e193 ori gp,gp,1 -8000016c: 05d00893 li a7,93 -80000170: 00018513 mv a0,gp -80000174: 00000073 ecall - -80000178 : -80000178: 0ff0000f fence -8000017c: 00100193 li gp,1 -80000180: 05d00893 li a7,93 -80000184: 00000513 li a0,0 -80000188: 00000073 ecall -8000018c: c0001073 unimp -80000190: 0000 unimp -80000192: 0000 unimp -80000194: 0000 unimp -80000196: 0000 unimp -80000198: 0000 unimp -8000019a: 0000 unimp -8000019c: 0000 unimp -8000019e: 0000 unimp -800001a0: 0000 unimp -800001a2: 0000 unimp -800001a4: 0000 unimp -800001a6: 0000 unimp -800001a8: 0000 unimp -800001aa: 0000 unimp -800001ac: 0000 unimp -800001ae: 0000 unimp -800001b0: 0000 unimp -800001b2: 0000 unimp -800001b4: 0000 unimp -800001b6: 0000 unimp -800001b8: 0000 unimp -800001ba: 0000 unimp -800001bc: 0000 unimp -800001be: 0000 unimp -800001c0: 0000 unimp -800001c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-jalr.dump b/benchmarks/riscv_tests/rv32ui-p-jalr.dump deleted file mode 100644 index 91db4db7..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-jalr.dump +++ /dev/null @@ -1,191 +0,0 @@ - -rv32ui-p-jalr: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00200193 li gp,2 -8000010c: 00000293 li t0,0 -80000110: 00000317 auipc t1,0x0 -80000114: 01030313 addi t1,t1,16 # 80000120 -80000118: 000302e7 jalr t0,t1 - -8000011c : -8000011c: 0c00006f j 800001dc - -80000120 : -80000120: 00000317 auipc t1,0x0 -80000124: ffc30313 addi t1,t1,-4 # 8000011c -80000128: 0a629a63 bne t0,t1,800001dc - -8000012c : -8000012c: 00400193 li gp,4 -80000130: 00000213 li tp,0 -80000134: 00000317 auipc t1,0x0 -80000138: 01030313 addi t1,t1,16 # 80000144 -8000013c: 000306e7 jalr a3,t1 -80000140: 08301e63 bne zero,gp,800001dc -80000144: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000148: 00200293 li t0,2 -8000014c: fe5214e3 bne tp,t0,80000134 - -80000150 : -80000150: 00500193 li gp,5 -80000154: 00000213 li tp,0 -80000158: 00000317 auipc t1,0x0 -8000015c: 01430313 addi t1,t1,20 # 8000016c -80000160: 00000013 nop -80000164: 000306e7 jalr a3,t1 -80000168: 06301a63 bne zero,gp,800001dc -8000016c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000170: 00200293 li t0,2 -80000174: fe5212e3 bne tp,t0,80000158 - -80000178 : -80000178: 00600193 li gp,6 -8000017c: 00000213 li tp,0 -80000180: 00000317 auipc t1,0x0 -80000184: 01830313 addi t1,t1,24 # 80000198 -80000188: 00000013 nop -8000018c: 00000013 nop -80000190: 000306e7 jalr a3,t1 -80000194: 04301463 bne zero,gp,800001dc -80000198: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000019c: 00200293 li t0,2 -800001a0: fe5210e3 bne tp,t0,80000180 - -800001a4 : -800001a4: 00100293 li t0,1 -800001a8: 00000317 auipc t1,0x0 -800001ac: 01c30313 addi t1,t1,28 # 800001c4 -800001b0: ffc30067 jr -4(t1) -800001b4: 00128293 addi t0,t0,1 -800001b8: 00128293 addi t0,t0,1 -800001bc: 00128293 addi t0,t0,1 -800001c0: 00128293 addi t0,t0,1 -800001c4: 00128293 addi t0,t0,1 -800001c8: 00128293 addi t0,t0,1 -800001cc: 00400e93 li t4,4 -800001d0: 00700193 li gp,7 -800001d4: 01d29463 bne t0,t4,800001dc -800001d8: 02301063 bne zero,gp,800001f8 - -800001dc : -800001dc: 0ff0000f fence -800001e0: 00018063 beqz gp,800001e0 -800001e4: 00119193 slli gp,gp,0x1 -800001e8: 0011e193 ori gp,gp,1 -800001ec: 05d00893 li a7,93 -800001f0: 00018513 mv a0,gp -800001f4: 00000073 ecall - -800001f8 : -800001f8: 0ff0000f fence -800001fc: 00100193 li gp,1 -80000200: 05d00893 li a7,93 -80000204: 00000513 li a0,0 -80000208: 00000073 ecall -8000020c: c0001073 unimp -80000210: 0000 unimp -80000212: 0000 unimp -80000214: 0000 unimp -80000216: 0000 unimp -80000218: 0000 unimp -8000021a: 0000 unimp -8000021c: 0000 unimp -8000021e: 0000 unimp -80000220: 0000 unimp -80000222: 0000 unimp -80000224: 0000 unimp -80000226: 0000 unimp -80000228: 0000 unimp -8000022a: 0000 unimp -8000022c: 0000 unimp -8000022e: 0000 unimp -80000230: 0000 unimp -80000232: 0000 unimp -80000234: 0000 unimp -80000236: 0000 unimp -80000238: 0000 unimp -8000023a: 0000 unimp -8000023c: 0000 unimp -8000023e: 0000 unimp -80000240: 0000 unimp -80000242: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-lb.dump b/benchmarks/riscv_tests/rv32ui-p-lb.dump deleted file mode 100644 index 522d0b8b..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-lb.dump +++ /dev/null @@ -1,331 +0,0 @@ - -rv32ui-p-lb: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: 00008703 lb a4,0(ra) -80000114: fff00e93 li t4,-1 -80000118: 00200193 li gp,2 -8000011c: 23d71c63 bne a4,t4,80000354 - -80000120 : -80000120: 00002097 auipc ra,0x2 -80000124: ee008093 addi ra,ra,-288 # 80002000 -80000128: 00108703 lb a4,1(ra) -8000012c: 00000e93 li t4,0 -80000130: 00300193 li gp,3 -80000134: 23d71063 bne a4,t4,80000354 - -80000138 : -80000138: 00002097 auipc ra,0x2 -8000013c: ec808093 addi ra,ra,-312 # 80002000 -80000140: 00208703 lb a4,2(ra) -80000144: ff000e93 li t4,-16 -80000148: 00400193 li gp,4 -8000014c: 21d71463 bne a4,t4,80000354 - -80000150 : -80000150: 00002097 auipc ra,0x2 -80000154: eb008093 addi ra,ra,-336 # 80002000 -80000158: 00308703 lb a4,3(ra) -8000015c: 00f00e93 li t4,15 -80000160: 00500193 li gp,5 -80000164: 1fd71863 bne a4,t4,80000354 - -80000168 : -80000168: 00002097 auipc ra,0x2 -8000016c: e9b08093 addi ra,ra,-357 # 80002003 -80000170: ffd08703 lb a4,-3(ra) -80000174: fff00e93 li t4,-1 -80000178: 00600193 li gp,6 -8000017c: 1dd71c63 bne a4,t4,80000354 - -80000180 : -80000180: 00002097 auipc ra,0x2 -80000184: e8308093 addi ra,ra,-381 # 80002003 -80000188: ffe08703 lb a4,-2(ra) -8000018c: 00000e93 li t4,0 -80000190: 00700193 li gp,7 -80000194: 1dd71063 bne a4,t4,80000354 - -80000198 : -80000198: 00002097 auipc ra,0x2 -8000019c: e6b08093 addi ra,ra,-405 # 80002003 -800001a0: fff08703 lb a4,-1(ra) -800001a4: ff000e93 li t4,-16 -800001a8: 00800193 li gp,8 -800001ac: 1bd71463 bne a4,t4,80000354 - -800001b0 : -800001b0: 00002097 auipc ra,0x2 -800001b4: e5308093 addi ra,ra,-429 # 80002003 -800001b8: 00008703 lb a4,0(ra) -800001bc: 00f00e93 li t4,15 -800001c0: 00900193 li gp,9 -800001c4: 19d71863 bne a4,t4,80000354 - -800001c8 : -800001c8: 00002097 auipc ra,0x2 -800001cc: e3808093 addi ra,ra,-456 # 80002000 -800001d0: fe008093 addi ra,ra,-32 -800001d4: 02008283 lb t0,32(ra) -800001d8: fff00e93 li t4,-1 -800001dc: 00a00193 li gp,10 -800001e0: 17d29a63 bne t0,t4,80000354 - -800001e4 : -800001e4: 00002097 auipc ra,0x2 -800001e8: e1c08093 addi ra,ra,-484 # 80002000 -800001ec: ffa08093 addi ra,ra,-6 -800001f0: 00708283 lb t0,7(ra) -800001f4: 00000e93 li t4,0 -800001f8: 00b00193 li gp,11 -800001fc: 15d29c63 bne t0,t4,80000354 - -80000200 : -80000200: 00c00193 li gp,12 -80000204: 00000213 li tp,0 -80000208: 00002097 auipc ra,0x2 -8000020c: df908093 addi ra,ra,-519 # 80002001 -80000210: 00108703 lb a4,1(ra) -80000214: 00070313 mv t1,a4 -80000218: ff000e93 li t4,-16 -8000021c: 13d31c63 bne t1,t4,80000354 -80000220: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000224: 00200293 li t0,2 -80000228: fe5210e3 bne tp,t0,80000208 - -8000022c : -8000022c: 00d00193 li gp,13 -80000230: 00000213 li tp,0 -80000234: 00002097 auipc ra,0x2 -80000238: dce08093 addi ra,ra,-562 # 80002002 -8000023c: 00108703 lb a4,1(ra) -80000240: 00000013 nop -80000244: 00070313 mv t1,a4 -80000248: 00f00e93 li t4,15 -8000024c: 11d31463 bne t1,t4,80000354 -80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000254: 00200293 li t0,2 -80000258: fc521ee3 bne tp,t0,80000234 - -8000025c : -8000025c: 00e00193 li gp,14 -80000260: 00000213 li tp,0 -80000264: 00002097 auipc ra,0x2 -80000268: d9c08093 addi ra,ra,-612 # 80002000 -8000026c: 00108703 lb a4,1(ra) -80000270: 00000013 nop -80000274: 00000013 nop -80000278: 00070313 mv t1,a4 -8000027c: 00000e93 li t4,0 -80000280: 0dd31a63 bne t1,t4,80000354 -80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000288: 00200293 li t0,2 -8000028c: fc521ce3 bne tp,t0,80000264 - -80000290 : -80000290: 00f00193 li gp,15 -80000294: 00000213 li tp,0 -80000298: 00002097 auipc ra,0x2 -8000029c: d6908093 addi ra,ra,-663 # 80002001 -800002a0: 00108703 lb a4,1(ra) -800002a4: ff000e93 li t4,-16 -800002a8: 0bd71663 bne a4,t4,80000354 -800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b0: 00200293 li t0,2 -800002b4: fe5212e3 bne tp,t0,80000298 - -800002b8 : -800002b8: 01000193 li gp,16 -800002bc: 00000213 li tp,0 -800002c0: 00002097 auipc ra,0x2 -800002c4: d4208093 addi ra,ra,-702 # 80002002 -800002c8: 00000013 nop -800002cc: 00108703 lb a4,1(ra) -800002d0: 00f00e93 li t4,15 -800002d4: 09d71063 bne a4,t4,80000354 -800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002dc: 00200293 li t0,2 -800002e0: fe5210e3 bne tp,t0,800002c0 - -800002e4 : -800002e4: 01100193 li gp,17 -800002e8: 00000213 li tp,0 -800002ec: 00002097 auipc ra,0x2 -800002f0: d1408093 addi ra,ra,-748 # 80002000 -800002f4: 00000013 nop -800002f8: 00000013 nop -800002fc: 00108703 lb a4,1(ra) -80000300: 00000e93 li t4,0 -80000304: 05d71863 bne a4,t4,80000354 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fc521ee3 bne tp,t0,800002ec - -80000314 : -80000314: 00002297 auipc t0,0x2 -80000318: cec28293 addi t0,t0,-788 # 80002000 -8000031c: 00028103 lb sp,0(t0) -80000320: 00200113 li sp,2 -80000324: 00200e93 li t4,2 -80000328: 01200193 li gp,18 -8000032c: 03d11463 bne sp,t4,80000354 - -80000330 : -80000330: 00002297 auipc t0,0x2 -80000334: cd028293 addi t0,t0,-816 # 80002000 -80000338: 00028103 lb sp,0(t0) -8000033c: 00000013 nop -80000340: 00200113 li sp,2 -80000344: 00200e93 li t4,2 -80000348: 01300193 li gp,19 -8000034c: 01d11463 bne sp,t4,80000354 -80000350: 02301063 bne zero,gp,80000370 - -80000354 : -80000354: 0ff0000f fence -80000358: 00018063 beqz gp,80000358 -8000035c: 00119193 slli gp,gp,0x1 -80000360: 0011e193 ori gp,gp,1 -80000364: 05d00893 li a7,93 -80000368: 00018513 mv a0,gp -8000036c: 00000073 ecall - -80000370 : -80000370: 0ff0000f fence -80000374: 00100193 li gp,1 -80000378: 05d00893 li a7,93 -8000037c: 00000513 li a0,0 -80000380: 00000073 ecall -80000384: c0001073 unimp -80000388: 0000 unimp -8000038a: 0000 unimp -8000038c: 0000 unimp -8000038e: 0000 unimp -80000390: 0000 unimp -80000392: 0000 unimp -80000394: 0000 unimp -80000396: 0000 unimp -80000398: 0000 unimp -8000039a: 0000 unimp -8000039c: 0000 unimp -8000039e: 0000 unimp -800003a0: 0000 unimp -800003a2: 0000 unimp -800003a4: 0000 unimp -800003a6: 0000 unimp -800003a8: 0000 unimp -800003aa: 0000 unimp -800003ac: 0000 unimp -800003ae: 0000 unimp -800003b0: 0000 unimp -800003b2: 0000 unimp -800003b4: 0000 unimp -800003b6: 0000 unimp -800003b8: 0000 unimp -800003ba: 0000 unimp -800003bc: 0000 unimp -800003be: 0000 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: 0xff - -80002001 : -80002001: fsw fs0,32(s0) - -80002002 : -80002002: addi a2,sp,988 - -80002003 : -80002003: 0000000f fence unknown,unknown -80002007: 0000 unimp -80002009: 0000 unimp -8000200b: 0000 unimp -8000200d: 0000 unimp -8000200f: 00 Address 0x000000008000200f is out of bounds. - diff --git a/benchmarks/riscv_tests/rv32ui-p-lbu.dump b/benchmarks/riscv_tests/rv32ui-p-lbu.dump deleted file mode 100644 index d30228b1..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-lbu.dump +++ /dev/null @@ -1,331 +0,0 @@ - -rv32ui-p-lbu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: 0000c703 lbu a4,0(ra) -80000114: 0ff00e93 li t4,255 -80000118: 00200193 li gp,2 -8000011c: 23d71c63 bne a4,t4,80000354 - -80000120 : -80000120: 00002097 auipc ra,0x2 -80000124: ee008093 addi ra,ra,-288 # 80002000 -80000128: 0010c703 lbu a4,1(ra) -8000012c: 00000e93 li t4,0 -80000130: 00300193 li gp,3 -80000134: 23d71063 bne a4,t4,80000354 - -80000138 : -80000138: 00002097 auipc ra,0x2 -8000013c: ec808093 addi ra,ra,-312 # 80002000 -80000140: 0020c703 lbu a4,2(ra) -80000144: 0f000e93 li t4,240 -80000148: 00400193 li gp,4 -8000014c: 21d71463 bne a4,t4,80000354 - -80000150 : -80000150: 00002097 auipc ra,0x2 -80000154: eb008093 addi ra,ra,-336 # 80002000 -80000158: 0030c703 lbu a4,3(ra) -8000015c: 00f00e93 li t4,15 -80000160: 00500193 li gp,5 -80000164: 1fd71863 bne a4,t4,80000354 - -80000168 : -80000168: 00002097 auipc ra,0x2 -8000016c: e9b08093 addi ra,ra,-357 # 80002003 -80000170: ffd0c703 lbu a4,-3(ra) -80000174: 0ff00e93 li t4,255 -80000178: 00600193 li gp,6 -8000017c: 1dd71c63 bne a4,t4,80000354 - -80000180 : -80000180: 00002097 auipc ra,0x2 -80000184: e8308093 addi ra,ra,-381 # 80002003 -80000188: ffe0c703 lbu a4,-2(ra) -8000018c: 00000e93 li t4,0 -80000190: 00700193 li gp,7 -80000194: 1dd71063 bne a4,t4,80000354 - -80000198 : -80000198: 00002097 auipc ra,0x2 -8000019c: e6b08093 addi ra,ra,-405 # 80002003 -800001a0: fff0c703 lbu a4,-1(ra) -800001a4: 0f000e93 li t4,240 -800001a8: 00800193 li gp,8 -800001ac: 1bd71463 bne a4,t4,80000354 - -800001b0 : -800001b0: 00002097 auipc ra,0x2 -800001b4: e5308093 addi ra,ra,-429 # 80002003 -800001b8: 0000c703 lbu a4,0(ra) -800001bc: 00f00e93 li t4,15 -800001c0: 00900193 li gp,9 -800001c4: 19d71863 bne a4,t4,80000354 - -800001c8 : -800001c8: 00002097 auipc ra,0x2 -800001cc: e3808093 addi ra,ra,-456 # 80002000 -800001d0: fe008093 addi ra,ra,-32 -800001d4: 0200c283 lbu t0,32(ra) -800001d8: 0ff00e93 li t4,255 -800001dc: 00a00193 li gp,10 -800001e0: 17d29a63 bne t0,t4,80000354 - -800001e4 : -800001e4: 00002097 auipc ra,0x2 -800001e8: e1c08093 addi ra,ra,-484 # 80002000 -800001ec: ffa08093 addi ra,ra,-6 -800001f0: 0070c283 lbu t0,7(ra) -800001f4: 00000e93 li t4,0 -800001f8: 00b00193 li gp,11 -800001fc: 15d29c63 bne t0,t4,80000354 - -80000200 : -80000200: 00c00193 li gp,12 -80000204: 00000213 li tp,0 -80000208: 00002097 auipc ra,0x2 -8000020c: df908093 addi ra,ra,-519 # 80002001 -80000210: 0010c703 lbu a4,1(ra) -80000214: 00070313 mv t1,a4 -80000218: 0f000e93 li t4,240 -8000021c: 13d31c63 bne t1,t4,80000354 -80000220: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000224: 00200293 li t0,2 -80000228: fe5210e3 bne tp,t0,80000208 - -8000022c : -8000022c: 00d00193 li gp,13 -80000230: 00000213 li tp,0 -80000234: 00002097 auipc ra,0x2 -80000238: dce08093 addi ra,ra,-562 # 80002002 -8000023c: 0010c703 lbu a4,1(ra) -80000240: 00000013 nop -80000244: 00070313 mv t1,a4 -80000248: 00f00e93 li t4,15 -8000024c: 11d31463 bne t1,t4,80000354 -80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000254: 00200293 li t0,2 -80000258: fc521ee3 bne tp,t0,80000234 - -8000025c : -8000025c: 00e00193 li gp,14 -80000260: 00000213 li tp,0 -80000264: 00002097 auipc ra,0x2 -80000268: d9c08093 addi ra,ra,-612 # 80002000 -8000026c: 0010c703 lbu a4,1(ra) -80000270: 00000013 nop -80000274: 00000013 nop -80000278: 00070313 mv t1,a4 -8000027c: 00000e93 li t4,0 -80000280: 0dd31a63 bne t1,t4,80000354 -80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000288: 00200293 li t0,2 -8000028c: fc521ce3 bne tp,t0,80000264 - -80000290 : -80000290: 00f00193 li gp,15 -80000294: 00000213 li tp,0 -80000298: 00002097 auipc ra,0x2 -8000029c: d6908093 addi ra,ra,-663 # 80002001 -800002a0: 0010c703 lbu a4,1(ra) -800002a4: 0f000e93 li t4,240 -800002a8: 0bd71663 bne a4,t4,80000354 -800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b0: 00200293 li t0,2 -800002b4: fe5212e3 bne tp,t0,80000298 - -800002b8 : -800002b8: 01000193 li gp,16 -800002bc: 00000213 li tp,0 -800002c0: 00002097 auipc ra,0x2 -800002c4: d4208093 addi ra,ra,-702 # 80002002 -800002c8: 00000013 nop -800002cc: 0010c703 lbu a4,1(ra) -800002d0: 00f00e93 li t4,15 -800002d4: 09d71063 bne a4,t4,80000354 -800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002dc: 00200293 li t0,2 -800002e0: fe5210e3 bne tp,t0,800002c0 - -800002e4 : -800002e4: 01100193 li gp,17 -800002e8: 00000213 li tp,0 -800002ec: 00002097 auipc ra,0x2 -800002f0: d1408093 addi ra,ra,-748 # 80002000 -800002f4: 00000013 nop -800002f8: 00000013 nop -800002fc: 0010c703 lbu a4,1(ra) -80000300: 00000e93 li t4,0 -80000304: 05d71863 bne a4,t4,80000354 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fc521ee3 bne tp,t0,800002ec - -80000314 : -80000314: 00002297 auipc t0,0x2 -80000318: cec28293 addi t0,t0,-788 # 80002000 -8000031c: 0002c103 lbu sp,0(t0) -80000320: 00200113 li sp,2 -80000324: 00200e93 li t4,2 -80000328: 01200193 li gp,18 -8000032c: 03d11463 bne sp,t4,80000354 - -80000330 : -80000330: 00002297 auipc t0,0x2 -80000334: cd028293 addi t0,t0,-816 # 80002000 -80000338: 0002c103 lbu sp,0(t0) -8000033c: 00000013 nop -80000340: 00200113 li sp,2 -80000344: 00200e93 li t4,2 -80000348: 01300193 li gp,19 -8000034c: 01d11463 bne sp,t4,80000354 -80000350: 02301063 bne zero,gp,80000370 - -80000354 : -80000354: 0ff0000f fence -80000358: 00018063 beqz gp,80000358 -8000035c: 00119193 slli gp,gp,0x1 -80000360: 0011e193 ori gp,gp,1 -80000364: 05d00893 li a7,93 -80000368: 00018513 mv a0,gp -8000036c: 00000073 ecall - -80000370 : -80000370: 0ff0000f fence -80000374: 00100193 li gp,1 -80000378: 05d00893 li a7,93 -8000037c: 00000513 li a0,0 -80000380: 00000073 ecall -80000384: c0001073 unimp -80000388: 0000 unimp -8000038a: 0000 unimp -8000038c: 0000 unimp -8000038e: 0000 unimp -80000390: 0000 unimp -80000392: 0000 unimp -80000394: 0000 unimp -80000396: 0000 unimp -80000398: 0000 unimp -8000039a: 0000 unimp -8000039c: 0000 unimp -8000039e: 0000 unimp -800003a0: 0000 unimp -800003a2: 0000 unimp -800003a4: 0000 unimp -800003a6: 0000 unimp -800003a8: 0000 unimp -800003aa: 0000 unimp -800003ac: 0000 unimp -800003ae: 0000 unimp -800003b0: 0000 unimp -800003b2: 0000 unimp -800003b4: 0000 unimp -800003b6: 0000 unimp -800003b8: 0000 unimp -800003ba: 0000 unimp -800003bc: 0000 unimp -800003be: 0000 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: 0xff - -80002001 : -80002001: fsw fs0,32(s0) - -80002002 : -80002002: addi a2,sp,988 - -80002003 : -80002003: 0000000f fence unknown,unknown -80002007: 0000 unimp -80002009: 0000 unimp -8000200b: 0000 unimp -8000200d: 0000 unimp -8000200f: 00 Address 0x000000008000200f is out of bounds. - diff --git a/benchmarks/riscv_tests/rv32ui-p-lh.dump b/benchmarks/riscv_tests/rv32ui-p-lh.dump deleted file mode 100644 index 8386dbe9..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-lh.dump +++ /dev/null @@ -1,320 +0,0 @@ - -rv32ui-p-lh: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: 00009703 lh a4,0(ra) -80000114: 0ff00e93 li t4,255 -80000118: 00200193 li gp,2 -8000011c: 25d71c63 bne a4,t4,80000374 - -80000120 : -80000120: 00002097 auipc ra,0x2 -80000124: ee008093 addi ra,ra,-288 # 80002000 -80000128: 00209703 lh a4,2(ra) -8000012c: f0000e93 li t4,-256 -80000130: 00300193 li gp,3 -80000134: 25d71063 bne a4,t4,80000374 - -80000138 : -80000138: 00002097 auipc ra,0x2 -8000013c: ec808093 addi ra,ra,-312 # 80002000 -80000140: 00409703 lh a4,4(ra) -80000144: 00001eb7 lui t4,0x1 -80000148: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -8000014c: 00400193 li gp,4 -80000150: 23d71263 bne a4,t4,80000374 - -80000154 : -80000154: 00002097 auipc ra,0x2 -80000158: eac08093 addi ra,ra,-340 # 80002000 -8000015c: 00609703 lh a4,6(ra) -80000160: fffffeb7 lui t4,0xfffff -80000164: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> -80000168: 00500193 li gp,5 -8000016c: 21d71463 bne a4,t4,80000374 - -80000170 : -80000170: 00002097 auipc ra,0x2 -80000174: e9608093 addi ra,ra,-362 # 80002006 -80000178: ffa09703 lh a4,-6(ra) -8000017c: 0ff00e93 li t4,255 -80000180: 00600193 li gp,6 -80000184: 1fd71863 bne a4,t4,80000374 - -80000188 : -80000188: 00002097 auipc ra,0x2 -8000018c: e7e08093 addi ra,ra,-386 # 80002006 -80000190: ffc09703 lh a4,-4(ra) -80000194: f0000e93 li t4,-256 -80000198: 00700193 li gp,7 -8000019c: 1dd71c63 bne a4,t4,80000374 - -800001a0 : -800001a0: 00002097 auipc ra,0x2 -800001a4: e6608093 addi ra,ra,-410 # 80002006 -800001a8: ffe09703 lh a4,-2(ra) -800001ac: 00001eb7 lui t4,0x1 -800001b0: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -800001b4: 00800193 li gp,8 -800001b8: 1bd71e63 bne a4,t4,80000374 - -800001bc : -800001bc: 00002097 auipc ra,0x2 -800001c0: e4a08093 addi ra,ra,-438 # 80002006 -800001c4: 00009703 lh a4,0(ra) -800001c8: fffffeb7 lui t4,0xfffff -800001cc: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> -800001d0: 00900193 li gp,9 -800001d4: 1bd71063 bne a4,t4,80000374 - -800001d8 : -800001d8: 00002097 auipc ra,0x2 -800001dc: e2808093 addi ra,ra,-472 # 80002000 -800001e0: fe008093 addi ra,ra,-32 -800001e4: 02009283 lh t0,32(ra) -800001e8: 0ff00e93 li t4,255 -800001ec: 00a00193 li gp,10 -800001f0: 19d29263 bne t0,t4,80000374 - -800001f4 : -800001f4: 00002097 auipc ra,0x2 -800001f8: e0c08093 addi ra,ra,-500 # 80002000 -800001fc: ffb08093 addi ra,ra,-5 -80000200: 00709283 lh t0,7(ra) -80000204: f0000e93 li t4,-256 -80000208: 00b00193 li gp,11 -8000020c: 17d29463 bne t0,t4,80000374 - -80000210 : -80000210: 00c00193 li gp,12 -80000214: 00000213 li tp,0 -80000218: 00002097 auipc ra,0x2 -8000021c: dea08093 addi ra,ra,-534 # 80002002 -80000220: 00209703 lh a4,2(ra) -80000224: 00070313 mv t1,a4 -80000228: 00001eb7 lui t4,0x1 -8000022c: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -80000230: 15d31263 bne t1,t4,80000374 -80000234: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000238: 00200293 li t0,2 -8000023c: fc521ee3 bne tp,t0,80000218 - -80000240 : -80000240: 00d00193 li gp,13 -80000244: 00000213 li tp,0 -80000248: 00002097 auipc ra,0x2 -8000024c: dbc08093 addi ra,ra,-580 # 80002004 -80000250: 00209703 lh a4,2(ra) -80000254: 00000013 nop -80000258: 00070313 mv t1,a4 -8000025c: fffffeb7 lui t4,0xfffff -80000260: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> -80000264: 11d31863 bne t1,t4,80000374 -80000268: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000026c: 00200293 li t0,2 -80000270: fc521ce3 bne tp,t0,80000248 - -80000274 : -80000274: 00e00193 li gp,14 -80000278: 00000213 li tp,0 -8000027c: 00002097 auipc ra,0x2 -80000280: d8408093 addi ra,ra,-636 # 80002000 -80000284: 00209703 lh a4,2(ra) -80000288: 00000013 nop -8000028c: 00000013 nop -80000290: 00070313 mv t1,a4 -80000294: f0000e93 li t4,-256 -80000298: 0dd31e63 bne t1,t4,80000374 -8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a0: 00200293 li t0,2 -800002a4: fc521ce3 bne tp,t0,8000027c - -800002a8 : -800002a8: 00f00193 li gp,15 -800002ac: 00000213 li tp,0 -800002b0: 00002097 auipc ra,0x2 -800002b4: d5208093 addi ra,ra,-686 # 80002002 -800002b8: 00209703 lh a4,2(ra) -800002bc: 00001eb7 lui t4,0x1 -800002c0: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -800002c4: 0bd71863 bne a4,t4,80000374 -800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002cc: 00200293 li t0,2 -800002d0: fe5210e3 bne tp,t0,800002b0 - -800002d4 : -800002d4: 01000193 li gp,16 -800002d8: 00000213 li tp,0 -800002dc: 00002097 auipc ra,0x2 -800002e0: d2808093 addi ra,ra,-728 # 80002004 -800002e4: 00000013 nop -800002e8: 00209703 lh a4,2(ra) -800002ec: fffffeb7 lui t4,0xfffff -800002f0: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> -800002f4: 09d71063 bne a4,t4,80000374 -800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002fc: 00200293 li t0,2 -80000300: fc521ee3 bne tp,t0,800002dc - -80000304 : -80000304: 01100193 li gp,17 -80000308: 00000213 li tp,0 -8000030c: 00002097 auipc ra,0x2 -80000310: cf408093 addi ra,ra,-780 # 80002000 -80000314: 00000013 nop -80000318: 00000013 nop -8000031c: 00209703 lh a4,2(ra) -80000320: f0000e93 li t4,-256 -80000324: 05d71863 bne a4,t4,80000374 -80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000032c: 00200293 li t0,2 -80000330: fc521ee3 bne tp,t0,8000030c - -80000334 : -80000334: 00002297 auipc t0,0x2 -80000338: ccc28293 addi t0,t0,-820 # 80002000 -8000033c: 00029103 lh sp,0(t0) -80000340: 00200113 li sp,2 -80000344: 00200e93 li t4,2 -80000348: 01200193 li gp,18 -8000034c: 03d11463 bne sp,t4,80000374 - -80000350 : -80000350: 00002297 auipc t0,0x2 -80000354: cb028293 addi t0,t0,-848 # 80002000 -80000358: 00029103 lh sp,0(t0) -8000035c: 00000013 nop -80000360: 00200113 li sp,2 -80000364: 00200e93 li t4,2 -80000368: 01300193 li gp,19 -8000036c: 01d11463 bne sp,t4,80000374 -80000370: 02301063 bne zero,gp,80000390 - -80000374 : -80000374: 0ff0000f fence -80000378: 00018063 beqz gp,80000378 -8000037c: 00119193 slli gp,gp,0x1 -80000380: 0011e193 ori gp,gp,1 -80000384: 05d00893 li a7,93 -80000388: 00018513 mv a0,gp -8000038c: 00000073 ecall - -80000390 : -80000390: 0ff0000f fence -80000394: 00100193 li gp,1 -80000398: 05d00893 li a7,93 -8000039c: 00000513 li a0,0 -800003a0: 00000073 ecall -800003a4: c0001073 unimp -800003a8: 0000 unimp -800003aa: 0000 unimp -800003ac: 0000 unimp -800003ae: 0000 unimp -800003b0: 0000 unimp -800003b2: 0000 unimp -800003b4: 0000 unimp -800003b6: 0000 unimp -800003b8: 0000 unimp -800003ba: 0000 unimp -800003bc: 0000 unimp -800003be: 0000 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: 00ff 0xff - -80002002 : -80002002: ff00 fsw fs0,56(a4) - -80002004 : -80002004: 0ff0 addi a2,sp,988 - -80002006 : -80002006: 0000f00f 0xf00f -8000200a: 0000 unimp -8000200c: 0000 unimp -8000200e: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-lhu.dump b/benchmarks/riscv_tests/rv32ui-p-lhu.dump deleted file mode 100644 index 68b4f089..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-lhu.dump +++ /dev/null @@ -1,315 +0,0 @@ - -rv32ui-p-lhu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: 0000d703 lhu a4,0(ra) -80000114: 0ff00e93 li t4,255 -80000118: 00200193 li gp,2 -8000011c: 27d71663 bne a4,t4,80000388 - -80000120 : -80000120: 00002097 auipc ra,0x2 -80000124: ee008093 addi ra,ra,-288 # 80002000 -80000128: 0020d703 lhu a4,2(ra) -8000012c: 00010eb7 lui t4,0x10 -80000130: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> -80000134: 00300193 li gp,3 -80000138: 25d71863 bne a4,t4,80000388 - -8000013c : -8000013c: 00002097 auipc ra,0x2 -80000140: ec408093 addi ra,ra,-316 # 80002000 -80000144: 0040d703 lhu a4,4(ra) -80000148: 00001eb7 lui t4,0x1 -8000014c: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -80000150: 00400193 li gp,4 -80000154: 23d71a63 bne a4,t4,80000388 - -80000158 : -80000158: 00002097 auipc ra,0x2 -8000015c: ea808093 addi ra,ra,-344 # 80002000 -80000160: 0060d703 lhu a4,6(ra) -80000164: 0000feb7 lui t4,0xf -80000168: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> -8000016c: 00500193 li gp,5 -80000170: 21d71c63 bne a4,t4,80000388 - -80000174 : -80000174: 00002097 auipc ra,0x2 -80000178: e9208093 addi ra,ra,-366 # 80002006 -8000017c: ffa0d703 lhu a4,-6(ra) -80000180: 0ff00e93 li t4,255 -80000184: 00600193 li gp,6 -80000188: 21d71063 bne a4,t4,80000388 - -8000018c : -8000018c: 00002097 auipc ra,0x2 -80000190: e7a08093 addi ra,ra,-390 # 80002006 -80000194: ffc0d703 lhu a4,-4(ra) -80000198: 00010eb7 lui t4,0x10 -8000019c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> -800001a0: 00700193 li gp,7 -800001a4: 1fd71263 bne a4,t4,80000388 - -800001a8 : -800001a8: 00002097 auipc ra,0x2 -800001ac: e5e08093 addi ra,ra,-418 # 80002006 -800001b0: ffe0d703 lhu a4,-2(ra) -800001b4: 00001eb7 lui t4,0x1 -800001b8: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -800001bc: 00800193 li gp,8 -800001c0: 1dd71463 bne a4,t4,80000388 - -800001c4 : -800001c4: 00002097 auipc ra,0x2 -800001c8: e4208093 addi ra,ra,-446 # 80002006 -800001cc: 0000d703 lhu a4,0(ra) -800001d0: 0000feb7 lui t4,0xf -800001d4: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> -800001d8: 00900193 li gp,9 -800001dc: 1bd71663 bne a4,t4,80000388 - -800001e0 : -800001e0: 00002097 auipc ra,0x2 -800001e4: e2008093 addi ra,ra,-480 # 80002000 -800001e8: fe008093 addi ra,ra,-32 -800001ec: 0200d283 lhu t0,32(ra) -800001f0: 0ff00e93 li t4,255 -800001f4: 00a00193 li gp,10 -800001f8: 19d29863 bne t0,t4,80000388 - -800001fc : -800001fc: 00002097 auipc ra,0x2 -80000200: e0408093 addi ra,ra,-508 # 80002000 -80000204: ffb08093 addi ra,ra,-5 -80000208: 0070d283 lhu t0,7(ra) -8000020c: 00010eb7 lui t4,0x10 -80000210: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> -80000214: 00b00193 li gp,11 -80000218: 17d29863 bne t0,t4,80000388 - -8000021c : -8000021c: 00c00193 li gp,12 -80000220: 00000213 li tp,0 -80000224: 00002097 auipc ra,0x2 -80000228: dde08093 addi ra,ra,-546 # 80002002 -8000022c: 0020d703 lhu a4,2(ra) -80000230: 00070313 mv t1,a4 -80000234: 00001eb7 lui t4,0x1 -80000238: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -8000023c: 15d31663 bne t1,t4,80000388 -80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000244: 00200293 li t0,2 -80000248: fc521ee3 bne tp,t0,80000224 - -8000024c : -8000024c: 00d00193 li gp,13 -80000250: 00000213 li tp,0 -80000254: 00002097 auipc ra,0x2 -80000258: db008093 addi ra,ra,-592 # 80002004 -8000025c: 0020d703 lhu a4,2(ra) -80000260: 00000013 nop -80000264: 00070313 mv t1,a4 -80000268: 0000feb7 lui t4,0xf -8000026c: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> -80000270: 11d31c63 bne t1,t4,80000388 -80000274: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000278: 00200293 li t0,2 -8000027c: fc521ce3 bne tp,t0,80000254 - -80000280 : -80000280: 00e00193 li gp,14 -80000284: 00000213 li tp,0 -80000288: 00002097 auipc ra,0x2 -8000028c: d7808093 addi ra,ra,-648 # 80002000 -80000290: 0020d703 lhu a4,2(ra) -80000294: 00000013 nop -80000298: 00000013 nop -8000029c: 00070313 mv t1,a4 -800002a0: 00010eb7 lui t4,0x10 -800002a4: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> -800002a8: 0fd31063 bne t1,t4,80000388 -800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b0: 00200293 li t0,2 -800002b4: fc521ae3 bne tp,t0,80000288 - -800002b8 : -800002b8: 00f00193 li gp,15 -800002bc: 00000213 li tp,0 -800002c0: 00002097 auipc ra,0x2 -800002c4: d4208093 addi ra,ra,-702 # 80002002 -800002c8: 0020d703 lhu a4,2(ra) -800002cc: 00001eb7 lui t4,0x1 -800002d0: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> -800002d4: 0bd71a63 bne a4,t4,80000388 -800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002dc: 00200293 li t0,2 -800002e0: fe5210e3 bne tp,t0,800002c0 - -800002e4 : -800002e4: 01000193 li gp,16 -800002e8: 00000213 li tp,0 -800002ec: 00002097 auipc ra,0x2 -800002f0: d1808093 addi ra,ra,-744 # 80002004 -800002f4: 00000013 nop -800002f8: 0020d703 lhu a4,2(ra) -800002fc: 0000feb7 lui t4,0xf -80000300: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> -80000304: 09d71263 bne a4,t4,80000388 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fc521ee3 bne tp,t0,800002ec - -80000314 : -80000314: 01100193 li gp,17 -80000318: 00000213 li tp,0 -8000031c: 00002097 auipc ra,0x2 -80000320: ce408093 addi ra,ra,-796 # 80002000 -80000324: 00000013 nop -80000328: 00000013 nop -8000032c: 0020d703 lhu a4,2(ra) -80000330: 00010eb7 lui t4,0x10 -80000334: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> -80000338: 05d71863 bne a4,t4,80000388 -8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000340: 00200293 li t0,2 -80000344: fc521ce3 bne tp,t0,8000031c - -80000348 : -80000348: 00002297 auipc t0,0x2 -8000034c: cb828293 addi t0,t0,-840 # 80002000 -80000350: 0002d103 lhu sp,0(t0) -80000354: 00200113 li sp,2 -80000358: 00200e93 li t4,2 -8000035c: 01200193 li gp,18 -80000360: 03d11463 bne sp,t4,80000388 - -80000364 : -80000364: 00002297 auipc t0,0x2 -80000368: c9c28293 addi t0,t0,-868 # 80002000 -8000036c: 0002d103 lhu sp,0(t0) -80000370: 00000013 nop -80000374: 00200113 li sp,2 -80000378: 00200e93 li t4,2 -8000037c: 01300193 li gp,19 -80000380: 01d11463 bne sp,t4,80000388 -80000384: 02301063 bne zero,gp,800003a4 - -80000388 : -80000388: 0ff0000f fence -8000038c: 00018063 beqz gp,8000038c -80000390: 00119193 slli gp,gp,0x1 -80000394: 0011e193 ori gp,gp,1 -80000398: 05d00893 li a7,93 -8000039c: 00018513 mv a0,gp -800003a0: 00000073 ecall - -800003a4 : -800003a4: 0ff0000f fence -800003a8: 00100193 li gp,1 -800003ac: 05d00893 li a7,93 -800003b0: 00000513 li a0,0 -800003b4: 00000073 ecall -800003b8: c0001073 unimp -800003bc: 0000 unimp -800003be: 0000 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: 00ff 0xff - -80002002 : -80002002: ff00 fsw fs0,56(a4) - -80002004 : -80002004: 0ff0 addi a2,sp,988 - -80002006 : -80002006: 0000f00f 0xf00f -8000200a: 0000 unimp -8000200c: 0000 unimp -8000200e: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-lui.dump b/benchmarks/riscv_tests/rv32ui-p-lui.dump deleted file mode 100644 index 6768863a..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-lui.dump +++ /dev/null @@ -1,152 +0,0 @@ - -rv32ui-p-lui: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 000000b7 lui ra,0x0 -8000010c: 00000e93 li t4,0 -80000110: 00200193 li gp,2 -80000114: 05d09a63 bne ra,t4,80000168 - -80000118 : -80000118: fffff0b7 lui ra,0xfffff -8000011c: 4010d093 srai ra,ra,0x1 -80000120: 80000e93 li t4,-2048 -80000124: 00300193 li gp,3 -80000128: 05d09063 bne ra,t4,80000168 - -8000012c : -8000012c: 7ffff0b7 lui ra,0x7ffff -80000130: 4140d093 srai ra,ra,0x14 -80000134: 7ff00e93 li t4,2047 -80000138: 00400193 li gp,4 -8000013c: 03d09663 bne ra,t4,80000168 - -80000140 : -80000140: 800000b7 lui ra,0x80000 -80000144: 4140d093 srai ra,ra,0x14 -80000148: 80000e93 li t4,-2048 -8000014c: 00500193 li gp,5 -80000150: 01d09c63 bne ra,t4,80000168 - -80000154 : -80000154: 80000037 lui zero,0x80000 -80000158: 00000e93 li t4,0 -8000015c: 00600193 li gp,6 -80000160: 01d01463 bne zero,t4,80000168 -80000164: 02301063 bne zero,gp,80000184 - -80000168 : -80000168: 0ff0000f fence -8000016c: 00018063 beqz gp,8000016c -80000170: 00119193 slli gp,gp,0x1 -80000174: 0011e193 ori gp,gp,1 -80000178: 05d00893 li a7,93 -8000017c: 00018513 mv a0,gp -80000180: 00000073 ecall - -80000184 : -80000184: 0ff0000f fence -80000188: 00100193 li gp,1 -8000018c: 05d00893 li a7,93 -80000190: 00000513 li a0,0 -80000194: 00000073 ecall -80000198: c0001073 unimp -8000019c: 0000 unimp -8000019e: 0000 unimp -800001a0: 0000 unimp -800001a2: 0000 unimp -800001a4: 0000 unimp -800001a6: 0000 unimp -800001a8: 0000 unimp -800001aa: 0000 unimp -800001ac: 0000 unimp -800001ae: 0000 unimp -800001b0: 0000 unimp -800001b2: 0000 unimp -800001b4: 0000 unimp -800001b6: 0000 unimp -800001b8: 0000 unimp -800001ba: 0000 unimp -800001bc: 0000 unimp -800001be: 0000 unimp -800001c0: 0000 unimp -800001c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-lui.hex.hex b/benchmarks/riscv_tests/rv32ui-p-lui.hex.hex deleted file mode 100644 index f362421a..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-lui.hex.hex +++ /dev/null @@ -1,29 +0,0 @@ -:0200000480007A -:100000006F00C004732F2034930F8000630AFF0336 -:10001000930F90006306FF03930FB0006302FF038A -:10002000170F0080130F0FFE63040F0067000F000F -:10003000732F203463540F006F004000136E9E53E3 -:10004000171F00002320CFFD6FF09FFF732540F1A5 -:100050006310050073251030635805000F00F00F82 -:10006000130E100073000000130E00009702000032 -:10007000938282F973905230735020307350303035 -:1000800073504030970200809382C2F7638C020065 -:10009000739052109302B01A739022307323203061 -:1000A000E39E62F873500030970200009382420191 -:1000B00073901234732540F173002030B7000000B4 -:1000C000930E0000130E2000639AD005B7F0FFFFD7 -:1000D00093D01040930E0080130E30006390D00533 -:1000E000B7F0FF7F93D04041930EF07F130E400096 -:1000F0006396D003B700008093D04041930E0080F8 -:10010000130E5000639CD00137000080930E000056 -:10011000130E60006314D001631CC0010F00F00FC8 -:1001200063000E00131E1E00136E1E0073000000FD -:100130000F00F00F130E100073000000731000C0CA -:0401400000000000BB -:1010000000000000000000000000000000000000E0 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:081040000000000000000000A8 -:040000058000200057 -:00000001FF diff --git a/benchmarks/riscv_tests/rv32ui-p-lw.dump b/benchmarks/riscv_tests/rv32ui-p-lw.dump deleted file mode 100644 index a33f55a2..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-lw.dump +++ /dev/null @@ -1,344 +0,0 @@ - -rv32ui-p-lw: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: 0000a703 lw a4,0(ra) -80000114: 00ff0eb7 lui t4,0xff0 -80000118: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> -8000011c: 00200193 li gp,2 -80000120: 27d71a63 bne a4,t4,80000394 - -80000124 : -80000124: 00002097 auipc ra,0x2 -80000128: edc08093 addi ra,ra,-292 # 80002000 -8000012c: 0040a703 lw a4,4(ra) -80000130: ff010eb7 lui t4,0xff010 -80000134: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> -80000138: 00300193 li gp,3 -8000013c: 25d71c63 bne a4,t4,80000394 - -80000140 : -80000140: 00002097 auipc ra,0x2 -80000144: ec008093 addi ra,ra,-320 # 80002000 -80000148: 0080a703 lw a4,8(ra) -8000014c: 0ff01eb7 lui t4,0xff01 -80000150: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -80000154: 00400193 li gp,4 -80000158: 23d71e63 bne a4,t4,80000394 - -8000015c : -8000015c: 00002097 auipc ra,0x2 -80000160: ea408093 addi ra,ra,-348 # 80002000 -80000164: 00c0a703 lw a4,12(ra) -80000168: f00ffeb7 lui t4,0xf00ff -8000016c: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> -80000170: 00500193 li gp,5 -80000174: 23d71063 bne a4,t4,80000394 - -80000178 : -80000178: 00002097 auipc ra,0x2 -8000017c: e9408093 addi ra,ra,-364 # 8000200c -80000180: ff40a703 lw a4,-12(ra) -80000184: 00ff0eb7 lui t4,0xff0 -80000188: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> -8000018c: 00600193 li gp,6 -80000190: 21d71263 bne a4,t4,80000394 - -80000194 : -80000194: 00002097 auipc ra,0x2 -80000198: e7808093 addi ra,ra,-392 # 8000200c -8000019c: ff80a703 lw a4,-8(ra) -800001a0: ff010eb7 lui t4,0xff010 -800001a4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> -800001a8: 00700193 li gp,7 -800001ac: 1fd71463 bne a4,t4,80000394 - -800001b0 : -800001b0: 00002097 auipc ra,0x2 -800001b4: e5c08093 addi ra,ra,-420 # 8000200c -800001b8: ffc0a703 lw a4,-4(ra) -800001bc: 0ff01eb7 lui t4,0xff01 -800001c0: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -800001c4: 00800193 li gp,8 -800001c8: 1dd71663 bne a4,t4,80000394 - -800001cc : -800001cc: 00002097 auipc ra,0x2 -800001d0: e4008093 addi ra,ra,-448 # 8000200c -800001d4: 0000a703 lw a4,0(ra) -800001d8: f00ffeb7 lui t4,0xf00ff -800001dc: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> -800001e0: 00900193 li gp,9 -800001e4: 1bd71863 bne a4,t4,80000394 - -800001e8 : -800001e8: 00002097 auipc ra,0x2 -800001ec: e1808093 addi ra,ra,-488 # 80002000 -800001f0: fe008093 addi ra,ra,-32 -800001f4: 0200a283 lw t0,32(ra) -800001f8: 00ff0eb7 lui t4,0xff0 -800001fc: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> -80000200: 00a00193 li gp,10 -80000204: 19d29863 bne t0,t4,80000394 - -80000208 : -80000208: 00002097 auipc ra,0x2 -8000020c: df808093 addi ra,ra,-520 # 80002000 -80000210: ffd08093 addi ra,ra,-3 -80000214: 0070a283 lw t0,7(ra) -80000218: ff010eb7 lui t4,0xff010 -8000021c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> -80000220: 00b00193 li gp,11 -80000224: 17d29863 bne t0,t4,80000394 - -80000228 : -80000228: 00c00193 li gp,12 -8000022c: 00000213 li tp,0 -80000230: 00002097 auipc ra,0x2 -80000234: dd408093 addi ra,ra,-556 # 80002004 -80000238: 0040a703 lw a4,4(ra) -8000023c: 00070313 mv t1,a4 -80000240: 0ff01eb7 lui t4,0xff01 -80000244: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -80000248: 15d31663 bne t1,t4,80000394 -8000024c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000250: 00200293 li t0,2 -80000254: fc521ee3 bne tp,t0,80000230 - -80000258 : -80000258: 00d00193 li gp,13 -8000025c: 00000213 li tp,0 -80000260: 00002097 auipc ra,0x2 -80000264: da808093 addi ra,ra,-600 # 80002008 -80000268: 0040a703 lw a4,4(ra) -8000026c: 00000013 nop -80000270: 00070313 mv t1,a4 -80000274: f00ffeb7 lui t4,0xf00ff -80000278: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> -8000027c: 11d31c63 bne t1,t4,80000394 -80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000284: 00200293 li t0,2 -80000288: fc521ce3 bne tp,t0,80000260 - -8000028c : -8000028c: 00e00193 li gp,14 -80000290: 00000213 li tp,0 -80000294: 00002097 auipc ra,0x2 -80000298: d6c08093 addi ra,ra,-660 # 80002000 -8000029c: 0040a703 lw a4,4(ra) -800002a0: 00000013 nop -800002a4: 00000013 nop -800002a8: 00070313 mv t1,a4 -800002ac: ff010eb7 lui t4,0xff010 -800002b0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> -800002b4: 0fd31063 bne t1,t4,80000394 -800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002bc: 00200293 li t0,2 -800002c0: fc521ae3 bne tp,t0,80000294 - -800002c4 : -800002c4: 00f00193 li gp,15 -800002c8: 00000213 li tp,0 -800002cc: 00002097 auipc ra,0x2 -800002d0: d3808093 addi ra,ra,-712 # 80002004 -800002d4: 0040a703 lw a4,4(ra) -800002d8: 0ff01eb7 lui t4,0xff01 -800002dc: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -800002e0: 0bd71a63 bne a4,t4,80000394 -800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002e8: 00200293 li t0,2 -800002ec: fe5210e3 bne tp,t0,800002cc - -800002f0 : -800002f0: 01000193 li gp,16 -800002f4: 00000213 li tp,0 -800002f8: 00002097 auipc ra,0x2 -800002fc: d1008093 addi ra,ra,-752 # 80002008 -80000300: 00000013 nop -80000304: 0040a703 lw a4,4(ra) -80000308: f00ffeb7 lui t4,0xf00ff -8000030c: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> -80000310: 09d71263 bne a4,t4,80000394 -80000314: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000318: 00200293 li t0,2 -8000031c: fc521ee3 bne tp,t0,800002f8 - -80000320 : -80000320: 01100193 li gp,17 -80000324: 00000213 li tp,0 -80000328: 00002097 auipc ra,0x2 -8000032c: cd808093 addi ra,ra,-808 # 80002000 -80000330: 00000013 nop -80000334: 00000013 nop -80000338: 0040a703 lw a4,4(ra) -8000033c: ff010eb7 lui t4,0xff010 -80000340: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> -80000344: 05d71863 bne a4,t4,80000394 -80000348: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000034c: 00200293 li t0,2 -80000350: fc521ce3 bne tp,t0,80000328 - -80000354 : -80000354: 00002297 auipc t0,0x2 -80000358: cac28293 addi t0,t0,-852 # 80002000 -8000035c: 0002a103 lw sp,0(t0) -80000360: 00200113 li sp,2 -80000364: 00200e93 li t4,2 -80000368: 01200193 li gp,18 -8000036c: 03d11463 bne sp,t4,80000394 - -80000370 : -80000370: 00002297 auipc t0,0x2 -80000374: c9028293 addi t0,t0,-880 # 80002000 -80000378: 0002a103 lw sp,0(t0) -8000037c: 00000013 nop -80000380: 00200113 li sp,2 -80000384: 00200e93 li t4,2 -80000388: 01300193 li gp,19 -8000038c: 01d11463 bne sp,t4,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: 00ff 0xff -80002002: 00ff 0xff - -80002004 : -80002004: ff00 fsw fs0,56(a4) -80002006: ff00 fsw fs0,56(a4) - -80002008 : -80002008: 0ff0 addi a2,sp,988 -8000200a: 0ff0 addi a2,sp,988 - -8000200c : -8000200c: f00ff00f 0xf00ff00f diff --git a/benchmarks/riscv_tests/rv32ui-p-or.dump b/benchmarks/riscv_tests/rv32ui-p-or.dump deleted file mode 100644 index 1e38373e..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-or.dump +++ /dev/null @@ -1,457 +0,0 @@ - -rv32ui-p-or: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: ff0100b7 lui ra,0xff010 -8000010c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000110: 0f0f1137 lui sp,0xf0f1 -80000114: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000118: 0020e733 or a4,ra,sp -8000011c: ff100eb7 lui t4,0xff100 -80000120: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -80000124: 00200193 li gp,2 -80000128: 4bd71263 bne a4,t4,800005cc - -8000012c : -8000012c: 0ff010b7 lui ra,0xff01 -80000130: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000134: f0f0f137 lui sp,0xf0f0f -80000138: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -8000013c: 0020e733 or a4,ra,sp -80000140: fff10eb7 lui t4,0xfff10 -80000144: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> -80000148: 00300193 li gp,3 -8000014c: 49d71063 bne a4,t4,800005cc - -80000150 : -80000150: 00ff00b7 lui ra,0xff0 -80000154: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000158: 0f0f1137 lui sp,0xf0f1 -8000015c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000160: 0020e733 or a4,ra,sp -80000164: 0fff1eb7 lui t4,0xfff1 -80000168: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> -8000016c: 00400193 li gp,4 -80000170: 45d71e63 bne a4,t4,800005cc - -80000174 : -80000174: f00ff0b7 lui ra,0xf00ff -80000178: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -8000017c: f0f0f137 lui sp,0xf0f0f -80000180: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000184: 0020e733 or a4,ra,sp -80000188: f0fffeb7 lui t4,0xf0fff -8000018c: 0ffe8e93 addi t4,t4,255 # f0fff0ff <_end+0x70ffd0ff> -80000190: 00500193 li gp,5 -80000194: 43d71c63 bne a4,t4,800005cc - -80000198 : -80000198: ff0100b7 lui ra,0xff010 -8000019c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800001a0: 0f0f1137 lui sp,0xf0f1 -800001a4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800001a8: 0020e0b3 or ra,ra,sp -800001ac: ff100eb7 lui t4,0xff100 -800001b0: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -800001b4: 00600193 li gp,6 -800001b8: 41d09a63 bne ra,t4,800005cc - -800001bc : -800001bc: ff0100b7 lui ra,0xff010 -800001c0: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800001c4: 0f0f1137 lui sp,0xf0f1 -800001c8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800001cc: 0020e133 or sp,ra,sp -800001d0: ff100eb7 lui t4,0xff100 -800001d4: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -800001d8: 00700193 li gp,7 -800001dc: 3fd11863 bne sp,t4,800005cc - -800001e0 : -800001e0: ff0100b7 lui ra,0xff010 -800001e4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800001e8: 0010e0b3 or ra,ra,ra -800001ec: ff010eb7 lui t4,0xff010 -800001f0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -800001f4: 00800193 li gp,8 -800001f8: 3dd09a63 bne ra,t4,800005cc - -800001fc : -800001fc: 00000213 li tp,0 -80000200: ff0100b7 lui ra,0xff010 -80000204: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000208: 0f0f1137 lui sp,0xf0f1 -8000020c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000210: 0020e733 or a4,ra,sp -80000214: 00070313 mv t1,a4 -80000218: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000021c: 00200293 li t0,2 -80000220: fe5210e3 bne tp,t0,80000200 -80000224: ff100eb7 lui t4,0xff100 -80000228: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -8000022c: 00900193 li gp,9 -80000230: 39d31e63 bne t1,t4,800005cc - -80000234 : -80000234: 00000213 li tp,0 -80000238: 0ff010b7 lui ra,0xff01 -8000023c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000240: f0f0f137 lui sp,0xf0f0f -80000244: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000248: 0020e733 or a4,ra,sp -8000024c: 00000013 nop -80000250: 00070313 mv t1,a4 -80000254: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000258: 00200293 li t0,2 -8000025c: fc521ee3 bne tp,t0,80000238 -80000260: fff10eb7 lui t4,0xfff10 -80000264: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> -80000268: 00a00193 li gp,10 -8000026c: 37d31063 bne t1,t4,800005cc - -80000270 : -80000270: 00000213 li tp,0 -80000274: 00ff00b7 lui ra,0xff0 -80000278: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -8000027c: 0f0f1137 lui sp,0xf0f1 -80000280: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000284: 0020e733 or a4,ra,sp -80000288: 00000013 nop -8000028c: 00000013 nop -80000290: 00070313 mv t1,a4 -80000294: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000298: 00200293 li t0,2 -8000029c: fc521ce3 bne tp,t0,80000274 -800002a0: 0fff1eb7 lui t4,0xfff1 -800002a4: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> -800002a8: 00b00193 li gp,11 -800002ac: 33d31063 bne t1,t4,800005cc - -800002b0 : -800002b0: 00000213 li tp,0 -800002b4: ff0100b7 lui ra,0xff010 -800002b8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800002bc: 0f0f1137 lui sp,0xf0f1 -800002c0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800002c4: 0020e733 or a4,ra,sp -800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002cc: 00200293 li t0,2 -800002d0: fe5212e3 bne tp,t0,800002b4 -800002d4: ff100eb7 lui t4,0xff100 -800002d8: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -800002dc: 00c00193 li gp,12 -800002e0: 2fd71663 bne a4,t4,800005cc - -800002e4 : -800002e4: 00000213 li tp,0 -800002e8: 0ff010b7 lui ra,0xff01 -800002ec: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -800002f0: f0f0f137 lui sp,0xf0f0f -800002f4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800002f8: 00000013 nop -800002fc: 0020e733 or a4,ra,sp -80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000304: 00200293 li t0,2 -80000308: fe5210e3 bne tp,t0,800002e8 -8000030c: fff10eb7 lui t4,0xfff10 -80000310: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> -80000314: 00d00193 li gp,13 -80000318: 2bd71a63 bne a4,t4,800005cc - -8000031c : -8000031c: 00000213 li tp,0 -80000320: 00ff00b7 lui ra,0xff0 -80000324: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000328: 0f0f1137 lui sp,0xf0f1 -8000032c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000330: 00000013 nop -80000334: 00000013 nop -80000338: 0020e733 or a4,ra,sp -8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000340: 00200293 li t0,2 -80000344: fc521ee3 bne tp,t0,80000320 -80000348: 0fff1eb7 lui t4,0xfff1 -8000034c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> -80000350: 00e00193 li gp,14 -80000354: 27d71c63 bne a4,t4,800005cc - -80000358 : -80000358: 00000213 li tp,0 -8000035c: ff0100b7 lui ra,0xff010 -80000360: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000364: 00000013 nop -80000368: 0f0f1137 lui sp,0xf0f1 -8000036c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000370: 0020e733 or a4,ra,sp -80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000378: 00200293 li t0,2 -8000037c: fe5210e3 bne tp,t0,8000035c -80000380: ff100eb7 lui t4,0xff100 -80000384: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -80000388: 00f00193 li gp,15 -8000038c: 25d71063 bne a4,t4,800005cc - -80000390 : -80000390: 00000213 li tp,0 -80000394: 0ff010b7 lui ra,0xff01 -80000398: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000039c: 00000013 nop -800003a0: f0f0f137 lui sp,0xf0f0f -800003a4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800003a8: 00000013 nop -800003ac: 0020e733 or a4,ra,sp -800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003b4: 00200293 li t0,2 -800003b8: fc521ee3 bne tp,t0,80000394 -800003bc: fff10eb7 lui t4,0xfff10 -800003c0: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> -800003c4: 01000193 li gp,16 -800003c8: 21d71263 bne a4,t4,800005cc - -800003cc : -800003cc: 00000213 li tp,0 -800003d0: 00ff00b7 lui ra,0xff0 -800003d4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800003d8: 00000013 nop -800003dc: 00000013 nop -800003e0: 0f0f1137 lui sp,0xf0f1 -800003e4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800003e8: 0020e733 or a4,ra,sp -800003ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f0: 00200293 li t0,2 -800003f4: fc521ee3 bne tp,t0,800003d0 -800003f8: 0fff1eb7 lui t4,0xfff1 -800003fc: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> -80000400: 01100193 li gp,17 -80000404: 1dd71463 bne a4,t4,800005cc - -80000408 : -80000408: 00000213 li tp,0 -8000040c: 0f0f1137 lui sp,0xf0f1 -80000410: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000414: ff0100b7 lui ra,0xff010 -80000418: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -8000041c: 0020e733 or a4,ra,sp -80000420: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000424: 00200293 li t0,2 -80000428: fe5212e3 bne tp,t0,8000040c -8000042c: ff100eb7 lui t4,0xff100 -80000430: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -80000434: 01200193 li gp,18 -80000438: 19d71a63 bne a4,t4,800005cc - -8000043c : -8000043c: 00000213 li tp,0 -80000440: f0f0f137 lui sp,0xf0f0f -80000444: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000448: 0ff010b7 lui ra,0xff01 -8000044c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000450: 00000013 nop -80000454: 0020e733 or a4,ra,sp -80000458: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000045c: 00200293 li t0,2 -80000460: fe5210e3 bne tp,t0,80000440 -80000464: fff10eb7 lui t4,0xfff10 -80000468: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> -8000046c: 01300193 li gp,19 -80000470: 15d71e63 bne a4,t4,800005cc - -80000474 : -80000474: 00000213 li tp,0 -80000478: 0f0f1137 lui sp,0xf0f1 -8000047c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000480: 00ff00b7 lui ra,0xff0 -80000484: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000488: 00000013 nop -8000048c: 00000013 nop -80000490: 0020e733 or a4,ra,sp -80000494: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000498: 00200293 li t0,2 -8000049c: fc521ee3 bne tp,t0,80000478 -800004a0: 0fff1eb7 lui t4,0xfff1 -800004a4: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> -800004a8: 01400193 li gp,20 -800004ac: 13d71063 bne a4,t4,800005cc - -800004b0 : -800004b0: 00000213 li tp,0 -800004b4: 0f0f1137 lui sp,0xf0f1 -800004b8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800004bc: 00000013 nop -800004c0: ff0100b7 lui ra,0xff010 -800004c4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800004c8: 0020e733 or a4,ra,sp -800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004d0: 00200293 li t0,2 -800004d4: fe5210e3 bne tp,t0,800004b4 -800004d8: ff100eb7 lui t4,0xff100 -800004dc: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> -800004e0: 01500193 li gp,21 -800004e4: 0fd71463 bne a4,t4,800005cc - -800004e8 : -800004e8: 00000213 li tp,0 -800004ec: f0f0f137 lui sp,0xf0f0f -800004f0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800004f4: 00000013 nop -800004f8: 0ff010b7 lui ra,0xff01 -800004fc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000500: 00000013 nop -80000504: 0020e733 or a4,ra,sp -80000508: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000050c: 00200293 li t0,2 -80000510: fc521ee3 bne tp,t0,800004ec -80000514: fff10eb7 lui t4,0xfff10 -80000518: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> -8000051c: 01600193 li gp,22 -80000520: 0bd71663 bne a4,t4,800005cc - -80000524 : -80000524: 00000213 li tp,0 -80000528: 0f0f1137 lui sp,0xf0f1 -8000052c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000530: 00000013 nop -80000534: 00000013 nop -80000538: 00ff00b7 lui ra,0xff0 -8000053c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000540: 0020e733 or a4,ra,sp -80000544: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000548: 00200293 li t0,2 -8000054c: fc521ee3 bne tp,t0,80000528 -80000550: 0fff1eb7 lui t4,0xfff1 -80000554: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> -80000558: 01700193 li gp,23 -8000055c: 07d71863 bne a4,t4,800005cc - -80000560 : -80000560: ff0100b7 lui ra,0xff010 -80000564: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000568: 00106133 or sp,zero,ra -8000056c: ff010eb7 lui t4,0xff010 -80000570: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -80000574: 01800193 li gp,24 -80000578: 05d11a63 bne sp,t4,800005cc - -8000057c : -8000057c: 00ff00b7 lui ra,0xff0 -80000580: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000584: 0000e133 or sp,ra,zero -80000588: 00ff0eb7 lui t4,0xff0 -8000058c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> -80000590: 01900193 li gp,25 -80000594: 03d11c63 bne sp,t4,800005cc - -80000598 : -80000598: 000060b3 or ra,zero,zero -8000059c: 00000e93 li t4,0 -800005a0: 01a00193 li gp,26 -800005a4: 03d09463 bne ra,t4,800005cc - -800005a8 : -800005a8: 111110b7 lui ra,0x11111 -800005ac: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> -800005b0: 22222137 lui sp,0x22222 -800005b4: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> -800005b8: 0020e033 or zero,ra,sp -800005bc: 00000e93 li t4,0 -800005c0: 01b00193 li gp,27 -800005c4: 01d01463 bne zero,t4,800005cc -800005c8: 02301063 bne zero,gp,800005e8 - -800005cc : -800005cc: 0ff0000f fence -800005d0: 00018063 beqz gp,800005d0 -800005d4: 00119193 slli gp,gp,0x1 -800005d8: 0011e193 ori gp,gp,1 -800005dc: 05d00893 li a7,93 -800005e0: 00018513 mv a0,gp -800005e4: 00000073 ecall - -800005e8 : -800005e8: 0ff0000f fence -800005ec: 00100193 li gp,1 -800005f0: 05d00893 li a7,93 -800005f4: 00000513 li a0,0 -800005f8: 00000073 ecall -800005fc: c0001073 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-ori.dump b/benchmarks/riscv_tests/rv32ui-p-ori.dump deleted file mode 100644 index 943be5ef..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-ori.dump +++ /dev/null @@ -1,265 +0,0 @@ - -rv32ui-p-ori: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: ff0100b7 lui ra,0xff010 -8000010c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000110: f0f0e713 ori a4,ra,-241 -80000114: f0f00e93 li t4,-241 -80000118: 00200193 li gp,2 -8000011c: 1dd71463 bne a4,t4,800002e4 - -80000120 : -80000120: 0ff010b7 lui ra,0xff01 -80000124: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000128: 0f00e713 ori a4,ra,240 -8000012c: 0ff01eb7 lui t4,0xff01 -80000130: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -80000134: 00300193 li gp,3 -80000138: 1bd71663 bne a4,t4,800002e4 - -8000013c : -8000013c: 00ff00b7 lui ra,0xff0 -80000140: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000144: 70f0e713 ori a4,ra,1807 -80000148: 00ff0eb7 lui t4,0xff0 -8000014c: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801> -80000150: 00400193 li gp,4 -80000154: 19d71863 bne a4,t4,800002e4 - -80000158 : -80000158: f00ff0b7 lui ra,0xf00ff -8000015c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -80000160: 0f00e713 ori a4,ra,240 -80000164: f00ffeb7 lui t4,0xf00ff -80000168: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> -8000016c: 00500193 li gp,5 -80000170: 17d71a63 bne a4,t4,800002e4 - -80000174 : -80000174: ff0100b7 lui ra,0xff010 -80000178: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -8000017c: 0f00e093 ori ra,ra,240 -80000180: ff010eb7 lui t4,0xff010 -80000184: ff0e8e93 addi t4,t4,-16 # ff00fff0 <_end+0x7f00dff0> -80000188: 00600193 li gp,6 -8000018c: 15d09c63 bne ra,t4,800002e4 - -80000190 : -80000190: 00000213 li tp,0 -80000194: 0ff010b7 lui ra,0xff01 -80000198: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000019c: 0f00e713 ori a4,ra,240 -800001a0: 00070313 mv t1,a4 -800001a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001a8: 00200293 li t0,2 -800001ac: fe5214e3 bne tp,t0,80000194 -800001b0: 0ff01eb7 lui t4,0xff01 -800001b4: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -800001b8: 00700193 li gp,7 -800001bc: 13d31463 bne t1,t4,800002e4 - -800001c0 : -800001c0: 00000213 li tp,0 -800001c4: 00ff00b7 lui ra,0xff0 -800001c8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800001cc: 70f0e713 ori a4,ra,1807 -800001d0: 00000013 nop -800001d4: 00070313 mv t1,a4 -800001d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001dc: 00200293 li t0,2 -800001e0: fe5212e3 bne tp,t0,800001c4 -800001e4: 00ff0eb7 lui t4,0xff0 -800001e8: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801> -800001ec: 00800193 li gp,8 -800001f0: 0fd31a63 bne t1,t4,800002e4 - -800001f4 : -800001f4: 00000213 li tp,0 -800001f8: f00ff0b7 lui ra,0xf00ff -800001fc: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -80000200: 0f00e713 ori a4,ra,240 -80000204: 00000013 nop -80000208: 00000013 nop -8000020c: 00070313 mv t1,a4 -80000210: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000214: 00200293 li t0,2 -80000218: fe5210e3 bne tp,t0,800001f8 -8000021c: f00ffeb7 lui t4,0xf00ff -80000220: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> -80000224: 00900193 li gp,9 -80000228: 0bd31e63 bne t1,t4,800002e4 - -8000022c : -8000022c: 00000213 li tp,0 -80000230: 0ff010b7 lui ra,0xff01 -80000234: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000238: 0f00e713 ori a4,ra,240 -8000023c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000240: 00200293 li t0,2 -80000244: fe5216e3 bne tp,t0,80000230 -80000248: 0ff01eb7 lui t4,0xff01 -8000024c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -80000250: 00a00193 li gp,10 -80000254: 09d71863 bne a4,t4,800002e4 - -80000258 : -80000258: 00000213 li tp,0 -8000025c: 00ff00b7 lui ra,0xff0 -80000260: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000264: 00000013 nop -80000268: f0f0e713 ori a4,ra,-241 -8000026c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000270: 00200293 li t0,2 -80000274: fe5214e3 bne tp,t0,8000025c -80000278: fff00e93 li t4,-1 -8000027c: 00b00193 li gp,11 -80000280: 07d71263 bne a4,t4,800002e4 - -80000284 : -80000284: 00000213 li tp,0 -80000288: f00ff0b7 lui ra,0xf00ff -8000028c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -80000290: 00000013 nop -80000294: 00000013 nop -80000298: 0f00e713 ori a4,ra,240 -8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a0: 00200293 li t0,2 -800002a4: fe5212e3 bne tp,t0,80000288 -800002a8: f00ffeb7 lui t4,0xf00ff -800002ac: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> -800002b0: 00c00193 li gp,12 -800002b4: 03d71863 bne a4,t4,800002e4 - -800002b8 : -800002b8: 0f006093 ori ra,zero,240 -800002bc: 0f000e93 li t4,240 -800002c0: 00d00193 li gp,13 -800002c4: 03d09063 bne ra,t4,800002e4 - -800002c8 : -800002c8: 00ff00b7 lui ra,0xff0 -800002cc: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800002d0: 70f0e013 ori zero,ra,1807 -800002d4: 00000e93 li t4,0 -800002d8: 00e00193 li gp,14 -800002dc: 01d01463 bne zero,t4,800002e4 -800002e0: 02301063 bne zero,gp,80000300 - -800002e4 : -800002e4: 0ff0000f fence -800002e8: 00018063 beqz gp,800002e8 -800002ec: 00119193 slli gp,gp,0x1 -800002f0: 0011e193 ori gp,gp,1 -800002f4: 05d00893 li a7,93 -800002f8: 00018513 mv a0,gp -800002fc: 00000073 ecall - -80000300 : -80000300: 0ff0000f fence -80000304: 00100193 li gp,1 -80000308: 05d00893 li a7,93 -8000030c: 00000513 li a0,0 -80000310: 00000073 ecall -80000314: c0001073 unimp -80000318: 0000 unimp -8000031a: 0000 unimp -8000031c: 0000 unimp -8000031e: 0000 unimp -80000320: 0000 unimp -80000322: 0000 unimp -80000324: 0000 unimp -80000326: 0000 unimp -80000328: 0000 unimp -8000032a: 0000 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 diff --git a/benchmarks/riscv_tests/rv32ui-p-sb.dump b/benchmarks/riscv_tests/rv32ui-p-sb.dump deleted file mode 100644 index c4ec3d70..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sb.dump +++ /dev/null @@ -1,440 +0,0 @@ - -rv32ui-p-sb: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: faa00113 li sp,-86 -80000114: 00208023 sb sp,0(ra) -80000118: 00008703 lb a4,0(ra) -8000011c: faa00e93 li t4,-86 -80000120: 00200193 li gp,2 -80000124: 3dd71c63 bne a4,t4,800004fc - -80000128 : -80000128: 00002097 auipc ra,0x2 -8000012c: ed808093 addi ra,ra,-296 # 80002000 -80000130: 00000113 li sp,0 -80000134: 002080a3 sb sp,1(ra) -80000138: 00108703 lb a4,1(ra) -8000013c: 00000e93 li t4,0 -80000140: 00300193 li gp,3 -80000144: 3bd71c63 bne a4,t4,800004fc - -80000148 : -80000148: 00002097 auipc ra,0x2 -8000014c: eb808093 addi ra,ra,-328 # 80002000 -80000150: fffff137 lui sp,0xfffff -80000154: fa010113 addi sp,sp,-96 # ffffefa0 <_end+0x7fffcf90> -80000158: 00208123 sb sp,2(ra) -8000015c: 00209703 lh a4,2(ra) -80000160: fffffeb7 lui t4,0xfffff -80000164: fa0e8e93 addi t4,t4,-96 # ffffefa0 <_end+0x7fffcf90> -80000168: 00400193 li gp,4 -8000016c: 39d71863 bne a4,t4,800004fc - -80000170 : -80000170: 00002097 auipc ra,0x2 -80000174: e9008093 addi ra,ra,-368 # 80002000 -80000178: 00a00113 li sp,10 -8000017c: 002081a3 sb sp,3(ra) -80000180: 00308703 lb a4,3(ra) -80000184: 00a00e93 li t4,10 -80000188: 00500193 li gp,5 -8000018c: 37d71863 bne a4,t4,800004fc - -80000190 : -80000190: 00002097 auipc ra,0x2 -80000194: e7708093 addi ra,ra,-393 # 80002007 -80000198: faa00113 li sp,-86 -8000019c: fe208ea3 sb sp,-3(ra) -800001a0: ffd08703 lb a4,-3(ra) -800001a4: faa00e93 li t4,-86 -800001a8: 00600193 li gp,6 -800001ac: 35d71863 bne a4,t4,800004fc - -800001b0 : -800001b0: 00002097 auipc ra,0x2 -800001b4: e5708093 addi ra,ra,-425 # 80002007 -800001b8: 00000113 li sp,0 -800001bc: fe208f23 sb sp,-2(ra) -800001c0: ffe08703 lb a4,-2(ra) -800001c4: 00000e93 li t4,0 -800001c8: 00700193 li gp,7 -800001cc: 33d71863 bne a4,t4,800004fc - -800001d0 : -800001d0: 00002097 auipc ra,0x2 -800001d4: e3708093 addi ra,ra,-457 # 80002007 -800001d8: fa000113 li sp,-96 -800001dc: fe208fa3 sb sp,-1(ra) -800001e0: fff08703 lb a4,-1(ra) -800001e4: fa000e93 li t4,-96 -800001e8: 00800193 li gp,8 -800001ec: 31d71863 bne a4,t4,800004fc - -800001f0 : -800001f0: 00002097 auipc ra,0x2 -800001f4: e1708093 addi ra,ra,-489 # 80002007 -800001f8: 00a00113 li sp,10 -800001fc: 00208023 sb sp,0(ra) -80000200: 00008703 lb a4,0(ra) -80000204: 00a00e93 li t4,10 -80000208: 00900193 li gp,9 -8000020c: 2fd71863 bne a4,t4,800004fc - -80000210 : -80000210: 00002097 auipc ra,0x2 -80000214: df808093 addi ra,ra,-520 # 80002008 -80000218: 12345137 lui sp,0x12345 -8000021c: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> -80000220: fe008213 addi tp,ra,-32 -80000224: 02220023 sb sp,32(tp) # 20 <_start-0x7fffffe0> -80000228: 00008283 lb t0,0(ra) -8000022c: 07800e93 li t4,120 -80000230: 00a00193 li gp,10 -80000234: 2dd29463 bne t0,t4,800004fc - -80000238 : -80000238: 00002097 auipc ra,0x2 -8000023c: dd008093 addi ra,ra,-560 # 80002008 -80000240: 00003137 lui sp,0x3 -80000244: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68> -80000248: ffa08093 addi ra,ra,-6 -8000024c: 002083a3 sb sp,7(ra) -80000250: 00002217 auipc tp,0x2 -80000254: db920213 addi tp,tp,-583 # 80002009 -80000258: 00020283 lb t0,0(tp) # 0 <_start-0x80000000> -8000025c: f9800e93 li t4,-104 -80000260: 00b00193 li gp,11 -80000264: 29d29c63 bne t0,t4,800004fc - -80000268 : -80000268: 00c00193 li gp,12 -8000026c: 00000213 li tp,0 -80000270: fdd00093 li ra,-35 -80000274: 00002117 auipc sp,0x2 -80000278: d8c10113 addi sp,sp,-628 # 80002000 -8000027c: 00110023 sb ra,0(sp) -80000280: 00010703 lb a4,0(sp) -80000284: fdd00e93 li t4,-35 -80000288: 27d71a63 bne a4,t4,800004fc -8000028c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000290: 00200293 li t0,2 -80000294: fc521ee3 bne tp,t0,80000270 - -80000298 : -80000298: 00d00193 li gp,13 -8000029c: 00000213 li tp,0 -800002a0: fcd00093 li ra,-51 -800002a4: 00002117 auipc sp,0x2 -800002a8: d5c10113 addi sp,sp,-676 # 80002000 -800002ac: 00000013 nop -800002b0: 001100a3 sb ra,1(sp) -800002b4: 00110703 lb a4,1(sp) -800002b8: fcd00e93 li t4,-51 -800002bc: 25d71063 bne a4,t4,800004fc -800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002c4: 00200293 li t0,2 -800002c8: fc521ce3 bne tp,t0,800002a0 - -800002cc : -800002cc: 00e00193 li gp,14 -800002d0: 00000213 li tp,0 -800002d4: fcc00093 li ra,-52 -800002d8: 00002117 auipc sp,0x2 -800002dc: d2810113 addi sp,sp,-728 # 80002000 -800002e0: 00000013 nop -800002e4: 00000013 nop -800002e8: 00110123 sb ra,2(sp) -800002ec: 00210703 lb a4,2(sp) -800002f0: fcc00e93 li t4,-52 -800002f4: 21d71463 bne a4,t4,800004fc -800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002fc: 00200293 li t0,2 -80000300: fc521ae3 bne tp,t0,800002d4 - -80000304 : -80000304: 00f00193 li gp,15 -80000308: 00000213 li tp,0 -8000030c: fbc00093 li ra,-68 -80000310: 00000013 nop -80000314: 00002117 auipc sp,0x2 -80000318: cec10113 addi sp,sp,-788 # 80002000 -8000031c: 001101a3 sb ra,3(sp) -80000320: 00310703 lb a4,3(sp) -80000324: fbc00e93 li t4,-68 -80000328: 1dd71a63 bne a4,t4,800004fc -8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000330: 00200293 li t0,2 -80000334: fc521ce3 bne tp,t0,8000030c - -80000338 : -80000338: 01000193 li gp,16 -8000033c: 00000213 li tp,0 -80000340: fbb00093 li ra,-69 -80000344: 00000013 nop -80000348: 00002117 auipc sp,0x2 -8000034c: cb810113 addi sp,sp,-840 # 80002000 -80000350: 00000013 nop -80000354: 00110223 sb ra,4(sp) -80000358: 00410703 lb a4,4(sp) -8000035c: fbb00e93 li t4,-69 -80000360: 19d71e63 bne a4,t4,800004fc -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fc521ae3 bne tp,t0,80000340 - -80000370 : -80000370: 01100193 li gp,17 -80000374: 00000213 li tp,0 -80000378: fab00093 li ra,-85 -8000037c: 00000013 nop -80000380: 00000013 nop -80000384: 00002117 auipc sp,0x2 -80000388: c7c10113 addi sp,sp,-900 # 80002000 -8000038c: 001102a3 sb ra,5(sp) -80000390: 00510703 lb a4,5(sp) -80000394: fab00e93 li t4,-85 -80000398: 17d71263 bne a4,t4,800004fc -8000039c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003a0: 00200293 li t0,2 -800003a4: fc521ae3 bne tp,t0,80000378 - -800003a8 : -800003a8: 01200193 li gp,18 -800003ac: 00000213 li tp,0 -800003b0: 00002117 auipc sp,0x2 -800003b4: c5010113 addi sp,sp,-944 # 80002000 -800003b8: 03300093 li ra,51 -800003bc: 00110023 sb ra,0(sp) -800003c0: 00010703 lb a4,0(sp) -800003c4: 03300e93 li t4,51 -800003c8: 13d71a63 bne a4,t4,800004fc -800003cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003d0: 00200293 li t0,2 -800003d4: fc521ee3 bne tp,t0,800003b0 - -800003d8 : -800003d8: 01300193 li gp,19 -800003dc: 00000213 li tp,0 -800003e0: 00002117 auipc sp,0x2 -800003e4: c2010113 addi sp,sp,-992 # 80002000 -800003e8: 02300093 li ra,35 -800003ec: 00000013 nop -800003f0: 001100a3 sb ra,1(sp) -800003f4: 00110703 lb a4,1(sp) -800003f8: 02300e93 li t4,35 -800003fc: 11d71063 bne a4,t4,800004fc -80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000404: 00200293 li t0,2 -80000408: fc521ce3 bne tp,t0,800003e0 - -8000040c : -8000040c: 01400193 li gp,20 -80000410: 00000213 li tp,0 -80000414: 00002117 auipc sp,0x2 -80000418: bec10113 addi sp,sp,-1044 # 80002000 -8000041c: 02200093 li ra,34 -80000420: 00000013 nop -80000424: 00000013 nop -80000428: 00110123 sb ra,2(sp) -8000042c: 00210703 lb a4,2(sp) -80000430: 02200e93 li t4,34 -80000434: 0dd71463 bne a4,t4,800004fc -80000438: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000043c: 00200293 li t0,2 -80000440: fc521ae3 bne tp,t0,80000414 - -80000444 : -80000444: 01500193 li gp,21 -80000448: 00000213 li tp,0 -8000044c: 00002117 auipc sp,0x2 -80000450: bb410113 addi sp,sp,-1100 # 80002000 -80000454: 00000013 nop -80000458: 01200093 li ra,18 -8000045c: 001101a3 sb ra,3(sp) -80000460: 00310703 lb a4,3(sp) -80000464: 01200e93 li t4,18 -80000468: 09d71a63 bne a4,t4,800004fc -8000046c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000470: 00200293 li t0,2 -80000474: fc521ce3 bne tp,t0,8000044c - -80000478 : -80000478: 01600193 li gp,22 -8000047c: 00000213 li tp,0 -80000480: 00002117 auipc sp,0x2 -80000484: b8010113 addi sp,sp,-1152 # 80002000 -80000488: 00000013 nop -8000048c: 01100093 li ra,17 -80000490: 00000013 nop -80000494: 00110223 sb ra,4(sp) -80000498: 00410703 lb a4,4(sp) -8000049c: 01100e93 li t4,17 -800004a0: 05d71e63 bne a4,t4,800004fc -800004a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004a8: 00200293 li t0,2 -800004ac: fc521ae3 bne tp,t0,80000480 - -800004b0 : -800004b0: 01700193 li gp,23 -800004b4: 00000213 li tp,0 -800004b8: 00002117 auipc sp,0x2 -800004bc: b4810113 addi sp,sp,-1208 # 80002000 -800004c0: 00000013 nop -800004c4: 00000013 nop -800004c8: 00100093 li ra,1 -800004cc: 001102a3 sb ra,5(sp) -800004d0: 00510703 lb a4,5(sp) -800004d4: 00100e93 li t4,1 -800004d8: 03d71263 bne a4,t4,800004fc -800004dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004e0: 00200293 li t0,2 -800004e4: fc521ae3 bne tp,t0,800004b8 -800004e8: 0ef00513 li a0,239 -800004ec: 00002597 auipc a1,0x2 -800004f0: b1458593 addi a1,a1,-1260 # 80002000 -800004f4: 00a581a3 sb a0,3(a1) -800004f8: 02301063 bne zero,gp,80000518 - -800004fc : -800004fc: 0ff0000f fence -80000500: 00018063 beqz gp,80000500 -80000504: 00119193 slli gp,gp,0x1 -80000508: 0011e193 ori gp,gp,1 -8000050c: 05d00893 li a7,93 -80000510: 00018513 mv a0,gp -80000514: 00000073 ecall - -80000518 : -80000518: 0ff0000f fence -8000051c: 00100193 li gp,1 -80000520: 05d00893 li a7,93 -80000524: 00000513 li a0,0 -80000528: 00000073 ecall -8000052c: c0001073 unimp -80000530: 0000 unimp -80000532: 0000 unimp -80000534: 0000 unimp -80000536: 0000 unimp -80000538: 0000 unimp -8000053a: 0000 unimp -8000053c: 0000 unimp -8000053e: 0000 unimp -80000540: 0000 unimp -80000542: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: jal t6,800006fe - -80002001 : -80002001: jal t6,800006ff - -80002002 : -80002002: jal t6,80000700 - -80002003 : -80002003: jal t6,80000701 - -80002004 : -80002004: jal t6,80000702 - -80002005 : -80002005: jal t6,80000703 - -80002006 : -80002006: jal t6,80000704 - -80002007 : -80002007: jal t6,80100015 <_end+0xfe005> - -80002008 : -80002008: jal t6,80010008 <_end+0xdff8> - -80002009 : -80002009: 000000ef jal ra,80002009 -8000200d: 0000 unimp -8000200f: 00 Address 0x000000008000200f is out of bounds. - diff --git a/benchmarks/riscv_tests/rv32ui-p-sh.dump b/benchmarks/riscv_tests/rv32ui-p-sh.dump deleted file mode 100644 index 11bec70b..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sh.dump +++ /dev/null @@ -1,473 +0,0 @@ - -rv32ui-p-sh: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfdf> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: 0aa00113 li sp,170 -80000114: 00209023 sh sp,0(ra) -80000118: 00009703 lh a4,0(ra) -8000011c: 0aa00e93 li t4,170 -80000120: 00200193 li gp,2 -80000124: 45d71e63 bne a4,t4,80000580 - -80000128 : -80000128: 00002097 auipc ra,0x2 -8000012c: ed808093 addi ra,ra,-296 # 80002000 -80000130: ffffb137 lui sp,0xffffb -80000134: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff89e0> -80000138: 00209123 sh sp,2(ra) -8000013c: 00209703 lh a4,2(ra) -80000140: ffffbeb7 lui t4,0xffffb -80000144: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff89e0> -80000148: 00300193 li gp,3 -8000014c: 43d71a63 bne a4,t4,80000580 - -80000150 : -80000150: 00002097 auipc ra,0x2 -80000154: eb008093 addi ra,ra,-336 # 80002000 -80000158: beef1137 lui sp,0xbeef1 -8000015c: aa010113 addi sp,sp,-1376 # beef0aa0 <_end+0x3eeeea80> -80000160: 00209223 sh sp,4(ra) -80000164: 0040a703 lw a4,4(ra) -80000168: beef1eb7 lui t4,0xbeef1 -8000016c: aa0e8e93 addi t4,t4,-1376 # beef0aa0 <_end+0x3eeeea80> -80000170: 00400193 li gp,4 -80000174: 41d71663 bne a4,t4,80000580 - -80000178 : -80000178: 00002097 auipc ra,0x2 -8000017c: e8808093 addi ra,ra,-376 # 80002000 -80000180: ffffa137 lui sp,0xffffa -80000184: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff7fea> -80000188: 00209323 sh sp,6(ra) -8000018c: 00609703 lh a4,6(ra) -80000190: ffffaeb7 lui t4,0xffffa -80000194: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff7fea> -80000198: 00500193 li gp,5 -8000019c: 3fd71263 bne a4,t4,80000580 - -800001a0 : -800001a0: 00002097 auipc ra,0x2 -800001a4: e6e08093 addi ra,ra,-402 # 8000200e -800001a8: 0aa00113 li sp,170 -800001ac: fe209d23 sh sp,-6(ra) -800001b0: ffa09703 lh a4,-6(ra) -800001b4: 0aa00e93 li t4,170 -800001b8: 00600193 li gp,6 -800001bc: 3dd71263 bne a4,t4,80000580 - -800001c0 : -800001c0: 00002097 auipc ra,0x2 -800001c4: e4e08093 addi ra,ra,-434 # 8000200e -800001c8: ffffb137 lui sp,0xffffb -800001cc: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff89e0> -800001d0: fe209e23 sh sp,-4(ra) -800001d4: ffc09703 lh a4,-4(ra) -800001d8: ffffbeb7 lui t4,0xffffb -800001dc: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff89e0> -800001e0: 00700193 li gp,7 -800001e4: 39d71e63 bne a4,t4,80000580 - -800001e8 : -800001e8: 00002097 auipc ra,0x2 -800001ec: e2608093 addi ra,ra,-474 # 8000200e -800001f0: 00001137 lui sp,0x1 -800001f4: aa010113 addi sp,sp,-1376 # aa0 <_start-0x7ffff560> -800001f8: fe209f23 sh sp,-2(ra) -800001fc: ffe09703 lh a4,-2(ra) -80000200: 00001eb7 lui t4,0x1 -80000204: aa0e8e93 addi t4,t4,-1376 # aa0 <_start-0x7ffff560> -80000208: 00800193 li gp,8 -8000020c: 37d71a63 bne a4,t4,80000580 - -80000210 : -80000210: 00002097 auipc ra,0x2 -80000214: dfe08093 addi ra,ra,-514 # 8000200e -80000218: ffffa137 lui sp,0xffffa -8000021c: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff7fea> -80000220: 00209023 sh sp,0(ra) -80000224: 00009703 lh a4,0(ra) -80000228: ffffaeb7 lui t4,0xffffa -8000022c: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff7fea> -80000230: 00900193 li gp,9 -80000234: 35d71663 bne a4,t4,80000580 - -80000238 : -80000238: 00002097 auipc ra,0x2 -8000023c: dd808093 addi ra,ra,-552 # 80002010 -80000240: 12345137 lui sp,0x12345 -80000244: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> -80000248: fe008213 addi tp,ra,-32 -8000024c: 02221023 sh sp,32(tp) # 20 <_start-0x7fffffe0> -80000250: 00009283 lh t0,0(ra) -80000254: 00005eb7 lui t4,0x5 -80000258: 678e8e93 addi t4,t4,1656 # 5678 <_start-0x7fffa988> -8000025c: 00a00193 li gp,10 -80000260: 33d29063 bne t0,t4,80000580 - -80000264 : -80000264: 00002097 auipc ra,0x2 -80000268: dac08093 addi ra,ra,-596 # 80002010 -8000026c: 00003137 lui sp,0x3 -80000270: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68> -80000274: ffb08093 addi ra,ra,-5 -80000278: 002093a3 sh sp,7(ra) -8000027c: 00002217 auipc tp,0x2 -80000280: d9620213 addi tp,tp,-618 # 80002012 -80000284: 00021283 lh t0,0(tp) # 0 <_start-0x80000000> -80000288: 00003eb7 lui t4,0x3 -8000028c: 098e8e93 addi t4,t4,152 # 3098 <_start-0x7fffcf68> -80000290: 00b00193 li gp,11 -80000294: 2fd29663 bne t0,t4,80000580 - -80000298 : -80000298: 00c00193 li gp,12 -8000029c: 00000213 li tp,0 -800002a0: ffffd0b7 lui ra,0xffffd -800002a4: cdd08093 addi ra,ra,-803 # ffffccdd <_end+0x7fffacbd> -800002a8: 00002117 auipc sp,0x2 -800002ac: d5810113 addi sp,sp,-680 # 80002000 -800002b0: 00111023 sh ra,0(sp) -800002b4: 00011703 lh a4,0(sp) -800002b8: ffffdeb7 lui t4,0xffffd -800002bc: cdde8e93 addi t4,t4,-803 # ffffccdd <_end+0x7fffacbd> -800002c0: 2dd71063 bne a4,t4,80000580 -800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002c8: 00200293 li t0,2 -800002cc: fc521ae3 bne tp,t0,800002a0 - -800002d0 : -800002d0: 00d00193 li gp,13 -800002d4: 00000213 li tp,0 -800002d8: ffffc0b7 lui ra,0xffffc -800002dc: ccd08093 addi ra,ra,-819 # ffffbccd <_end+0x7fff9cad> -800002e0: 00002117 auipc sp,0x2 -800002e4: d2010113 addi sp,sp,-736 # 80002000 -800002e8: 00000013 nop -800002ec: 00111123 sh ra,2(sp) -800002f0: 00211703 lh a4,2(sp) -800002f4: ffffceb7 lui t4,0xffffc -800002f8: ccde8e93 addi t4,t4,-819 # ffffbccd <_end+0x7fff9cad> -800002fc: 29d71263 bne a4,t4,80000580 -80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000304: 00200293 li t0,2 -80000308: fc5218e3 bne tp,t0,800002d8 - -8000030c : -8000030c: 00e00193 li gp,14 -80000310: 00000213 li tp,0 -80000314: ffffc0b7 lui ra,0xffffc -80000318: bcc08093 addi ra,ra,-1076 # ffffbbcc <_end+0x7fff9bac> -8000031c: 00002117 auipc sp,0x2 -80000320: ce410113 addi sp,sp,-796 # 80002000 -80000324: 00000013 nop -80000328: 00000013 nop -8000032c: 00111223 sh ra,4(sp) -80000330: 00411703 lh a4,4(sp) -80000334: ffffceb7 lui t4,0xffffc -80000338: bcce8e93 addi t4,t4,-1076 # ffffbbcc <_end+0x7fff9bac> -8000033c: 25d71263 bne a4,t4,80000580 -80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000344: 00200293 li t0,2 -80000348: fc5216e3 bne tp,t0,80000314 - -8000034c : -8000034c: 00f00193 li gp,15 -80000350: 00000213 li tp,0 -80000354: ffffb0b7 lui ra,0xffffb -80000358: bbc08093 addi ra,ra,-1092 # ffffabbc <_end+0x7fff8b9c> -8000035c: 00000013 nop -80000360: 00002117 auipc sp,0x2 -80000364: ca010113 addi sp,sp,-864 # 80002000 -80000368: 00111323 sh ra,6(sp) -8000036c: 00611703 lh a4,6(sp) -80000370: ffffbeb7 lui t4,0xffffb -80000374: bbce8e93 addi t4,t4,-1092 # ffffabbc <_end+0x7fff8b9c> -80000378: 21d71463 bne a4,t4,80000580 -8000037c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000380: 00200293 li t0,2 -80000384: fc5218e3 bne tp,t0,80000354 - -80000388 : -80000388: 01000193 li gp,16 -8000038c: 00000213 li tp,0 -80000390: ffffb0b7 lui ra,0xffffb -80000394: abb08093 addi ra,ra,-1349 # ffffaabb <_end+0x7fff8a9b> -80000398: 00000013 nop -8000039c: 00002117 auipc sp,0x2 -800003a0: c6410113 addi sp,sp,-924 # 80002000 -800003a4: 00000013 nop -800003a8: 00111423 sh ra,8(sp) -800003ac: 00811703 lh a4,8(sp) -800003b0: ffffbeb7 lui t4,0xffffb -800003b4: abbe8e93 addi t4,t4,-1349 # ffffaabb <_end+0x7fff8a9b> -800003b8: 1dd71463 bne a4,t4,80000580 -800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003c0: 00200293 li t0,2 -800003c4: fc5216e3 bne tp,t0,80000390 - -800003c8 : -800003c8: 01100193 li gp,17 -800003cc: 00000213 li tp,0 -800003d0: ffffe0b7 lui ra,0xffffe -800003d4: aab08093 addi ra,ra,-1365 # ffffdaab <_end+0x7fffba8b> -800003d8: 00000013 nop -800003dc: 00000013 nop -800003e0: 00002117 auipc sp,0x2 -800003e4: c2010113 addi sp,sp,-992 # 80002000 -800003e8: 00111523 sh ra,10(sp) -800003ec: 00a11703 lh a4,10(sp) -800003f0: ffffeeb7 lui t4,0xffffe -800003f4: aabe8e93 addi t4,t4,-1365 # ffffdaab <_end+0x7fffba8b> -800003f8: 19d71463 bne a4,t4,80000580 -800003fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000400: 00200293 li t0,2 -80000404: fc5216e3 bne tp,t0,800003d0 - -80000408 : -80000408: 01200193 li gp,18 -8000040c: 00000213 li tp,0 -80000410: 00002117 auipc sp,0x2 -80000414: bf010113 addi sp,sp,-1040 # 80002000 -80000418: 000020b7 lui ra,0x2 -8000041c: 23308093 addi ra,ra,563 # 2233 <_start-0x7fffddcd> -80000420: 00111023 sh ra,0(sp) -80000424: 00011703 lh a4,0(sp) -80000428: 00002eb7 lui t4,0x2 -8000042c: 233e8e93 addi t4,t4,563 # 2233 <_start-0x7fffddcd> -80000430: 15d71863 bne a4,t4,80000580 -80000434: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000438: 00200293 li t0,2 -8000043c: fc521ae3 bne tp,t0,80000410 - -80000440 : -80000440: 01300193 li gp,19 -80000444: 00000213 li tp,0 -80000448: 00002117 auipc sp,0x2 -8000044c: bb810113 addi sp,sp,-1096 # 80002000 -80000450: 000010b7 lui ra,0x1 -80000454: 22308093 addi ra,ra,547 # 1223 <_start-0x7fffeddd> -80000458: 00000013 nop -8000045c: 00111123 sh ra,2(sp) -80000460: 00211703 lh a4,2(sp) -80000464: 00001eb7 lui t4,0x1 -80000468: 223e8e93 addi t4,t4,547 # 1223 <_start-0x7fffeddd> -8000046c: 11d71a63 bne a4,t4,80000580 -80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000474: 00200293 li t0,2 -80000478: fc5218e3 bne tp,t0,80000448 - -8000047c : -8000047c: 01400193 li gp,20 -80000480: 00000213 li tp,0 -80000484: 00002117 auipc sp,0x2 -80000488: b7c10113 addi sp,sp,-1156 # 80002000 -8000048c: 000010b7 lui ra,0x1 -80000490: 12208093 addi ra,ra,290 # 1122 <_start-0x7fffeede> -80000494: 00000013 nop -80000498: 00000013 nop -8000049c: 00111223 sh ra,4(sp) -800004a0: 00411703 lh a4,4(sp) -800004a4: 00001eb7 lui t4,0x1 -800004a8: 122e8e93 addi t4,t4,290 # 1122 <_start-0x7fffeede> -800004ac: 0dd71a63 bne a4,t4,80000580 -800004b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004b4: 00200293 li t0,2 -800004b8: fc5216e3 bne tp,t0,80000484 - -800004bc : -800004bc: 01500193 li gp,21 -800004c0: 00000213 li tp,0 -800004c4: 00002117 auipc sp,0x2 -800004c8: b3c10113 addi sp,sp,-1220 # 80002000 -800004cc: 00000013 nop -800004d0: 11200093 li ra,274 -800004d4: 00111323 sh ra,6(sp) -800004d8: 00611703 lh a4,6(sp) -800004dc: 11200e93 li t4,274 -800004e0: 0bd71063 bne a4,t4,80000580 -800004e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004e8: 00200293 li t0,2 -800004ec: fc521ce3 bne tp,t0,800004c4 - -800004f0 : -800004f0: 01600193 li gp,22 -800004f4: 00000213 li tp,0 -800004f8: 00002117 auipc sp,0x2 -800004fc: b0810113 addi sp,sp,-1272 # 80002000 -80000500: 00000013 nop -80000504: 01100093 li ra,17 -80000508: 00000013 nop -8000050c: 00111423 sh ra,8(sp) -80000510: 00811703 lh a4,8(sp) -80000514: 01100e93 li t4,17 -80000518: 07d71463 bne a4,t4,80000580 -8000051c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000520: 00200293 li t0,2 -80000524: fc521ae3 bne tp,t0,800004f8 - -80000528 : -80000528: 01700193 li gp,23 -8000052c: 00000213 li tp,0 -80000530: 00002117 auipc sp,0x2 -80000534: ad010113 addi sp,sp,-1328 # 80002000 -80000538: 00000013 nop -8000053c: 00000013 nop -80000540: 000030b7 lui ra,0x3 -80000544: 00108093 addi ra,ra,1 # 3001 <_start-0x7fffcfff> -80000548: 00111523 sh ra,10(sp) -8000054c: 00a11703 lh a4,10(sp) -80000550: 00003eb7 lui t4,0x3 -80000554: 001e8e93 addi t4,t4,1 # 3001 <_start-0x7fffcfff> -80000558: 03d71463 bne a4,t4,80000580 -8000055c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000560: 00200293 li t0,2 -80000564: fc5216e3 bne tp,t0,80000530 -80000568: 0000c537 lui a0,0xc -8000056c: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111> -80000570: 00002597 auipc a1,0x2 -80000574: a9058593 addi a1,a1,-1392 # 80002000 -80000578: 00a59323 sh a0,6(a1) -8000057c: 02301063 bne zero,gp,8000059c - -80000580 : -80000580: 0ff0000f fence -80000584: 00018063 beqz gp,80000584 -80000588: 00119193 slli gp,gp,0x1 -8000058c: 0011e193 ori gp,gp,1 -80000590: 05d00893 li a7,93 -80000594: 00018513 mv a0,gp -80000598: 00000073 ecall - -8000059c : -8000059c: 0ff0000f fence -800005a0: 00100193 li gp,1 -800005a4: 05d00893 li a7,93 -800005a8: 00000513 li a0,0 -800005ac: 00000073 ecall -800005b0: c0001073 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: jal t4,7fffd3ee <_start-0x2c12> - -80002002 : -80002002: jal t4,7fffd3f0 <_start-0x2c10> - -80002004 : -80002004: jal t4,7fffd3f2 <_start-0x2c0e> - -80002006 : -80002006: jal t4,7fffd3f4 <_start-0x2c0c> - -80002008 : -80002008: jal t4,7fffd3f6 <_start-0x2c0a> - -8000200a : -8000200a: jal t4,7fffd3f8 <_start-0x2c08> - -8000200c : -8000200c: jal t4,7fffd3fa <_start-0x2c06> - -8000200e : -8000200e: jal t4,7fffd3fc <_start-0x2c04> - -80002010 : -80002010: jal t4,7fffd3fe <_start-0x2c02> - -80002012 : -80002012: 0000beef jal t4,8000d012 <_end+0xaff2> -80002016: 0000 unimp -80002018: 0000 unimp -8000201a: 0000 unimp -8000201c: 0000 unimp -8000201e: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-simple.dump b/benchmarks/riscv_tests/rv32ui-p-simple.dump deleted file mode 100644 index 4ef40215..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-simple.dump +++ /dev/null @@ -1,105 +0,0 @@ - -rv32ui-p-simple: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret -80000108: 0ff0000f fence -8000010c: 00100193 li gp,1 -80000110: 05d00893 li a7,93 -80000114: 00000513 li a0,0 -80000118: 00000073 ecall -8000011c: c0001073 unimp -80000120: 0000 unimp -80000122: 0000 unimp -80000124: 0000 unimp -80000126: 0000 unimp -80000128: 0000 unimp -8000012a: 0000 unimp -8000012c: 0000 unimp -8000012e: 0000 unimp -80000130: 0000 unimp -80000132: 0000 unimp -80000134: 0000 unimp -80000136: 0000 unimp -80000138: 0000 unimp -8000013a: 0000 unimp -8000013c: 0000 unimp -8000013e: 0000 unimp -80000140: 0000 unimp -80000142: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-sll.dump b/benchmarks/riscv_tests/rv32ui-p-sll.dump deleted file mode 100644 index 8406695d..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sll.dump +++ /dev/null @@ -1,548 +0,0 @@ - -rv32ui-p-sll: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00100093 li ra,1 -8000010c: 00000113 li sp,0 -80000110: 00209733 sll a4,ra,sp -80000114: 00100e93 li t4,1 -80000118: 00200193 li gp,2 -8000011c: 53d71e63 bne a4,t4,80000658 - -80000120 : -80000120: 00100093 li ra,1 -80000124: 00100113 li sp,1 -80000128: 00209733 sll a4,ra,sp -8000012c: 00200e93 li t4,2 -80000130: 00300193 li gp,3 -80000134: 53d71263 bne a4,t4,80000658 - -80000138 : -80000138: 00100093 li ra,1 -8000013c: 00700113 li sp,7 -80000140: 00209733 sll a4,ra,sp -80000144: 08000e93 li t4,128 -80000148: 00400193 li gp,4 -8000014c: 51d71663 bne a4,t4,80000658 - -80000150 : -80000150: 00100093 li ra,1 -80000154: 00e00113 li sp,14 -80000158: 00209733 sll a4,ra,sp -8000015c: 00004eb7 lui t4,0x4 -80000160: 00500193 li gp,5 -80000164: 4fd71a63 bne a4,t4,80000658 - -80000168 : -80000168: 00100093 li ra,1 -8000016c: 01f00113 li sp,31 -80000170: 00209733 sll a4,ra,sp -80000174: 80000eb7 lui t4,0x80000 -80000178: 00600193 li gp,6 -8000017c: 4dd71e63 bne a4,t4,80000658 - -80000180 : -80000180: fff00093 li ra,-1 -80000184: 00000113 li sp,0 -80000188: 00209733 sll a4,ra,sp -8000018c: fff00e93 li t4,-1 -80000190: 00700193 li gp,7 -80000194: 4dd71263 bne a4,t4,80000658 - -80000198 : -80000198: fff00093 li ra,-1 -8000019c: 00100113 li sp,1 -800001a0: 00209733 sll a4,ra,sp -800001a4: ffe00e93 li t4,-2 -800001a8: 00800193 li gp,8 -800001ac: 4bd71663 bne a4,t4,80000658 - -800001b0 : -800001b0: fff00093 li ra,-1 -800001b4: 00700113 li sp,7 -800001b8: 00209733 sll a4,ra,sp -800001bc: f8000e93 li t4,-128 -800001c0: 00900193 li gp,9 -800001c4: 49d71a63 bne a4,t4,80000658 - -800001c8 : -800001c8: fff00093 li ra,-1 -800001cc: 00e00113 li sp,14 -800001d0: 00209733 sll a4,ra,sp -800001d4: ffffceb7 lui t4,0xffffc -800001d8: 00a00193 li gp,10 -800001dc: 47d71e63 bne a4,t4,80000658 - -800001e0 : -800001e0: fff00093 li ra,-1 -800001e4: 01f00113 li sp,31 -800001e8: 00209733 sll a4,ra,sp -800001ec: 80000eb7 lui t4,0x80000 -800001f0: 00b00193 li gp,11 -800001f4: 47d71263 bne a4,t4,80000658 - -800001f8 : -800001f8: 212120b7 lui ra,0x21212 -800001fc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000200: 00000113 li sp,0 -80000204: 00209733 sll a4,ra,sp -80000208: 21212eb7 lui t4,0x21212 -8000020c: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> -80000210: 00c00193 li gp,12 -80000214: 45d71263 bne a4,t4,80000658 - -80000218 : -80000218: 212120b7 lui ra,0x21212 -8000021c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000220: 00100113 li sp,1 -80000224: 00209733 sll a4,ra,sp -80000228: 42424eb7 lui t4,0x42424 -8000022c: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> -80000230: 00d00193 li gp,13 -80000234: 43d71263 bne a4,t4,80000658 - -80000238 : -80000238: 212120b7 lui ra,0x21212 -8000023c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000240: 00700113 li sp,7 -80000244: 00209733 sll a4,ra,sp -80000248: 90909eb7 lui t4,0x90909 -8000024c: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080> -80000250: 00e00193 li gp,14 -80000254: 41d71263 bne a4,t4,80000658 - -80000258 : -80000258: 212120b7 lui ra,0x21212 -8000025c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000260: 00e00113 li sp,14 -80000264: 00209733 sll a4,ra,sp -80000268: 48484eb7 lui t4,0x48484 -8000026c: 00f00193 li gp,15 -80000270: 3fd71463 bne a4,t4,80000658 - -80000274 : -80000274: 212120b7 lui ra,0x21212 -80000278: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -8000027c: 01f00113 li sp,31 -80000280: 00209733 sll a4,ra,sp -80000284: 80000eb7 lui t4,0x80000 -80000288: 01000193 li gp,16 -8000028c: 3dd71663 bne a4,t4,80000658 - -80000290 : -80000290: 212120b7 lui ra,0x21212 -80000294: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000298: fc000113 li sp,-64 -8000029c: 00209733 sll a4,ra,sp -800002a0: 21212eb7 lui t4,0x21212 -800002a4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> -800002a8: 01100193 li gp,17 -800002ac: 3bd71663 bne a4,t4,80000658 - -800002b0 : -800002b0: 212120b7 lui ra,0x21212 -800002b4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800002b8: fc100113 li sp,-63 -800002bc: 00209733 sll a4,ra,sp -800002c0: 42424eb7 lui t4,0x42424 -800002c4: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> -800002c8: 01200193 li gp,18 -800002cc: 39d71663 bne a4,t4,80000658 - -800002d0 : -800002d0: 212120b7 lui ra,0x21212 -800002d4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800002d8: fc700113 li sp,-57 -800002dc: 00209733 sll a4,ra,sp -800002e0: 90909eb7 lui t4,0x90909 -800002e4: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080> -800002e8: 01300193 li gp,19 -800002ec: 37d71663 bne a4,t4,80000658 - -800002f0 : -800002f0: 212120b7 lui ra,0x21212 -800002f4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800002f8: fce00113 li sp,-50 -800002fc: 00209733 sll a4,ra,sp -80000300: 48484eb7 lui t4,0x48484 -80000304: 01400193 li gp,20 -80000308: 35d71863 bne a4,t4,80000658 - -8000030c : -8000030c: 00100093 li ra,1 -80000310: 00700113 li sp,7 -80000314: 002090b3 sll ra,ra,sp -80000318: 08000e93 li t4,128 -8000031c: 01600193 li gp,22 -80000320: 33d09c63 bne ra,t4,80000658 - -80000324 : -80000324: 00100093 li ra,1 -80000328: 00e00113 li sp,14 -8000032c: 00209133 sll sp,ra,sp -80000330: 00004eb7 lui t4,0x4 -80000334: 01700193 li gp,23 -80000338: 33d11063 bne sp,t4,80000658 - -8000033c : -8000033c: 00300093 li ra,3 -80000340: 001090b3 sll ra,ra,ra -80000344: 01800e93 li t4,24 -80000348: 01800193 li gp,24 -8000034c: 31d09663 bne ra,t4,80000658 - -80000350 : -80000350: 00000213 li tp,0 -80000354: 00100093 li ra,1 -80000358: 00700113 li sp,7 -8000035c: 00209733 sll a4,ra,sp -80000360: 00070313 mv t1,a4 -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5214e3 bne tp,t0,80000354 -80000370: 08000e93 li t4,128 -80000374: 01900193 li gp,25 -80000378: 2fd31063 bne t1,t4,80000658 - -8000037c : -8000037c: 00000213 li tp,0 -80000380: 00100093 li ra,1 -80000384: 00e00113 li sp,14 -80000388: 00209733 sll a4,ra,sp -8000038c: 00000013 nop -80000390: 00070313 mv t1,a4 -80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000398: 00200293 li t0,2 -8000039c: fe5212e3 bne tp,t0,80000380 -800003a0: 00004eb7 lui t4,0x4 -800003a4: 01a00193 li gp,26 -800003a8: 2bd31863 bne t1,t4,80000658 - -800003ac : -800003ac: 00000213 li tp,0 -800003b0: 00100093 li ra,1 -800003b4: 01f00113 li sp,31 -800003b8: 00209733 sll a4,ra,sp -800003bc: 00000013 nop -800003c0: 00000013 nop -800003c4: 00070313 mv t1,a4 -800003c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003cc: 00200293 li t0,2 -800003d0: fe5210e3 bne tp,t0,800003b0 -800003d4: 80000eb7 lui t4,0x80000 -800003d8: 01b00193 li gp,27 -800003dc: 27d31e63 bne t1,t4,80000658 - -800003e0 : -800003e0: 00000213 li tp,0 -800003e4: 00100093 li ra,1 -800003e8: 00700113 li sp,7 -800003ec: 00209733 sll a4,ra,sp -800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f4: 00200293 li t0,2 -800003f8: fe5216e3 bne tp,t0,800003e4 -800003fc: 08000e93 li t4,128 -80000400: 01c00193 li gp,28 -80000404: 25d71a63 bne a4,t4,80000658 - -80000408 : -80000408: 00000213 li tp,0 -8000040c: 00100093 li ra,1 -80000410: 00e00113 li sp,14 -80000414: 00000013 nop -80000418: 00209733 sll a4,ra,sp -8000041c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000420: 00200293 li t0,2 -80000424: fe5214e3 bne tp,t0,8000040c -80000428: 00004eb7 lui t4,0x4 -8000042c: 01d00193 li gp,29 -80000430: 23d71463 bne a4,t4,80000658 - -80000434 : -80000434: 00000213 li tp,0 -80000438: 00100093 li ra,1 -8000043c: 01f00113 li sp,31 -80000440: 00000013 nop -80000444: 00000013 nop -80000448: 00209733 sll a4,ra,sp -8000044c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000450: 00200293 li t0,2 -80000454: fe5212e3 bne tp,t0,80000438 -80000458: 80000eb7 lui t4,0x80000 -8000045c: 01e00193 li gp,30 -80000460: 1fd71c63 bne a4,t4,80000658 - -80000464 : -80000464: 00000213 li tp,0 -80000468: 00100093 li ra,1 -8000046c: 00000013 nop -80000470: 00700113 li sp,7 -80000474: 00209733 sll a4,ra,sp -80000478: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000047c: 00200293 li t0,2 -80000480: fe5214e3 bne tp,t0,80000468 -80000484: 08000e93 li t4,128 -80000488: 01f00193 li gp,31 -8000048c: 1dd71663 bne a4,t4,80000658 - -80000490 : -80000490: 00000213 li tp,0 -80000494: 00100093 li ra,1 -80000498: 00000013 nop -8000049c: 00e00113 li sp,14 -800004a0: 00000013 nop -800004a4: 00209733 sll a4,ra,sp -800004a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004ac: 00200293 li t0,2 -800004b0: fe5212e3 bne tp,t0,80000494 -800004b4: 00004eb7 lui t4,0x4 -800004b8: 02000193 li gp,32 -800004bc: 19d71e63 bne a4,t4,80000658 - -800004c0 : -800004c0: 00000213 li tp,0 -800004c4: 00100093 li ra,1 -800004c8: 00000013 nop -800004cc: 00000013 nop -800004d0: 01f00113 li sp,31 -800004d4: 00209733 sll a4,ra,sp -800004d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004dc: 00200293 li t0,2 -800004e0: fe5212e3 bne tp,t0,800004c4 -800004e4: 80000eb7 lui t4,0x80000 -800004e8: 02100193 li gp,33 -800004ec: 17d71663 bne a4,t4,80000658 - -800004f0 : -800004f0: 00000213 li tp,0 -800004f4: 00700113 li sp,7 -800004f8: 00100093 li ra,1 -800004fc: 00209733 sll a4,ra,sp -80000500: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000504: 00200293 li t0,2 -80000508: fe5216e3 bne tp,t0,800004f4 -8000050c: 08000e93 li t4,128 -80000510: 02200193 li gp,34 -80000514: 15d71263 bne a4,t4,80000658 - -80000518 : -80000518: 00000213 li tp,0 -8000051c: 00e00113 li sp,14 -80000520: 00100093 li ra,1 -80000524: 00000013 nop -80000528: 00209733 sll a4,ra,sp -8000052c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000530: 00200293 li t0,2 -80000534: fe5214e3 bne tp,t0,8000051c -80000538: 00004eb7 lui t4,0x4 -8000053c: 02300193 li gp,35 -80000540: 11d71c63 bne a4,t4,80000658 - -80000544 : -80000544: 00000213 li tp,0 -80000548: 01f00113 li sp,31 -8000054c: 00100093 li ra,1 -80000550: 00000013 nop -80000554: 00000013 nop -80000558: 00209733 sll a4,ra,sp -8000055c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000560: 00200293 li t0,2 -80000564: fe5212e3 bne tp,t0,80000548 -80000568: 80000eb7 lui t4,0x80000 -8000056c: 02400193 li gp,36 -80000570: 0fd71463 bne a4,t4,80000658 - -80000574 : -80000574: 00000213 li tp,0 -80000578: 00700113 li sp,7 -8000057c: 00000013 nop -80000580: 00100093 li ra,1 -80000584: 00209733 sll a4,ra,sp -80000588: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000058c: 00200293 li t0,2 -80000590: fe5214e3 bne tp,t0,80000578 -80000594: 08000e93 li t4,128 -80000598: 02500193 li gp,37 -8000059c: 0bd71e63 bne a4,t4,80000658 - -800005a0 : -800005a0: 00000213 li tp,0 -800005a4: 00e00113 li sp,14 -800005a8: 00000013 nop -800005ac: 00100093 li ra,1 -800005b0: 00000013 nop -800005b4: 00209733 sll a4,ra,sp -800005b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800005bc: 00200293 li t0,2 -800005c0: fe5212e3 bne tp,t0,800005a4 -800005c4: 00004eb7 lui t4,0x4 -800005c8: 02600193 li gp,38 -800005cc: 09d71663 bne a4,t4,80000658 - -800005d0 : -800005d0: 00000213 li tp,0 -800005d4: 01f00113 li sp,31 -800005d8: 00000013 nop -800005dc: 00000013 nop -800005e0: 00100093 li ra,1 -800005e4: 00209733 sll a4,ra,sp -800005e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800005ec: 00200293 li t0,2 -800005f0: fe5212e3 bne tp,t0,800005d4 -800005f4: 80000eb7 lui t4,0x80000 -800005f8: 02700193 li gp,39 -800005fc: 05d71e63 bne a4,t4,80000658 - -80000600 : -80000600: 00f00093 li ra,15 -80000604: 00101133 sll sp,zero,ra -80000608: 00000e93 li t4,0 -8000060c: 02800193 li gp,40 -80000610: 05d11463 bne sp,t4,80000658 - -80000614 : -80000614: 02000093 li ra,32 -80000618: 00009133 sll sp,ra,zero -8000061c: 02000e93 li t4,32 -80000620: 02900193 li gp,41 -80000624: 03d11a63 bne sp,t4,80000658 - -80000628 : -80000628: 000010b3 sll ra,zero,zero -8000062c: 00000e93 li t4,0 -80000630: 02a00193 li gp,42 -80000634: 03d09263 bne ra,t4,80000658 - -80000638 : -80000638: 40000093 li ra,1024 -8000063c: 00001137 lui sp,0x1 -80000640: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> -80000644: 00209033 sll zero,ra,sp -80000648: 00000e93 li t4,0 -8000064c: 02b00193 li gp,43 -80000650: 01d01463 bne zero,t4,80000658 -80000654: 02301063 bne zero,gp,80000674 - -80000658 : -80000658: 0ff0000f fence -8000065c: 00018063 beqz gp,8000065c -80000660: 00119193 slli gp,gp,0x1 -80000664: 0011e193 ori gp,gp,1 -80000668: 05d00893 li a7,93 -8000066c: 00018513 mv a0,gp -80000670: 00000073 ecall - -80000674 : -80000674: 0ff0000f fence -80000678: 00100193 li gp,1 -8000067c: 05d00893 li a7,93 -80000680: 00000513 li a0,0 -80000684: 00000073 ecall -80000688: c0001073 unimp -8000068c: 0000 unimp -8000068e: 0000 unimp -80000690: 0000 unimp -80000692: 0000 unimp -80000694: 0000 unimp -80000696: 0000 unimp -80000698: 0000 unimp -8000069a: 0000 unimp -8000069c: 0000 unimp -8000069e: 0000 unimp -800006a0: 0000 unimp -800006a2: 0000 unimp -800006a4: 0000 unimp -800006a6: 0000 unimp -800006a8: 0000 unimp -800006aa: 0000 unimp -800006ac: 0000 unimp -800006ae: 0000 unimp -800006b0: 0000 unimp -800006b2: 0000 unimp -800006b4: 0000 unimp -800006b6: 0000 unimp -800006b8: 0000 unimp -800006ba: 0000 unimp -800006bc: 0000 unimp -800006be: 0000 unimp -800006c0: 0000 unimp -800006c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-slli.dump b/benchmarks/riscv_tests/rv32ui-p-slli.dump deleted file mode 100644 index 9010d0ba..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-slli.dump +++ /dev/null @@ -1,309 +0,0 @@ - -rv32ui-p-slli: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00100093 li ra,1 -8000010c: 00009713 slli a4,ra,0x0 -80000110: 00100e93 li t4,1 -80000114: 00200193 li gp,2 -80000118: 27d71a63 bne a4,t4,8000038c - -8000011c : -8000011c: 00100093 li ra,1 -80000120: 00109713 slli a4,ra,0x1 -80000124: 00200e93 li t4,2 -80000128: 00300193 li gp,3 -8000012c: 27d71063 bne a4,t4,8000038c - -80000130 : -80000130: 00100093 li ra,1 -80000134: 00709713 slli a4,ra,0x7 -80000138: 08000e93 li t4,128 -8000013c: 00400193 li gp,4 -80000140: 25d71663 bne a4,t4,8000038c - -80000144 : -80000144: 00100093 li ra,1 -80000148: 00e09713 slli a4,ra,0xe -8000014c: 00004eb7 lui t4,0x4 -80000150: 00500193 li gp,5 -80000154: 23d71c63 bne a4,t4,8000038c - -80000158 : -80000158: 00100093 li ra,1 -8000015c: 01f09713 slli a4,ra,0x1f -80000160: 80000eb7 lui t4,0x80000 -80000164: 00600193 li gp,6 -80000168: 23d71263 bne a4,t4,8000038c - -8000016c : -8000016c: fff00093 li ra,-1 -80000170: 00009713 slli a4,ra,0x0 -80000174: fff00e93 li t4,-1 -80000178: 00700193 li gp,7 -8000017c: 21d71863 bne a4,t4,8000038c - -80000180 : -80000180: fff00093 li ra,-1 -80000184: 00109713 slli a4,ra,0x1 -80000188: ffe00e93 li t4,-2 -8000018c: 00800193 li gp,8 -80000190: 1fd71e63 bne a4,t4,8000038c - -80000194 : -80000194: fff00093 li ra,-1 -80000198: 00709713 slli a4,ra,0x7 -8000019c: f8000e93 li t4,-128 -800001a0: 00900193 li gp,9 -800001a4: 1fd71463 bne a4,t4,8000038c - -800001a8 : -800001a8: fff00093 li ra,-1 -800001ac: 00e09713 slli a4,ra,0xe -800001b0: ffffceb7 lui t4,0xffffc -800001b4: 00a00193 li gp,10 -800001b8: 1dd71a63 bne a4,t4,8000038c - -800001bc : -800001bc: fff00093 li ra,-1 -800001c0: 01f09713 slli a4,ra,0x1f -800001c4: 80000eb7 lui t4,0x80000 -800001c8: 00b00193 li gp,11 -800001cc: 1dd71063 bne a4,t4,8000038c - -800001d0 : -800001d0: 212120b7 lui ra,0x21212 -800001d4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800001d8: 00009713 slli a4,ra,0x0 -800001dc: 21212eb7 lui t4,0x21212 -800001e0: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> -800001e4: 00c00193 li gp,12 -800001e8: 1bd71263 bne a4,t4,8000038c - -800001ec : -800001ec: 212120b7 lui ra,0x21212 -800001f0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800001f4: 00109713 slli a4,ra,0x1 -800001f8: 42424eb7 lui t4,0x42424 -800001fc: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> -80000200: 00d00193 li gp,13 -80000204: 19d71463 bne a4,t4,8000038c - -80000208 : -80000208: 212120b7 lui ra,0x21212 -8000020c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000210: 00709713 slli a4,ra,0x7 -80000214: 90909eb7 lui t4,0x90909 -80000218: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080> -8000021c: 00e00193 li gp,14 -80000220: 17d71663 bne a4,t4,8000038c - -80000224 : -80000224: 212120b7 lui ra,0x21212 -80000228: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -8000022c: 00e09713 slli a4,ra,0xe -80000230: 48484eb7 lui t4,0x48484 -80000234: 00f00193 li gp,15 -80000238: 15d71a63 bne a4,t4,8000038c - -8000023c : -8000023c: 212120b7 lui ra,0x21212 -80000240: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000244: 01f09713 slli a4,ra,0x1f -80000248: 80000eb7 lui t4,0x80000 -8000024c: 01000193 li gp,16 -80000250: 13d71e63 bne a4,t4,8000038c - -80000254 : -80000254: 00100093 li ra,1 -80000258: 00709093 slli ra,ra,0x7 -8000025c: 08000e93 li t4,128 -80000260: 01100193 li gp,17 -80000264: 13d09463 bne ra,t4,8000038c - -80000268 : -80000268: 00000213 li tp,0 -8000026c: 00100093 li ra,1 -80000270: 00709713 slli a4,ra,0x7 -80000274: 00070313 mv t1,a4 -80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000027c: 00200293 li t0,2 -80000280: fe5216e3 bne tp,t0,8000026c -80000284: 08000e93 li t4,128 -80000288: 01200193 li gp,18 -8000028c: 11d31063 bne t1,t4,8000038c - -80000290 : -80000290: 00000213 li tp,0 -80000294: 00100093 li ra,1 -80000298: 00e09713 slli a4,ra,0xe -8000029c: 00000013 nop -800002a0: 00070313 mv t1,a4 -800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a8: 00200293 li t0,2 -800002ac: fe5214e3 bne tp,t0,80000294 -800002b0: 00004eb7 lui t4,0x4 -800002b4: 01300193 li gp,19 -800002b8: 0dd31a63 bne t1,t4,8000038c - -800002bc : -800002bc: 00000213 li tp,0 -800002c0: 00100093 li ra,1 -800002c4: 01f09713 slli a4,ra,0x1f -800002c8: 00000013 nop -800002cc: 00000013 nop -800002d0: 00070313 mv t1,a4 -800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d8: 00200293 li t0,2 -800002dc: fe5212e3 bne tp,t0,800002c0 -800002e0: 80000eb7 lui t4,0x80000 -800002e4: 01400193 li gp,20 -800002e8: 0bd31263 bne t1,t4,8000038c - -800002ec : -800002ec: 00000213 li tp,0 -800002f0: 00100093 li ra,1 -800002f4: 00709713 slli a4,ra,0x7 -800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002fc: 00200293 li t0,2 -80000300: fe5218e3 bne tp,t0,800002f0 -80000304: 08000e93 li t4,128 -80000308: 01500193 li gp,21 -8000030c: 09d71063 bne a4,t4,8000038c - -80000310 : -80000310: 00000213 li tp,0 -80000314: 00100093 li ra,1 -80000318: 00000013 nop -8000031c: 00e09713 slli a4,ra,0xe -80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000324: 00200293 li t0,2 -80000328: fe5216e3 bne tp,t0,80000314 -8000032c: 00004eb7 lui t4,0x4 -80000330: 01600193 li gp,22 -80000334: 05d71c63 bne a4,t4,8000038c - -80000338 : -80000338: 00000213 li tp,0 -8000033c: 00100093 li ra,1 -80000340: 00000013 nop -80000344: 00000013 nop -80000348: 01f09713 slli a4,ra,0x1f -8000034c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000350: 00200293 li t0,2 -80000354: fe5214e3 bne tp,t0,8000033c -80000358: 80000eb7 lui t4,0x80000 -8000035c: 01700193 li gp,23 -80000360: 03d71663 bne a4,t4,8000038c - -80000364 : -80000364: 01f01093 slli ra,zero,0x1f -80000368: 00000e93 li t4,0 -8000036c: 01800193 li gp,24 -80000370: 01d09e63 bne ra,t4,8000038c - -80000374 : -80000374: 02100093 li ra,33 -80000378: 01409013 slli zero,ra,0x14 -8000037c: 00000e93 li t4,0 -80000380: 01900193 li gp,25 -80000384: 01d01463 bne zero,t4,8000038c -80000388: 02301063 bne zero,gp,800003a8 - -8000038c : -8000038c: 0ff0000f fence -80000390: 00018063 beqz gp,80000390 -80000394: 00119193 slli gp,gp,0x1 -80000398: 0011e193 ori gp,gp,1 -8000039c: 05d00893 li a7,93 -800003a0: 00018513 mv a0,gp -800003a4: 00000073 ecall - -800003a8 : -800003a8: 0ff0000f fence -800003ac: 00100193 li gp,1 -800003b0: 05d00893 li a7,93 -800003b4: 00000513 li a0,0 -800003b8: 00000073 ecall -800003bc: c0001073 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-slt.dump b/benchmarks/riscv_tests/rv32ui-p-slt.dump deleted file mode 100644 index ec7b4174..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-slt.dump +++ /dev/null @@ -1,478 +0,0 @@ - -rv32ui-p-slt: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00000093 li ra,0 -8000010c: 00000113 li sp,0 -80000110: 0020a733 slt a4,ra,sp -80000114: 00000e93 li t4,0 -80000118: 00200193 li gp,2 -8000011c: 4bd71a63 bne a4,t4,800005d0 - -80000120 : -80000120: 00100093 li ra,1 -80000124: 00100113 li sp,1 -80000128: 0020a733 slt a4,ra,sp -8000012c: 00000e93 li t4,0 -80000130: 00300193 li gp,3 -80000134: 49d71e63 bne a4,t4,800005d0 - -80000138 : -80000138: 00300093 li ra,3 -8000013c: 00700113 li sp,7 -80000140: 0020a733 slt a4,ra,sp -80000144: 00100e93 li t4,1 -80000148: 00400193 li gp,4 -8000014c: 49d71263 bne a4,t4,800005d0 - -80000150 : -80000150: 00700093 li ra,7 -80000154: 00300113 li sp,3 -80000158: 0020a733 slt a4,ra,sp -8000015c: 00000e93 li t4,0 -80000160: 00500193 li gp,5 -80000164: 47d71663 bne a4,t4,800005d0 - -80000168 : -80000168: 00000093 li ra,0 -8000016c: ffff8137 lui sp,0xffff8 -80000170: 0020a733 slt a4,ra,sp -80000174: 00000e93 li t4,0 -80000178: 00600193 li gp,6 -8000017c: 45d71a63 bne a4,t4,800005d0 - -80000180 : -80000180: 800000b7 lui ra,0x80000 -80000184: 00000113 li sp,0 -80000188: 0020a733 slt a4,ra,sp -8000018c: 00100e93 li t4,1 -80000190: 00700193 li gp,7 -80000194: 43d71e63 bne a4,t4,800005d0 - -80000198 : -80000198: 800000b7 lui ra,0x80000 -8000019c: ffff8137 lui sp,0xffff8 -800001a0: 0020a733 slt a4,ra,sp -800001a4: 00100e93 li t4,1 -800001a8: 00800193 li gp,8 -800001ac: 43d71263 bne a4,t4,800005d0 - -800001b0 : -800001b0: 00000093 li ra,0 -800001b4: 00008137 lui sp,0x8 -800001b8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001bc: 0020a733 slt a4,ra,sp -800001c0: 00100e93 li t4,1 -800001c4: 00900193 li gp,9 -800001c8: 41d71463 bne a4,t4,800005d0 - -800001cc : -800001cc: 800000b7 lui ra,0x80000 -800001d0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001d4: 00000113 li sp,0 -800001d8: 0020a733 slt a4,ra,sp -800001dc: 00000e93 li t4,0 -800001e0: 00a00193 li gp,10 -800001e4: 3fd71663 bne a4,t4,800005d0 - -800001e8 : -800001e8: 800000b7 lui ra,0x80000 -800001ec: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001f0: 00008137 lui sp,0x8 -800001f4: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001f8: 0020a733 slt a4,ra,sp -800001fc: 00000e93 li t4,0 -80000200: 00b00193 li gp,11 -80000204: 3dd71663 bne a4,t4,800005d0 - -80000208 : -80000208: 800000b7 lui ra,0x80000 -8000020c: 00008137 lui sp,0x8 -80000210: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -80000214: 0020a733 slt a4,ra,sp -80000218: 00100e93 li t4,1 -8000021c: 00c00193 li gp,12 -80000220: 3bd71863 bne a4,t4,800005d0 - -80000224 : -80000224: 800000b7 lui ra,0x80000 -80000228: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -8000022c: ffff8137 lui sp,0xffff8 -80000230: 0020a733 slt a4,ra,sp -80000234: 00000e93 li t4,0 -80000238: 00d00193 li gp,13 -8000023c: 39d71a63 bne a4,t4,800005d0 - -80000240 : -80000240: 00000093 li ra,0 -80000244: fff00113 li sp,-1 -80000248: 0020a733 slt a4,ra,sp -8000024c: 00000e93 li t4,0 -80000250: 00e00193 li gp,14 -80000254: 37d71e63 bne a4,t4,800005d0 - -80000258 : -80000258: fff00093 li ra,-1 -8000025c: 00100113 li sp,1 -80000260: 0020a733 slt a4,ra,sp -80000264: 00100e93 li t4,1 -80000268: 00f00193 li gp,15 -8000026c: 37d71263 bne a4,t4,800005d0 - -80000270 : -80000270: fff00093 li ra,-1 -80000274: fff00113 li sp,-1 -80000278: 0020a733 slt a4,ra,sp -8000027c: 00000e93 li t4,0 -80000280: 01000193 li gp,16 -80000284: 35d71663 bne a4,t4,800005d0 - -80000288 : -80000288: 00e00093 li ra,14 -8000028c: 00d00113 li sp,13 -80000290: 0020a0b3 slt ra,ra,sp -80000294: 00000e93 li t4,0 -80000298: 01100193 li gp,17 -8000029c: 33d09a63 bne ra,t4,800005d0 - -800002a0 : -800002a0: 00b00093 li ra,11 -800002a4: 00d00113 li sp,13 -800002a8: 0020a133 slt sp,ra,sp -800002ac: 00100e93 li t4,1 -800002b0: 01200193 li gp,18 -800002b4: 31d11e63 bne sp,t4,800005d0 - -800002b8 : -800002b8: 00d00093 li ra,13 -800002bc: 0010a0b3 slt ra,ra,ra -800002c0: 00000e93 li t4,0 -800002c4: 01300193 li gp,19 -800002c8: 31d09463 bne ra,t4,800005d0 - -800002cc : -800002cc: 00000213 li tp,0 -800002d0: 00b00093 li ra,11 -800002d4: 00d00113 li sp,13 -800002d8: 0020a733 slt a4,ra,sp -800002dc: 00070313 mv t1,a4 -800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002e4: 00200293 li t0,2 -800002e8: fe5214e3 bne tp,t0,800002d0 -800002ec: 00100e93 li t4,1 -800002f0: 01400193 li gp,20 -800002f4: 2dd31e63 bne t1,t4,800005d0 - -800002f8 : -800002f8: 00000213 li tp,0 -800002fc: 00e00093 li ra,14 -80000300: 00d00113 li sp,13 -80000304: 0020a733 slt a4,ra,sp -80000308: 00000013 nop -8000030c: 00070313 mv t1,a4 -80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000314: 00200293 li t0,2 -80000318: fe5212e3 bne tp,t0,800002fc -8000031c: 00000e93 li t4,0 -80000320: 01500193 li gp,21 -80000324: 2bd31663 bne t1,t4,800005d0 - -80000328 : -80000328: 00000213 li tp,0 -8000032c: 00c00093 li ra,12 -80000330: 00d00113 li sp,13 -80000334: 0020a733 slt a4,ra,sp -80000338: 00000013 nop -8000033c: 00000013 nop -80000340: 00070313 mv t1,a4 -80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000348: 00200293 li t0,2 -8000034c: fe5210e3 bne tp,t0,8000032c -80000350: 00100e93 li t4,1 -80000354: 01600193 li gp,22 -80000358: 27d31c63 bne t1,t4,800005d0 - -8000035c : -8000035c: 00000213 li tp,0 -80000360: 00e00093 li ra,14 -80000364: 00d00113 li sp,13 -80000368: 0020a733 slt a4,ra,sp -8000036c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000370: 00200293 li t0,2 -80000374: fe5216e3 bne tp,t0,80000360 -80000378: 00000e93 li t4,0 -8000037c: 01700193 li gp,23 -80000380: 25d71863 bne a4,t4,800005d0 - -80000384 : -80000384: 00000213 li tp,0 -80000388: 00b00093 li ra,11 -8000038c: 00d00113 li sp,13 -80000390: 00000013 nop -80000394: 0020a733 slt a4,ra,sp -80000398: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000039c: 00200293 li t0,2 -800003a0: fe5214e3 bne tp,t0,80000388 -800003a4: 00100e93 li t4,1 -800003a8: 01800193 li gp,24 -800003ac: 23d71263 bne a4,t4,800005d0 - -800003b0 : -800003b0: 00000213 li tp,0 -800003b4: 00f00093 li ra,15 -800003b8: 00d00113 li sp,13 -800003bc: 00000013 nop -800003c0: 00000013 nop -800003c4: 0020a733 slt a4,ra,sp -800003c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003cc: 00200293 li t0,2 -800003d0: fe5212e3 bne tp,t0,800003b4 -800003d4: 00000e93 li t4,0 -800003d8: 01900193 li gp,25 -800003dc: 1fd71a63 bne a4,t4,800005d0 - -800003e0 : -800003e0: 00000213 li tp,0 -800003e4: 00a00093 li ra,10 -800003e8: 00000013 nop -800003ec: 00d00113 li sp,13 -800003f0: 0020a733 slt a4,ra,sp -800003f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f8: 00200293 li t0,2 -800003fc: fe5214e3 bne tp,t0,800003e4 -80000400: 00100e93 li t4,1 -80000404: 01a00193 li gp,26 -80000408: 1dd71463 bne a4,t4,800005d0 - -8000040c : -8000040c: 00000213 li tp,0 -80000410: 01000093 li ra,16 -80000414: 00000013 nop -80000418: 00d00113 li sp,13 -8000041c: 00000013 nop -80000420: 0020a733 slt a4,ra,sp -80000424: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000428: 00200293 li t0,2 -8000042c: fe5212e3 bne tp,t0,80000410 -80000430: 00000e93 li t4,0 -80000434: 01b00193 li gp,27 -80000438: 19d71c63 bne a4,t4,800005d0 - -8000043c : -8000043c: 00000213 li tp,0 -80000440: 00900093 li ra,9 -80000444: 00000013 nop -80000448: 00000013 nop -8000044c: 00d00113 li sp,13 -80000450: 0020a733 slt a4,ra,sp -80000454: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000458: 00200293 li t0,2 -8000045c: fe5212e3 bne tp,t0,80000440 -80000460: 00100e93 li t4,1 -80000464: 01c00193 li gp,28 -80000468: 17d71463 bne a4,t4,800005d0 - -8000046c : -8000046c: 00000213 li tp,0 -80000470: 00d00113 li sp,13 -80000474: 01100093 li ra,17 -80000478: 0020a733 slt a4,ra,sp -8000047c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000480: 00200293 li t0,2 -80000484: fe5216e3 bne tp,t0,80000470 -80000488: 00000e93 li t4,0 -8000048c: 01d00193 li gp,29 -80000490: 15d71063 bne a4,t4,800005d0 - -80000494 : -80000494: 00000213 li tp,0 -80000498: 00d00113 li sp,13 -8000049c: 00800093 li ra,8 -800004a0: 00000013 nop -800004a4: 0020a733 slt a4,ra,sp -800004a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004ac: 00200293 li t0,2 -800004b0: fe5214e3 bne tp,t0,80000498 -800004b4: 00100e93 li t4,1 -800004b8: 01e00193 li gp,30 -800004bc: 11d71a63 bne a4,t4,800005d0 - -800004c0 : -800004c0: 00000213 li tp,0 -800004c4: 00d00113 li sp,13 -800004c8: 01200093 li ra,18 -800004cc: 00000013 nop -800004d0: 00000013 nop -800004d4: 0020a733 slt a4,ra,sp -800004d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004dc: 00200293 li t0,2 -800004e0: fe5212e3 bne tp,t0,800004c4 -800004e4: 00000e93 li t4,0 -800004e8: 01f00193 li gp,31 -800004ec: 0fd71263 bne a4,t4,800005d0 - -800004f0 : -800004f0: 00000213 li tp,0 -800004f4: 00d00113 li sp,13 -800004f8: 00000013 nop -800004fc: 00700093 li ra,7 -80000500: 0020a733 slt a4,ra,sp -80000504: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000508: 00200293 li t0,2 -8000050c: fe5214e3 bne tp,t0,800004f4 -80000510: 00100e93 li t4,1 -80000514: 02000193 li gp,32 -80000518: 0bd71c63 bne a4,t4,800005d0 - -8000051c : -8000051c: 00000213 li tp,0 -80000520: 00d00113 li sp,13 -80000524: 00000013 nop -80000528: 01300093 li ra,19 -8000052c: 00000013 nop -80000530: 0020a733 slt a4,ra,sp -80000534: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000538: 00200293 li t0,2 -8000053c: fe5212e3 bne tp,t0,80000520 -80000540: 00000e93 li t4,0 -80000544: 02100193 li gp,33 -80000548: 09d71463 bne a4,t4,800005d0 - -8000054c : -8000054c: 00000213 li tp,0 -80000550: 00d00113 li sp,13 -80000554: 00000013 nop -80000558: 00000013 nop -8000055c: 00600093 li ra,6 -80000560: 0020a733 slt a4,ra,sp -80000564: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000568: 00200293 li t0,2 -8000056c: fe5212e3 bne tp,t0,80000550 -80000570: 00100e93 li t4,1 -80000574: 02200193 li gp,34 -80000578: 05d71c63 bne a4,t4,800005d0 - -8000057c : -8000057c: fff00093 li ra,-1 -80000580: 00102133 sgtz sp,ra -80000584: 00000e93 li t4,0 -80000588: 02300193 li gp,35 -8000058c: 05d11263 bne sp,t4,800005d0 - -80000590 : -80000590: fff00093 li ra,-1 -80000594: 0000a133 sltz sp,ra -80000598: 00100e93 li t4,1 -8000059c: 02400193 li gp,36 -800005a0: 03d11863 bne sp,t4,800005d0 - -800005a4 : -800005a4: 000020b3 sltz ra,zero -800005a8: 00000e93 li t4,0 -800005ac: 02500193 li gp,37 -800005b0: 03d09063 bne ra,t4,800005d0 - -800005b4 : -800005b4: 01000093 li ra,16 -800005b8: 01e00113 li sp,30 -800005bc: 0020a033 slt zero,ra,sp -800005c0: 00000e93 li t4,0 -800005c4: 02600193 li gp,38 -800005c8: 01d01463 bne zero,t4,800005d0 -800005cc: 02301063 bne zero,gp,800005ec - -800005d0 : -800005d0: 0ff0000f fence -800005d4: 00018063 beqz gp,800005d4 -800005d8: 00119193 slli gp,gp,0x1 -800005dc: 0011e193 ori gp,gp,1 -800005e0: 05d00893 li a7,93 -800005e4: 00018513 mv a0,gp -800005e8: 00000073 ecall - -800005ec : -800005ec: 0ff0000f fence -800005f0: 00100193 li gp,1 -800005f4: 05d00893 li a7,93 -800005f8: 00000513 li a0,0 -800005fc: 00000073 ecall -80000600: c0001073 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-slti.dump b/benchmarks/riscv_tests/rv32ui-p-slti.dump deleted file mode 100644 index 167a412d..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-slti.dump +++ /dev/null @@ -1,313 +0,0 @@ - -rv32ui-p-slti: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00000093 li ra,0 -8000010c: 0000a713 slti a4,ra,0 -80000110: 00000e93 li t4,0 -80000114: 00200193 li gp,2 -80000118: 27d71263 bne a4,t4,8000037c - -8000011c : -8000011c: 00100093 li ra,1 -80000120: 0010a713 slti a4,ra,1 -80000124: 00000e93 li t4,0 -80000128: 00300193 li gp,3 -8000012c: 25d71863 bne a4,t4,8000037c - -80000130 : -80000130: 00300093 li ra,3 -80000134: 0070a713 slti a4,ra,7 -80000138: 00100e93 li t4,1 -8000013c: 00400193 li gp,4 -80000140: 23d71e63 bne a4,t4,8000037c - -80000144 : -80000144: 00700093 li ra,7 -80000148: 0030a713 slti a4,ra,3 -8000014c: 00000e93 li t4,0 -80000150: 00500193 li gp,5 -80000154: 23d71463 bne a4,t4,8000037c - -80000158 : -80000158: 00000093 li ra,0 -8000015c: 8000a713 slti a4,ra,-2048 -80000160: 00000e93 li t4,0 -80000164: 00600193 li gp,6 -80000168: 21d71a63 bne a4,t4,8000037c - -8000016c : -8000016c: 800000b7 lui ra,0x80000 -80000170: 0000a713 slti a4,ra,0 -80000174: 00100e93 li t4,1 -80000178: 00700193 li gp,7 -8000017c: 21d71063 bne a4,t4,8000037c - -80000180 : -80000180: 800000b7 lui ra,0x80000 -80000184: 8000a713 slti a4,ra,-2048 -80000188: 00100e93 li t4,1 -8000018c: 00800193 li gp,8 -80000190: 1fd71663 bne a4,t4,8000037c - -80000194 : -80000194: 00000093 li ra,0 -80000198: 7ff0a713 slti a4,ra,2047 -8000019c: 00100e93 li t4,1 -800001a0: 00900193 li gp,9 -800001a4: 1dd71c63 bne a4,t4,8000037c - -800001a8 : -800001a8: 800000b7 lui ra,0x80000 -800001ac: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001b0: 0000a713 slti a4,ra,0 -800001b4: 00000e93 li t4,0 -800001b8: 00a00193 li gp,10 -800001bc: 1dd71063 bne a4,t4,8000037c - -800001c0 : -800001c0: 800000b7 lui ra,0x80000 -800001c4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001c8: 7ff0a713 slti a4,ra,2047 -800001cc: 00000e93 li t4,0 -800001d0: 00b00193 li gp,11 -800001d4: 1bd71463 bne a4,t4,8000037c - -800001d8 : -800001d8: 800000b7 lui ra,0x80000 -800001dc: 7ff0a713 slti a4,ra,2047 -800001e0: 00100e93 li t4,1 -800001e4: 00c00193 li gp,12 -800001e8: 19d71a63 bne a4,t4,8000037c - -800001ec : -800001ec: 800000b7 lui ra,0x80000 -800001f0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001f4: 8000a713 slti a4,ra,-2048 -800001f8: 00000e93 li t4,0 -800001fc: 00d00193 li gp,13 -80000200: 17d71e63 bne a4,t4,8000037c - -80000204 : -80000204: 00000093 li ra,0 -80000208: fff0a713 slti a4,ra,-1 -8000020c: 00000e93 li t4,0 -80000210: 00e00193 li gp,14 -80000214: 17d71463 bne a4,t4,8000037c - -80000218 : -80000218: fff00093 li ra,-1 -8000021c: 0010a713 slti a4,ra,1 -80000220: 00100e93 li t4,1 -80000224: 00f00193 li gp,15 -80000228: 15d71a63 bne a4,t4,8000037c - -8000022c : -8000022c: fff00093 li ra,-1 -80000230: fff0a713 slti a4,ra,-1 -80000234: 00000e93 li t4,0 -80000238: 01000193 li gp,16 -8000023c: 15d71063 bne a4,t4,8000037c - -80000240 : -80000240: 00b00093 li ra,11 -80000244: 00d0a093 slti ra,ra,13 -80000248: 00100e93 li t4,1 -8000024c: 01100193 li gp,17 -80000250: 13d09663 bne ra,t4,8000037c - -80000254 : -80000254: 00000213 li tp,0 -80000258: 00f00093 li ra,15 -8000025c: 00a0a713 slti a4,ra,10 -80000260: 00070313 mv t1,a4 -80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000268: 00200293 li t0,2 -8000026c: fe5216e3 bne tp,t0,80000258 -80000270: 00000e93 li t4,0 -80000274: 01200193 li gp,18 -80000278: 11d31263 bne t1,t4,8000037c - -8000027c : -8000027c: 00000213 li tp,0 -80000280: 00a00093 li ra,10 -80000284: 0100a713 slti a4,ra,16 -80000288: 00000013 nop -8000028c: 00070313 mv t1,a4 -80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000294: 00200293 li t0,2 -80000298: fe5214e3 bne tp,t0,80000280 -8000029c: 00100e93 li t4,1 -800002a0: 01300193 li gp,19 -800002a4: 0dd31c63 bne t1,t4,8000037c - -800002a8 : -800002a8: 00000213 li tp,0 -800002ac: 01000093 li ra,16 -800002b0: 0090a713 slti a4,ra,9 -800002b4: 00000013 nop -800002b8: 00000013 nop -800002bc: 00070313 mv t1,a4 -800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002c4: 00200293 li t0,2 -800002c8: fe5212e3 bne tp,t0,800002ac -800002cc: 00000e93 li t4,0 -800002d0: 01400193 li gp,20 -800002d4: 0bd31463 bne t1,t4,8000037c - -800002d8 : -800002d8: 00000213 li tp,0 -800002dc: 00b00093 li ra,11 -800002e0: 00f0a713 slti a4,ra,15 -800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002e8: 00200293 li t0,2 -800002ec: fe5218e3 bne tp,t0,800002dc -800002f0: 00100e93 li t4,1 -800002f4: 01500193 li gp,21 -800002f8: 09d71263 bne a4,t4,8000037c - -800002fc : -800002fc: 00000213 li tp,0 -80000300: 01100093 li ra,17 -80000304: 00000013 nop -80000308: 0080a713 slti a4,ra,8 -8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000310: 00200293 li t0,2 -80000314: fe5216e3 bne tp,t0,80000300 -80000318: 00000e93 li t4,0 -8000031c: 01600193 li gp,22 -80000320: 05d71e63 bne a4,t4,8000037c - -80000324 : -80000324: 00000213 li tp,0 -80000328: 00c00093 li ra,12 -8000032c: 00000013 nop -80000330: 00000013 nop -80000334: 00e0a713 slti a4,ra,14 -80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000033c: 00200293 li t0,2 -80000340: fe5214e3 bne tp,t0,80000328 -80000344: 00100e93 li t4,1 -80000348: 01700193 li gp,23 -8000034c: 03d71863 bne a4,t4,8000037c - -80000350 : -80000350: fff02093 slti ra,zero,-1 -80000354: 00000e93 li t4,0 -80000358: 01800193 li gp,24 -8000035c: 03d09063 bne ra,t4,8000037c - -80000360 : -80000360: 00ff00b7 lui ra,0xff0 -80000364: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000368: fff0a013 slti zero,ra,-1 -8000036c: 00000e93 li t4,0 -80000370: 01900193 li gp,25 -80000374: 01d01463 bne zero,t4,8000037c -80000378: 02301063 bne zero,gp,80000398 - -8000037c : -8000037c: 0ff0000f fence -80000380: 00018063 beqz gp,80000380 -80000384: 00119193 slli gp,gp,0x1 -80000388: 0011e193 ori gp,gp,1 -8000038c: 05d00893 li a7,93 -80000390: 00018513 mv a0,gp -80000394: 00000073 ecall - -80000398 : -80000398: 0ff0000f fence -8000039c: 00100193 li gp,1 -800003a0: 05d00893 li a7,93 -800003a4: 00000513 li a0,0 -800003a8: 00000073 ecall -800003ac: c0001073 unimp -800003b0: 0000 unimp -800003b2: 0000 unimp -800003b4: 0000 unimp -800003b6: 0000 unimp -800003b8: 0000 unimp -800003ba: 0000 unimp -800003bc: 0000 unimp -800003be: 0000 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-sltiu.dump b/benchmarks/riscv_tests/rv32ui-p-sltiu.dump deleted file mode 100644 index 06756139..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sltiu.dump +++ /dev/null @@ -1,320 +0,0 @@ - -rv32ui-p-sltiu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi sptbr,0 -80000064: 00000297 auipc t0,0x0 -80000068: 01c28293 addi t0,t0,28 # 80000080 -8000006c: 30529073 csrw mtvec,t0 -80000070: fff00293 li t0,-1 -80000074: 3b029073 csrw pmpaddr0,t0 -80000078: 01f00293 li t0,31 -8000007c: 3a029073 csrw pmpcfg0,t0 -80000080: 00000297 auipc t0,0x0 -80000084: 01828293 addi t0,t0,24 # 80000098 -80000088: 30529073 csrw mtvec,t0 -8000008c: 30205073 csrwi medeleg,0 -80000090: 30305073 csrwi mideleg,0 -80000094: 30405073 csrwi mie,0 -80000098: 00000193 li gp,0 -8000009c: 00000297 auipc t0,0x0 -800000a0: f6828293 addi t0,t0,-152 # 80000004 -800000a4: 30529073 csrw mtvec,t0 -800000a8: 00100513 li a0,1 -800000ac: 01f51513 slli a0,a0,0x1f -800000b0: 00054863 bltz a0,800000c0 -800000b4: 0ff0000f fence -800000b8: 00100193 li gp,1 -800000bc: 00000073 ecall -800000c0: 80000297 auipc t0,0x80000 -800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> -800000c8: 00028e63 beqz t0,800000e4 -800000cc: 10529073 csrw stvec,t0 -800000d0: 0000b2b7 lui t0,0xb -800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000d8: 30229073 csrw medeleg,t0 -800000dc: 30202373 csrr t1,medeleg -800000e0: f4629ee3 bne t0,t1,8000003c -800000e4: 30005073 csrwi mstatus,0 -800000e8: 00000297 auipc t0,0x0 -800000ec: 01428293 addi t0,t0,20 # 800000fc -800000f0: 34129073 csrw mepc,t0 -800000f4: f1402573 csrr a0,mhartid -800000f8: 30200073 mret - -800000fc : -800000fc: 00000093 li ra,0 -80000100: 0000bf13 sltiu t5,ra,0 -80000104: 00000e93 li t4,0 -80000108: 00200193 li gp,2 -8000010c: 27df1263 bne t5,t4,80000370 - -80000110 : -80000110: 00100093 li ra,1 -80000114: 0010bf13 seqz t5,ra -80000118: 00000e93 li t4,0 -8000011c: 00300193 li gp,3 -80000120: 25df1863 bne t5,t4,80000370 - -80000124 : -80000124: 00300093 li ra,3 -80000128: 0070bf13 sltiu t5,ra,7 -8000012c: 00100e93 li t4,1 -80000130: 00400193 li gp,4 -80000134: 23df1e63 bne t5,t4,80000370 - -80000138 : -80000138: 00700093 li ra,7 -8000013c: 0030bf13 sltiu t5,ra,3 -80000140: 00000e93 li t4,0 -80000144: 00500193 li gp,5 -80000148: 23df1463 bne t5,t4,80000370 - -8000014c : -8000014c: 00000093 li ra,0 -80000150: 8000bf13 sltiu t5,ra,-2048 -80000154: 00100e93 li t4,1 -80000158: 00600193 li gp,6 -8000015c: 21df1a63 bne t5,t4,80000370 - -80000160 : -80000160: 800000b7 lui ra,0x80000 -80000164: 0000bf13 sltiu t5,ra,0 -80000168: 00000e93 li t4,0 -8000016c: 00700193 li gp,7 -80000170: 21df1063 bne t5,t4,80000370 - -80000174 : -80000174: 800000b7 lui ra,0x80000 -80000178: 8000bf13 sltiu t5,ra,-2048 -8000017c: 00100e93 li t4,1 -80000180: 00800193 li gp,8 -80000184: 1fdf1663 bne t5,t4,80000370 - -80000188 : -80000188: 00000093 li ra,0 -8000018c: 7ff0bf13 sltiu t5,ra,2047 -80000190: 00100e93 li t4,1 -80000194: 00900193 li gp,9 -80000198: 1ddf1c63 bne t5,t4,80000370 - -8000019c : -8000019c: 800000b7 lui ra,0x80000 -800001a0: fff08093 addi ra,ra,-1 # 7fffffff -800001a4: 0000bf13 sltiu t5,ra,0 -800001a8: 00000e93 li t4,0 -800001ac: 00a00193 li gp,10 -800001b0: 1ddf1063 bne t5,t4,80000370 - -800001b4 : -800001b4: 800000b7 lui ra,0x80000 -800001b8: fff08093 addi ra,ra,-1 # 7fffffff -800001bc: 7ff0bf13 sltiu t5,ra,2047 -800001c0: 00000e93 li t4,0 -800001c4: 00b00193 li gp,11 -800001c8: 1bdf1463 bne t5,t4,80000370 - -800001cc : -800001cc: 800000b7 lui ra,0x80000 -800001d0: 7ff0bf13 sltiu t5,ra,2047 -800001d4: 00000e93 li t4,0 -800001d8: 00c00193 li gp,12 -800001dc: 19df1a63 bne t5,t4,80000370 - -800001e0 : -800001e0: 800000b7 lui ra,0x80000 -800001e4: fff08093 addi ra,ra,-1 # 7fffffff -800001e8: 8000bf13 sltiu t5,ra,-2048 -800001ec: 00100e93 li t4,1 -800001f0: 00d00193 li gp,13 -800001f4: 17df1e63 bne t5,t4,80000370 - -800001f8 : -800001f8: 00000093 li ra,0 -800001fc: fff0bf13 sltiu t5,ra,-1 -80000200: 00100e93 li t4,1 -80000204: 00e00193 li gp,14 -80000208: 17df1463 bne t5,t4,80000370 - -8000020c : -8000020c: fff00093 li ra,-1 -80000210: 0010bf13 seqz t5,ra -80000214: 00000e93 li t4,0 -80000218: 00f00193 li gp,15 -8000021c: 15df1a63 bne t5,t4,80000370 - -80000220 : -80000220: fff00093 li ra,-1 -80000224: fff0bf13 sltiu t5,ra,-1 -80000228: 00000e93 li t4,0 -8000022c: 01000193 li gp,16 -80000230: 15df1063 bne t5,t4,80000370 - -80000234 : -80000234: 00b00093 li ra,11 -80000238: 00d0b093 sltiu ra,ra,13 -8000023c: 00100e93 li t4,1 -80000240: 01100193 li gp,17 -80000244: 13d09663 bne ra,t4,80000370 - -80000248 : -80000248: 00000213 li tp,0 -8000024c: 00f00093 li ra,15 -80000250: 00a0bf13 sltiu t5,ra,10 -80000254: 000f0313 mv t1,t5 -80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000025c: 00200293 li t0,2 -80000260: fe5216e3 bne tp,t0,8000024c -80000264: 00000e93 li t4,0 -80000268: 01200193 li gp,18 -8000026c: 11d31263 bne t1,t4,80000370 - -80000270 : -80000270: 00000213 li tp,0 -80000274: 00a00093 li ra,10 -80000278: 0100bf13 sltiu t5,ra,16 -8000027c: 00000013 nop -80000280: 000f0313 mv t1,t5 -80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000288: 00200293 li t0,2 -8000028c: fe5214e3 bne tp,t0,80000274 -80000290: 00100e93 li t4,1 -80000294: 01300193 li gp,19 -80000298: 0dd31c63 bne t1,t4,80000370 - -8000029c : -8000029c: 00000213 li tp,0 -800002a0: 01000093 li ra,16 -800002a4: 0090bf13 sltiu t5,ra,9 -800002a8: 00000013 nop -800002ac: 00000013 nop -800002b0: 000f0313 mv t1,t5 -800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b8: 00200293 li t0,2 -800002bc: fe5212e3 bne tp,t0,800002a0 -800002c0: 00000e93 li t4,0 -800002c4: 01400193 li gp,20 -800002c8: 0bd31463 bne t1,t4,80000370 - -800002cc : -800002cc: 00000213 li tp,0 -800002d0: 00b00093 li ra,11 -800002d4: 00f0bf13 sltiu t5,ra,15 -800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002dc: 00200293 li t0,2 -800002e0: fe5218e3 bne tp,t0,800002d0 -800002e4: 00100e93 li t4,1 -800002e8: 01500193 li gp,21 -800002ec: 09df1263 bne t5,t4,80000370 - -800002f0 : -800002f0: 00000213 li tp,0 -800002f4: 01100093 li ra,17 -800002f8: 00000013 nop -800002fc: 0080bf13 sltiu t5,ra,8 -80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000304: 00200293 li t0,2 -80000308: fe5216e3 bne tp,t0,800002f4 -8000030c: 00000e93 li t4,0 -80000310: 01600193 li gp,22 -80000314: 05df1e63 bne t5,t4,80000370 - -80000318 : -80000318: 00000213 li tp,0 -8000031c: 00c00093 li ra,12 -80000320: 00000013 nop -80000324: 00000013 nop -80000328: 00e0bf13 sltiu t5,ra,14 -8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000330: 00200293 li t0,2 -80000334: fe5214e3 bne tp,t0,8000031c -80000338: 00100e93 li t4,1 -8000033c: 01700193 li gp,23 -80000340: 03df1863 bne t5,t4,80000370 - -80000344 : -80000344: fff03093 sltiu ra,zero,-1 -80000348: 00100e93 li t4,1 -8000034c: 01800193 li gp,24 -80000350: 03d09063 bne ra,t4,80000370 - -80000354 : -80000354: 00ff00b7 lui ra,0xff0 -80000358: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -8000035c: fff0b013 sltiu zero,ra,-1 -80000360: 00000e93 li t4,0 -80000364: 01900193 li gp,25 -80000368: 01d01463 bne zero,t4,80000370 -8000036c: 00301c63 bne zero,gp,80000384 - -80000370 : -80000370: 0ff0000f fence -80000374: 00018063 beqz gp,80000374 -80000378: 00119193 slli gp,gp,0x1 -8000037c: 0011e193 ori gp,gp,1 -80000380: 00000073 ecall - -80000384 : -80000384: 0ff0000f fence -80000388: 00100193 li gp,1 -8000038c: 00000073 ecall -80000390: c0001073 unimp -80000394: 0000 unimp -80000396: 0000 unimp -80000398: 0000 unimp -8000039a: 0000 unimp -8000039c: 0000 unimp -8000039e: 0000 unimp -800003a0: 0000 unimp -800003a2: 0000 unimp -800003a4: 0000 unimp -800003a6: 0000 unimp -800003a8: 0000 unimp -800003aa: 0000 unimp -800003ac: 0000 unimp -800003ae: 0000 unimp -800003b0: 0000 unimp -800003b2: 0000 unimp -800003b4: 0000 unimp -800003b6: 0000 unimp -800003b8: 0000 unimp -800003ba: 0000 unimp -800003bc: 0000 unimp -800003be: 0000 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-sltu.dump b/benchmarks/riscv_tests/rv32ui-p-sltu.dump deleted file mode 100644 index bd6d0fe6..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sltu.dump +++ /dev/null @@ -1,485 +0,0 @@ - -rv32ui-p-sltu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi sptbr,0 -80000064: 00000297 auipc t0,0x0 -80000068: 01c28293 addi t0,t0,28 # 80000080 -8000006c: 30529073 csrw mtvec,t0 -80000070: fff00293 li t0,-1 -80000074: 3b029073 csrw pmpaddr0,t0 -80000078: 01f00293 li t0,31 -8000007c: 3a029073 csrw pmpcfg0,t0 -80000080: 00000297 auipc t0,0x0 -80000084: 01828293 addi t0,t0,24 # 80000098 -80000088: 30529073 csrw mtvec,t0 -8000008c: 30205073 csrwi medeleg,0 -80000090: 30305073 csrwi mideleg,0 -80000094: 30405073 csrwi mie,0 -80000098: 00000193 li gp,0 -8000009c: 00000297 auipc t0,0x0 -800000a0: f6828293 addi t0,t0,-152 # 80000004 -800000a4: 30529073 csrw mtvec,t0 -800000a8: 00100513 li a0,1 -800000ac: 01f51513 slli a0,a0,0x1f -800000b0: 00054863 bltz a0,800000c0 -800000b4: 0ff0000f fence -800000b8: 00100193 li gp,1 -800000bc: 00000073 ecall -800000c0: 80000297 auipc t0,0x80000 -800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> -800000c8: 00028e63 beqz t0,800000e4 -800000cc: 10529073 csrw stvec,t0 -800000d0: 0000b2b7 lui t0,0xb -800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000d8: 30229073 csrw medeleg,t0 -800000dc: 30202373 csrr t1,medeleg -800000e0: f4629ee3 bne t0,t1,8000003c -800000e4: 30005073 csrwi mstatus,0 -800000e8: 00000297 auipc t0,0x0 -800000ec: 01428293 addi t0,t0,20 # 800000fc -800000f0: 34129073 csrw mepc,t0 -800000f4: f1402573 csrr a0,mhartid -800000f8: 30200073 mret - -800000fc : -800000fc: 00000093 li ra,0 -80000100: 00000113 li sp,0 -80000104: 0020bf33 sltu t5,ra,sp -80000108: 00000e93 li t4,0 -8000010c: 00200193 li gp,2 -80000110: 4bdf1a63 bne t5,t4,800005c4 - -80000114 : -80000114: 00100093 li ra,1 -80000118: 00100113 li sp,1 -8000011c: 0020bf33 sltu t5,ra,sp -80000120: 00000e93 li t4,0 -80000124: 00300193 li gp,3 -80000128: 49df1e63 bne t5,t4,800005c4 - -8000012c : -8000012c: 00300093 li ra,3 -80000130: 00700113 li sp,7 -80000134: 0020bf33 sltu t5,ra,sp -80000138: 00100e93 li t4,1 -8000013c: 00400193 li gp,4 -80000140: 49df1263 bne t5,t4,800005c4 - -80000144 : -80000144: 00700093 li ra,7 -80000148: 00300113 li sp,3 -8000014c: 0020bf33 sltu t5,ra,sp -80000150: 00000e93 li t4,0 -80000154: 00500193 li gp,5 -80000158: 47df1663 bne t5,t4,800005c4 - -8000015c : -8000015c: 00000093 li ra,0 -80000160: ffff8137 lui sp,0xffff8 -80000164: 0020bf33 sltu t5,ra,sp -80000168: 00100e93 li t4,1 -8000016c: 00600193 li gp,6 -80000170: 45df1a63 bne t5,t4,800005c4 - -80000174 : -80000174: 800000b7 lui ra,0x80000 -80000178: 00000113 li sp,0 -8000017c: 0020bf33 sltu t5,ra,sp -80000180: 00000e93 li t4,0 -80000184: 00700193 li gp,7 -80000188: 43df1e63 bne t5,t4,800005c4 - -8000018c : -8000018c: 800000b7 lui ra,0x80000 -80000190: ffff8137 lui sp,0xffff8 -80000194: 0020bf33 sltu t5,ra,sp -80000198: 00100e93 li t4,1 -8000019c: 00800193 li gp,8 -800001a0: 43df1263 bne t5,t4,800005c4 - -800001a4 : -800001a4: 00000093 li ra,0 -800001a8: 00008137 lui sp,0x8 -800001ac: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001b0: 0020bf33 sltu t5,ra,sp -800001b4: 00100e93 li t4,1 -800001b8: 00900193 li gp,9 -800001bc: 41df1463 bne t5,t4,800005c4 - -800001c0 : -800001c0: 800000b7 lui ra,0x80000 -800001c4: fff08093 addi ra,ra,-1 # 7fffffff -800001c8: 00000113 li sp,0 -800001cc: 0020bf33 sltu t5,ra,sp -800001d0: 00000e93 li t4,0 -800001d4: 00a00193 li gp,10 -800001d8: 3fdf1663 bne t5,t4,800005c4 - -800001dc : -800001dc: 800000b7 lui ra,0x80000 -800001e0: fff08093 addi ra,ra,-1 # 7fffffff -800001e4: 00008137 lui sp,0x8 -800001e8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001ec: 0020bf33 sltu t5,ra,sp -800001f0: 00000e93 li t4,0 -800001f4: 00b00193 li gp,11 -800001f8: 3ddf1663 bne t5,t4,800005c4 - -800001fc : -800001fc: 800000b7 lui ra,0x80000 -80000200: 00008137 lui sp,0x8 -80000204: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -80000208: 0020bf33 sltu t5,ra,sp -8000020c: 00000e93 li t4,0 -80000210: 00c00193 li gp,12 -80000214: 3bdf1863 bne t5,t4,800005c4 - -80000218 : -80000218: 800000b7 lui ra,0x80000 -8000021c: fff08093 addi ra,ra,-1 # 7fffffff -80000220: ffff8137 lui sp,0xffff8 -80000224: 0020bf33 sltu t5,ra,sp -80000228: 00100e93 li t4,1 -8000022c: 00d00193 li gp,13 -80000230: 39df1a63 bne t5,t4,800005c4 - -80000234 : -80000234: 00000093 li ra,0 -80000238: fff00113 li sp,-1 -8000023c: 0020bf33 sltu t5,ra,sp -80000240: 00100e93 li t4,1 -80000244: 00e00193 li gp,14 -80000248: 37df1e63 bne t5,t4,800005c4 - -8000024c : -8000024c: fff00093 li ra,-1 -80000250: 00100113 li sp,1 -80000254: 0020bf33 sltu t5,ra,sp -80000258: 00000e93 li t4,0 -8000025c: 00f00193 li gp,15 -80000260: 37df1263 bne t5,t4,800005c4 - -80000264 : -80000264: fff00093 li ra,-1 -80000268: fff00113 li sp,-1 -8000026c: 0020bf33 sltu t5,ra,sp -80000270: 00000e93 li t4,0 -80000274: 01000193 li gp,16 -80000278: 35df1663 bne t5,t4,800005c4 - -8000027c : -8000027c: 00e00093 li ra,14 -80000280: 00d00113 li sp,13 -80000284: 0020b0b3 sltu ra,ra,sp -80000288: 00000e93 li t4,0 -8000028c: 01100193 li gp,17 -80000290: 33d09a63 bne ra,t4,800005c4 - -80000294 : -80000294: 00b00093 li ra,11 -80000298: 00d00113 li sp,13 -8000029c: 0020b133 sltu sp,ra,sp -800002a0: 00100e93 li t4,1 -800002a4: 01200193 li gp,18 -800002a8: 31d11e63 bne sp,t4,800005c4 - -800002ac : -800002ac: 00d00093 li ra,13 -800002b0: 0010b0b3 sltu ra,ra,ra -800002b4: 00000e93 li t4,0 -800002b8: 01300193 li gp,19 -800002bc: 31d09463 bne ra,t4,800005c4 - -800002c0 : -800002c0: 00000213 li tp,0 -800002c4: 00b00093 li ra,11 -800002c8: 00d00113 li sp,13 -800002cc: 0020bf33 sltu t5,ra,sp -800002d0: 000f0313 mv t1,t5 -800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d8: 00200293 li t0,2 -800002dc: fe5214e3 bne tp,t0,800002c4 -800002e0: 00100e93 li t4,1 -800002e4: 01400193 li gp,20 -800002e8: 2dd31e63 bne t1,t4,800005c4 - -800002ec : -800002ec: 00000213 li tp,0 -800002f0: 00e00093 li ra,14 -800002f4: 00d00113 li sp,13 -800002f8: 0020bf33 sltu t5,ra,sp -800002fc: 00000013 nop -80000300: 000f0313 mv t1,t5 -80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000308: 00200293 li t0,2 -8000030c: fe5212e3 bne tp,t0,800002f0 -80000310: 00000e93 li t4,0 -80000314: 01500193 li gp,21 -80000318: 2bd31663 bne t1,t4,800005c4 - -8000031c : -8000031c: 00000213 li tp,0 -80000320: 00c00093 li ra,12 -80000324: 00d00113 li sp,13 -80000328: 0020bf33 sltu t5,ra,sp -8000032c: 00000013 nop -80000330: 00000013 nop -80000334: 000f0313 mv t1,t5 -80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000033c: 00200293 li t0,2 -80000340: fe5210e3 bne tp,t0,80000320 -80000344: 00100e93 li t4,1 -80000348: 01600193 li gp,22 -8000034c: 27d31c63 bne t1,t4,800005c4 - -80000350 : -80000350: 00000213 li tp,0 -80000354: 00e00093 li ra,14 -80000358: 00d00113 li sp,13 -8000035c: 0020bf33 sltu t5,ra,sp -80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000364: 00200293 li t0,2 -80000368: fe5216e3 bne tp,t0,80000354 -8000036c: 00000e93 li t4,0 -80000370: 01700193 li gp,23 -80000374: 25df1863 bne t5,t4,800005c4 - -80000378 : -80000378: 00000213 li tp,0 -8000037c: 00b00093 li ra,11 -80000380: 00d00113 li sp,13 -80000384: 00000013 nop -80000388: 0020bf33 sltu t5,ra,sp -8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000390: 00200293 li t0,2 -80000394: fe5214e3 bne tp,t0,8000037c -80000398: 00100e93 li t4,1 -8000039c: 01800193 li gp,24 -800003a0: 23df1263 bne t5,t4,800005c4 - -800003a4 : -800003a4: 00000213 li tp,0 -800003a8: 00f00093 li ra,15 -800003ac: 00d00113 li sp,13 -800003b0: 00000013 nop -800003b4: 00000013 nop -800003b8: 0020bf33 sltu t5,ra,sp -800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003c0: 00200293 li t0,2 -800003c4: fe5212e3 bne tp,t0,800003a8 -800003c8: 00000e93 li t4,0 -800003cc: 01900193 li gp,25 -800003d0: 1fdf1a63 bne t5,t4,800005c4 - -800003d4 : -800003d4: 00000213 li tp,0 -800003d8: 00a00093 li ra,10 -800003dc: 00000013 nop -800003e0: 00d00113 li sp,13 -800003e4: 0020bf33 sltu t5,ra,sp -800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003ec: 00200293 li t0,2 -800003f0: fe5214e3 bne tp,t0,800003d8 -800003f4: 00100e93 li t4,1 -800003f8: 01a00193 li gp,26 -800003fc: 1ddf1463 bne t5,t4,800005c4 - -80000400 : -80000400: 00000213 li tp,0 -80000404: 01000093 li ra,16 -80000408: 00000013 nop -8000040c: 00d00113 li sp,13 -80000410: 00000013 nop -80000414: 0020bf33 sltu t5,ra,sp -80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000041c: 00200293 li t0,2 -80000420: fe5212e3 bne tp,t0,80000404 -80000424: 00000e93 li t4,0 -80000428: 01b00193 li gp,27 -8000042c: 19df1c63 bne t5,t4,800005c4 - -80000430 : -80000430: 00000213 li tp,0 -80000434: 00900093 li ra,9 -80000438: 00000013 nop -8000043c: 00000013 nop -80000440: 00d00113 li sp,13 -80000444: 0020bf33 sltu t5,ra,sp -80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000044c: 00200293 li t0,2 -80000450: fe5212e3 bne tp,t0,80000434 -80000454: 00100e93 li t4,1 -80000458: 01c00193 li gp,28 -8000045c: 17df1463 bne t5,t4,800005c4 - -80000460 : -80000460: 00000213 li tp,0 -80000464: 00d00113 li sp,13 -80000468: 01100093 li ra,17 -8000046c: 0020bf33 sltu t5,ra,sp -80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000474: 00200293 li t0,2 -80000478: fe5216e3 bne tp,t0,80000464 -8000047c: 00000e93 li t4,0 -80000480: 01d00193 li gp,29 -80000484: 15df1063 bne t5,t4,800005c4 - -80000488 : -80000488: 00000213 li tp,0 -8000048c: 00d00113 li sp,13 -80000490: 00800093 li ra,8 -80000494: 00000013 nop -80000498: 0020bf33 sltu t5,ra,sp -8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004a0: 00200293 li t0,2 -800004a4: fe5214e3 bne tp,t0,8000048c -800004a8: 00100e93 li t4,1 -800004ac: 01e00193 li gp,30 -800004b0: 11df1a63 bne t5,t4,800005c4 - -800004b4 : -800004b4: 00000213 li tp,0 -800004b8: 00d00113 li sp,13 -800004bc: 01200093 li ra,18 -800004c0: 00000013 nop -800004c4: 00000013 nop -800004c8: 0020bf33 sltu t5,ra,sp -800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004d0: 00200293 li t0,2 -800004d4: fe5212e3 bne tp,t0,800004b8 -800004d8: 00000e93 li t4,0 -800004dc: 01f00193 li gp,31 -800004e0: 0fdf1263 bne t5,t4,800005c4 - -800004e4 : -800004e4: 00000213 li tp,0 -800004e8: 00d00113 li sp,13 -800004ec: 00000013 nop -800004f0: 00700093 li ra,7 -800004f4: 0020bf33 sltu t5,ra,sp -800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004fc: 00200293 li t0,2 -80000500: fe5214e3 bne tp,t0,800004e8 -80000504: 00100e93 li t4,1 -80000508: 02000193 li gp,32 -8000050c: 0bdf1c63 bne t5,t4,800005c4 - -80000510 : -80000510: 00000213 li tp,0 -80000514: 00d00113 li sp,13 -80000518: 00000013 nop -8000051c: 01300093 li ra,19 -80000520: 00000013 nop -80000524: 0020bf33 sltu t5,ra,sp -80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000052c: 00200293 li t0,2 -80000530: fe5212e3 bne tp,t0,80000514 -80000534: 00000e93 li t4,0 -80000538: 02100193 li gp,33 -8000053c: 09df1463 bne t5,t4,800005c4 - -80000540 : -80000540: 00000213 li tp,0 -80000544: 00d00113 li sp,13 -80000548: 00000013 nop -8000054c: 00000013 nop -80000550: 00600093 li ra,6 -80000554: 0020bf33 sltu t5,ra,sp -80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000055c: 00200293 li t0,2 -80000560: fe5212e3 bne tp,t0,80000544 -80000564: 00100e93 li t4,1 -80000568: 02200193 li gp,34 -8000056c: 05df1c63 bne t5,t4,800005c4 - -80000570 : -80000570: fff00093 li ra,-1 -80000574: 00103133 snez sp,ra -80000578: 00100e93 li t4,1 -8000057c: 02300193 li gp,35 -80000580: 05d11263 bne sp,t4,800005c4 - -80000584 : -80000584: fff00093 li ra,-1 -80000588: 0000b133 sltu sp,ra,zero -8000058c: 00000e93 li t4,0 -80000590: 02400193 li gp,36 -80000594: 03d11863 bne sp,t4,800005c4 - -80000598 : -80000598: 000030b3 snez ra,zero -8000059c: 00000e93 li t4,0 -800005a0: 02500193 li gp,37 -800005a4: 03d09063 bne ra,t4,800005c4 - -800005a8 : -800005a8: 01000093 li ra,16 -800005ac: 01e00113 li sp,30 -800005b0: 0020b033 sltu zero,ra,sp -800005b4: 00000e93 li t4,0 -800005b8: 02600193 li gp,38 -800005bc: 01d01463 bne zero,t4,800005c4 -800005c0: 00301c63 bne zero,gp,800005d8 - -800005c4 : -800005c4: 0ff0000f fence -800005c8: 00018063 beqz gp,800005c8 -800005cc: 00119193 slli gp,gp,0x1 -800005d0: 0011e193 ori gp,gp,1 -800005d4: 00000073 ecall - -800005d8 : -800005d8: 0ff0000f fence -800005dc: 00100193 li gp,1 -800005e0: 00000073 ecall -800005e4: c0001073 unimp -800005e8: 0000 unimp -800005ea: 0000 unimp -800005ec: 0000 unimp -800005ee: 0000 unimp -800005f0: 0000 unimp -800005f2: 0000 unimp -800005f4: 0000 unimp -800005f6: 0000 unimp -800005f8: 0000 unimp -800005fa: 0000 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-sra.dump b/benchmarks/riscv_tests/rv32ui-p-sra.dump deleted file mode 100644 index 3654a09d..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sra.dump +++ /dev/null @@ -1,563 +0,0 @@ - -rv32ui-p-sra: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 800000b7 lui ra,0x80000 -8000010c: 00000113 li sp,0 -80000110: 4020d733 sra a4,ra,sp -80000114: 80000eb7 lui t4,0x80000 -80000118: 00200193 li gp,2 -8000011c: 59d71463 bne a4,t4,800006a4 - -80000120 : -80000120: 800000b7 lui ra,0x80000 -80000124: 00100113 li sp,1 -80000128: 4020d733 sra a4,ra,sp -8000012c: c0000eb7 lui t4,0xc0000 -80000130: 00300193 li gp,3 -80000134: 57d71863 bne a4,t4,800006a4 - -80000138 : -80000138: 800000b7 lui ra,0x80000 -8000013c: 00700113 li sp,7 -80000140: 4020d733 sra a4,ra,sp -80000144: ff000eb7 lui t4,0xff000 -80000148: 00400193 li gp,4 -8000014c: 55d71c63 bne a4,t4,800006a4 - -80000150 : -80000150: 800000b7 lui ra,0x80000 -80000154: 00e00113 li sp,14 -80000158: 4020d733 sra a4,ra,sp -8000015c: fffe0eb7 lui t4,0xfffe0 -80000160: 00500193 li gp,5 -80000164: 55d71063 bne a4,t4,800006a4 - -80000168 : -80000168: 800000b7 lui ra,0x80000 -8000016c: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> -80000170: 01f00113 li sp,31 -80000174: 4020d733 sra a4,ra,sp -80000178: fff00e93 li t4,-1 -8000017c: 00600193 li gp,6 -80000180: 53d71263 bne a4,t4,800006a4 - -80000184 : -80000184: 800000b7 lui ra,0x80000 -80000188: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -8000018c: 00000113 li sp,0 -80000190: 4020d733 sra a4,ra,sp -80000194: 80000eb7 lui t4,0x80000 -80000198: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> -8000019c: 00700193 li gp,7 -800001a0: 51d71263 bne a4,t4,800006a4 - -800001a4 : -800001a4: 800000b7 lui ra,0x80000 -800001a8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001ac: 00100113 li sp,1 -800001b0: 4020d733 sra a4,ra,sp -800001b4: 40000eb7 lui t4,0x40000 -800001b8: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001> -800001bc: 00800193 li gp,8 -800001c0: 4fd71263 bne a4,t4,800006a4 - -800001c4 : -800001c4: 800000b7 lui ra,0x80000 -800001c8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001cc: 00700113 li sp,7 -800001d0: 4020d733 sra a4,ra,sp -800001d4: 01000eb7 lui t4,0x1000 -800001d8: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001> -800001dc: 00900193 li gp,9 -800001e0: 4dd71263 bne a4,t4,800006a4 - -800001e4 : -800001e4: 800000b7 lui ra,0x80000 -800001e8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001ec: 00e00113 li sp,14 -800001f0: 4020d733 sra a4,ra,sp -800001f4: 00020eb7 lui t4,0x20 -800001f8: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001> -800001fc: 00a00193 li gp,10 -80000200: 4bd71263 bne a4,t4,800006a4 - -80000204 : -80000204: 800000b7 lui ra,0x80000 -80000208: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -8000020c: 01f00113 li sp,31 -80000210: 4020d733 sra a4,ra,sp -80000214: 00000e93 li t4,0 -80000218: 00b00193 li gp,11 -8000021c: 49d71463 bne a4,t4,800006a4 - -80000220 : -80000220: 818180b7 lui ra,0x81818 -80000224: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000228: 00000113 li sp,0 -8000022c: 4020d733 sra a4,ra,sp -80000230: 81818eb7 lui t4,0x81818 -80000234: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181> -80000238: 00c00193 li gp,12 -8000023c: 47d71463 bne a4,t4,800006a4 - -80000240 : -80000240: 818180b7 lui ra,0x81818 -80000244: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000248: 00100113 li sp,1 -8000024c: 4020d733 sra a4,ra,sp -80000250: c0c0ceb7 lui t4,0xc0c0c -80000254: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0> -80000258: 00d00193 li gp,13 -8000025c: 45d71463 bne a4,t4,800006a4 - -80000260 : -80000260: 818180b7 lui ra,0x81818 -80000264: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000268: 00700113 li sp,7 -8000026c: 4020d733 sra a4,ra,sp -80000270: ff030eb7 lui t4,0xff030 -80000274: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303> -80000278: 00e00193 li gp,14 -8000027c: 43d71463 bne a4,t4,800006a4 - -80000280 : -80000280: 818180b7 lui ra,0x81818 -80000284: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000288: 00e00113 li sp,14 -8000028c: 4020d733 sra a4,ra,sp -80000290: fffe0eb7 lui t4,0xfffe0 -80000294: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606> -80000298: 00f00193 li gp,15 -8000029c: 41d71463 bne a4,t4,800006a4 - -800002a0 : -800002a0: 818180b7 lui ra,0x81818 -800002a4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -800002a8: 01f00113 li sp,31 -800002ac: 4020d733 sra a4,ra,sp -800002b0: fff00e93 li t4,-1 -800002b4: 01000193 li gp,16 -800002b8: 3fd71663 bne a4,t4,800006a4 - -800002bc : -800002bc: 818180b7 lui ra,0x81818 -800002c0: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -800002c4: fc000113 li sp,-64 -800002c8: 4020d733 sra a4,ra,sp -800002cc: 81818eb7 lui t4,0x81818 -800002d0: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181> -800002d4: 01100193 li gp,17 -800002d8: 3dd71663 bne a4,t4,800006a4 - -800002dc : -800002dc: 818180b7 lui ra,0x81818 -800002e0: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -800002e4: fc100113 li sp,-63 -800002e8: 4020d733 sra a4,ra,sp -800002ec: c0c0ceb7 lui t4,0xc0c0c -800002f0: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0> -800002f4: 01200193 li gp,18 -800002f8: 3bd71663 bne a4,t4,800006a4 - -800002fc : -800002fc: 818180b7 lui ra,0x81818 -80000300: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000304: fc700113 li sp,-57 -80000308: 4020d733 sra a4,ra,sp -8000030c: ff030eb7 lui t4,0xff030 -80000310: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303> -80000314: 01300193 li gp,19 -80000318: 39d71663 bne a4,t4,800006a4 - -8000031c : -8000031c: 818180b7 lui ra,0x81818 -80000320: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000324: fce00113 li sp,-50 -80000328: 4020d733 sra a4,ra,sp -8000032c: fffe0eb7 lui t4,0xfffe0 -80000330: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606> -80000334: 01400193 li gp,20 -80000338: 37d71663 bne a4,t4,800006a4 - -8000033c : -8000033c: 818180b7 lui ra,0x81818 -80000340: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000344: fff00113 li sp,-1 -80000348: 4020d733 sra a4,ra,sp -8000034c: fff00e93 li t4,-1 -80000350: 01500193 li gp,21 -80000354: 35d71863 bne a4,t4,800006a4 - -80000358 : -80000358: 800000b7 lui ra,0x80000 -8000035c: 00700113 li sp,7 -80000360: 4020d0b3 sra ra,ra,sp -80000364: ff000eb7 lui t4,0xff000 -80000368: 01600193 li gp,22 -8000036c: 33d09c63 bne ra,t4,800006a4 - -80000370 : -80000370: 800000b7 lui ra,0x80000 -80000374: 00e00113 li sp,14 -80000378: 4020d133 sra sp,ra,sp -8000037c: fffe0eb7 lui t4,0xfffe0 -80000380: 01700193 li gp,23 -80000384: 33d11063 bne sp,t4,800006a4 - -80000388 : -80000388: 00700093 li ra,7 -8000038c: 4010d0b3 sra ra,ra,ra -80000390: 00000e93 li t4,0 -80000394: 01800193 li gp,24 -80000398: 31d09663 bne ra,t4,800006a4 - -8000039c : -8000039c: 00000213 li tp,0 -800003a0: 800000b7 lui ra,0x80000 -800003a4: 00700113 li sp,7 -800003a8: 4020d733 sra a4,ra,sp -800003ac: 00070313 mv t1,a4 -800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003b4: 00200293 li t0,2 -800003b8: fe5214e3 bne tp,t0,800003a0 -800003bc: ff000eb7 lui t4,0xff000 -800003c0: 01900193 li gp,25 -800003c4: 2fd31063 bne t1,t4,800006a4 - -800003c8 : -800003c8: 00000213 li tp,0 -800003cc: 800000b7 lui ra,0x80000 -800003d0: 00e00113 li sp,14 -800003d4: 4020d733 sra a4,ra,sp -800003d8: 00000013 nop -800003dc: 00070313 mv t1,a4 -800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003e4: 00200293 li t0,2 -800003e8: fe5212e3 bne tp,t0,800003cc -800003ec: fffe0eb7 lui t4,0xfffe0 -800003f0: 01a00193 li gp,26 -800003f4: 2bd31863 bne t1,t4,800006a4 - -800003f8 : -800003f8: 00000213 li tp,0 -800003fc: 800000b7 lui ra,0x80000 -80000400: 01f00113 li sp,31 -80000404: 4020d733 sra a4,ra,sp -80000408: 00000013 nop -8000040c: 00000013 nop -80000410: 00070313 mv t1,a4 -80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000418: 00200293 li t0,2 -8000041c: fe5210e3 bne tp,t0,800003fc -80000420: fff00e93 li t4,-1 -80000424: 01b00193 li gp,27 -80000428: 27d31e63 bne t1,t4,800006a4 - -8000042c : -8000042c: 00000213 li tp,0 -80000430: 800000b7 lui ra,0x80000 -80000434: 00700113 li sp,7 -80000438: 4020d733 sra a4,ra,sp -8000043c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000440: 00200293 li t0,2 -80000444: fe5216e3 bne tp,t0,80000430 -80000448: ff000eb7 lui t4,0xff000 -8000044c: 01c00193 li gp,28 -80000450: 25d71a63 bne a4,t4,800006a4 - -80000454 : -80000454: 00000213 li tp,0 -80000458: 800000b7 lui ra,0x80000 -8000045c: 00e00113 li sp,14 -80000460: 00000013 nop -80000464: 4020d733 sra a4,ra,sp -80000468: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000046c: 00200293 li t0,2 -80000470: fe5214e3 bne tp,t0,80000458 -80000474: fffe0eb7 lui t4,0xfffe0 -80000478: 01d00193 li gp,29 -8000047c: 23d71463 bne a4,t4,800006a4 - -80000480 : -80000480: 00000213 li tp,0 -80000484: 800000b7 lui ra,0x80000 -80000488: 01f00113 li sp,31 -8000048c: 00000013 nop -80000490: 00000013 nop -80000494: 4020d733 sra a4,ra,sp -80000498: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000049c: 00200293 li t0,2 -800004a0: fe5212e3 bne tp,t0,80000484 -800004a4: fff00e93 li t4,-1 -800004a8: 01e00193 li gp,30 -800004ac: 1fd71c63 bne a4,t4,800006a4 - -800004b0 : -800004b0: 00000213 li tp,0 -800004b4: 800000b7 lui ra,0x80000 -800004b8: 00000013 nop -800004bc: 00700113 li sp,7 -800004c0: 4020d733 sra a4,ra,sp -800004c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004c8: 00200293 li t0,2 -800004cc: fe5214e3 bne tp,t0,800004b4 -800004d0: ff000eb7 lui t4,0xff000 -800004d4: 01f00193 li gp,31 -800004d8: 1dd71663 bne a4,t4,800006a4 - -800004dc : -800004dc: 00000213 li tp,0 -800004e0: 800000b7 lui ra,0x80000 -800004e4: 00000013 nop -800004e8: 00e00113 li sp,14 -800004ec: 00000013 nop -800004f0: 4020d733 sra a4,ra,sp -800004f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004f8: 00200293 li t0,2 -800004fc: fe5212e3 bne tp,t0,800004e0 -80000500: fffe0eb7 lui t4,0xfffe0 -80000504: 02000193 li gp,32 -80000508: 19d71e63 bne a4,t4,800006a4 - -8000050c : -8000050c: 00000213 li tp,0 -80000510: 800000b7 lui ra,0x80000 -80000514: 00000013 nop -80000518: 00000013 nop -8000051c: 01f00113 li sp,31 -80000520: 4020d733 sra a4,ra,sp -80000524: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000528: 00200293 li t0,2 -8000052c: fe5212e3 bne tp,t0,80000510 -80000530: fff00e93 li t4,-1 -80000534: 02100193 li gp,33 -80000538: 17d71663 bne a4,t4,800006a4 - -8000053c : -8000053c: 00000213 li tp,0 -80000540: 00700113 li sp,7 -80000544: 800000b7 lui ra,0x80000 -80000548: 4020d733 sra a4,ra,sp -8000054c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000550: 00200293 li t0,2 -80000554: fe5216e3 bne tp,t0,80000540 -80000558: ff000eb7 lui t4,0xff000 -8000055c: 02200193 li gp,34 -80000560: 15d71263 bne a4,t4,800006a4 - -80000564 : -80000564: 00000213 li tp,0 -80000568: 00e00113 li sp,14 -8000056c: 800000b7 lui ra,0x80000 -80000570: 00000013 nop -80000574: 4020d733 sra a4,ra,sp -80000578: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000057c: 00200293 li t0,2 -80000580: fe5214e3 bne tp,t0,80000568 -80000584: fffe0eb7 lui t4,0xfffe0 -80000588: 02300193 li gp,35 -8000058c: 11d71c63 bne a4,t4,800006a4 - -80000590 : -80000590: 00000213 li tp,0 -80000594: 01f00113 li sp,31 -80000598: 800000b7 lui ra,0x80000 -8000059c: 00000013 nop -800005a0: 00000013 nop -800005a4: 4020d733 sra a4,ra,sp -800005a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800005ac: 00200293 li t0,2 -800005b0: fe5212e3 bne tp,t0,80000594 -800005b4: fff00e93 li t4,-1 -800005b8: 02400193 li gp,36 -800005bc: 0fd71463 bne a4,t4,800006a4 - -800005c0 : -800005c0: 00000213 li tp,0 -800005c4: 00700113 li sp,7 -800005c8: 00000013 nop -800005cc: 800000b7 lui ra,0x80000 -800005d0: 4020d733 sra a4,ra,sp -800005d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800005d8: 00200293 li t0,2 -800005dc: fe5214e3 bne tp,t0,800005c4 -800005e0: ff000eb7 lui t4,0xff000 -800005e4: 02500193 li gp,37 -800005e8: 0bd71e63 bne a4,t4,800006a4 - -800005ec : -800005ec: 00000213 li tp,0 -800005f0: 00e00113 li sp,14 -800005f4: 00000013 nop -800005f8: 800000b7 lui ra,0x80000 -800005fc: 00000013 nop -80000600: 4020d733 sra a4,ra,sp -80000604: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000608: 00200293 li t0,2 -8000060c: fe5212e3 bne tp,t0,800005f0 -80000610: fffe0eb7 lui t4,0xfffe0 -80000614: 02600193 li gp,38 -80000618: 09d71663 bne a4,t4,800006a4 - -8000061c : -8000061c: 00000213 li tp,0 -80000620: 01f00113 li sp,31 -80000624: 00000013 nop -80000628: 00000013 nop -8000062c: 800000b7 lui ra,0x80000 -80000630: 4020d733 sra a4,ra,sp -80000634: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000638: 00200293 li t0,2 -8000063c: fe5212e3 bne tp,t0,80000620 -80000640: fff00e93 li t4,-1 -80000644: 02700193 li gp,39 -80000648: 05d71e63 bne a4,t4,800006a4 - -8000064c : -8000064c: 00f00093 li ra,15 -80000650: 40105133 sra sp,zero,ra -80000654: 00000e93 li t4,0 -80000658: 02800193 li gp,40 -8000065c: 05d11463 bne sp,t4,800006a4 - -80000660 : -80000660: 02000093 li ra,32 -80000664: 4000d133 sra sp,ra,zero -80000668: 02000e93 li t4,32 -8000066c: 02900193 li gp,41 -80000670: 03d11a63 bne sp,t4,800006a4 - -80000674 : -80000674: 400050b3 sra ra,zero,zero -80000678: 00000e93 li t4,0 -8000067c: 02a00193 li gp,42 -80000680: 03d09263 bne ra,t4,800006a4 - -80000684 : -80000684: 40000093 li ra,1024 -80000688: 00001137 lui sp,0x1 -8000068c: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> -80000690: 4020d033 sra zero,ra,sp -80000694: 00000e93 li t4,0 -80000698: 02b00193 li gp,43 -8000069c: 01d01463 bne zero,t4,800006a4 -800006a0: 02301063 bne zero,gp,800006c0 - -800006a4 : -800006a4: 0ff0000f fence -800006a8: 00018063 beqz gp,800006a8 -800006ac: 00119193 slli gp,gp,0x1 -800006b0: 0011e193 ori gp,gp,1 -800006b4: 05d00893 li a7,93 -800006b8: 00018513 mv a0,gp -800006bc: 00000073 ecall - -800006c0 : -800006c0: 0ff0000f fence -800006c4: 00100193 li gp,1 -800006c8: 05d00893 li a7,93 -800006cc: 00000513 li a0,0 -800006d0: 00000073 ecall -800006d4: c0001073 unimp -800006d8: 0000 unimp -800006da: 0000 unimp -800006dc: 0000 unimp -800006de: 0000 unimp -800006e0: 0000 unimp -800006e2: 0000 unimp -800006e4: 0000 unimp -800006e6: 0000 unimp -800006e8: 0000 unimp -800006ea: 0000 unimp -800006ec: 0000 unimp -800006ee: 0000 unimp -800006f0: 0000 unimp -800006f2: 0000 unimp -800006f4: 0000 unimp -800006f6: 0000 unimp -800006f8: 0000 unimp -800006fa: 0000 unimp -800006fc: 0000 unimp -800006fe: 0000 unimp -80000700: 0000 unimp -80000702: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-srai.dump b/benchmarks/riscv_tests/rv32ui-p-srai.dump deleted file mode 100644 index d13cc125..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-srai.dump +++ /dev/null @@ -1,328 +0,0 @@ - -rv32ui-p-srai: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00000093 li ra,0 -8000010c: 4000d713 srai a4,ra,0x0 -80000110: 00000e93 li t4,0 -80000114: 00200193 li gp,2 -80000118: 2bd71463 bne a4,t4,800003c0 - -8000011c : -8000011c: 800000b7 lui ra,0x80000 -80000120: 4010d713 srai a4,ra,0x1 -80000124: c0000eb7 lui t4,0xc0000 -80000128: 00300193 li gp,3 -8000012c: 29d71a63 bne a4,t4,800003c0 - -80000130 : -80000130: 800000b7 lui ra,0x80000 -80000134: 4070d713 srai a4,ra,0x7 -80000138: ff000eb7 lui t4,0xff000 -8000013c: 00400193 li gp,4 -80000140: 29d71063 bne a4,t4,800003c0 - -80000144 : -80000144: 800000b7 lui ra,0x80000 -80000148: 40e0d713 srai a4,ra,0xe -8000014c: fffe0eb7 lui t4,0xfffe0 -80000150: 00500193 li gp,5 -80000154: 27d71663 bne a4,t4,800003c0 - -80000158 : -80000158: 800000b7 lui ra,0x80000 -8000015c: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> -80000160: 41f0d713 srai a4,ra,0x1f -80000164: fff00e93 li t4,-1 -80000168: 00600193 li gp,6 -8000016c: 25d71a63 bne a4,t4,800003c0 - -80000170 : -80000170: 800000b7 lui ra,0x80000 -80000174: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -80000178: 4000d713 srai a4,ra,0x0 -8000017c: 80000eb7 lui t4,0x80000 -80000180: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> -80000184: 00700193 li gp,7 -80000188: 23d71c63 bne a4,t4,800003c0 - -8000018c : -8000018c: 800000b7 lui ra,0x80000 -80000190: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -80000194: 4010d713 srai a4,ra,0x1 -80000198: 40000eb7 lui t4,0x40000 -8000019c: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001> -800001a0: 00800193 li gp,8 -800001a4: 21d71e63 bne a4,t4,800003c0 - -800001a8 : -800001a8: 800000b7 lui ra,0x80000 -800001ac: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001b0: 4070d713 srai a4,ra,0x7 -800001b4: 01000eb7 lui t4,0x1000 -800001b8: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001> -800001bc: 00900193 li gp,9 -800001c0: 21d71063 bne a4,t4,800003c0 - -800001c4 : -800001c4: 800000b7 lui ra,0x80000 -800001c8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001cc: 40e0d713 srai a4,ra,0xe -800001d0: 00020eb7 lui t4,0x20 -800001d4: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001> -800001d8: 00a00193 li gp,10 -800001dc: 1fd71263 bne a4,t4,800003c0 - -800001e0 : -800001e0: 800000b7 lui ra,0x80000 -800001e4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001e8: 41f0d713 srai a4,ra,0x1f -800001ec: 00000e93 li t4,0 -800001f0: 00b00193 li gp,11 -800001f4: 1dd71663 bne a4,t4,800003c0 - -800001f8 : -800001f8: 818180b7 lui ra,0x81818 -800001fc: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000200: 4000d713 srai a4,ra,0x0 -80000204: 81818eb7 lui t4,0x81818 -80000208: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181> -8000020c: 00c00193 li gp,12 -80000210: 1bd71863 bne a4,t4,800003c0 - -80000214 : -80000214: 818180b7 lui ra,0x81818 -80000218: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -8000021c: 4010d713 srai a4,ra,0x1 -80000220: c0c0ceb7 lui t4,0xc0c0c -80000224: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0> -80000228: 00d00193 li gp,13 -8000022c: 19d71a63 bne a4,t4,800003c0 - -80000230 : -80000230: 818180b7 lui ra,0x81818 -80000234: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000238: 4070d713 srai a4,ra,0x7 -8000023c: ff030eb7 lui t4,0xff030 -80000240: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303> -80000244: 00e00193 li gp,14 -80000248: 17d71c63 bne a4,t4,800003c0 - -8000024c : -8000024c: 818180b7 lui ra,0x81818 -80000250: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000254: 40e0d713 srai a4,ra,0xe -80000258: fffe0eb7 lui t4,0xfffe0 -8000025c: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606> -80000260: 00f00193 li gp,15 -80000264: 15d71e63 bne a4,t4,800003c0 - -80000268 : -80000268: 818180b7 lui ra,0x81818 -8000026c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> -80000270: 41f0d713 srai a4,ra,0x1f -80000274: fff00e93 li t4,-1 -80000278: 01000193 li gp,16 -8000027c: 15d71263 bne a4,t4,800003c0 - -80000280 : -80000280: 800000b7 lui ra,0x80000 -80000284: 4070d093 srai ra,ra,0x7 -80000288: ff000eb7 lui t4,0xff000 -8000028c: 01100193 li gp,17 -80000290: 13d09863 bne ra,t4,800003c0 - -80000294 : -80000294: 00000213 li tp,0 -80000298: 800000b7 lui ra,0x80000 -8000029c: 4070d713 srai a4,ra,0x7 -800002a0: 00070313 mv t1,a4 -800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a8: 00200293 li t0,2 -800002ac: fe5216e3 bne tp,t0,80000298 -800002b0: ff000eb7 lui t4,0xff000 -800002b4: 01200193 li gp,18 -800002b8: 11d31463 bne t1,t4,800003c0 - -800002bc : -800002bc: 00000213 li tp,0 -800002c0: 800000b7 lui ra,0x80000 -800002c4: 40e0d713 srai a4,ra,0xe -800002c8: 00000013 nop -800002cc: 00070313 mv t1,a4 -800002d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d4: 00200293 li t0,2 -800002d8: fe5214e3 bne tp,t0,800002c0 -800002dc: fffe0eb7 lui t4,0xfffe0 -800002e0: 01300193 li gp,19 -800002e4: 0dd31e63 bne t1,t4,800003c0 - -800002e8 : -800002e8: 00000213 li tp,0 -800002ec: 800000b7 lui ra,0x80000 -800002f0: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> -800002f4: 41f0d713 srai a4,ra,0x1f -800002f8: 00000013 nop -800002fc: 00000013 nop -80000300: 00070313 mv t1,a4 -80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000308: 00200293 li t0,2 -8000030c: fe5210e3 bne tp,t0,800002ec -80000310: fff00e93 li t4,-1 -80000314: 01400193 li gp,20 -80000318: 0bd31463 bne t1,t4,800003c0 - -8000031c : -8000031c: 00000213 li tp,0 -80000320: 800000b7 lui ra,0x80000 -80000324: 4070d713 srai a4,ra,0x7 -80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000032c: 00200293 li t0,2 -80000330: fe5218e3 bne tp,t0,80000320 -80000334: ff000eb7 lui t4,0xff000 -80000338: 01500193 li gp,21 -8000033c: 09d71263 bne a4,t4,800003c0 - -80000340 : -80000340: 00000213 li tp,0 -80000344: 800000b7 lui ra,0x80000 -80000348: 00000013 nop -8000034c: 40e0d713 srai a4,ra,0xe -80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000354: 00200293 li t0,2 -80000358: fe5216e3 bne tp,t0,80000344 -8000035c: fffe0eb7 lui t4,0xfffe0 -80000360: 01600193 li gp,22 -80000364: 05d71e63 bne a4,t4,800003c0 - -80000368 : -80000368: 00000213 li tp,0 -8000036c: 800000b7 lui ra,0x80000 -80000370: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> -80000374: 00000013 nop -80000378: 00000013 nop -8000037c: 41f0d713 srai a4,ra,0x1f -80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000384: 00200293 li t0,2 -80000388: fe5212e3 bne tp,t0,8000036c -8000038c: fff00e93 li t4,-1 -80000390: 01700193 li gp,23 -80000394: 03d71663 bne a4,t4,800003c0 - -80000398 : -80000398: 40405093 srai ra,zero,0x4 -8000039c: 00000e93 li t4,0 -800003a0: 01800193 li gp,24 -800003a4: 01d09e63 bne ra,t4,800003c0 - -800003a8 : -800003a8: 02100093 li ra,33 -800003ac: 40a0d013 srai zero,ra,0xa -800003b0: 00000e93 li t4,0 -800003b4: 01900193 li gp,25 -800003b8: 01d01463 bne zero,t4,800003c0 -800003bc: 02301063 bne zero,gp,800003dc - -800003c0 : -800003c0: 0ff0000f fence -800003c4: 00018063 beqz gp,800003c4 -800003c8: 00119193 slli gp,gp,0x1 -800003cc: 0011e193 ori gp,gp,1 -800003d0: 05d00893 li a7,93 -800003d4: 00018513 mv a0,gp -800003d8: 00000073 ecall - -800003dc : -800003dc: 0ff0000f fence -800003e0: 00100193 li gp,1 -800003e4: 05d00893 li a7,93 -800003e8: 00000513 li a0,0 -800003ec: 00000073 ecall -800003f0: c0001073 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 diff --git a/benchmarks/riscv_tests/rv32ui-p-srl.dump b/benchmarks/riscv_tests/rv32ui-p-srl.dump deleted file mode 100644 index fc0687dc..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-srl.dump +++ /dev/null @@ -1,544 +0,0 @@ - -rv32ui-p-srl: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi sptbr,0 -80000064: 00000297 auipc t0,0x0 -80000068: 01c28293 addi t0,t0,28 # 80000080 -8000006c: 30529073 csrw mtvec,t0 -80000070: fff00293 li t0,-1 -80000074: 3b029073 csrw pmpaddr0,t0 -80000078: 01f00293 li t0,31 -8000007c: 3a029073 csrw pmpcfg0,t0 -80000080: 00000297 auipc t0,0x0 -80000084: 01828293 addi t0,t0,24 # 80000098 -80000088: 30529073 csrw mtvec,t0 -8000008c: 30205073 csrwi medeleg,0 -80000090: 30305073 csrwi mideleg,0 -80000094: 30405073 csrwi mie,0 -80000098: 00000193 li gp,0 -8000009c: 00000297 auipc t0,0x0 -800000a0: f6828293 addi t0,t0,-152 # 80000004 -800000a4: 30529073 csrw mtvec,t0 -800000a8: 00100513 li a0,1 -800000ac: 01f51513 slli a0,a0,0x1f -800000b0: 00054863 bltz a0,800000c0 -800000b4: 0ff0000f fence -800000b8: 00100193 li gp,1 -800000bc: 00000073 ecall -800000c0: 80000297 auipc t0,0x80000 -800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> -800000c8: 00028e63 beqz t0,800000e4 -800000cc: 10529073 csrw stvec,t0 -800000d0: 0000b2b7 lui t0,0xb -800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000d8: 30229073 csrw medeleg,t0 -800000dc: 30202373 csrr t1,medeleg -800000e0: f4629ee3 bne t0,t1,8000003c -800000e4: 30005073 csrwi mstatus,0 -800000e8: 00000297 auipc t0,0x0 -800000ec: 01428293 addi t0,t0,20 # 800000fc -800000f0: 34129073 csrw mepc,t0 -800000f4: f1402573 csrr a0,mhartid -800000f8: 30200073 mret - -800000fc : -800000fc: 800000b7 lui ra,0x80000 -80000100: 00000113 li sp,0 -80000104: 0020df33 srl t5,ra,sp -80000108: 80000eb7 lui t4,0x80000 -8000010c: 00200193 li gp,2 -80000110: 57df1863 bne t5,t4,80000680 - -80000114 : -80000114: 800000b7 lui ra,0x80000 -80000118: 00100113 li sp,1 -8000011c: 0020df33 srl t5,ra,sp -80000120: 40000eb7 lui t4,0x40000 -80000124: 00300193 li gp,3 -80000128: 55df1c63 bne t5,t4,80000680 - -8000012c : -8000012c: 800000b7 lui ra,0x80000 -80000130: 00700113 li sp,7 -80000134: 0020df33 srl t5,ra,sp -80000138: 01000eb7 lui t4,0x1000 -8000013c: 00400193 li gp,4 -80000140: 55df1063 bne t5,t4,80000680 - -80000144 : -80000144: 800000b7 lui ra,0x80000 -80000148: 00e00113 li sp,14 -8000014c: 0020df33 srl t5,ra,sp -80000150: 00020eb7 lui t4,0x20 -80000154: 00500193 li gp,5 -80000158: 53df1463 bne t5,t4,80000680 - -8000015c : -8000015c: 800000b7 lui ra,0x80000 -80000160: 00108093 addi ra,ra,1 # 80000001 -80000164: 01f00113 li sp,31 -80000168: 0020df33 srl t5,ra,sp -8000016c: 00100e93 li t4,1 -80000170: 00600193 li gp,6 -80000174: 51df1663 bne t5,t4,80000680 - -80000178 : -80000178: fff00093 li ra,-1 -8000017c: 00000113 li sp,0 -80000180: 0020df33 srl t5,ra,sp -80000184: fff00e93 li t4,-1 -80000188: 00700193 li gp,7 -8000018c: 4fdf1a63 bne t5,t4,80000680 - -80000190 : -80000190: fff00093 li ra,-1 -80000194: 00100113 li sp,1 -80000198: 0020df33 srl t5,ra,sp -8000019c: 80000eb7 lui t4,0x80000 -800001a0: fffe8e93 addi t4,t4,-1 # 7fffffff -800001a4: 00800193 li gp,8 -800001a8: 4ddf1c63 bne t5,t4,80000680 - -800001ac : -800001ac: fff00093 li ra,-1 -800001b0: 00700113 li sp,7 -800001b4: 0020df33 srl t5,ra,sp -800001b8: 02000eb7 lui t4,0x2000 -800001bc: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001> -800001c0: 00900193 li gp,9 -800001c4: 4bdf1e63 bne t5,t4,80000680 - -800001c8 : -800001c8: fff00093 li ra,-1 -800001cc: 00e00113 li sp,14 -800001d0: 0020df33 srl t5,ra,sp -800001d4: 00040eb7 lui t4,0x40 -800001d8: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001> -800001dc: 00a00193 li gp,10 -800001e0: 4bdf1063 bne t5,t4,80000680 - -800001e4 : -800001e4: fff00093 li ra,-1 -800001e8: 01f00113 li sp,31 -800001ec: 0020df33 srl t5,ra,sp -800001f0: 00100e93 li t4,1 -800001f4: 00b00193 li gp,11 -800001f8: 49df1463 bne t5,t4,80000680 - -800001fc : -800001fc: 212120b7 lui ra,0x21212 -80000200: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000204: 00000113 li sp,0 -80000208: 0020df33 srl t5,ra,sp -8000020c: 21212eb7 lui t4,0x21212 -80000210: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> -80000214: 00c00193 li gp,12 -80000218: 47df1463 bne t5,t4,80000680 - -8000021c : -8000021c: 212120b7 lui ra,0x21212 -80000220: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000224: 00100113 li sp,1 -80000228: 0020df33 srl t5,ra,sp -8000022c: 10909eb7 lui t4,0x10909 -80000230: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> -80000234: 00d00193 li gp,13 -80000238: 45df1463 bne t5,t4,80000680 - -8000023c : -8000023c: 212120b7 lui ra,0x21212 -80000240: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000244: 00700113 li sp,7 -80000248: 0020df33 srl t5,ra,sp -8000024c: 00424eb7 lui t4,0x424 -80000250: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> -80000254: 00e00193 li gp,14 -80000258: 43df1463 bne t5,t4,80000680 - -8000025c : -8000025c: 212120b7 lui ra,0x21212 -80000260: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000264: 00e00113 li sp,14 -80000268: 0020df33 srl t5,ra,sp -8000026c: 00008eb7 lui t4,0x8 -80000270: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> -80000274: 00f00193 li gp,15 -80000278: 41df1463 bne t5,t4,80000680 - -8000027c : -8000027c: 212120b7 lui ra,0x21212 -80000280: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000284: 01f00113 li sp,31 -80000288: 0020df33 srl t5,ra,sp -8000028c: 00000e93 li t4,0 -80000290: 01000193 li gp,16 -80000294: 3fdf1663 bne t5,t4,80000680 - -80000298 : -80000298: 212120b7 lui ra,0x21212 -8000029c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800002a0: fc000113 li sp,-64 -800002a4: 0020df33 srl t5,ra,sp -800002a8: 21212eb7 lui t4,0x21212 -800002ac: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> -800002b0: 01100193 li gp,17 -800002b4: 3ddf1663 bne t5,t4,80000680 - -800002b8 : -800002b8: 212120b7 lui ra,0x21212 -800002bc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800002c0: fc100113 li sp,-63 -800002c4: 0020df33 srl t5,ra,sp -800002c8: 10909eb7 lui t4,0x10909 -800002cc: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> -800002d0: 01200193 li gp,18 -800002d4: 3bdf1663 bne t5,t4,80000680 - -800002d8 : -800002d8: 212120b7 lui ra,0x21212 -800002dc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800002e0: fc700113 li sp,-57 -800002e4: 0020df33 srl t5,ra,sp -800002e8: 00424eb7 lui t4,0x424 -800002ec: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> -800002f0: 01300193 li gp,19 -800002f4: 39df1663 bne t5,t4,80000680 - -800002f8 : -800002f8: 212120b7 lui ra,0x21212 -800002fc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000300: fce00113 li sp,-50 -80000304: 0020df33 srl t5,ra,sp -80000308: 00008eb7 lui t4,0x8 -8000030c: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> -80000310: 01400193 li gp,20 -80000314: 37df1663 bne t5,t4,80000680 - -80000318 : -80000318: 212120b7 lui ra,0x21212 -8000031c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000320: fff00113 li sp,-1 -80000324: 0020df33 srl t5,ra,sp -80000328: 00000e93 li t4,0 -8000032c: 01500193 li gp,21 -80000330: 35df1863 bne t5,t4,80000680 - -80000334 : -80000334: 800000b7 lui ra,0x80000 -80000338: 00700113 li sp,7 -8000033c: 0020d0b3 srl ra,ra,sp -80000340: 01000eb7 lui t4,0x1000 -80000344: 01600193 li gp,22 -80000348: 33d09c63 bne ra,t4,80000680 - -8000034c : -8000034c: 800000b7 lui ra,0x80000 -80000350: 00e00113 li sp,14 -80000354: 0020d133 srl sp,ra,sp -80000358: 00020eb7 lui t4,0x20 -8000035c: 01700193 li gp,23 -80000360: 33d11063 bne sp,t4,80000680 - -80000364 : -80000364: 00700093 li ra,7 -80000368: 0010d0b3 srl ra,ra,ra -8000036c: 00000e93 li t4,0 -80000370: 01800193 li gp,24 -80000374: 31d09663 bne ra,t4,80000680 - -80000378 : -80000378: 00000213 li tp,0 -8000037c: 800000b7 lui ra,0x80000 -80000380: 00700113 li sp,7 -80000384: 0020df33 srl t5,ra,sp -80000388: 000f0313 mv t1,t5 -8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000390: 00200293 li t0,2 -80000394: fe5214e3 bne tp,t0,8000037c -80000398: 01000eb7 lui t4,0x1000 -8000039c: 01900193 li gp,25 -800003a0: 2fd31063 bne t1,t4,80000680 - -800003a4 : -800003a4: 00000213 li tp,0 -800003a8: 800000b7 lui ra,0x80000 -800003ac: 00e00113 li sp,14 -800003b0: 0020df33 srl t5,ra,sp -800003b4: 00000013 nop -800003b8: 000f0313 mv t1,t5 -800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003c0: 00200293 li t0,2 -800003c4: fe5212e3 bne tp,t0,800003a8 -800003c8: 00020eb7 lui t4,0x20 -800003cc: 01a00193 li gp,26 -800003d0: 2bd31863 bne t1,t4,80000680 - -800003d4 : -800003d4: 00000213 li tp,0 -800003d8: 800000b7 lui ra,0x80000 -800003dc: 01f00113 li sp,31 -800003e0: 0020df33 srl t5,ra,sp -800003e4: 00000013 nop -800003e8: 00000013 nop -800003ec: 000f0313 mv t1,t5 -800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f4: 00200293 li t0,2 -800003f8: fe5210e3 bne tp,t0,800003d8 -800003fc: 00100e93 li t4,1 -80000400: 01b00193 li gp,27 -80000404: 27d31e63 bne t1,t4,80000680 - -80000408 : -80000408: 00000213 li tp,0 -8000040c: 800000b7 lui ra,0x80000 -80000410: 00700113 li sp,7 -80000414: 0020df33 srl t5,ra,sp -80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000041c: 00200293 li t0,2 -80000420: fe5216e3 bne tp,t0,8000040c -80000424: 01000eb7 lui t4,0x1000 -80000428: 01c00193 li gp,28 -8000042c: 25df1a63 bne t5,t4,80000680 - -80000430 : -80000430: 00000213 li tp,0 -80000434: 800000b7 lui ra,0x80000 -80000438: 00e00113 li sp,14 -8000043c: 00000013 nop -80000440: 0020df33 srl t5,ra,sp -80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000448: 00200293 li t0,2 -8000044c: fe5214e3 bne tp,t0,80000434 -80000450: 00020eb7 lui t4,0x20 -80000454: 01d00193 li gp,29 -80000458: 23df1463 bne t5,t4,80000680 - -8000045c : -8000045c: 00000213 li tp,0 -80000460: 800000b7 lui ra,0x80000 -80000464: 01f00113 li sp,31 -80000468: 00000013 nop -8000046c: 00000013 nop -80000470: 0020df33 srl t5,ra,sp -80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000478: 00200293 li t0,2 -8000047c: fe5212e3 bne tp,t0,80000460 -80000480: 00100e93 li t4,1 -80000484: 01e00193 li gp,30 -80000488: 1fdf1c63 bne t5,t4,80000680 - -8000048c : -8000048c: 00000213 li tp,0 -80000490: 800000b7 lui ra,0x80000 -80000494: 00000013 nop -80000498: 00700113 li sp,7 -8000049c: 0020df33 srl t5,ra,sp -800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004a4: 00200293 li t0,2 -800004a8: fe5214e3 bne tp,t0,80000490 -800004ac: 01000eb7 lui t4,0x1000 -800004b0: 01f00193 li gp,31 -800004b4: 1ddf1663 bne t5,t4,80000680 - -800004b8 : -800004b8: 00000213 li tp,0 -800004bc: 800000b7 lui ra,0x80000 -800004c0: 00000013 nop -800004c4: 00e00113 li sp,14 -800004c8: 00000013 nop -800004cc: 0020df33 srl t5,ra,sp -800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004d4: 00200293 li t0,2 -800004d8: fe5212e3 bne tp,t0,800004bc -800004dc: 00020eb7 lui t4,0x20 -800004e0: 02000193 li gp,32 -800004e4: 19df1e63 bne t5,t4,80000680 - -800004e8 : -800004e8: 00000213 li tp,0 -800004ec: 800000b7 lui ra,0x80000 -800004f0: 00000013 nop -800004f4: 00000013 nop -800004f8: 01f00113 li sp,31 -800004fc: 0020df33 srl t5,ra,sp -80000500: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000504: 00200293 li t0,2 -80000508: fe5212e3 bne tp,t0,800004ec -8000050c: 00100e93 li t4,1 -80000510: 02100193 li gp,33 -80000514: 17df1663 bne t5,t4,80000680 - -80000518 : -80000518: 00000213 li tp,0 -8000051c: 00700113 li sp,7 -80000520: 800000b7 lui ra,0x80000 -80000524: 0020df33 srl t5,ra,sp -80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000052c: 00200293 li t0,2 -80000530: fe5216e3 bne tp,t0,8000051c -80000534: 01000eb7 lui t4,0x1000 -80000538: 02200193 li gp,34 -8000053c: 15df1263 bne t5,t4,80000680 - -80000540 : -80000540: 00000213 li tp,0 -80000544: 00e00113 li sp,14 -80000548: 800000b7 lui ra,0x80000 -8000054c: 00000013 nop -80000550: 0020df33 srl t5,ra,sp -80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000558: 00200293 li t0,2 -8000055c: fe5214e3 bne tp,t0,80000544 -80000560: 00020eb7 lui t4,0x20 -80000564: 02300193 li gp,35 -80000568: 11df1c63 bne t5,t4,80000680 - -8000056c : -8000056c: 00000213 li tp,0 -80000570: 01f00113 li sp,31 -80000574: 800000b7 lui ra,0x80000 -80000578: 00000013 nop -8000057c: 00000013 nop -80000580: 0020df33 srl t5,ra,sp -80000584: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000588: 00200293 li t0,2 -8000058c: fe5212e3 bne tp,t0,80000570 -80000590: 00100e93 li t4,1 -80000594: 02400193 li gp,36 -80000598: 0fdf1463 bne t5,t4,80000680 - -8000059c : -8000059c: 00000213 li tp,0 -800005a0: 00700113 li sp,7 -800005a4: 00000013 nop -800005a8: 800000b7 lui ra,0x80000 -800005ac: 0020df33 srl t5,ra,sp -800005b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800005b4: 00200293 li t0,2 -800005b8: fe5214e3 bne tp,t0,800005a0 -800005bc: 01000eb7 lui t4,0x1000 -800005c0: 02500193 li gp,37 -800005c4: 0bdf1e63 bne t5,t4,80000680 - -800005c8 : -800005c8: 00000213 li tp,0 -800005cc: 00e00113 li sp,14 -800005d0: 00000013 nop -800005d4: 800000b7 lui ra,0x80000 -800005d8: 00000013 nop -800005dc: 0020df33 srl t5,ra,sp -800005e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800005e4: 00200293 li t0,2 -800005e8: fe5212e3 bne tp,t0,800005cc -800005ec: 00020eb7 lui t4,0x20 -800005f0: 02600193 li gp,38 -800005f4: 09df1663 bne t5,t4,80000680 - -800005f8 : -800005f8: 00000213 li tp,0 -800005fc: 01f00113 li sp,31 -80000600: 00000013 nop -80000604: 00000013 nop -80000608: 800000b7 lui ra,0x80000 -8000060c: 0020df33 srl t5,ra,sp -80000610: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000614: 00200293 li t0,2 -80000618: fe5212e3 bne tp,t0,800005fc -8000061c: 00100e93 li t4,1 -80000620: 02700193 li gp,39 -80000624: 05df1e63 bne t5,t4,80000680 - -80000628 : -80000628: 00f00093 li ra,15 -8000062c: 00105133 srl sp,zero,ra -80000630: 00000e93 li t4,0 -80000634: 02800193 li gp,40 -80000638: 05d11463 bne sp,t4,80000680 - -8000063c : -8000063c: 02000093 li ra,32 -80000640: 0000d133 srl sp,ra,zero -80000644: 02000e93 li t4,32 -80000648: 02900193 li gp,41 -8000064c: 03d11a63 bne sp,t4,80000680 - -80000650 : -80000650: 000050b3 srl ra,zero,zero -80000654: 00000e93 li t4,0 -80000658: 02a00193 li gp,42 -8000065c: 03d09263 bne ra,t4,80000680 - -80000660 : -80000660: 40000093 li ra,1024 -80000664: 00001137 lui sp,0x1 -80000668: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> -8000066c: 0020d033 srl zero,ra,sp -80000670: 00000e93 li t4,0 -80000674: 02b00193 li gp,43 -80000678: 01d01463 bne zero,t4,80000680 -8000067c: 00301c63 bne zero,gp,80000694 - -80000680 : -80000680: 0ff0000f fence -80000684: 00018063 beqz gp,80000684 -80000688: 00119193 slli gp,gp,0x1 -8000068c: 0011e193 ori gp,gp,1 -80000690: 00000073 ecall - -80000694 : -80000694: 0ff0000f fence -80000698: 00100193 li gp,1 -8000069c: 00000073 ecall -800006a0: c0001073 unimp -800006a4: 0000 unimp -800006a6: 0000 unimp -800006a8: 0000 unimp -800006aa: 0000 unimp -800006ac: 0000 unimp -800006ae: 0000 unimp -800006b0: 0000 unimp -800006b2: 0000 unimp -800006b4: 0000 unimp -800006b6: 0000 unimp -800006b8: 0000 unimp -800006ba: 0000 unimp -800006bc: 0000 unimp -800006be: 0000 unimp -800006c0: 0000 unimp -800006c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-srli.dump b/benchmarks/riscv_tests/rv32ui-p-srli.dump deleted file mode 100644 index 4a09d141..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-srli.dump +++ /dev/null @@ -1,309 +0,0 @@ - -rv32ui-p-srli: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi sptbr,0 -80000064: 00000297 auipc t0,0x0 -80000068: 01c28293 addi t0,t0,28 # 80000080 -8000006c: 30529073 csrw mtvec,t0 -80000070: fff00293 li t0,-1 -80000074: 3b029073 csrw pmpaddr0,t0 -80000078: 01f00293 li t0,31 -8000007c: 3a029073 csrw pmpcfg0,t0 -80000080: 00000297 auipc t0,0x0 -80000084: 01828293 addi t0,t0,24 # 80000098 -80000088: 30529073 csrw mtvec,t0 -8000008c: 30205073 csrwi medeleg,0 -80000090: 30305073 csrwi mideleg,0 -80000094: 30405073 csrwi mie,0 -80000098: 00000193 li gp,0 -8000009c: 00000297 auipc t0,0x0 -800000a0: f6828293 addi t0,t0,-152 # 80000004 -800000a4: 30529073 csrw mtvec,t0 -800000a8: 00100513 li a0,1 -800000ac: 01f51513 slli a0,a0,0x1f -800000b0: 00054863 bltz a0,800000c0 -800000b4: 0ff0000f fence -800000b8: 00100193 li gp,1 -800000bc: 00000073 ecall -800000c0: 80000297 auipc t0,0x80000 -800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> -800000c8: 00028e63 beqz t0,800000e4 -800000cc: 10529073 csrw stvec,t0 -800000d0: 0000b2b7 lui t0,0xb -800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000d8: 30229073 csrw medeleg,t0 -800000dc: 30202373 csrr t1,medeleg -800000e0: f4629ee3 bne t0,t1,8000003c -800000e4: 30005073 csrwi mstatus,0 -800000e8: 00000297 auipc t0,0x0 -800000ec: 01428293 addi t0,t0,20 # 800000fc -800000f0: 34129073 csrw mepc,t0 -800000f4: f1402573 csrr a0,mhartid -800000f8: 30200073 mret - -800000fc : -800000fc: 800000b7 lui ra,0x80000 -80000100: 0000df13 srli t5,ra,0x0 -80000104: 80000eb7 lui t4,0x80000 -80000108: 00200193 li gp,2 -8000010c: 29df1863 bne t5,t4,8000039c - -80000110 : -80000110: 800000b7 lui ra,0x80000 -80000114: 0010df13 srli t5,ra,0x1 -80000118: 40000eb7 lui t4,0x40000 -8000011c: 00300193 li gp,3 -80000120: 27df1e63 bne t5,t4,8000039c - -80000124 : -80000124: 800000b7 lui ra,0x80000 -80000128: 0070df13 srli t5,ra,0x7 -8000012c: 01000eb7 lui t4,0x1000 -80000130: 00400193 li gp,4 -80000134: 27df1463 bne t5,t4,8000039c - -80000138 : -80000138: 800000b7 lui ra,0x80000 -8000013c: 00e0df13 srli t5,ra,0xe -80000140: 00020eb7 lui t4,0x20 -80000144: 00500193 li gp,5 -80000148: 25df1a63 bne t5,t4,8000039c - -8000014c : -8000014c: 800000b7 lui ra,0x80000 -80000150: 00108093 addi ra,ra,1 # 80000001 -80000154: 01f0df13 srli t5,ra,0x1f -80000158: 00100e93 li t4,1 -8000015c: 00600193 li gp,6 -80000160: 23df1e63 bne t5,t4,8000039c - -80000164 : -80000164: fff00093 li ra,-1 -80000168: 0000df13 srli t5,ra,0x0 -8000016c: fff00e93 li t4,-1 -80000170: 00700193 li gp,7 -80000174: 23df1463 bne t5,t4,8000039c - -80000178 : -80000178: fff00093 li ra,-1 -8000017c: 0010df13 srli t5,ra,0x1 -80000180: 80000eb7 lui t4,0x80000 -80000184: fffe8e93 addi t4,t4,-1 # 7fffffff -80000188: 00800193 li gp,8 -8000018c: 21df1863 bne t5,t4,8000039c - -80000190 : -80000190: fff00093 li ra,-1 -80000194: 0070df13 srli t5,ra,0x7 -80000198: 02000eb7 lui t4,0x2000 -8000019c: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001> -800001a0: 00900193 li gp,9 -800001a4: 1fdf1c63 bne t5,t4,8000039c - -800001a8 : -800001a8: fff00093 li ra,-1 -800001ac: 00e0df13 srli t5,ra,0xe -800001b0: 00040eb7 lui t4,0x40 -800001b4: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001> -800001b8: 00a00193 li gp,10 -800001bc: 1fdf1063 bne t5,t4,8000039c - -800001c0 : -800001c0: fff00093 li ra,-1 -800001c4: 01f0df13 srli t5,ra,0x1f -800001c8: 00100e93 li t4,1 -800001cc: 00b00193 li gp,11 -800001d0: 1ddf1663 bne t5,t4,8000039c - -800001d4 : -800001d4: 212120b7 lui ra,0x21212 -800001d8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800001dc: 0000df13 srli t5,ra,0x0 -800001e0: 21212eb7 lui t4,0x21212 -800001e4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> -800001e8: 00c00193 li gp,12 -800001ec: 1bdf1863 bne t5,t4,8000039c - -800001f0 : -800001f0: 212120b7 lui ra,0x21212 -800001f4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -800001f8: 0010df13 srli t5,ra,0x1 -800001fc: 10909eb7 lui t4,0x10909 -80000200: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> -80000204: 00d00193 li gp,13 -80000208: 19df1a63 bne t5,t4,8000039c - -8000020c : -8000020c: 212120b7 lui ra,0x21212 -80000210: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000214: 0070df13 srli t5,ra,0x7 -80000218: 00424eb7 lui t4,0x424 -8000021c: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> -80000220: 00e00193 li gp,14 -80000224: 17df1c63 bne t5,t4,8000039c - -80000228 : -80000228: 212120b7 lui ra,0x21212 -8000022c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -80000230: 00e0df13 srli t5,ra,0xe -80000234: 00008eb7 lui t4,0x8 -80000238: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> -8000023c: 00f00193 li gp,15 -80000240: 15df1e63 bne t5,t4,8000039c - -80000244 : -80000244: 212120b7 lui ra,0x21212 -80000248: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> -8000024c: 01f0df13 srli t5,ra,0x1f -80000250: 00000e93 li t4,0 -80000254: 01000193 li gp,16 -80000258: 15df1263 bne t5,t4,8000039c - -8000025c : -8000025c: 800000b7 lui ra,0x80000 -80000260: 0070d093 srli ra,ra,0x7 -80000264: 01000eb7 lui t4,0x1000 -80000268: 01100193 li gp,17 -8000026c: 13d09863 bne ra,t4,8000039c - -80000270 : -80000270: 00000213 li tp,0 -80000274: 800000b7 lui ra,0x80000 -80000278: 0070df13 srli t5,ra,0x7 -8000027c: 000f0313 mv t1,t5 -80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000284: 00200293 li t0,2 -80000288: fe5216e3 bne tp,t0,80000274 -8000028c: 01000eb7 lui t4,0x1000 -80000290: 01200193 li gp,18 -80000294: 11d31463 bne t1,t4,8000039c - -80000298 : -80000298: 00000213 li tp,0 -8000029c: 800000b7 lui ra,0x80000 -800002a0: 00e0df13 srli t5,ra,0xe -800002a4: 00000013 nop -800002a8: 000f0313 mv t1,t5 -800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002b0: 00200293 li t0,2 -800002b4: fe5214e3 bne tp,t0,8000029c -800002b8: 00020eb7 lui t4,0x20 -800002bc: 01300193 li gp,19 -800002c0: 0dd31e63 bne t1,t4,8000039c - -800002c4 : -800002c4: 00000213 li tp,0 -800002c8: 800000b7 lui ra,0x80000 -800002cc: 00108093 addi ra,ra,1 # 80000001 -800002d0: 01f0df13 srli t5,ra,0x1f -800002d4: 00000013 nop -800002d8: 00000013 nop -800002dc: 000f0313 mv t1,t5 -800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002e4: 00200293 li t0,2 -800002e8: fe5210e3 bne tp,t0,800002c8 -800002ec: 00100e93 li t4,1 -800002f0: 01400193 li gp,20 -800002f4: 0bd31463 bne t1,t4,8000039c - -800002f8 : -800002f8: 00000213 li tp,0 -800002fc: 800000b7 lui ra,0x80000 -80000300: 0070df13 srli t5,ra,0x7 -80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000308: 00200293 li t0,2 -8000030c: fe5218e3 bne tp,t0,800002fc -80000310: 01000eb7 lui t4,0x1000 -80000314: 01500193 li gp,21 -80000318: 09df1263 bne t5,t4,8000039c - -8000031c : -8000031c: 00000213 li tp,0 -80000320: 800000b7 lui ra,0x80000 -80000324: 00000013 nop -80000328: 00e0df13 srli t5,ra,0xe -8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000330: 00200293 li t0,2 -80000334: fe5216e3 bne tp,t0,80000320 -80000338: 00020eb7 lui t4,0x20 -8000033c: 01600193 li gp,22 -80000340: 05df1e63 bne t5,t4,8000039c - -80000344 : -80000344: 00000213 li tp,0 -80000348: 800000b7 lui ra,0x80000 -8000034c: 00108093 addi ra,ra,1 # 80000001 -80000350: 00000013 nop -80000354: 00000013 nop -80000358: 01f0df13 srli t5,ra,0x1f -8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000360: 00200293 li t0,2 -80000364: fe5212e3 bne tp,t0,80000348 -80000368: 00100e93 li t4,1 -8000036c: 01700193 li gp,23 -80000370: 03df1663 bne t5,t4,8000039c - -80000374 : -80000374: 00405093 srli ra,zero,0x4 -80000378: 00000e93 li t4,0 -8000037c: 01800193 li gp,24 -80000380: 01d09e63 bne ra,t4,8000039c - -80000384 : -80000384: 02100093 li ra,33 -80000388: 00a0d013 srli zero,ra,0xa -8000038c: 00000e93 li t4,0 -80000390: 01900193 li gp,25 -80000394: 01d01463 bne zero,t4,8000039c -80000398: 00301c63 bne zero,gp,800003b0 - -8000039c : -8000039c: 0ff0000f fence -800003a0: 00018063 beqz gp,800003a0 -800003a4: 00119193 slli gp,gp,0x1 -800003a8: 0011e193 ori gp,gp,1 -800003ac: 00000073 ecall - -800003b0 : -800003b0: 0ff0000f fence -800003b4: 00100193 li gp,1 -800003b8: 00000073 ecall -800003bc: c0001073 unimp -800003c0: 0000 unimp -800003c2: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-sub.dump b/benchmarks/riscv_tests/rv32ui-p-sub.dump deleted file mode 100644 index fd797213..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sub.dump +++ /dev/null @@ -1,478 +0,0 @@ - -rv32ui-p-sub: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00000093 li ra,0 -8000010c: 00000113 li sp,0 -80000110: 40208733 sub a4,ra,sp -80000114: 00000e93 li t4,0 -80000118: 00200193 li gp,2 -8000011c: 4bd71663 bne a4,t4,800005c8 - -80000120 : -80000120: 00100093 li ra,1 -80000124: 00100113 li sp,1 -80000128: 40208733 sub a4,ra,sp -8000012c: 00000e93 li t4,0 -80000130: 00300193 li gp,3 -80000134: 49d71a63 bne a4,t4,800005c8 - -80000138 : -80000138: 00300093 li ra,3 -8000013c: 00700113 li sp,7 -80000140: 40208733 sub a4,ra,sp -80000144: ffc00e93 li t4,-4 -80000148: 00400193 li gp,4 -8000014c: 47d71e63 bne a4,t4,800005c8 - -80000150 : -80000150: 00000093 li ra,0 -80000154: ffff8137 lui sp,0xffff8 -80000158: 40208733 sub a4,ra,sp -8000015c: 00008eb7 lui t4,0x8 -80000160: 00500193 li gp,5 -80000164: 47d71263 bne a4,t4,800005c8 - -80000168 : -80000168: 800000b7 lui ra,0x80000 -8000016c: 00000113 li sp,0 -80000170: 40208733 sub a4,ra,sp -80000174: 80000eb7 lui t4,0x80000 -80000178: 00600193 li gp,6 -8000017c: 45d71663 bne a4,t4,800005c8 - -80000180 : -80000180: 800000b7 lui ra,0x80000 -80000184: ffff8137 lui sp,0xffff8 -80000188: 40208733 sub a4,ra,sp -8000018c: 80008eb7 lui t4,0x80008 -80000190: 00700193 li gp,7 -80000194: 43d71a63 bne a4,t4,800005c8 - -80000198 : -80000198: 00000093 li ra,0 -8000019c: 00008137 lui sp,0x8 -800001a0: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001a4: 40208733 sub a4,ra,sp -800001a8: ffff8eb7 lui t4,0xffff8 -800001ac: 001e8e93 addi t4,t4,1 # ffff8001 <_end+0x7fff6001> -800001b0: 00800193 li gp,8 -800001b4: 41d71a63 bne a4,t4,800005c8 - -800001b8 : -800001b8: 800000b7 lui ra,0x80000 -800001bc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001c0: 00000113 li sp,0 -800001c4: 40208733 sub a4,ra,sp -800001c8: 80000eb7 lui t4,0x80000 -800001cc: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> -800001d0: 00900193 li gp,9 -800001d4: 3fd71a63 bne a4,t4,800005c8 - -800001d8 : -800001d8: 800000b7 lui ra,0x80000 -800001dc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -800001e0: 00008137 lui sp,0x8 -800001e4: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -800001e8: 40208733 sub a4,ra,sp -800001ec: 7fff8eb7 lui t4,0x7fff8 -800001f0: 00a00193 li gp,10 -800001f4: 3dd71a63 bne a4,t4,800005c8 - -800001f8 : -800001f8: 800000b7 lui ra,0x80000 -800001fc: 00008137 lui sp,0x8 -80000200: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> -80000204: 40208733 sub a4,ra,sp -80000208: 7fff8eb7 lui t4,0x7fff8 -8000020c: 001e8e93 addi t4,t4,1 # 7fff8001 <_start-0x7fff> -80000210: 00b00193 li gp,11 -80000214: 3bd71a63 bne a4,t4,800005c8 - -80000218 : -80000218: 800000b7 lui ra,0x80000 -8000021c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> -80000220: ffff8137 lui sp,0xffff8 -80000224: 40208733 sub a4,ra,sp -80000228: 80008eb7 lui t4,0x80008 -8000022c: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x5fff> -80000230: 00c00193 li gp,12 -80000234: 39d71a63 bne a4,t4,800005c8 - -80000238 : -80000238: 00000093 li ra,0 -8000023c: fff00113 li sp,-1 -80000240: 40208733 sub a4,ra,sp -80000244: 00100e93 li t4,1 -80000248: 00d00193 li gp,13 -8000024c: 37d71e63 bne a4,t4,800005c8 - -80000250 : -80000250: fff00093 li ra,-1 -80000254: 00100113 li sp,1 -80000258: 40208733 sub a4,ra,sp -8000025c: ffe00e93 li t4,-2 -80000260: 00e00193 li gp,14 -80000264: 37d71263 bne a4,t4,800005c8 - -80000268 : -80000268: fff00093 li ra,-1 -8000026c: fff00113 li sp,-1 -80000270: 40208733 sub a4,ra,sp -80000274: 00000e93 li t4,0 -80000278: 00f00193 li gp,15 -8000027c: 35d71663 bne a4,t4,800005c8 - -80000280 : -80000280: 00d00093 li ra,13 -80000284: 00b00113 li sp,11 -80000288: 402080b3 sub ra,ra,sp -8000028c: 00200e93 li t4,2 -80000290: 01000193 li gp,16 -80000294: 33d09a63 bne ra,t4,800005c8 - -80000298 : -80000298: 00e00093 li ra,14 -8000029c: 00b00113 li sp,11 -800002a0: 40208133 sub sp,ra,sp -800002a4: 00300e93 li t4,3 -800002a8: 01100193 li gp,17 -800002ac: 31d11e63 bne sp,t4,800005c8 - -800002b0 : -800002b0: 00d00093 li ra,13 -800002b4: 401080b3 sub ra,ra,ra -800002b8: 00000e93 li t4,0 -800002bc: 01200193 li gp,18 -800002c0: 31d09463 bne ra,t4,800005c8 - -800002c4 : -800002c4: 00000213 li tp,0 -800002c8: 00d00093 li ra,13 -800002cc: 00b00113 li sp,11 -800002d0: 40208733 sub a4,ra,sp -800002d4: 00070313 mv t1,a4 -800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002dc: 00200293 li t0,2 -800002e0: fe5214e3 bne tp,t0,800002c8 -800002e4: 00200e93 li t4,2 -800002e8: 01300193 li gp,19 -800002ec: 2dd31e63 bne t1,t4,800005c8 - -800002f0 : -800002f0: 00000213 li tp,0 -800002f4: 00e00093 li ra,14 -800002f8: 00b00113 li sp,11 -800002fc: 40208733 sub a4,ra,sp -80000300: 00000013 nop -80000304: 00070313 mv t1,a4 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fe5212e3 bne tp,t0,800002f4 -80000314: 00300e93 li t4,3 -80000318: 01400193 li gp,20 -8000031c: 2bd31663 bne t1,t4,800005c8 - -80000320 : -80000320: 00000213 li tp,0 -80000324: 00f00093 li ra,15 -80000328: 00b00113 li sp,11 -8000032c: 40208733 sub a4,ra,sp -80000330: 00000013 nop -80000334: 00000013 nop -80000338: 00070313 mv t1,a4 -8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000340: 00200293 li t0,2 -80000344: fe5210e3 bne tp,t0,80000324 -80000348: 00400e93 li t4,4 -8000034c: 01500193 li gp,21 -80000350: 27d31c63 bne t1,t4,800005c8 - -80000354 : -80000354: 00000213 li tp,0 -80000358: 00d00093 li ra,13 -8000035c: 00b00113 li sp,11 -80000360: 40208733 sub a4,ra,sp -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5216e3 bne tp,t0,80000358 -80000370: 00200e93 li t4,2 -80000374: 01600193 li gp,22 -80000378: 25d71863 bne a4,t4,800005c8 - -8000037c : -8000037c: 00000213 li tp,0 -80000380: 00e00093 li ra,14 -80000384: 00b00113 li sp,11 -80000388: 00000013 nop -8000038c: 40208733 sub a4,ra,sp -80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000394: 00200293 li t0,2 -80000398: fe5214e3 bne tp,t0,80000380 -8000039c: 00300e93 li t4,3 -800003a0: 01700193 li gp,23 -800003a4: 23d71263 bne a4,t4,800005c8 - -800003a8 : -800003a8: 00000213 li tp,0 -800003ac: 00f00093 li ra,15 -800003b0: 00b00113 li sp,11 -800003b4: 00000013 nop -800003b8: 00000013 nop -800003bc: 40208733 sub a4,ra,sp -800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003c4: 00200293 li t0,2 -800003c8: fe5212e3 bne tp,t0,800003ac -800003cc: 00400e93 li t4,4 -800003d0: 01800193 li gp,24 -800003d4: 1fd71a63 bne a4,t4,800005c8 - -800003d8 : -800003d8: 00000213 li tp,0 -800003dc: 00d00093 li ra,13 -800003e0: 00000013 nop -800003e4: 00b00113 li sp,11 -800003e8: 40208733 sub a4,ra,sp -800003ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f0: 00200293 li t0,2 -800003f4: fe5214e3 bne tp,t0,800003dc -800003f8: 00200e93 li t4,2 -800003fc: 01900193 li gp,25 -80000400: 1dd71463 bne a4,t4,800005c8 - -80000404 : -80000404: 00000213 li tp,0 -80000408: 00e00093 li ra,14 -8000040c: 00000013 nop -80000410: 00b00113 li sp,11 -80000414: 00000013 nop -80000418: 40208733 sub a4,ra,sp -8000041c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000420: 00200293 li t0,2 -80000424: fe5212e3 bne tp,t0,80000408 -80000428: 00300e93 li t4,3 -8000042c: 01a00193 li gp,26 -80000430: 19d71c63 bne a4,t4,800005c8 - -80000434 : -80000434: 00000213 li tp,0 -80000438: 00f00093 li ra,15 -8000043c: 00000013 nop -80000440: 00000013 nop -80000444: 00b00113 li sp,11 -80000448: 40208733 sub a4,ra,sp -8000044c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000450: 00200293 li t0,2 -80000454: fe5212e3 bne tp,t0,80000438 -80000458: 00400e93 li t4,4 -8000045c: 01b00193 li gp,27 -80000460: 17d71463 bne a4,t4,800005c8 - -80000464 : -80000464: 00000213 li tp,0 -80000468: 00b00113 li sp,11 -8000046c: 00d00093 li ra,13 -80000470: 40208733 sub a4,ra,sp -80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000478: 00200293 li t0,2 -8000047c: fe5216e3 bne tp,t0,80000468 -80000480: 00200e93 li t4,2 -80000484: 01c00193 li gp,28 -80000488: 15d71063 bne a4,t4,800005c8 - -8000048c : -8000048c: 00000213 li tp,0 -80000490: 00b00113 li sp,11 -80000494: 00e00093 li ra,14 -80000498: 00000013 nop -8000049c: 40208733 sub a4,ra,sp -800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004a4: 00200293 li t0,2 -800004a8: fe5214e3 bne tp,t0,80000490 -800004ac: 00300e93 li t4,3 -800004b0: 01d00193 li gp,29 -800004b4: 11d71a63 bne a4,t4,800005c8 - -800004b8 : -800004b8: 00000213 li tp,0 -800004bc: 00b00113 li sp,11 -800004c0: 00f00093 li ra,15 -800004c4: 00000013 nop -800004c8: 00000013 nop -800004cc: 40208733 sub a4,ra,sp -800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004d4: 00200293 li t0,2 -800004d8: fe5212e3 bne tp,t0,800004bc -800004dc: 00400e93 li t4,4 -800004e0: 01e00193 li gp,30 -800004e4: 0fd71263 bne a4,t4,800005c8 - -800004e8 : -800004e8: 00000213 li tp,0 -800004ec: 00b00113 li sp,11 -800004f0: 00000013 nop -800004f4: 00d00093 li ra,13 -800004f8: 40208733 sub a4,ra,sp -800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000500: 00200293 li t0,2 -80000504: fe5214e3 bne tp,t0,800004ec -80000508: 00200e93 li t4,2 -8000050c: 01f00193 li gp,31 -80000510: 0bd71c63 bne a4,t4,800005c8 - -80000514 : -80000514: 00000213 li tp,0 -80000518: 00b00113 li sp,11 -8000051c: 00000013 nop -80000520: 00e00093 li ra,14 -80000524: 00000013 nop -80000528: 40208733 sub a4,ra,sp -8000052c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000530: 00200293 li t0,2 -80000534: fe5212e3 bne tp,t0,80000518 -80000538: 00300e93 li t4,3 -8000053c: 02000193 li gp,32 -80000540: 09d71463 bne a4,t4,800005c8 - -80000544 : -80000544: 00000213 li tp,0 -80000548: 00b00113 li sp,11 -8000054c: 00000013 nop -80000550: 00000013 nop -80000554: 00f00093 li ra,15 -80000558: 40208733 sub a4,ra,sp -8000055c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000560: 00200293 li t0,2 -80000564: fe5212e3 bne tp,t0,80000548 -80000568: 00400e93 li t4,4 -8000056c: 02100193 li gp,33 -80000570: 05d71c63 bne a4,t4,800005c8 - -80000574 : -80000574: ff100093 li ra,-15 -80000578: 40100133 neg sp,ra -8000057c: 00f00e93 li t4,15 -80000580: 02200193 li gp,34 -80000584: 05d11263 bne sp,t4,800005c8 - -80000588 : -80000588: 02000093 li ra,32 -8000058c: 40008133 sub sp,ra,zero -80000590: 02000e93 li t4,32 -80000594: 02300193 li gp,35 -80000598: 03d11863 bne sp,t4,800005c8 - -8000059c : -8000059c: 400000b3 neg ra,zero -800005a0: 00000e93 li t4,0 -800005a4: 02400193 li gp,36 -800005a8: 03d09063 bne ra,t4,800005c8 - -800005ac : -800005ac: 01000093 li ra,16 -800005b0: 01e00113 li sp,30 -800005b4: 40208033 sub zero,ra,sp -800005b8: 00000e93 li t4,0 -800005bc: 02500193 li gp,37 -800005c0: 01d01463 bne zero,t4,800005c8 -800005c4: 02301063 bne zero,gp,800005e4 - -800005c8 : -800005c8: 0ff0000f fence -800005cc: 00018063 beqz gp,800005cc -800005d0: 00119193 slli gp,gp,0x1 -800005d4: 0011e193 ori gp,gp,1 -800005d8: 05d00893 li a7,93 -800005dc: 00018513 mv a0,gp -800005e0: 00000073 ecall - -800005e4 : -800005e4: 0ff0000f fence -800005e8: 00100193 li gp,1 -800005ec: 05d00893 li a7,93 -800005f0: 00000513 li a0,0 -800005f4: 00000073 ecall -800005f8: c0001073 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-sw.dump b/benchmarks/riscv_tests/rv32ui-p-sw.dump deleted file mode 100644 index 938362c9..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-sw.dump +++ /dev/null @@ -1,469 +0,0 @@ - -rv32ui-p-sw: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfcf> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00002097 auipc ra,0x2 -8000010c: ef808093 addi ra,ra,-264 # 80002000 -80000110: 00aa0137 lui sp,0xaa0 -80000114: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56> -80000118: 0020a023 sw sp,0(ra) -8000011c: 0000a703 lw a4,0(ra) -80000120: 00aa0eb7 lui t4,0xaa0 -80000124: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56> -80000128: 00200193 li gp,2 -8000012c: 47d71063 bne a4,t4,8000058c - -80000130 : -80000130: 00002097 auipc ra,0x2 -80000134: ed008093 addi ra,ra,-304 # 80002000 -80000138: aa00b137 lui sp,0xaa00b -8000013c: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a0089d0> -80000140: 0020a223 sw sp,4(ra) -80000144: 0040a703 lw a4,4(ra) -80000148: aa00beb7 lui t4,0xaa00b -8000014c: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a0089d0> -80000150: 00300193 li gp,3 -80000154: 43d71c63 bne a4,t4,8000058c - -80000158 : -80000158: 00002097 auipc ra,0x2 -8000015c: ea808093 addi ra,ra,-344 # 80002000 -80000160: 0aa01137 lui sp,0xaa01 -80000164: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560> -80000168: 0020a423 sw sp,8(ra) -8000016c: 0080a703 lw a4,8(ra) -80000170: 0aa01eb7 lui t4,0xaa01 -80000174: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560> -80000178: 00400193 li gp,4 -8000017c: 41d71863 bne a4,t4,8000058c - -80000180 : -80000180: 00002097 auipc ra,0x2 -80000184: e8008093 addi ra,ra,-384 # 80002000 -80000188: a00aa137 lui sp,0xa00aa -8000018c: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a7fda> -80000190: 0020a623 sw sp,12(ra) -80000194: 00c0a703 lw a4,12(ra) -80000198: a00aaeb7 lui t4,0xa00aa -8000019c: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a7fda> -800001a0: 00500193 li gp,5 -800001a4: 3fd71463 bne a4,t4,8000058c - -800001a8 : -800001a8: 00002097 auipc ra,0x2 -800001ac: e7408093 addi ra,ra,-396 # 8000201c -800001b0: 00aa0137 lui sp,0xaa0 -800001b4: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56> -800001b8: fe20aa23 sw sp,-12(ra) -800001bc: ff40a703 lw a4,-12(ra) -800001c0: 00aa0eb7 lui t4,0xaa0 -800001c4: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56> -800001c8: 00600193 li gp,6 -800001cc: 3dd71063 bne a4,t4,8000058c - -800001d0 : -800001d0: 00002097 auipc ra,0x2 -800001d4: e4c08093 addi ra,ra,-436 # 8000201c -800001d8: aa00b137 lui sp,0xaa00b -800001dc: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a0089d0> -800001e0: fe20ac23 sw sp,-8(ra) -800001e4: ff80a703 lw a4,-8(ra) -800001e8: aa00beb7 lui t4,0xaa00b -800001ec: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a0089d0> -800001f0: 00700193 li gp,7 -800001f4: 39d71c63 bne a4,t4,8000058c - -800001f8 : -800001f8: 00002097 auipc ra,0x2 -800001fc: e2408093 addi ra,ra,-476 # 8000201c -80000200: 0aa01137 lui sp,0xaa01 -80000204: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560> -80000208: fe20ae23 sw sp,-4(ra) -8000020c: ffc0a703 lw a4,-4(ra) -80000210: 0aa01eb7 lui t4,0xaa01 -80000214: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560> -80000218: 00800193 li gp,8 -8000021c: 37d71863 bne a4,t4,8000058c - -80000220 : -80000220: 00002097 auipc ra,0x2 -80000224: dfc08093 addi ra,ra,-516 # 8000201c -80000228: a00aa137 lui sp,0xa00aa -8000022c: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a7fda> -80000230: 0020a023 sw sp,0(ra) -80000234: 0000a703 lw a4,0(ra) -80000238: a00aaeb7 lui t4,0xa00aa -8000023c: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a7fda> -80000240: 00900193 li gp,9 -80000244: 35d71463 bne a4,t4,8000058c - -80000248 : -80000248: 00002097 auipc ra,0x2 -8000024c: dd808093 addi ra,ra,-552 # 80002020 -80000250: 12345137 lui sp,0x12345 -80000254: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> -80000258: fe008213 addi tp,ra,-32 -8000025c: 02222023 sw sp,32(tp) # 20 <_start-0x7fffffe0> -80000260: 0000a283 lw t0,0(ra) -80000264: 12345eb7 lui t4,0x12345 -80000268: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> -8000026c: 00a00193 li gp,10 -80000270: 31d29e63 bne t0,t4,8000058c - -80000274 : -80000274: 00002097 auipc ra,0x2 -80000278: dac08093 addi ra,ra,-596 # 80002020 -8000027c: 58213137 lui sp,0x58213 -80000280: 09810113 addi sp,sp,152 # 58213098 <_start-0x27decf68> -80000284: ffd08093 addi ra,ra,-3 -80000288: 0020a3a3 sw sp,7(ra) -8000028c: 00002217 auipc tp,0x2 -80000290: d9820213 addi tp,tp,-616 # 80002024 -80000294: 00022283 lw t0,0(tp) # 0 <_start-0x80000000> -80000298: 58213eb7 lui t4,0x58213 -8000029c: 098e8e93 addi t4,t4,152 # 58213098 <_start-0x27decf68> -800002a0: 00b00193 li gp,11 -800002a4: 2fd29463 bne t0,t4,8000058c - -800002a8 : -800002a8: 00c00193 li gp,12 -800002ac: 00000213 li tp,0 -800002b0: aabbd0b7 lui ra,0xaabbd -800002b4: cdd08093 addi ra,ra,-803 # aabbccdd <_end+0x2abbacad> -800002b8: 00002117 auipc sp,0x2 -800002bc: d4810113 addi sp,sp,-696 # 80002000 -800002c0: 00112023 sw ra,0(sp) -800002c4: 00012703 lw a4,0(sp) -800002c8: aabbdeb7 lui t4,0xaabbd -800002cc: cdde8e93 addi t4,t4,-803 # aabbccdd <_end+0x2abbacad> -800002d0: 2bd71e63 bne a4,t4,8000058c -800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d8: 00200293 li t0,2 -800002dc: fc521ae3 bne tp,t0,800002b0 - -800002e0 : -800002e0: 00d00193 li gp,13 -800002e4: 00000213 li tp,0 -800002e8: daabc0b7 lui ra,0xdaabc -800002ec: ccd08093 addi ra,ra,-819 # daabbccd <_end+0x5aab9c9d> -800002f0: 00002117 auipc sp,0x2 -800002f4: d1010113 addi sp,sp,-752 # 80002000 -800002f8: 00000013 nop -800002fc: 00112223 sw ra,4(sp) -80000300: 00412703 lw a4,4(sp) -80000304: daabceb7 lui t4,0xdaabc -80000308: ccde8e93 addi t4,t4,-819 # daabbccd <_end+0x5aab9c9d> -8000030c: 29d71063 bne a4,t4,8000058c -80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000314: 00200293 li t0,2 -80000318: fc5218e3 bne tp,t0,800002e8 - -8000031c : -8000031c: 00e00193 li gp,14 -80000320: 00000213 li tp,0 -80000324: ddaac0b7 lui ra,0xddaac -80000328: bcc08093 addi ra,ra,-1076 # ddaabbcc <_end+0x5daa9b9c> -8000032c: 00002117 auipc sp,0x2 -80000330: cd410113 addi sp,sp,-812 # 80002000 -80000334: 00000013 nop -80000338: 00000013 nop -8000033c: 00112423 sw ra,8(sp) -80000340: 00812703 lw a4,8(sp) -80000344: ddaaceb7 lui t4,0xddaac -80000348: bcce8e93 addi t4,t4,-1076 # ddaabbcc <_end+0x5daa9b9c> -8000034c: 25d71063 bne a4,t4,8000058c -80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000354: 00200293 li t0,2 -80000358: fc5216e3 bne tp,t0,80000324 - -8000035c : -8000035c: 00f00193 li gp,15 -80000360: 00000213 li tp,0 -80000364: cddab0b7 lui ra,0xcddab -80000368: bbc08093 addi ra,ra,-1092 # cddaabbc <_end+0x4dda8b8c> -8000036c: 00000013 nop -80000370: 00002117 auipc sp,0x2 -80000374: c9010113 addi sp,sp,-880 # 80002000 -80000378: 00112623 sw ra,12(sp) -8000037c: 00c12703 lw a4,12(sp) -80000380: cddabeb7 lui t4,0xcddab -80000384: bbce8e93 addi t4,t4,-1092 # cddaabbc <_end+0x4dda8b8c> -80000388: 21d71263 bne a4,t4,8000058c -8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000390: 00200293 li t0,2 -80000394: fc5218e3 bne tp,t0,80000364 - -80000398 : -80000398: 01000193 li gp,16 -8000039c: 00000213 li tp,0 -800003a0: ccddb0b7 lui ra,0xccddb -800003a4: abb08093 addi ra,ra,-1349 # ccddaabb <_end+0x4cdd8a8b> -800003a8: 00000013 nop -800003ac: 00002117 auipc sp,0x2 -800003b0: c5410113 addi sp,sp,-940 # 80002000 -800003b4: 00000013 nop -800003b8: 00112823 sw ra,16(sp) -800003bc: 01012703 lw a4,16(sp) -800003c0: ccddbeb7 lui t4,0xccddb -800003c4: abbe8e93 addi t4,t4,-1349 # ccddaabb <_end+0x4cdd8a8b> -800003c8: 1dd71263 bne a4,t4,8000058c -800003cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003d0: 00200293 li t0,2 -800003d4: fc5216e3 bne tp,t0,800003a0 - -800003d8 : -800003d8: 01100193 li gp,17 -800003dc: 00000213 li tp,0 -800003e0: bccde0b7 lui ra,0xbccde -800003e4: aab08093 addi ra,ra,-1365 # bccddaab <_end+0x3ccdba7b> -800003e8: 00000013 nop -800003ec: 00000013 nop -800003f0: 00002117 auipc sp,0x2 -800003f4: c1010113 addi sp,sp,-1008 # 80002000 -800003f8: 00112a23 sw ra,20(sp) -800003fc: 01412703 lw a4,20(sp) -80000400: bccdeeb7 lui t4,0xbccde -80000404: aabe8e93 addi t4,t4,-1365 # bccddaab <_end+0x3ccdba7b> -80000408: 19d71263 bne a4,t4,8000058c -8000040c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000410: 00200293 li t0,2 -80000414: fc5216e3 bne tp,t0,800003e0 - -80000418 : -80000418: 01200193 li gp,18 -8000041c: 00000213 li tp,0 -80000420: 00002117 auipc sp,0x2 -80000424: be010113 addi sp,sp,-1056 # 80002000 -80000428: 001120b7 lui ra,0x112 -8000042c: 23308093 addi ra,ra,563 # 112233 <_start-0x7feeddcd> -80000430: 00112023 sw ra,0(sp) -80000434: 00012703 lw a4,0(sp) -80000438: 00112eb7 lui t4,0x112 -8000043c: 233e8e93 addi t4,t4,563 # 112233 <_start-0x7feeddcd> -80000440: 15d71663 bne a4,t4,8000058c -80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000448: 00200293 li t0,2 -8000044c: fc521ae3 bne tp,t0,80000420 - -80000450 : -80000450: 01300193 li gp,19 -80000454: 00000213 li tp,0 -80000458: 00002117 auipc sp,0x2 -8000045c: ba810113 addi sp,sp,-1112 # 80002000 -80000460: 300110b7 lui ra,0x30011 -80000464: 22308093 addi ra,ra,547 # 30011223 <_start-0x4ffeeddd> -80000468: 00000013 nop -8000046c: 00112223 sw ra,4(sp) -80000470: 00412703 lw a4,4(sp) -80000474: 30011eb7 lui t4,0x30011 -80000478: 223e8e93 addi t4,t4,547 # 30011223 <_start-0x4ffeeddd> -8000047c: 11d71863 bne a4,t4,8000058c -80000480: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000484: 00200293 li t0,2 -80000488: fc5218e3 bne tp,t0,80000458 - -8000048c : -8000048c: 01400193 li gp,20 -80000490: 00000213 li tp,0 -80000494: 00002117 auipc sp,0x2 -80000498: b6c10113 addi sp,sp,-1172 # 80002000 -8000049c: 330010b7 lui ra,0x33001 -800004a0: 12208093 addi ra,ra,290 # 33001122 <_start-0x4cffeede> -800004a4: 00000013 nop -800004a8: 00000013 nop -800004ac: 00112423 sw ra,8(sp) -800004b0: 00812703 lw a4,8(sp) -800004b4: 33001eb7 lui t4,0x33001 -800004b8: 122e8e93 addi t4,t4,290 # 33001122 <_start-0x4cffeede> -800004bc: 0dd71863 bne a4,t4,8000058c -800004c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004c4: 00200293 li t0,2 -800004c8: fc5216e3 bne tp,t0,80000494 - -800004cc : -800004cc: 01500193 li gp,21 -800004d0: 00000213 li tp,0 -800004d4: 00002117 auipc sp,0x2 -800004d8: b2c10113 addi sp,sp,-1236 # 80002000 -800004dc: 00000013 nop -800004e0: 233000b7 lui ra,0x23300 -800004e4: 11208093 addi ra,ra,274 # 23300112 <_start-0x5ccffeee> -800004e8: 00112623 sw ra,12(sp) -800004ec: 00c12703 lw a4,12(sp) -800004f0: 23300eb7 lui t4,0x23300 -800004f4: 112e8e93 addi t4,t4,274 # 23300112 <_start-0x5ccffeee> -800004f8: 09d71a63 bne a4,t4,8000058c -800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000500: 00200293 li t0,2 -80000504: fc5218e3 bne tp,t0,800004d4 - -80000508 : -80000508: 01600193 li gp,22 -8000050c: 00000213 li tp,0 -80000510: 00002117 auipc sp,0x2 -80000514: af010113 addi sp,sp,-1296 # 80002000 -80000518: 00000013 nop -8000051c: 223300b7 lui ra,0x22330 -80000520: 01108093 addi ra,ra,17 # 22330011 <_start-0x5dccffef> -80000524: 00000013 nop -80000528: 00112823 sw ra,16(sp) -8000052c: 01012703 lw a4,16(sp) -80000530: 22330eb7 lui t4,0x22330 -80000534: 011e8e93 addi t4,t4,17 # 22330011 <_start-0x5dccffef> -80000538: 05d71a63 bne a4,t4,8000058c -8000053c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000540: 00200293 li t0,2 -80000544: fc5216e3 bne tp,t0,80000510 - -80000548 : -80000548: 01700193 li gp,23 -8000054c: 00000213 li tp,0 -80000550: 00002117 auipc sp,0x2 -80000554: ab010113 addi sp,sp,-1360 # 80002000 -80000558: 00000013 nop -8000055c: 00000013 nop -80000560: 122330b7 lui ra,0x12233 -80000564: 00108093 addi ra,ra,1 # 12233001 <_start-0x6ddccfff> -80000568: 00112a23 sw ra,20(sp) -8000056c: 01412703 lw a4,20(sp) -80000570: 12233eb7 lui t4,0x12233 -80000574: 001e8e93 addi t4,t4,1 # 12233001 <_start-0x6ddccfff> -80000578: 01d71a63 bne a4,t4,8000058c -8000057c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000580: 00200293 li t0,2 -80000584: fc5216e3 bne tp,t0,80000550 -80000588: 02301063 bne zero,gp,800005a8 - -8000058c : -8000058c: 0ff0000f fence -80000590: 00018063 beqz gp,80000590 -80000594: 00119193 slli gp,gp,0x1 -80000598: 0011e193 ori gp,gp,1 -8000059c: 05d00893 li a7,93 -800005a0: 00018513 mv a0,gp -800005a4: 00000073 ecall - -800005a8 : -800005a8: 0ff0000f fence -800005ac: 00100193 li gp,1 -800005b0: 05d00893 li a7,93 -800005b4: 00000513 li a0,0 -800005b8: 00000073 ecall -800005bc: c0001073 unimp -800005c0: 0000 unimp -800005c2: 0000 unimp - -Disassembly of section .data: - -80002000 : -80002000: deadbeef jal t4,7ffdd5ea <_start-0x22a16> - -80002004 : -80002004: deadbeef jal t4,7ffdd5ee <_start-0x22a12> - -80002008 : -80002008: deadbeef jal t4,7ffdd5f2 <_start-0x22a0e> - -8000200c : -8000200c: deadbeef jal t4,7ffdd5f6 <_start-0x22a0a> - -80002010 : -80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> - -80002014 : -80002014: deadbeef jal t4,7ffdd5fe <_start-0x22a02> - -80002018 : -80002018: deadbeef jal t4,7ffdd602 <_start-0x229fe> - -8000201c : -8000201c: deadbeef jal t4,7ffdd606 <_start-0x229fa> - -80002020 : -80002020: deadbeef jal t4,7ffdd60a <_start-0x229f6> - -80002024 : -80002024: deadbeef jal t4,7ffdd60e <_start-0x229f2> -80002028: 0000 unimp -8000202a: 0000 unimp -8000202c: 0000 unimp -8000202e: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-xor.dump b/benchmarks/riscv_tests/rv32ui-p-xor.dump deleted file mode 100644 index 80e2c65c..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-xor.dump +++ /dev/null @@ -1,458 +0,0 @@ - -rv32ui-p-xor: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: ff0100b7 lui ra,0xff010 -8000010c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000110: 0f0f1137 lui sp,0xf0f1 -80000114: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000118: 0020c733 xor a4,ra,sp -8000011c: f00ffeb7 lui t4,0xf00ff -80000120: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -80000124: 00200193 li gp,2 -80000128: 4bd71063 bne a4,t4,800005c8 - -8000012c : -8000012c: 0ff010b7 lui ra,0xff01 -80000130: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000134: f0f0f137 lui sp,0xf0f0f -80000138: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -8000013c: 0020c733 xor a4,ra,sp -80000140: ff010eb7 lui t4,0xff010 -80000144: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -80000148: 00300193 li gp,3 -8000014c: 47d71e63 bne a4,t4,800005c8 - -80000150 : -80000150: 00ff00b7 lui ra,0xff0 -80000154: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000158: 0f0f1137 lui sp,0xf0f1 -8000015c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000160: 0020c733 xor a4,ra,sp -80000164: 0ff01eb7 lui t4,0xff01 -80000168: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -8000016c: 00400193 li gp,4 -80000170: 45d71c63 bne a4,t4,800005c8 - -80000174 : -80000174: f00ff0b7 lui ra,0xf00ff -80000178: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -8000017c: f0f0f137 lui sp,0xf0f0f -80000180: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000184: 0020c733 xor a4,ra,sp -80000188: 00ff0eb7 lui t4,0xff0 -8000018c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> -80000190: 00500193 li gp,5 -80000194: 43d71a63 bne a4,t4,800005c8 - -80000198 : -80000198: ff0100b7 lui ra,0xff010 -8000019c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800001a0: 0f0f1137 lui sp,0xf0f1 -800001a4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800001a8: 0020c0b3 xor ra,ra,sp -800001ac: f00ffeb7 lui t4,0xf00ff -800001b0: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -800001b4: 00600193 li gp,6 -800001b8: 41d09863 bne ra,t4,800005c8 - -800001bc : -800001bc: ff0100b7 lui ra,0xff010 -800001c0: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800001c4: 0f0f1137 lui sp,0xf0f1 -800001c8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800001cc: 0020c133 xor sp,ra,sp -800001d0: f00ffeb7 lui t4,0xf00ff -800001d4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -800001d8: 00700193 li gp,7 -800001dc: 3fd11663 bne sp,t4,800005c8 - -800001e0 : -800001e0: ff0100b7 lui ra,0xff010 -800001e4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800001e8: 0010c0b3 xor ra,ra,ra -800001ec: 00000e93 li t4,0 -800001f0: 00800193 li gp,8 -800001f4: 3dd09a63 bne ra,t4,800005c8 - -800001f8 : -800001f8: 00000213 li tp,0 -800001fc: ff0100b7 lui ra,0xff010 -80000200: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000204: 0f0f1137 lui sp,0xf0f1 -80000208: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000020c: 0020c733 xor a4,ra,sp -80000210: 00070313 mv t1,a4 -80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000218: 00200293 li t0,2 -8000021c: fe5210e3 bne tp,t0,800001fc -80000220: f00ffeb7 lui t4,0xf00ff -80000224: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -80000228: 00900193 li gp,9 -8000022c: 39d31e63 bne t1,t4,800005c8 - -80000230 : -80000230: 00000213 li tp,0 -80000234: 0ff010b7 lui ra,0xff01 -80000238: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000023c: f0f0f137 lui sp,0xf0f0f -80000240: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000244: 0020c733 xor a4,ra,sp -80000248: 00000013 nop -8000024c: 00070313 mv t1,a4 -80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000254: 00200293 li t0,2 -80000258: fc521ee3 bne tp,t0,80000234 -8000025c: ff010eb7 lui t4,0xff010 -80000260: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -80000264: 00a00193 li gp,10 -80000268: 37d31063 bne t1,t4,800005c8 - -8000026c : -8000026c: 00000213 li tp,0 -80000270: 00ff00b7 lui ra,0xff0 -80000274: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000278: 0f0f1137 lui sp,0xf0f1 -8000027c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000280: 0020c733 xor a4,ra,sp -80000284: 00000013 nop -80000288: 00000013 nop -8000028c: 00070313 mv t1,a4 -80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000294: 00200293 li t0,2 -80000298: fc521ce3 bne tp,t0,80000270 -8000029c: 0ff01eb7 lui t4,0xff01 -800002a0: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -800002a4: 00b00193 li gp,11 -800002a8: 33d31063 bne t1,t4,800005c8 - -800002ac : -800002ac: 00000213 li tp,0 -800002b0: ff0100b7 lui ra,0xff010 -800002b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800002b8: 0f0f1137 lui sp,0xf0f1 -800002bc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800002c0: 0020c733 xor a4,ra,sp -800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002c8: 00200293 li t0,2 -800002cc: fe5212e3 bne tp,t0,800002b0 -800002d0: f00ffeb7 lui t4,0xf00ff -800002d4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -800002d8: 00c00193 li gp,12 -800002dc: 2fd71663 bne a4,t4,800005c8 - -800002e0 : -800002e0: 00000213 li tp,0 -800002e4: 0ff010b7 lui ra,0xff01 -800002e8: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -800002ec: f0f0f137 lui sp,0xf0f0f -800002f0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800002f4: 00000013 nop -800002f8: 0020c733 xor a4,ra,sp -800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000300: 00200293 li t0,2 -80000304: fe5210e3 bne tp,t0,800002e4 -80000308: ff010eb7 lui t4,0xff010 -8000030c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -80000310: 00d00193 li gp,13 -80000314: 2bd71a63 bne a4,t4,800005c8 - -80000318 : -80000318: 00000213 li tp,0 -8000031c: 00ff00b7 lui ra,0xff0 -80000320: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000324: 0f0f1137 lui sp,0xf0f1 -80000328: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000032c: 00000013 nop -80000330: 00000013 nop -80000334: 0020c733 xor a4,ra,sp -80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000033c: 00200293 li t0,2 -80000340: fc521ee3 bne tp,t0,8000031c -80000344: 0ff01eb7 lui t4,0xff01 -80000348: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -8000034c: 00e00193 li gp,14 -80000350: 27d71c63 bne a4,t4,800005c8 - -80000354 : -80000354: 00000213 li tp,0 -80000358: ff0100b7 lui ra,0xff010 -8000035c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000360: 00000013 nop -80000364: 0f0f1137 lui sp,0xf0f1 -80000368: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000036c: 0020c733 xor a4,ra,sp -80000370: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000374: 00200293 li t0,2 -80000378: fe5210e3 bne tp,t0,80000358 -8000037c: f00ffeb7 lui t4,0xf00ff -80000380: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -80000384: 00f00193 li gp,15 -80000388: 25d71063 bne a4,t4,800005c8 - -8000038c : -8000038c: 00000213 li tp,0 -80000390: 0ff010b7 lui ra,0xff01 -80000394: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -80000398: 00000013 nop -8000039c: f0f0f137 lui sp,0xf0f0f -800003a0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800003a4: 00000013 nop -800003a8: 0020c733 xor a4,ra,sp -800003ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003b0: 00200293 li t0,2 -800003b4: fc521ee3 bne tp,t0,80000390 -800003b8: ff010eb7 lui t4,0xff010 -800003bc: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -800003c0: 01000193 li gp,16 -800003c4: 21d71263 bne a4,t4,800005c8 - -800003c8 : -800003c8: 00000213 li tp,0 -800003cc: 00ff00b7 lui ra,0xff0 -800003d0: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800003d4: 00000013 nop -800003d8: 00000013 nop -800003dc: 0f0f1137 lui sp,0xf0f1 -800003e0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800003e4: 0020c733 xor a4,ra,sp -800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003ec: 00200293 li t0,2 -800003f0: fc521ee3 bne tp,t0,800003cc -800003f4: 0ff01eb7 lui t4,0xff01 -800003f8: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -800003fc: 01100193 li gp,17 -80000400: 1dd71463 bne a4,t4,800005c8 - -80000404 : -80000404: 00000213 li tp,0 -80000408: 0f0f1137 lui sp,0xf0f1 -8000040c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -80000410: ff0100b7 lui ra,0xff010 -80000414: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000418: 0020c733 xor a4,ra,sp -8000041c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000420: 00200293 li t0,2 -80000424: fe5212e3 bne tp,t0,80000408 -80000428: f00ffeb7 lui t4,0xf00ff -8000042c: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -80000430: 01200193 li gp,18 -80000434: 19d71a63 bne a4,t4,800005c8 - -80000438 : -80000438: 00000213 li tp,0 -8000043c: f0f0f137 lui sp,0xf0f0f -80000440: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -80000444: 0ff010b7 lui ra,0xff01 -80000448: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000044c: 00000013 nop -80000450: 0020c733 xor a4,ra,sp -80000454: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000458: 00200293 li t0,2 -8000045c: fe5210e3 bne tp,t0,8000043c -80000460: ff010eb7 lui t4,0xff010 -80000464: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -80000468: 01300193 li gp,19 -8000046c: 15d71e63 bne a4,t4,800005c8 - -80000470 : -80000470: 00000213 li tp,0 -80000474: 0f0f1137 lui sp,0xf0f1 -80000478: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000047c: 00ff00b7 lui ra,0xff0 -80000480: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000484: 00000013 nop -80000488: 00000013 nop -8000048c: 0020c733 xor a4,ra,sp -80000490: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000494: 00200293 li t0,2 -80000498: fc521ee3 bne tp,t0,80000474 -8000049c: 0ff01eb7 lui t4,0xff01 -800004a0: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -800004a4: 01400193 li gp,20 -800004a8: 13d71063 bne a4,t4,800005c8 - -800004ac : -800004ac: 00000213 li tp,0 -800004b0: 0f0f1137 lui sp,0xf0f1 -800004b4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -800004b8: 00000013 nop -800004bc: ff0100b7 lui ra,0xff010 -800004c0: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -800004c4: 0020c733 xor a4,ra,sp -800004c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004cc: 00200293 li t0,2 -800004d0: fe5210e3 bne tp,t0,800004b0 -800004d4: f00ffeb7 lui t4,0xf00ff -800004d8: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> -800004dc: 01500193 li gp,21 -800004e0: 0fd71463 bne a4,t4,800005c8 - -800004e4 : -800004e4: 00000213 li tp,0 -800004e8: f0f0f137 lui sp,0xf0f0f -800004ec: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> -800004f0: 00000013 nop -800004f4: 0ff010b7 lui ra,0xff01 -800004f8: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -800004fc: 00000013 nop -80000500: 0020c733 xor a4,ra,sp -80000504: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000508: 00200293 li t0,2 -8000050c: fc521ee3 bne tp,t0,800004e8 -80000510: ff010eb7 lui t4,0xff010 -80000514: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -80000518: 01600193 li gp,22 -8000051c: 0bd71663 bne a4,t4,800005c8 - -80000520 : -80000520: 00000213 li tp,0 -80000524: 0f0f1137 lui sp,0xf0f1 -80000528: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> -8000052c: 00000013 nop -80000530: 00000013 nop -80000534: 00ff00b7 lui ra,0xff0 -80000538: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -8000053c: 0020c733 xor a4,ra,sp -80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000544: 00200293 li t0,2 -80000548: fc521ee3 bne tp,t0,80000524 -8000054c: 0ff01eb7 lui t4,0xff01 -80000550: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> -80000554: 01700193 li gp,23 -80000558: 07d71863 bne a4,t4,800005c8 - -8000055c : -8000055c: ff0100b7 lui ra,0xff010 -80000560: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> -80000564: 00104133 xor sp,zero,ra -80000568: ff010eb7 lui t4,0xff010 -8000056c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> -80000570: 01800193 li gp,24 -80000574: 05d11a63 bne sp,t4,800005c8 - -80000578 : -80000578: 00ff00b7 lui ra,0xff0 -8000057c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -80000580: 0000c133 xor sp,ra,zero -80000584: 00ff0eb7 lui t4,0xff0 -80000588: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> -8000058c: 01900193 li gp,25 -80000590: 03d11c63 bne sp,t4,800005c8 - -80000594 : -80000594: 000040b3 xor ra,zero,zero -80000598: 00000e93 li t4,0 -8000059c: 01a00193 li gp,26 -800005a0: 03d09463 bne ra,t4,800005c8 - -800005a4 : -800005a4: 111110b7 lui ra,0x11111 -800005a8: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> -800005ac: 22222137 lui sp,0x22222 -800005b0: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> -800005b4: 0020c033 xor zero,ra,sp -800005b8: 00000e93 li t4,0 -800005bc: 01b00193 li gp,27 -800005c0: 01d01463 bne zero,t4,800005c8 -800005c4: 02301063 bne zero,gp,800005e4 - -800005c8 : -800005c8: 0ff0000f fence -800005cc: 00018063 beqz gp,800005cc -800005d0: 00119193 slli gp,gp,0x1 -800005d4: 0011e193 ori gp,gp,1 -800005d8: 05d00893 li a7,93 -800005dc: 00018513 mv a0,gp -800005e0: 00000073 ecall - -800005e4 : -800005e4: 0ff0000f fence -800005e8: 00100193 li gp,1 -800005ec: 05d00893 li a7,93 -800005f0: 00000513 li a0,0 -800005f4: 00000073 ecall -800005f8: c0001073 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32ui-p-xori.dump b/benchmarks/riscv_tests/rv32ui-p-xori.dump deleted file mode 100644 index 63433717..00000000 --- a/benchmarks/riscv_tests/rv32ui-p-xori.dump +++ /dev/null @@ -1,263 +0,0 @@ - -rv32ui-p-xori: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054c63 bltz a0,800000cc -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 05d00893 li a7,93 -800000c4: 00000513 li a0,0 -800000c8: 00000073 ecall -800000cc: 80000297 auipc t0,0x80000 -800000d0: f3428293 addi t0,t0,-204 # 0 <_start-0x80000000> -800000d4: 00028e63 beqz t0,800000f0 -800000d8: 10529073 csrw stvec,t0 -800000dc: 0000b2b7 lui t0,0xb -800000e0: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000e4: 30229073 csrw medeleg,t0 -800000e8: 30202373 csrr t1,medeleg -800000ec: f46298e3 bne t0,t1,8000003c -800000f0: 30005073 csrwi mstatus,0 -800000f4: 00000297 auipc t0,0x0 -800000f8: 01428293 addi t0,t0,20 # 80000108 -800000fc: 34129073 csrw mepc,t0 -80000100: f1402573 csrr a0,mhartid -80000104: 30200073 mret - -80000108 : -80000108: 00ff10b7 lui ra,0xff1 -8000010c: f0008093 addi ra,ra,-256 # ff0f00 <_start-0x7f00f100> -80000110: f0f0c713 xori a4,ra,-241 -80000114: ff00feb7 lui t4,0xff00f -80000118: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f00d00f> -8000011c: 00200193 li gp,2 -80000120: 1dd71663 bne a4,t4,800002ec - -80000124 : -80000124: 0ff010b7 lui ra,0xff01 -80000128: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000012c: 0f00c713 xori a4,ra,240 -80000130: 0ff01eb7 lui t4,0xff01 -80000134: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> -80000138: 00300193 li gp,3 -8000013c: 1bd71863 bne a4,t4,800002ec - -80000140 : -80000140: 00ff10b7 lui ra,0xff1 -80000144: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701> -80000148: 70f0c713 xori a4,ra,1807 -8000014c: 00ff1eb7 lui t4,0xff1 -80000150: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> -80000154: 00400193 li gp,4 -80000158: 19d71a63 bne a4,t4,800002ec - -8000015c : -8000015c: f00ff0b7 lui ra,0xf00ff -80000160: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -80000164: 0f00c713 xori a4,ra,240 -80000168: f00ffeb7 lui t4,0xf00ff -8000016c: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> -80000170: 00500193 li gp,5 -80000174: 17d71c63 bne a4,t4,800002ec - -80000178 : -80000178: ff00f0b7 lui ra,0xff00f -8000017c: 70008093 addi ra,ra,1792 # ff00f700 <_end+0x7f00d700> -80000180: 70f0c093 xori ra,ra,1807 -80000184: ff00feb7 lui t4,0xff00f -80000188: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f00d00f> -8000018c: 00600193 li gp,6 -80000190: 15d09e63 bne ra,t4,800002ec - -80000194 : -80000194: 00000213 li tp,0 -80000198: 0ff010b7 lui ra,0xff01 -8000019c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -800001a0: 0f00c713 xori a4,ra,240 -800001a4: 00070313 mv t1,a4 -800001a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001ac: 00200293 li t0,2 -800001b0: fe5214e3 bne tp,t0,80000198 -800001b4: 0ff01eb7 lui t4,0xff01 -800001b8: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> -800001bc: 00700193 li gp,7 -800001c0: 13d31663 bne t1,t4,800002ec - -800001c4 : -800001c4: 00000213 li tp,0 -800001c8: 00ff10b7 lui ra,0xff1 -800001cc: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701> -800001d0: 70f0c713 xori a4,ra,1807 -800001d4: 00000013 nop -800001d8: 00070313 mv t1,a4 -800001dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800001e0: 00200293 li t0,2 -800001e4: fe5212e3 bne tp,t0,800001c8 -800001e8: 00ff1eb7 lui t4,0xff1 -800001ec: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> -800001f0: 00800193 li gp,8 -800001f4: 0fd31c63 bne t1,t4,800002ec - -800001f8 : -800001f8: 00000213 li tp,0 -800001fc: f00ff0b7 lui ra,0xf00ff -80000200: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -80000204: 0f00c713 xori a4,ra,240 -80000208: 00000013 nop -8000020c: 00000013 nop -80000210: 00070313 mv t1,a4 -80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000218: 00200293 li t0,2 -8000021c: fe5210e3 bne tp,t0,800001fc -80000220: f00ffeb7 lui t4,0xf00ff -80000224: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> -80000228: 00900193 li gp,9 -8000022c: 0dd31063 bne t1,t4,800002ec - -80000230 : -80000230: 00000213 li tp,0 -80000234: 0ff010b7 lui ra,0xff01 -80000238: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> -8000023c: 0f00c713 xori a4,ra,240 -80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000244: 00200293 li t0,2 -80000248: fe5216e3 bne tp,t0,80000234 -8000024c: 0ff01eb7 lui t4,0xff01 -80000250: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> -80000254: 00a00193 li gp,10 -80000258: 09d71a63 bne a4,t4,800002ec - -8000025c : -8000025c: 00000213 li tp,0 -80000260: 00ff10b7 lui ra,0xff1 -80000264: fff08093 addi ra,ra,-1 # ff0fff <_start-0x7f00f001> -80000268: 00000013 nop -8000026c: 00f0c713 xori a4,ra,15 -80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000274: 00200293 li t0,2 -80000278: fe5214e3 bne tp,t0,80000260 -8000027c: 00ff1eb7 lui t4,0xff1 -80000280: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> -80000284: 00b00193 li gp,11 -80000288: 07d71263 bne a4,t4,800002ec - -8000028c : -8000028c: 00000213 li tp,0 -80000290: f00ff0b7 lui ra,0xf00ff -80000294: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> -80000298: 00000013 nop -8000029c: 00000013 nop -800002a0: 0f00c713 xori a4,ra,240 -800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a8: 00200293 li t0,2 -800002ac: fe5212e3 bne tp,t0,80000290 -800002b0: f00ffeb7 lui t4,0xf00ff -800002b4: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> -800002b8: 00c00193 li gp,12 -800002bc: 03d71863 bne a4,t4,800002ec - -800002c0 : -800002c0: 0f004093 xori ra,zero,240 -800002c4: 0f000e93 li t4,240 -800002c8: 00d00193 li gp,13 -800002cc: 03d09063 bne ra,t4,800002ec - -800002d0 : -800002d0: 00ff00b7 lui ra,0xff0 -800002d4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> -800002d8: 70f0c013 xori zero,ra,1807 -800002dc: 00000e93 li t4,0 -800002e0: 00e00193 li gp,14 -800002e4: 01d01463 bne zero,t4,800002ec -800002e8: 02301063 bne zero,gp,80000308 - -800002ec : -800002ec: 0ff0000f fence -800002f0: 00018063 beqz gp,800002f0 -800002f4: 00119193 slli gp,gp,0x1 -800002f8: 0011e193 ori gp,gp,1 -800002fc: 05d00893 li a7,93 -80000300: 00018513 mv a0,gp -80000304: 00000073 ecall - -80000308 : -80000308: 0ff0000f fence -8000030c: 00100193 li gp,1 -80000310: 05d00893 li a7,93 -80000314: 00000513 li a0,0 -80000318: 00000073 ecall -8000031c: c0001073 unimp -80000320: 0000 unimp -80000322: 0000 unimp -80000324: 0000 unimp -80000326: 0000 unimp -80000328: 0000 unimp -8000032a: 0000 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 diff --git a/benchmarks/riscv_tests/rv32um-p-div.dump b/benchmarks/riscv_tests/rv32um-p-div.dump deleted file mode 100644 index 665dc1ca..00000000 --- a/benchmarks/riscv_tests/rv32um-p-div.dump +++ /dev/null @@ -1,167 +0,0 @@ - -rv32um-p-div: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 01400093 li ra,20 -80000104: 00600113 li sp,6 -80000108: 0220cf33 div t5,ra,sp -8000010c: 00300e93 li t4,3 -80000110: 00200193 li gp,2 -80000114: 0ddf1463 bne t5,t4,800001dc - -80000118 : -80000118: fec00093 li ra,-20 -8000011c: 00600113 li sp,6 -80000120: 0220cf33 div t5,ra,sp -80000124: ffd00e93 li t4,-3 -80000128: 00300193 li gp,3 -8000012c: 0bdf1863 bne t5,t4,800001dc - -80000130 : -80000130: 01400093 li ra,20 -80000134: ffa00113 li sp,-6 -80000138: 0220cf33 div t5,ra,sp -8000013c: ffd00e93 li t4,-3 -80000140: 00400193 li gp,4 -80000144: 09df1c63 bne t5,t4,800001dc - -80000148 : -80000148: fec00093 li ra,-20 -8000014c: ffa00113 li sp,-6 -80000150: 0220cf33 div t5,ra,sp -80000154: 00300e93 li t4,3 -80000158: 00500193 li gp,5 -8000015c: 09df1063 bne t5,t4,800001dc - -80000160 : -80000160: 800000b7 lui ra,0x80000 -80000164: 00100113 li sp,1 -80000168: 0220cf33 div t5,ra,sp -8000016c: 80000eb7 lui t4,0x80000 -80000170: 00600193 li gp,6 -80000174: 07df1463 bne t5,t4,800001dc - -80000178 : -80000178: 800000b7 lui ra,0x80000 -8000017c: fff00113 li sp,-1 -80000180: 0220cf33 div t5,ra,sp -80000184: 80000eb7 lui t4,0x80000 -80000188: 00700193 li gp,7 -8000018c: 05df1863 bne t5,t4,800001dc - -80000190 : -80000190: 800000b7 lui ra,0x80000 -80000194: 00000113 li sp,0 -80000198: 0220cf33 div t5,ra,sp -8000019c: fff00e93 li t4,-1 -800001a0: 00800193 li gp,8 -800001a4: 03df1c63 bne t5,t4,800001dc - -800001a8 : -800001a8: 00100093 li ra,1 -800001ac: 00000113 li sp,0 -800001b0: 0220cf33 div t5,ra,sp -800001b4: fff00e93 li t4,-1 -800001b8: 00900193 li gp,9 -800001bc: 03df1063 bne t5,t4,800001dc - -800001c0 : -800001c0: 00000093 li ra,0 -800001c4: 00000113 li sp,0 -800001c8: 0220cf33 div t5,ra,sp -800001cc: fff00e93 li t4,-1 -800001d0: 00a00193 li gp,10 -800001d4: 01df1463 bne t5,t4,800001dc -800001d8: 00301c63 bne zero,gp,800001f0 - -800001dc : -800001dc: 0ff0000f fence -800001e0: 00018063 beqz gp,800001e0 -800001e4: 00119193 slli gp,gp,0x1 -800001e8: 0011e193 ori gp,gp,1 -800001ec: 00000073 ecall - -800001f0 : -800001f0: 0ff0000f fence -800001f4: 00100193 li gp,1 -800001f8: 00000073 ecall -800001fc: c0001073 unimp -80000200: 0000 unimp -80000202: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32um-p-divu.dump b/benchmarks/riscv_tests/rv32um-p-divu.dump deleted file mode 100644 index ef4223ef..00000000 --- a/benchmarks/riscv_tests/rv32um-p-divu.dump +++ /dev/null @@ -1,166 +0,0 @@ - -rv32um-p-divu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 01400093 li ra,20 -80000104: 00600113 li sp,6 -80000108: 0220df33 divu t5,ra,sp -8000010c: 00300e93 li t4,3 -80000110: 00200193 li gp,2 -80000114: 0ddf1663 bne t5,t4,800001e0 - -80000118 : -80000118: fec00093 li ra,-20 -8000011c: 00600113 li sp,6 -80000120: 0220df33 divu t5,ra,sp -80000124: 2aaabeb7 lui t4,0x2aaab -80000128: aa7e8e93 addi t4,t4,-1369 # 2aaaaaa7 <_start-0x55555559> -8000012c: 00300193 li gp,3 -80000130: 0bdf1863 bne t5,t4,800001e0 - -80000134 : -80000134: 01400093 li ra,20 -80000138: ffa00113 li sp,-6 -8000013c: 0220df33 divu t5,ra,sp -80000140: 00000e93 li t4,0 -80000144: 00400193 li gp,4 -80000148: 09df1c63 bne t5,t4,800001e0 - -8000014c : -8000014c: fec00093 li ra,-20 -80000150: ffa00113 li sp,-6 -80000154: 0220df33 divu t5,ra,sp -80000158: 00000e93 li t4,0 -8000015c: 00500193 li gp,5 -80000160: 09df1063 bne t5,t4,800001e0 - -80000164 : -80000164: 800000b7 lui ra,0x80000 -80000168: 00100113 li sp,1 -8000016c: 0220df33 divu t5,ra,sp -80000170: 80000eb7 lui t4,0x80000 -80000174: 00600193 li gp,6 -80000178: 07df1463 bne t5,t4,800001e0 - -8000017c : -8000017c: 800000b7 lui ra,0x80000 -80000180: fff00113 li sp,-1 -80000184: 0220df33 divu t5,ra,sp -80000188: 00000e93 li t4,0 -8000018c: 00700193 li gp,7 -80000190: 05df1863 bne t5,t4,800001e0 - -80000194 : -80000194: 800000b7 lui ra,0x80000 -80000198: 00000113 li sp,0 -8000019c: 0220df33 divu t5,ra,sp -800001a0: fff00e93 li t4,-1 -800001a4: 00800193 li gp,8 -800001a8: 03df1c63 bne t5,t4,800001e0 - -800001ac : -800001ac: 00100093 li ra,1 -800001b0: 00000113 li sp,0 -800001b4: 0220df33 divu t5,ra,sp -800001b8: fff00e93 li t4,-1 -800001bc: 00900193 li gp,9 -800001c0: 03df1063 bne t5,t4,800001e0 - -800001c4 : -800001c4: 00000093 li ra,0 -800001c8: 00000113 li sp,0 -800001cc: 0220df33 divu t5,ra,sp -800001d0: fff00e93 li t4,-1 -800001d4: 00a00193 li gp,10 -800001d8: 01df1463 bne t5,t4,800001e0 -800001dc: 00301c63 bne zero,gp,800001f4 - -800001e0 : -800001e0: 0ff0000f fence -800001e4: 00018063 beqz gp,800001e4 -800001e8: 00119193 slli gp,gp,0x1 -800001ec: 0011e193 ori gp,gp,1 -800001f0: 00000073 ecall - -800001f4 : -800001f4: 0ff0000f fence -800001f8: 00100193 li gp,1 -800001fc: 00000073 ecall -80000200: c0001073 unimp diff --git a/benchmarks/riscv_tests/rv32um-p-mul.dump b/benchmarks/riscv_tests/rv32um-p-mul.dump deleted file mode 100644 index 7f4f4151..00000000 --- a/benchmarks/riscv_tests/rv32um-p-mul.dump +++ /dev/null @@ -1,482 +0,0 @@ - -rv32um-p-mul: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 000080b7 lui ra,0x8 -80000104: e0008093 addi ra,ra,-512 # 7e00 <_start-0x7fff8200> -80000108: b6db7137 lui sp,0xb6db7 -8000010c: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db4db7> -80000110: 02208f33 mul t5,ra,sp -80000114: 00001eb7 lui t4,0x1 -80000118: 200e8e93 addi t4,t4,512 # 1200 <_start-0x7fffee00> -8000011c: 02000193 li gp,32 -80000120: 4bdf1463 bne t5,t4,800005c8 - -80000124 : -80000124: 000080b7 lui ra,0x8 -80000128: fc008093 addi ra,ra,-64 # 7fc0 <_start-0x7fff8040> -8000012c: b6db7137 lui sp,0xb6db7 -80000130: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db4db7> -80000134: 02208f33 mul t5,ra,sp -80000138: 00001eb7 lui t4,0x1 -8000013c: 240e8e93 addi t4,t4,576 # 1240 <_start-0x7fffedc0> -80000140: 02100193 li gp,33 -80000144: 49df1263 bne t5,t4,800005c8 - -80000148 : -80000148: 00000093 li ra,0 -8000014c: 00000113 li sp,0 -80000150: 02208f33 mul t5,ra,sp -80000154: 00000e93 li t4,0 -80000158: 00200193 li gp,2 -8000015c: 47df1663 bne t5,t4,800005c8 - -80000160 : -80000160: 00100093 li ra,1 -80000164: 00100113 li sp,1 -80000168: 02208f33 mul t5,ra,sp -8000016c: 00100e93 li t4,1 -80000170: 00300193 li gp,3 -80000174: 45df1a63 bne t5,t4,800005c8 - -80000178 : -80000178: 00300093 li ra,3 -8000017c: 00700113 li sp,7 -80000180: 02208f33 mul t5,ra,sp -80000184: 01500e93 li t4,21 -80000188: 00400193 li gp,4 -8000018c: 43df1e63 bne t5,t4,800005c8 - -80000190 : -80000190: 00000093 li ra,0 -80000194: ffff8137 lui sp,0xffff8 -80000198: 02208f33 mul t5,ra,sp -8000019c: 00000e93 li t4,0 -800001a0: 00500193 li gp,5 -800001a4: 43df1263 bne t5,t4,800005c8 - -800001a8 : -800001a8: 800000b7 lui ra,0x80000 -800001ac: 00000113 li sp,0 -800001b0: 02208f33 mul t5,ra,sp -800001b4: 00000e93 li t4,0 -800001b8: 00600193 li gp,6 -800001bc: 41df1663 bne t5,t4,800005c8 - -800001c0 : -800001c0: 800000b7 lui ra,0x80000 -800001c4: ffff8137 lui sp,0xffff8 -800001c8: 02208f33 mul t5,ra,sp -800001cc: 00000e93 li t4,0 -800001d0: 00700193 li gp,7 -800001d4: 3fdf1a63 bne t5,t4,800005c8 - -800001d8 : -800001d8: aaaab0b7 lui ra,0xaaaab -800001dc: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> -800001e0: 00030137 lui sp,0x30 -800001e4: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> -800001e8: 02208f33 mul t5,ra,sp -800001ec: 00010eb7 lui t4,0x10 -800001f0: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081> -800001f4: 01e00193 li gp,30 -800001f8: 3ddf1863 bne t5,t4,800005c8 - -800001fc : -800001fc: 000300b7 lui ra,0x30 -80000200: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> -80000204: aaaab137 lui sp,0xaaaab -80000208: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> -8000020c: 02208f33 mul t5,ra,sp -80000210: 00010eb7 lui t4,0x10 -80000214: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081> -80000218: 01f00193 li gp,31 -8000021c: 3bdf1663 bne t5,t4,800005c8 - -80000220 : -80000220: ff0000b7 lui ra,0xff000 -80000224: ff000137 lui sp,0xff000 -80000228: 02208f33 mul t5,ra,sp -8000022c: 00000e93 li t4,0 -80000230: 02200193 li gp,34 -80000234: 39df1a63 bne t5,t4,800005c8 - -80000238 : -80000238: fff00093 li ra,-1 -8000023c: fff00113 li sp,-1 -80000240: 02208f33 mul t5,ra,sp -80000244: 00100e93 li t4,1 -80000248: 02300193 li gp,35 -8000024c: 37df1e63 bne t5,t4,800005c8 - -80000250 : -80000250: fff00093 li ra,-1 -80000254: 00100113 li sp,1 -80000258: 02208f33 mul t5,ra,sp -8000025c: fff00e93 li t4,-1 -80000260: 02400193 li gp,36 -80000264: 37df1263 bne t5,t4,800005c8 - -80000268 : -80000268: 00100093 li ra,1 -8000026c: fff00113 li sp,-1 -80000270: 02208f33 mul t5,ra,sp -80000274: fff00e93 li t4,-1 -80000278: 02500193 li gp,37 -8000027c: 35df1663 bne t5,t4,800005c8 - -80000280 : -80000280: 00d00093 li ra,13 -80000284: 00b00113 li sp,11 -80000288: 022080b3 mul ra,ra,sp -8000028c: 08f00e93 li t4,143 -80000290: 00800193 li gp,8 -80000294: 33d09a63 bne ra,t4,800005c8 - -80000298 : -80000298: 00e00093 li ra,14 -8000029c: 00b00113 li sp,11 -800002a0: 02208133 mul sp,ra,sp -800002a4: 09a00e93 li t4,154 -800002a8: 00900193 li gp,9 -800002ac: 31d11e63 bne sp,t4,800005c8 - -800002b0 : -800002b0: 00d00093 li ra,13 -800002b4: 021080b3 mul ra,ra,ra -800002b8: 0a900e93 li t4,169 -800002bc: 00a00193 li gp,10 -800002c0: 31d09463 bne ra,t4,800005c8 - -800002c4 : -800002c4: 00000213 li tp,0 -800002c8: 00d00093 li ra,13 -800002cc: 00b00113 li sp,11 -800002d0: 02208f33 mul t5,ra,sp -800002d4: 000f0313 mv t1,t5 -800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002dc: 00200293 li t0,2 -800002e0: fe5214e3 bne tp,t0,800002c8 -800002e4: 08f00e93 li t4,143 -800002e8: 00b00193 li gp,11 -800002ec: 2dd31e63 bne t1,t4,800005c8 - -800002f0 : -800002f0: 00000213 li tp,0 -800002f4: 00e00093 li ra,14 -800002f8: 00b00113 li sp,11 -800002fc: 02208f33 mul t5,ra,sp -80000300: 00000013 nop -80000304: 000f0313 mv t1,t5 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fe5212e3 bne tp,t0,800002f4 -80000314: 09a00e93 li t4,154 -80000318: 00c00193 li gp,12 -8000031c: 2bd31663 bne t1,t4,800005c8 - -80000320 : -80000320: 00000213 li tp,0 -80000324: 00f00093 li ra,15 -80000328: 00b00113 li sp,11 -8000032c: 02208f33 mul t5,ra,sp -80000330: 00000013 nop -80000334: 00000013 nop -80000338: 000f0313 mv t1,t5 -8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000340: 00200293 li t0,2 -80000344: fe5210e3 bne tp,t0,80000324 -80000348: 0a500e93 li t4,165 -8000034c: 00d00193 li gp,13 -80000350: 27d31c63 bne t1,t4,800005c8 - -80000354 : -80000354: 00000213 li tp,0 -80000358: 00d00093 li ra,13 -8000035c: 00b00113 li sp,11 -80000360: 02208f33 mul t5,ra,sp -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5216e3 bne tp,t0,80000358 -80000370: 08f00e93 li t4,143 -80000374: 00e00193 li gp,14 -80000378: 25df1863 bne t5,t4,800005c8 - -8000037c : -8000037c: 00000213 li tp,0 -80000380: 00e00093 li ra,14 -80000384: 00b00113 li sp,11 -80000388: 00000013 nop -8000038c: 02208f33 mul t5,ra,sp -80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000394: 00200293 li t0,2 -80000398: fe5214e3 bne tp,t0,80000380 -8000039c: 09a00e93 li t4,154 -800003a0: 00f00193 li gp,15 -800003a4: 23df1263 bne t5,t4,800005c8 - -800003a8 : -800003a8: 00000213 li tp,0 -800003ac: 00f00093 li ra,15 -800003b0: 00b00113 li sp,11 -800003b4: 00000013 nop -800003b8: 00000013 nop -800003bc: 02208f33 mul t5,ra,sp -800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003c4: 00200293 li t0,2 -800003c8: fe5212e3 bne tp,t0,800003ac -800003cc: 0a500e93 li t4,165 -800003d0: 01000193 li gp,16 -800003d4: 1fdf1a63 bne t5,t4,800005c8 - -800003d8 : -800003d8: 00000213 li tp,0 -800003dc: 00d00093 li ra,13 -800003e0: 00000013 nop -800003e4: 00b00113 li sp,11 -800003e8: 02208f33 mul t5,ra,sp -800003ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003f0: 00200293 li t0,2 -800003f4: fe5214e3 bne tp,t0,800003dc -800003f8: 08f00e93 li t4,143 -800003fc: 01100193 li gp,17 -80000400: 1ddf1463 bne t5,t4,800005c8 - -80000404 : -80000404: 00000213 li tp,0 -80000408: 00e00093 li ra,14 -8000040c: 00000013 nop -80000410: 00b00113 li sp,11 -80000414: 00000013 nop -80000418: 02208f33 mul t5,ra,sp -8000041c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000420: 00200293 li t0,2 -80000424: fe5212e3 bne tp,t0,80000408 -80000428: 09a00e93 li t4,154 -8000042c: 01200193 li gp,18 -80000430: 19df1c63 bne t5,t4,800005c8 - -80000434 : -80000434: 00000213 li tp,0 -80000438: 00f00093 li ra,15 -8000043c: 00000013 nop -80000440: 00000013 nop -80000444: 00b00113 li sp,11 -80000448: 02208f33 mul t5,ra,sp -8000044c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000450: 00200293 li t0,2 -80000454: fe5212e3 bne tp,t0,80000438 -80000458: 0a500e93 li t4,165 -8000045c: 01300193 li gp,19 -80000460: 17df1463 bne t5,t4,800005c8 - -80000464 : -80000464: 00000213 li tp,0 -80000468: 00b00113 li sp,11 -8000046c: 00d00093 li ra,13 -80000470: 02208f33 mul t5,ra,sp -80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000478: 00200293 li t0,2 -8000047c: fe5216e3 bne tp,t0,80000468 -80000480: 08f00e93 li t4,143 -80000484: 01400193 li gp,20 -80000488: 15df1063 bne t5,t4,800005c8 - -8000048c : -8000048c: 00000213 li tp,0 -80000490: 00b00113 li sp,11 -80000494: 00e00093 li ra,14 -80000498: 00000013 nop -8000049c: 02208f33 mul t5,ra,sp -800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004a4: 00200293 li t0,2 -800004a8: fe5214e3 bne tp,t0,80000490 -800004ac: 09a00e93 li t4,154 -800004b0: 01500193 li gp,21 -800004b4: 11df1a63 bne t5,t4,800005c8 - -800004b8 : -800004b8: 00000213 li tp,0 -800004bc: 00b00113 li sp,11 -800004c0: 00f00093 li ra,15 -800004c4: 00000013 nop -800004c8: 00000013 nop -800004cc: 02208f33 mul t5,ra,sp -800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004d4: 00200293 li t0,2 -800004d8: fe5212e3 bne tp,t0,800004bc -800004dc: 0a500e93 li t4,165 -800004e0: 01600193 li gp,22 -800004e4: 0fdf1263 bne t5,t4,800005c8 - -800004e8 : -800004e8: 00000213 li tp,0 -800004ec: 00b00113 li sp,11 -800004f0: 00000013 nop -800004f4: 00d00093 li ra,13 -800004f8: 02208f33 mul t5,ra,sp -800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000500: 00200293 li t0,2 -80000504: fe5214e3 bne tp,t0,800004ec -80000508: 08f00e93 li t4,143 -8000050c: 01700193 li gp,23 -80000510: 0bdf1c63 bne t5,t4,800005c8 - -80000514 : -80000514: 00000213 li tp,0 -80000518: 00b00113 li sp,11 -8000051c: 00000013 nop -80000520: 00e00093 li ra,14 -80000524: 00000013 nop -80000528: 02208f33 mul t5,ra,sp -8000052c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000530: 00200293 li t0,2 -80000534: fe5212e3 bne tp,t0,80000518 -80000538: 09a00e93 li t4,154 -8000053c: 01800193 li gp,24 -80000540: 09df1463 bne t5,t4,800005c8 - -80000544 : -80000544: 00000213 li tp,0 -80000548: 00b00113 li sp,11 -8000054c: 00000013 nop -80000550: 00000013 nop -80000554: 00f00093 li ra,15 -80000558: 02208f33 mul t5,ra,sp -8000055c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000560: 00200293 li t0,2 -80000564: fe5212e3 bne tp,t0,80000548 -80000568: 0a500e93 li t4,165 -8000056c: 01900193 li gp,25 -80000570: 05df1c63 bne t5,t4,800005c8 - -80000574 : -80000574: 01f00093 li ra,31 -80000578: 02100133 mul sp,zero,ra -8000057c: 00000e93 li t4,0 -80000580: 01a00193 li gp,26 -80000584: 05d11263 bne sp,t4,800005c8 - -80000588 : -80000588: 02000093 li ra,32 -8000058c: 02008133 mul sp,ra,zero -80000590: 00000e93 li t4,0 -80000594: 01b00193 li gp,27 -80000598: 03d11863 bne sp,t4,800005c8 - -8000059c : -8000059c: 020000b3 mul ra,zero,zero -800005a0: 00000e93 li t4,0 -800005a4: 01c00193 li gp,28 -800005a8: 03d09063 bne ra,t4,800005c8 - -800005ac : -800005ac: 02100093 li ra,33 -800005b0: 02200113 li sp,34 -800005b4: 02208033 mul zero,ra,sp -800005b8: 00000e93 li t4,0 -800005bc: 01d00193 li gp,29 -800005c0: 01d01463 bne zero,t4,800005c8 -800005c4: 00301c63 bne zero,gp,800005dc - -800005c8 : -800005c8: 0ff0000f fence -800005cc: 00018063 beqz gp,800005cc -800005d0: 00119193 slli gp,gp,0x1 -800005d4: 0011e193 ori gp,gp,1 -800005d8: 00000073 ecall - -800005dc : -800005dc: 0ff0000f fence -800005e0: 00100193 li gp,1 -800005e4: 00000073 ecall -800005e8: c0001073 unimp -800005ec: 0000 unimp -800005ee: 0000 unimp -800005f0: 0000 unimp -800005f2: 0000 unimp -800005f4: 0000 unimp -800005f6: 0000 unimp -800005f8: 0000 unimp -800005fa: 0000 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32um-p-mulh.dump b/benchmarks/riscv_tests/rv32um-p-mulh.dump deleted file mode 100644 index 2e5eed71..00000000 --- a/benchmarks/riscv_tests/rv32um-p-mulh.dump +++ /dev/null @@ -1,478 +0,0 @@ - -rv32um-p-mulh: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 00000093 li ra,0 -80000104: 00000113 li sp,0 -80000108: 02209f33 mulh t5,ra,sp -8000010c: 00000e93 li t4,0 -80000110: 00200193 li gp,2 -80000114: 4bdf1a63 bne t5,t4,800005c8 - -80000118 : -80000118: 00100093 li ra,1 -8000011c: 00100113 li sp,1 -80000120: 02209f33 mulh t5,ra,sp -80000124: 00000e93 li t4,0 -80000128: 00300193 li gp,3 -8000012c: 49df1e63 bne t5,t4,800005c8 - -80000130 : -80000130: 00300093 li ra,3 -80000134: 00700113 li sp,7 -80000138: 02209f33 mulh t5,ra,sp -8000013c: 00000e93 li t4,0 -80000140: 00400193 li gp,4 -80000144: 49df1263 bne t5,t4,800005c8 - -80000148 : -80000148: 00000093 li ra,0 -8000014c: ffff8137 lui sp,0xffff8 -80000150: 02209f33 mulh t5,ra,sp -80000154: 00000e93 li t4,0 -80000158: 00500193 li gp,5 -8000015c: 47df1663 bne t5,t4,800005c8 - -80000160 : -80000160: 800000b7 lui ra,0x80000 -80000164: 00000113 li sp,0 -80000168: 02209f33 mulh t5,ra,sp -8000016c: 00000e93 li t4,0 -80000170: 00600193 li gp,6 -80000174: 45df1a63 bne t5,t4,800005c8 - -80000178 : -80000178: 800000b7 lui ra,0x80000 -8000017c: 00000113 li sp,0 -80000180: 02209f33 mulh t5,ra,sp -80000184: 00000e93 li t4,0 -80000188: 00700193 li gp,7 -8000018c: 43df1e63 bne t5,t4,800005c8 - -80000190 : -80000190: aaaab0b7 lui ra,0xaaaab -80000194: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> -80000198: 00030137 lui sp,0x30 -8000019c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> -800001a0: 02209f33 mulh t5,ra,sp -800001a4: ffff0eb7 lui t4,0xffff0 -800001a8: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081> -800001ac: 01e00193 li gp,30 -800001b0: 41df1c63 bne t5,t4,800005c8 - -800001b4 : -800001b4: 000300b7 lui ra,0x30 -800001b8: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> -800001bc: aaaab137 lui sp,0xaaaab -800001c0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> -800001c4: 02209f33 mulh t5,ra,sp -800001c8: ffff0eb7 lui t4,0xffff0 -800001cc: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081> -800001d0: 01f00193 li gp,31 -800001d4: 3fdf1a63 bne t5,t4,800005c8 - -800001d8 : -800001d8: ff0000b7 lui ra,0xff000 -800001dc: ff000137 lui sp,0xff000 -800001e0: 02209f33 mulh t5,ra,sp -800001e4: 00010eb7 lui t4,0x10 -800001e8: 02000193 li gp,32 -800001ec: 3ddf1e63 bne t5,t4,800005c8 - -800001f0 : -800001f0: fff00093 li ra,-1 -800001f4: fff00113 li sp,-1 -800001f8: 02209f33 mulh t5,ra,sp -800001fc: 00000e93 li t4,0 -80000200: 02100193 li gp,33 -80000204: 3ddf1263 bne t5,t4,800005c8 - -80000208 : -80000208: fff00093 li ra,-1 -8000020c: 00100113 li sp,1 -80000210: 02209f33 mulh t5,ra,sp -80000214: fff00e93 li t4,-1 -80000218: 02200193 li gp,34 -8000021c: 3bdf1663 bne t5,t4,800005c8 - -80000220 : -80000220: 00100093 li ra,1 -80000224: fff00113 li sp,-1 -80000228: 02209f33 mulh t5,ra,sp -8000022c: fff00e93 li t4,-1 -80000230: 02300193 li gp,35 -80000234: 39df1a63 bne t5,t4,800005c8 - -80000238 : -80000238: 00d000b7 lui ra,0xd00 -8000023c: 00b00137 lui sp,0xb00 -80000240: 022090b3 mulh ra,ra,sp -80000244: 00009eb7 lui t4,0x9 -80000248: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -8000024c: 00800193 li gp,8 -80000250: 37d09c63 bne ra,t4,800005c8 - -80000254 : -80000254: 00e000b7 lui ra,0xe00 -80000258: 00b00137 lui sp,0xb00 -8000025c: 02209133 mulh sp,ra,sp -80000260: 0000aeb7 lui t4,0xa -80000264: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000268: 00900193 li gp,9 -8000026c: 35d11e63 bne sp,t4,800005c8 - -80000270 : -80000270: 00d000b7 lui ra,0xd00 -80000274: 021090b3 mulh ra,ra,ra -80000278: 0000beb7 lui t4,0xb -8000027c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> -80000280: 00a00193 li gp,10 -80000284: 35d09263 bne ra,t4,800005c8 - -80000288 : -80000288: 00000213 li tp,0 -8000028c: 00d000b7 lui ra,0xd00 -80000290: 00b00137 lui sp,0xb00 -80000294: 02209f33 mulh t5,ra,sp -80000298: 000f0313 mv t1,t5 -8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a0: 00200293 li t0,2 -800002a4: fe5214e3 bne tp,t0,8000028c -800002a8: 00009eb7 lui t4,0x9 -800002ac: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -800002b0: 00b00193 li gp,11 -800002b4: 31d31a63 bne t1,t4,800005c8 - -800002b8 : -800002b8: 00000213 li tp,0 -800002bc: 00e000b7 lui ra,0xe00 -800002c0: 00b00137 lui sp,0xb00 -800002c4: 02209f33 mulh t5,ra,sp -800002c8: 00000013 nop -800002cc: 000f0313 mv t1,t5 -800002d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d4: 00200293 li t0,2 -800002d8: fe5212e3 bne tp,t0,800002bc -800002dc: 0000aeb7 lui t4,0xa -800002e0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -800002e4: 00c00193 li gp,12 -800002e8: 2fd31063 bne t1,t4,800005c8 - -800002ec : -800002ec: 00000213 li tp,0 -800002f0: 00f000b7 lui ra,0xf00 -800002f4: 00b00137 lui sp,0xb00 -800002f8: 02209f33 mulh t5,ra,sp -800002fc: 00000013 nop -80000300: 00000013 nop -80000304: 000f0313 mv t1,t5 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fe5210e3 bne tp,t0,800002f0 -80000314: 0000aeb7 lui t4,0xa -80000318: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -8000031c: 00d00193 li gp,13 -80000320: 2bd31463 bne t1,t4,800005c8 - -80000324 : -80000324: 00000213 li tp,0 -80000328: 00d000b7 lui ra,0xd00 -8000032c: 00b00137 lui sp,0xb00 -80000330: 02209f33 mulh t5,ra,sp -80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000338: 00200293 li t0,2 -8000033c: fe5216e3 bne tp,t0,80000328 -80000340: 00009eb7 lui t4,0x9 -80000344: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000348: 00e00193 li gp,14 -8000034c: 27df1e63 bne t5,t4,800005c8 - -80000350 : -80000350: 00000213 li tp,0 -80000354: 00e000b7 lui ra,0xe00 -80000358: 00b00137 lui sp,0xb00 -8000035c: 00000013 nop -80000360: 02209f33 mulh t5,ra,sp -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5214e3 bne tp,t0,80000354 -80000370: 0000aeb7 lui t4,0xa -80000374: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000378: 00f00193 li gp,15 -8000037c: 25df1663 bne t5,t4,800005c8 - -80000380 : -80000380: 00000213 li tp,0 -80000384: 00f000b7 lui ra,0xf00 -80000388: 00b00137 lui sp,0xb00 -8000038c: 00000013 nop -80000390: 00000013 nop -80000394: 02209f33 mulh t5,ra,sp -80000398: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000039c: 00200293 li t0,2 -800003a0: fe5212e3 bne tp,t0,80000384 -800003a4: 0000aeb7 lui t4,0xa -800003a8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -800003ac: 01000193 li gp,16 -800003b0: 21df1c63 bne t5,t4,800005c8 - -800003b4 : -800003b4: 00000213 li tp,0 -800003b8: 00d000b7 lui ra,0xd00 -800003bc: 00000013 nop -800003c0: 00b00137 lui sp,0xb00 -800003c4: 02209f33 mulh t5,ra,sp -800003c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003cc: 00200293 li t0,2 -800003d0: fe5214e3 bne tp,t0,800003b8 -800003d4: 00009eb7 lui t4,0x9 -800003d8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -800003dc: 01100193 li gp,17 -800003e0: 1fdf1463 bne t5,t4,800005c8 - -800003e4 : -800003e4: 00000213 li tp,0 -800003e8: 00e000b7 lui ra,0xe00 -800003ec: 00000013 nop -800003f0: 00b00137 lui sp,0xb00 -800003f4: 00000013 nop -800003f8: 02209f33 mulh t5,ra,sp -800003fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000400: 00200293 li t0,2 -80000404: fe5212e3 bne tp,t0,800003e8 -80000408: 0000aeb7 lui t4,0xa -8000040c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000410: 01200193 li gp,18 -80000414: 1bdf1a63 bne t5,t4,800005c8 - -80000418 : -80000418: 00000213 li tp,0 -8000041c: 00f000b7 lui ra,0xf00 -80000420: 00000013 nop -80000424: 00000013 nop -80000428: 00b00137 lui sp,0xb00 -8000042c: 02209f33 mulh t5,ra,sp -80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000434: 00200293 li t0,2 -80000438: fe5212e3 bne tp,t0,8000041c -8000043c: 0000aeb7 lui t4,0xa -80000440: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -80000444: 01300193 li gp,19 -80000448: 19df1063 bne t5,t4,800005c8 - -8000044c : -8000044c: 00000213 li tp,0 -80000450: 00b00137 lui sp,0xb00 -80000454: 00d000b7 lui ra,0xd00 -80000458: 02209f33 mulh t5,ra,sp -8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000460: 00200293 li t0,2 -80000464: fe5216e3 bne tp,t0,80000450 -80000468: 00009eb7 lui t4,0x9 -8000046c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000470: 01400193 li gp,20 -80000474: 15df1a63 bne t5,t4,800005c8 - -80000478 : -80000478: 00000213 li tp,0 -8000047c: 00b00137 lui sp,0xb00 -80000480: 00e000b7 lui ra,0xe00 -80000484: 00000013 nop -80000488: 02209f33 mulh t5,ra,sp -8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000490: 00200293 li t0,2 -80000494: fe5214e3 bne tp,t0,8000047c -80000498: 0000aeb7 lui t4,0xa -8000049c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -800004a0: 01500193 li gp,21 -800004a4: 13df1263 bne t5,t4,800005c8 - -800004a8 : -800004a8: 00000213 li tp,0 -800004ac: 00b00137 lui sp,0xb00 -800004b0: 00f000b7 lui ra,0xf00 -800004b4: 00000013 nop -800004b8: 00000013 nop -800004bc: 02209f33 mulh t5,ra,sp -800004c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004c4: 00200293 li t0,2 -800004c8: fe5212e3 bne tp,t0,800004ac -800004cc: 0000aeb7 lui t4,0xa -800004d0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -800004d4: 01600193 li gp,22 -800004d8: 0fdf1863 bne t5,t4,800005c8 - -800004dc : -800004dc: 00000213 li tp,0 -800004e0: 00b00137 lui sp,0xb00 -800004e4: 00000013 nop -800004e8: 00d000b7 lui ra,0xd00 -800004ec: 02209f33 mulh t5,ra,sp -800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004f4: 00200293 li t0,2 -800004f8: fe5214e3 bne tp,t0,800004e0 -800004fc: 00009eb7 lui t4,0x9 -80000500: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000504: 01700193 li gp,23 -80000508: 0ddf1063 bne t5,t4,800005c8 - -8000050c : -8000050c: 00000213 li tp,0 -80000510: 00b00137 lui sp,0xb00 -80000514: 00000013 nop -80000518: 00e000b7 lui ra,0xe00 -8000051c: 00000013 nop -80000520: 02209f33 mulh t5,ra,sp -80000524: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000528: 00200293 li t0,2 -8000052c: fe5212e3 bne tp,t0,80000510 -80000530: 0000aeb7 lui t4,0xa -80000534: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000538: 01800193 li gp,24 -8000053c: 09df1663 bne t5,t4,800005c8 - -80000540 : -80000540: 00000213 li tp,0 -80000544: 00b00137 lui sp,0xb00 -80000548: 00000013 nop -8000054c: 00000013 nop -80000550: 00f000b7 lui ra,0xf00 -80000554: 02209f33 mulh t5,ra,sp -80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000055c: 00200293 li t0,2 -80000560: fe5212e3 bne tp,t0,80000544 -80000564: 0000aeb7 lui t4,0xa -80000568: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -8000056c: 01900193 li gp,25 -80000570: 05df1c63 bne t5,t4,800005c8 - -80000574 : -80000574: 7c0000b7 lui ra,0x7c000 -80000578: 02101133 mulh sp,zero,ra -8000057c: 00000e93 li t4,0 -80000580: 01a00193 li gp,26 -80000584: 05d11263 bne sp,t4,800005c8 - -80000588 : -80000588: 800000b7 lui ra,0x80000 -8000058c: 02009133 mulh sp,ra,zero -80000590: 00000e93 li t4,0 -80000594: 01b00193 li gp,27 -80000598: 03d11863 bne sp,t4,800005c8 - -8000059c : -8000059c: 020010b3 mulh ra,zero,zero -800005a0: 00000e93 li t4,0 -800005a4: 01c00193 li gp,28 -800005a8: 03d09063 bne ra,t4,800005c8 - -800005ac : -800005ac: 021000b7 lui ra,0x2100 -800005b0: 02200137 lui sp,0x2200 -800005b4: 02209033 mulh zero,ra,sp -800005b8: 00000e93 li t4,0 -800005bc: 01d00193 li gp,29 -800005c0: 01d01463 bne zero,t4,800005c8 -800005c4: 00301c63 bne zero,gp,800005dc - -800005c8 : -800005c8: 0ff0000f fence -800005cc: 00018063 beqz gp,800005cc -800005d0: 00119193 slli gp,gp,0x1 -800005d4: 0011e193 ori gp,gp,1 -800005d8: 00000073 ecall - -800005dc : -800005dc: 0ff0000f fence -800005e0: 00100193 li gp,1 -800005e4: 00000073 ecall -800005e8: c0001073 unimp -800005ec: 0000 unimp -800005ee: 0000 unimp -800005f0: 0000 unimp -800005f2: 0000 unimp -800005f4: 0000 unimp -800005f6: 0000 unimp -800005f8: 0000 unimp -800005fa: 0000 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32um-p-mulhsu.dump b/benchmarks/riscv_tests/rv32um-p-mulhsu.dump deleted file mode 100644 index 7ce86c65..00000000 --- a/benchmarks/riscv_tests/rv32um-p-mulhsu.dump +++ /dev/null @@ -1,478 +0,0 @@ - -rv32um-p-mulhsu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 00000093 li ra,0 -80000104: 00000113 li sp,0 -80000108: 0220af33 mulhsu t5,ra,sp -8000010c: 00000e93 li t4,0 -80000110: 00200193 li gp,2 -80000114: 4bdf1a63 bne t5,t4,800005c8 - -80000118 : -80000118: 00100093 li ra,1 -8000011c: 00100113 li sp,1 -80000120: 0220af33 mulhsu t5,ra,sp -80000124: 00000e93 li t4,0 -80000128: 00300193 li gp,3 -8000012c: 49df1e63 bne t5,t4,800005c8 - -80000130 : -80000130: 00300093 li ra,3 -80000134: 00700113 li sp,7 -80000138: 0220af33 mulhsu t5,ra,sp -8000013c: 00000e93 li t4,0 -80000140: 00400193 li gp,4 -80000144: 49df1263 bne t5,t4,800005c8 - -80000148 : -80000148: 00000093 li ra,0 -8000014c: ffff8137 lui sp,0xffff8 -80000150: 0220af33 mulhsu t5,ra,sp -80000154: 00000e93 li t4,0 -80000158: 00500193 li gp,5 -8000015c: 47df1663 bne t5,t4,800005c8 - -80000160 : -80000160: 800000b7 lui ra,0x80000 -80000164: 00000113 li sp,0 -80000168: 0220af33 mulhsu t5,ra,sp -8000016c: 00000e93 li t4,0 -80000170: 00600193 li gp,6 -80000174: 45df1a63 bne t5,t4,800005c8 - -80000178 : -80000178: 800000b7 lui ra,0x80000 -8000017c: ffff8137 lui sp,0xffff8 -80000180: 0220af33 mulhsu t5,ra,sp -80000184: 80004eb7 lui t4,0x80004 -80000188: 00700193 li gp,7 -8000018c: 43df1e63 bne t5,t4,800005c8 - -80000190 : -80000190: aaaab0b7 lui ra,0xaaaab -80000194: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> -80000198: 00030137 lui sp,0x30 -8000019c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> -800001a0: 0220af33 mulhsu t5,ra,sp -800001a4: ffff0eb7 lui t4,0xffff0 -800001a8: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081> -800001ac: 01e00193 li gp,30 -800001b0: 41df1c63 bne t5,t4,800005c8 - -800001b4 : -800001b4: 000300b7 lui ra,0x30 -800001b8: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> -800001bc: aaaab137 lui sp,0xaaaab -800001c0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> -800001c4: 0220af33 mulhsu t5,ra,sp -800001c8: 00020eb7 lui t4,0x20 -800001cc: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> -800001d0: 01f00193 li gp,31 -800001d4: 3fdf1a63 bne t5,t4,800005c8 - -800001d8 : -800001d8: ff0000b7 lui ra,0xff000 -800001dc: ff000137 lui sp,0xff000 -800001e0: 0220af33 mulhsu t5,ra,sp -800001e4: ff010eb7 lui t4,0xff010 -800001e8: 02000193 li gp,32 -800001ec: 3ddf1e63 bne t5,t4,800005c8 - -800001f0 : -800001f0: fff00093 li ra,-1 -800001f4: fff00113 li sp,-1 -800001f8: 0220af33 mulhsu t5,ra,sp -800001fc: fff00e93 li t4,-1 -80000200: 02100193 li gp,33 -80000204: 3ddf1263 bne t5,t4,800005c8 - -80000208 : -80000208: fff00093 li ra,-1 -8000020c: 00100113 li sp,1 -80000210: 0220af33 mulhsu t5,ra,sp -80000214: fff00e93 li t4,-1 -80000218: 02200193 li gp,34 -8000021c: 3bdf1663 bne t5,t4,800005c8 - -80000220 : -80000220: 00100093 li ra,1 -80000224: fff00113 li sp,-1 -80000228: 0220af33 mulhsu t5,ra,sp -8000022c: 00000e93 li t4,0 -80000230: 02300193 li gp,35 -80000234: 39df1a63 bne t5,t4,800005c8 - -80000238 : -80000238: 00d000b7 lui ra,0xd00 -8000023c: 00b00137 lui sp,0xb00 -80000240: 0220a0b3 mulhsu ra,ra,sp -80000244: 00009eb7 lui t4,0x9 -80000248: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -8000024c: 00800193 li gp,8 -80000250: 37d09c63 bne ra,t4,800005c8 - -80000254 : -80000254: 00e000b7 lui ra,0xe00 -80000258: 00b00137 lui sp,0xb00 -8000025c: 0220a133 mulhsu sp,ra,sp -80000260: 0000aeb7 lui t4,0xa -80000264: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000268: 00900193 li gp,9 -8000026c: 35d11e63 bne sp,t4,800005c8 - -80000270 : -80000270: 00d000b7 lui ra,0xd00 -80000274: 0210a0b3 mulhsu ra,ra,ra -80000278: 0000beb7 lui t4,0xb -8000027c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> -80000280: 00a00193 li gp,10 -80000284: 35d09263 bne ra,t4,800005c8 - -80000288 : -80000288: 00000213 li tp,0 -8000028c: 00d000b7 lui ra,0xd00 -80000290: 00b00137 lui sp,0xb00 -80000294: 0220af33 mulhsu t5,ra,sp -80000298: 000f0313 mv t1,t5 -8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a0: 00200293 li t0,2 -800002a4: fe5214e3 bne tp,t0,8000028c -800002a8: 00009eb7 lui t4,0x9 -800002ac: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -800002b0: 00b00193 li gp,11 -800002b4: 31d31a63 bne t1,t4,800005c8 - -800002b8 : -800002b8: 00000213 li tp,0 -800002bc: 00e000b7 lui ra,0xe00 -800002c0: 00b00137 lui sp,0xb00 -800002c4: 0220af33 mulhsu t5,ra,sp -800002c8: 00000013 nop -800002cc: 000f0313 mv t1,t5 -800002d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d4: 00200293 li t0,2 -800002d8: fe5212e3 bne tp,t0,800002bc -800002dc: 0000aeb7 lui t4,0xa -800002e0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -800002e4: 00c00193 li gp,12 -800002e8: 2fd31063 bne t1,t4,800005c8 - -800002ec : -800002ec: 00000213 li tp,0 -800002f0: 00f000b7 lui ra,0xf00 -800002f4: 00b00137 lui sp,0xb00 -800002f8: 0220af33 mulhsu t5,ra,sp -800002fc: 00000013 nop -80000300: 00000013 nop -80000304: 000f0313 mv t1,t5 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fe5210e3 bne tp,t0,800002f0 -80000314: 0000aeb7 lui t4,0xa -80000318: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -8000031c: 00d00193 li gp,13 -80000320: 2bd31463 bne t1,t4,800005c8 - -80000324 : -80000324: 00000213 li tp,0 -80000328: 00d000b7 lui ra,0xd00 -8000032c: 00b00137 lui sp,0xb00 -80000330: 0220af33 mulhsu t5,ra,sp -80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000338: 00200293 li t0,2 -8000033c: fe5216e3 bne tp,t0,80000328 -80000340: 00009eb7 lui t4,0x9 -80000344: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000348: 00e00193 li gp,14 -8000034c: 27df1e63 bne t5,t4,800005c8 - -80000350 : -80000350: 00000213 li tp,0 -80000354: 00e000b7 lui ra,0xe00 -80000358: 00b00137 lui sp,0xb00 -8000035c: 00000013 nop -80000360: 0220af33 mulhsu t5,ra,sp -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5214e3 bne tp,t0,80000354 -80000370: 0000aeb7 lui t4,0xa -80000374: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000378: 00f00193 li gp,15 -8000037c: 25df1663 bne t5,t4,800005c8 - -80000380 : -80000380: 00000213 li tp,0 -80000384: 00f000b7 lui ra,0xf00 -80000388: 00b00137 lui sp,0xb00 -8000038c: 00000013 nop -80000390: 00000013 nop -80000394: 0220af33 mulhsu t5,ra,sp -80000398: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000039c: 00200293 li t0,2 -800003a0: fe5212e3 bne tp,t0,80000384 -800003a4: 0000aeb7 lui t4,0xa -800003a8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -800003ac: 01000193 li gp,16 -800003b0: 21df1c63 bne t5,t4,800005c8 - -800003b4 : -800003b4: 00000213 li tp,0 -800003b8: 00d000b7 lui ra,0xd00 -800003bc: 00000013 nop -800003c0: 00b00137 lui sp,0xb00 -800003c4: 0220af33 mulhsu t5,ra,sp -800003c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003cc: 00200293 li t0,2 -800003d0: fe5214e3 bne tp,t0,800003b8 -800003d4: 00009eb7 lui t4,0x9 -800003d8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -800003dc: 01100193 li gp,17 -800003e0: 1fdf1463 bne t5,t4,800005c8 - -800003e4 : -800003e4: 00000213 li tp,0 -800003e8: 00e000b7 lui ra,0xe00 -800003ec: 00000013 nop -800003f0: 00b00137 lui sp,0xb00 -800003f4: 00000013 nop -800003f8: 0220af33 mulhsu t5,ra,sp -800003fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000400: 00200293 li t0,2 -80000404: fe5212e3 bne tp,t0,800003e8 -80000408: 0000aeb7 lui t4,0xa -8000040c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000410: 01200193 li gp,18 -80000414: 1bdf1a63 bne t5,t4,800005c8 - -80000418 : -80000418: 00000213 li tp,0 -8000041c: 00f000b7 lui ra,0xf00 -80000420: 00000013 nop -80000424: 00000013 nop -80000428: 00b00137 lui sp,0xb00 -8000042c: 0220af33 mulhsu t5,ra,sp -80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000434: 00200293 li t0,2 -80000438: fe5212e3 bne tp,t0,8000041c -8000043c: 0000aeb7 lui t4,0xa -80000440: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -80000444: 01300193 li gp,19 -80000448: 19df1063 bne t5,t4,800005c8 - -8000044c : -8000044c: 00000213 li tp,0 -80000450: 00b00137 lui sp,0xb00 -80000454: 00d000b7 lui ra,0xd00 -80000458: 0220af33 mulhsu t5,ra,sp -8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000460: 00200293 li t0,2 -80000464: fe5216e3 bne tp,t0,80000450 -80000468: 00009eb7 lui t4,0x9 -8000046c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000470: 01400193 li gp,20 -80000474: 15df1a63 bne t5,t4,800005c8 - -80000478 : -80000478: 00000213 li tp,0 -8000047c: 00b00137 lui sp,0xb00 -80000480: 00e000b7 lui ra,0xe00 -80000484: 00000013 nop -80000488: 0220af33 mulhsu t5,ra,sp -8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000490: 00200293 li t0,2 -80000494: fe5214e3 bne tp,t0,8000047c -80000498: 0000aeb7 lui t4,0xa -8000049c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -800004a0: 01500193 li gp,21 -800004a4: 13df1263 bne t5,t4,800005c8 - -800004a8 : -800004a8: 00000213 li tp,0 -800004ac: 00b00137 lui sp,0xb00 -800004b0: 00f000b7 lui ra,0xf00 -800004b4: 00000013 nop -800004b8: 00000013 nop -800004bc: 0220af33 mulhsu t5,ra,sp -800004c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004c4: 00200293 li t0,2 -800004c8: fe5212e3 bne tp,t0,800004ac -800004cc: 0000aeb7 lui t4,0xa -800004d0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -800004d4: 01600193 li gp,22 -800004d8: 0fdf1863 bne t5,t4,800005c8 - -800004dc : -800004dc: 00000213 li tp,0 -800004e0: 00b00137 lui sp,0xb00 -800004e4: 00000013 nop -800004e8: 00d000b7 lui ra,0xd00 -800004ec: 0220af33 mulhsu t5,ra,sp -800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004f4: 00200293 li t0,2 -800004f8: fe5214e3 bne tp,t0,800004e0 -800004fc: 00009eb7 lui t4,0x9 -80000500: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000504: 01700193 li gp,23 -80000508: 0ddf1063 bne t5,t4,800005c8 - -8000050c : -8000050c: 00000213 li tp,0 -80000510: 00b00137 lui sp,0xb00 -80000514: 00000013 nop -80000518: 00e000b7 lui ra,0xe00 -8000051c: 00000013 nop -80000520: 0220af33 mulhsu t5,ra,sp -80000524: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000528: 00200293 li t0,2 -8000052c: fe5212e3 bne tp,t0,80000510 -80000530: 0000aeb7 lui t4,0xa -80000534: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000538: 01800193 li gp,24 -8000053c: 09df1663 bne t5,t4,800005c8 - -80000540 : -80000540: 00000213 li tp,0 -80000544: 00b00137 lui sp,0xb00 -80000548: 00000013 nop -8000054c: 00000013 nop -80000550: 00f000b7 lui ra,0xf00 -80000554: 0220af33 mulhsu t5,ra,sp -80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000055c: 00200293 li t0,2 -80000560: fe5212e3 bne tp,t0,80000544 -80000564: 0000aeb7 lui t4,0xa -80000568: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -8000056c: 01900193 li gp,25 -80000570: 05df1c63 bne t5,t4,800005c8 - -80000574 : -80000574: 7c0000b7 lui ra,0x7c000 -80000578: 02102133 mulhsu sp,zero,ra -8000057c: 00000e93 li t4,0 -80000580: 01a00193 li gp,26 -80000584: 05d11263 bne sp,t4,800005c8 - -80000588 : -80000588: 800000b7 lui ra,0x80000 -8000058c: 0200a133 mulhsu sp,ra,zero -80000590: 00000e93 li t4,0 -80000594: 01b00193 li gp,27 -80000598: 03d11863 bne sp,t4,800005c8 - -8000059c : -8000059c: 020020b3 mulhsu ra,zero,zero -800005a0: 00000e93 li t4,0 -800005a4: 01c00193 li gp,28 -800005a8: 03d09063 bne ra,t4,800005c8 - -800005ac : -800005ac: 021000b7 lui ra,0x2100 -800005b0: 02200137 lui sp,0x2200 -800005b4: 0220a033 mulhsu zero,ra,sp -800005b8: 00000e93 li t4,0 -800005bc: 01d00193 li gp,29 -800005c0: 01d01463 bne zero,t4,800005c8 -800005c4: 00301c63 bne zero,gp,800005dc - -800005c8 : -800005c8: 0ff0000f fence -800005cc: 00018063 beqz gp,800005cc -800005d0: 00119193 slli gp,gp,0x1 -800005d4: 0011e193 ori gp,gp,1 -800005d8: 00000073 ecall - -800005dc : -800005dc: 0ff0000f fence -800005e0: 00100193 li gp,1 -800005e4: 00000073 ecall -800005e8: c0001073 unimp -800005ec: 0000 unimp -800005ee: 0000 unimp -800005f0: 0000 unimp -800005f2: 0000 unimp -800005f4: 0000 unimp -800005f6: 0000 unimp -800005f8: 0000 unimp -800005fa: 0000 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32um-p-mulhu.dump b/benchmarks/riscv_tests/rv32um-p-mulhu.dump deleted file mode 100644 index d2e65008..00000000 --- a/benchmarks/riscv_tests/rv32um-p-mulhu.dump +++ /dev/null @@ -1,478 +0,0 @@ - -rv32um-p-mulhu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 00000093 li ra,0 -80000104: 00000113 li sp,0 -80000108: 0220bf33 mulhu t5,ra,sp -8000010c: 00000e93 li t4,0 -80000110: 00200193 li gp,2 -80000114: 4bdf1a63 bne t5,t4,800005c8 - -80000118 : -80000118: 00100093 li ra,1 -8000011c: 00100113 li sp,1 -80000120: 0220bf33 mulhu t5,ra,sp -80000124: 00000e93 li t4,0 -80000128: 00300193 li gp,3 -8000012c: 49df1e63 bne t5,t4,800005c8 - -80000130 : -80000130: 00300093 li ra,3 -80000134: 00700113 li sp,7 -80000138: 0220bf33 mulhu t5,ra,sp -8000013c: 00000e93 li t4,0 -80000140: 00400193 li gp,4 -80000144: 49df1263 bne t5,t4,800005c8 - -80000148 : -80000148: 00000093 li ra,0 -8000014c: ffff8137 lui sp,0xffff8 -80000150: 0220bf33 mulhu t5,ra,sp -80000154: 00000e93 li t4,0 -80000158: 00500193 li gp,5 -8000015c: 47df1663 bne t5,t4,800005c8 - -80000160 : -80000160: 800000b7 lui ra,0x80000 -80000164: 00000113 li sp,0 -80000168: 0220bf33 mulhu t5,ra,sp -8000016c: 00000e93 li t4,0 -80000170: 00600193 li gp,6 -80000174: 45df1a63 bne t5,t4,800005c8 - -80000178 : -80000178: 800000b7 lui ra,0x80000 -8000017c: ffff8137 lui sp,0xffff8 -80000180: 0220bf33 mulhu t5,ra,sp -80000184: 7fffceb7 lui t4,0x7fffc -80000188: 00700193 li gp,7 -8000018c: 43df1e63 bne t5,t4,800005c8 - -80000190 : -80000190: aaaab0b7 lui ra,0xaaaab -80000194: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> -80000198: 00030137 lui sp,0x30 -8000019c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> -800001a0: 0220bf33 mulhu t5,ra,sp -800001a4: 00020eb7 lui t4,0x20 -800001a8: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> -800001ac: 01e00193 li gp,30 -800001b0: 41df1c63 bne t5,t4,800005c8 - -800001b4 : -800001b4: 000300b7 lui ra,0x30 -800001b8: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> -800001bc: aaaab137 lui sp,0xaaaab -800001c0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> -800001c4: 0220bf33 mulhu t5,ra,sp -800001c8: 00020eb7 lui t4,0x20 -800001cc: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> -800001d0: 01f00193 li gp,31 -800001d4: 3fdf1a63 bne t5,t4,800005c8 - -800001d8 : -800001d8: ff0000b7 lui ra,0xff000 -800001dc: ff000137 lui sp,0xff000 -800001e0: 0220bf33 mulhu t5,ra,sp -800001e4: fe010eb7 lui t4,0xfe010 -800001e8: 02000193 li gp,32 -800001ec: 3ddf1e63 bne t5,t4,800005c8 - -800001f0 : -800001f0: fff00093 li ra,-1 -800001f4: fff00113 li sp,-1 -800001f8: 0220bf33 mulhu t5,ra,sp -800001fc: ffe00e93 li t4,-2 -80000200: 02100193 li gp,33 -80000204: 3ddf1263 bne t5,t4,800005c8 - -80000208 : -80000208: fff00093 li ra,-1 -8000020c: 00100113 li sp,1 -80000210: 0220bf33 mulhu t5,ra,sp -80000214: 00000e93 li t4,0 -80000218: 02200193 li gp,34 -8000021c: 3bdf1663 bne t5,t4,800005c8 - -80000220 : -80000220: 00100093 li ra,1 -80000224: fff00113 li sp,-1 -80000228: 0220bf33 mulhu t5,ra,sp -8000022c: 00000e93 li t4,0 -80000230: 02300193 li gp,35 -80000234: 39df1a63 bne t5,t4,800005c8 - -80000238 : -80000238: 00d000b7 lui ra,0xd00 -8000023c: 00b00137 lui sp,0xb00 -80000240: 0220b0b3 mulhu ra,ra,sp -80000244: 00009eb7 lui t4,0x9 -80000248: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -8000024c: 00800193 li gp,8 -80000250: 37d09c63 bne ra,t4,800005c8 - -80000254 : -80000254: 00e000b7 lui ra,0xe00 -80000258: 00b00137 lui sp,0xb00 -8000025c: 0220b133 mulhu sp,ra,sp -80000260: 0000aeb7 lui t4,0xa -80000264: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000268: 00900193 li gp,9 -8000026c: 35d11e63 bne sp,t4,800005c8 - -80000270 : -80000270: 00d000b7 lui ra,0xd00 -80000274: 0210b0b3 mulhu ra,ra,ra -80000278: 0000beb7 lui t4,0xb -8000027c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> -80000280: 00a00193 li gp,10 -80000284: 35d09263 bne ra,t4,800005c8 - -80000288 : -80000288: 00000213 li tp,0 -8000028c: 00d000b7 lui ra,0xd00 -80000290: 00b00137 lui sp,0xb00 -80000294: 0220bf33 mulhu t5,ra,sp -80000298: 000f0313 mv t1,t5 -8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002a0: 00200293 li t0,2 -800002a4: fe5214e3 bne tp,t0,8000028c -800002a8: 00009eb7 lui t4,0x9 -800002ac: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -800002b0: 00b00193 li gp,11 -800002b4: 31d31a63 bne t1,t4,800005c8 - -800002b8 : -800002b8: 00000213 li tp,0 -800002bc: 00e000b7 lui ra,0xe00 -800002c0: 00b00137 lui sp,0xb00 -800002c4: 0220bf33 mulhu t5,ra,sp -800002c8: 00000013 nop -800002cc: 000f0313 mv t1,t5 -800002d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800002d4: 00200293 li t0,2 -800002d8: fe5212e3 bne tp,t0,800002bc -800002dc: 0000aeb7 lui t4,0xa -800002e0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -800002e4: 00c00193 li gp,12 -800002e8: 2fd31063 bne t1,t4,800005c8 - -800002ec : -800002ec: 00000213 li tp,0 -800002f0: 00f000b7 lui ra,0xf00 -800002f4: 00b00137 lui sp,0xb00 -800002f8: 0220bf33 mulhu t5,ra,sp -800002fc: 00000013 nop -80000300: 00000013 nop -80000304: 000f0313 mv t1,t5 -80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000030c: 00200293 li t0,2 -80000310: fe5210e3 bne tp,t0,800002f0 -80000314: 0000aeb7 lui t4,0xa -80000318: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -8000031c: 00d00193 li gp,13 -80000320: 2bd31463 bne t1,t4,800005c8 - -80000324 : -80000324: 00000213 li tp,0 -80000328: 00d000b7 lui ra,0xd00 -8000032c: 00b00137 lui sp,0xb00 -80000330: 0220bf33 mulhu t5,ra,sp -80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000338: 00200293 li t0,2 -8000033c: fe5216e3 bne tp,t0,80000328 -80000340: 00009eb7 lui t4,0x9 -80000344: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000348: 00e00193 li gp,14 -8000034c: 27df1e63 bne t5,t4,800005c8 - -80000350 : -80000350: 00000213 li tp,0 -80000354: 00e000b7 lui ra,0xe00 -80000358: 00b00137 lui sp,0xb00 -8000035c: 00000013 nop -80000360: 0220bf33 mulhu t5,ra,sp -80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000368: 00200293 li t0,2 -8000036c: fe5214e3 bne tp,t0,80000354 -80000370: 0000aeb7 lui t4,0xa -80000374: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000378: 00f00193 li gp,15 -8000037c: 25df1663 bne t5,t4,800005c8 - -80000380 : -80000380: 00000213 li tp,0 -80000384: 00f000b7 lui ra,0xf00 -80000388: 00b00137 lui sp,0xb00 -8000038c: 00000013 nop -80000390: 00000013 nop -80000394: 0220bf33 mulhu t5,ra,sp -80000398: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000039c: 00200293 li t0,2 -800003a0: fe5212e3 bne tp,t0,80000384 -800003a4: 0000aeb7 lui t4,0xa -800003a8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -800003ac: 01000193 li gp,16 -800003b0: 21df1c63 bne t5,t4,800005c8 - -800003b4 : -800003b4: 00000213 li tp,0 -800003b8: 00d000b7 lui ra,0xd00 -800003bc: 00000013 nop -800003c0: 00b00137 lui sp,0xb00 -800003c4: 0220bf33 mulhu t5,ra,sp -800003c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800003cc: 00200293 li t0,2 -800003d0: fe5214e3 bne tp,t0,800003b8 -800003d4: 00009eb7 lui t4,0x9 -800003d8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -800003dc: 01100193 li gp,17 -800003e0: 1fdf1463 bne t5,t4,800005c8 - -800003e4 : -800003e4: 00000213 li tp,0 -800003e8: 00e000b7 lui ra,0xe00 -800003ec: 00000013 nop -800003f0: 00b00137 lui sp,0xb00 -800003f4: 00000013 nop -800003f8: 0220bf33 mulhu t5,ra,sp -800003fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000400: 00200293 li t0,2 -80000404: fe5212e3 bne tp,t0,800003e8 -80000408: 0000aeb7 lui t4,0xa -8000040c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000410: 01200193 li gp,18 -80000414: 1bdf1a63 bne t5,t4,800005c8 - -80000418 : -80000418: 00000213 li tp,0 -8000041c: 00f000b7 lui ra,0xf00 -80000420: 00000013 nop -80000424: 00000013 nop -80000428: 00b00137 lui sp,0xb00 -8000042c: 0220bf33 mulhu t5,ra,sp -80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000434: 00200293 li t0,2 -80000438: fe5212e3 bne tp,t0,8000041c -8000043c: 0000aeb7 lui t4,0xa -80000440: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -80000444: 01300193 li gp,19 -80000448: 19df1063 bne t5,t4,800005c8 - -8000044c : -8000044c: 00000213 li tp,0 -80000450: 00b00137 lui sp,0xb00 -80000454: 00d000b7 lui ra,0xd00 -80000458: 0220bf33 mulhu t5,ra,sp -8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000460: 00200293 li t0,2 -80000464: fe5216e3 bne tp,t0,80000450 -80000468: 00009eb7 lui t4,0x9 -8000046c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000470: 01400193 li gp,20 -80000474: 15df1a63 bne t5,t4,800005c8 - -80000478 : -80000478: 00000213 li tp,0 -8000047c: 00b00137 lui sp,0xb00 -80000480: 00e000b7 lui ra,0xe00 -80000484: 00000013 nop -80000488: 0220bf33 mulhu t5,ra,sp -8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000490: 00200293 li t0,2 -80000494: fe5214e3 bne tp,t0,8000047c -80000498: 0000aeb7 lui t4,0xa -8000049c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -800004a0: 01500193 li gp,21 -800004a4: 13df1263 bne t5,t4,800005c8 - -800004a8 : -800004a8: 00000213 li tp,0 -800004ac: 00b00137 lui sp,0xb00 -800004b0: 00f000b7 lui ra,0xf00 -800004b4: 00000013 nop -800004b8: 00000013 nop -800004bc: 0220bf33 mulhu t5,ra,sp -800004c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004c4: 00200293 li t0,2 -800004c8: fe5212e3 bne tp,t0,800004ac -800004cc: 0000aeb7 lui t4,0xa -800004d0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -800004d4: 01600193 li gp,22 -800004d8: 0fdf1863 bne t5,t4,800005c8 - -800004dc : -800004dc: 00000213 li tp,0 -800004e0: 00b00137 lui sp,0xb00 -800004e4: 00000013 nop -800004e8: 00d000b7 lui ra,0xd00 -800004ec: 0220bf33 mulhu t5,ra,sp -800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -800004f4: 00200293 li t0,2 -800004f8: fe5214e3 bne tp,t0,800004e0 -800004fc: 00009eb7 lui t4,0x9 -80000500: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> -80000504: 01700193 li gp,23 -80000508: 0ddf1063 bne t5,t4,800005c8 - -8000050c : -8000050c: 00000213 li tp,0 -80000510: 00b00137 lui sp,0xb00 -80000514: 00000013 nop -80000518: 00e000b7 lui ra,0xe00 -8000051c: 00000013 nop -80000520: 0220bf33 mulhu t5,ra,sp -80000524: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -80000528: 00200293 li t0,2 -8000052c: fe5212e3 bne tp,t0,80000510 -80000530: 0000aeb7 lui t4,0xa -80000534: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> -80000538: 01800193 li gp,24 -8000053c: 09df1663 bne t5,t4,800005c8 - -80000540 : -80000540: 00000213 li tp,0 -80000544: 00b00137 lui sp,0xb00 -80000548: 00000013 nop -8000054c: 00000013 nop -80000550: 00f000b7 lui ra,0xf00 -80000554: 0220bf33 mulhu t5,ra,sp -80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> -8000055c: 00200293 li t0,2 -80000560: fe5212e3 bne tp,t0,80000544 -80000564: 0000aeb7 lui t4,0xa -80000568: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> -8000056c: 01900193 li gp,25 -80000570: 05df1c63 bne t5,t4,800005c8 - -80000574 : -80000574: 7c0000b7 lui ra,0x7c000 -80000578: 02103133 mulhu sp,zero,ra -8000057c: 00000e93 li t4,0 -80000580: 01a00193 li gp,26 -80000584: 05d11263 bne sp,t4,800005c8 - -80000588 : -80000588: 800000b7 lui ra,0x80000 -8000058c: 0200b133 mulhu sp,ra,zero -80000590: 00000e93 li t4,0 -80000594: 01b00193 li gp,27 -80000598: 03d11863 bne sp,t4,800005c8 - -8000059c : -8000059c: 020030b3 mulhu ra,zero,zero -800005a0: 00000e93 li t4,0 -800005a4: 01c00193 li gp,28 -800005a8: 03d09063 bne ra,t4,800005c8 - -800005ac : -800005ac: 021000b7 lui ra,0x2100 -800005b0: 02200137 lui sp,0x2200 -800005b4: 0220b033 mulhu zero,ra,sp -800005b8: 00000e93 li t4,0 -800005bc: 01d00193 li gp,29 -800005c0: 01d01463 bne zero,t4,800005c8 -800005c4: 00301c63 bne zero,gp,800005dc - -800005c8 : -800005c8: 0ff0000f fence -800005cc: 00018063 beqz gp,800005cc -800005d0: 00119193 slli gp,gp,0x1 -800005d4: 0011e193 ori gp,gp,1 -800005d8: 00000073 ecall - -800005dc : -800005dc: 0ff0000f fence -800005e0: 00100193 li gp,1 -800005e4: 00000073 ecall -800005e8: c0001073 unimp -800005ec: 0000 unimp -800005ee: 0000 unimp -800005f0: 0000 unimp -800005f2: 0000 unimp -800005f4: 0000 unimp -800005f6: 0000 unimp -800005f8: 0000 unimp -800005fa: 0000 unimp -800005fc: 0000 unimp -800005fe: 0000 unimp -80000600: 0000 unimp -80000602: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32um-p-rem.dump b/benchmarks/riscv_tests/rv32um-p-rem.dump deleted file mode 100644 index 67bbe86f..00000000 --- a/benchmarks/riscv_tests/rv32um-p-rem.dump +++ /dev/null @@ -1,167 +0,0 @@ - -rv32um-p-rem: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 01400093 li ra,20 -80000104: 00600113 li sp,6 -80000108: 0220ef33 rem t5,ra,sp -8000010c: 00200e93 li t4,2 -80000110: 00200193 li gp,2 -80000114: 0ddf1463 bne t5,t4,800001dc - -80000118 : -80000118: fec00093 li ra,-20 -8000011c: 00600113 li sp,6 -80000120: 0220ef33 rem t5,ra,sp -80000124: ffe00e93 li t4,-2 -80000128: 00300193 li gp,3 -8000012c: 0bdf1863 bne t5,t4,800001dc - -80000130 : -80000130: 01400093 li ra,20 -80000134: ffa00113 li sp,-6 -80000138: 0220ef33 rem t5,ra,sp -8000013c: 00200e93 li t4,2 -80000140: 00400193 li gp,4 -80000144: 09df1c63 bne t5,t4,800001dc - -80000148 : -80000148: fec00093 li ra,-20 -8000014c: ffa00113 li sp,-6 -80000150: 0220ef33 rem t5,ra,sp -80000154: ffe00e93 li t4,-2 -80000158: 00500193 li gp,5 -8000015c: 09df1063 bne t5,t4,800001dc - -80000160 : -80000160: 800000b7 lui ra,0x80000 -80000164: 00100113 li sp,1 -80000168: 0220ef33 rem t5,ra,sp -8000016c: 00000e93 li t4,0 -80000170: 00600193 li gp,6 -80000174: 07df1463 bne t5,t4,800001dc - -80000178 : -80000178: 800000b7 lui ra,0x80000 -8000017c: fff00113 li sp,-1 -80000180: 0220ef33 rem t5,ra,sp -80000184: 00000e93 li t4,0 -80000188: 00700193 li gp,7 -8000018c: 05df1863 bne t5,t4,800001dc - -80000190 : -80000190: 800000b7 lui ra,0x80000 -80000194: 00000113 li sp,0 -80000198: 0220ef33 rem t5,ra,sp -8000019c: 80000eb7 lui t4,0x80000 -800001a0: 00800193 li gp,8 -800001a4: 03df1c63 bne t5,t4,800001dc - -800001a8 : -800001a8: 00100093 li ra,1 -800001ac: 00000113 li sp,0 -800001b0: 0220ef33 rem t5,ra,sp -800001b4: 00100e93 li t4,1 -800001b8: 00900193 li gp,9 -800001bc: 03df1063 bne t5,t4,800001dc - -800001c0 : -800001c0: 00000093 li ra,0 -800001c4: 00000113 li sp,0 -800001c8: 0220ef33 rem t5,ra,sp -800001cc: 00000e93 li t4,0 -800001d0: 00a00193 li gp,10 -800001d4: 01df1463 bne t5,t4,800001dc -800001d8: 00301c63 bne zero,gp,800001f0 - -800001dc : -800001dc: 0ff0000f fence -800001e0: 00018063 beqz gp,800001e0 -800001e4: 00119193 slli gp,gp,0x1 -800001e8: 0011e193 ori gp,gp,1 -800001ec: 00000073 ecall - -800001f0 : -800001f0: 0ff0000f fence -800001f4: 00100193 li gp,1 -800001f8: 00000073 ecall -800001fc: c0001073 unimp -80000200: 0000 unimp -80000202: 0000 unimp diff --git a/benchmarks/riscv_tests/rv32um-p-remu.dump b/benchmarks/riscv_tests/rv32um-p-remu.dump deleted file mode 100644 index c6cecce4..00000000 --- a/benchmarks/riscv_tests/rv32um-p-remu.dump +++ /dev/null @@ -1,167 +0,0 @@ - -rv32um-p-remu: 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: f1402573 csrr a0,mhartid -80000050: 00051063 bnez a0,80000050 -80000054: 00000297 auipc t0,0x0 -80000058: 01028293 addi t0,t0,16 # 80000064 -8000005c: 30529073 csrw mtvec,t0 -80000060: 18005073 csrwi satp,0 -80000064: 00000297 auipc t0,0x0 -80000068: 02028293 addi t0,t0,32 # 80000084 -8000006c: 30529073 csrw mtvec,t0 -80000070: 800002b7 lui t0,0x80000 -80000074: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> -80000078: 3b029073 csrw pmpaddr0,t0 -8000007c: 01f00293 li t0,31 -80000080: 3a029073 csrw pmpcfg0,t0 -80000084: 00000297 auipc t0,0x0 -80000088: 01828293 addi t0,t0,24 # 8000009c -8000008c: 30529073 csrw mtvec,t0 -80000090: 30205073 csrwi medeleg,0 -80000094: 30305073 csrwi mideleg,0 -80000098: 30405073 csrwi mie,0 -8000009c: 00000193 li gp,0 -800000a0: 00000297 auipc t0,0x0 -800000a4: f6428293 addi t0,t0,-156 # 80000004 -800000a8: 30529073 csrw mtvec,t0 -800000ac: 00100513 li a0,1 -800000b0: 01f51513 slli a0,a0,0x1f -800000b4: 00054863 bltz a0,800000c4 -800000b8: 0ff0000f fence -800000bc: 00100193 li gp,1 -800000c0: 00000073 ecall -800000c4: 80000297 auipc t0,0x80000 -800000c8: f3c28293 addi t0,t0,-196 # 0 <_start-0x80000000> -800000cc: 00028e63 beqz t0,800000e8 -800000d0: 10529073 csrw stvec,t0 -800000d4: 0000b2b7 lui t0,0xb -800000d8: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> -800000dc: 30229073 csrw medeleg,t0 -800000e0: 30202373 csrr t1,medeleg -800000e4: f4629ce3 bne t0,t1,8000003c -800000e8: 30005073 csrwi mstatus,0 -800000ec: 00000297 auipc t0,0x0 -800000f0: 01428293 addi t0,t0,20 # 80000100 -800000f4: 34129073 csrw mepc,t0 -800000f8: f1402573 csrr a0,mhartid -800000fc: 30200073 mret - -80000100 : -80000100: 01400093 li ra,20 -80000104: 00600113 li sp,6 -80000108: 0220ff33 remu t5,ra,sp -8000010c: 00200e93 li t4,2 -80000110: 00200193 li gp,2 -80000114: 0ddf1463 bne t5,t4,800001dc - -80000118 : -80000118: fec00093 li ra,-20 -8000011c: 00600113 li sp,6 -80000120: 0220ff33 remu t5,ra,sp -80000124: 00200e93 li t4,2 -80000128: 00300193 li gp,3 -8000012c: 0bdf1863 bne t5,t4,800001dc - -80000130 : -80000130: 01400093 li ra,20 -80000134: ffa00113 li sp,-6 -80000138: 0220ff33 remu t5,ra,sp -8000013c: 01400e93 li t4,20 -80000140: 00400193 li gp,4 -80000144: 09df1c63 bne t5,t4,800001dc - -80000148 : -80000148: fec00093 li ra,-20 -8000014c: ffa00113 li sp,-6 -80000150: 0220ff33 remu t5,ra,sp -80000154: fec00e93 li t4,-20 -80000158: 00500193 li gp,5 -8000015c: 09df1063 bne t5,t4,800001dc - -80000160 : -80000160: 800000b7 lui ra,0x80000 -80000164: 00100113 li sp,1 -80000168: 0220ff33 remu t5,ra,sp -8000016c: 00000e93 li t4,0 -80000170: 00600193 li gp,6 -80000174: 07df1463 bne t5,t4,800001dc - -80000178 : -80000178: 800000b7 lui ra,0x80000 -8000017c: fff00113 li sp,-1 -80000180: 0220ff33 remu t5,ra,sp -80000184: 80000eb7 lui t4,0x80000 -80000188: 00700193 li gp,7 -8000018c: 05df1863 bne t5,t4,800001dc - -80000190 : -80000190: 800000b7 lui ra,0x80000 -80000194: 00000113 li sp,0 -80000198: 0220ff33 remu t5,ra,sp -8000019c: 80000eb7 lui t4,0x80000 -800001a0: 00800193 li gp,8 -800001a4: 03df1c63 bne t5,t4,800001dc - -800001a8 : -800001a8: 00100093 li ra,1 -800001ac: 00000113 li sp,0 -800001b0: 0220ff33 remu t5,ra,sp -800001b4: 00100e93 li t4,1 -800001b8: 00900193 li gp,9 -800001bc: 03df1063 bne t5,t4,800001dc - -800001c0 : -800001c0: 00000093 li ra,0 -800001c4: 00000113 li sp,0 -800001c8: 0220ff33 remu t5,ra,sp -800001cc: 00000e93 li t4,0 -800001d0: 00a00193 li gp,10 -800001d4: 01df1463 bne t5,t4,800001dc -800001d8: 00301c63 bne zero,gp,800001f0 - -800001dc : -800001dc: 0ff0000f fence -800001e0: 00018063 beqz gp,800001e0 -800001e4: 00119193 slli gp,gp,0x1 -800001e8: 0011e193 ori gp,gp,1 -800001ec: 00000073 ecall - -800001f0 : -800001f0: 0ff0000f fence -800001f4: 00100193 li gp,1 -800001f8: 00000073 ecall -800001fc: c0001073 unimp -80000200: 0000 unimp -80000202: 0000 unimp diff --git a/benchmarks/riscv_tests/testA.hex b/benchmarks/riscv_tests/testA.hex deleted file mode 100644 index 8bb3b24a..00000000 --- a/benchmarks/riscv_tests/testA.hex +++ /dev/null @@ -1,29 +0,0 @@ -:1000000013000000130000001300000013000000A4 -:100010001300000013000000130000009300A00074 -:100020001300000013000000130000001300000084 -:100030001300000013000000130000001301400132 -:100040001300000013000000130000001300000064 -:100050001300000013000000130000009381E00172 -:100060001300000013000000130000001300000044 -:100070001300000013000000130000003382210071 -:100080001300000013000000130000001300000024 -:100090001300000013000000130000009300A000F4 -:1000A000130140019381E00133822100130000001D -:1000B00013000000130000001300000013000000F4 -:1000C00013000000130000001300000013000000E4 -:1000D00013000000130000001300000013000000D4 -:1000E00013000000130000001300000013000000C4 -:1000F00013000000130000001300000013000000B4 -:1001000013000000130000001300000013000000A3 -:100110001300000013000000130000009302100001 -:100120001300000013000000130000001300000083 -:100130001300000013000000130000006F00000413 -:100140001300000013000000130000001300000063 -:100150001300000013000000130000001303200030 -:100160001300000013000000130000001300000043 -:100170001300000013000000130000009303300080 -:100180001300000013000000130000001300000023 -:100190001300000013000000130000009302100081 -:0C01A0006F008000130320009303300068 -:0400000540000000B7 -:00000001FF diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index 490b3e42..ed83f57c 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -59,10 +59,13 @@ module VX_fpu_unit #( assign csr_to_fpu_if.warp_num = fpu_req_if.warp_num; wire [`FRM_BITS-1:0] real_frm = (fpu_req_if.frm == `FRM_DYN) ? csr_to_fpu_if.frm : fpu_req_if.frm; + wire is_class_op_i, is_class_op_o; + assign is_class_op_i = (fpu_req_if.fpu_op == `FPU_CLASS); + reg [FOP_BITS-1:0] fpu_op; reg [`FRM_BITS-1:0] fpu_rnd; reg fpu_op_mod; - reg fflags_en, fflags_en_o; + reg fflags_en, fflags_en_o; always @(*) begin fpu_op = fpnew_pkg::SGNJ; @@ -108,12 +111,10 @@ module VX_fpu_unit #( endcase end -`DISABLE_TRACING - fpnew_top #( .Features (FPU_FEATURES), .Implementation (FPU_IMPLEMENTATION), - .TagType (logic[`LOG2UP(`FPURQ_SIZE)-1+1:0]) + .TagType (logic[`LOG2UP(`FPURQ_SIZE)-1+2:0]) ) fpnew_core ( .clk_i (clk), .rst_ni (1'b1), @@ -125,19 +126,44 @@ module VX_fpu_unit #( .dst_fmt_i (fpu_dst_fmt), .int_fmt_i (fpu_int_fmt), .vectorial_op_i (1'b1), - .tag_i ({fflags_en, fpu_in_tag}), + .tag_i ({fpu_in_tag, fflags_en, is_class_op_i}), .in_valid_i (fpu_in_valid), .in_ready_o (fpu_in_ready), .flush_i (reset), .result_o (fpu_result), .status_o (fpu_status), - .tag_o ({fflags_en_o, fpu_out_tag}), + .tag_o ({fpu_out_tag, fflags_en_o, is_class_op_o}), .out_valid_o (fpu_out_valid), .out_ready_i (fpu_out_ready), `UNUSED_PIN (busy_o) ); -`ENABLE_TRACING + reg [`NUM_THREADS-1:0][31:0] fpu_result_qual; + + always @(8) begin + // unpack classify mask result + if (is_class_op_o) begin + integer i; + for (i = 0; i < `NUM_THREADS; i++) begin + integer l = i / 4; + integer w = i % 4; + integer class_mask = fpu_result[l][w * 8 +: 8]; + + fpu_result_qual[i][0] = class_mask[7] & class_mask[0]; + fpu_result_qual[i][1] = class_mask[7] & class_mask[1]; + fpu_result_qual[i][2] = class_mask[7] & class_mask[2]; + fpu_result_qual[i][3] = class_mask[7] & class_mask[3]; + fpu_result_qual[i][4] = class_mask[6] & class_mask[3]; + fpu_result_qual[i][5] = class_mask[6] & class_mask[2]; + fpu_result_qual[i][6] = class_mask[6] & class_mask[1]; + fpu_result_qual[i][7] = class_mask[6] & class_mask[0]; + fpu_result_qual[i][8] = class_mask[4]; + fpu_result_qual[i][9] = class_mask[5]; + end + end else begin + fpu_result_qual = fpu_result; + end + end assign fpu_in_valid = fpu_req_if.valid; assign fpu_in_tag = fpu_req_if.issue_tag; @@ -146,7 +172,7 @@ module VX_fpu_unit #( assign fpu_commit_if.valid = fpu_out_valid; assign fpu_commit_if.issue_tag = fpu_out_tag; - assign fpu_commit_if.data = fpu_result; + assign fpu_commit_if.data = fpu_result_qual; assign fpu_commit_if.upd_fflags = fflags_en_o; assign fpu_commit_if.fflags_NV = fpu_status.NV; diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 606be34e..830898a9 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -94,11 +94,11 @@ module VX_writeback #( assign mul_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid; assign fpu_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid && !mul_valid; - // special workaround to get RISC-V tests Pass status on Verilator - reg [31:0] last_data_wb [`NUM_REGS-1:0] /* verilator public */; + // special workaround to get RISC-V tests Pass/Fail status + reg [31:0] last_wb_value [`NUM_REGS-1:0] /* verilator public */; always @(posedge clk) begin if (writeback_tmp_if.valid && ~stall) begin - last_data_wb[writeback_tmp_if.rd] <= writeback_tmp_if.data[0]; + last_wb_value[writeback_tmp_if.rd] <= writeback_tmp_if.data[0]; end end diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index 821e3525..90fd338b 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -255,14 +255,11 @@ void Simulator::run() { this->wait(5); } -int Simulator::get_status(int reg) { - // check riscv-tests PASSED/FAILED status - #if (NUM_CLUSTERS == 1 && NUM_CORES == 1) - return (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb[reg]; - #elif (NUM_CLUSTERS == 1) - return (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb[reg]; +int Simulator::get_last_wb_value(int reg) { + #if (NUM_CLUSTERS == 1) + return (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_wb_value[reg]; #else - return (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_data_wb[reg]; + return (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_wb_value[reg]; #endif } diff --git a/hw/simulate/simulator.h b/hw/simulate/simulator.h index 26c29fd6..43052685 100644 --- a/hw/simulate/simulator.h +++ b/hw/simulate/simulator.h @@ -44,7 +44,7 @@ public: void attach_ram(RAM* ram); void run(); - int get_status(int reg); + int get_last_wb_value(int reg); void print_stats(std::ostream& out); private: diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index c1176e37..080a845f 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -9,70 +9,70 @@ int main(int argc, char **argv) #ifdef ALL_TESTS bool passed = true; - std::string tests[] = {/* - "../../../benchmarks/riscv_tests/rv32ui-p-add.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-addi.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-and.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-andi.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-auipc.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-beq.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bge.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bgeu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-blt.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bltu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bne.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-jal.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-jalr.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lb.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lbu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lh.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lhu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lui.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lw.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-or.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-ori.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sb.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sh.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-simple.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sll.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-slli.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-slt.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-slti.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sltiu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sltu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sra.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-srai.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-srl.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-srli.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sub.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sw.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-xor.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-xori.hex", + std::string tests[] = { + "../../../benchmarks/riscv_tests/isa/rv32ui-p-add.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-addi.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-and.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-andi.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-auipc.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-beq.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-bge.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-bgeu.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-blt.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-bltu.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-bne.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-jal.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-jalr.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-lb.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-lbu.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-lh.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-lhu.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-lui.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-lw.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-or.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-ori.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sb.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sh.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-simple.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sll.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-slli.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-slt.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-slti.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sltiu.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sltu.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sra.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-srai.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-srl.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-srli.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sub.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-sw.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-xor.hex", + "../../../benchmarks/riscv_tests/isa/rv32ui-p-xori.hex", #ifdef EXT_M_ENABLE - "../../../benchmarks/riscv_tests/rv32um-p-div.hex", - "../../../benchmarks/riscv_tests/rv32um-p-divu.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mul.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mulh.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mulhsu.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mulhu.hex", - "../../../benchmarks/riscv_tests/rv32um-p-rem.hex", - "../../../benchmarks/riscv_tests/rv32um-p-remu.hex", -#endif*/ + "../../../benchmarks/riscv_tests/isa/rv32um-p-div.hex", + "../../../benchmarks/riscv_tests/isa/rv32um-p-divu.hex", + "../../../benchmarks/riscv_tests/isa/rv32um-p-mul.hex", + "../../../benchmarks/riscv_tests/isa/rv32um-p-mulh.hex", + "../../../benchmarks/riscv_tests/isa/rv32um-p-mulhsu.hex", + "../../../benchmarks/riscv_tests/isa/rv32um-p-mulhu.hex", + "../../../benchmarks/riscv_tests/isa/rv32um-p-rem.hex", + "../../../benchmarks/riscv_tests/isa/rv32um-p-remu.hex", +#endif }; std::string tests_fp[] = { #ifdef EXT_F_ENABLE - //"../../../benchmarks/riscv_tests/rv32uf-p-fadd.hex", - //"../../../benchmarks/riscv_tests/rv32uf-p-fdiv.hex", - //"../../../benchmarks/riscv_tests/rv32uf-p-fmadd.hex", - //"../../../benchmarks/riscv_tests/rv32uf-p-fmin.hex", - //"../../../benchmarks/riscv_tests/rv32uf-p-fcmp.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-fclass.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-ldst.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-fcvt.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-fcvt_w.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-move.hex", - "../../../benchmarks/riscv_tests/rv32uf-p-recoding.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fadd.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fdiv.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fmadd.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fmin.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fcmp.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-ldst.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fcvt.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fcvt_w.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-fclass.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-move.hex", + "../../../benchmarks/riscv_tests/isa/rv32uf-p-recoding.hex", #endif }; @@ -87,7 +87,7 @@ int main(int argc, char **argv) simulator.load_ihex(test.c_str()); simulator.run(); - bool status = (1 == simulator.get_status(28)); + bool status = (1 == simulator.get_last_wb_value(3)); if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; @@ -108,7 +108,7 @@ int main(int argc, char **argv) simulator.load_ihex(test.c_str()); simulator.run(); - bool status = (1 == simulator.get_status(3)); + bool status = (1 == simulator.get_last_wb_value(3)); if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; @@ -128,9 +128,6 @@ int main(int argc, char **argv) #else char test[] = "../../../runtime/tests/simple/vx_simple.hex"; - //char test[] = "../../../benchmarks/riscv_tests/rv32ui-p-lb.hex"; - //char test[] = "../../../benchmarks/riscv_tests/rv32ui-p-lw.hex"; - //char test[] = "../../../benchmarks/riscv_tests/rv32ui-p-sw.hex"; std::cerr << test << std::endl; @@ -140,7 +137,7 @@ int main(int argc, char **argv) simulator.load_ihex(test); simulator.run(); - bool status = (1 == simulator.get_status(28)); + bool status = (1 == simulator.get_last_wb_value(28)); if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; From 8976100025cf676a1221ae7011bfcfc00c4b6103 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 04:19:46 -0400 Subject: [PATCH 17/94] floating point support fixes --- driver/rtlsim/Makefile | 6 +- driver/rtlsim/simulator.cpp | 71 --------- driver/rtlsim/simulator.h | 59 -------- driver/rtlsim/verilator.vlt | 9 ++ hw/rtl/VX_alu_unit.v | 2 +- hw/rtl/VX_commit.v | 16 +-- hw/rtl/VX_csr_arb.v | 4 +- hw/rtl/VX_csr_unit.v | 4 +- hw/rtl/VX_execute.v | 10 +- hw/rtl/VX_fpu_unit.v | 5 + hw/rtl/VX_gpu_unit.v | 6 +- hw/rtl/VX_lsu_unit.v | 28 ++-- hw/rtl/VX_mul_unit.v | 4 +- hw/rtl/VX_pipeline.v | 10 +- hw/rtl/VX_writeback.v | 18 +-- .../{VX_commit_if.v => VX_exu_to_cmt_if.v} | 6 +- hw/simulate/Makefile | 5 +- hw/simulate/testbench.cpp | 2 +- hw/simulate/verilator.vlt | 4 +- hw/syn/yosys/synth.ys | 136 ++++++++++++++++++ 20 files changed, 210 insertions(+), 195 deletions(-) delete mode 100644 driver/rtlsim/simulator.cpp delete mode 100644 driver/rtlsim/simulator.h create mode 100644 driver/rtlsim/verilator.vlt rename hw/rtl/interfaces/{VX_commit_if.v => VX_exu_to_cmt_if.v} (74%) create mode 100644 hw/syn/yosys/synth.ys diff --git a/driver/rtlsim/Makefile b/driver/rtlsim/Makefile index 38fe3d60..c1503a94 100644 --- a/driver/rtlsim/Makefile +++ b/driver/rtlsim/Makefile @@ -21,7 +21,7 @@ DBG_FLAGS += -DDBG_CORE_REQ_INFO #CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=2 -DL2_ENABLE=0 CONFIGS += -DNUM_CLUSTERS=1 -DNUM_CORES=1 -DEBUG=1 +#DEBUG=1 #AFU=1 CFLAGS += -fPIC @@ -35,11 +35,13 @@ TOP = Vortex SRCS = vortex.cpp ../common/vx_utils.cpp ../../hw/simulate/simulator.cpp -RTL_INCLUDE = -I../../hw/rtl -I../../hw/rtl/libs -I../../hw/rtl/interfaces -I../../hw/rtl/cache +FPU_INCLUDE = -I../../hw/rtl/fp_cores/fpnew/src/common_cells/include -I../../hw/rtl/fp_cores/fpnew/src/common_cells/src -I../../hw/rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl -I../../hw/rtl/fp_cores/fpnew/src +RTL_INCLUDE = -I../../hw/rtl -I../../hw/rtl/libs -I../../hw/rtl/interfaces -I../../hw/rtl/cache $(FPU_INCLUDE) VL_FLAGS += --language 1800-2009 --assert -Wall -Wpedantic $(CONFIGS) VL_FLAGS += -Wno-DECLFILENAME VL_FLAGS += --x-initial unique --x-assign unique +VL_FLAGS += verilator.vlt # Enable Verilator multithreaded simulation #THREADS ?= $(shell python3 -c 'import multiprocessing as mp; print(max(1, mp.cpu_count() // 2))') diff --git a/driver/rtlsim/simulator.cpp b/driver/rtlsim/simulator.cpp deleted file mode 100644 index 6ff72603..00000000 --- a/driver/rtlsim/simulator.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "simulator.h" -#include -#include -#include - -uint64_t timestamp = 0; - -double sc_time_stamp() { - return timestamp; -} - -Simulator::Simulator() { - // force random values for unitialized signals - const char* args[] = {"", "+verilator+rand+reset+2", "+verilator+seed+50"}; - Verilated::commandArgs(3, args); - - vortex_ = new Vvortex_afu_sim(); - -#ifdef VCD_OUTPUT - Verilated::traceEverOn(true); - trace_ = new VerilatedVcdC; - trace_->set_time_unit("1ns"); - vortex_->trace(trace_, 99); - trace_->open("trace.vcd"); -#endif -} - -Simulator::~Simulator() { -#ifdef VCD_OUTPUT - trace_->close(); -#endif - delete vortex_; -} - -void Simulator::reset() { -#ifndef NDEBUG - std::cout << timestamp << ": [sim] reset()" << std::endl; -#endif - vortex_->reset = 1; - this->step(); - vortex_->reset = 0; - - dram_rsp_vec_.clear(); -} - -void Simulator::step() { - vortex_->clk = 0; - this->eval(); - - vortex_->clk = 1; - this->eval(); - - avs_driver(); - ccip_driver(); -} - -void Simulator::eval() { - vortex_->eval(); -#ifdef VCD_OUTPUT - trace_->dump(timestamp); -#endif - ++timestamp; -} - -void Simulator::avs_driver() { - //-- -} - - void Simulator::ccip_driver() { - //-- - } \ No newline at end of file diff --git a/driver/rtlsim/simulator.h b/driver/rtlsim/simulator.h deleted file mode 100644 index 50d666d3..00000000 --- a/driver/rtlsim/simulator.h +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once - -#include "Vvortex_afu_sim.h" -#include "Vvortex_afu_sim__Syms.h" -#include "verilated.h" - -#ifdef VCD_OUTPUT -#include -#endif - -#include -#include "ram.h" - -#include -#include - -#define ENABLE_DRAM_STALLS -#define DRAM_LATENCY 100 -#define DRAM_RQ_SIZE 16 -#define DRAM_STALLS_MODULO 16 - -typedef struct { - int cycles_left; - uint8_t *data; - unsigned tag; -} dram_req_t; - -class Simulator { -public: - - Simulator(); - virtual ~Simulator(); - - void reset(); - - void step(); - - int mmio_read(uint64_t addr, uint64_t* value); - - int mmio_write(uint64_t addr, uint64_t value); - -private: - - void eval(); - - void avs_driver(); - - void ccip_driver(); - - std::vector dram_rsp_vec_; - - RAM ram_; - Vvortex_afu_sim *vortex_; - - -#ifdef VCD_OUTPUT - VerilatedVcdC *trace_; -#endif -}; \ No newline at end of file diff --git a/driver/rtlsim/verilator.vlt b/driver/rtlsim/verilator.vlt new file mode 100644 index 00000000..c0cd70d7 --- /dev/null +++ b/driver/rtlsim/verilator.vlt @@ -0,0 +1,9 @@ +`verilator_config + +lint_off -rule BLKANDNBLK -file "../../hw/rtl/fp_cores/fpnew/*" +lint_off -rule UNOPTFLAT -file "../../hw/rtl/fp_cores/fpnew/*" +lint_off -rule WIDTH -file "../../hw/rtl/fp_cores/fpnew/*" +lint_off -rule UNUSED -file "../../hw/rtl/fp_cores/fpnew/*" +lint_off -rule LITENDIAN -file "../../hw/rtl/fp_cores/fpnew/*" +lint_off -rule IMPORTSTAR -file "../../hw/rtl/fp_cores/fpnew/*" +lint_off -rule PINCONNECTEMPTY -file "../../hw/rtl/fp_cores/fpnew/*" \ No newline at end of file diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 13e7b2a1..61867ac2 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -11,7 +11,7 @@ module VX_alu_unit #( // Outputs VX_branch_ctl_if branch_ctl_if, - VX_commit_if alu_commit_if + VX_exu_to_cmt_if alu_commit_if ); reg [`NUM_THREADS-1:0][31:0] alu_result; wire [`NUM_THREADS-1:0][32:0] sub_result; diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index 5e0767bc..2ebe6b06 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -3,16 +3,16 @@ module VX_commit #( parameter CORE_ID = 0 ) ( - input wire clk, - input wire reset, + input wire clk, + input wire reset, // inputs - VX_commit_if alu_commit_if, - VX_commit_if lsu_commit_if, - VX_commit_if mul_commit_if, - VX_commit_if csr_commit_if, + VX_exu_to_cmt_if alu_commit_if, + VX_exu_to_cmt_if lsu_commit_if, + VX_exu_to_cmt_if mul_commit_if, + VX_exu_to_cmt_if csr_commit_if, VX_fpu_to_cmt_if fpu_commit_if, - VX_commit_if gpu_commit_if, + VX_exu_to_cmt_if gpu_commit_if, // outputs VX_cmt_to_issue_if cmt_to_issue_if, @@ -31,7 +31,7 @@ module VX_commit #( wire [`NE_BITS:0] num_commits; - VX_countones #( + VX_countones #( .N(`NUM_EXS) ) valids_counter ( .valids(commited_mask), diff --git a/hw/rtl/VX_csr_arb.v b/hw/rtl/VX_csr_arb.v index 3feb03cc..ed7e7f24 100644 --- a/hw/rtl/VX_csr_arb.v +++ b/hw/rtl/VX_csr_arb.v @@ -12,10 +12,10 @@ module VX_csr_arb ( VX_csr_req_if csr_req_if, // input - VX_commit_if csr_rsp_if, + VX_exu_to_cmt_if csr_rsp_if, // outputs - VX_commit_if csr_commit_if, + VX_exu_to_cmt_if csr_commit_if, VX_csr_io_rsp_if csr_io_rsp_if, input wire select_io_req, diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index 422aa8c3..8e4baf8b 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -13,10 +13,10 @@ module VX_csr_unit #( VX_csr_io_rsp_if csr_io_rsp_if, VX_csr_req_if csr_req_if, - VX_commit_if csr_commit_if + VX_exu_to_cmt_if csr_commit_if ); VX_csr_req_if csr_pipe_req_if(); - VX_commit_if csr_pipe_commit_if(); + VX_exu_to_cmt_if csr_pipe_commit_if(); wire select_io_req = csr_io_req_if.valid; wire select_io_rsp; diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index d622d38f..18947d19 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -31,12 +31,12 @@ module VX_execute #( // outputs VX_branch_ctl_if branch_ctl_if, VX_warp_ctl_if warp_ctl_if, - VX_commit_if alu_commit_if, - VX_commit_if lsu_commit_if, - VX_commit_if csr_commit_if, - VX_commit_if mul_commit_if, + VX_exu_to_cmt_if alu_commit_if, + VX_exu_to_cmt_if lsu_commit_if, + VX_exu_to_cmt_if csr_commit_if, + VX_exu_to_cmt_if mul_commit_if, VX_fpu_to_cmt_if fpu_commit_if, - VX_commit_if gpu_commit_if, + VX_exu_to_cmt_if gpu_commit_if, output wire ebreak ); diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index ed83f57c..f01cbf19 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -111,6 +111,8 @@ module VX_fpu_unit #( endcase end +`DISABLE_TRACING + fpnew_top #( .Features (FPU_FEATURES), .Implementation (FPU_IMPLEMENTATION), @@ -138,6 +140,8 @@ module VX_fpu_unit #( `UNUSED_PIN (busy_o) ); +`ENABLE_TRACING + reg [`NUM_THREADS-1:0][31:0] fpu_result_qual; always @(8) begin @@ -168,6 +172,7 @@ module VX_fpu_unit #( assign fpu_in_valid = fpu_req_if.valid; assign fpu_in_tag = fpu_req_if.issue_tag; + // can accept new request? assign fpu_req_if.ready = fpu_in_ready; assign fpu_commit_if.valid = fpu_out_valid; diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index 208193d6..23439d7d 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -4,11 +4,11 @@ module VX_gpu_unit #( parameter CORE_ID = 0 ) ( // Input - VX_gpu_req_if gpu_req_if, + VX_gpu_req_if gpu_req_if, // Output - VX_warp_ctl_if warp_ctl_if, - VX_commit_if gpu_commit_if + VX_warp_ctl_if warp_ctl_if, + VX_exu_to_cmt_if gpu_commit_if ); wire is_wspawn = (gpu_req_if.gpu_op == `GPU_WSPAWN); diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 7198f97a..3cbfb512 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -9,14 +9,14 @@ module VX_lsu_unit #( input wire reset, // Dcache interface - VX_cache_core_req_if dcache_req_if, - VX_cache_core_rsp_if dcache_rsp_if, + VX_cache_core_req_if dcache_req_if, + VX_cache_core_rsp_if dcache_rsp_if, // inputs - VX_lsu_req_if lsu_req_if, + VX_lsu_req_if lsu_req_if, // outputs - VX_commit_if lsu_commit_if + VX_exu_to_cmt_if lsu_commit_if ); wire use_valid; @@ -61,8 +61,7 @@ module VX_lsu_unit #( assign mem_req_data[i] = lsu_req_if.store_data[i] << {mem_req_offset[i], 3'b0}; end - wire store_stalled; - wire stall_in = store_stalled || ~dcache_req_if.ready; + wire stall_in = ~dcache_req_if.ready; // Can accept new request? assign lsu_req_if.ready = ~stall_in; @@ -124,7 +123,7 @@ module VX_lsu_unit #( end // Core Request - assign dcache_req_if.valid = {`NUM_THREADS{use_valid && ~store_stalled}} & use_thread_mask; + assign dcache_req_if.valid = {`NUM_THREADS{use_valid}} & use_thread_mask; assign dcache_req_if.rw = {`NUM_THREADS{use_req_rw}}; assign dcache_req_if.byteen = use_req_byteen; assign dcache_req_if.addr = use_req_addr; @@ -151,17 +150,14 @@ module VX_lsu_unit #( end wire is_store_rsp = dcache_req_fire && use_req_rw; - wire is_load_rsp = (| dcache_rsp_if.valid) && (0 == mem_rsp_mask_n); - - assign store_stalled = use_req_rw && (~lsu_commit_if.ready - || is_load_rsp); // arbitration prioritizes LOAD + wire is_load_rsp = (| dcache_rsp_if.valid) && (0 == mem_rsp_mask_n); assign lsu_commit_if.valid = is_load_rsp || is_store_rsp; - assign lsu_commit_if.issue_tag = is_load_rsp ? rsp_issue_tag : use_issue_tag; + assign lsu_commit_if.issue_tag = is_store_rsp ? use_issue_tag : rsp_issue_tag; assign lsu_commit_if.data = mem_rsp_data | mem_rsp_data_all; - // Can accept new cache response - assign dcache_rsp_if.ready = lsu_commit_if.ready; + // Can accept new cache response? + assign dcache_rsp_if.ready = lsu_commit_if.ready && ~is_store_rsp; // STORE has priority // scope registration `SCOPE_ASSIGN(scope_dcache_req_valid, dcache_req_if.valid); @@ -187,8 +183,8 @@ module VX_lsu_unit #( `ifdef DBG_PRINT_CORE_DCACHE always @(posedge clk) begin if ((| dcache_req_if.valid) && dcache_req_if.ready) begin - $display("%t: D$%0d req: valid=%b, warp=%0d, PC=%0h, addr=%0h, tag=%0h, rd=%0d, rw=%0b, byteen=%0h, data=%0h", - $time, CORE_ID, dcache_req_if.valid, use_warp_num, use_pc, use_address, dcache_req_if.tag, use_rd, dcache_req_if.rw, dcache_req_if.byteen, dcache_req_if.data); + $display("%t: D$%0d req: warp=%0d, PC=%0h, tmask=%b, addr=%0h, tag=%0h, rd=%0d, rw=%0b, byteen=%0h, data=%0h", + $time, CORE_ID, use_warp_num, use_pc, dcache_req_if.valid, use_address, dcache_req_if.tag, use_rd, dcache_req_if.rw, dcache_req_if.byteen, dcache_req_if.data); end if ((| dcache_rsp_if.valid) && dcache_rsp_if.ready) begin $display("%t: D$%0d rsp: valid=%b, warp=%0d, PC=%0h, tag=%0h, rd=%0d, data=%0h", diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 34744bd0..691f30ae 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -7,10 +7,10 @@ module VX_mul_unit #( input wire reset, // Inputs - VX_mul_req_if alu_req_if, + VX_mul_req_if alu_req_if, // Outputs - VX_commit_if alu_commit_if + VX_exu_to_cmt_if alu_commit_if ); wire [`MUL_BITS-1:0] alu_op = alu_req_if.mul_op; diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index 5e1e46f7..79219a1a 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -116,12 +116,12 @@ module VX_pipeline #( VX_cmt_to_issue_if cmt_to_issue_if(); VX_wstall_if wstall_if(); VX_join_if join_if(); - VX_commit_if alu_commit_if(); - VX_commit_if lsu_commit_if(); - VX_commit_if csr_commit_if(); - VX_commit_if mul_commit_if(); + VX_exu_to_cmt_if alu_commit_if(); + VX_exu_to_cmt_if lsu_commit_if(); + VX_exu_to_cmt_if csr_commit_if(); + VX_exu_to_cmt_if mul_commit_if(); VX_fpu_to_cmt_if fpu_commit_if(); - VX_commit_if gpu_commit_if(); + VX_exu_to_cmt_if gpu_commit_if(); VX_fetch #( .CORE_ID(CORE_ID) diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 830898a9..578391d5 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -3,19 +3,19 @@ module VX_writeback #( parameter CORE_ID = 0 ) ( - input wire clk, - input wire reset, + input wire clk, + input wire reset, // inputs - VX_commit_if alu_commit_if, - VX_commit_if lsu_commit_if, - VX_commit_if mul_commit_if, - VX_fpu_to_cmt_if fpu_commit_if, - VX_commit_if csr_commit_if, - VX_cmt_to_issue_if cmt_to_issue_if, + VX_exu_to_cmt_if alu_commit_if, + VX_exu_to_cmt_if lsu_commit_if, + VX_exu_to_cmt_if mul_commit_if, + VX_fpu_to_cmt_if fpu_commit_if, + VX_exu_to_cmt_if csr_commit_if, + VX_cmt_to_issue_if cmt_to_issue_if, // outputs - VX_wb_if writeback_if + VX_wb_if writeback_if ); wire alu_valid = alu_commit_if.valid && cmt_to_issue_if.alu_data.wb; diff --git a/hw/rtl/interfaces/VX_commit_if.v b/hw/rtl/interfaces/VX_exu_to_cmt_if.v similarity index 74% rename from hw/rtl/interfaces/VX_commit_if.v rename to hw/rtl/interfaces/VX_exu_to_cmt_if.v index c0c60df8..df5d3c14 100644 --- a/hw/rtl/interfaces/VX_commit_if.v +++ b/hw/rtl/interfaces/VX_exu_to_cmt_if.v @@ -1,9 +1,9 @@ -`ifndef VX_COMMIT_IF -`define VX_COMMIT_IF +`ifndef VX_EXU_TO_CMT_IF +`define VX_EXU_TO_CMT_IF `include "VX_define.vh" -interface VX_commit_if (); +interface VX_exu_to_cmt_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index 327d5aa4..7aec5eeb 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -17,9 +17,8 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE DBG_FLAGS += $(DBG_PRINT_FLAGS) #DBG_FLAGS += -DDBG_CORE_REQ_INFO -INCLUDE = -I../rtl/ -I../rtl/libs -I../rtl/interfaces -I../rtl/cache -I../rtl/fp_cores -I../rtl/simulate - -INCLUDE += -I../rtl/fp_cores/fpnew/src/common_cells/include -I../rtl/fp_cores/fpnew/src/common_cells/src -I../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl -I../rtl/fp_cores/fpnew/src +FPU_INCLUDE = -I../rtl/fp_cores/fpnew/src/common_cells/include -I../rtl/fp_cores/fpnew/src/common_cells/src -I../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl -I../rtl/fp_cores/fpnew/src +INCLUDE = -I../rtl/ -I../rtl/libs -I../rtl/interfaces -I../rtl/cache -I../rtl/fp_cores -I../rtl/simulate $(FPU_INCLUDE) SRCS = simulator.cpp testbench.cpp diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index 080a845f..0ba41176 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -137,7 +137,7 @@ int main(int argc, char **argv) simulator.load_ihex(test); simulator.run(); - bool status = (1 == simulator.get_last_wb_value(28)); + bool status = (1 == simulator.get_last_wb_value(3)); if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; diff --git a/hw/simulate/verilator.vlt b/hw/simulate/verilator.vlt index 7e8fdd49..5598b43e 100644 --- a/hw/simulate/verilator.vlt +++ b/hw/simulate/verilator.vlt @@ -6,6 +6,4 @@ lint_off -rule WIDTH -file "../rtl/fp_cores/fpnew/*" lint_off -rule UNUSED -file "../rtl/fp_cores/fpnew/*" lint_off -rule LITENDIAN -file "../rtl/fp_cores/fpnew/*" lint_off -rule IMPORTSTAR -file "../rtl/fp_cores/fpnew/*" -lint_off -rule PINCONNECTEMPTY -file "../rtl/fp_cores/fpnew/*" - -//lint_off -rule CASEINCOMPLETE -file "../rtl/fp_cores/fpnew/*" +lint_off -rule PINCONNECTEMPTY -file "../rtl/fp_cores/fpnew/*" \ No newline at end of file diff --git a/hw/syn/yosys/synth.ys b/hw/syn/yosys/synth.ys new file mode 100644 index 00000000..958f0353 --- /dev/null +++ b/hw/syn/yosys/synth.ys @@ -0,0 +1,136 @@ +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_countones.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_divide.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_encoder_onehot.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_fair_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_fixed_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_generic_queue.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_generic_register.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_generic_stack.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_indexable_queue.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_matrix_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_mult.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_priority_encoder.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_rr_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_scope.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_bank.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_bank_core_req_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_core_req_bank_sel.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_core_rsp_merge.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_dram_fill_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_dram_req_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_miss_resrv.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_prefetcher.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_snp_forwarder.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_snp_rsp_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_tag_data_access.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_tag_data_structure.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_backend_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_branch_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_core_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_core_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_dram_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_dram_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_snp_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_snp_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_csr_io_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_csr_io_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_csr_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_exec_unit_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_gpr_read_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_gpu_inst_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_inst_meta_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_jal_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_join_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_lsu_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_warp_ctl_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_wb_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_wstall_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_alu_unit.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_back_end.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_cluster.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_core.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_csr_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_csr_data.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_csr_io_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_csr_pipe.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_d_e_reg.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_dcache_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_decode.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_exec_unit.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_f_d_reg.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_fetch.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_front_end.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_gpr_ram.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_gpr_stage.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_gpr_wrapper.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_gpu_inst.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_i_d_reg.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_icache_stage.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_inst_multiplex.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_lsu_unit.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_mem_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_mem_unit.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_pipeline.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_scheduler.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_user_config.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_warp.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_warp_sched.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/VX_writeback.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/Vortex.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_bank.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_bank_core_req_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_core_req_bank_sel.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_core_rsp_merge.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_dram_fill_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_dram_req_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_cache_miss_resrv.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_prefetcher.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_snp_forwarder.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_snp_rsp_arb.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_tag_data_access.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/cache/VX_tag_data_structure.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_backend_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_branch_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_core_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_core_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_dram_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_dram_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_snp_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_cache_snp_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_csr_io_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_csr_io_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_csr_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_exec_unit_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_gpr_read_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_gpu_inst_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_inst_meta_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_jal_rsp_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_join_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_lsu_req_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_warp_ctl_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_wb_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/interfaces/VX_wstall_if.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_countones.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_divide.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_encoder_onehot.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_fair_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_fixed_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_generic_queue.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_generic_register.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_generic_stack.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_indexable_queue.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_matrix_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_mult.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_priority_encoder.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_rr_arbiter.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/libs/VX_scope.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/tex_unit/VX_tex_mgr.v +read_verilog -sv -I../../rtl/libs -I../../rtl/cache -I../../rtl/interfaces -I../../rtl ../../rtl/tex_unit/VX_tex_unit.v +hierarchy -check -top Vortex +add -global_input reset 1 +proc -global_arst reset +synth -run coarse; opt -fine +tee -o brams.log memory_bram -rules scripts/brams.txt;; +write_verilog -noexpr -noattr synth.v From 6a9504422fc83383bf8daf647f5d3559e1667818 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 05:52:28 -0400 Subject: [PATCH 18/94] minor update --- hw/rtl/VX_define.vh | 1 + hw/rtl/VX_lsu_unit.v | 85 ++++++++++++++++++++++++-------------------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 3a1d2e04..66a65a90 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -125,6 +125,7 @@ `define BYTEEN_UB 3'h4 `define BYTEEN_UH 3'h5 `define BYTEEN_BITS 3 +`define BYTEEN_TYPE(x) x[1:0] `define BR_EQ 4'h0 `define BR_NE 4'h1 diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 3cbfb512..2074d44e 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -26,7 +26,7 @@ module VX_lsu_unit #( wire [`NUM_THREADS-1:0][1:0] use_req_offset; wire [`NUM_THREADS-1:0][3:0] use_req_byteen; wire [`NUM_THREADS-1:0][31:0] use_req_data; - wire [`BYTEEN_BITS-1:0] use_req_fullbyteen; + wire [1:0] use_req_sext; wire [`NR_BITS-1:0] use_rd; wire [`NW_BITS-1:0] use_warp_num; wire [`ISTAG_BITS-1:0] use_issue_tag; @@ -40,20 +40,29 @@ module VX_lsu_unit #( assign full_address[i] = lsu_req_if.base_addr[i] + lsu_req_if.offset; end - reg [3:0] wmask; + reg [1:0] mem_req_sext; always @(*) begin case (lsu_req_if.byteen) - 0: wmask = 4'b0001; - 1: wmask = 4'b0011; - default: wmask = 4'b1111; + `BYTEEN_SB: mem_req_sext = 2'h1; + `BYTEEN_SH: mem_req_sext = 2'h2; + default: mem_req_sext = 2'h0; endcase end wire [`NUM_THREADS-1:0][29:0] mem_req_addr; wire [`NUM_THREADS-1:0][1:0] mem_req_offset; - wire [`NUM_THREADS-1:0][3:0] mem_req_byteen; + wire [`NUM_THREADS-1:0][3:0] mem_req_byteen; wire [`NUM_THREADS-1:0][31:0] mem_req_data; + reg [3:0] wmask; + always @(*) begin + case (`BYTEEN_TYPE(lsu_req_if.byteen)) + 0: wmask = 4'b0001; + 1: wmask = 4'b0011; + default: wmask = 4'b1111; + endcase + end + for (i = 0; i < `NUM_THREADS; i++) begin assign mem_req_addr[i] = full_address[i][31:2]; assign mem_req_offset[i] = full_address[i][1:0]; @@ -71,35 +80,35 @@ module VX_lsu_unit #( `IGNORE_WARNINGS_END VX_generic_register #( - .N(1 + `NW_BITS + `NUM_THREADS + `ISTAG_BITS + (`NUM_THREADS * 32) + `BYTEEN_BITS + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + 1 + 32) + .N(1 + `NW_BITS + `NUM_THREADS + `ISTAG_BITS + (`NUM_THREADS * 32) + 2 + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + 1 + 32) ) lsu_req_reg ( .clk (clk), .reset (reset), .stall (stall_in), .flush (0), - .in ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.thread_mask, lsu_req_if.issue_tag, full_address, lsu_req_if.byteen, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.wb, lsu_req_if.curr_PC}), - .out ({use_valid, use_warp_num, use_thread_mask, use_issue_tag, use_address, use_req_fullbyteen, use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd, use_wb, use_pc}) + .in ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.thread_mask, lsu_req_if.issue_tag, full_address, mem_req_sext, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.wb, lsu_req_if.curr_PC}), + .out ({use_valid, use_warp_num, use_thread_mask, use_issue_tag, use_address, use_req_sext, use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd, use_wb, use_pc}) ); - reg [`NUM_THREADS-1:0] mem_rsp_mask_buf [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0] mem_rsp_mask_buf [`ISSUEQ_SIZE-1:0]; reg [`NUM_THREADS-1:0][1:0] mem_rsp_offset_buf [`ISSUEQ_SIZE-1:0]; - reg [`BYTEEN_BITS-1:0] mem_rsp_fullbyteen_buf [`ISSUEQ_SIZE-1:0]; + reg [1:0] mem_rsp_sext_buf [`ISSUEQ_SIZE-1:0]; reg [`NUM_THREADS-1:0][31:0] mem_rsp_data_all_buf [`ISSUEQ_SIZE-1:0]; - reg [`NW_BITS-1:0] mem_rsp_warp_num_buf [`ISSUEQ_SIZE-1:0]; - reg [31:0] mem_rsp_curr_PC_buf [`ISSUEQ_SIZE-1:0]; - reg [`NR_BITS-1:0] mem_rsp_rd_buf [`ISSUEQ_SIZE-1:0]; + reg [`NW_BITS-1:0] mem_rsp_warp_num_buf [`ISSUEQ_SIZE-1:0]; + reg [31:0] mem_rsp_curr_PC_buf [`ISSUEQ_SIZE-1:0]; + reg [`NR_BITS-1:0] mem_rsp_rd_buf [`ISSUEQ_SIZE-1:0]; - reg [`NUM_THREADS-1:0][31:0] mem_rsp_data; + reg [`NUM_THREADS-1:0][31:0] mem_rsp_data_curr; wire [`ISTAG_BITS-1:0] rsp_issue_tag = dcache_rsp_if.tag[0][`ISTAG_BITS-1:0]; - wire [`NUM_THREADS-1:0] mem_rsp_mask = mem_rsp_mask_buf [rsp_issue_tag]; - wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset = mem_rsp_offset_buf [rsp_issue_tag]; - wire [`BYTEEN_BITS-1:0] mem_rsp_fullbyteen = mem_rsp_fullbyteen_buf [rsp_issue_tag]; + wire [`NUM_THREADS-1:0] mem_rsp_mask = mem_rsp_mask_buf [rsp_issue_tag]; + wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset = mem_rsp_offset_buf [rsp_issue_tag]; + wire [1:0] mem_rsp_sext = mem_rsp_sext_buf [rsp_issue_tag]; wire [`NUM_THREADS-1:0][31:0] mem_rsp_data_all = mem_rsp_data_all_buf [rsp_issue_tag]; - wire [`NW_BITS-1:0] mem_rsp_warp_num = mem_rsp_warp_num_buf [rsp_issue_tag]; - wire [31:0] mem_rsp_curr_PC = mem_rsp_curr_PC_buf [rsp_issue_tag]; - wire [`NR_BITS-1:0] mem_rsp_rd = mem_rsp_rd_buf [rsp_issue_tag]; + wire [`NW_BITS-1:0] mem_rsp_warp_num = mem_rsp_warp_num_buf [rsp_issue_tag]; + wire [31:0] mem_rsp_curr_PC = mem_rsp_curr_PC_buf [rsp_issue_tag]; + wire [`NR_BITS-1:0] mem_rsp_rd = mem_rsp_rd_buf [rsp_issue_tag]; wire [`NUM_THREADS-1:0] mem_rsp_mask_n = mem_rsp_mask & ~dcache_rsp_if.valid; @@ -108,17 +117,17 @@ module VX_lsu_unit #( always @(posedge clk) begin if (dcache_req_fire && (0 == use_req_rw)) begin - mem_rsp_mask_buf[use_issue_tag] <= use_thread_mask; - mem_rsp_offset_buf[use_issue_tag] <= use_req_offset; - mem_rsp_fullbyteen_buf[use_issue_tag] <= use_req_fullbyteen; - mem_rsp_data_all_buf[use_issue_tag] <= 0; - mem_rsp_warp_num_buf[use_issue_tag] <= use_warp_num; - mem_rsp_curr_PC_buf[use_issue_tag] <= use_pc; - mem_rsp_rd_buf[use_issue_tag] <= use_rd; + mem_rsp_mask_buf [use_issue_tag] <= use_thread_mask; + mem_rsp_offset_buf [use_issue_tag] <= use_req_offset; + mem_rsp_sext_buf [use_issue_tag] <= use_req_sext; + mem_rsp_data_all_buf [use_issue_tag] <= 0; + mem_rsp_warp_num_buf [use_issue_tag] <= use_warp_num; + mem_rsp_curr_PC_buf [use_issue_tag] <= use_pc; + mem_rsp_rd_buf [use_issue_tag] <= use_rd; end if (dcache_rsp_fire) begin - mem_rsp_mask_buf[rsp_issue_tag] <= mem_rsp_mask_n; - mem_rsp_data_all_buf[rsp_issue_tag] <= mem_rsp_data_all | mem_rsp_data; + mem_rsp_mask_buf [rsp_issue_tag] <= mem_rsp_mask_n; + mem_rsp_data_all_buf [rsp_issue_tag] <= mem_rsp_data_all | mem_rsp_data_curr; end end @@ -137,16 +146,14 @@ module VX_lsu_unit #( // Core Response for (i = 0; i < `NUM_THREADS; i++) begin - wire [15:0] rsp_data_shifted = 16'(dcache_rsp_if.data[i] >> {mem_rsp_offset[i], 3'b0}); + wire [31:0] rsp_data_shifted = dcache_rsp_if.data[i] >> {mem_rsp_offset[i], 3'b0}; always @(*) begin - case (mem_rsp_fullbyteen) - `BYTEEN_SB: mem_rsp_data[i] = {{24{rsp_data_shifted[7]}}, rsp_data_shifted[7:0]}; - `BYTEEN_UB: mem_rsp_data[i] = 32'(rsp_data_shifted[7:0]); - `BYTEEN_SH: mem_rsp_data[i] = {{16{rsp_data_shifted[15]}}, rsp_data_shifted[15:0]}; - `BYTEEN_UH: mem_rsp_data[i] = 32'(rsp_data_shifted[15:0]); - default: mem_rsp_data[i] = dcache_rsp_if.data[i]; + case (mem_rsp_sext) + 1: mem_rsp_data_curr[i] = {{24{rsp_data_shifted[7]}}, rsp_data_shifted[7:0]}; + 2: mem_rsp_data_curr[i] = {{16{rsp_data_shifted[15]}}, rsp_data_shifted[15:0]}; + default: mem_rsp_data_curr[i] = rsp_data_shifted; endcase - end + end end wire is_store_rsp = dcache_req_fire && use_req_rw; @@ -154,7 +161,7 @@ module VX_lsu_unit #( assign lsu_commit_if.valid = is_load_rsp || is_store_rsp; assign lsu_commit_if.issue_tag = is_store_rsp ? use_issue_tag : rsp_issue_tag; - assign lsu_commit_if.data = mem_rsp_data | mem_rsp_data_all; + assign lsu_commit_if.data = mem_rsp_data_curr | mem_rsp_data_all; // Can accept new cache response? assign dcache_rsp_if.ready = lsu_commit_if.ready && ~is_store_rsp; // STORE has priority From f3721c523fa098445fa3e96eebd10744bdc2b223 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 06:02:32 -0400 Subject: [PATCH 19/94] minor update --- hw/rtl/libs/VX_multiplier.v | 76 +++++++++++++++++++++++++++++++++ hw/rtl/libs/VX_shift_register.v | 50 ++++++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 hw/rtl/libs/VX_multiplier.v create mode 100644 hw/rtl/libs/VX_shift_register.v diff --git a/hw/rtl/libs/VX_multiplier.v b/hw/rtl/libs/VX_multiplier.v new file mode 100644 index 00000000..c5def2ae --- /dev/null +++ b/hw/rtl/libs/VX_multiplier.v @@ -0,0 +1,76 @@ +`include "VX_define.vh" + +module VX_multiplier #( + parameter WIDTHA = 1, + parameter WIDTHB = 1, + parameter WIDTHP = 1, + parameter SIGNED = 0, + parameter PIPELINE = 0 +) ( + input wire clk, + input wire reset, + + input wire clk_en, + input wire [WIDTHA-1:0] dataa, + input wire [WIDTHB-1:0] datab, + output wire [WIDTHP-1:0] result +); + +`ifdef QUARTUS + + lpm_mult quartus_mult ( + .clock (clk), + .dataa (dataa), + .datab (datab), + .result (result), + .sclr (reset), + .aclr (1'b0), + .clken (clk_en), + .sum (1'b0) + ); + + defparam quartus_mult.lpm_type = "LPM_MULT", + quartus_mult.lpm_widtha = WIDTHA, + quartus_mult.lpm_widthb = WIDTHB, + quartus_mult.lpm_widthp = WIDTHP, + quartus_mult.lpm_representation = SIGNED ? "SIGNED" : "UNSIGNED", + quartus_mult.lpm_pipeline = PIPELINE, + quartus_mult.lpm_hint = "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9"; +`else + + wire [WIDTHP-1:0] result_unqual; + + if (SIGNED) begin + assign result_unqual = $signed(dataa) * $signed(datab); + end else begin + assign result_unqual = dataa * datab; + end + + if (PIPELINE == 0) begin + assign result = result_unqual; + end else begin + + reg [WIDTHP-1:0] result_pipe [0:PIPELINE-1]; + + genvar i; + for (i = 0; i < PIPELINE; i++) begin + always @(posedge clk) begin + if (reset) begin + result_pipe[i] <= 0; + end + else if (clk_en) begin + if (i == 0) begin + result_pipe[i] <= result_unqual; + end else begin + result_pipe[i] <= result_pipe[i-1]; + end + end + end + end + + assign result = result_pipe[PIPELINE-1]; + end + +`endif + +endmodule \ No newline at end of file diff --git a/hw/rtl/libs/VX_shift_register.v b/hw/rtl/libs/VX_shift_register.v new file mode 100644 index 00000000..46ca494c --- /dev/null +++ b/hw/rtl/libs/VX_shift_register.v @@ -0,0 +1,50 @@ +`include "VX_define.vh" + +module VX_shift_register #( + parameter DATAW = 1, + parameter DEPTH = 0 +) ( + input wire clk, + input wire reset, + input wire enable, + input wire [DATAW-1:0] in, + output wire [DATAW-1:0] out +); + if (0 == DEPTH) begin + + assign out = in; + + end if (1 == DEPTH) begin + + reg [DATAW-1:0] ram; + + always @(posedge clk) begin + if (reset) begin + ram <= '0; + end else begin + if (enable) begin + ram <= in; + end + end + end + + assign out = ram; + + end else begin + + reg [DEPTH-1:0][DATAW-1:0] ram; + + always @(posedge clk) begin + if (reset) begin + ram <= '0; + end else begin + if (enable) begin + ram <= {ram[DEPTH-2:0], in}; + end + end + end + + assign out = ram [DEPTH-1]; + end + +endmodule \ No newline at end of file From 7415c2ecca0336dbf3752265f2f91bcf55121944 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 06:03:59 -0400 Subject: [PATCH 20/94] minor update --- hw/rtl/VX_issue_demux.v | 80 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 hw/rtl/VX_issue_demux.v diff --git a/hw/rtl/VX_issue_demux.v b/hw/rtl/VX_issue_demux.v new file mode 100644 index 00000000..1c10dbb3 --- /dev/null +++ b/hw/rtl/VX_issue_demux.v @@ -0,0 +1,80 @@ +`include "VX_define.vh" + +module VX_issue_demux ( + // inputs + VX_decode_if decode_if, + VX_gpr_read_if gpr_read_if, + input wire [`ISTAG_BITS-1:0] issue_tag, + + // outputs + VX_alu_req_if alu_req_if, + VX_lsu_req_if lsu_req_if, + VX_csr_req_if csr_req_if, + VX_mul_req_if mul_req_if, + VX_fpu_req_if fpu_req_if, + VX_gpu_req_if gpu_req_if +); + // ALU unit + assign alu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_ALU); + assign alu_req_if.thread_mask = decode_if.thread_mask; + assign alu_req_if.issue_tag = issue_tag; + assign alu_req_if.warp_num = decode_if.warp_num; + assign alu_req_if.curr_PC = decode_if.curr_PC; + assign alu_req_if.alu_op = `ALU_OP(decode_if.ex_op); + assign alu_req_if.rs1_data = decode_if.rs1_is_PC ? {`NUM_THREADS{decode_if.curr_PC}} : gpr_read_if.rs1_data; + assign alu_req_if.rs2_data = decode_if.rs2_is_imm ? {`NUM_THREADS{decode_if.imm}} : gpr_read_if.rs2_data; + assign alu_req_if.offset = decode_if.imm; + assign alu_req_if.next_PC = decode_if.next_PC; + + // LSU unit + assign lsu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_LSU); + assign lsu_req_if.thread_mask = decode_if.thread_mask; + assign lsu_req_if.issue_tag = issue_tag; + assign lsu_req_if.warp_num = decode_if.warp_num; + assign lsu_req_if.curr_PC = decode_if.curr_PC; + assign lsu_req_if.base_addr = gpr_read_if.rs1_data; + assign lsu_req_if.store_data = gpr_read_if.rs2_data; + assign lsu_req_if.offset = decode_if.imm; + assign lsu_req_if.rw = `LSU_RW(decode_if.ex_op); + assign lsu_req_if.byteen = `LSU_BE(decode_if.ex_op); + assign lsu_req_if.rd = decode_if.rd; + assign lsu_req_if.wb = decode_if.wb; + + // CSR unit + assign csr_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_CSR); + assign csr_req_if.issue_tag = issue_tag; + assign csr_req_if.warp_num = decode_if.warp_num; + assign csr_req_if.curr_PC = decode_if.curr_PC; + assign csr_req_if.csr_op = `CSR_OP(decode_if.ex_op); + assign csr_req_if.csr_addr = decode_if.imm[`CSR_ADDR_SIZE-1:0]; + assign csr_req_if.csr_mask = decode_if.rs2_is_imm ? 32'(decode_if.rs1) : gpr_read_if.rs1_data[0]; + assign csr_req_if.is_io = 1'b0; + + // MUL unit + assign mul_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_MUL); + assign mul_req_if.issue_tag = issue_tag; + assign mul_req_if.mul_op = `MUL_OP(decode_if.ex_op); + assign mul_req_if.rs1_data = gpr_read_if.rs1_data; + assign mul_req_if.rs2_data = gpr_read_if.rs2_data; + + // FPU unit + assign fpu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_FPU); + assign fpu_req_if.issue_tag = issue_tag; + assign fpu_req_if.warp_num = decode_if.warp_num; + assign fpu_req_if.fpu_op = `FPU_OP(decode_if.ex_op); + assign fpu_req_if.rs1_data = gpr_read_if.rs1_data; + assign fpu_req_if.rs2_data = gpr_read_if.rs2_data; + assign fpu_req_if.rs3_data = gpr_read_if.rs3_data; + assign fpu_req_if.frm = decode_if.frm; + + // GPU unit + assign gpu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_GPU); + assign gpu_req_if.thread_mask = decode_if.thread_mask; + assign gpu_req_if.issue_tag = issue_tag; + assign gpu_req_if.warp_num = decode_if.warp_num; + assign gpu_req_if.gpu_op = `GPU_OP(decode_if.ex_op); + assign gpu_req_if.rs1_data = gpr_read_if.rs1_data; + assign gpu_req_if.rs2_data = gpr_read_if.rs2_data[0]; + assign gpu_req_if.next_PC = decode_if.next_PC; + +endmodule \ No newline at end of file From 1c9846d10b2f7776f716675584b571202dcf2a39 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 03:20:20 -0700 Subject: [PATCH 21/94] delete sources.txt --- hw/opae/Makefile | 12 +++---- hw/opae/sources.txt | 81 --------------------------------------------- 2 files changed, 6 insertions(+), 87 deletions(-) delete mode 100644 hw/opae/sources.txt diff --git a/hw/opae/Makefile b/hw/opae/Makefile index 339f9d37..587bb5d7 100644 --- a/hw/opae/Makefile +++ b/hw/opae/Makefile @@ -65,20 +65,20 @@ run-ase-4c: cd $(ASE_BUILD_DIR)_4c && make sim clean-ase-1c: - rm -rf $(ASE_BUILD_DIR)_1c + rm -rf $(ASE_BUILD_DIR)_1c sources.txt clean-ase-2c: - rm -rf $(ASE_BUILD_DIR)_2c + rm -rf $(ASE_BUILD_DIR)_2c sources.txt clean-ase-4c: - rm -rf $(ASE_BUILD_DIR)_4c + rm -rf $(ASE_BUILD_DIR)_4c sources.txt clean-fpga-1c: - rm -rf $(FPGA_BUILD_DIR)_1c + rm -rf $(FPGA_BUILD_DIR)_1c sources.txt clean-fpga-2c: - rm -rf $(FPGA_BUILD_DIR)_2c + rm -rf $(FPGA_BUILD_DIR)_2c sources.txt clean-fpga-4c: - rm -rf $(FPGA_BUILD_DIR)_4c + rm -rf $(FPGA_BUILD_DIR)_4c sources.txt diff --git a/hw/opae/sources.txt b/hw/opae/sources.txt deleted file mode 100644 index ae14d127..00000000 --- a/hw/opae/sources.txt +++ /dev/null @@ -1,81 +0,0 @@ -+incdir+../rtl/libs -../rtl/libs/VX_countones.v -../rtl/libs/VX_divide.v -../rtl/libs/VX_fair_arbiter.v -../rtl/libs/VX_fixed_arbiter.v -../rtl/libs/VX_generic_queue.v -../rtl/libs/VX_generic_register.v -../rtl/libs/VX_generic_stack.v -../rtl/libs/VX_index_queue.v -../rtl/libs/VX_matrix_arbiter.v -../rtl/libs/VX_mult.v -../rtl/libs/VX_priority_encoder.v -../rtl/libs/VX_rr_arbiter.v -../rtl/libs/VX_onehot_encooder.v -+incdir+../rtl/cache -../rtl/cache/VX_bank.v -../rtl/cache/VX_bank_core_req_arb.v -../rtl/cache/VX_cache.v -../rtl/cache/VX_cache_core_req_bank_sel.v -../rtl/cache/VX_cache_core_rsp_merge.v -../rtl/cache/VX_cache_dram_fill_arb.v -../rtl/cache/VX_cache_dram_req_arb.v -../rtl/cache/VX_cache_miss_resrv.v -../rtl/cache/VX_prefetcher.v -../rtl/cache/VX_snp_forwarder.v -../rtl/cache/VX_snp_rsp_arb.v -../rtl/cache/VX_tag_data_access.v -../rtl/cache/VX_tag_data_structure.v -+incdir+../rtl/interfaces -../rtl/interfaces/VX_alu_req_if.v -../rtl/interfaces/VX_branch_ctl_if.v -../rtl/interfaces/VX_cache_core_req_if.v -../rtl/interfaces/VX_cache_core_rsp_if.v -../rtl/interfaces/VX_cache_dram_req_if.v -../rtl/interfaces/VX_cache_dram_rsp_if.v -../rtl/interfaces/VX_cache_snp_req_if.v -../rtl/interfaces/VX_cache_snp_rsp_if.v -../rtl/interfaces/VX_csr_req_if.v -../rtl/interfaces/VX_commit_if.v -../rtl/interfaces/VX_csr_io_req_if.v -../rtl/interfaces/VX_decode_if.v -../rtl/interfaces/VX_gpr_data_if.v -../rtl/interfaces/VX_gpu_req_if.v -../rtl/interfaces/VX_join_if.v -../rtl/interfaces/VX_lsu_req_if.v -../rtl/interfaces/VX_warp_ctl_if.v -../rtl/interfaces/VX_wb_if.v -../rtl/interfaces/VX_wstall_if.v -../rtl/interfaces/VX_csr_io_rsp_if.v -../rtl/interfaces/VX_ifetch_req_if.v -../rtl/interfaces/VX_ifetch_rsp_if.v -../rtl/interfaces/VX_mul_req_if.v -../rtl/interfaces/VX_perf_cntrs_if.v -+incdir+../rtl -../rtl/VX_alu_unit.v -../rtl/VX_commit.v -../rtl/VX_cluster.v -../rtl/VX_core.v -../rtl/VX_csr_data.v -../rtl/VX_csr_arb.v -../rtl/VX_dcache_arb.v -../rtl/VX_decode.v -../rtl/VX_csr_io_arb.v -../rtl/VX_fetch.v -../rtl/VX_csr_unit.v -../rtl/VX_gpr_ram.v -../rtl/VX_gpr_stage.v -../rtl/VX_execute.v -../rtl/VX_gpu_unit.v -../rtl/VX_icache_stage.v -../rtl/VX_issue.v -../rtl/VX_lsu_unit.v -../rtl/VX_mem_arb.v -../rtl/VX_mem_unit.v -../rtl/VX_pipeline.v -../rtl/VX_scheduler.v -../rtl/VX_issue_mux.v -../rtl/VX_warp_sched.v -../rtl/VX_writeback.v -../rtl/Vortex.v -../rtl/VX_mul_unit.v From 7fc7bc0cabea2697351d7b7cf9aae6a42de7dea7 Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Tue, 28 Jul 2020 16:04:27 -0400 Subject: [PATCH 22/94] Runtime tests and riscv tests are runnable --- hw/simulate/Makefile | 2 +- hw/simulate/testbench.cpp | 177 +++++++++++++++++----------------- runtime/tests/dev/Makefile | 3 + runtime/tests/hello/Makefile | 3 + runtime/tests/nlTest/Makefile | 3 + runtime/tests/simple/Makefile | 5 +- runtime/tests/vecadd/Makefile | 3 + 7 files changed, 105 insertions(+), 91 deletions(-) diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index 7b665714..6c4f9ef0 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -89,4 +89,4 @@ run-mt: build-mt (cd obj_dir && ./VVortex) clean: - rm -rf obj_dir \ No newline at end of file + rm -rf obj_dir diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index d037fc18..59fa6edc 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -3,104 +3,103 @@ #include #include -int main(int argc, char **argv) +int main(int argc, char *argv[]) { //#define ALL_TESTS -#ifdef ALL_TESTS - bool passed = true; +//#ifdef ALL_TESTS + if(argc == 1) { + bool passed = true; - std::string tests[] = { - "../../../benchmarks/riscv_tests/rv32ui-p-add.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-addi.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-and.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-andi.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-auipc.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-beq.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bge.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bgeu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-blt.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bltu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-bne.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-jal.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-jalr.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lb.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lbu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lh.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lhu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lui.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-lw.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-or.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-ori.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sb.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sh.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-simple.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sll.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-slli.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-slt.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-slti.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sltiu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sltu.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sra.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-srai.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-srl.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-srli.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sub.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-sw.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-xor.hex", - "../../../benchmarks/riscv_tests/rv32ui-p-xori.hex", - "../../../benchmarks/riscv_tests/rv32um-p-div.hex", - "../../../benchmarks/riscv_tests/rv32um-p-divu.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mul.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mulh.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mulhsu.hex", - "../../../benchmarks/riscv_tests/rv32um-p-mulhu.hex", - "../../../benchmarks/riscv_tests/rv32um-p-rem.hex", - "../../../benchmarks/riscv_tests/rv32um-p-remu.hex" - }; + std::string tests[] = { + "../../../benchmarks/riscv_tests/rv32ui-p-add.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-addi.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-and.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-andi.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-auipc.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-beq.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-bge.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-bgeu.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-blt.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-bltu.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-bne.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-jal.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-jalr.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-lb.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-lbu.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-lh.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-lhu.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-lui.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-lw.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-or.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-ori.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sb.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sh.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-simple.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sll.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-slli.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-slt.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-slti.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sltiu.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sltu.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sra.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-srai.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-srl.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-srli.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sub.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-sw.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-xor.hex", + "../../../benchmarks/riscv_tests/rv32ui-p-xori.hex", + "../../../benchmarks/riscv_tests/rv32um-p-div.hex", + "../../../benchmarks/riscv_tests/rv32um-p-divu.hex", + "../../../benchmarks/riscv_tests/rv32um-p-mul.hex", + "../../../benchmarks/riscv_tests/rv32um-p-mulh.hex", + "../../../benchmarks/riscv_tests/rv32um-p-mulhsu.hex", + "../../../benchmarks/riscv_tests/rv32um-p-mulhu.hex", + "../../../benchmarks/riscv_tests/rv32um-p-rem.hex", + "../../../benchmarks/riscv_tests/rv32um-p-remu.hex" + }; - for (std::string test : tests) { - std::cerr << DEFAULT << "\n---------------------------------------\n"; + for (std::string test : tests) { + std::cerr << DEFAULT << "\n---------------------------------------\n"; - std::cerr << test << std::endl; + std::cerr << test << std::endl; - RAM ram; - Simulator simulator; - simulator.attach_ram(&ram); - simulator.load_ihex(test.c_str()); - bool curr = simulator.run(); + RAM ram; + Simulator simulator; + simulator.attach_ram(&ram); + simulator.load_ihex(test.c_str()); + bool curr = simulator.run(); - if (curr) std::cerr << GREEN << "Test Passed: " << test << std::endl; - if (!curr) std::cerr << RED << "Test Failed: " << test << std::endl; - std::cerr << DEFAULT; - passed = passed && curr; + if (curr) std::cerr << GREEN << "Test Passed: " << test << std::endl; + if (!curr) std::cerr << RED << "Test Failed: " << test << std::endl; + std::cerr << DEFAULT; + passed = passed && curr; + } + + std::cerr << DEFAULT << "\n***************************************\n"; + + if (passed) std::cerr << DEFAULT << "PASSED ALL TESTS\n"; + if (!passed) std::cerr << DEFAULT << "Failed one or more tests\n"; + + return !passed; } - std::cerr << DEFAULT << "\n***************************************\n"; +//#else + if (argc >= 2) { + char* test = argv[2]; + + std::cerr << test << std::endl; - if (passed) std::cerr << DEFAULT << "PASSED ALL TESTS\n"; - if (!passed) std::cerr << DEFAULT << "Failed one or more tests\n"; + RAM ram; + Simulator simulator; + simulator.attach_ram(&ram); + simulator.load_ihex(test); + bool curr = simulator.run(); - return !passed; + if (curr) std::cerr << GREEN << "Test Passed: " << test << std::endl; + if (!curr) std::cerr << RED << "Test Failed: " << test << std::endl; -#else - - char test[] = "../../../runtime/tests/simple/vx_simple.hex"; - //char test[] = "../../../benchmarks/riscv_tests/rv32ui-p-lb.hex"; - //char test[] = "../../../benchmarks/riscv_tests/rv32ui-p-lw.hex"; - //char test[] = "../../../benchmarks/riscv_tests/rv32ui-p-sw.hex"; - - std::cerr << test << std::endl; - - RAM ram; - Simulator simulator; - simulator.attach_ram(&ram); - simulator.load_ihex(test); - bool curr = simulator.run(); - - if (curr) std::cerr << GREEN << "Test Passed: " << test << std::endl; - if (!curr) std::cerr << RED << "Test Failed: " << test << std::endl; - - return !curr; - -#endif -} \ No newline at end of file + return !curr; + } +//#endif +} diff --git a/runtime/tests/dev/Makefile b/runtime/tests/dev/Makefile index a6faf9bd..f0f4719b 100644 --- a/runtime/tests/dev/Makefile +++ b/runtime/tests/dev/Makefile @@ -27,6 +27,9 @@ $(PROJECT).hex: $(PROJECT).elf $(PROJECT).elf: $(SRCS) $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf +run: $(PROJECT).hex + (cd ../../../hw/simulate/obj_dir && ./VVortex -f ../../../runtime/tests/dev/$(PROJECT).hex) + .depend: $(SRCS) $(CC) $(CFLAGS) -MM $^ > .depend; diff --git a/runtime/tests/hello/Makefile b/runtime/tests/hello/Makefile index 3f7b6ea8..01b2edd4 100644 --- a/runtime/tests/hello/Makefile +++ b/runtime/tests/hello/Makefile @@ -27,6 +27,9 @@ $(PROJECT).hex: $(PROJECT).elf $(PROJECT).elf: $(SRCS) $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf +run: $(PROJECT).hex + (cd ../../../hw/simulate/obj_dir && ./VVortex -f ../../../runtime/tests/hello/$(PROJECT).hex) + .depend: $(SRCS) $(CC) $(CFLAGS) -MM $^ > .depend; diff --git a/runtime/tests/nlTest/Makefile b/runtime/tests/nlTest/Makefile index 6429a490..bd863989 100644 --- a/runtime/tests/nlTest/Makefile +++ b/runtime/tests/nlTest/Makefile @@ -27,6 +27,9 @@ $(PROJECT).hex: $(PROJECT).elf $(PROJECT).elf: $(SRCS) $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf +run: $(PROJECT).hex + (cd ../../../hw/simulate/obj_dir && ./VVortex -f ../../../runtime/tests/nlTest/$(PROJECT).hex) + .depend: $(SRCS) $(CC) $(CFLAGS) -MM $^ > .depend; diff --git a/runtime/tests/simple/Makefile b/runtime/tests/simple/Makefile index db04672b..fa134418 100644 --- a/runtime/tests/simple/Makefile +++ b/runtime/tests/simple/Makefile @@ -27,8 +27,11 @@ $(PROJECT).hex: $(PROJECT).elf $(PROJECT).elf: $(SRCS) $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf +run: $(PROJECT).hex + (cd ../../../hw/simulate/obj_dir && ./VVortex -f ../../../runtime/tests/simple/$(PROJECT).hex) + .depend: $(SRCS) $(CC) $(CFLAGS) -MM $^ > .depend; clean: - rm -rf *.elf *.hex *.dump .depend \ No newline at end of file + rm -rf *.elf *.hex *.dump .depend diff --git a/runtime/tests/vecadd/Makefile b/runtime/tests/vecadd/Makefile index 5bdaa1d9..b6906eeb 100644 --- a/runtime/tests/vecadd/Makefile +++ b/runtime/tests/vecadd/Makefile @@ -28,6 +28,9 @@ $(PROJECT).hex: $(PROJECT).elf $(PROJECT).elf: $(SRCS) $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf +run: $(PROJECT).hex + (cd ../../../hw/simulate/obj_dir && ./VVortex -f ../../../runtime/tests/vecadd/$(PROJECT).hex) + .depend: $(SRCS) $(CC) $(CFLAGS) -MM $^ > .depend; From c2dd0a8b392082147f3a8838937130e966f80c04 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 14:20:23 -0700 Subject: [PATCH 23/94] modelsim fixes && pipeline optimization --- driver/rtlsim/Makefile | 2 +- hw/opae/Makefile | 24 +-- hw/opae/gen_sources.sh | 20 +- hw/rtl/VX_commit.v | 9 +- hw/rtl/VX_config.vh | 2 +- hw/rtl/VX_decode.v | 2 +- hw/rtl/VX_define.vh | 213 ++-------------------- hw/rtl/VX_execute.v | 19 +- hw/rtl/VX_fpu_unit.v | 16 +- hw/rtl/VX_gpr_stage.v | 14 +- hw/rtl/VX_issue_demux.v | 4 + hw/rtl/VX_platform.vh | 58 ++++++ hw/rtl/VX_print_instr.vh | 148 +++++++++++++++ hw/rtl/VX_writeback.v | 168 +++++++++-------- hw/rtl/cache/VX_cache_config.vh | 5 +- hw/rtl/cache/VX_cache_core_req_bank_sel.v | 1 - hw/rtl/cache/VX_tag_data_access.v | 13 +- hw/rtl/interfaces/VX_cmt_to_issue_if.v | 10 - hw/rtl/libs/VX_cam_buffer.v | 4 +- hw/rtl/libs/VX_countones.v | 3 + hw/rtl/libs/VX_divide.v | 2 +- hw/rtl/libs/VX_fair_arbiter.v | 2 +- hw/rtl/libs/VX_fixed_arbiter.v | 2 +- hw/rtl/libs/VX_generic_queue.v | 2 +- hw/rtl/libs/VX_generic_register.v | 2 +- hw/rtl/libs/VX_generic_stack.v | 2 + hw/rtl/libs/VX_index_queue.v | 2 +- hw/rtl/libs/VX_matrix_arbiter.v | 2 +- hw/rtl/libs/VX_multiplier.v | 2 +- hw/rtl/libs/VX_onehot_encooder.v | 2 +- hw/rtl/libs/VX_priority_encoder.v | 2 +- hw/rtl/libs/VX_rr_arbiter.v | 2 +- hw/rtl/libs/VX_scope.v | 2 +- hw/rtl/libs/VX_shift_register.v | 2 +- hw/rtl/tex_unit/VX_tex_mgr.v | 2 +- hw/rtl/tex_unit/VX_tex_unit.v | 2 +- hw/simulate/Makefile | 4 +- hw/syn/quartus/pipeline/Makefile | 4 +- 38 files changed, 417 insertions(+), 358 deletions(-) create mode 100644 hw/rtl/VX_platform.vh create mode 100644 hw/rtl/VX_print_instr.vh diff --git a/driver/rtlsim/Makefile b/driver/rtlsim/Makefile index c1503a94..bc0ff284 100644 --- a/driver/rtlsim/Makefile +++ b/driver/rtlsim/Makefile @@ -72,7 +72,7 @@ PROJECT = libvortex.so all: $(PROJECT) $(PROJECT): $(SRCS) - verilator --exe --cc $(TOP) $(RTL_INCLUDE) $(VL_FLAGS) $(SRCS) -CFLAGS '$(CFLAGS)' -LDFLAGS '$(LDFLAGS)' -o ../$(PROJECT) + verilator --exe --cc $(TOP) --top-module $(TOP) $(RTL_INCLUDE) $(VL_FLAGS) $(SRCS) -CFLAGS '$(CFLAGS)' -LDFLAGS '$(LDFLAGS)' -o ../$(PROJECT) make -j -C obj_dir -f V$(TOP).mk clean: diff --git a/hw/opae/Makefile b/hw/opae/Makefile index 587bb5d7..f1637d0d 100644 --- a/hw/opae/Makefile +++ b/hw/opae/Makefile @@ -4,16 +4,18 @@ FPGA_BUILD_DIR=build_fpga all: ase-1c -sources.txt: - ./gen_sources.sh +sources.txt: + ./gen_sources.sh > sources.txt -ase-1c: setup-ase-1c sources.txt +gen_sources: sources.txt + +ase-1c: setup-ase-1c gen_sources make -C $(ASE_BUILD_DIR)_1c -ase-2c: setup-ase-2c sources.txt +ase-2c: setup-ase-2c gen_sources make -C $(ASE_BUILD_DIR)_2c -ase-4c: setup-ase-4c sources.txt +ase-4c: setup-ase-4c gen_sources make -C $(ASE_BUILD_DIR)_4c setup-ase-1c: $(ASE_BUILD_DIR)_1c/Makefile @@ -22,22 +24,22 @@ setup-ase-2c: $(ASE_BUILD_DIR)_2c/Makefile setup-ase-4c: $(ASE_BUILD_DIR)_4c/Makefile -$(ASE_BUILD_DIR)_1c/Makefile: +$(ASE_BUILD_DIR)_1c/Makefile: sources.txt afu_sim_setup -s sources_1c.txt $(ASE_BUILD_DIR)_1c -$(ASE_BUILD_DIR)_2c/Makefile: +$(ASE_BUILD_DIR)_2c/Makefile: sources.txt afu_sim_setup -s sources_2c.txt $(ASE_BUILD_DIR)_2c -$(ASE_BUILD_DIR)_4c/Makefile: +$(ASE_BUILD_DIR)_4c/Makefile: sources.txt afu_sim_setup -s sources_4c.txt $(ASE_BUILD_DIR)_4c -fpga-1c: setup-fpga-1c sources.txt +fpga-1c: setup-fpga-1c gen_sources cd $(FPGA_BUILD_DIR)_1c && qsub-synth -fpga-2c: setup-fpga-2c sources.txt +fpga-2c: setup-fpga-2c gen_sources cd $(FPGA_BUILD_DIR)_2c && qsub-synth -fpga-4c: setup-fpga-4c sources.txt +fpga-4c: setup-fpga-4c gen_sources cd $(FPGA_BUILD_DIR)_4c && qsub-synth setup-fpga-1c: $(FPGA_BUILD_DIR)_1c/build/dcp.qpf diff --git a/hw/opae/gen_sources.sh b/hw/opae/gen_sources.sh index deb8cdbb..d00f98fa 100755 --- a/hw/opae/gen_sources.sh +++ b/hw/opae/gen_sources.sh @@ -1,21 +1,17 @@ #!/bin/bash -dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl' +dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl ../rtl/fp_cores/fpnew/src/common_cells/include ../rtl/fp_cores/fpnew/src/common_cells/src ../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl ../rtl/fp_cores/fpnew/src' inc_list="" for dir in $dir_list; do inc_list="$inc_list -I$dir" done -echo "inc_list=$inc_list" - -{ - # read design sources - for dir in $dir_list; do - echo "+incdir+$dir" - for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f) - do - echo $file - done +# read design sources +for dir in $dir_list; do + echo "+incdir+$dir" + for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f) + do + echo $file done -} > sources.txt \ No newline at end of file +done \ No newline at end of file diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index 2ebe6b06..b6b9db45 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -65,8 +65,6 @@ module VX_commit #( assign cmt_to_issue_if.fpu_tag = fpu_commit_if.issue_tag; assign cmt_to_issue_if.gpu_tag = gpu_commit_if.issue_tag; - assign gpu_commit_if.ready = 1'b1; // doesn't writeback - VX_writeback #( .CORE_ID(CORE_ID) ) writeback ( @@ -77,9 +75,10 @@ module VX_commit #( .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), - .fpu_commit_if (fpu_commit_if), - .cmt_to_issue_if(cmt_to_issue_if), - + .fpu_commit_if (fpu_commit_if), + .gpu_commit_if (gpu_commit_if), + .cmt_to_issue_if(cmt_to_issue_if), + .writeback_if (writeback_if) ); diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index 668ffc16..2e6929cb 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -57,7 +57,7 @@ `define EXT_M_ENABLE -`define EXT_F_ENABLE +//`define EXT_F_ENABLE // Configuration Values ======================================================= diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 41e01f39..5e737e1d 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -1,5 +1,5 @@ - `include "VX_define.vh" +`include "VX_print_instr.vh" module VX_decode #( parameter CORE_ID = 0 diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 66a65a90..6027223f 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -1,69 +1,15 @@ `ifndef VX_DEFINE `define VX_DEFINE +`include "VX_platform.vh" `include "VX_config.vh" `include "VX_scope.vh" -`define QUEUE_FORCE_MLAB 1 - -// `define SYNTHESIS 1 -// `define ASIC 1 - /////////////////////////////////////////////////////////////////////////////// -`ifndef NDEBUG - `define DEBUG_BLOCK(x) /* verilator lint_off UNUSED */ \ - x \ - /* verilator lint_on UNUSED */ -`else - `define DEBUG_BLOCK(x) -`endif - -`define DEBUG_BEGIN /* verilator lint_off UNUSED */ - -`define DEBUG_END /* verilator lint_on UNUSED */ - -`define IGNORE_WARNINGS_BEGIN /* verilator lint_off UNUSED */ \ - /* verilator lint_off PINCONNECTEMPTY */ \ - /* verilator lint_off WIDTH */ \ - /* verilator lint_off UNOPTFLAT */ \ - /* verilator lint_off UNDRIVEN */ \ - /* verilator lint_off DECLFILENAME */ - -`define IGNORE_WARNINGS_END /* verilator lint_on UNUSED */ \ - /* verilator lint_on PINCONNECTEMPTY */ \ - /* verilator lint_on WIDTH */ \ - /* verilator lint_on UNOPTFLAT */ \ - /* verilator lint_on UNDRIVEN */ \ - /* verilator lint_on DECLFILENAME */ - -`define UNUSED_VAR(x) /* verilator lint_off UNUSED */ \ - wire [$bits(x)-1:0] __``x``__ = x; \ - /* verilator lint_on UNUSED */ - -`define UNUSED_PIN(x) /* verilator lint_off PINCONNECTEMPTY */ \ - . x () \ - /* verilator lint_on PINCONNECTEMPTY */ - -`define STRINGIFY(x) `"x`" - -`define STATIC_ASSERT(cond, msg) \ - generate \ - if (!(cond)) $error(msg); \ - endgenerate - -`define ENABLE_TRACING /* verilator tracing_on */ -`define DISABLE_TRACING /* verilator tracing_off */ - -`define CLOG2(x) $clog2(x) -`define FLOG2(x) ($clog2(x) - (((1 << $clog2(x)) > (x)) ? 1 : 0)) -`define LOG2UP(x) (((x) > 1) ? $clog2(x) : 1) -`define ISPOW2(x) (((x) != 0) && (0 == ((x) & ((x) - 1)))) - -`define MIN(x, y) ((x < y) ? (x) : (y)) -`define MAX(x, y) ((x > y) ? (x) : (y)) - -`define UP(x) (((x) > 0) ? x : 1) +`define QUEUE_FORCE_MLAB 1 +// `define SYNTHESIS 1 +// `define ASIC 1 /////////////////////////////////////////////////////////////////////////////// @@ -87,7 +33,7 @@ `define ISTAG_BITS `LOG2UP(`ISSUEQ_SIZE) -`define LATENCY_IDIV 21 +`define LATENCY_IDIV 23 `define LATENCY_IMUL 2 `define LATENCY_FMULADD 2 @@ -457,146 +403,13 @@ /////////////////////////////////////////////////////////////////////////////// -task print_ex_type; - input [`EX_BITS-1:0] ex; - begin - case (ex) - `EX_ALU: $write("ALU"); - `EX_LSU: $write("LSU"); - `EX_CSR: $write("CSR"); - `EX_MUL: $write("MUL"); - `EX_FPU: $write("FPU"); - `EX_GPU: $write("GPU"); - default: $write("NOP"); - endcase - end -endtask - -task print_ex_op; - input [`EX_BITS-1:0] ex; - input [`OP_BITS-1:0] op; - begin - case (ex) - `EX_ALU: begin - case (`ALU_BITS'(op)) - `ALU_ADD: $write("ADD"); - `ALU_SUB: $write("SUB"); - `ALU_SLL: $write("SLL"); - `ALU_SRL: $write("SRL"); - `ALU_SRA: $write("SRA"); - `ALU_SLT: $write("SLT"); - `ALU_SLTU: $write("SLTU"); - `ALU_XOR: $write("XOR"); - `ALU_OR: $write("OR"); - `ALU_AND: $write("AND"); - `ALU_LUI: $write("LUI"); - `ALU_AUIPC: $write("AUIPC"); - `ALU_BEQ: $write("BEQ"); - `ALU_BNE: $write("BNE"); - `ALU_BLT: $write("BLT"); - `ALU_BGE: $write("BGE"); - `ALU_BLTU: $write("BLTU"); - `ALU_BGEU: $write("BGEU"); - `ALU_JAL: $write("JAL"); - `ALU_JALR: $write("JALR"); - `ALU_ECALL: $write("ECALL"); - `ALU_EBREAK:$write("EBREAK"); - `ALU_MRET: $write("MRET"); - `ALU_SRET: $write("SRET"); - `ALU_DRET: $write("DRET"); - default: $write("?"); - endcase - end - `EX_LSU: begin - case (`LSU_BITS'(op)) - `LSU_LB: $write("LB"); - `LSU_LH: $write("LH"); - `LSU_LW: $write("LW"); - `LSU_LBU: $write("LBU"); - `LSU_LHU: $write("LHU"); - `LSU_SB: $write("SB"); - `LSU_SH: $write("SH"); - `LSU_SW: $write("SW"); - `LSU_SBU: $write("SBU"); - `LSU_SHU: $write("SHU"); - default: $write("?"); - endcase - end - `EX_CSR: begin - case (`CSR_BITS'(op)) - `CSR_RW: $write("CSRW"); - `CSR_RS: $write("CSRS"); - `CSR_RC: $write("CSRC"); - default: $write("?"); - endcase - end - `EX_MUL: begin - case (`MUL_BITS'(op)) - `MUL_MUL: $write("MUL"); - `MUL_MULH: $write("MULH"); - `MUL_MULHSU:$write("MULHSU"); - `MUL_MULHU: $write("MULHU"); - `MUL_DIV: $write("DIV"); - `MUL_DIVU: $write("DIVU"); - `MUL_REM: $write("REM"); - `MUL_REMU: $write("REMU"); - default: $write("?"); - endcase - end - `EX_FPU: begin - case (`FPU_BITS'(op)) - `FPU_ADD: $write("ADD"); - `FPU_SUB: $write("SUB"); - `FPU_MUL: $write("MUL"); - `FPU_DIV: $write("DIV"); - `FPU_SQRT: $write("SQRT"); - `FPU_MADD: $write("MADD"); - `FPU_NMSUB: $write("NMSUB"); - `FPU_NMADD: $write("NMADD"); - `FPU_SGNJ: $write("SGNJ"); - `FPU_SGNJN: $write("SGNJN"); - `FPU_SGNJX: $write("SGNJX"); - `FPU_MIN: $write("MIN"); - `FPU_MAX: $write("MAX"); - `FPU_CVTWS: $write("CVTWS"); - `FPU_CVTWUS:$write("CVTWUS"); - `FPU_CVTSW: $write("CVTSW"); - `FPU_CVTSWU:$write("CVTSWU"); - `FPU_MVXW: $write("MVXW"); - `FPU_MVWX: $write("MVWX"); - `FPU_CLASS: $write("CLASS"); - `FPU_CMP: $write("CMP"); - default: $write("?"); - endcase - end - `EX_GPU: begin - case (`GPU_BITS'(op)) - `GPU_TMC: $write("TMC"); - `GPU_WSPAWN:$write("WSPAWN"); - `GPU_SPLIT: $write("SPLIT"); - `GPU_JOIN: $write("JOIN"); - `GPU_BAR: $write("BAR"); - default: $write("?"); - endcase - end - default:; - endcase - end -endtask - -task print_frm; - input [`FRM_BITS-1:0] frm; - begin - case (frm) - `FRM_RNE: $write("RNE"); - `FRM_RTZ: $write("RTZ"); - `FRM_RDN: $write("RDN"); - `FRM_RUP: $write("RUP"); - `FRM_RMM: $write("RMM"); - `FRM_DYN: $write("DYN"); - default: $write("?"); - endcase - end -endtask +typedef struct packed { + logic [`NW_BITS-1:0] warp_num; + logic [`NUM_THREADS-1:0] thread_mask; + logic [31:0] curr_PC; + logic [`NR_BITS-1:0] rd; + logic rd_is_fp; + logic wb; +} is_data_t; `endif diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 18947d19..e1d45b48 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -88,8 +88,10 @@ module VX_execute #( .alu_commit_if (mul_commit_if) ); `else - assign mul_req_if.ready = 0; - assign mul_commit_if.valid = 0; + assign mul_req_if.ready = 0; + assign mul_commit_if.valid = 0; + assign mul_commit_if.issue_tag = 0; + assign mul_commit_if.data = 0; `endif `ifdef EXT_F_ENABLE @@ -103,9 +105,16 @@ module VX_execute #( .fpu_commit_if (fpu_commit_if) ); `else - assign fpu_req_if.ready = 0; - assign fpu_commit_if.valid = 0; - assign fpu_to_csr_if.valid = 0; + assign fpu_req_if.ready = 0; + assign fpu_commit_if.valid = 0; + assign fpu_commit_if.issue_tag = 0; + assign fpu_commit_if.data = 0; + assign fpu_commit_if.upd_fflags = 0; + assign fpu_commit_if.fflags_NV = 0; + assign fpu_commit_if.fflags_DZ = 0; + assign fpu_commit_if.fflags_OF = 0; + assign fpu_commit_if.fflags_UF = 0; + assign fpu_commit_if.fflags_NX = 0; `endif VX_gpu_unit #( diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index f01cbf19..4e678de4 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -121,12 +121,12 @@ module VX_fpu_unit #( .clk_i (clk), .rst_ni (1'b1), .operands_i (fpu_operands), - .rnd_mode_i (fpu_rnd), - .op_i (fpu_op), + .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), + .op_i (fpnew_pkg::operation_e'(fpu_op)), .op_mod_i (fpu_op_mod), - .src_fmt_i (fpu_src_fmt), - .dst_fmt_i (fpu_dst_fmt), - .int_fmt_i (fpu_int_fmt), + .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), + .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), + .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), .vectorial_op_i (1'b1), .tag_i ({fpu_in_tag, fflags_en, is_class_op_i}), .in_valid_i (fpu_in_valid), @@ -149,9 +149,9 @@ module VX_fpu_unit #( if (is_class_op_o) begin integer i; for (i = 0; i < `NUM_THREADS; i++) begin - integer l = i / 4; - integer w = i % 4; - integer class_mask = fpu_result[l][w * 8 +: 8]; + automatic integer l = i / 4; + automatic integer w = i % 4; + automatic integer class_mask = fpu_result[l][w * 8 +: 8]; fpu_result_qual[i][0] = class_mask[7] & class_mask[0]; fpu_result_qual[i][1] = class_mask[7] & class_mask[1]; diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 5bb71a32..529945f4 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -77,8 +77,18 @@ module VX_gpr_stage #( assign gpr_read_if.rs1_data = rs1_int_data[gpr_read_if.warp_num]; assign gpr_read_if.rs2_data = rs2_int_data[gpr_read_if.warp_num]; assign gpr_read_if.rs3_data = 0; - assign gpr_delay = 0; - `UNUSED_VAR (schedule_delay) + assign gpr_read_if.ready = 1; + + wire valid = gpr_read_if.valid; + wire rs1_is_fp = gpr_read_if.rs1_is_fp; + wire rs2_is_fp = gpr_read_if.rs2_is_fp; + wire use_rs3 = gpr_read_if.use_rs3; + wire [`NR_BITS-1:0] rs3 = gpr_read_if.rs3; + `UNUSED_VAR (valid); + `UNUSED_VAR (rs1_is_fp); + `UNUSED_VAR (rs2_is_fp); + `UNUSED_VAR (use_rs3); + `UNUSED_VAR (rs3); `endif assign writeback_if.ready = 1'b1; diff --git a/hw/rtl/VX_issue_demux.v b/hw/rtl/VX_issue_demux.v index 1c10dbb3..3ab2f160 100644 --- a/hw/rtl/VX_issue_demux.v +++ b/hw/rtl/VX_issue_demux.v @@ -51,13 +51,16 @@ module VX_issue_demux ( assign csr_req_if.is_io = 1'b0; // MUL unit +`ifdef EXT_M_ENABLE assign mul_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_MUL); assign mul_req_if.issue_tag = issue_tag; assign mul_req_if.mul_op = `MUL_OP(decode_if.ex_op); assign mul_req_if.rs1_data = gpr_read_if.rs1_data; assign mul_req_if.rs2_data = gpr_read_if.rs2_data; +`endif // FPU unit +`ifdef EXT_F_ENABLE assign fpu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_FPU); assign fpu_req_if.issue_tag = issue_tag; assign fpu_req_if.warp_num = decode_if.warp_num; @@ -66,6 +69,7 @@ module VX_issue_demux ( assign fpu_req_if.rs2_data = gpr_read_if.rs2_data; assign fpu_req_if.rs3_data = gpr_read_if.rs3_data; assign fpu_req_if.frm = decode_if.frm; +`endif // GPU unit assign gpu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_GPU); diff --git a/hw/rtl/VX_platform.vh b/hw/rtl/VX_platform.vh new file mode 100644 index 00000000..49c74062 --- /dev/null +++ b/hw/rtl/VX_platform.vh @@ -0,0 +1,58 @@ +`ifndef VX_PLATFORM +`define VX_PLATFORM + +`ifndef NDEBUG + `define DEBUG_BLOCK(x) /* verilator lint_off UNUSED */ \ + x \ + /* verilator lint_on UNUSED */ +`else + `define DEBUG_BLOCK(x) +`endif + +`define DEBUG_BEGIN /* verilator lint_off UNUSED */ + +`define DEBUG_END /* verilator lint_on UNUSED */ + +`define IGNORE_WARNINGS_BEGIN /* verilator lint_off UNUSED */ \ + /* verilator lint_off PINCONNECTEMPTY */ \ + /* verilator lint_off WIDTH */ \ + /* verilator lint_off UNOPTFLAT */ \ + /* verilator lint_off UNDRIVEN */ \ + /* verilator lint_off DECLFILENAME */ + +`define IGNORE_WARNINGS_END /* verilator lint_on UNUSED */ \ + /* verilator lint_on PINCONNECTEMPTY */ \ + /* verilator lint_on WIDTH */ \ + /* verilator lint_on UNOPTFLAT */ \ + /* verilator lint_on UNDRIVEN */ \ + /* verilator lint_on DECLFILENAME */ + +`define UNUSED_VAR(x) /* verilator lint_off UNUSED */ \ + wire [$bits(x)-1:0] __``x``__ = x; \ + /* verilator lint_on UNUSED */ + +`define UNUSED_PIN(x) /* verilator lint_off PINCONNECTEMPTY */ \ + . x () \ + /* verilator lint_on PINCONNECTEMPTY */ + +`define STRINGIFY(x) `"x`" + +`define STATIC_ASSERT(cond, msg) \ + generate \ + if (!(cond)) $error(msg); \ + endgenerate + +`define ENABLE_TRACING /* verilator tracing_on */ +`define DISABLE_TRACING /* verilator tracing_off */ + +`define CLOG2(x) $clog2(x) +`define FLOG2(x) ($clog2(x) - (((1 << $clog2(x)) > (x)) ? 1 : 0)) +`define LOG2UP(x) (((x) > 1) ? $clog2(x) : 1) +`define ISPOW2(x) (((x) != 0) && (0 == ((x) & ((x) - 1)))) + +`define MIN(x, y) ((x < y) ? (x) : (y)) +`define MAX(x, y) ((x > y) ? (x) : (y)) + +`define UP(x) (((x) > 0) ? x : 1) + +`endif \ No newline at end of file diff --git a/hw/rtl/VX_print_instr.vh b/hw/rtl/VX_print_instr.vh new file mode 100644 index 00000000..9a5702e2 --- /dev/null +++ b/hw/rtl/VX_print_instr.vh @@ -0,0 +1,148 @@ +`ifndef VX_PRINT_INSTR +`define VX_PRINT_INSTR + +`include "VX_define.vh" + +task print_ex_type; + input [`EX_BITS-1:0] ex; + begin + case (ex) + `EX_ALU: $write("ALU"); + `EX_LSU: $write("LSU"); + `EX_CSR: $write("CSR"); + `EX_MUL: $write("MUL"); + `EX_FPU: $write("FPU"); + `EX_GPU: $write("GPU"); + default: $write("NOP"); + endcase + end +endtask + +task print_ex_op; + input [`EX_BITS-1:0] ex; + input [`OP_BITS-1:0] op; + begin + case (ex) + `EX_ALU: begin + case (`ALU_BITS'(op)) + `ALU_ADD: $write("ADD"); + `ALU_SUB: $write("SUB"); + `ALU_SLL: $write("SLL"); + `ALU_SRL: $write("SRL"); + `ALU_SRA: $write("SRA"); + `ALU_SLT: $write("SLT"); + `ALU_SLTU: $write("SLTU"); + `ALU_XOR: $write("XOR"); + `ALU_OR: $write("OR"); + `ALU_AND: $write("AND"); + `ALU_LUI: $write("LUI"); + `ALU_AUIPC: $write("AUIPC"); + `ALU_BEQ: $write("BEQ"); + `ALU_BNE: $write("BNE"); + `ALU_BLT: $write("BLT"); + `ALU_BGE: $write("BGE"); + `ALU_BLTU: $write("BLTU"); + `ALU_BGEU: $write("BGEU"); + `ALU_JAL: $write("JAL"); + `ALU_JALR: $write("JALR"); + `ALU_ECALL: $write("ECALL"); + `ALU_EBREAK:$write("EBREAK"); + `ALU_MRET: $write("MRET"); + `ALU_SRET: $write("SRET"); + `ALU_DRET: $write("DRET"); + default: $write("?"); + endcase + end + `EX_LSU: begin + case (`LSU_BITS'(op)) + `LSU_LB: $write("LB"); + `LSU_LH: $write("LH"); + `LSU_LW: $write("LW"); + `LSU_LBU: $write("LBU"); + `LSU_LHU: $write("LHU"); + `LSU_SB: $write("SB"); + `LSU_SH: $write("SH"); + `LSU_SW: $write("SW"); + `LSU_SBU: $write("SBU"); + `LSU_SHU: $write("SHU"); + default: $write("?"); + endcase + end + `EX_CSR: begin + case (`CSR_BITS'(op)) + `CSR_RW: $write("CSRW"); + `CSR_RS: $write("CSRS"); + `CSR_RC: $write("CSRC"); + default: $write("?"); + endcase + end + `EX_MUL: begin + case (`MUL_BITS'(op)) + `MUL_MUL: $write("MUL"); + `MUL_MULH: $write("MULH"); + `MUL_MULHSU:$write("MULHSU"); + `MUL_MULHU: $write("MULHU"); + `MUL_DIV: $write("DIV"); + `MUL_DIVU: $write("DIVU"); + `MUL_REM: $write("REM"); + `MUL_REMU: $write("REMU"); + default: $write("?"); + endcase + end + `EX_FPU: begin + case (`FPU_BITS'(op)) + `FPU_ADD: $write("ADD"); + `FPU_SUB: $write("SUB"); + `FPU_MUL: $write("MUL"); + `FPU_DIV: $write("DIV"); + `FPU_SQRT: $write("SQRT"); + `FPU_MADD: $write("MADD"); + `FPU_NMSUB: $write("NMSUB"); + `FPU_NMADD: $write("NMADD"); + `FPU_SGNJ: $write("SGNJ"); + `FPU_SGNJN: $write("SGNJN"); + `FPU_SGNJX: $write("SGNJX"); + `FPU_MIN: $write("MIN"); + `FPU_MAX: $write("MAX"); + `FPU_CVTWS: $write("CVTWS"); + `FPU_CVTWUS:$write("CVTWUS"); + `FPU_CVTSW: $write("CVTSW"); + `FPU_CVTSWU:$write("CVTSWU"); + `FPU_MVXW: $write("MVXW"); + `FPU_MVWX: $write("MVWX"); + `FPU_CLASS: $write("CLASS"); + `FPU_CMP: $write("CMP"); + default: $write("?"); + endcase + end + `EX_GPU: begin + case (`GPU_BITS'(op)) + `GPU_TMC: $write("TMC"); + `GPU_WSPAWN:$write("WSPAWN"); + `GPU_SPLIT: $write("SPLIT"); + `GPU_JOIN: $write("JOIN"); + `GPU_BAR: $write("BAR"); + default: $write("?"); + endcase + end + default:; + endcase + end +endtask + +task print_frm; + input [`FRM_BITS-1:0] frm; + begin + case (frm) + `FRM_RNE: $write("RNE"); + `FRM_RTZ: $write("RTZ"); + `FRM_RDN: $write("RDN"); + `FRM_RUP: $write("RUP"); + `FRM_RMM: $write("RMM"); + `FRM_DYN: $write("DYN"); + default: $write("?"); + endcase + end +endtask + +`endif \ No newline at end of file diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 578391d5..cd63044e 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -9,96 +9,114 @@ module VX_writeback #( // inputs VX_exu_to_cmt_if alu_commit_if, VX_exu_to_cmt_if lsu_commit_if, - VX_exu_to_cmt_if mul_commit_if, - VX_fpu_to_cmt_if fpu_commit_if, VX_exu_to_cmt_if csr_commit_if, + VX_exu_to_cmt_if mul_commit_if, + VX_fpu_to_cmt_if fpu_commit_if, + VX_exu_to_cmt_if gpu_commit_if, VX_cmt_to_issue_if cmt_to_issue_if, // outputs VX_wb_if writeback_if ); - wire alu_valid = alu_commit_if.valid && cmt_to_issue_if.alu_data.wb; - wire lsu_valid = lsu_commit_if.valid && cmt_to_issue_if.lsu_data.wb; - wire csr_valid = csr_commit_if.valid && cmt_to_issue_if.csr_data.wb; - wire mul_valid = mul_commit_if.valid && cmt_to_issue_if.mul_data.wb; - wire fpu_valid = fpu_commit_if.valid && cmt_to_issue_if.fpu_data.wb; + reg [`NUM_THREADS-1:0][31:0] wb_data [`ISSUEQ_SIZE-1:0]; + reg [`NW_BITS-1:0] wb_warp_num [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0] wb_thread_mask [`ISSUEQ_SIZE-1:0]; + reg [31:0] wb_curr_PC [`ISSUEQ_SIZE-1:0]; + reg [`NR_BITS-1:0] wb_rd [`ISSUEQ_SIZE-1:0]; + reg wb_rd_is_fp [`ISSUEQ_SIZE-1:0]; + reg [`ISSUEQ_SIZE-1:0] wb_pending; - VX_wb_if writeback_tmp_if(); + wire [`ISTAG_BITS-1:0] wb_index; + wire wb_valid, wb_valid_unqual; - assign writeback_tmp_if.valid = alu_valid ? alu_commit_if.valid : - lsu_valid ? lsu_commit_if.valid : - csr_valid ? csr_commit_if.valid : - mul_valid ? mul_commit_if.valid : - fpu_valid ? fpu_commit_if.valid : - 0; - - assign writeback_tmp_if.warp_num = alu_valid ? cmt_to_issue_if.alu_data.warp_num : - lsu_valid ? cmt_to_issue_if.lsu_data.warp_num : - csr_valid ? cmt_to_issue_if.csr_data.warp_num : - mul_valid ? cmt_to_issue_if.mul_data.warp_num : - fpu_valid ? cmt_to_issue_if.fpu_data.warp_num : - 0; - - assign writeback_tmp_if.curr_PC = alu_valid ? cmt_to_issue_if.alu_data.curr_PC : - lsu_valid ? cmt_to_issue_if.lsu_data.curr_PC : - csr_valid ? cmt_to_issue_if.csr_data.curr_PC : - mul_valid ? cmt_to_issue_if.mul_data.curr_PC : - fpu_valid ? cmt_to_issue_if.fpu_data.curr_PC : - 0; - - assign writeback_tmp_if.thread_mask = alu_valid ? cmt_to_issue_if.alu_data.thread_mask : - lsu_valid ? cmt_to_issue_if.lsu_data.thread_mask : - csr_valid ? cmt_to_issue_if.csr_data.thread_mask : - mul_valid ? cmt_to_issue_if.mul_data.thread_mask : - fpu_valid ? cmt_to_issue_if.fpu_data.thread_mask : - 0; - - assign writeback_tmp_if.rd = alu_valid ? cmt_to_issue_if.alu_data.rd : - lsu_valid ? cmt_to_issue_if.lsu_data.rd : - csr_valid ? cmt_to_issue_if.csr_data.rd : - mul_valid ? cmt_to_issue_if.mul_data.rd : - fpu_valid ? cmt_to_issue_if.fpu_data.rd : - 0; - - assign writeback_tmp_if.rd_is_fp = alu_valid ? 0 : - lsu_valid ? cmt_to_issue_if.lsu_data.rd_is_fp : - csr_valid ? 0 : - mul_valid ? 0 : - fpu_valid ? cmt_to_issue_if.fpu_data.rd_is_fp : - 0; - - assign writeback_tmp_if.data = alu_valid ? alu_commit_if.data : - lsu_valid ? lsu_commit_if.data : - csr_valid ? csr_commit_if.data : - mul_valid ? mul_commit_if.data : - fpu_valid ? fpu_commit_if.data : - 0; - - wire stall = ~writeback_if.ready && writeback_if.valid; - - VX_generic_register #( - .N(1 + `NW_BITS + 32 + `NUM_THREADS + `NR_BITS + (`NUM_THREADS * 32) + 1) - ) wb_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (0), - .in ({writeback_tmp_if.valid, writeback_tmp_if.warp_num, writeback_tmp_if.curr_PC, writeback_tmp_if.thread_mask, writeback_tmp_if.rd, writeback_tmp_if.rd_is_fp, writeback_tmp_if.data}), - .out ({writeback_if.valid, writeback_if.warp_num, writeback_if.curr_PC, writeback_if.thread_mask, writeback_if.rd, writeback_if.rd_is_fp, writeback_if.data}) + VX_priority_encoder #( + .N(`ISSUEQ_SIZE) + ) free_slots_encoder ( + .data_in (wb_pending), + .data_out (wb_index), + .valid_out (wb_valid_unqual) ); - assign alu_commit_if.ready = !stall; - assign lsu_commit_if.ready = !stall && !alu_valid; - assign csr_commit_if.ready = !stall && !alu_valid && !lsu_valid; - assign mul_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid; - assign fpu_commit_if.ready = !stall && !alu_valid && !lsu_valid && !csr_valid && !mul_valid; + assign wb_valid = wb_valid_unqual && writeback_if.ready; + + always @(posedge clk) begin + if (reset) begin + wb_pending <= 0; + end else begin + if (alu_commit_if.valid) begin + wb_data [alu_commit_if.issue_tag] <= alu_commit_if.data; + wb_warp_num [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.warp_num; + wb_thread_mask [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.thread_mask; + wb_curr_PC [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.curr_PC; + wb_rd [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd; + wb_rd_is_fp [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd_is_fp; + wb_pending [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.wb; + end + if (lsu_commit_if.valid) begin + wb_data [lsu_commit_if.issue_tag] <= lsu_commit_if.data; + wb_warp_num [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.warp_num; + wb_thread_mask [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.thread_mask; + wb_curr_PC [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.curr_PC; + wb_rd [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd; + wb_rd_is_fp [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd_is_fp; + wb_pending [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.wb; + end + if (csr_commit_if.valid) begin + wb_data [csr_commit_if.issue_tag] <= csr_commit_if.data; + wb_warp_num [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.warp_num; + wb_thread_mask [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.thread_mask; + wb_curr_PC [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.curr_PC; + wb_rd [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd; + wb_rd_is_fp [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd_is_fp; + wb_pending [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.wb; + end + if (mul_commit_if.valid) begin + wb_data [mul_commit_if.issue_tag] <= mul_commit_if.data; + wb_warp_num [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.warp_num; + wb_thread_mask [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.thread_mask; + wb_curr_PC [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.curr_PC; + wb_rd [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd; + wb_rd_is_fp [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd_is_fp; + wb_pending [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.wb; + end + if (fpu_commit_if.valid) begin + wb_data [fpu_commit_if.issue_tag] <= fpu_commit_if.data; + wb_warp_num [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.warp_num; + wb_thread_mask [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.thread_mask; + wb_curr_PC [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.curr_PC; + wb_rd [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd; + wb_rd_is_fp [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd_is_fp; + wb_pending [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.wb; + end + if (wb_valid) begin + wb_pending [wb_index] <= 0; + end + end + end + + // writeback request + assign writeback_if.valid = wb_pending [wb_index]; + assign writeback_if.warp_num = wb_warp_num [wb_index]; + assign writeback_if.thread_mask = wb_thread_mask [wb_index]; + assign writeback_if.curr_PC = wb_curr_PC [wb_index]; + assign writeback_if.rd = wb_rd [wb_index]; + assign writeback_if.rd_is_fp = wb_rd_is_fp [wb_index]; + assign writeback_if.data = wb_data [wb_index]; + + // commit back-pressure + assign alu_commit_if.ready = 1'b1; + assign lsu_commit_if.ready = 1'b1; + assign csr_commit_if.ready = 1'b1; + assign mul_commit_if.ready = 1'b1; + assign fpu_commit_if.ready = 1'b1; + assign gpu_commit_if.ready = 1'b1; // special workaround to get RISC-V tests Pass/Fail status reg [31:0] last_wb_value [`NUM_REGS-1:0] /* verilator public */; always @(posedge clk) begin - if (writeback_tmp_if.valid && ~stall) begin - last_wb_value[writeback_tmp_if.rd] <= writeback_tmp_if.data[0]; + if (writeback_if.valid) begin + last_wb_value[writeback_if.rd] <= writeback_if.data[0]; end end diff --git a/hw/rtl/cache/VX_cache_config.vh b/hw/rtl/cache/VX_cache_config.vh index 3e835196..cb6a1a69 100644 --- a/hw/rtl/cache/VX_cache_config.vh +++ b/hw/rtl/cache/VX_cache_config.vh @@ -1,10 +1,13 @@ `ifndef VX_CACHE_CONFIG `define VX_CACHE_CONFIG -`include "VX_define.vh" +`include "VX_platform.vh" +`include "VX_scope.vh" `define REQ_TAG_WIDTH `MAX(CORE_TAG_WIDTH, SNP_REQ_TAG_WIDTH) +`define REQS_BITS `LOG2UP(NUM_REQUESTS) + // tag rw byteen tid `define REQ_INST_META_WIDTH (`REQ_TAG_WIDTH + 1 + WORD_SIZE + `REQS_BITS) diff --git a/hw/rtl/cache/VX_cache_core_req_bank_sel.v b/hw/rtl/cache/VX_cache_core_req_bank_sel.v index 46efa586..fa5372f3 100644 --- a/hw/rtl/cache/VX_cache_core_req_bank_sel.v +++ b/hw/rtl/cache/VX_cache_core_req_bank_sel.v @@ -1,4 +1,3 @@ - `include "VX_cache_config.vh" module VX_cache_core_req_bank_sel #( diff --git a/hw/rtl/cache/VX_tag_data_access.v b/hw/rtl/cache/VX_tag_data_access.v index d67837be..04e99336 100644 --- a/hw/rtl/cache/VX_tag_data_access.v +++ b/hw/rtl/cache/VX_tag_data_access.v @@ -141,11 +141,14 @@ module VX_tag_data_access #( assign use_read_tag_st1e = DRAM_ENABLE ? read_tag_st1c[STAGE_1_CYCLES-1] : writetag_st1e; // Tag is always the same in SM assign use_read_dirtyb_st1e= read_dirtyb_st1c[STAGE_1_CYCLES-1]; assign use_read_data_st1e = read_data_st1c[STAGE_1_CYCLES-1]; - - for (i = 0; i < WORD_SIZE; i++) begin - if (`WORD_SELECT_WIDTH != 0) begin - assign readword_st1e[i * 8 +: 8] = use_read_data_st1e[wordsel_st1e * `WORD_WIDTH +: `WORD_WIDTH][i * 8 +: 8] & {8{mem_byteen_st1e[i]}}; - end else begin + + if (`WORD_SELECT_WIDTH != 0) begin + wire [`WORD_WIDTH-1:0] readword = use_read_data_st1e[wordsel_st1e * `WORD_WIDTH +: `WORD_WIDTH]; + for (i = 0; i < WORD_SIZE; i++) begin + assign readword_st1e[i * 8 +: 8] = readword[i * 8 +: 8] & {8{mem_byteen_st1e[i]}}; + end + end else begin + for (i = 0; i < WORD_SIZE; i++) begin assign readword_st1e[i * 8 +: 8] = use_read_data_st1e[i * 8 +: 8] & {8{mem_byteen_st1e[i]}}; end end diff --git a/hw/rtl/interfaces/VX_cmt_to_issue_if.v b/hw/rtl/interfaces/VX_cmt_to_issue_if.v index 2e9135c1..cff19de2 100644 --- a/hw/rtl/interfaces/VX_cmt_to_issue_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_issue_if.v @@ -3,16 +3,6 @@ `include "VX_define.vh" -typedef struct packed { - logic [`NW_BITS-1:0] warp_num; - logic [`NUM_THREADS-1:0] thread_mask; - logic [31:0] curr_PC; - logic [`NR_BITS-1:0] rd; - logic rd_is_fp; - logic wb; -} is_data_t; - - interface VX_cmt_to_issue_if (); wire alu_valid; diff --git a/hw/rtl/libs/VX_cam_buffer.v b/hw/rtl/libs/VX_cam_buffer.v index 284ffa7d..ad877564 100644 --- a/hw/rtl/libs/VX_cam_buffer.v +++ b/hw/rtl/libs/VX_cam_buffer.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_cam_buffer #( parameter DATAW = 1, @@ -43,7 +43,7 @@ module VX_cam_buffer #( if (release_slot[i]) begin free_slots_n[read_addr[i]] = 1; end - assign read_data[i] = entries[read_addr[i]]; + read_data[i] = entries[read_addr[i]]; end end diff --git a/hw/rtl/libs/VX_countones.v b/hw/rtl/libs/VX_countones.v index 625a969f..6160d0df 100644 --- a/hw/rtl/libs/VX_countones.v +++ b/hw/rtl/libs/VX_countones.v @@ -1,3 +1,6 @@ + +`include "VX_platform.vh" + module VX_countones #( parameter N = 10 ) ( diff --git a/hw/rtl/libs/VX_divide.v b/hw/rtl/libs/VX_divide.v index 83418f33..7a613363 100644 --- a/hw/rtl/libs/VX_divide.v +++ b/hw/rtl/libs/VX_divide.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_divide #( parameter WIDTHN = 1, diff --git a/hw/rtl/libs/VX_fair_arbiter.v b/hw/rtl/libs/VX_fair_arbiter.v index 9ffc1ecd..2e07625b 100644 --- a/hw/rtl/libs/VX_fair_arbiter.v +++ b/hw/rtl/libs/VX_fair_arbiter.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_fair_arbiter #( parameter N = 1 diff --git a/hw/rtl/libs/VX_fixed_arbiter.v b/hw/rtl/libs/VX_fixed_arbiter.v index 7f6fbfa3..3bcab5bf 100644 --- a/hw/rtl/libs/VX_fixed_arbiter.v +++ b/hw/rtl/libs/VX_fixed_arbiter.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_fixed_arbiter #( parameter N = 1 diff --git a/hw/rtl/libs/VX_generic_queue.v b/hw/rtl/libs/VX_generic_queue.v index fce614fe..8beff584 100644 --- a/hw/rtl/libs/VX_generic_queue.v +++ b/hw/rtl/libs/VX_generic_queue.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_generic_queue #( parameter DATAW = 1, diff --git a/hw/rtl/libs/VX_generic_register.v b/hw/rtl/libs/VX_generic_register.v index d3c76dff..637f4f43 100644 --- a/hw/rtl/libs/VX_generic_register.v +++ b/hw/rtl/libs/VX_generic_register.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_generic_register #( parameter N = 1, diff --git a/hw/rtl/libs/VX_generic_stack.v b/hw/rtl/libs/VX_generic_stack.v index d43b7816..252d3032 100644 --- a/hw/rtl/libs/VX_generic_stack.v +++ b/hw/rtl/libs/VX_generic_stack.v @@ -1,4 +1,6 @@ +`include "VX_platform.vh" + module VX_generic_stack #( parameter WIDTH = 1, parameter DEPTH = 1 diff --git a/hw/rtl/libs/VX_index_queue.v b/hw/rtl/libs/VX_index_queue.v index ce91845c..ed8e0970 100644 --- a/hw/rtl/libs/VX_index_queue.v +++ b/hw/rtl/libs/VX_index_queue.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_index_queue #( parameter DATAW = 1, diff --git a/hw/rtl/libs/VX_matrix_arbiter.v b/hw/rtl/libs/VX_matrix_arbiter.v index 97b05cd7..62414abd 100644 --- a/hw/rtl/libs/VX_matrix_arbiter.v +++ b/hw/rtl/libs/VX_matrix_arbiter.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_matrix_arbiter #( parameter N = 1 diff --git a/hw/rtl/libs/VX_multiplier.v b/hw/rtl/libs/VX_multiplier.v index c5def2ae..fc38e889 100644 --- a/hw/rtl/libs/VX_multiplier.v +++ b/hw/rtl/libs/VX_multiplier.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_multiplier #( parameter WIDTHA = 1, diff --git a/hw/rtl/libs/VX_onehot_encooder.v b/hw/rtl/libs/VX_onehot_encooder.v index 06a25033..65c6dd8e 100644 --- a/hw/rtl/libs/VX_onehot_encooder.v +++ b/hw/rtl/libs/VX_onehot_encooder.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_onehot_encoder #( parameter N = 6 diff --git a/hw/rtl/libs/VX_priority_encoder.v b/hw/rtl/libs/VX_priority_encoder.v index a62273a7..ca5c42d4 100644 --- a/hw/rtl/libs/VX_priority_encoder.v +++ b/hw/rtl/libs/VX_priority_encoder.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_priority_encoder #( parameter N = 1 diff --git a/hw/rtl/libs/VX_rr_arbiter.v b/hw/rtl/libs/VX_rr_arbiter.v index fb19e108..05910a71 100644 --- a/hw/rtl/libs/VX_rr_arbiter.v +++ b/hw/rtl/libs/VX_rr_arbiter.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_rr_arbiter #( parameter N = 1 diff --git a/hw/rtl/libs/VX_scope.v b/hw/rtl/libs/VX_scope.v index 7ec7b5f3..dcca50ee 100644 --- a/hw/rtl/libs/VX_scope.v +++ b/hw/rtl/libs/VX_scope.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_scope #( parameter DATAW = 64, diff --git a/hw/rtl/libs/VX_shift_register.v b/hw/rtl/libs/VX_shift_register.v index 46ca494c..c6a63ae1 100644 --- a/hw/rtl/libs/VX_shift_register.v +++ b/hw/rtl/libs/VX_shift_register.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_shift_register #( parameter DATAW = 1, diff --git a/hw/rtl/tex_unit/VX_tex_mgr.v b/hw/rtl/tex_unit/VX_tex_mgr.v index 0452e00f..a7de9180 100644 --- a/hw/rtl/tex_unit/VX_tex_mgr.v +++ b/hw/rtl/tex_unit/VX_tex_mgr.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_tex_mgr ( input wire clk, diff --git a/hw/rtl/tex_unit/VX_tex_unit.v b/hw/rtl/tex_unit/VX_tex_unit.v index f400ad63..a7c38cfe 100644 --- a/hw/rtl/tex_unit/VX_tex_unit.v +++ b/hw/rtl/tex_unit/VX_tex_unit.v @@ -1,4 +1,4 @@ -`include "VX_define.vh" +`include "VX_platform.vh" module VX_tex_unit #( parameter TADDRW = 32, diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index 7aec5eeb..77c2a151 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -29,8 +29,8 @@ CF += -std=c++11 -fms-extensions -I../.. VF += --language 1800-2009 --assert -Wall -Wpedantic VF += -Wno-DECLFILENAME VF += --x-initial unique --x-assign unique -VF += -exe $(SRCS) $(INCLUDE) -VF += -cc Vortex.v -top-module Vortex +VF += --exe $(SRCS) $(INCLUDE) +VF += --cc Vortex.v --top-module Vortex VF += verilator.vlt DBG += -DVCD_OUTPUT $(DBG_FLAGS) diff --git a/hw/syn/quartus/pipeline/Makefile b/hw/syn/quartus/pipeline/Makefile index 49232fe8..294d9b64 100644 --- a/hw/syn/quartus/pipeline/Makefile +++ b/hw/syn/quartus/pipeline/Makefile @@ -1,6 +1,8 @@ PROJECT = VX_pipeline TOP_LEVEL_ENTITY = VX_pipeline SRC_FILE = VX_pipeline.v +FPU_INCLUDE = ../../../rtl/fp_cores/fpnew/src;../../../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl;../../../rtl/fp_cores/fpnew/src/common_cells/include;../../../rtl/fp_cores/fpnew/src/common_cells/src +RTL_INCLUDE = $(FPU_INCLUDE);../../../rtl;../../../rtl/libs;../../../rtl/interfaces PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf # Part, Family @@ -49,7 +51,7 @@ smart.log: $(PROJECT_FILES) # Project initialization $(PROJECT_FILES): - quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc ../project.sdc -inc "../../../rtl;../../../rtl/libs;../../../rtl/interfaces" + quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src "$(SRC_FILE)" -sdc ../project.sdc -inc "$(RTL_INCLUDE)" syn.chg: $(STAMP) syn.chg From 97962a150bbfd5f579508242d46eec728b0e0891 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 14:28:54 -0700 Subject: [PATCH 24/94] minor update --- hw/rtl/VX_writeback.v | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index cd63044e..09f74f43 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -20,12 +20,12 @@ module VX_writeback #( ); reg [`NUM_THREADS-1:0][31:0] wb_data [`ISSUEQ_SIZE-1:0]; - reg [`NW_BITS-1:0] wb_warp_num [`ISSUEQ_SIZE-1:0]; - reg [`NUM_THREADS-1:0] wb_thread_mask [`ISSUEQ_SIZE-1:0]; - reg [31:0] wb_curr_PC [`ISSUEQ_SIZE-1:0]; - reg [`NR_BITS-1:0] wb_rd [`ISSUEQ_SIZE-1:0]; - reg wb_rd_is_fp [`ISSUEQ_SIZE-1:0]; - reg [`ISSUEQ_SIZE-1:0] wb_pending; + reg [`NW_BITS-1:0] wb_warp_num [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0] wb_thread_mask [`ISSUEQ_SIZE-1:0]; + reg [31:0] wb_curr_PC [`ISSUEQ_SIZE-1:0]; + reg [`NR_BITS-1:0] wb_rd [`ISSUEQ_SIZE-1:0]; + reg wb_rd_is_fp [`ISSUEQ_SIZE-1:0]; + reg [`ISSUEQ_SIZE-1:0] wb_pending; wire [`ISTAG_BITS-1:0] wb_index; wire wb_valid, wb_valid_unqual; From 8abc15d266bb532dfd77bf2220736ed702b571e9 Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Tue, 28 Jul 2020 18:30:20 -0400 Subject: [PATCH 25/94] All runtime tests can be run from runtime/tests Makefile --- hw/simulate/testbench.cpp | 7 ++----- runtime/tests/Makefile | 10 ++++++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index 59fa6edc..b552b793 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -5,8 +5,6 @@ int main(int argc, char *argv[]) { -//#define ALL_TESTS -//#ifdef ALL_TESTS if(argc == 1) { bool passed = true; @@ -84,8 +82,7 @@ int main(int argc, char *argv[]) return !passed; } -//#else - if (argc >= 2) { + else { char* test = argv[2]; std::cerr << test << std::endl; @@ -101,5 +98,5 @@ int main(int argc, char *argv[]) return !curr; } -//#endif + } diff --git a/runtime/tests/Makefile b/runtime/tests/Makefile index 3ddc4fdd..4543b3ef 100644 --- a/runtime/tests/Makefile +++ b/runtime/tests/Makefile @@ -3,9 +3,19 @@ all: $(MAKE) -C dev $(MAKE) -C hello $(MAKE) -C nlTest + $(MAKE) -C vecadd + +run: + cd simple && $(MAKE) run + cd dev && $(MAKE) run + cd hello && $(MAKE) run + cd nlTest && $(MAKE) run + cd vecadd && $(MAKE) run clean: $(MAKE) -C simple clean $(MAKE) -C dev clean $(MAKE) -C hello clean $(MAKE) -C nlTest clean + $(MAKE) -C vecadd clean + From 60e05ae19aa81ffef35e8deb37459cbee8a85103 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 28 Jul 2020 22:45:43 -0700 Subject: [PATCH 26/94] minor update --- driver/tests/demo/Makefile | 8 +++--- hw/rtl/VX_writeback.v | 57 ++++++++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 22 deletions(-) diff --git a/driver/tests/demo/Makefile b/driver/tests/demo/Makefile index 0368e5b3..e142e5fd 100644 --- a/driver/tests/demo/Makefile +++ b/driver/tests/demo/Makefile @@ -36,16 +36,16 @@ $(PROJECT): $(SRCS) $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -L../../stub -lvortex -o $@ run-fpga: $(PROJECT) - LD_LIBRARY_PATH=../../opae:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 16 + LD_LIBRARY_PATH=../../opae:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 run-ase: $(PROJECT) - ASE_LOG=0 LD_LIBRARY_PATH=../../opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 16 + ASE_LOG=0 LD_LIBRARY_PATH=../../opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 run-rtlsim: $(PROJECT) - LD_LIBRARY_PATH=../../rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 16 + LD_LIBRARY_PATH=../../rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 run-simx: $(PROJECT) - LD_LIBRARY_PATH=../../simx:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 16 + LD_LIBRARY_PATH=../../simx:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 .depend: $(SRCS) $(CXX) $(CXXFLAGS) -MM $^ > .depend; diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 09f74f43..7230502f 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -25,21 +25,46 @@ module VX_writeback #( reg [31:0] wb_curr_PC [`ISSUEQ_SIZE-1:0]; reg [`NR_BITS-1:0] wb_rd [`ISSUEQ_SIZE-1:0]; reg wb_rd_is_fp [`ISSUEQ_SIZE-1:0]; - reg [`ISSUEQ_SIZE-1:0] wb_pending; + reg [`ISSUEQ_SIZE-1:0] wb_pending, wb_pending_n; - wire [`ISTAG_BITS-1:0] wb_index; - wire wb_valid, wb_valid_unqual; + reg [`ISTAG_BITS-1:0] wb_index; + wire [`ISTAG_BITS-1:0] wb_index_n; + + reg wb_valid; + wire wb_valid_n; + + always @(*) begin + wb_pending_n = wb_pending; + + if (wb_valid) begin + wb_pending_n[wb_index] = 0; + end + + if (alu_commit_if.valid) begin + wb_pending_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.wb; + end + if (lsu_commit_if.valid) begin + wb_pending_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.wb; + end + if (csr_commit_if.valid) begin + wb_pending_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.wb; + end + if (mul_commit_if.valid) begin + wb_pending_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.wb; + end + if (fpu_commit_if.valid) begin + wb_pending_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.wb; + end + end VX_priority_encoder #( .N(`ISSUEQ_SIZE) - ) free_slots_encoder ( - .data_in (wb_pending), - .data_out (wb_index), - .valid_out (wb_valid_unqual) + ) wb_select ( + .data_in (wb_pending_n), + .data_out (wb_index_n), + .valid_out (wb_valid_n) ); - assign wb_valid = wb_valid_unqual && writeback_if.ready; - always @(posedge clk) begin if (reset) begin wb_pending <= 0; @@ -51,7 +76,6 @@ module VX_writeback #( wb_curr_PC [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.curr_PC; wb_rd [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd; wb_rd_is_fp [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd_is_fp; - wb_pending [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.wb; end if (lsu_commit_if.valid) begin wb_data [lsu_commit_if.issue_tag] <= lsu_commit_if.data; @@ -60,7 +84,6 @@ module VX_writeback #( wb_curr_PC [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.curr_PC; wb_rd [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd; wb_rd_is_fp [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd_is_fp; - wb_pending [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.wb; end if (csr_commit_if.valid) begin wb_data [csr_commit_if.issue_tag] <= csr_commit_if.data; @@ -69,7 +92,6 @@ module VX_writeback #( wb_curr_PC [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.curr_PC; wb_rd [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd; wb_rd_is_fp [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd_is_fp; - wb_pending [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.wb; end if (mul_commit_if.valid) begin wb_data [mul_commit_if.issue_tag] <= mul_commit_if.data; @@ -78,7 +100,6 @@ module VX_writeback #( wb_curr_PC [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.curr_PC; wb_rd [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd; wb_rd_is_fp [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd_is_fp; - wb_pending [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.wb; end if (fpu_commit_if.valid) begin wb_data [fpu_commit_if.issue_tag] <= fpu_commit_if.data; @@ -87,16 +108,16 @@ module VX_writeback #( wb_curr_PC [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.curr_PC; wb_rd [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd; wb_rd_is_fp [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd_is_fp; - wb_pending [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.wb; end - if (wb_valid) begin - wb_pending [wb_index] <= 0; - end + + wb_pending <= wb_pending_n; + wb_index <= wb_index_n; + wb_valid <= wb_valid_n && writeback_if.ready; end end // writeback request - assign writeback_if.valid = wb_pending [wb_index]; + assign writeback_if.valid = wb_valid; assign writeback_if.warp_num = wb_warp_num [wb_index]; assign writeback_if.thread_mask = wb_thread_mask [wb_index]; assign writeback_if.curr_PC = wb_curr_PC [wb_index]; From 27e95530efecb8a7f850e204f8fd570d5fc3245e Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 30 Jul 2020 03:06:01 -0700 Subject: [PATCH 27/94] pipeline optimization --- hw/rtl/VX_alu_unit.v | 69 +++++++++----------- hw/rtl/VX_config.vh | 4 +- hw/rtl/VX_decode.v | 89 +++++++++++++++---------- hw/rtl/VX_define.vh | 10 ++- hw/rtl/VX_gpr_fp_ctrl.v | 87 ++++++------------------- hw/rtl/VX_gpr_stage.v | 59 +++++------------ hw/rtl/VX_gpu_unit.v | 2 +- hw/rtl/VX_issue.v | 13 ++-- hw/rtl/VX_platform.vh | 8 +++ hw/rtl/VX_scheduler.v | 101 +++++++---------------------- hw/rtl/VX_warp_sched.v | 12 ++-- hw/rtl/VX_writeback.v | 7 -- hw/rtl/interfaces/VX_decode_if.v | 10 +-- hw/rtl/interfaces/VX_gpr_read_if.v | 5 +- hw/rtl/interfaces/VX_wb_if.v | 2 +- hw/rtl/libs/VX_cam_buffer.v | 2 +- hw/rtl/libs/VX_generic_queue.v | 6 +- hw/rtl/libs/VX_generic_stack.v | 34 ---------- hw/rtl/libs/VX_index_queue.v | 2 +- hw/unit_tests/VX_divide_tb.v | 2 +- 20 files changed, 184 insertions(+), 340 deletions(-) delete mode 100644 hw/rtl/libs/VX_generic_stack.v diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 61867ac2..7a5dd6a3 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -46,9 +46,9 @@ module VX_alu_unit #( default: alu_result[i] = alu_in1[i] + alu_in2[i]; // ADD, LUI, AUIPC endcase end - end + end - wire [`NT_BITS-1:0] br_result_index; + wire [`NT_BITS-1:0] br_result_index, br_result_index_o; VX_priority_encoder #( .N(`NUM_THREADS) @@ -58,15 +58,35 @@ module VX_alu_unit #( `UNUSED_PIN (valid_out) ); - wire [32:0] br_result = sub_result[br_result_index]; - wire br_sign = br_result[32]; + wire [`BR_BITS-1:0] br_op = `IS_BR_OP(alu_req_if.alu_op) ? `BR_OP(alu_req_if.alu_op) : 0; + wire [`BR_BITS-1:0] br_op_o; + + wire [31:0] br_addr = (br_op == `BR_JALR) ? alu_req_if.rs1_data[br_result_index] : alu_req_if.curr_PC; + wire [31:0] br_dest = $signed(br_addr) + $signed(alu_req_if.offset); + + wire is_jal = (alu_op == `ALU_JAL || alu_op == `ALU_JALR); + wire [`NUM_THREADS-1:0][31:0] alu_jal_result = is_jal ? {`NUM_THREADS{alu_req_if.next_PC}} : alu_result; + + wire stall = ~alu_commit_if.ready && alu_commit_if.valid; + + VX_generic_register #( + .N(1 + `NW_BITS + `ISTAG_BITS + (`NUM_THREADS * 32) + `BR_BITS + 32 + `NT_BITS) + ) alu_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (0), + .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.issue_tag, alu_jal_result, br_op, br_dest, br_result_index}), + .out ({alu_commit_if.valid, branch_ctl_if.warp_num, alu_commit_if.issue_tag, alu_commit_if.data, br_op_o, branch_ctl_if.dest, br_result_index_o}) + ); + + wire [31:0] br_result = alu_commit_if.data[br_result_index_o]; + wire br_sign = br_result[31]; wire br_nzero = (| br_result[31:0]); - wire [`BR_BITS-1:0] br_op = `BR_OP(alu_req_if.alu_op); - reg br_taken; always @(*) begin - case (br_op) + case (br_op_o) `BR_NE: br_taken = br_nzero; `BR_EQ: br_taken = ~br_nzero; `BR_LT, @@ -75,39 +95,10 @@ module VX_alu_unit #( `BR_GEU: br_taken = ~br_sign; default: br_taken = 1'b1; endcase - end + end - wire [31:0] br_addr = (br_op == `BR_JALR) ? alu_req_if.rs1_data[br_result_index] : alu_req_if.curr_PC; - wire [31:0] br_dest = $signed(br_addr) + $signed(alu_req_if.offset); - - wire is_jal = (alu_op == `ALU_JAL || alu_op == `ALU_JALR); - wire is_br_valid = `IS_BR_OP(alu_op) && alu_req_if.valid; - - wire [`NUM_THREADS-1:0][31:0] alu_jal_result = is_jal ? {`NUM_THREADS{alu_req_if.next_PC}} : alu_result; - - wire stall = ~alu_commit_if.ready && alu_commit_if.valid; - - VX_generic_register #( - .N(1 + `NW_BITS + 1 + 32) - ) branch_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (0), - .in ({is_br_valid, alu_req_if.warp_num, br_taken, br_dest}), - .out ({branch_ctl_if.valid, branch_ctl_if.warp_num, branch_ctl_if.taken, branch_ctl_if.dest}) - ); - - VX_generic_register #( - .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32)) - ) alu_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (0), - .in ({alu_req_if.valid, alu_req_if.issue_tag, alu_jal_result}), - .out ({alu_commit_if.valid, alu_commit_if.issue_tag, alu_commit_if.data}) - ); + assign branch_ctl_if.valid = alu_req_if.valid && (br_op_o != 0); + assign branch_ctl_if.taken = br_taken; assign alu_req_if.ready = ~stall; diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index 2e6929cb..0562cc3f 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -28,7 +28,7 @@ `endif `ifndef NUM_CSRS -`define NUM_CSRS 1024 +`define NUM_CSRS 64 `endif `ifndef STARTUP_ADDR @@ -57,7 +57,7 @@ `define EXT_M_ENABLE -//`define EXT_F_ENABLE +`define EXT_F_ENABLE // Configuration Values ======================================================= diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 5e737e1d..ff1d839c 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -35,10 +35,10 @@ module VX_decode #( wire [6:0] func7 = instr[31:25]; wire [11:0] u_12 = instr[31:20]; - wire [`NR_BITS-1:0] rd = instr[11:7]; - wire [`NR_BITS-1:0] rs1 = instr[19:15]; - wire [`NR_BITS-1:0] rs2 = instr[24:20]; - wire [`NR_BITS-1:0] rs3 = instr[31:27]; + wire [4:0] rd = instr[11:7]; + wire [4:0] rs1 = instr[19:15]; + wire [4:0] rs2 = instr[24:20]; + wire [4:0] rs3 = instr[31:27]; // opcode types wire is_rtype = (opcode == `INST_R); @@ -202,7 +202,7 @@ module VX_decode #( wire is_fcvtf = is_fci && (func7 == 7'h68); // convert to float wire is_fmvcls = is_fci && (func7 == 7'h70 || func7 == 7'h78); // move + class wire is_fr4 = is_fmadd || is_fmsub || is_fnmsub || is_fnmadd; - wire is_fpu = (is_fl || is_fs || is_fci || is_fr4); + wire is_fpu = (is_fl || is_fs || is_fci || is_fr4); always @(*) begin fpu_op = `FPU_OTHER; @@ -242,7 +242,8 @@ module VX_decode #( wire is_fcvtf = 0; wire is_fmvcls = 0; wire is_fr4 = 0; - wire is_fpu = 0; + wire is_fpu = 0; + always @(*) begin fpu_op = `FPU_OTHER; end @@ -271,6 +272,29 @@ module VX_decode #( endcase end + /////////////////////////////////////////////////////////////////////////// + + wire use_rd = (is_fl || is_fci || is_fr4) + || ((rd != 0) && (is_itype || is_rtype || is_lui || is_auipc || is_csr || is_jal || is_jalr || is_jals || is_ltype)); + + wire use_rs1 = is_fpu + || is_gpu + || ((is_jalr || is_btype || is_ltype || is_stype || is_itype || is_rtype || ~is_csr_imm || is_gpu) && (rs1 != 0)); + + wire use_rs2 = (is_fpu && ~(is_fl || (fpu_op == `FPU_SQRT) || is_fcvti || is_fcvtf || is_fmvcls)) + || (is_gpu && (gpu_op == `GPU_BAR || gpu_op == `GPU_WSPAWN)) + || ((is_btype || is_stype || is_rtype) && (rs2 != 0)); + + wire use_rs3 = is_fr4; + + wire rd_is_fp = is_fpu && ~(is_fcmp || is_fcvti || (fpu_op == `FPU_MVXW || fpu_op == `FPU_CLASS)); + wire rs1_is_fp = is_fr4 || (is_fci && ~(is_fcvtf || (fpu_op == `FPU_MVWX))); + wire rs2_is_fp = is_fs || is_fr4 || is_fci; + + wire [4:0] rs1_qual = is_lui ? 5'h0 : rs1; + + /////////////////////////////////////////////////////////////////////////// + VX_decode_if decode_tmp_if(); assign decode_tmp_if.valid = ifetch_rsp_if.valid; @@ -297,9 +321,26 @@ module VX_decode #( (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : 0; - assign decode_tmp_if.rd = rd; - assign decode_tmp_if.rs1 = is_lui ? `NR_BITS'(0) : rs1; - assign decode_tmp_if.rs2 = rs2; + assign decode_tmp_if.wb = use_rd; + + `ifdef EXT_F_ENABLE + assign decode_tmp_if.rd = {rd_is_fp, rd}; + assign decode_tmp_if.rs1 = {rs1_is_fp, rs1_qual}; + assign decode_tmp_if.rs2 = {rs2_is_fp, rs2}; + assign decode_tmp_if.rs3 = {1'b1, rs3}; + `else + assign decode_tmp_if.rd = rd; + assign decode_tmp_if.rs1 = rs1_qual; + assign decode_tmp_if.rs2 = rs2; + assign decode_tmp_if.rs3 = rs3; + `endif + + assign decode_tmp_if.use_rs3 = use_rs3; + + assign decode_tmp_if.reg_use_mask = ((`NUM_REGS)'(use_rd) << rd) + | ((`NUM_REGS)'(use_rs1) << rs1_qual) + | ((`NUM_REGS)'(use_rs2) << rs2) + | ((`NUM_REGS)'(use_rs3) << rs3); assign decode_tmp_if.imm = (is_lui || is_auipc) ? {upper_imm, 12'(0)} : (is_jal || is_jalr || is_jals) ? jalx_offset : @@ -308,26 +349,8 @@ module VX_decode #( assign decode_tmp_if.rs1_is_PC = is_auipc; assign decode_tmp_if.rs2_is_imm = is_itype || is_lui || is_auipc || is_csr_imm; - - assign decode_tmp_if.use_rs1 = is_fpu - || is_gpu - || ((is_jalr || is_btype || is_ltype || is_stype || is_itype || is_rtype || ~is_csr_imm || is_gpu) - && (decode_tmp_if.rs1 != 0)); - - assign decode_tmp_if.use_rs2 = (is_fpu && ~(is_fl || (fpu_op == `FPU_SQRT) || is_fcvti || is_fcvtf || is_fmvcls)) - || (is_gpu && (gpu_op == `GPU_BAR || gpu_op == `GPU_WSPAWN)) - || ((is_btype || is_stype || is_rtype) - && (decode_tmp_if.rs2 != 0)); - - assign decode_tmp_if.rd_is_fp = is_fpu && ~(is_fcmp || is_fcvti || (fpu_op == `FPU_MVXW || fpu_op == `FPU_CLASS)); - assign decode_tmp_if.rs1_is_fp = is_fr4 || (is_fci && ~(is_fcvtf || (fpu_op == `FPU_MVWX))); - assign decode_tmp_if.rs2_is_fp = is_fs || is_fr4 || is_fci; - assign decode_tmp_if.rs3 = rs3; - assign decode_tmp_if.use_rs3 = is_fr4; - assign decode_tmp_if.frm = func3; - - assign decode_tmp_if.wb = (is_fl || is_fci || is_fr4) - || ((rd != 0) && (is_itype || is_rtype || is_lui || is_auipc || is_csr || is_jal || is_jalr || is_jals || is_ltype)); + + assign decode_tmp_if.frm = func3; assign join_if.is_join = in_valid && is_gpu && (gpu_op == `GPU_JOIN); assign join_if.warp_num = ifetch_rsp_if.warp_num; @@ -338,14 +361,14 @@ module VX_decode #( wire stall = ~decode_if.ready && decode_if.valid; VX_generic_register #( - .N(1 + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + 1 + 1 + `FRM_BITS) + .N(1 + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + `FRM_BITS + `NUM_REGS) ) decode_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.rd_is_fp, decode_tmp_if.frm}), - .out ({decode_if.valid, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.rd_is_fp, decode_if.frm}) + .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, decode_tmp_if.reg_use_mask}), + .out ({decode_if.valid, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.frm, decode_if.reg_use_mask}) ); assign ifetch_rsp_if.ready = ~stall; @@ -357,7 +380,7 @@ module VX_decode #( print_ex_type(decode_tmp_if.ex_type); $write(", op="); print_ex_op(decode_tmp_if.ex_type, decode_tmp_if.ex_op); - $write(", tmask=%b, wb=%b, rd=%0d, rs1=%0d, rs2=%0d, rs3=%0d, imm=%0h, use_pc=%b, use_imm=%b, use_rs1=%b, use_rs2=%b, use_rs3=%b, rd_is_fp=%b, rs1_is_fp=%b, rs2_is_fp=%b, frm=", decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.rs3, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.use_rs3, decode_tmp_if.rd_is_fp,decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp); + $write(", tmask=%b, wb=%b, rd=%0d, rs1=%0d, rs2=%0d, rs3=%0d, imm=%0h, use_pc=%b, use_imm=%b, frm=", decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.rs3, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm); print_frm(decode_tmp_if.frm); $write("\n"); diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 6027223f..8e0279b5 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -7,7 +7,6 @@ /////////////////////////////////////////////////////////////////////////////// -`define QUEUE_FORCE_MLAB 1 // `define SYNTHESIS 1 // `define ASIC 1 @@ -23,7 +22,11 @@ `define REQS_BITS `LOG2UP(NUM_REQUESTS) +`ifdef EXT_F_ENABLE +`define NUM_REGS 64 +`else `define NUM_REGS 32 +`endif `define NR_BITS `LOG2UP(`NUM_REGS) @@ -33,7 +36,9 @@ `define ISTAG_BITS `LOG2UP(`ISSUEQ_SIZE) -`define LATENCY_IDIV 23 +/////////////////////////////////////////////////////////////////////////////// + +`define LATENCY_IDIV 24 `define LATENCY_IMUL 2 `define LATENCY_FMULADD 2 @@ -408,7 +413,6 @@ typedef struct packed { logic [`NUM_THREADS-1:0] thread_mask; logic [31:0] curr_PC; logic [`NR_BITS-1:0] rd; - logic rd_is_fp; logic wb; } is_data_t; diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index fab66404..1a87a5c3 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -3,98 +3,49 @@ // control module to support multi-cycle read for fp register module VX_gpr_fp_ctrl ( - input wire clk, - input wire reset, + input wire clk, + input wire reset, - input wire [`NUM_THREADS-1:0][31:0] rs1_int_data, - input wire [`NUM_THREADS-1:0][31:0] rs2_int_data, - input wire [`NUM_THREADS-1:0][31:0] rs1_fp_data, - input wire [`NUM_THREADS-1:0][31:0] rs2_fp_data, + input wire [`NUM_THREADS-1:0][31:0] rs1_data, + input wire [`NUM_THREADS-1:0][31:0] rs2_data, // outputs - output wire [`NR_BITS-1:0] raddr1, - output wire [`NR_BITS-1:0] raddr2, + output wire [`NR_BITS-1:0] raddr1, - VX_gpr_read_if gpr_read_if + VX_gpr_read_if gpr_read_if ); - // param - localparam GPR_DELAY_WID = 1; - reg [GPR_DELAY_WID-1:0] multi_cyc_state; - reg [`NUM_THREADS-1:0][31:0] tmp_rs1_data; - reg [`NUM_THREADS-1:0][31:0] tmp_rs2_data; - reg [`NUM_THREADS-1:0][31:0] rs1_data; - reg [`NUM_THREADS-1:0][31:0] rs2_data; - reg [`NUM_THREADS-1:0][31:0] rs3_data; + reg [`NUM_THREADS-1:0][31:0] tmp_rs1_data; + reg read_rs3; - wire gpr_delay; + wire gpr_delay = gpr_read_if.valid && gpr_read_if.use_rs3 && ~read_rs3; wire gpr_fire = gpr_read_if.valid && gpr_read_if.ready; always @(posedge clk) begin if (reset) begin - multi_cyc_state <= 0; + read_rs3 <= 0; end else if (gpr_delay) begin - multi_cyc_state <= 1; + read_rs3 <= 1; end else if (gpr_fire) begin - multi_cyc_state <= 0; + read_rs3 <= 0; end end - // select rs1 data - - always @(posedge clk) begin - if (reset) begin - tmp_rs1_data <= 0; - end else begin - if (gpr_delay) begin - if (gpr_read_if.rs1_is_fp) begin - tmp_rs1_data <= rs1_fp_data; - end else begin - tmp_rs1_data <= rs1_int_data; - end - end - end - end - - // select rs2 data - - always @(posedge clk) begin - if(reset) begin - tmp_rs2_data <= 0; - end else begin - if (gpr_delay) begin - if (gpr_read_if.rs2_is_fp) begin - tmp_rs2_data <= rs2_fp_data; - end else begin - tmp_rs2_data <= rs2_int_data; - end - end + // backup original rs1 data + always @(posedge clk) begin + if (gpr_delay) begin + tmp_rs1_data <= rs1_data; end end // outputs - - assign gpr_delay = gpr_read_if.valid && gpr_read_if.use_rs3 && (0 == multi_cyc_state); - assign raddr1 = multi_cyc_state ? gpr_read_if.rs3 : gpr_read_if.rs1; - assign raddr2 = gpr_read_if.rs2; - - always @(*) begin - if (gpr_read_if.use_rs3) begin - rs1_data = tmp_rs1_data; - rs2_data = tmp_rs2_data; - rs3_data = rs1_fp_data; - end else begin - rs1_data = gpr_read_if.rs1_is_fp ? rs1_fp_data : rs1_int_data; - rs2_data = gpr_read_if.rs2_is_fp ? rs2_fp_data : rs2_int_data; - rs3_data = {`NUM_THREADS{32'h8000_0000}}; // default value: -0 in single fp - end - end + assign raddr1 = read_rs3 ? gpr_read_if.rs3 : gpr_read_if.rs1; assign gpr_read_if.ready = ~gpr_delay; - assign gpr_read_if.rs1_data = rs1_data; + assign gpr_read_if.rs1_data = gpr_read_if.use_rs3 ? tmp_rs1_data : rs1_data; assign gpr_read_if.rs2_data = rs2_data; - assign gpr_read_if.rs3_data = rs3_data; + assign gpr_read_if.rs3_data = rs1_data; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 529945f4..06e7d344 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -14,79 +14,52 @@ module VX_gpr_stage #( ); `UNUSED_VAR (reset) - wire [`NUM_THREADS-1:0][31:0] rs1_int_data [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs2_int_data [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs1_data [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs2_data [`NUM_WARPS-1:0]; wire [`NR_BITS-1:0] raddr1; - wire [`NR_BITS-1:0] raddr2; genvar i; for (i = 0; i < `NUM_WARPS; i++) begin - wire [`NUM_WARPS-1:0] we = writeback_if.thread_mask & {`NUM_THREADS{writeback_if.valid && ~writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; + wire [`NUM_THREADS-1:0] we = writeback_if.thread_mask + & {`NUM_THREADS{writeback_if.valid && (i == writeback_if.warp_num)}}; VX_gpr_ram gpr_int_ram ( .clk (clk), .we (we), .waddr (writeback_if.rd), .wdata (writeback_if.data), .rs1 (raddr1), - .rs2 (raddr2), - .rs1_data (rs1_int_data[i]), - .rs2_data (rs2_int_data[i]) + .rs2 (gpr_read_if.rs2), + .rs1_data (rs1_data[i]), + .rs2_data (rs2_data[i]) ); end -`ifdef EXT_F_ENABLE - - wire [`NUM_THREADS-1:0][31:0] rs1_fp_data [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs2_fp_data [`NUM_WARPS-1:0]; - - for (i = 0; i < `NUM_WARPS; i++) begin - wire [`NUM_WARPS-1:0] we = writeback_if.thread_mask & {`NUM_THREADS{writeback_if.valid && writeback_if.rd_is_fp && (i == writeback_if.warp_num)}}; - VX_gpr_ram gpr_fp_ram ( - .clk (clk), - .we (we), - .waddr (writeback_if.rd), - .wdata (writeback_if.data), - .rs1 (raddr1), - .rs2 (raddr2), - .rs1_data (rs1_fp_data[i]), - .rs2_data (rs2_fp_data[i]) - ); - end - +`ifdef EXT_F_ENABLE VX_gpr_fp_ctrl VX_gpr_fp_ctrl ( - .clk (clk), - .reset (reset), + .clk (clk), + .reset (reset), //inputs - .rs1_int_data (rs1_int_data[gpr_read_if.warp_num]), - .rs2_int_data (rs2_int_data[gpr_read_if.warp_num]), - .rs1_fp_data (rs1_fp_data[gpr_read_if.warp_num]), - .rs2_fp_data (rs2_fp_data[gpr_read_if.warp_num]), + .rs1_data (rs1_data[gpr_read_if.warp_num]), + .rs2_data (rs2_data[gpr_read_if.warp_num]), // outputs - .raddr1 (raddr1), - .raddr2 (raddr2), - .gpr_read_if (gpr_read_if) + .raddr1 (raddr1), + .gpr_read_if(gpr_read_if) ); - `else assign raddr1 = gpr_read_if.rs1; - assign raddr2 = gpr_read_if.rs2; - assign gpr_read_if.rs1_data = rs1_int_data[gpr_read_if.warp_num]; - assign gpr_read_if.rs2_data = rs2_int_data[gpr_read_if.warp_num]; + assign gpr_read_if.rs1_data = rs1_data[gpr_read_if.warp_num]; + assign gpr_read_if.rs2_data = rs2_data[gpr_read_if.warp_num]; assign gpr_read_if.rs3_data = 0; assign gpr_read_if.ready = 1; wire valid = gpr_read_if.valid; - wire rs1_is_fp = gpr_read_if.rs1_is_fp; - wire rs2_is_fp = gpr_read_if.rs2_is_fp; wire use_rs3 = gpr_read_if.use_rs3; wire [`NR_BITS-1:0] rs3 = gpr_read_if.rs3; `UNUSED_VAR (valid); - `UNUSED_VAR (rs1_is_fp); - `UNUSED_VAR (rs2_is_fp); `UNUSED_VAR (use_rs3); `UNUSED_VAR (rs3); `endif diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index 23439d7d..bde5d1c9 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -53,7 +53,7 @@ module VX_gpu_unit #( wire[`NUM_THREADS-1:0] split_new_use_mask; wire[`NUM_THREADS-1:0] split_new_later_mask; - for (i = 0; i < `NUM_THREADS; i++) begin : masks_init + for (i = 0; i < `NUM_THREADS; i++) begin wire curr_bool = (gpu_req_if.rs1_data[i] == 32'b1); assign split_new_use_mask[i] = gpu_req_if.thread_mask[i] & (curr_bool); assign split_new_later_mask[i] = gpu_req_if.thread_mask[i] & (!curr_bool); diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index a445022f..1967df71 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -23,8 +23,6 @@ module VX_issue #( assign gpr_read_if.rs1 = decode_if.rs1; assign gpr_read_if.rs2 = decode_if.rs2; assign gpr_read_if.rs3 = decode_if.rs3; - assign gpr_read_if.rs1_is_fp = decode_if.rs1_is_fp; - assign gpr_read_if.rs2_is_fp = decode_if.rs2_is_fp; assign gpr_read_if.use_rs3 = decode_if.use_rs3; wire [`ISTAG_BITS-1:0] issue_tag, issue_tmp_tag; @@ -52,8 +50,7 @@ module VX_issue #( .mul_busy (mul_busy), .fpu_busy (fpu_busy), .gpu_busy (gpu_busy), - .issue_tag (issue_tag), - `UNUSED_PIN (is_empty) + .issue_tag (issue_tag) ); VX_gpr_stage #( @@ -72,14 +69,14 @@ module VX_issue #( wire flush = alu_req_if.ready && ~decode_if.ready; VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + 1 + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) - ) decode_reg ( + .N(1 + `ISTAG_BITS + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) + ) issue_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (flush), - .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.use_rs1, decode_if.use_rs2, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.rs1_is_fp, decode_if.rs2_is_fp, decode_if.frm, gpr_read_if.rs1_data, gpr_read_if.rs2_data, gpr_read_if.rs3_data}), - .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.use_rs1, decode_tmp_if.use_rs2, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.rs1_is_fp, decode_tmp_if.rs2_is_fp, decode_tmp_if.frm, gpr_data_tmp_if.rs1_data, gpr_data_tmp_if.rs2_data, gpr_data_tmp_if.rs3_data}) + .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.frm, gpr_read_if.rs1_data, gpr_read_if.rs2_data, gpr_read_if.rs3_data}), + .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, gpr_data_tmp_if.rs1_data, gpr_data_tmp_if.rs2_data, gpr_data_tmp_if.rs3_data}) ); VX_issue_demux issue_demux ( diff --git a/hw/rtl/VX_platform.vh b/hw/rtl/VX_platform.vh index 49c74062..dcea510d 100644 --- a/hw/rtl/VX_platform.vh +++ b/hw/rtl/VX_platform.vh @@ -1,6 +1,8 @@ `ifndef VX_PLATFORM `define VX_PLATFORM +/////////////////////////////////////////////////////////////////////////////// + `ifndef NDEBUG `define DEBUG_BLOCK(x) /* verilator lint_off UNUSED */ \ x \ @@ -45,6 +47,12 @@ `define ENABLE_TRACING /* verilator tracing_on */ `define DISABLE_TRACING /* verilator tracing_off */ +/////////////////////////////////////////////////////////////////////////////// + +`define USE_FAST_BRAM (* syn_ramstyle = "mlab" *) + +/////////////////////////////////////////////////////////////////////////////// + `define CLOG2(x) $clog2(x) `define FLOG2(x) ($clog2(x) - (((1 << $clog2(x)) > (x)) ? 1 : 0)) `define LOG2UP(x) (((x) > 1) ? $clog2(x) : 1) diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index 19055311..08f65575 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -16,106 +16,55 @@ module VX_scheduler #( input wire mul_busy, input wire fpu_busy, input wire gpu_busy, - output wire [`ISTAG_BITS-1:0] issue_tag, - output wire is_empty + output wire [`ISTAG_BITS-1:0] issue_tag ); - localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); - - `ifdef EXT_F_ENABLE - localparam NREGS = (`NUM_REGS * 2); - reg inuse_table [`NUM_WARPS-1:0][NREGS-1:0]; - wire [`NR_BITS:0] read_rs1 = {decode_if.rs1_is_fp, decode_if.rs1}; - wire [`NR_BITS:0] read_rs2 = {decode_if.rs2_is_fp, decode_if.rs2}; - wire [`NR_BITS:0] read_rs3 = {1'b1, decode_if.rs3}; - wire [`NR_BITS:0] read_rd = {decode_if.rd_is_fp, decode_if.rd}; - wire [`NR_BITS:0] write_rd = {writeback_if.rd_is_fp, writeback_if.rd}; - wire rs3_inuse = inuse_table[decode_if.warp_num][read_rs3]; - `else - localparam NREGS = `NUM_REGS; - reg inuse_table [`NUM_WARPS-1:0][NREGS-1:0]; - wire [`NR_BITS-1:0] read_rs1 = decode_if.rs1; - wire [`NR_BITS-1:0] read_rs2 = decode_if.rs2; - wire [`NR_BITS-1:0] read_rd = decode_if.rd; - wire [`NR_BITS-1:0] write_rd = writeback_if.rd; - wire rs3_inuse = 0; - `endif - - reg [`NUM_THREADS-1:0] inuse_registers [`NUM_WARPS-1:0][NREGS-1:0]; - reg [CTVW-1:0] count_valid; + localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); + reg [`NUM_THREADS-1:0] inuse_registers [`NUM_WARPS-1:0][`NUM_REGS-1:0]; + reg [`NUM_REGS-1:0] inuse_reg_mask [`NUM_WARPS-1:0]; - wire rs1_inuse = inuse_table[decode_if.warp_num][read_rs1]; - wire rs2_inuse = inuse_table[decode_if.warp_num][read_rs2]; - wire rd_inuse = inuse_table[decode_if.warp_num][read_rd]; + wire [`NUM_REGS-1:0] inuse_mask = inuse_reg_mask[decode_if.warp_num] & decode_if.reg_use_mask; + wire inuse_hazard = (inuse_mask != 0); - wire rs1_inuse_qual = rs1_inuse && decode_if.use_rs1; - wire rs2_inuse_qual = rs2_inuse && decode_if.use_rs2; - wire rs3_inuse_qual = rs3_inuse && decode_if.use_rs3; - wire rd_inuse_qual = rd_inuse && decode_if.wb; - - wire inuse_valid = (rd_inuse_qual || rs1_inuse_qual || rs2_inuse_qual || rs3_inuse_qual); - - wire ex_stalled = ((gpr_busy) - || (alu_busy && (decode_if.ex_type == `EX_ALU)) + wire exu_stalled = (alu_busy && (decode_if.ex_type == `EX_ALU)) || (lsu_busy && (decode_if.ex_type == `EX_LSU)) || (csr_busy && (decode_if.ex_type == `EX_CSR)) || (mul_busy && (decode_if.ex_type == `EX_MUL)) || (fpu_busy && (decode_if.ex_type == `EX_FPU)) - || (gpu_busy && (decode_if.ex_type == `EX_GPU))); + || (gpu_busy && (decode_if.ex_type == `EX_GPU)); wire issue_buf_full; - wire stall = (ex_stalled || inuse_valid || issue_buf_full) && decode_if.valid; + wire stall = (gpr_busy || exu_stalled || inuse_hazard || issue_buf_full) && decode_if.valid; wire acquire_rd = decode_if.valid && (decode_if.wb != 0) && ~stall; wire release_rd = writeback_if.valid; - wire [`NUM_THREADS-1:0] inuse_registers_n = inuse_registers[writeback_if.warp_num][write_rd] & ~writeback_if.thread_mask; + wire [`NUM_THREADS-1:0] inuse_registers_n = inuse_registers[writeback_if.warp_num][writeback_if.rd] & ~writeback_if.thread_mask; - reg [CTVW-1:0] count_valid_next = (acquire_rd && !(release_rd && (0 == inuse_registers_n))) ? (count_valid + 1) : - (~acquire_rd && (release_rd && (0 == inuse_registers_n))) ? (count_valid - 1) : - count_valid; - always @(posedge clk) begin + always @(posedge clk) begin if (reset) begin integer i, w; for (w = 0; w < `NUM_WARPS; w++) begin - for (i = 0; i < NREGS; i++) begin - inuse_registers[w][i] <= 0; - inuse_table[w][i] <= 0; + for (i = 0; i < `NUM_REGS; i++) begin + inuse_registers[w][i] <= 0; end + inuse_reg_mask[w] <= 0; end - count_valid <= 0; end else begin if (acquire_rd) begin - inuse_registers[decode_if.warp_num][read_rd] <= decode_if.thread_mask; - inuse_table[decode_if.warp_num][read_rd] <= 1; + inuse_registers[decode_if.warp_num][decode_if.rd] <= decode_if.thread_mask; + inuse_reg_mask[decode_if.warp_num][decode_if.rd] <= 1; end if (release_rd) begin - assert(inuse_table[writeback_if.warp_num][write_rd] != 0); - inuse_registers[writeback_if.warp_num][write_rd] <= inuse_registers_n; - inuse_table[writeback_if.warp_num][write_rd] <= (| inuse_registers_n); + assert(inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] != 0); + inuse_registers[writeback_if.warp_num][writeback_if.rd] <= inuse_registers_n; + inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] <= (| inuse_registers_n); end - count_valid <= count_valid_next; end end - wire ib_acquire = decode_if.valid && ~stall; - - `DEBUG_BLOCK( - wire [`NW_BITS-1:0] cis_alu_warp_num = cmt_to_issue_if.alu_data.warp_num; - wire [`NUM_THREADS-1:0] cis_alu_thread_mask = cmt_to_issue_if.alu_data.thread_mask; - wire [31:0] cis_alu_curr_PC = cmt_to_issue_if.alu_data.curr_PC; - wire [`NR_BITS-1:0] cis_alu_rd = cmt_to_issue_if.alu_data.rd; - wire cis_alu_rd_is_fp = cmt_to_issue_if.alu_data.rd_is_fp; - wire cis_alu_wb = cmt_to_issue_if.alu_data.wb; - - wire [`NW_BITS-1:0] cis_fpu_warp_num = cmt_to_issue_if.fpu_data.warp_num; - wire [`NUM_THREADS-1:0] cis_fpu_thread_mask = cmt_to_issue_if.fpu_data.thread_mask; - wire [31:0] cis_fpu_curr_PC = cmt_to_issue_if.fpu_data.curr_PC; - wire [`NR_BITS-1:0] cis_fpu_rd = cmt_to_issue_if.fpu_data.rd; - wire cis_fpu_rd_is_fp = cmt_to_issue_if.fpu_data.rd_is_fp; - wire cis_fpu_wb = cmt_to_issue_if.fpu_data.wb; - ) + wire issue_fire = decode_if.valid && ~stall; VX_cam_buffer #( .DATAW ($bits(is_data_t)), @@ -124,9 +73,9 @@ module VX_scheduler #( ) issue_buffer ( .clk (clk), .reset (reset), - .write_data ({decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.rd_is_fp, decode_if.wb}), + .write_data ({decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.wb}), .write_addr (issue_tag), - .acquire_slot (ib_acquire), + .acquire_slot (issue_fire), .release_slot ({cmt_to_issue_if.alu_valid, cmt_to_issue_if.lsu_valid, cmt_to_issue_if.csr_valid, cmt_to_issue_if.mul_valid, cmt_to_issue_if.fpu_valid, cmt_to_issue_if.gpu_valid}), .read_addr ({cmt_to_issue_if.alu_tag, cmt_to_issue_if.lsu_tag, cmt_to_issue_if.csr_tag, cmt_to_issue_if.mul_tag, cmt_to_issue_if.fpu_tag, cmt_to_issue_if.gpu_tag}), .read_data ({cmt_to_issue_if.alu_data, cmt_to_issue_if.lsu_data, cmt_to_issue_if.csr_data, cmt_to_issue_if.mul_data, cmt_to_issue_if.fpu_data, cmt_to_issue_if.gpu_data}), @@ -135,14 +84,12 @@ module VX_scheduler #( assign decode_if.ready = ~stall; - assign is_empty = (0 == count_valid); - `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (stall) begin $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, gpr=%b, alu=%b, lsu=%b, csr=%b, mul=%b, fpu=%b, gpu=%b", - $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, rd_inuse_qual, rs1_inuse_qual, - rs2_inuse_qual, rs3_inuse_qual, gpr_busy, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); + $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, inuse_mask[decode_if.rd], inuse_mask[decode_if.rs1], + inuse_mask[decode_if.rs2], inuse_mask[decode_if.rs3], gpr_busy, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); end end `endif diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index 00e44439..04c2d80e 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -205,24 +205,26 @@ module VX_warp_sched #( assign {join_fall, join_pc, join_tm} = ipdom[join_if.warp_num]; genvar i; - for (i = 0; i < `NUM_WARPS; i++) begin : stacks + for (i = 0; i < `NUM_WARPS; i++) begin wire correct_warp_s = (i == warp_ctl_if.warp_num); wire correct_warp_j = (i == join_if.warp_num); wire push = (warp_ctl_if.is_split && warp_ctl_if.do_split) && correct_warp_s; wire pop = join_if.is_join && correct_warp_j; - VX_generic_stack #( + VX_ipdom_stack #( .WIDTH(1+32+`NUM_THREADS), - .DEPTH($clog2(`NUM_THREADS)+1) - ) ipdom_stack( + .DEPTH(`NT_BITS+1) + ) ipdom_stack ( .clk (clk), .reset(reset), .push (push), .pop (pop), .d (ipdom[i]), .q1 (q1), - .q2 (q2) + .q2 (q2), + `UNUSED_PIN (empty), + `UNUSED_PIN (full) ); end diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 7230502f..953db5d1 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -24,7 +24,6 @@ module VX_writeback #( reg [`NUM_THREADS-1:0] wb_thread_mask [`ISSUEQ_SIZE-1:0]; reg [31:0] wb_curr_PC [`ISSUEQ_SIZE-1:0]; reg [`NR_BITS-1:0] wb_rd [`ISSUEQ_SIZE-1:0]; - reg wb_rd_is_fp [`ISSUEQ_SIZE-1:0]; reg [`ISSUEQ_SIZE-1:0] wb_pending, wb_pending_n; reg [`ISTAG_BITS-1:0] wb_index; @@ -75,7 +74,6 @@ module VX_writeback #( wb_thread_mask [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.thread_mask; wb_curr_PC [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.curr_PC; wb_rd [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd; - wb_rd_is_fp [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd_is_fp; end if (lsu_commit_if.valid) begin wb_data [lsu_commit_if.issue_tag] <= lsu_commit_if.data; @@ -83,7 +81,6 @@ module VX_writeback #( wb_thread_mask [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.thread_mask; wb_curr_PC [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.curr_PC; wb_rd [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd; - wb_rd_is_fp [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd_is_fp; end if (csr_commit_if.valid) begin wb_data [csr_commit_if.issue_tag] <= csr_commit_if.data; @@ -91,7 +88,6 @@ module VX_writeback #( wb_thread_mask [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.thread_mask; wb_curr_PC [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.curr_PC; wb_rd [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd; - wb_rd_is_fp [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd_is_fp; end if (mul_commit_if.valid) begin wb_data [mul_commit_if.issue_tag] <= mul_commit_if.data; @@ -99,7 +95,6 @@ module VX_writeback #( wb_thread_mask [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.thread_mask; wb_curr_PC [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.curr_PC; wb_rd [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd; - wb_rd_is_fp [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd_is_fp; end if (fpu_commit_if.valid) begin wb_data [fpu_commit_if.issue_tag] <= fpu_commit_if.data; @@ -107,7 +102,6 @@ module VX_writeback #( wb_thread_mask [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.thread_mask; wb_curr_PC [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.curr_PC; wb_rd [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd; - wb_rd_is_fp [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd_is_fp; end wb_pending <= wb_pending_n; @@ -122,7 +116,6 @@ module VX_writeback #( assign writeback_if.thread_mask = wb_thread_mask [wb_index]; assign writeback_if.curr_PC = wb_curr_PC [wb_index]; assign writeback_if.rd = wb_rd [wb_index]; - assign writeback_if.rd_is_fp = wb_rd_is_fp [wb_index]; assign writeback_if.data = wb_data [wb_index]; // commit back-pressure diff --git a/hw/rtl/interfaces/VX_decode_if.v b/hw/rtl/interfaces/VX_decode_if.v index 1802801d..1fd5b96e 100644 --- a/hw/rtl/interfaces/VX_decode_if.v +++ b/hw/rtl/interfaces/VX_decode_if.v @@ -21,16 +21,12 @@ interface VX_decode_if (); wire rs1_is_PC; wire rs2_is_imm; - - wire use_rs1; - wire use_rs2; + + wire [`NUM_REGS-1:0] reg_use_mask; // FP states wire [`NR_BITS-1:0] rs3; - wire use_rs3; - wire rd_is_fp; - wire rs1_is_fp; - wire rs2_is_fp; + wire use_rs3; wire [`FRM_BITS-1:0] frm; wire wb; diff --git a/hw/rtl/interfaces/VX_gpr_read_if.v b/hw/rtl/interfaces/VX_gpr_read_if.v index 44d2475c..9b24ce56 100644 --- a/hw/rtl/interfaces/VX_gpr_read_if.v +++ b/hw/rtl/interfaces/VX_gpr_read_if.v @@ -13,10 +13,7 @@ interface VX_gpr_read_if (); wire [`NR_BITS-1:0] rs2; wire [`NR_BITS-1:0] rs3; - wire use_rs3; - - wire rs1_is_fp; - wire rs2_is_fp; + wire use_rs3; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index c3e3ec34..859db75b 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -14,8 +14,8 @@ interface VX_wb_if (); `IGNORE_WARNINGS_END wire [`NR_BITS-1:0] rd; - wire rd_is_fp; wire [`NUM_THREADS-1:0][31:0] data; + wire ready; endinterface diff --git a/hw/rtl/libs/VX_cam_buffer.v b/hw/rtl/libs/VX_cam_buffer.v index ad877564..06379f15 100644 --- a/hw/rtl/libs/VX_cam_buffer.v +++ b/hw/rtl/libs/VX_cam_buffer.v @@ -12,7 +12,7 @@ module VX_cam_buffer #( output wire [ADDRW-1:0] write_addr, input wire acquire_slot, input wire [RPORTS-1:0][ADDRW-1:0] read_addr, - output reg [RPORTS-1:0][DATAW-1:0] read_data, + output reg [RPORTS-1:0][DATAW-1:0] read_data, input wire [RPORTS-1:0] release_slot, output wire full ); diff --git a/hw/rtl/libs/VX_generic_queue.v b/hw/rtl/libs/VX_generic_queue.v index 8beff584..ba4a3228 100644 --- a/hw/rtl/libs/VX_generic_queue.v +++ b/hw/rtl/libs/VX_generic_queue.v @@ -52,11 +52,7 @@ module VX_generic_queue #( end else begin // (SIZE > 1) - `ifdef QUEUE_FORCE_MLAB - (* syn_ramstyle = "mlab" *) reg [DATAW-1:0] data [SIZE-1:0]; - `else - reg [DATAW-1:0] data [SIZE-1:0]; - `endif + `USE_FAST_BRAM reg [DATAW-1:0] data [SIZE-1:0]; if (0 == BUFFERED) begin diff --git a/hw/rtl/libs/VX_generic_stack.v b/hw/rtl/libs/VX_generic_stack.v deleted file mode 100644 index 252d3032..00000000 --- a/hw/rtl/libs/VX_generic_stack.v +++ /dev/null @@ -1,34 +0,0 @@ - -`include "VX_platform.vh" - -module VX_generic_stack #( - parameter WIDTH = 1, - parameter DEPTH = 1 -) ( - input wire clk, - input wire reset, - input wire push, - input wire pop, - input reg [WIDTH - 1:0] q1, - input reg [WIDTH - 1:0] q2, - output wire[WIDTH - 1:0] d -); - - reg [DEPTH - 1:0] ptr; - reg [WIDTH - 1:0] stack [0:(1 << DEPTH) - 1]; - - always @(posedge clk) begin - if (reset) begin - ptr <= 0; - end else if (push) begin - stack[ptr] <= q1; - stack[ptr+1] <= q2; - ptr <= ptr + 2; - end else if (pop) begin - ptr <= ptr - 1; - end - end - - assign d = stack[ptr - 1]; - -endmodule \ No newline at end of file diff --git a/hw/rtl/libs/VX_index_queue.v b/hw/rtl/libs/VX_index_queue.v index ed8e0970..75252e56 100644 --- a/hw/rtl/libs/VX_index_queue.v +++ b/hw/rtl/libs/VX_index_queue.v @@ -15,7 +15,7 @@ module VX_index_queue #( input wire [`LOG2UP(SIZE)-1:0] read_addr, output wire [DATAW-1:0] read_data ); - reg [DATAW-1:0] data [SIZE-1:0]; + `USE_FAST_BRAM reg [DATAW-1:0] data [SIZE-1:0]; reg [SIZE-1:0] valid; reg [`LOG2UP(SIZE):0] rd_ptr, wr_ptr; diff --git a/hw/unit_tests/VX_divide_tb.v b/hw/unit_tests/VX_divide_tb.v index 1b14f526..92ccfac7 100644 --- a/hw/unit_tests/VX_divide_tb.v +++ b/hw/unit_tests/VX_divide_tb.v @@ -19,7 +19,7 @@ module VX_tb_divide(); genvar i; generate - for (i = 0; i < 8; i++) begin : div_loop + for (i = 0; i < 8; i++) begin VX_divide#( .WIDTHN(32), .WIDTHD(32), From 0d82a8aa4f71c5e67e17d2ad91c1c4b2c783afa8 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 30 Jul 2020 03:09:11 -0700 Subject: [PATCH 28/94] minor update --- hw/rtl/VX_ipdom_stack.v | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 hw/rtl/VX_ipdom_stack.v diff --git a/hw/rtl/VX_ipdom_stack.v b/hw/rtl/VX_ipdom_stack.v new file mode 100644 index 00000000..d12f7d98 --- /dev/null +++ b/hw/rtl/VX_ipdom_stack.v @@ -0,0 +1,47 @@ + +`include "VX_platform.vh" + +module VX_ipdom_stack #( + parameter WIDTH = 1, + parameter DEPTH = 1 +) ( + input wire clk, + input wire reset, + input reg [WIDTH - 1:0] q1, + input reg [WIDTH - 1:0] q2, + output wire[WIDTH - 1:0] d, + input wire push, + input wire pop, + output wire empty, + output wire full +); + localparam STACK_SIZE = 2 ** DEPTH; + + `USE_FAST_BRAM reg [WIDTH-1:0] stack_1 [0:STACK_SIZE-1]; + `USE_FAST_BRAM reg [WIDTH-1:0] stack_2 [0:STACK_SIZE-1]; + `USE_FAST_BRAM reg is_part [0:STACK_SIZE-1]; + + reg [DEPTH-1:0] rd_ptr, wr_ptr; + + always @(posedge clk) begin + if (reset) begin + wr_ptr <= 0; + end else if (push) begin + stack_1[wr_ptr] <= q1; + stack_2[wr_ptr] <= q2; + is_part[wr_ptr] <= 0; + rd_ptr <= wr_ptr; + wr_ptr <= wr_ptr + 1; + end else if (pop) begin + wr_ptr <= wr_ptr - DEPTH'(is_part[rd_ptr]); + rd_ptr <= rd_ptr - DEPTH'(is_part[rd_ptr]); + is_part[rd_ptr] <= 1; + end + end + + assign d = is_part[rd_ptr] ? stack_1[rd_ptr] : stack_2[rd_ptr]; + + assign empty = (0 == wr_ptr); + assign full = ((STACK_SIZE-1) == wr_ptr); + +endmodule \ No newline at end of file From c9755a0c48bce7435200ad506205ae3070b832b2 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Fri, 31 Jul 2020 09:29:44 -0400 Subject: [PATCH 29/94] lkg build with pipeline + FPU fixes --- Makefile | 8 +- README.md | 4 +- driver/opae/vortex.cpp | 8 +- driver/tests/demo/kernel.bin | Bin 6852 -> 6812 bytes driver/tests/demo/kernel.dump | 4 +- driver/tests/demo/kernel.elf | Bin 9180 -> 9180 bytes hw/Makefile | 5 +- hw/rtl/VX_alu_unit.v | 36 +++--- hw/rtl/VX_commit.v | 26 +++-- hw/rtl/VX_config.vh | 72 ++++++------ hw/rtl/VX_csr_data.v | 164 +++++++++++++++------------ hw/rtl/VX_csr_unit.v | 66 ++++++----- hw/rtl/VX_decode.v | 8 +- hw/rtl/VX_define.vh | 7 +- hw/rtl/VX_fpu_unit.v | 159 ++++++++++++++------------ hw/rtl/VX_icache_stage.v | 2 +- hw/rtl/VX_issue.v | 2 +- hw/rtl/VX_issue_demux.v | 2 +- hw/rtl/VX_scheduler.v | 2 +- hw/rtl/VX_writeback.v | 7 +- hw/rtl/cache/VX_bank.v | 24 +++- hw/rtl/cache/VX_tag_data_access.v | 40 ++++++- hw/rtl/interfaces/VX_cmt_to_csr_if.v | 10 +- hw/rtl/interfaces/VX_csr_io_req_if.v | 10 +- hw/rtl/interfaces/VX_csr_req_if.v | 2 +- hw/rtl/interfaces/VX_fpu_to_cmt_if.v | 6 +- hw/simulate/Makefile | 2 +- hw/simulate/simulator.cpp | 10 +- hw/simulate/simulator.h | 4 +- runtime/src/vx_intrinsics.S | 4 +- runtime/tests/simple/vx_simple.dump | 4 +- runtime/tests/simple/vx_simple.elf | Bin 12500 -> 12500 bytes runtime/tests/simple/vx_simple.hex | 4 +- 33 files changed, 408 insertions(+), 294 deletions(-) mode change 100644 => 100755 driver/tests/demo/kernel.bin diff --git a/Makefile b/Makefile index c9fc76e2..8b090422 100644 --- a/Makefile +++ b/Makefile @@ -3,4 +3,10 @@ all: $(MAKE) -C hw $(MAKE) -C driver $(MAKE) -C runtime - $(MAKE) -C simX \ No newline at end of file + $(MAKE) -C simX + +clean: + $(MAKE) -C hw clean + $(MAKE) -C driver clean + $(MAKE) -C runtime clean + $(MAKE) -C simX clean \ No newline at end of file diff --git a/README.md b/README.md index e4f27ad7..efe3b48e 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Install development tools Install gnu-riscv-tools - $ export RISC_GNU_TOOLS_PATH=/opt/riscv-gnu-toolchain + $ export RISCV_TOOLCHAIN_PATH=/opt/riscv-gnu-toolchain $ sudo apt-get -y install \ binutils build-essential libtool texinfo \ @@ -51,7 +51,7 @@ Install gnu-riscv-tools $ git submodule update --init --recursive $ mkdir build $ cd build - $ ../configure --prefix=$RISC_GNU_TOOLS_PATH --with-arch=rv32im --with-abi=ilp32 + $ ../configure --prefix=$RISCV_TOOLCHAIN_PATH --with-arch=rv32im --with-abi=ilp32 $ make -j`nproc` $ make -j`nproc` build-qemu diff --git a/driver/opae/vortex.cpp b/driver/opae/vortex.cpp index 07e0385c..02955678 100755 --- a/driver/opae/vortex.cpp +++ b/driver/opae/vortex.cpp @@ -173,7 +173,7 @@ extern int vx_dev_open(vx_device_h* hdevice) { { // Load device CAPS int ret = 0; - ret |= vx_csr_get(device, 0, CSR_IMPL_ID, &device->implementation_id); + ret |= vx_csr_get(device, 0, CSR_MIMPID, &device->implementation_id); ret |= vx_csr_get(device, 0, CSR_NC, &device->num_cores); ret |= vx_csr_get(device, 0, CSR_NW, &device->num_warps); ret |= vx_csr_get(device, 0, CSR_NT, &device->num_threads); @@ -217,14 +217,14 @@ extern int vx_dev_close(vx_device_h hdevice) { unsigned value; int ret = 0; - ret |= vx_csr_get(hdevice, 0, CSR_INSTR_H, &value); + ret |= vx_csr_get(hdevice, 0, CSR_INSTRET_H, &value); instrs = value; - ret |= vx_csr_get(hdevice, 0, CSR_INSTR_L, &value); + ret |= vx_csr_get(hdevice, 0, CSR_INSTRET, &value); instrs = (instrs << 32) | value; ret |= vx_csr_get(hdevice, 0, CSR_CYCLE_H, &value); cycles = value; - ret |= vx_csr_get(hdevice, 0, CSR_CYCLE_L, &value); + ret |= vx_csr_get(hdevice, 0, CSR_CYCLE, &value); cycles = (cycles << 32) | value; float IPC = (float)(double(instrs) / double(cycles)); diff --git a/driver/tests/demo/kernel.bin b/driver/tests/demo/kernel.bin old mode 100644 new mode 100755 index 06939d4c46190f07fb214341beca87cb3a6ec952..280e5cbc251c068b436a3e1c9c0f009cf8732a26 GIT binary patch delta 310 zcmX?NI>$7AIx7Ri|`gjod`vKd$zgj)|D5^iHWY|OUIVKPwN zdxi!paUdpJuzNctU+or zI|D;<2Rnl~D?zddD zwWJAicBUC~{&WDlNNFO2aHOU~G6N@*FiT6?<9-h77nf)G!P cBtydyAl8v$XqY^aZN_E?@djp=0x^aL0O=o9egFUf delta 347 zcmZ9GF-yZx6h^-!@1+C;+diArQbn3p%%F&+bP^)8in}1XROl2c7WEH2X{)Z`iDqze z@DEhc!J$>Vxpo$G6^bZ=i~7>h;c|w1F87=l9t)K-3W!#j?dP`CTJ#zNxN%0KsDXmD zy7%l*dC2RRu8`gUShOS=Ezb_XXQaCzi8|mgMftU-W3aOa(&H8*G^Ag#%}z>0fa-As zMG7vD=j-TX{2-mS=VE9$Wi+xaXihJDFe)esIpII;>D~TE&V3gpWk;2`QZAI9SXY;( zm@ebO@UH}_O&xjKgXkx~OcSrC^hcbi%chdG{?c; -80000140: f14025f3 csrr a1,mhartid +80000140: 022025f3 csrr a1,0x22 80000144: 00a59593 slli a1,a1,0xa 80000148: 02002673 csrr a2,0x20 8000014c: 00261613 slli a2,a2,0x2 @@ -145,7 +145,7 @@ Disassembly of section .text: 800001ac: 00008067 ret 800001b0 : -800001b0: f1402573 csrr a0,mhartid +800001b0: 02202573 csrr a0,0x22 800001b4: 00008067 ret 800001b8 : diff --git a/driver/tests/demo/kernel.elf b/driver/tests/demo/kernel.elf index d91b509c4adc2825891d3aa1330b5591e8222962..f7681ea2d27914720ddbc09239e7164f31cf8a04 100755 GIT binary patch delta 22 ccmccPe#d=-lOU4<(_|OHJRr4si=c)O09i-|ng9R* delta 22 ccmccPe#d=-lOU7B$H^{&c|dCO7C{Xm0BxlRxBvhE diff --git a/hw/Makefile b/hw/Makefile index 4c5575a4..d615dfc0 100644 --- a/hw/Makefile +++ b/hw/Makefile @@ -1,4 +1,7 @@ .PHONY: build_config build_config: - ./scripts/gen_config.py --outv ./rtl/VX_user_config.vh --outc ./VX_config.h \ No newline at end of file + ./scripts/gen_config.py --outv ./rtl/VX_user_config.vh --outc ./VX_config.h + +clean: + rm ./rtl/VX_user_config.vh ./VX_config.h \ No newline at end of file diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 7a5dd6a3..3fe6c5b0 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -48,7 +48,7 @@ module VX_alu_unit #( end end - wire [`NT_BITS-1:0] br_result_index, br_result_index_o; + wire [`NT_BITS-1:0] br_result_index; VX_priority_encoder #( .N(`NUM_THREADS) @@ -58,8 +58,14 @@ module VX_alu_unit #( `UNUSED_PIN (valid_out) ); - wire [`BR_BITS-1:0] br_op = `IS_BR_OP(alu_req_if.alu_op) ? `BR_OP(alu_req_if.alu_op) : 0; - wire [`BR_BITS-1:0] br_op_o; + wire [32:0] br_result = sub_result[br_result_index]; + wire br_sign = br_result[32]; + wire br_nzero = (| br_result[31:0]); + wire br_sign_s1; + wire br_nzero_s1; + + wire [`BR_BITS-1:0] br_op = `IS_BR_OP(alu_req_if.alu_op) ? `BR_OP(alu_req_if.alu_op) : `BR_NO; + wire [`BR_BITS-1:0] br_op_s1; wire [31:0] br_addr = (br_op == `BR_JALR) ? alu_req_if.rs1_data[br_result_index] : alu_req_if.curr_PC; wire [31:0] br_dest = $signed(br_addr) + $signed(alu_req_if.offset); @@ -70,34 +76,30 @@ module VX_alu_unit #( wire stall = ~alu_commit_if.ready && alu_commit_if.valid; VX_generic_register #( - .N(1 + `NW_BITS + `ISTAG_BITS + (`NUM_THREADS * 32) + `BR_BITS + 32 + `NT_BITS) + .N(1 + `NW_BITS + `ISTAG_BITS + (`NUM_THREADS * 32) + `BR_BITS + 32 + 1 + 1) ) alu_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.issue_tag, alu_jal_result, br_op, br_dest, br_result_index}), - .out ({alu_commit_if.valid, branch_ctl_if.warp_num, alu_commit_if.issue_tag, alu_commit_if.data, br_op_o, branch_ctl_if.dest, br_result_index_o}) - ); - - wire [31:0] br_result = alu_commit_if.data[br_result_index_o]; - wire br_sign = br_result[31]; - wire br_nzero = (| br_result[31:0]); + .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.issue_tag, alu_jal_result, br_op, br_dest, br_sign, br_nzero}), + .out ({alu_commit_if.valid, branch_ctl_if.warp_num, alu_commit_if.issue_tag, alu_commit_if.data, br_op_s1, branch_ctl_if.dest, br_sign_s1, br_nzero_s1}) + ); reg br_taken; always @(*) begin - case (br_op_o) - `BR_NE: br_taken = br_nzero; - `BR_EQ: br_taken = ~br_nzero; + case (br_op_s1) + `BR_NE: br_taken = br_nzero_s1; + `BR_EQ: br_taken = ~br_nzero_s1; `BR_LT, - `BR_LTU: br_taken = br_sign; + `BR_LTU: br_taken = br_sign_s1; `BR_GE, - `BR_GEU: br_taken = ~br_sign; + `BR_GEU: br_taken = ~br_sign_s1; default: br_taken = 1'b1; endcase end - assign branch_ctl_if.valid = alu_req_if.valid && (br_op_o != 0); + assign branch_ctl_if.valid = alu_commit_if.valid && (br_op_s1 != `BR_NO); assign branch_ctl_if.taken = br_taken; assign alu_req_if.ready = ~stall; diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index b6b9db45..4381cc6e 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -39,15 +39,27 @@ module VX_commit #( ); assign cmt_to_csr_if.valid = (| commited_mask); + assign cmt_to_csr_if.warp_num = cmt_to_issue_if.fpu_data.warp_num; assign cmt_to_csr_if.num_commits = num_commits; + + assign cmt_to_csr_if.upd_fflags = (fpu_commit_if.valid && fpu_commit_if.ready) && fpu_commit_if.upd_fflags; + + integer i; - assign cmt_to_csr_if.upd_fflags = (fpu_commit_if.valid && fpu_commit_if.ready) && fpu_commit_if.upd_fflags; - assign cmt_to_csr_if.fpu_warp_num = cmt_to_issue_if.fpu_data.warp_num; - assign cmt_to_csr_if.fflags_NV = fpu_commit_if.fflags_NV; - assign cmt_to_csr_if.fflags_DZ = fpu_commit_if.fflags_DZ; - assign cmt_to_csr_if.fflags_OF = fpu_commit_if.fflags_OF; - assign cmt_to_csr_if.fflags_UF = fpu_commit_if.fflags_UF; - assign cmt_to_csr_if.fflags_NX = fpu_commit_if.fflags_NX; + reg [`FFG_BITS-1:0] fflags; + always @(*) begin + fflags = 0; + for (i = 0; i < `NUM_THREADS; i++) begin + if (cmt_to_issue_if.fpu_data.thread_mask[i]) begin + fflags[0] |= fpu_commit_if.fflags[i][0]; + fflags[1] |= fpu_commit_if.fflags[i][1]; + fflags[2] |= fpu_commit_if.fflags[i][2]; + fflags[3] |= fpu_commit_if.fflags[i][3]; + fflags[4] |= fpu_commit_if.fflags[i][4]; + end + end + end + assign cmt_to_csr_if.fflags = fflags; // Notify issue stage diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index 0562cc3f..36a1ce57 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -27,10 +27,6 @@ `define GLOBAL_BLOCK_SIZE 16 `endif -`ifndef NUM_CSRS -`define NUM_CSRS 64 -`endif - `ifndef STARTUP_ADDR `define STARTUP_ADDR 32'h80000000 `endif @@ -59,38 +55,11 @@ `define EXT_F_ENABLE -// Configuration Values ======================================================= - +// Device identification `define VENDOR_ID 0 `define ARCHITECTURE_ID 0 `define IMPLEMENTATION_ID 0 -// CSR Addresses ============================================================== - -`define CSR_FFLAGS 12'h001 -`define CSR_FRM 12'h002 -`define CSR_FCSR 12'h003 - -`define CSR_VEND_ID 12'hF11 -`define CSR_ARCH_ID 12'hF12 -`define CSR_IMPL_ID 12'hF13 -`define CSR_GTID 12'hF14 - -`define CSR_LTID 12'h020 -`define CSR_LWID 12'h021 -`define CSR_GWID 12'h023 -`define CSR_GCID 12'h024 -`define CSR_NT 12'h025 -`define CSR_NW 12'h026 -`define CSR_NC 12'h027 - -`define CSR_CYCLE_L 12'hC00 -`define CSR_CYCLE_H 12'hC80 -`define CSR_INSTR_L 12'hC02 -`define CSR_INSTR_H 12'hC82 - -`define CSR_MISA 12'h301 - // Size of MUL Request Queue Size `ifndef MULRQ_SIZE `define MULRQ_SIZE 8 @@ -106,6 +75,45 @@ `define ISSUEQ_SIZE (8 + `NUM_WARPS) `endif +// CSR Addresses ////////////////////////////////////////////////////////////// + +`define CSR_FFLAGS 12'h001 +`define CSR_FRM 12'h002 +`define CSR_FCSR 12'h003 + +`define CSR_LTID 12'h020 +`define CSR_LWID 12'h021 +`define CSR_GTID 12'h022 +`define CSR_GWID 12'h023 +`define CSR_GCID 12'h024 +`define CSR_NT 12'h025 +`define CSR_NW 12'h026 +`define CSR_NC 12'h027 + +`define CSR_SATP 12'h180 + +`define CSR_PMPCFG0 12'h3A0 +`define CSR_PMPADDR0 12'h3B0 + +`define CSR_MSTATUS 12'h300 +`define CSR_MISA 12'h301 +`define CSR_MEDELEG 12'h302 +`define CSR_MIDELEG 12'h303 +`define CSR_MIE 12'h304 +`define CSR_MTVEC 12'h305 + +`define CSR_MEPC 12'h341 + +`define CSR_CYCLE 12'hC00 +`define CSR_CYCLE_H 12'hC80 +`define CSR_INSTRET 12'hC02 +`define CSR_INSTRET_H 12'hC82 + +`define CSR_MVENDORID 12'hF11 +`define CSR_MARCHID 12'hF12 +`define CSR_MIMPID 12'hF13 +`define CSR_MHARTID 12'hF14 + // Dcache Configurable Knobs ================================================== // Size of cache in bytes diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index c640c0f2..d905ea33 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -11,107 +11,129 @@ module VX_csr_data #( input wire[`NW_BITS-1:0] warp_num, - input wire[`CSR_ADDR_SIZE-1:0] read_addr, + input wire read_enable, + input wire[`CSR_ADDR_BITS-1:0] read_addr, output reg[31:0] read_data, + input wire write_enable, -`IGNORE_WARNINGS_BEGIN - // We use a smaller storage for CSRs than the standard 4KB in RISC-V - input wire[`CSR_ADDR_SIZE-1:0] write_addr, -`IGNORE_WARNINGS_END + input wire[`CSR_ADDR_BITS-1:0] write_addr, input wire[`CSR_WIDTH-1:0] write_data ); - reg [`CSR_WIDTH-1:0] csr_table[`NUM_CSRS-1:0]; - reg [`FFG_BITS+`FRM_BITS-1:0] fflags_table [`NUM_WARPS-1:0]; - reg [`FRM_BITS-1:0] frm_table [`NUM_WARPS-1:0]; - reg [`FFG_BITS+`FRM_BITS-1:0] fcsr_table [`NUM_WARPS-1:0]; // fflags + frm - - // cast address to physical CSR range - wire [$clog2(`NUM_CSRS)-1:0] rd_addr, wr_addr; - assign rd_addr = $size(rd_addr)'(read_addr); - assign wr_addr = $size(wr_addr)'(write_addr); - - wire [`FFG_BITS-1:0] fflags_update; - assign fflags_update[4] = cmt_to_csr_if.fflags_NV; - assign fflags_update[3] = cmt_to_csr_if.fflags_DZ; - assign fflags_update[2] = cmt_to_csr_if.fflags_OF; - assign fflags_update[1] = cmt_to_csr_if.fflags_UF; - assign fflags_update[0] = cmt_to_csr_if.fflags_NX; - - integer i; + reg [`CSR_WIDTH-1:0] csr_satp; + reg [`CSR_WIDTH-1:0] csr_mstatus; + reg [`CSR_WIDTH-1:0] csr_medeleg; + reg [`CSR_WIDTH-1:0] csr_mideleg; + reg [`CSR_WIDTH-1:0] csr_mie; + reg [`CSR_WIDTH-1:0] csr_mtvec; + reg [`CSR_WIDTH-1:0] csr_mepc; + reg [`CSR_WIDTH-1:0] csr_pmpcfg [0:0]; + reg [`CSR_WIDTH-1:0] csr_pmpaddr [0:0]; + reg [63:0] csr_cycle; + reg [63:0] csr_instret; + + reg [`FFG_BITS-1:0] csr_fflags [`NUM_WARPS-1:0]; + reg [`FRM_BITS-1:0] csr_frm [`NUM_WARPS-1:0]; + reg [`FRM_BITS+`FFG_BITS-1:0] csr_fcsr [`NUM_WARPS-1:0]; // fflags + frm always @(posedge clk) begin - if (reset) begin - for (i = 0; i < `NUM_WARPS; i++) begin - fflags_table[i] <= 0; - frm_table[i] <= 0; - fcsr_table[i] <= 0; - end - end else begin - if (write_enable) begin - case (write_addr) - `CSR_FFLAGS: begin - fcsr_table[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; - fflags_table[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; - end - `CSR_FRM: begin - fcsr_table[warp_num][`FFG_BITS+`FRM_BITS-1:`FFG_BITS] <= write_data[`FRM_BITS-1:0]; - frm_table[warp_num] <= write_data[`FRM_BITS-1:0]; - end - `CSR_FCSR: begin - fcsr_table[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:0]; - frm_table[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:`FFG_BITS]; - fflags_table[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; - end - default: begin - csr_table[wr_addr] <= write_data; + if (cmt_to_csr_if.upd_fflags) begin + csr_fflags[cmt_to_csr_if.warp_num] <= cmt_to_csr_if.fflags; + csr_fcsr[cmt_to_csr_if.warp_num][`FFG_BITS-1:0] <= cmt_to_csr_if.fflags; + end + + if (write_enable) begin + case (write_addr) + `CSR_FFLAGS: begin + csr_fcsr[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; + csr_fflags[warp_num] <= write_data[`FFG_BITS-1:0]; + end + `CSR_FRM: begin + csr_fcsr[warp_num][`FFG_BITS+`FRM_BITS-1:`FFG_BITS] <= write_data[`FRM_BITS-1:0]; + csr_frm[warp_num] <= write_data[`FRM_BITS-1:0]; + end + `CSR_FCSR: begin + csr_fcsr[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:0]; + csr_frm[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:`FFG_BITS]; + csr_fflags[warp_num] <= write_data[`FFG_BITS-1:0]; + end + `CSR_SATP: csr_satp <= write_data; + + `CSR_MSTATUS: csr_mstatus <= write_data; + `CSR_MEDELEG: csr_medeleg <= write_data; + `CSR_MIDELEG: csr_mideleg <= write_data; + `CSR_MIE: csr_mie <= write_data; + `CSR_MTVEC: csr_mtvec <= write_data; + + `CSR_MEPC: csr_mepc <= write_data; + + `CSR_PMPCFG0: csr_pmpcfg[0] <= write_data; + `CSR_PMPADDR0: csr_pmpaddr[0] <= write_data; + + default: begin + assert(~write_enable) else $error("%t: invalid CSR write address: %0h", $time, write_addr); end - endcase - end else if (cmt_to_csr_if.upd_fflags) begin - fflags_table[cmt_to_csr_if.fpu_warp_num][`FFG_BITS-1:0] <= fflags_update; - fcsr_table[cmt_to_csr_if.fpu_warp_num][`FFG_BITS-1:0] <= fflags_update; - end + endcase end end - reg [63:0] total_cycles, total_instrs; - always @(posedge clk) begin if (reset) begin - total_cycles <= 0; - total_instrs <= 0; + csr_cycle <= 0; + csr_instret <= 0; end else begin - total_cycles <= total_cycles + 1; + csr_cycle <= csr_cycle + 1; if (cmt_to_csr_if.valid) begin - total_instrs <= total_instrs + 64'(cmt_to_csr_if.num_commits); + csr_instret <= csr_instret + 64'(cmt_to_csr_if.num_commits); end end end always @(*) begin case (read_addr) - `CSR_FFLAGS : read_data = 32'(fflags_table[warp_num]); - `CSR_FRM : read_data = 32'(frm_table[warp_num]); - `CSR_FCSR : read_data = 32'(fcsr_table[warp_num]); + `CSR_FFLAGS : read_data = 32'(csr_fflags[warp_num]); + `CSR_FRM : read_data = 32'(csr_frm[warp_num]); + `CSR_FCSR : read_data = 32'(csr_fcsr[warp_num]); + `CSR_LWID : read_data = 32'(warp_num); + `CSR_LTID , `CSR_GTID , + `CSR_MHARTID , `CSR_GWID : read_data = CORE_ID * `NUM_WARPS + 32'(warp_num); `CSR_GCID : read_data = CORE_ID; `CSR_NT : read_data = `NUM_THREADS; `CSR_NW : read_data = `NUM_WARPS; `CSR_NC : read_data = `NUM_CORES * `NUM_CLUSTERS; - `CSR_CYCLE_L : read_data = total_cycles[31:0]; - `CSR_CYCLE_H : read_data = total_cycles[63:32]; - `CSR_INSTR_L : read_data = total_instrs[31:0]; - `CSR_INSTR_H : read_data = total_instrs[63:32]; - `CSR_VEND_ID : read_data = `VENDOR_ID; - `CSR_ARCH_ID : read_data = `ARCHITECTURE_ID; - `CSR_IMPL_ID : read_data = `IMPLEMENTATION_ID; + + `CSR_SATP : read_data = 32'(csr_satp); + + `CSR_MSTATUS : read_data = 32'(csr_mstatus); `CSR_MISA : read_data = `ISA_CODE; - default : read_data = 32'(csr_table[rd_addr]); + `CSR_MEDELEG : read_data = 32'(csr_medeleg); + `CSR_MIDELEG : read_data = 32'(csr_mideleg); + `CSR_MIE : read_data = 32'(csr_mie); + `CSR_MTVEC : read_data = 32'(csr_mtvec); + + `CSR_MEPC : read_data = 32'(csr_mepc); + + `CSR_PMPCFG0 : read_data = 32'(csr_pmpcfg[0]); + `CSR_PMPADDR0: read_data = 32'(csr_pmpaddr[0]); + + `CSR_CYCLE : read_data = csr_cycle[31:0]; + `CSR_CYCLE_H : read_data = csr_cycle[63:32]; + `CSR_INSTRET : read_data = csr_instret[31:0]; + `CSR_INSTRET_H:read_data = csr_instret[63:32]; + + `CSR_MVENDORID:read_data = `VENDOR_ID; + `CSR_MARCHID : read_data = `ARCHITECTURE_ID; + `CSR_MIMPID : read_data = `IMPLEMENTATION_ID; + + default: begin + assert(~read_enable) else $error("%t: invalid CSR read address: %0h", $time, read_addr); + end endcase end - assign csr_to_fpu_if.frm = frm_table[csr_to_fpu_if.warp_num]; + assign csr_to_fpu_if.frm = csr_frm[csr_to_fpu_if.warp_num]; -endmodule +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index 8e4baf8b..14ea5fd8 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -37,12 +37,11 @@ module VX_csr_unit #( .select_io_rsp (select_io_rsp) ); - wire [`CSR_ADDR_SIZE-1:0] csr_addr_s2; - wire [31:0] csr_read_data_s2; - wire [31:0] csr_updated_data_s2; - wire [31:0] csr_read_data_unqual; - - wire is_csr_s2 = csr_pipe_commit_if.valid; + wire csr_we_s1; + wire [`CSR_ADDR_BITS-1:0] csr_addr_s1; + wire [31:0] csr_read_data, csr_read_data_s1; + wire [31:0] csr_updated_data_s1; + wire [`NW_BITS-1:0] warp_num_s1; VX_csr_data #( .CORE_ID(CORE_ID) @@ -51,51 +50,64 @@ module VX_csr_unit #( .reset (reset), .cmt_to_csr_if (cmt_to_csr_if), .csr_to_fpu_if (csr_to_fpu_if), + .read_enable (csr_pipe_req_if.valid), .read_addr (csr_pipe_req_if.csr_addr), - .read_data (csr_read_data_unqual), - .write_enable (is_csr_s2), - .write_data (csr_updated_data_s2[`CSR_WIDTH-1:0]), - .write_addr (csr_addr_s2), + .read_data (csr_read_data), + .write_enable (csr_we_s1), + .write_data (csr_updated_data_s1[`CSR_WIDTH-1:0]), + .write_addr (csr_addr_s1), .warp_num (csr_pipe_req_if.warp_num) - ); + ); - wire [`NW_BITS-1:0] warp_num_s2; + wire csr_hazard = (csr_addr_s1 == csr_pipe_req_if.csr_addr) + && (warp_num_s1 == csr_pipe_req_if.warp_num) + && csr_pipe_commit_if.valid; - wire csr_hazard = (csr_addr_s2 == csr_pipe_req_if.csr_addr) - && (warp_num_s2 == csr_pipe_req_if.warp_num) - && is_csr_s2; - - wire [31:0] csr_read_data = csr_hazard ? csr_updated_data_s2 : csr_read_data_unqual; + wire [31:0] csr_read_data_qual = csr_hazard ? csr_updated_data_s1 : csr_read_data; reg [31:0] csr_updated_data; + reg csr_we_s0_unqual; + always @(*) begin + csr_we_s0_unqual = 0; case (csr_pipe_req_if.csr_op) - `CSR_RW: csr_updated_data = csr_pipe_req_if.csr_mask; - `CSR_RS: csr_updated_data = csr_read_data | csr_pipe_req_if.csr_mask; - `CSR_RC: csr_updated_data = csr_read_data & (32'hFFFFFFFF - csr_pipe_req_if.csr_mask); + `CSR_RW: begin + csr_updated_data = csr_pipe_req_if.csr_mask; + csr_we_s0_unqual = 1; + end + `CSR_RS: begin + csr_updated_data = csr_read_data_qual | csr_pipe_req_if.csr_mask; + csr_we_s0_unqual = (csr_pipe_req_if.csr_mask != 0); + end + `CSR_RC: begin + csr_updated_data = csr_read_data_qual & (32'hFFFFFFFF - csr_pipe_req_if.csr_mask); + csr_we_s0_unqual = (csr_pipe_req_if.csr_mask != 0); + end default: csr_updated_data = 32'hdeadbeef; endcase - end + end + + wire csr_we_s0 = csr_we_s0_unqual && csr_pipe_req_if.valid; wire stall = ~csr_pipe_commit_if.ready && csr_pipe_commit_if.valid; VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + `CSR_ADDR_SIZE + 1 + 32 + 32) + .N(1 + `ISTAG_BITS + `NW_BITS + 1 + `CSR_ADDR_BITS + 1 + 32 + 32) ) csr_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({csr_pipe_req_if.valid, csr_pipe_req_if.issue_tag, csr_pipe_req_if.warp_num, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data, csr_updated_data}), - .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.issue_tag, warp_num_s2, csr_addr_s2, select_io_rsp, csr_read_data_s2, csr_updated_data_s2}) + .in ({csr_pipe_req_if.valid, csr_pipe_req_if.issue_tag, csr_pipe_req_if.warp_num, csr_we_s0, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data_qual, csr_updated_data}), + .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.issue_tag, warp_num_s1, csr_we_s1, csr_addr_s1, select_io_rsp, csr_read_data_s1, csr_updated_data_s1}) ); genvar i; for (i = 0; i < `NUM_THREADS; i++) begin - assign csr_pipe_commit_if.data[i] = (csr_addr_s2 == `CSR_LTID) ? i : - (csr_addr_s2 == `CSR_GTID) ? (csr_read_data_s2 * `NUM_THREADS + i) : - csr_read_data_s2; + assign csr_pipe_commit_if.data[i] = (csr_addr_s1 == `CSR_LTID) ? i : + (csr_addr_s1 == `CSR_GTID) ? (csr_read_data_s1 * `NUM_THREADS + i) : + csr_read_data_s1; end assign csr_pipe_req_if.ready = ~stall; diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index ff1d839c..983f520f 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -337,10 +337,10 @@ module VX_decode #( assign decode_tmp_if.use_rs3 = use_rs3; - assign decode_tmp_if.reg_use_mask = ((`NUM_REGS)'(use_rd) << rd) - | ((`NUM_REGS)'(use_rs1) << rs1_qual) - | ((`NUM_REGS)'(use_rs2) << rs2) - | ((`NUM_REGS)'(use_rs3) << rs3); + assign decode_tmp_if.reg_use_mask = ((`NUM_REGS)'(use_rd) << decode_tmp_if.rd) + | ((`NUM_REGS)'(use_rs1) << decode_tmp_if.rs1) + | ((`NUM_REGS)'(use_rs2) << decode_tmp_if.rs2) + | ((`NUM_REGS)'(use_rs3) << decode_tmp_if.rs3); assign decode_tmp_if.imm = (is_lui || is_auipc) ? {upper_imm, 12'(0)} : (is_jal || is_jalr || is_jals) ? jalx_offset : diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 8e0279b5..d61b001c 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -30,7 +30,7 @@ `define NR_BITS `LOG2UP(`NUM_REGS) -`define CSR_ADDR_SIZE 12 +`define CSR_ADDR_BITS 12 `define CSR_WIDTH 12 @@ -38,8 +38,8 @@ /////////////////////////////////////////////////////////////////////////////// -`define LATENCY_IDIV 24 -`define LATENCY_IMUL 2 +`define LATENCY_IDIV 24 +`define LATENCY_IMUL 2 `define LATENCY_FMULADD 2 `define LATENCY_FDIVSQRT 2 @@ -91,6 +91,7 @@ `define BR_MRET 4'hA `define BR_SRET 4'hB `define BR_DRET 4'hC +`define BR_NO 4'hF `define BR_BITS 4 `define OP_BITS 5 diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index 4e678de4..540dfdd8 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -20,12 +20,12 @@ module VX_fpu_unit #( localparam FMTF_BITS = $clog2(fpnew_pkg::NUM_FP_FORMATS); localparam FMTI_BITS = $clog2(fpnew_pkg::NUM_INT_FORMATS); - localparam int FPU_DPATHW = `NUM_THREADS * 32; + localparam FPU_DPATHW = 32'd32; localparam fpnew_pkg::fpu_features_t FPU_FEATURES = '{ Width: FPU_DPATHW, - EnableVectors: 1, - EnableNanBox: 1, + EnableVectors: 1'b0, + EnableNanBox: 1'b1, FpFmtMask: 5'b10000, IntFmtMask: 4'b0010 }; @@ -54,7 +54,7 @@ module VX_fpu_unit #( wire [FMTI_BITS-1:0] fpu_int_fmt = fpnew_pkg::INT32; wire [`NUM_THREADS-1:0][31:0] fpu_result; - fpnew_pkg::status_t fpu_status; + fpnew_pkg::status_t fpu_status [0:`NUM_THREADS-1]; assign csr_to_fpu_if.warp_num = fpu_req_if.warp_num; wire [`FRM_BITS-1:0] real_frm = (fpu_req_if.frm == `FRM_DYN) ? csr_to_fpu_if.frm : fpu_req_if.frm; @@ -65,7 +65,7 @@ module VX_fpu_unit #( reg [FOP_BITS-1:0] fpu_op; reg [`FRM_BITS-1:0] fpu_rnd; reg fpu_op_mod; - reg fflags_en, fflags_en_o; + reg fflags_en, fflags_en_o; always @(*) begin fpu_op = fpnew_pkg::SGNJ; @@ -87,88 +87,94 @@ module VX_fpu_unit #( fpu_operands[2] = fpu_req_if.rs2_data; fpu_op_mod = 1; end - `FPU_MUL: fpu_op = fpnew_pkg::MUL; - `FPU_DIV: fpu_op = fpnew_pkg::DIV; - `FPU_SQRT: fpu_op = fpnew_pkg::SQRT; - `FPU_MADD: fpu_op = fpnew_pkg::FMADD; - `FPU_MSUB: begin fpu_op = fpnew_pkg::FMADD; fpu_op_mod = 1; end - `FPU_NMSUB: fpu_op = fpnew_pkg::FNMSUB; + `FPU_MUL: begin fpu_op = fpnew_pkg::MUL; end + `FPU_DIV: begin fpu_op = fpnew_pkg::DIV; end + `FPU_SQRT: begin fpu_op = fpnew_pkg::SQRT; end + `FPU_MADD: begin fpu_op = fpnew_pkg::FMADD; end + `FPU_MSUB: begin fpu_op = fpnew_pkg::FMADD; fpu_op_mod = 1; end + `FPU_NMSUB: begin fpu_op = fpnew_pkg::FNMSUB; end `FPU_NMADD: begin fpu_op = fpnew_pkg::FNMSUB; fpu_op_mod = 1; end `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; fflags_en = 0; end `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; fflags_en = 0; end `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; fflags_en = 0; end `FPU_MIN: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RNE; end `FPU_MAX: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RTZ; end - `FPU_CVTWS: fpu_op = fpnew_pkg::F2I; + `FPU_CVTWS: begin fpu_op = fpnew_pkg::F2I; end `FPU_CVTWUS:begin fpu_op = fpnew_pkg::F2I; fpu_op_mod = 1; end - `FPU_CVTSW: fpu_op = fpnew_pkg::I2F; + `FPU_CVTSW: begin fpu_op = fpnew_pkg::I2F; end `FPU_CVTSWU:begin fpu_op = fpnew_pkg::I2F; fpu_op_mod = 1; end `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end `FPU_CLASS: begin fpu_op = fpnew_pkg::CLASSIFY; fflags_en = 0; end - `FPU_CMP: fpu_op = fpnew_pkg::CMP; + `FPU_CMP: begin fpu_op = fpnew_pkg::CMP; end default:; endcase - end + end + + genvar i; `DISABLE_TRACING - - fpnew_top #( - .Features (FPU_FEATURES), - .Implementation (FPU_IMPLEMENTATION), - .TagType (logic[`LOG2UP(`FPURQ_SIZE)-1+2:0]) - ) fpnew_core ( - .clk_i (clk), - .rst_ni (1'b1), - .operands_i (fpu_operands), - .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), - .op_i (fpnew_pkg::operation_e'(fpu_op)), - .op_mod_i (fpu_op_mod), - .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), - .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), - .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), - .vectorial_op_i (1'b1), - .tag_i ({fpu_in_tag, fflags_en, is_class_op_i}), - .in_valid_i (fpu_in_valid), - .in_ready_o (fpu_in_ready), - .flush_i (reset), - .result_o (fpu_result), - .status_o (fpu_status), - .tag_o ({fpu_out_tag, fflags_en_o, is_class_op_o}), - .out_valid_o (fpu_out_valid), - .out_ready_i (fpu_out_ready), - `UNUSED_PIN (busy_o) - ); - -`ENABLE_TRACING - - reg [`NUM_THREADS-1:0][31:0] fpu_result_qual; - - always @(8) begin - // unpack classify mask result - if (is_class_op_o) begin - integer i; - for (i = 0; i < `NUM_THREADS; i++) begin - automatic integer l = i / 4; - automatic integer w = i % 4; - automatic integer class_mask = fpu_result[l][w * 8 +: 8]; - - fpu_result_qual[i][0] = class_mask[7] & class_mask[0]; - fpu_result_qual[i][1] = class_mask[7] & class_mask[1]; - fpu_result_qual[i][2] = class_mask[7] & class_mask[2]; - fpu_result_qual[i][3] = class_mask[7] & class_mask[3]; - fpu_result_qual[i][4] = class_mask[6] & class_mask[3]; - fpu_result_qual[i][5] = class_mask[6] & class_mask[2]; - fpu_result_qual[i][6] = class_mask[6] & class_mask[1]; - fpu_result_qual[i][7] = class_mask[6] & class_mask[0]; - fpu_result_qual[i][8] = class_mask[4]; - fpu_result_qual[i][9] = class_mask[5]; - end + + for (i = 0; i < `NUM_THREADS; i++) begin + if (0 == i) begin + fpnew_top #( + .Features (FPU_FEATURES), + .Implementation (FPU_IMPLEMENTATION), + .TagType (logic[`LOG2UP(`FPURQ_SIZE)+1+1-1:0]) + ) fpnew_core ( + .clk_i (clk), + .rst_ni (1'b1), + .operands_i ({fpu_operands[2][0], fpu_operands[1][0], fpu_operands[0][0]}), + .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), + .op_i (fpnew_pkg::operation_e'(fpu_op)), + .op_mod_i (fpu_op_mod), + .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), + .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), + .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), + .vectorial_op_i (1'b0), + .tag_i ({fpu_in_tag, fflags_en, is_class_op_i}), + .in_valid_i (fpu_in_valid), + .in_ready_o (fpu_in_ready), + .flush_i (reset), + .result_o (fpu_result), + .status_o (fpu_status[0]), + .tag_o ({fpu_out_tag, fflags_en_o, is_class_op_o}), + .out_valid_o (fpu_out_valid), + .out_ready_i (fpu_out_ready), + `UNUSED_PIN (busy_o) + ); end else begin - fpu_result_qual = fpu_result; + fpnew_top #( + .Features (FPU_FEATURES), + .Implementation (FPU_IMPLEMENTATION), + .TagType (logic) + ) fpnew_core ( + .clk_i (clk), + .rst_ni (1'b1), + .operands_i ({fpu_operands[2][i], fpu_operands[1][i], fpu_operands[0][i]}), + .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), + .op_i (fpnew_pkg::operation_e'(fpu_op)), + .op_mod_i (fpu_op_mod), + .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), + .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), + .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), + .vectorial_op_i (1'b0), + .tag_i (1'b0), + .in_valid_i (fpu_in_valid), + `UNUSED_PIN (in_ready_o), + .flush_i (reset), + .result_o (fpu_result[i]), + .status_o (fpu_status[i]), + `UNUSED_PIN (tag_o), + `UNUSED_PIN (out_valid_o), + .out_ready_i (fpu_out_ready), + `UNUSED_PIN (busy_o) + ); end end +`ENABLE_TRACING + assign fpu_in_valid = fpu_req_if.valid; assign fpu_in_tag = fpu_req_if.issue_tag; @@ -177,15 +183,18 @@ module VX_fpu_unit #( assign fpu_commit_if.valid = fpu_out_valid; assign fpu_commit_if.issue_tag = fpu_out_tag; - assign fpu_commit_if.data = fpu_result_qual; + assign fpu_commit_if.data = fpu_result; - assign fpu_commit_if.upd_fflags = fflags_en_o; - assign fpu_commit_if.fflags_NV = fpu_status.NV; - assign fpu_commit_if.fflags_DZ = fpu_status.DZ; - assign fpu_commit_if.fflags_OF = fpu_status.OF; - assign fpu_commit_if.fflags_UF = fpu_status.UF; - assign fpu_commit_if.fflags_NX = fpu_status.NX; + assign fpu_commit_if.upd_fflags = fflags_en_o; + for (i = 0; i < `NUM_THREADS; i++) begin + assign fpu_commit_if.fflags[i][0] = fpu_status[i].NX; + assign fpu_commit_if.fflags[i][1] = fpu_status[i].UF; + assign fpu_commit_if.fflags[i][2] = fpu_status[i].OF; + assign fpu_commit_if.fflags[i][3] = fpu_status[i].DZ; + assign fpu_commit_if.fflags[i][4] = fpu_status[i].NV; + end + assign fpu_out_ready = fpu_commit_if.ready; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_icache_stage.v b/hw/rtl/VX_icache_stage.v index bc77503a..fad3fcd4 100644 --- a/hw/rtl/VX_icache_stage.v +++ b/hw/rtl/VX_icache_stage.v @@ -46,7 +46,7 @@ module VX_icache_stage #( assign ifetch_req_if.ready = icache_req_if.ready; `ifdef DBG_CORE_REQ_INFO - assign icache_req_if.tag = {ifetch_req_if.curr_PC, 1'b0, 5'b0, ifetch_req_if.warp_num, req_tag}; + assign icache_req_if.tag = {ifetch_req_if.curr_PC, 1'b0, `NR_BITS'(0), ifetch_req_if.warp_num, req_tag}; `else assign icache_req_if.tag = req_tag; `endif diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 1967df71..78b8d2d2 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -97,7 +97,7 @@ module VX_issue #( $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%d, rd=%0d, rs1_data=%0h, rs2_data=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC); end if (lsu_req_if.valid && lsu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0b, rd=%0d, rw=%b, byteen=%b, baddr=%0h, offset=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset); + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0b, rd=%0d, rw=%b, byteen=%b, baddr=%0h, offset=%0h, data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data); end if (csr_req_if.valid && csr_req_if.ready) begin $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%d, rd=%0d, addr=%0h, mask=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, csr_req_if.csr_addr, csr_req_if.csr_mask); diff --git a/hw/rtl/VX_issue_demux.v b/hw/rtl/VX_issue_demux.v index 3ab2f160..5e5a9672 100644 --- a/hw/rtl/VX_issue_demux.v +++ b/hw/rtl/VX_issue_demux.v @@ -46,7 +46,7 @@ module VX_issue_demux ( assign csr_req_if.warp_num = decode_if.warp_num; assign csr_req_if.curr_PC = decode_if.curr_PC; assign csr_req_if.csr_op = `CSR_OP(decode_if.ex_op); - assign csr_req_if.csr_addr = decode_if.imm[`CSR_ADDR_SIZE-1:0]; + assign csr_req_if.csr_addr = decode_if.imm[`CSR_ADDR_BITS-1:0]; assign csr_req_if.csr_mask = decode_if.rs2_is_imm ? 32'(decode_if.rs1) : gpr_read_if.rs1_data[0]; assign csr_req_if.is_io = 1'b0; diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index 08f65575..22afdec1 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -49,7 +49,7 @@ module VX_scheduler #( for (i = 0; i < `NUM_REGS; i++) begin inuse_registers[w][i] <= 0; end - inuse_reg_mask[w] <= 0; + inuse_reg_mask[w] <= `NUM_REGS'(0); end end else begin if (acquire_rd) begin diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 953db5d1..051fe41c 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -24,9 +24,10 @@ module VX_writeback #( reg [`NUM_THREADS-1:0] wb_thread_mask [`ISSUEQ_SIZE-1:0]; reg [31:0] wb_curr_PC [`ISSUEQ_SIZE-1:0]; reg [`NR_BITS-1:0] wb_rd [`ISSUEQ_SIZE-1:0]; - reg [`ISSUEQ_SIZE-1:0] wb_pending, wb_pending_n; - reg [`ISTAG_BITS-1:0] wb_index; + reg [`ISSUEQ_SIZE-1:0] wb_pending; + reg [`ISSUEQ_SIZE-1:0] wb_pending_n; + reg [`ISTAG_BITS-1:0] wb_index; wire [`ISTAG_BITS-1:0] wb_index_n; reg wb_valid; @@ -67,6 +68,8 @@ module VX_writeback #( always @(posedge clk) begin if (reset) begin wb_pending <= 0; + wb_index <= 0; + wb_valid <= 0; end else begin if (alu_commit_if.valid) begin wb_data [alu_commit_if.issue_tag] <= alu_commit_if.data; diff --git a/hw/rtl/cache/VX_bank.v b/hw/rtl/cache/VX_bank.v index f0692c5b..57992793 100644 --- a/hw/rtl/cache/VX_bank.v +++ b/hw/rtl/cache/VX_bank.v @@ -105,7 +105,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO /* verilator lint_off UNUSED */ - wire[31:0] debug_use_pc_st0; + wire[31:0] debug_pc_st0; wire debug_wb_st0; wire[`NR_BITS-1:0] debug_rd_st0; wire[`NW_BITS-1:0] debug_warp_num_st0; @@ -114,7 +114,7 @@ module VX_bank #( wire[`REQS_BITS-1:0] debug_tid_st0; wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st0; - wire[31:0] debug_use_pc_st1e; + wire[31:0] debug_pc_st1e; wire debug_wb_st1e; wire[`NR_BITS-1:0] debug_rd_st1e; wire[`NW_BITS-1:0] debug_warp_num_st1e; @@ -123,7 +123,7 @@ module VX_bank #( wire[`REQS_BITS-1:0] debug_tid_st1e; wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st1e; - wire[31:0] debug_use_pc_st2; + wire[31:0] debug_pc_st2; wire debug_wb_st2; wire[`NR_BITS-1:0] debug_rd_st2; wire[`NW_BITS-1:0] debug_warp_num_st2; @@ -360,7 +360,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin - assign {debug_use_pc_st0, debug_wb_st0, debug_rd_st0, debug_warp_num_st0, debug_tagid_st0, debug_rw_st0, debug_byteen_st0, debug_tid_st0} = qual_inst_meta_st0; + assign {debug_pc_st0, debug_wb_st0, debug_rd_st0, debug_warp_num_st0, debug_tagid_st0, debug_rw_st0, debug_byteen_st0, debug_tid_st0} = qual_inst_meta_st0; end `endif @@ -432,6 +432,9 @@ module VX_bank #( && (addr_st2 == addr_st1e); VX_tag_data_access #( + .BANK_ID (BANK_ID), + .CACHE_ID (CACHE_ID), + .CORE_TAG_ID_BITS(CORE_TAG_ID_BITS), .CACHE_SIZE (CACHE_SIZE), .BANK_LINE_SIZE (BANK_LINE_SIZE), .NUM_BANKS (NUM_BANKS), @@ -442,6 +445,15 @@ module VX_bank #( ) tag_data_access ( .clk (clk), .reset (reset), + +`ifdef DBG_CORE_REQ_INFO + .debug_pc_st1e(debug_pc_st1e), + .debug_wb_st1e(debug_wb_st1e), + .debug_rd_st1e(debug_rd_st1e), + .debug_warp_num_st1e(debug_warp_num_st1e), + .debug_tagid_st1e(debug_tagid_st1e), +`endif + .stall (stall_bank_pipe), .stall_bank_pipe(stall_bank_pipe), @@ -478,7 +490,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin - assign {debug_use_pc_st1e, debug_wb_st1e, debug_rd_st1e, debug_warp_num_st1e, debug_tagid_st1e, debug_rw_st1e, debug_byteen_st1e, debug_tid_st1e} = inst_meta_st1[STAGE_1_CYCLES-1]; + assign {debug_pc_st1e, debug_wb_st1e, debug_rd_st1e, debug_warp_num_st1e, debug_tagid_st1e, debug_rw_st1e, debug_byteen_st1e, debug_tid_st1e} = inst_meta_st1[STAGE_1_CYCLES-1]; end `endif @@ -519,7 +531,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin - assign {debug_use_pc_st2, debug_wb_st2, debug_rd_st2, debug_warp_num_st2, debug_tagid_st2, debug_rw_st2, debug_byteen_st2, debug_tid_st2} = inst_meta_st2; + assign {debug_pc_st2, debug_wb_st2, debug_rd_st2, debug_warp_num_st2, debug_tagid_st2, debug_rw_st2, debug_byteen_st2, debug_tid_st2} = inst_meta_st2; end `endif diff --git a/hw/rtl/cache/VX_tag_data_access.v b/hw/rtl/cache/VX_tag_data_access.v index 04e99336..13e52cb7 100644 --- a/hw/rtl/cache/VX_tag_data_access.v +++ b/hw/rtl/cache/VX_tag_data_access.v @@ -1,6 +1,9 @@ `include "VX_cache_config.vh" module VX_tag_data_access #( + parameter CACHE_ID = 0, + parameter BANK_ID = 0, + parameter CORE_TAG_ID_BITS = 0, // Size of cache in bytes parameter CACHE_SIZE = 0, // Size of line inside a bank in bytes @@ -22,6 +25,14 @@ module VX_tag_data_access #( input wire clk, input wire reset, +`ifdef DBG_CORE_REQ_INFO + input wire[31:0] debug_pc_st1e, + input wire debug_wb_st1e, + input wire[`NR_BITS-1:0] debug_rd_st1e, + input wire[`NW_BITS-1:0] debug_warp_num_st1e, + input wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st1e, +`endif + input wire stall, input wire is_snp_st1e, input wire snp_invalidate_st1e, @@ -85,10 +96,10 @@ module VX_tag_data_access #( wire[`LINE_SELECT_BITS-1:0] writeladdr_st1e = writeaddr_st1e[`LINE_SELECT_BITS-1:0]; VX_tag_data_store #( - .CACHE_SIZE (CACHE_SIZE), - .BANK_LINE_SIZE (BANK_LINE_SIZE), - .NUM_BANKS (NUM_BANKS), - .WORD_SIZE (WORD_SIZE) + .CACHE_SIZE (CACHE_SIZE), + .BANK_LINE_SIZE (BANK_LINE_SIZE), + .NUM_BANKS (NUM_BANKS), + .WORD_SIZE (WORD_SIZE) ) tag_data_store ( .clk (clk), .reset (reset), @@ -125,7 +136,7 @@ module VX_tag_data_access #( genvar i; for (i = 1; i < STAGE_1_CYCLES-1; i++) begin VX_generic_register #( - .N( 1 + 1 + BANK_LINE_SIZE + `TAG_SELECT_BITS + `BANK_LINE_WIDTH) + .N(1 + 1 + BANK_LINE_SIZE + `TAG_SELECT_BITS + `BANK_LINE_WIDTH) ) s0_1_cc ( .clk (clk), .reset (reset), @@ -200,4 +211,23 @@ module VX_tag_data_access #( assign fill_saw_dirty_st1e = real_writefill && dirty_st1e; assign invalidate_line = snoop_hit_no_pending; +`ifdef DBG_PRINT_CACHE_BANK + always @(posedge clk) begin + if (valid_req_st1e) begin + if ((| use_write_enable)) begin + if (writefill_st1e) begin + $display("%t: bank%0d:%0d store-fill: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, data=%0h", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, writeladdr_st1e, writetag_st1e, use_write_data); + end else begin + $display("%t: bank%0d:%0d store-write: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, wsel=%0d, data=%0h", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, writeladdr_st1e, writetag_st1e, wordsel_st1e, writeword_st1e); + end + end else + if (miss_st1e) begin + $display("%t: bank%0d:%0d store-miss: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e); + end else begin + $display("%t: bank%0d:%0d store-read: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, wsel=%0d, data=%0h", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, readaddr_st10, qual_read_tag_st1, wordsel_st1e, qual_read_data_st1); + end + end + end +`endif + endmodule \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_cmt_to_csr_if.v b/hw/rtl/interfaces/VX_cmt_to_csr_if.v index 7badc5bf..2b712342 100644 --- a/hw/rtl/interfaces/VX_cmt_to_csr_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_csr_if.v @@ -6,15 +6,13 @@ interface VX_cmt_to_csr_if (); wire valid; + + wire [`NW_BITS-1:0] warp_num; + wire [`NE_BITS:0] num_commits; wire upd_fflags; - wire [`NW_BITS-1:0] fpu_warp_num; - wire fflags_NV; - wire fflags_DZ; - wire fflags_OF; - wire fflags_UF; - wire fflags_NX; + wire [`FFG_BITS-1:0] fflags; endinterface diff --git a/hw/rtl/interfaces/VX_csr_io_req_if.v b/hw/rtl/interfaces/VX_csr_io_req_if.v index 716887d3..a5307a08 100644 --- a/hw/rtl/interfaces/VX_csr_io_req_if.v +++ b/hw/rtl/interfaces/VX_csr_io_req_if.v @@ -5,11 +5,11 @@ interface VX_csr_io_req_if (); - wire valid; - wire [`CSR_ADDR_SIZE-1:0] addr; - wire rw; - wire [31:0] data; - wire ready; + wire valid; + wire [`CSR_ADDR_BITS-1:0] addr; + wire rw; + wire [31:0] data; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_csr_req_if.v b/hw/rtl/interfaces/VX_csr_req_if.v index 92c5b82a..b29cc649 100644 --- a/hw/rtl/interfaces/VX_csr_req_if.v +++ b/hw/rtl/interfaces/VX_csr_req_if.v @@ -12,7 +12,7 @@ interface VX_csr_req_if (); wire [`CSR_BITS-1:0] csr_op; - wire [`CSR_ADDR_SIZE-1:0] csr_addr; + wire [`CSR_ADDR_BITS-1:0] csr_addr; wire [31:0] csr_mask; wire [`NR_BITS-1:0] rd; diff --git a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v index ca2cb619..cce2e293 100644 --- a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v +++ b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v @@ -9,11 +9,7 @@ interface VX_fpu_to_cmt_if (); wire [`ISTAG_BITS-1:0] issue_tag; wire [`NUM_THREADS-1:0][31:0] data; wire upd_fflags; - wire fflags_NV; - wire fflags_DZ; - wire fflags_OF; - wire fflags_UF; - wire fflags_NX; + wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags; wire ready; endinterface diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index 77c2a151..c232cc09 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -15,7 +15,7 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE DBG_FLAGS += $(DBG_PRINT_FLAGS) -#DBG_FLAGS += -DDBG_CORE_REQ_INFO +DBG_FLAGS += -DDBG_CORE_REQ_INFO FPU_INCLUDE = -I../rtl/fp_cores/fpnew/src/common_cells/include -I../rtl/fp_cores/fpnew/src/common_cells/src -I../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl -I../rtl/fp_cores/fpnew/src INCLUDE = -I../rtl/ -I../rtl/libs -I../rtl/interfaces -I../rtl/cache -I../rtl/fp_cores -I../rtl/simulate $(FPU_INCLUDE) diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index 90fd338b..1c30a870 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -210,7 +210,7 @@ void Simulator::wait(uint32_t cycles) { } } -bool Simulator::is_busy() { +bool Simulator::is_busy() const { return vortex_->busy || snp_req_active_; } @@ -255,11 +255,11 @@ void Simulator::run() { this->wait(5); } -int Simulator::get_last_wb_value(int reg) { - #if (NUM_CLUSTERS == 1) - return (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_wb_value[reg]; +int Simulator::get_last_wb_value(int reg) const { + #if (NUM_CLUSTERS != 1) + return (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_wb_value[reg]; #else - return (int)vortex_->Vortex->genblk2__DOT__genblk1__BRA__0__KET____DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_wb_value[reg]; + return (int)vortex_->Vortex->genblk1__DOT__cluster->genblk1__BRA__0__KET____DOT__core->pipeline->commit->writeback->last_wb_value[reg]; #endif } diff --git a/hw/simulate/simulator.h b/hw/simulate/simulator.h index 43052685..e104b66b 100644 --- a/hw/simulate/simulator.h +++ b/hw/simulate/simulator.h @@ -34,7 +34,7 @@ public: void load_bin(const char* program_file); void load_ihex(const char* program_file); - bool is_busy(); + bool is_busy() const; void reset(); void step(); @@ -44,7 +44,7 @@ public: void attach_ram(RAM* ram); void run(); - int get_last_wb_value(int reg); + int get_last_wb_value(int reg) const; void print_stats(std::ostream& out); private: diff --git a/runtime/src/vx_intrinsics.S b/runtime/src/vx_intrinsics.S index c6b0008d..1e99c794 100644 --- a/runtime/src/vx_intrinsics.S +++ b/runtime/src/vx_intrinsics.S @@ -83,11 +83,11 @@ vx_num_cores: .type vx_num_cycles, @function .global vx_num_cycles vx_num_cycles: - csrr a0, CSR_CYCLE_L + csrr a0, CSR_CYCLE ret .type vx_num_instrs, @function .global vx_num_instrs vx_num_instrs: - csrr a0, CSR_INSTR_L + csrr a0, CSR_INSTRET ret \ No newline at end of file diff --git a/runtime/tests/simple/vx_simple.dump b/runtime/tests/simple/vx_simple.dump index 6ab5c371..9b62df87 100644 --- a/runtime/tests/simple/vx_simple.dump +++ b/runtime/tests/simple/vx_simple.dump @@ -454,7 +454,7 @@ Disassembly of section .text: 80000698: 0005006b 0x5006b 8000069c: 00001197 auipc gp,0x1 800006a0: 16c18193 addi gp,gp,364 # 80001808 <__global_pointer$> -800006a4: f14025f3 csrr a1,mhartid +800006a4: 022025f3 csrr a1,0x22 800006a8: 00a59593 slli a1,a1,0xa 800006ac: 02002673 csrr a2,0x20 800006b0: 00261613 slli a2,a2,0x2 @@ -502,7 +502,7 @@ Disassembly of section .text: 80000710: 00008067 ret 80000714 : -80000714: f1402573 csrr a0,mhartid +80000714: 02202573 csrr a0,0x22 80000718: 00008067 ret 8000071c : diff --git a/runtime/tests/simple/vx_simple.elf b/runtime/tests/simple/vx_simple.elf index a7a3480a8f19697ed7a6eff96d9dbff0e67d3260..364d27aefa03695692462d1128ba50e29136e5fe 100755 GIT binary patch delta 22 ccmcbTcqMVeGBG9vrpYVB@_^K43GqFW0A@=El>h($ delta 22 ccmcbTcqMVeGBGBHkCRu3 Date: Fri, 31 Jul 2020 13:39:52 -0700 Subject: [PATCH 30/94] minor updates --- hw/opae/gen_sources.sh | 2 +- hw/rtl/VX_commit.v | 2 +- hw/rtl/VX_csr_data.v | 2 +- hw/rtl/VX_define.vh | 6 +- hw/rtl/VX_execute.v | 2 +- hw/rtl/VX_fpu_unit.v | 236 +++++++------------------- hw/rtl/fp_cores/VX_fp_fpga.v | 87 ++++++++++ hw/rtl/fp_cores/VX_fpnew.v | 217 +++++++++++++++++++++++ hw/rtl/fp_cores/altera/acl_fp_add.v | 67 ++++++++ hw/rtl/fp_cores/altera/acl_fp_msub.v | 63 +++++++ hw/rtl/fp_cores/altera/acl_fp_mul.v | 67 ++++++++ hw/rtl/fp_cores/altera/acl_fp_nmadd.v | 63 +++++++ hw/rtl/fp_cores/altera/acl_fp_sub.v | 67 ++++++++ hw/rtl/interfaces/VX_cmt_to_csr_if.v | 2 +- hw/rtl/interfaces/VX_fpu_to_cmt_if.v | 2 +- hw/syn/quartus/core/Makefile | 4 +- hw/syn/quartus/pipeline/Makefile | 2 +- hw/syn/quartus/top/Makefile | 4 +- hw/syn/quartus/vortex/Makefile | 4 +- 19 files changed, 710 insertions(+), 189 deletions(-) create mode 100644 hw/rtl/fp_cores/VX_fp_fpga.v create mode 100644 hw/rtl/fp_cores/VX_fpnew.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_add.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_msub.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_mul.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_nmadd.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_sub.v diff --git a/hw/opae/gen_sources.sh b/hw/opae/gen_sources.sh index d00f98fa..ae9df189 100755 --- a/hw/opae/gen_sources.sh +++ b/hw/opae/gen_sources.sh @@ -1,6 +1,6 @@ #!/bin/bash -dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl ../rtl/fp_cores/fpnew/src/common_cells/include ../rtl/fp_cores/fpnew/src/common_cells/src ../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl ../rtl/fp_cores/fpnew/src' +dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl ../rtl/fp_cores/fpnew/src/common_cells/include ../rtl/fp_cores ../rtl/fp_cores/altera ../rtl/fp_cores/fpnew/src/common_cells/src ../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl ../rtl/fp_cores/fpnew/src' inc_list="" for dir in $dir_list; do diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index 4381cc6e..d822dc59 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -42,7 +42,7 @@ module VX_commit #( assign cmt_to_csr_if.warp_num = cmt_to_issue_if.fpu_data.warp_num; assign cmt_to_csr_if.num_commits = num_commits; - assign cmt_to_csr_if.upd_fflags = (fpu_commit_if.valid && fpu_commit_if.ready) && fpu_commit_if.upd_fflags; + assign cmt_to_csr_if.has_fflags = (fpu_commit_if.valid && fpu_commit_if.ready) && fpu_commit_if.has_fflags; integer i; diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index d905ea33..be090d26 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -37,7 +37,7 @@ module VX_csr_data #( reg [`FRM_BITS+`FFG_BITS-1:0] csr_fcsr [`NUM_WARPS-1:0]; // fflags + frm always @(posedge clk) begin - if (cmt_to_csr_if.upd_fflags) begin + if (cmt_to_csr_if.has_fflags) begin csr_fflags[cmt_to_csr_if.warp_num] <= cmt_to_csr_if.fflags; csr_fcsr[cmt_to_csr_if.warp_num][`FFG_BITS-1:0] <= cmt_to_csr_if.fflags; end diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index d61b001c..3d6671ca 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -41,9 +41,9 @@ `define LATENCY_IDIV 24 `define LATENCY_IMUL 2 -`define LATENCY_FMULADD 2 -`define LATENCY_FDIVSQRT 2 -`define LATENCY_FCONV 2 +`define LATENCY_FMULADD 16 +`define LATENCY_FDIVSQRT 16 +`define LATENCY_FCONV 16 `define LATENCY_FNONCOMP 1 /////////////////////////////////////////////////////////////////////////////// diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index e1d45b48..ca609d31 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -109,7 +109,7 @@ module VX_execute #( assign fpu_commit_if.valid = 0; assign fpu_commit_if.issue_tag = 0; assign fpu_commit_if.data = 0; - assign fpu_commit_if.upd_fflags = 0; + assign fpu_commit_if.has_fflags = 0; assign fpu_commit_if.fflags_NV = 0; assign fpu_commit_if.fflags_DZ = 0; assign fpu_commit_if.fflags_OF = 0; diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index 540dfdd8..3cf0063c 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -1,6 +1,4 @@ `include "VX_define.vh" -`include "fpnew_pkg.sv" -`include "defs_div_sqrt_mvp.sv" module VX_fpu_unit #( parameter CORE_ID = 0 @@ -15,186 +13,72 @@ module VX_fpu_unit #( // outputs VX_fpu_to_cmt_if fpu_commit_if -); - localparam FOP_BITS = fpnew_pkg::OP_BITS; - localparam FMTF_BITS = $clog2(fpnew_pkg::NUM_FP_FORMATS); - localparam FMTI_BITS = $clog2(fpnew_pkg::NUM_INT_FORMATS); - - localparam FPU_DPATHW = 32'd32; - - localparam fpnew_pkg::fpu_features_t FPU_FEATURES = '{ - Width: FPU_DPATHW, - EnableVectors: 1'b0, - EnableNanBox: 1'b1, - FpFmtMask: 5'b10000, - IntFmtMask: 4'b0010 - }; - - localparam fpnew_pkg::fpu_implementation_t FPU_IMPLEMENTATION = '{ - PipeRegs:'{'{`LATENCY_FMULADD, 0, 0, 0, 0}, // ADDMUL - '{default: `LATENCY_FDIVSQRT}, // DIVSQRT - '{default: `LATENCY_FNONCOMP}, // NONCOMP - '{default: `LATENCY_FCONV}}, // CONV - UnitTypes:'{'{default: fpnew_pkg::PARALLEL}, // ADDMUL - '{default: fpnew_pkg::MERGED}, // DIVSQRT - '{default: fpnew_pkg::PARALLEL}, // NONCOMP - '{default: fpnew_pkg::MERGED}}, // CONV - PipeConfig: fpnew_pkg::DISTRIBUTED - }; +); - wire fpu_in_ready, fpu_in_valid; - wire fpu_out_ready, fpu_out_valid; - - reg [`LOG2UP(`FPURQ_SIZE)-1:0] fpu_in_tag, fpu_out_tag; - - reg [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; - - wire [FMTF_BITS-1:0] fpu_src_fmt = fpnew_pkg::FP32; - wire [FMTF_BITS-1:0] fpu_dst_fmt = fpnew_pkg::FP32; - wire [FMTI_BITS-1:0] fpu_int_fmt = fpnew_pkg::INT32; - - wire [`NUM_THREADS-1:0][31:0] fpu_result; - fpnew_pkg::status_t fpu_status [0:`NUM_THREADS-1]; - assign csr_to_fpu_if.warp_num = fpu_req_if.warp_num; - wire [`FRM_BITS-1:0] real_frm = (fpu_req_if.frm == `FRM_DYN) ? csr_to_fpu_if.frm : fpu_req_if.frm; + wire [`FRM_BITS-1:0] frm = (fpu_req_if.frm == `FRM_DYN) ? csr_to_fpu_if.frm : fpu_req_if.frm; - wire is_class_op_i, is_class_op_o; - assign is_class_op_i = (fpu_req_if.fpu_op == `FPU_CLASS); +`ifdef SYNTHESIS - reg [FOP_BITS-1:0] fpu_op; - reg [`FRM_BITS-1:0] fpu_rnd; - reg fpu_op_mod; - reg fflags_en, fflags_en_o; + VX_fp_fpga fp_core ( + .clk (clk), + .reset (reset), - always @(*) begin - fpu_op = fpnew_pkg::SGNJ; - fpu_rnd = real_frm; - fpu_op_mod = 0; - fflags_en = 1; - fpu_operands[0] = fpu_req_if.rs1_data; - fpu_operands[1] = fpu_req_if.rs2_data; - fpu_operands[2] = fpu_req_if.rs3_data; - case (fpu_req_if.fpu_op) - `FPU_ADD: begin - fpu_op = fpnew_pkg::ADD; - fpu_operands[1] = fpu_req_if.rs1_data; - fpu_operands[2] = fpu_req_if.rs2_data; - end - `FPU_SUB: begin - fpu_op = fpnew_pkg::ADD; - fpu_operands[1] = fpu_req_if.rs1_data; - fpu_operands[2] = fpu_req_if.rs2_data; - fpu_op_mod = 1; - end - `FPU_MUL: begin fpu_op = fpnew_pkg::MUL; end - `FPU_DIV: begin fpu_op = fpnew_pkg::DIV; end - `FPU_SQRT: begin fpu_op = fpnew_pkg::SQRT; end - `FPU_MADD: begin fpu_op = fpnew_pkg::FMADD; end - `FPU_MSUB: begin fpu_op = fpnew_pkg::FMADD; fpu_op_mod = 1; end - `FPU_NMSUB: begin fpu_op = fpnew_pkg::FNMSUB; end - `FPU_NMADD: begin fpu_op = fpnew_pkg::FNMSUB; fpu_op_mod = 1; end - `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; fflags_en = 0; end - `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; fflags_en = 0; end - `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; fflags_en = 0; end - `FPU_MIN: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RNE; end - `FPU_MAX: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RTZ; end - `FPU_CVTWS: begin fpu_op = fpnew_pkg::F2I; end - `FPU_CVTWUS:begin fpu_op = fpnew_pkg::F2I; fpu_op_mod = 1; end - `FPU_CVTSW: begin fpu_op = fpnew_pkg::I2F; end - `FPU_CVTSWU:begin fpu_op = fpnew_pkg::I2F; fpu_op_mod = 1; end - `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end - `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end - `FPU_CLASS: begin fpu_op = fpnew_pkg::CLASSIFY; fflags_en = 0; end - `FPU_CMP: begin fpu_op = fpnew_pkg::CMP; end - default:; - endcase - end + .in_valid (fpu_req_if.valid), + .in_ready (fpu_req_if.ready), - genvar i; - -`DISABLE_TRACING - - for (i = 0; i < `NUM_THREADS; i++) begin - if (0 == i) begin - fpnew_top #( - .Features (FPU_FEATURES), - .Implementation (FPU_IMPLEMENTATION), - .TagType (logic[`LOG2UP(`FPURQ_SIZE)+1+1-1:0]) - ) fpnew_core ( - .clk_i (clk), - .rst_ni (1'b1), - .operands_i ({fpu_operands[2][0], fpu_operands[1][0], fpu_operands[0][0]}), - .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), - .op_i (fpnew_pkg::operation_e'(fpu_op)), - .op_mod_i (fpu_op_mod), - .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), - .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), - .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), - .vectorial_op_i (1'b0), - .tag_i ({fpu_in_tag, fflags_en, is_class_op_i}), - .in_valid_i (fpu_in_valid), - .in_ready_o (fpu_in_ready), - .flush_i (reset), - .result_o (fpu_result), - .status_o (fpu_status[0]), - .tag_o ({fpu_out_tag, fflags_en_o, is_class_op_o}), - .out_valid_o (fpu_out_valid), - .out_ready_i (fpu_out_ready), - `UNUSED_PIN (busy_o) - ); - end else begin - fpnew_top #( - .Features (FPU_FEATURES), - .Implementation (FPU_IMPLEMENTATION), - .TagType (logic) - ) fpnew_core ( - .clk_i (clk), - .rst_ni (1'b1), - .operands_i ({fpu_operands[2][i], fpu_operands[1][i], fpu_operands[0][i]}), - .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), - .op_i (fpnew_pkg::operation_e'(fpu_op)), - .op_mod_i (fpu_op_mod), - .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), - .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), - .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), - .vectorial_op_i (1'b0), - .tag_i (1'b0), - .in_valid_i (fpu_in_valid), - `UNUSED_PIN (in_ready_o), - .flush_i (reset), - .result_o (fpu_result[i]), - .status_o (fpu_status[i]), - `UNUSED_PIN (tag_o), - `UNUSED_PIN (out_valid_o), - .out_ready_i (fpu_out_ready), - `UNUSED_PIN (busy_o) - ); - end - end - -`ENABLE_TRACING - - assign fpu_in_valid = fpu_req_if.valid; - assign fpu_in_tag = fpu_req_if.issue_tag; - - // can accept new request? - assign fpu_req_if.ready = fpu_in_ready; - - assign fpu_commit_if.valid = fpu_out_valid; - assign fpu_commit_if.issue_tag = fpu_out_tag; - assign fpu_commit_if.data = fpu_result; - - assign fpu_commit_if.upd_fflags = fflags_en_o; - - for (i = 0; i < `NUM_THREADS; i++) begin - assign fpu_commit_if.fflags[i][0] = fpu_status[i].NX; - assign fpu_commit_if.fflags[i][1] = fpu_status[i].UF; - assign fpu_commit_if.fflags[i][2] = fpu_status[i].OF; - assign fpu_commit_if.fflags[i][3] = fpu_status[i].DZ; - assign fpu_commit_if.fflags[i][4] = fpu_status[i].NV; - end + .in_tag (fpu_req_if.issue_tag), - assign fpu_out_ready = fpu_commit_if.ready; + .op (fpu_req_if.fpu_op), + .frm (frm), + + .dataa (fpu_req_if.rs1_data), + .datab (fpu_req_if.rs2_data), + .datac (fpu_req_if.rs3_data), + .result (fpu_commit_if.data), + + .has_fflags (fpu_commit_if.has_fflags), + .fflags (fpu_commit_if.fflags), + + .out_tag (fpu_commit_if.issue_tag), + + .out_ready (fpu_commit_if.ready), + .out_valid (fpu_commit_if.valid) + ); + +`else + + VX_fpnew #( + .FMULADD (0), + .FDIVSQRT (1), + .FNONCOMP (1), + .FCONV (1) + ) fp_core ( + .clk (clk), + .reset (reset), + + .in_valid (fpu_req_if.valid), + .in_ready (fpu_req_if.ready), + + .in_tag (fpu_req_if.issue_tag), + + .op (fpu_req_if.fpu_op), + .frm (frm), + + .dataa (fpu_req_if.rs1_data), + .datab (fpu_req_if.rs2_data), + .datac (fpu_req_if.rs3_data), + .result (fpu_commit_if.data), + + .has_fflags (fpu_commit_if.has_fflags), + .fflags (fpu_commit_if.fflags), + + .out_tag (fpu_commit_if.issue_tag), + + .out_ready (fpu_commit_if.ready), + .out_valid (fpu_commit_if.valid) + ); + +`endif endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fp_fpga.v b/hw/rtl/fp_cores/VX_fp_fpga.v new file mode 100644 index 00000000..0412a268 --- /dev/null +++ b/hw/rtl/fp_cores/VX_fp_fpga.v @@ -0,0 +1,87 @@ +`include "VX_define.vh" + +module VX_fp_fpga ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`FPU_BITS-1:0] op, + input wire [`FRM_BITS-1:0] frm, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + input wire [`NUM_THREADS-1:0][31:0] datac, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire has_fflags, + output wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire fpnew_in_ready; + wire [`NUM_THREADS-1:0][31:0] fpnew_result; + wire fpnew_has_fflags; + wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fpnew_fflags; + wire [`ISTAG_BITS-1:0] fpnew_out_tag; + wire fpnew_out_ready; + wire fpnew_out_valid; + + wire [`NUM_THREADS-1:0][31:0] add_result; + wire add_out_ready; + + VX_fpnew #( + .FMULADD (0), + .FDIVSQRT (1), + .FNONCOMP (1), + .FCONV (1) + ) fp_core ( + .clk (clk), + .reset (reset), + + .in_valid (in_valid), + .in_ready (fpnew_in_ready), + + .in_tag (in_tag), + + .op (op), + .frm (frm), + + .dataa (dataa), + .datab (datab), + .datac (datac), + .result (fpnew_result), + + .has_fflags (fpnew_has_fflags), + .fflags (fpnew_fflags), + + .out_tag (fpnew_out_tag), + + .out_ready (fpnew_out_ready), + .out_valid (fpnew_out_valid) + ); + + acl_fp_add fp_add ( + .clock (clk), + .dataa (dataa), + .datab (datab), + .enable (add_out_ready), + .result (add_result) + ); + + assign in_reqady = fpnew_in_ready; + assign has_fflags = fpnew_has_fflags; + assign fflags = fpnew_fflags; + assign out_tag = fpnew_out_tag; + assign fpnew_out_ready = out_ready; + + assign result = fpnew_out_valid ? fpnew_result : add_result; + assign out_valid = fpnew_out_valid; + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fpnew.v b/hw/rtl/fp_cores/VX_fpnew.v new file mode 100644 index 00000000..c9537a42 --- /dev/null +++ b/hw/rtl/fp_cores/VX_fpnew.v @@ -0,0 +1,217 @@ +`include "VX_define.vh" +`include "fpnew_pkg.sv" +`include "defs_div_sqrt_mvp.sv" + +module VX_fpnew #( + parameter FMULADD = 1, + parameter FDIVSQRT = 1, + parameter FNONCOMP = 1, + parameter FCONV = 1 +) ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`FPU_BITS-1:0] op, + input wire [`FRM_BITS-1:0] frm, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + input wire [`NUM_THREADS-1:0][31:0] datac, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire has_fflags, + output wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + localparam UNIT_FMULADD = FMULADD ? fpnew_pkg::PARALLEL : fpnew_pkg::DISABLED; + localparam UNIT_FDIVSQRT = FDIVSQRT ? fpnew_pkg::MERGED : fpnew_pkg::DISABLED; + localparam UNIT_FNONCOMP = FNONCOMP ? fpnew_pkg::PARALLEL : fpnew_pkg::DISABLED; + localparam UNIT_FCONV = FCONV ? fpnew_pkg::MERGED : fpnew_pkg::DISABLED; + + localparam FOP_BITS = fpnew_pkg::OP_BITS; + localparam FMTF_BITS = $clog2(fpnew_pkg::NUM_FP_FORMATS); + localparam FMTI_BITS = $clog2(fpnew_pkg::NUM_INT_FORMATS); + + localparam FPU_DPATHW = 32'd32; + + localparam fpnew_pkg::fpu_features_t FPU_FEATURES = '{ + Width: FPU_DPATHW, + EnableVectors: 1'b0, + EnableNanBox: 1'b1, + FpFmtMask: 5'b10000, + IntFmtMask: 4'b0010 + }; + + localparam fpnew_pkg::fpu_implementation_t FPU_IMPLEMENTATION = '{ + PipeRegs:'{'{`LATENCY_FMULADD, 0, 0, 0, 0}, // ADDMUL + '{default: `LATENCY_FDIVSQRT}, // DIVSQRT + '{default: `LATENCY_FNONCOMP}, // NONCOMP + '{default: `LATENCY_FCONV}}, // CONV + UnitTypes:'{'{default: UNIT_FMULADD}, // ADDMUL + '{default: UNIT_FDIVSQRT}, // DIVSQRT + '{default: UNIT_FNONCOMP}, // NONCOMP + '{default: UNIT_FCONV}}, // CONV + PipeConfig: fpnew_pkg::DISTRIBUTED + }; + + wire fpu_in_ready, fpu_in_valid; + wire fpu_out_ready, fpu_out_valid; + + reg [`LOG2UP(`FPURQ_SIZE)-1:0] fpu_in_tag, fpu_out_tag; + + reg [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; + + wire [FMTF_BITS-1:0] fpu_src_fmt = fpnew_pkg::FP32; + wire [FMTF_BITS-1:0] fpu_dst_fmt = fpnew_pkg::FP32; + wire [FMTI_BITS-1:0] fpu_int_fmt = fpnew_pkg::INT32; + + wire [`NUM_THREADS-1:0][31:0] fpu_result; + fpnew_pkg::status_t fpu_status [0:`NUM_THREADS-1]; + + wire is_class_op_i, is_class_op_o; + assign is_class_op_i = (fpu_op == `FPU_CLASS); + + reg [FOP_BITS-1:0] fpu_op; + reg [`FRM_BITS-1:0] fpu_rnd; + reg fpu_op_mod; + reg fflags_en, fflags_en_o; + + always @(*) begin + fpu_op = fpnew_pkg::SGNJ; + fpu_rnd = frm; + fpu_op_mod = 0; + fflags_en = 1; + fpu_operands[0] = dataa; + fpu_operands[1] = datab; + fpu_operands[2] = datac; + case (op) + `FPU_ADD: begin + fpu_op = fpnew_pkg::ADD; + fpu_operands[1] = dataa; + fpu_operands[2] = datab; + end + `FPU_SUB: begin + fpu_op = fpnew_pkg::ADD; + fpu_operands[1] = dataa; + fpu_operands[2] = datab; + fpu_op_mod = 1; + end + `FPU_MUL: begin fpu_op = fpnew_pkg::MUL; end + `FPU_DIV: begin fpu_op = fpnew_pkg::DIV; end + `FPU_SQRT: begin fpu_op = fpnew_pkg::SQRT; end + `FPU_MADD: begin fpu_op = fpnew_pkg::FMADD; end + `FPU_MSUB: begin fpu_op = fpnew_pkg::FMADD; fpu_op_mod = 1; end + `FPU_NMSUB: begin fpu_op = fpnew_pkg::FNMSUB; end + `FPU_NMADD: begin fpu_op = fpnew_pkg::FNMSUB; fpu_op_mod = 1; end + `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; fflags_en = 0; end + `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; fflags_en = 0; end + `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; fflags_en = 0; end + `FPU_MIN: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RNE; end + `FPU_MAX: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RTZ; end + `FPU_CVTWS: begin fpu_op = fpnew_pkg::F2I; end + `FPU_CVTWUS:begin fpu_op = fpnew_pkg::F2I; fpu_op_mod = 1; end + `FPU_CVTSW: begin fpu_op = fpnew_pkg::I2F; end + `FPU_CVTSWU:begin fpu_op = fpnew_pkg::I2F; fpu_op_mod = 1; end + `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end + `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end + `FPU_CLASS: begin fpu_op = fpnew_pkg::CLASSIFY; fflags_en = 0; end + `FPU_CMP: begin fpu_op = fpnew_pkg::CMP; end + default:; + endcase + end + + genvar i; + +`DISABLE_TRACING + + for (i = 0; i < `NUM_THREADS; i++) begin + if (0 == i) begin + fpnew_top #( + .Features (FPU_FEATURES), + .Implementation (FPU_IMPLEMENTATION), + .TagType (logic[`LOG2UP(`FPURQ_SIZE)+1+1-1:0]) + ) fpnew_core ( + .clk_i (clk), + .rst_ni (1'b1), + .operands_i ({fpu_operands[2][0], fpu_operands[1][0], fpu_operands[0][0]}), + .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), + .op_i (fpnew_pkg::operation_e'(fpu_op)), + .op_mod_i (fpu_op_mod), + .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), + .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), + .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), + .vectorial_op_i (1'b0), + .tag_i ({fpu_in_tag, fflags_en, is_class_op_i}), + .in_valid_i (fpu_in_valid), + .in_ready_o (fpu_in_ready), + .flush_i (reset), + .result_o (fpu_result[0]), + .status_o (fpu_status[0]), + .tag_o ({fpu_out_tag, fflags_en_o, is_class_op_o}), + .out_valid_o (fpu_out_valid), + .out_ready_i (fpu_out_ready), + `UNUSED_PIN (busy_o) + ); + end else begin + fpnew_top #( + .Features (FPU_FEATURES), + .Implementation (FPU_IMPLEMENTATION), + .TagType (logic) + ) fpnew_core ( + .clk_i (clk), + .rst_ni (1'b1), + .operands_i ({fpu_operands[2][i], fpu_operands[1][i], fpu_operands[0][i]}), + .rnd_mode_i (fpnew_pkg::roundmode_e'(fpu_rnd)), + .op_i (fpnew_pkg::operation_e'(fpu_op)), + .op_mod_i (fpu_op_mod), + .src_fmt_i (fpnew_pkg::fp_format_e'(fpu_src_fmt)), + .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), + .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), + .vectorial_op_i (1'b0), + .tag_i (1'b0), + .in_valid_i (fpu_in_valid), + `UNUSED_PIN (in_ready_o), + .flush_i (reset), + .result_o (fpu_result[i]), + .status_o (fpu_status[i]), + `UNUSED_PIN (tag_o), + `UNUSED_PIN (out_valid_o), + .out_ready_i (fpu_out_ready), + `UNUSED_PIN (busy_o) + ); + end + end + +`ENABLE_TRACING + + assign fpu_in_valid = in_valid; + assign in_ready = fpu_in_ready; + + assign fpu_in_tag = in_tag; + assign out_tag = fpu_out_tag; + + assign result = fpu_result; + + assign has_fflags = fflags_en_o; + + for (i = 0; i < `NUM_THREADS; i++) begin + assign fflags[i][0] = fpu_status[i].NX; + assign fflags[i][1] = fpu_status[i].UF; + assign fflags[i][2] = fpu_status[i].OF; + assign fflags[i][3] = fpu_status[i].DZ; + assign fflags[i][4] = fpu_status[i].NV; + end + + assign out_valid = fpu_out_valid; + assign fpu_out_ready = out_ready; + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/acl_fp_add.v b/hw/rtl/fp_cores/altera/acl_fp_add.v new file mode 100644 index 00000000..6024a22e --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_add.v @@ -0,0 +1,67 @@ +// (C) 1992-2016 Intel Corporation. +// Intel, the Intel logo, Intel, MegaCore, NIOS II, Quartus and TalkBack words +// and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. +// and/or other countries. Other marks and brands may be claimed as the property +// of others. See Trademarks on intel.com for full list of Intel trademarks or +// the Trademarks & Brands Names Database (if Intel) or See www.Intel.com/legal (if Altera) +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License Subscription +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for the +// sole purpose of programming logic devices manufactured by Intel and sold by +// Intel or its authorized distributors. Please refer to the applicable +// agreement for further details. + +module acl_fp_add(dataa, datab, clock, enable, result); + +input [31:0] dataa; +input [31:0] datab; +input clock, enable; + +output [31:0] result; + +// FP MAC wysiwyg +twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(dataa), + .ay(datab), + .az(), + .clk({2'b00,clock}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result), + .chainout() +); +defparam mac_fp_wys.operation_mode = "sp_add"; +defparam mac_fp_wys.use_chainin = "false"; +defparam mac_fp_wys.adder_subtract = "false"; +defparam mac_fp_wys.ax_clock = "0"; +defparam mac_fp_wys.ay_clock = "0"; +defparam mac_fp_wys.az_clock = "none"; +defparam mac_fp_wys.output_clock = "0"; +defparam mac_fp_wys.accumulate_clock = "none"; +defparam mac_fp_wys.ax_chainin_pl_clock = "none"; +defparam mac_fp_wys.accum_pipeline_clock = "none"; +defparam mac_fp_wys.mult_pipeline_clock = "none"; +defparam mac_fp_wys.adder_input_clock = "0"; +defparam mac_fp_wys.accum_adder_clock = "none"; + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_msub.v b/hw/rtl/fp_cores/altera/acl_fp_msub.v new file mode 100644 index 00000000..09c0de6a --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_msub.v @@ -0,0 +1,63 @@ +// (C) 1992-2014 Altera Corporation. All rights reserved. +// Your use of Altera Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License Subscription +// Agreement, Altera MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for the +// sole purpose of programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the applicable +// agreement for further details. + +module acl_fp_multadd(dataa, datab, datac, clock, enable, result); +// a*b + c +input [31:0] dataa; +input [31:0] datab; +input [31:0] datac; +input clock; +input enable; +output [31:0] result; + +// FP MAC wysiwyg +twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(datac), + .ay(datab), + .az(dataa), + .clk({2'b00,clock}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result), + .chainout() +); +defparam mac_fp_wys.operation_mode = "sp_mult_add"; +defparam mac_fp_wys.use_chainin = "false"; +defparam mac_fp_wys.adder_subtract = "true"; +defparam mac_fp_wys.ax_clock = "0"; +defparam mac_fp_wys.ay_clock = "0"; +defparam mac_fp_wys.az_clock = "0"; +defparam mac_fp_wys.output_clock = "0"; +defparam mac_fp_wys.accumulate_clock = "none"; +defparam mac_fp_wys.ax_chainin_pl_clock = "0"; +defparam mac_fp_wys.accum_pipeline_clock = "none"; +defparam mac_fp_wys.mult_pipeline_clock = "0"; +defparam mac_fp_wys.adder_input_clock = "0"; +defparam mac_fp_wys.accum_adder_clock = "none"; + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/acl_fp_mul.v b/hw/rtl/fp_cores/altera/acl_fp_mul.v new file mode 100644 index 00000000..a19eda1d --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_mul.v @@ -0,0 +1,67 @@ +// (C) 1992-2016 Intel Corporation. +// Intel, the Intel logo, Intel, MegaCore, NIOS II, Quartus and TalkBack words +// and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. +// and/or other countries. Other marks and brands may be claimed as the property +// of others. See Trademarks on intel.com for full list of Intel trademarks or +// the Trademarks & Brands Names Database (if Intel) or See www.Intel.com/legal (if Altera) +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License Subscription +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for the +// sole purpose of programming logic devices manufactured by Intel and sold by +// Intel or its authorized distributors. Please refer to the applicable +// agreement for further details. + +module acl_fp_mul(dataa, datab, clock, enable, result); + +input [31:0] dataa; +input [31:0] datab; +input clock, enable; + +output [31:0] result; + +// FP MAC wysiwyg +twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(), + .ay(datab), + .az(dataa), + .clk({2'b00,clock}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result), + .chainout() +); +defparam mac_fp_wys.operation_mode = "sp_mult"; +defparam mac_fp_wys.use_chainin = "false"; +defparam mac_fp_wys.adder_subtract = "false"; +defparam mac_fp_wys.ax_clock = "none"; +defparam mac_fp_wys.ay_clock = "0"; +defparam mac_fp_wys.az_clock = "0"; +defparam mac_fp_wys.output_clock = "0"; +defparam mac_fp_wys.accumulate_clock = "none"; +defparam mac_fp_wys.ax_chainin_pl_clock = "none"; +defparam mac_fp_wys.accum_pipeline_clock = "none"; +defparam mac_fp_wys.mult_pipeline_clock = "0"; +defparam mac_fp_wys.adder_input_clock = "none"; +defparam mac_fp_wys.accum_adder_clock = "none"; + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_nmadd.v b/hw/rtl/fp_cores/altera/acl_fp_nmadd.v new file mode 100644 index 00000000..f7ad8aa8 --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_nmadd.v @@ -0,0 +1,63 @@ +// (C) 1992-2014 Altera Corporation. All rights reserved. +// Your use of Altera Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License Subscription +// Agreement, Altera MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for the +// sole purpose of programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the applicable +// agreement for further details. + +module acl_fp_multadd(dataa, datab, datac, clock, enable, result); +// a*b + c +input [31:0] dataa; +input [31:0] datab; +input [31:0] datac; +input clock; +input enable; +output [31:0] result; + +// FP MAC wysiwyg +twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(datac), + .ay(datab), + .az(dataa), + .clk({2'b00,clock}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result), + .chainout() +); +defparam mac_fp_wys.operation_mode = "sp_mult_add"; +defparam mac_fp_wys.use_chainin = "false"; +defparam mac_fp_wys.adder_subtract = "false"; +defparam mac_fp_wys.ax_clock = "0"; +defparam mac_fp_wys.ay_clock = "0"; +defparam mac_fp_wys.az_clock = "0"; +defparam mac_fp_wys.output_clock = "0"; +defparam mac_fp_wys.accumulate_clock = "none"; +defparam mac_fp_wys.ax_chainin_pl_clock = "0"; +defparam mac_fp_wys.accum_pipeline_clock = "none"; +defparam mac_fp_wys.mult_pipeline_clock = "0"; +defparam mac_fp_wys.adder_input_clock = "0"; +defparam mac_fp_wys.accum_adder_clock = "none"; + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/acl_fp_sub.v b/hw/rtl/fp_cores/altera/acl_fp_sub.v new file mode 100644 index 00000000..f3a1956a --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_sub.v @@ -0,0 +1,67 @@ +// (C) 1992-2016 Intel Corporation. +// Intel, the Intel logo, Intel, MegaCore, NIOS II, Quartus and TalkBack words +// and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. +// and/or other countries. Other marks and brands may be claimed as the property +// of others. See Trademarks on intel.com for full list of Intel trademarks or +// the Trademarks & Brands Names Database (if Intel) or See www.Intel.com/legal (if Altera) +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License Subscription +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for the +// sole purpose of programming logic devices manufactured by Intel and sold by +// Intel or its authorized distributors. Please refer to the applicable +// agreement for further details. + +module acl_fp_add(dataa, datab, clock, enable, result); + +input [31:0] dataa; +input [31:0] datab; +input clock, enable; + +output [31:0] result; + +// FP MAC wysiwyg +twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(dataa), + .ay(datab), + .az(), + .clk({2'b00,clock}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result), + .chainout() +); +defparam mac_fp_wys.operation_mode = "sp_add"; +defparam mac_fp_wys.use_chainin = "false"; +defparam mac_fp_wys.adder_subtract = "true"; +defparam mac_fp_wys.ax_clock = "0"; +defparam mac_fp_wys.ay_clock = "0"; +defparam mac_fp_wys.az_clock = "none"; +defparam mac_fp_wys.output_clock = "0"; +defparam mac_fp_wys.accumulate_clock = "none"; +defparam mac_fp_wys.ax_chainin_pl_clock = "none"; +defparam mac_fp_wys.accum_pipeline_clock = "none"; +defparam mac_fp_wys.mult_pipeline_clock = "none"; +defparam mac_fp_wys.adder_input_clock = "0"; +defparam mac_fp_wys.accum_adder_clock = "none"; + +endmodule diff --git a/hw/rtl/interfaces/VX_cmt_to_csr_if.v b/hw/rtl/interfaces/VX_cmt_to_csr_if.v index 2b712342..ee6165bf 100644 --- a/hw/rtl/interfaces/VX_cmt_to_csr_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_csr_if.v @@ -11,7 +11,7 @@ interface VX_cmt_to_csr_if (); wire [`NE_BITS:0] num_commits; - wire upd_fflags; + wire has_fflags; wire [`FFG_BITS-1:0] fflags; endinterface diff --git a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v index cce2e293..ee14584c 100644 --- a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v +++ b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v @@ -8,7 +8,7 @@ interface VX_fpu_to_cmt_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; wire [`NUM_THREADS-1:0][31:0] data; - wire upd_fflags; + wire has_fflags; wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags; wire ready; diff --git a/hw/syn/quartus/core/Makefile b/hw/syn/quartus/core/Makefile index 0968b478..31ed1051 100644 --- a/hw/syn/quartus/core/Makefile +++ b/hw/syn/quartus/core/Makefile @@ -1,6 +1,8 @@ PROJECT = Core TOP_LEVEL_ENTITY = VX_core SRC_FILE = VX_core.v +FPU_INCLUDE = ../../../rtl/fp_cores;../../../rtl/fp_cores/altera;../../../rtl/fp_cores/fpnew/src;../../../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl;../../../rtl/fp_cores/fpnew/src/common_cells/include;../../../rtl/fp_cores/fpnew/src/common_cells/src +RTL_INCLUDE = $(FPU_INCLUDE);../../../rtl;../../../rtl/libs;../../../rtl/interfaces;../../../rtl/cache PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf # Part, Family @@ -49,7 +51,7 @@ smart.log: $(PROJECT_FILES) # Project initialization $(PROJECT_FILES): - quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc ../project.sdc -inc "../../../rtl;../../../rtl/libs;../../../rtl/interfaces;../../../rtl/cache" + quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src "$(SRC_FILE)" -sdc ../project.sdc -inc "$(RTL_INCLUDE)" syn.chg: $(STAMP) syn.chg diff --git a/hw/syn/quartus/pipeline/Makefile b/hw/syn/quartus/pipeline/Makefile index 294d9b64..447037ff 100644 --- a/hw/syn/quartus/pipeline/Makefile +++ b/hw/syn/quartus/pipeline/Makefile @@ -1,7 +1,7 @@ PROJECT = VX_pipeline TOP_LEVEL_ENTITY = VX_pipeline SRC_FILE = VX_pipeline.v -FPU_INCLUDE = ../../../rtl/fp_cores/fpnew/src;../../../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl;../../../rtl/fp_cores/fpnew/src/common_cells/include;../../../rtl/fp_cores/fpnew/src/common_cells/src +FPU_INCLUDE = ../../../rtl/fp_cores;../../../rtl/fp_cores/altera;../../../rtl/fp_cores/fpnew/src;../../../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl;../../../rtl/fp_cores/fpnew/src/common_cells/include;../../../rtl/fp_cores/fpnew/src/common_cells/src RTL_INCLUDE = $(FPU_INCLUDE);../../../rtl;../../../rtl/libs;../../../rtl/interfaces PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf diff --git a/hw/syn/quartus/top/Makefile b/hw/syn/quartus/top/Makefile index c6219230..4f8111b9 100644 --- a/hw/syn/quartus/top/Makefile +++ b/hw/syn/quartus/top/Makefile @@ -1,6 +1,8 @@ PROJECT = vortex_afu TOP_LEVEL_ENTITY = vortex_afu SRC_FILE = vortex_afu.sv +FPU_INCLUDE = ../../../rtl/fp_cores;../../../rtl/fp_cores/altera;../../../rtl/fp_cores/fpnew/src;../../../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl;../../../rtl/fp_cores/fpnew/src/common_cells/include;../../../rtl/fp_cores/fpnew/src/common_cells/src +RTL_INCLUDE = $(FPU_INCLUDE);../../../rtl;../../../rtl/libs;../../../rtl/interfaces;../../../rtl/cache;../../../opae;../../../opae/ccip PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf # Part, Family @@ -49,7 +51,7 @@ smart.log: $(PROJECT_FILES) # Project initialization $(PROJECT_FILES): - quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -set "NOPAE" -sdc ../project.sdc -inc "../../../rtl;../../../rtl/libs;../../../rtl/interfaces;../../../rtl/cache;../../../opae;../../../opae/ccip" + quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src "$(SRC_FILE)" -sdc ../project.sdc -inc "$(RTL_INCLUDE)" syn.chg: $(STAMP) syn.chg diff --git a/hw/syn/quartus/vortex/Makefile b/hw/syn/quartus/vortex/Makefile index f8db7cc8..633e32cd 100644 --- a/hw/syn/quartus/vortex/Makefile +++ b/hw/syn/quartus/vortex/Makefile @@ -1,6 +1,8 @@ PROJECT = Vortex TOP_LEVEL_ENTITY = Vortex SRC_FILE = Vortex.v +FPU_INCLUDE = ../../../rtl/fp_cores;../../../rtl/fp_cores/altera;../../../rtl/fp_cores/fpnew/src;../../../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl;../../../rtl/fp_cores/fpnew/src/common_cells/include;../../../rtl/fp_cores/fpnew/src/common_cells/src +RTL_INCLUDE = $(FPU_INCLUDE);../../../rtl;../../../rtl/libs;../../../rtl/interfaces;../../../rtl/cache PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf # Part, Family @@ -49,7 +51,7 @@ smart.log: $(PROJECT_FILES) # Project initialization $(PROJECT_FILES): - quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc ../project.sdc -inc "../../../rtl;../../../rtl/libs;../../../rtl/interfaces;../../../rtl/cache" + quartus_sh -t ../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src "$(SRC_FILE)" -sdc ../project.sdc -inc "$(RTL_INCLUDE)" syn.chg: $(STAMP) syn.chg From b8cd3b0b28ebec41ef6b30287c62dcd1eb5ae4f5 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Sat, 1 Aug 2020 12:38:30 -0400 Subject: [PATCH 31/94] gpr pipeline optimization --- driver/rtlsim/Makefile | 2 +- hw/opae/gen_sources.sh | 5 -- hw/rtl/VX_config.vh | 5 -- hw/rtl/VX_decode.v | 10 ++-- hw/rtl/VX_execute.v | 6 +-- hw/rtl/VX_gpr_fp_ctrl.v | 18 ++++--- hw/rtl/VX_gpr_ram.v | 22 +++++---- hw/rtl/VX_gpr_stage.v | 51 +++++++++----------- hw/rtl/VX_issue.v | 11 +++-- hw/rtl/VX_writeback.v | 75 ++++++++++++++++-------------- hw/rtl/fp_cores/VX_fp_fpga.v | 22 +++++---- hw/rtl/fp_cores/VX_fpnew.v | 4 +- hw/rtl/interfaces/VX_gpr_read_if.v | 3 +- hw/scripts/gen_config.py | 14 +++--- hw/simulate/Makefile | 2 +- hw/simulate/simulator.cpp | 1 - hw/simulate/testbench.cpp | 10 ++-- 17 files changed, 121 insertions(+), 140 deletions(-) diff --git a/driver/rtlsim/Makefile b/driver/rtlsim/Makefile index 8eeaa44e..3bc7e4e7 100644 --- a/driver/rtlsim/Makefile +++ b/driver/rtlsim/Makefile @@ -13,7 +13,7 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_DRAM DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE -DBG_FLAGS += $(DBG_PRINT_FLAGS) +#DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO #CONFIGS += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 diff --git a/hw/opae/gen_sources.sh b/hw/opae/gen_sources.sh index ae9df189..3f6b5f42 100755 --- a/hw/opae/gen_sources.sh +++ b/hw/opae/gen_sources.sh @@ -2,11 +2,6 @@ dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl ../rtl/fp_cores/fpnew/src/common_cells/include ../rtl/fp_cores ../rtl/fp_cores/altera ../rtl/fp_cores/fpnew/src/common_cells/src ../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl ../rtl/fp_cores/fpnew/src' -inc_list="" -for dir in $dir_list; do - inc_list="$inc_list -I$dir" -done - # read design sources for dir in $dir_list; do echo "+incdir+$dir" diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index 36a1ce57..39037f51 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -65,11 +65,6 @@ `define MULRQ_SIZE 8 `endif -// Size of FPU Request Queue Size -`ifndef FPURQ_SIZE -`define FPURQ_SIZE 8 -`endif - // Size of issue queue `ifndef ISSUEQ_SIZE `define ISSUEQ_SIZE (8 + `NUM_WARPS) diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 983f520f..ecb1038a 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -237,7 +237,6 @@ module VX_decode #( wire is_fl = 0; wire is_fs = 0; wire is_fci = 0; - wire is_fcmp = 0; wire is_fcvti = 0; wire is_fcvtf = 0; wire is_fmvcls = 0; @@ -287,10 +286,6 @@ module VX_decode #( wire use_rs3 = is_fr4; - wire rd_is_fp = is_fpu && ~(is_fcmp || is_fcvti || (fpu_op == `FPU_MVXW || fpu_op == `FPU_CLASS)); - wire rs1_is_fp = is_fr4 || (is_fci && ~(is_fcvtf || (fpu_op == `FPU_MVWX))); - wire rs2_is_fp = is_fs || is_fr4 || is_fci; - wire [4:0] rs1_qual = is_lui ? 5'h0 : rs1; /////////////////////////////////////////////////////////////////////////// @@ -324,6 +319,11 @@ module VX_decode #( assign decode_tmp_if.wb = use_rd; `ifdef EXT_F_ENABLE + + wire rd_is_fp = is_fpu && ~(is_fcmp || is_fcvti || (fpu_op == `FPU_MVXW || fpu_op == `FPU_CLASS)); + wire rs1_is_fp = is_fr4 || (is_fci && ~(is_fcvtf || (fpu_op == `FPU_MVWX))); + wire rs2_is_fp = is_fs || is_fr4 || is_fci; + assign decode_tmp_if.rd = {rd_is_fp, rd}; assign decode_tmp_if.rs1 = {rs1_is_fp, rs1_qual}; assign decode_tmp_if.rs2 = {rs2_is_fp, rs2}; diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index ca609d31..3ace93f6 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -110,11 +110,7 @@ module VX_execute #( assign fpu_commit_if.issue_tag = 0; assign fpu_commit_if.data = 0; assign fpu_commit_if.has_fflags = 0; - assign fpu_commit_if.fflags_NV = 0; - assign fpu_commit_if.fflags_DZ = 0; - assign fpu_commit_if.fflags_OF = 0; - assign fpu_commit_if.fflags_UF = 0; - assign fpu_commit_if.fflags_NX = 0; + assign fpu_commit_if.fflags = 0; `endif VX_gpu_unit #( diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index 1a87a5c3..55e3873f 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -10,7 +10,7 @@ module VX_gpr_fp_ctrl ( input wire [`NUM_THREADS-1:0][31:0] rs2_data, // outputs - output wire [`NR_BITS-1:0] raddr1, + output wire [`NW_BITS+`NR_BITS-1:0] raddr1, VX_gpr_read_if gpr_read_if ); @@ -18,32 +18,30 @@ module VX_gpr_fp_ctrl ( reg [`NUM_THREADS-1:0][31:0] tmp_rs1_data; reg read_rs3; - wire gpr_delay = gpr_read_if.valid && gpr_read_if.use_rs3 && ~read_rs3; + wire delay = gpr_read_if.valid && gpr_read_if.use_rs3 && ~read_rs3; - wire gpr_fire = gpr_read_if.valid && gpr_read_if.ready; + wire read_fire = gpr_read_if.valid && gpr_read_if.out_ready; always @(posedge clk) begin if (reset) begin read_rs3 <= 0; - end else if (gpr_delay) begin + end else if (delay) begin read_rs3 <= 1; - end else if (gpr_fire) begin + end else if (read_fire) begin read_rs3 <= 0; end end // backup original rs1 data always @(posedge clk) begin - if (gpr_delay) begin + if (delay) begin tmp_rs1_data <= rs1_data; end end // outputs - - assign raddr1 = read_rs3 ? gpr_read_if.rs3 : gpr_read_if.rs1; - - assign gpr_read_if.ready = ~gpr_delay; + assign raddr1 = {gpr_read_if.warp_num, (read_rs3 ? gpr_read_if.rs3 : gpr_read_if.rs1)}; + assign gpr_read_if.in_ready = ~delay; assign gpr_read_if.rs1_data = gpr_read_if.use_rs3 ? tmp_rs1_data : rs1_data; assign gpr_read_if.rs2_data = rs2_data; assign gpr_read_if.rs3_data = rs1_data; diff --git a/hw/rtl/VX_gpr_ram.v b/hw/rtl/VX_gpr_ram.v index a9f3e50c..00c5f1f0 100644 --- a/hw/rtl/VX_gpr_ram.v +++ b/hw/rtl/VX_gpr_ram.v @@ -3,26 +3,28 @@ module VX_gpr_ram ( input wire clk, input wire [`NUM_THREADS-1:0] we, - input wire [`NR_BITS-1:0] waddr, + input wire [`NW_BITS+`NR_BITS-1:0] waddr, input wire [`NUM_THREADS-1:0][31:0] wdata, - input wire [`NR_BITS-1:0] rs1, - input wire [`NR_BITS-1:0] rs2, + input wire [`NW_BITS+`NR_BITS-1:0] rs1, + input wire [`NW_BITS+`NR_BITS-1:0] rs2, output wire [`NUM_THREADS-1:0][31:0] rs1_data, output wire [`NUM_THREADS-1:0][31:0] rs2_data ); `ifndef ASIC - reg [`NUM_THREADS-1:0][3:0][7:0] ram [`NUM_REGS-1:0]; + reg [`NUM_THREADS-1:0][3:0][7:0] ram [(`NUM_WARPS * `NUM_REGS)-1:0]; - integer i; + integer i, j; initial begin // initialize r0 to 0 - for (i = 0; i < `NUM_THREADS; i++) begin - ram[0][i][0] = 0; - ram[0][i][1] = 0; - ram[0][i][2] = 0; - ram[0][i][3] = 0; + for (j = 0; j < `NUM_WARPS; j++) begin + for (i = 0; i < `NUM_THREADS; i++) begin + ram[j * `NUM_REGS][i][0] = 8'h0; + ram[j * `NUM_REGS][i][1] = 8'h0; + ram[j * `NUM_REGS][i][2] = 8'h0; + ram[j * `NUM_REGS][i][3] = 8'h0; + end end end diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 06e7d344..0b1870b1 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -14,52 +14,43 @@ module VX_gpr_stage #( ); `UNUSED_VAR (reset) - wire [`NUM_THREADS-1:0][31:0] rs1_data [`NUM_WARPS-1:0]; - wire [`NUM_THREADS-1:0][31:0] rs2_data [`NUM_WARPS-1:0]; + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + wire [`NW_BITS+`NR_BITS-1:0] raddr1; - wire [`NR_BITS-1:0] raddr1; - - genvar i; - - for (i = 0; i < `NUM_WARPS; i++) begin - wire [`NUM_THREADS-1:0] we = writeback_if.thread_mask - & {`NUM_THREADS{writeback_if.valid && (i == writeback_if.warp_num)}}; - VX_gpr_ram gpr_int_ram ( - .clk (clk), - .we (we), - .waddr (writeback_if.rd), - .wdata (writeback_if.data), - .rs1 (raddr1), - .rs2 (gpr_read_if.rs2), - .rs1_data (rs1_data[i]), - .rs2_data (rs2_data[i]) - ); - end + VX_gpr_ram gpr_int_ram ( + .clk (clk), + .we ({`NUM_THREADS{writeback_if.valid}} & writeback_if.thread_mask), + .waddr ({writeback_if.warp_num, writeback_if.rd}), + .wdata (writeback_if.data), + .rs1 (raddr1), + .rs2 ({gpr_read_if.warp_num, gpr_read_if.rs2}), + .rs1_data (rs1_data), + .rs2_data (rs2_data) + ); `ifdef EXT_F_ENABLE VX_gpr_fp_ctrl VX_gpr_fp_ctrl ( .clk (clk), .reset (reset), - - //inputs - .rs1_data (rs1_data[gpr_read_if.warp_num]), - .rs2_data (rs2_data[gpr_read_if.warp_num]), - - // outputs + .rs1_data (rs1_data), + .rs2_data (rs2_data), .raddr1 (raddr1), .gpr_read_if(gpr_read_if) ); `else - assign raddr1 = gpr_read_if.rs1; - assign gpr_read_if.rs1_data = rs1_data[gpr_read_if.warp_num]; - assign gpr_read_if.rs2_data = rs2_data[gpr_read_if.warp_num]; + assign raddr1 = {gpr_read_if.warp_num, gpr_read_if.rs1}; + assign gpr_read_if.rs1_data = rs1_data; + assign gpr_read_if.rs2_data = rs2_data; assign gpr_read_if.rs3_data = 0; - assign gpr_read_if.ready = 1; + assign gpr_read_if.in_ready = 1; wire valid = gpr_read_if.valid; + wire out_ready = gpr_read_if.out_ready; wire use_rs3 = gpr_read_if.use_rs3; wire [`NR_BITS-1:0] rs3 = gpr_read_if.rs3; `UNUSED_VAR (valid); + `UNUSED_VAR (out_ready); `UNUSED_VAR (use_rs3); `UNUSED_VAR (rs3); `endif diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 78b8d2d2..7bf96889 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -24,10 +24,11 @@ module VX_issue #( assign gpr_read_if.rs2 = decode_if.rs2; assign gpr_read_if.rs3 = decode_if.rs3; assign gpr_read_if.use_rs3 = decode_if.use_rs3; + assign gpr_read_if.out_ready = decode_if.ready; wire [`ISTAG_BITS-1:0] issue_tag, issue_tmp_tag; - wire gpr_busy = ~gpr_read_if.ready; + wire gpr_busy = ~gpr_read_if.in_ready; wire alu_busy = ~alu_req_if.ready; wire lsu_busy = ~lsu_req_if.ready; wire csr_busy = ~csr_req_if.ready; @@ -63,7 +64,7 @@ module VX_issue #( ); VX_decode_if decode_tmp_if(); - VX_gpr_read_if gpr_data_tmp_if(); + VX_gpr_read_if gpr_read_tmp_if(); wire stall = ~alu_req_if.ready || ~decode_if.ready; wire flush = alu_req_if.ready && ~decode_if.ready; @@ -75,13 +76,13 @@ module VX_issue #( .reset (reset), .stall (stall), .flush (flush), - .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.frm, gpr_read_if.rs1_data, gpr_read_if.rs2_data, gpr_read_if.rs3_data}), - .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, gpr_data_tmp_if.rs1_data, gpr_data_tmp_if.rs2_data, gpr_data_tmp_if.rs3_data}) + .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.frm, gpr_read_if.rs1_data, gpr_read_if.rs2_data, gpr_read_if.rs3_data}), + .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, gpr_read_tmp_if.rs1_data, gpr_read_tmp_if.rs2_data, gpr_read_tmp_if.rs3_data}) ); VX_issue_demux issue_demux ( .decode_if (decode_tmp_if), - .gpr_read_if (gpr_data_tmp_if), + .gpr_read_if (gpr_read_tmp_if), .issue_tag (issue_tmp_tag), .alu_req_if (alu_req_if), .lsu_req_if (lsu_req_if), diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 051fe41c..8519b9f7 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -19,14 +19,15 @@ module VX_writeback #( VX_wb_if writeback_if ); - reg [`NUM_THREADS-1:0][31:0] wb_data [`ISSUEQ_SIZE-1:0]; - reg [`NW_BITS-1:0] wb_warp_num [`ISSUEQ_SIZE-1:0]; - reg [`NUM_THREADS-1:0] wb_thread_mask [`ISSUEQ_SIZE-1:0]; - reg [31:0] wb_curr_PC [`ISSUEQ_SIZE-1:0]; - reg [`NR_BITS-1:0] wb_rd [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0][31:0] wb_data_table [`ISSUEQ_SIZE-1:0]; + reg [`NW_BITS-1:0] wb_warp_num_table [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0] wb_thread_mask_table [`ISSUEQ_SIZE-1:0]; + reg [31:0] wb_curr_PC_table [`ISSUEQ_SIZE-1:0]; + reg [`NR_BITS-1:0] wb_rd_table [`ISSUEQ_SIZE-1:0]; reg [`ISSUEQ_SIZE-1:0] wb_pending; reg [`ISSUEQ_SIZE-1:0] wb_pending_n; + reg [`ISTAG_BITS-1:0] wb_index; wire [`ISTAG_BITS-1:0] wb_index_n; @@ -72,39 +73,43 @@ module VX_writeback #( wb_valid <= 0; end else begin if (alu_commit_if.valid) begin - wb_data [alu_commit_if.issue_tag] <= alu_commit_if.data; - wb_warp_num [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.warp_num; - wb_thread_mask [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.thread_mask; - wb_curr_PC [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.curr_PC; - wb_rd [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd; + wb_data_table [alu_commit_if.issue_tag] <= alu_commit_if.data; + wb_warp_num_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.warp_num; + wb_thread_mask_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.thread_mask; + wb_curr_PC_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.curr_PC; + wb_rd_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd; end + if (lsu_commit_if.valid) begin - wb_data [lsu_commit_if.issue_tag] <= lsu_commit_if.data; - wb_warp_num [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.warp_num; - wb_thread_mask [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.thread_mask; - wb_curr_PC [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.curr_PC; - wb_rd [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd; + wb_data_table [lsu_commit_if.issue_tag] <= lsu_commit_if.data; + wb_warp_num_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.warp_num; + wb_thread_mask_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.thread_mask; + wb_curr_PC_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.curr_PC; + wb_rd_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd; end + if (csr_commit_if.valid) begin - wb_data [csr_commit_if.issue_tag] <= csr_commit_if.data; - wb_warp_num [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.warp_num; - wb_thread_mask [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.thread_mask; - wb_curr_PC [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.curr_PC; - wb_rd [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd; + wb_data_table [csr_commit_if.issue_tag] <= csr_commit_if.data; + wb_warp_num_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.warp_num; + wb_thread_mask_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.thread_mask; + wb_curr_PC_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.curr_PC; + wb_rd_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd; end + if (mul_commit_if.valid) begin - wb_data [mul_commit_if.issue_tag] <= mul_commit_if.data; - wb_warp_num [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.warp_num; - wb_thread_mask [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.thread_mask; - wb_curr_PC [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.curr_PC; - wb_rd [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd; + wb_data_table [mul_commit_if.issue_tag] <= mul_commit_if.data; + wb_warp_num_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.warp_num; + wb_thread_mask_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.thread_mask; + wb_curr_PC_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.curr_PC; + wb_rd_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd; end + if (fpu_commit_if.valid) begin - wb_data [fpu_commit_if.issue_tag] <= fpu_commit_if.data; - wb_warp_num [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.warp_num; - wb_thread_mask [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.thread_mask; - wb_curr_PC [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.curr_PC; - wb_rd [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd; + wb_data_table [fpu_commit_if.issue_tag] <= fpu_commit_if.data; + wb_warp_num_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.warp_num; + wb_thread_mask_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.thread_mask; + wb_curr_PC_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.curr_PC; + wb_rd_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd; end wb_pending <= wb_pending_n; @@ -115,11 +120,11 @@ module VX_writeback #( // writeback request assign writeback_if.valid = wb_valid; - assign writeback_if.warp_num = wb_warp_num [wb_index]; - assign writeback_if.thread_mask = wb_thread_mask [wb_index]; - assign writeback_if.curr_PC = wb_curr_PC [wb_index]; - assign writeback_if.rd = wb_rd [wb_index]; - assign writeback_if.data = wb_data [wb_index]; + assign writeback_if.warp_num = wb_warp_num_table [wb_index]; + assign writeback_if.thread_mask = wb_thread_mask_table [wb_index]; + assign writeback_if.curr_PC = wb_curr_PC_table [wb_index]; + assign writeback_if.rd = wb_rd_table [wb_index]; + assign writeback_if.data = wb_data_table [wb_index]; // commit back-pressure assign alu_commit_if.ready = 1'b1; diff --git a/hw/rtl/fp_cores/VX_fp_fpga.v b/hw/rtl/fp_cores/VX_fp_fpga.v index 0412a268..01c65105 100644 --- a/hw/rtl/fp_cores/VX_fp_fpga.v +++ b/hw/rtl/fp_cores/VX_fp_fpga.v @@ -38,8 +38,8 @@ module VX_fp_fpga ( VX_fpnew #( .FMULADD (0), - .FDIVSQRT (1), - .FNONCOMP (1), + .FDIVSQRT (0), + .FNONCOMP (0), .FCONV (1) ) fp_core ( .clk (clk), @@ -67,13 +67,15 @@ module VX_fp_fpga ( .out_valid (fpnew_out_valid) ); - acl_fp_add fp_add ( - .clock (clk), - .dataa (dataa), - .datab (datab), - .enable (add_out_ready), - .result (add_result) - ); + for (i = 0; i < `NUM_THREADS; i++) begin + acl_fp_add fp_add ( + .clock (clk), + .dataa (dataa), + .datab (datab), + .enable (add_out_ready), + .result (add_result[i]) + ); + end assign in_reqady = fpnew_in_ready; assign has_fflags = fpnew_has_fflags; @@ -81,6 +83,8 @@ module VX_fp_fpga ( assign out_tag = fpnew_out_tag; assign fpnew_out_ready = out_ready; + assign add_out_ready = out_ready; + assign result = fpnew_out_valid ? fpnew_result : add_result; assign out_valid = fpnew_out_valid; diff --git a/hw/rtl/fp_cores/VX_fpnew.v b/hw/rtl/fp_cores/VX_fpnew.v index 1df511e4..71ad066d 100644 --- a/hw/rtl/fp_cores/VX_fpnew.v +++ b/hw/rtl/fp_cores/VX_fpnew.v @@ -66,7 +66,7 @@ module VX_fpnew #( wire fpu_in_ready, fpu_in_valid; wire fpu_out_ready, fpu_out_valid; - reg [`LOG2UP(`FPURQ_SIZE)-1:0] fpu_in_tag, fpu_out_tag; + reg [`ISTAG_BITS-1:0] fpu_in_tag, fpu_out_tag; reg [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; @@ -138,7 +138,7 @@ module VX_fpnew #( fpnew_top #( .Features (FPU_FEATURES), .Implementation (FPU_IMPLEMENTATION), - .TagType (logic[`LOG2UP(`FPURQ_SIZE)+1+1-1:0]) + .TagType (logic[`ISTAG_BITS+1+1-1:0]) ) fpnew_core ( .clk_i (clk), .rst_ni (1'b1), diff --git a/hw/rtl/interfaces/VX_gpr_read_if.v b/hw/rtl/interfaces/VX_gpr_read_if.v index 9b24ce56..27310af2 100644 --- a/hw/rtl/interfaces/VX_gpr_read_if.v +++ b/hw/rtl/interfaces/VX_gpr_read_if.v @@ -19,7 +19,8 @@ interface VX_gpr_read_if (); wire [`NUM_THREADS-1:0][31:0] rs2_data; wire [`NUM_THREADS-1:0][31:0] rs3_data; - wire ready; + wire in_ready; + wire out_ready; endinterface diff --git a/hw/scripts/gen_config.py b/hw/scripts/gen_config.py index 426c83a8..0f80b093 100755 --- a/hw/scripts/gen_config.py +++ b/hw/scripts/gen_config.py @@ -58,13 +58,12 @@ if args.outc != 'none': translation_rules = [ (re.compile(r'^$'), r''), - (re.compile(r'^( *)`ifndef ([^ ]+)$'), r'\1#ifndef \2'), - (re.compile(r'^( *)`define ([^ ]+)$'), r'\1#define \2'), - # (re.compile(r'^( *)`include "\./VX_define_synth\.v"$'), r'\1#include "VX_define_synth.h"'), - (re.compile(r'^( *)`include "VX_user_config\.vh"$'), r''), - (re.compile(r'^( *)`define ([^ ]+) (.+)$'), r'\1#define \2 \3'), - (re.compile(r'^( *)`endif$'), r'\1#endif'), - (re.compile(r'^( *)// (.*)$'), r'\1// \2'), + (re.compile(r'^(\s*)`ifndef\s+([^ ]+)'), r'\1#ifndef \2'), + (re.compile(r'^(\s*)`define\s+([^ ]+)'), r'\1#define \2'), + (re.compile(r'^(\s*)`include "VX_user_config\.vh"'), r''), + (re.compile(r'^(\s*)`define\s+([^ ]+) (.+)'), r'\1#define \2 \3'), + (re.compile(r'^(\s*)`endif\s+'), r'\1#endif'), + (re.compile(r'^(\s*)//(.*)'), r'\1// \2'), ] post_rules = [ @@ -78,7 +77,6 @@ post_rules = [ (re.compile(r"`([A-Za-z_][$_0-9A-Za-z]*)"), r'\1'), ] - def post_process_line(line): for pat, repl in post_rules: line = pat.sub(repl, line) diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index ea6d87a1..7788d0b6 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -14,7 +14,7 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_DRAM DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE -DBG_FLAGS += $(DBG_PRINT_FLAGS) +#DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO FPU_INCLUDE = -I../rtl/fp_cores/fpnew/src/common_cells/include -I../rtl/fp_cores/fpnew/src/common_cells/src -I../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl -I../rtl/fp_cores/fpnew/src diff --git a/hw/simulate/simulator.cpp b/hw/simulate/simulator.cpp index 1c30a870..ab4846cd 100644 --- a/hw/simulate/simulator.cpp +++ b/hw/simulate/simulator.cpp @@ -25,7 +25,6 @@ Simulator::Simulator() { #ifdef VCD_OUTPUT Verilated::traceEverOn(true); trace_ = new VerilatedVcdC(); - trace_->set_time_unit("1ns"); vortex_->trace(trace_, 99); trace_->open("trace.vcd"); #endif diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index 4cb89a0e..c68062c8 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -3,9 +3,10 @@ #include #include +#define ALL_TESTS + int main(int argc, char **argv) { if (argc == 1) { -#define ALL_TESTS #ifdef ALL_TESTS bool passed = true; @@ -137,12 +138,7 @@ int main(int argc, char **argv) { simulator.load_ihex(test); simulator.run(); - bool status = (1 == simulator.get_last_wb_value(3)); - - if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; - if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; - - return !status; + return 0; #endif From 28a2f77725ba274a86bc8f18d90bef7bf7493b90 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Sat, 1 Aug 2020 10:16:07 -0700 Subject: [PATCH 32/94] minor update --- hw/rtl/fp_cores/VX_fp_fpga.v | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/rtl/fp_cores/VX_fp_fpga.v b/hw/rtl/fp_cores/VX_fp_fpga.v index 01c65105..e120a4a0 100644 --- a/hw/rtl/fp_cores/VX_fp_fpga.v +++ b/hw/rtl/fp_cores/VX_fp_fpga.v @@ -39,8 +39,8 @@ module VX_fp_fpga ( VX_fpnew #( .FMULADD (0), .FDIVSQRT (0), - .FNONCOMP (0), - .FCONV (1) + .FNONCOMP (1), + .FCONV (0) ) fp_core ( .clk (clk), .reset (reset), @@ -67,6 +67,7 @@ module VX_fp_fpga ( .out_valid (fpnew_out_valid) ); + genvar i; for (i = 0; i < `NUM_THREADS; i++) begin acl_fp_add fp_add ( .clock (clk), From d8bdaa2b4e9c7f341de25982aa6b36019390caf2 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Sat, 1 Aug 2020 14:38:31 -0700 Subject: [PATCH 33/94] minor update --- hw/opae/README | 14 +++++++++----- hw/rtl/VX_gpr_stage.v | 2 +- hw/rtl/libs/VX_divide.v | 16 ++++++++-------- hw/rtl/libs/VX_multiplier.v | 16 ++++++++-------- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/hw/opae/README b/hw/opae/README index f480cc92..cafa5897 100644 --- a/hw/opae/README +++ b/hw/opae/README @@ -89,8 +89,12 @@ kill -9 lsof +D build_ase_1c # quick off cache synthesis -make -C pipeline > pipeline/build.log 2>&1 & -make -C cache > cache/build.log 2>&1 & -make -C core > core/build.log 2>&1 & -make -C vortex > vortex/build.log 2>&1 & -make -C top > top/build.log 2>&1 & +make -C pipeline clean && make -C pipeline > pipeline/build.log 2>&1 & +make -C cache clean && make -C cache > cache/build.log 2>&1 & +make -C core clean && make -C core > core/build.log 2>&1 & +make -C vortex clean && make -C vortex > vortex/build.log 2>&1 & +make -C top clean && make -C top > top/build.log 2>&1 & + +# How to calculate the maximum operating frequency? +200 Mhz -> period = 1/200x10^6 = 5ns +if slack = +1.664 -> minimal period = 5-1.664 = 3.336 -> fmax = 1/3.336 = 300 Mhz \ No newline at end of file diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 0b1870b1..17992b4d 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -18,7 +18,7 @@ module VX_gpr_stage #( wire [`NUM_THREADS-1:0][31:0] rs2_data; wire [`NW_BITS+`NR_BITS-1:0] raddr1; - VX_gpr_ram gpr_int_ram ( + VX_gpr_ram gpr_ram ( .clk (clk), .we ({`NUM_THREADS{writeback_if.valid}} & writeback_if.thread_mask), .waddr ({writeback_if.warp_num, writeback_if.rd}), diff --git a/hw/rtl/libs/VX_divide.v b/hw/rtl/libs/VX_divide.v index 7a613363..3c871658 100644 --- a/hw/rtl/libs/VX_divide.v +++ b/hw/rtl/libs/VX_divide.v @@ -25,7 +25,7 @@ module VX_divide #( wire [WIDTHN-1:0] quotient_unqual; wire [WIDTHD-1:0] remainder_unqual; - lpm_divide quartus_div ( + lpm_divide divide ( .clock (clk), .numer (numer), .denom (denom), @@ -36,13 +36,13 @@ module VX_divide #( ); defparam - quartus_div.lpm_type = "LPM_DIVIDE", - quartus_div.lpm_widthn = WIDTHN, - quartus_div.lpm_widthd = WIDTHD, - quartus_div.lpm_nrepresentation = NSIGNED ? "SIGNED" : "UNSIGNED", - quartus_div.lpm_drepresentation = DSIGNED ? "SIGNED" : "UNSIGNED", - quartus_div.lpm_hint = "MAXIMIZE_SPEED=6,LPM_REMAINDERPOSITIVE=FALSE", - quartus_div.lpm_pipeline = PIPELINE; + divide.lpm_type = "LPM_DIVIDE", + divide.lpm_widthn = WIDTHN, + divide.lpm_widthd = WIDTHD, + divide.lpm_nrepresentation = NSIGNED ? "SIGNED" : "UNSIGNED", + divide.lpm_drepresentation = DSIGNED ? "SIGNED" : "UNSIGNED", + divide.lpm_hint = "MAXIMIZE_SPEED=9,LPM_REMAINDERPOSITIVE=FALSE", + divide.lpm_pipeline = PIPELINE; assign quotient = quotient_unqual [WIDTHQ-1:0]; assign remainder = remainder_unqual [WIDTHR-1:0]; diff --git a/hw/rtl/libs/VX_multiplier.v b/hw/rtl/libs/VX_multiplier.v index fc38e889..3322b479 100644 --- a/hw/rtl/libs/VX_multiplier.v +++ b/hw/rtl/libs/VX_multiplier.v @@ -18,7 +18,7 @@ module VX_multiplier #( `ifdef QUARTUS - lpm_mult quartus_mult ( + lpm_mult mult ( .clock (clk), .dataa (dataa), .datab (datab), @@ -29,13 +29,13 @@ module VX_multiplier #( .sum (1'b0) ); - defparam quartus_mult.lpm_type = "LPM_MULT", - quartus_mult.lpm_widtha = WIDTHA, - quartus_mult.lpm_widthb = WIDTHB, - quartus_mult.lpm_widthp = WIDTHP, - quartus_mult.lpm_representation = SIGNED ? "SIGNED" : "UNSIGNED", - quartus_mult.lpm_pipeline = PIPELINE, - quartus_mult.lpm_hint = "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9"; + defparam mult.lpm_type = "LPM_MULT", + mult.lpm_widtha = WIDTHA, + mult.lpm_widthb = WIDTHB, + mult.lpm_widthp = WIDTHP, + mult.lpm_representation = SIGNED ? "SIGNED" : "UNSIGNED", + mult.lpm_pipeline = PIPELINE, + mult.lpm_hint = "MAXIMIZE_SPEED=9,DEDICATED_MULTIPLIER_CIRCUITRY=YES"; `else wire [WIDTHP-1:0] result_unqual; From 042da747783e61f26d895009a87d183d1643a7bd Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Mon, 3 Aug 2020 06:42:42 -0400 Subject: [PATCH 34/94] update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index efe3b48e..544bf12b 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ Install Verilator Install Vortex - $ git clone https://github.gatech.edu/casl/Vortex.git + $ git clone --recursive https://github.gatech.edu/casl/Vortex.git $ cd Vortex $ make From 58ced9d601e1e76320aa033ede4d85af931273b0 Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Tue, 4 Aug 2020 18:24:32 -0400 Subject: [PATCH 35/94] Makefile for /runtime/tests/ and /driver/tests/ --- driver/tests/Makefile | 14 ++++++++++++++ runtime/tests/Makefile | 10 +++++----- 2 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 driver/tests/Makefile diff --git a/driver/tests/Makefile b/driver/tests/Makefile new file mode 100644 index 00000000..4a91d0de --- /dev/null +++ b/driver/tests/Makefile @@ -0,0 +1,14 @@ +all: + $(MAKE) -C basic + $(MAKE) -C demo + +run: + $(MAKE) -C basic run-rtlsim + $(MAKE) -C basic run-simx + $(MAKE) -C demo run-rtlsim + $(MAKE) -C demo run-simx + +clean: + $(MAKE) -C basic clean + $(MAKE) -C demo clean + diff --git a/runtime/tests/Makefile b/runtime/tests/Makefile index 4543b3ef..9741cb76 100644 --- a/runtime/tests/Makefile +++ b/runtime/tests/Makefile @@ -6,11 +6,11 @@ all: $(MAKE) -C vecadd run: - cd simple && $(MAKE) run - cd dev && $(MAKE) run - cd hello && $(MAKE) run - cd nlTest && $(MAKE) run - cd vecadd && $(MAKE) run + $(MAKE) -C simple run + $(MAKE) -C dev run + $(MAKE) -C hello run + $(MAKE) -C nlTest run + $(MAKE) -C vecadd run clean: $(MAKE) -C simple clean From ffd9515881f5a7941509286fd6a8b79becd8bff2 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Wed, 5 Aug 2020 15:53:59 -0700 Subject: [PATCH 36/94] added altera fpu modules --- hw/opae/gen_sources.sh | 16 +- hw/opae/sources_1c.txt | 1 + hw/rtl/VX_define.vh | 27 +- hw/rtl/VX_gpr_stage.v | 2 +- hw/rtl/VX_lsu_unit.v | 4 +- hw/rtl/VX_mul_unit.v | 4 +- hw/rtl/VX_scheduler.v | 2 +- hw/rtl/VX_warp_sched.v | 15 +- hw/rtl/VX_writeback.v | 24 +- hw/rtl/fp_cores/VX_fp_fpga.v | 275 ++- hw/rtl/fp_cores/VX_fp_noncomp.v | 243 +++ hw/rtl/fp_cores/VX_fp_type.v | 19 + hw/rtl/fp_cores/VX_fpnew.v | 32 +- hw/rtl/fp_cores/altera/VX_fp_add.v | 80 + hw/rtl/fp_cores/altera/VX_fp_div.v | 49 + hw/rtl/fp_cores/altera/VX_fp_ftoi.v | 47 + hw/rtl/fp_cores/altera/VX_fp_ftou.v | 47 + hw/rtl/fp_cores/altera/VX_fp_itof.v | 47 + hw/rtl/fp_cores/altera/VX_fp_madd.v | 145 ++ hw/rtl/fp_cores/altera/VX_fp_msub.v | 145 ++ hw/rtl/fp_cores/altera/VX_fp_mul.v | 80 + hw/rtl/fp_cores/altera/VX_fp_sqrt.v | 47 + hw/rtl/fp_cores/altera/VX_fp_sub.v | 80 + hw/rtl/fp_cores/altera/VX_fp_utof.v | 47 + hw/rtl/fp_cores/altera/acl_fp_add.v | 67 - hw/rtl/fp_cores/altera/acl_fp_div.sv | 1605 +++++++++++++++++ ...p_div_memoryC0_uid112_invTables_lutmem.hex | 514 ++++++ ...p_div_memoryC1_uid115_invTables_lutmem.hex | 514 ++++++ ...p_div_memoryC2_uid118_invTables_lutmem.hex | 514 ++++++ hw/rtl/fp_cores/altera/acl_fp_ftoi.sv | 518 ++++++ hw/rtl/fp_cores/altera/acl_fp_ftou.sv | 503 ++++++ hw/rtl/fp_cores/altera/acl_fp_itof.sv | 522 ++++++ hw/rtl/fp_cores/altera/acl_fp_msub.v | 63 - hw/rtl/fp_cores/altera/acl_fp_mul.v | 67 - hw/rtl/fp_cores/altera/acl_fp_nmadd.v | 63 - hw/rtl/fp_cores/altera/acl_fp_sqrt.sv | 1128 ++++++++++++ ..._sqrt_memoryC0_uid62_sqrtTables_lutmem.hex | 258 +++ ..._sqrt_memoryC1_uid65_sqrtTables_lutmem.hex | 258 +++ ..._sqrt_memoryC2_uid68_sqrtTables_lutmem.hex | 258 +++ hw/rtl/fp_cores/altera/acl_fp_sub.v | 67 - hw/rtl/fp_cores/altera/acl_fp_utof.sv | 486 +++++ hw/rtl/fp_cores/altera/dspba_library_ver.sv | 392 ++++ hw/rtl/fp_cores/altera/generate.sh | 25 + hw/rtl/interfaces/VX_cmt_to_issue_if.v | 12 +- hw/rtl/libs/VX_divide.v | 3 +- hw/rtl/libs/VX_multiplier.v | 2 - hw/rtl/libs/VX_shift_register.v | 28 +- hw/syn/quartus/project.sdc | 2 +- 48 files changed, 8888 insertions(+), 459 deletions(-) create mode 100644 hw/rtl/fp_cores/VX_fp_noncomp.v create mode 100644 hw/rtl/fp_cores/VX_fp_type.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_add.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_div.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_ftoi.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_ftou.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_itof.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_madd.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_msub.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_mul.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_sqrt.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_sub.v create mode 100644 hw/rtl/fp_cores/altera/VX_fp_utof.v delete mode 100644 hw/rtl/fp_cores/altera/acl_fp_add.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_div.sv create mode 100644 hw/rtl/fp_cores/altera/acl_fp_div_memoryC0_uid112_invTables_lutmem.hex create mode 100644 hw/rtl/fp_cores/altera/acl_fp_div_memoryC1_uid115_invTables_lutmem.hex create mode 100644 hw/rtl/fp_cores/altera/acl_fp_div_memoryC2_uid118_invTables_lutmem.hex create mode 100644 hw/rtl/fp_cores/altera/acl_fp_ftoi.sv create mode 100644 hw/rtl/fp_cores/altera/acl_fp_ftou.sv create mode 100644 hw/rtl/fp_cores/altera/acl_fp_itof.sv delete mode 100644 hw/rtl/fp_cores/altera/acl_fp_msub.v delete mode 100644 hw/rtl/fp_cores/altera/acl_fp_mul.v delete mode 100644 hw/rtl/fp_cores/altera/acl_fp_nmadd.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_sqrt.sv create mode 100644 hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC0_uid62_sqrtTables_lutmem.hex create mode 100644 hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC1_uid65_sqrtTables_lutmem.hex create mode 100644 hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC2_uid68_sqrtTables_lutmem.hex delete mode 100644 hw/rtl/fp_cores/altera/acl_fp_sub.v create mode 100644 hw/rtl/fp_cores/altera/acl_fp_utof.sv create mode 100644 hw/rtl/fp_cores/altera/dspba_library_ver.sv create mode 100755 hw/rtl/fp_cores/altera/generate.sh diff --git a/hw/opae/gen_sources.sh b/hw/opae/gen_sources.sh index 3f6b5f42..0120d34f 100755 --- a/hw/opae/gen_sources.sh +++ b/hw/opae/gen_sources.sh @@ -1,12 +1,20 @@ #!/bin/bash -dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl ../rtl/fp_cores/fpnew/src/common_cells/include ../rtl/fp_cores ../rtl/fp_cores/altera ../rtl/fp_cores/fpnew/src/common_cells/src ../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl ../rtl/fp_cores/fpnew/src' +dir_list='../rtl/libs ../rtl/cache ../rtl/interfaces ../rtl ../rtl/fp_cores/fpnew/src/common_cells/include ../rtl/fp_cores ../rtl/fp_cores/altera' +exclude_list='VX_fpnew.v' # read design sources for dir in $dir_list; do echo "+incdir+$dir" - for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f) - do - echo $file + for file in $(find $dir -maxdepth 1 -name '*.v' -o -name '*.sv' -type f); do + exclude=0 + for fe in $exclude_list; do + if [[ $file =~ $fe ]]; then + exclude=1 + fi + done + if [[ $exclude == 0 ]]; then + echo $file + fi done done \ No newline at end of file diff --git a/hw/opae/sources_1c.txt b/hw/opae/sources_1c.txt index b40f7162..a07c4d79 100644 --- a/hw/opae/sources_1c.txt +++ b/hw/opae/sources_1c.txt @@ -1,6 +1,7 @@ +define+NUM_CORES=1 #+define+SCOPE ++define+SYNTHESIS #+define+DBG_PRINT_CORE_ICACHE #+define+DBG_PRINT_CORE_DCACHE diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index d61b001c..8c684ddf 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -38,9 +38,16 @@ /////////////////////////////////////////////////////////////////////////////// -`define LATENCY_IDIV 24 +`define LATENCY_IDIV 22 `define LATENCY_IMUL 2 +`define LATENCY_FDIV 16 +`define LATENCY_FSQRT 10 +`define LATENCY_FTOI 5 +`define LATENCY_FTOU 4 +`define LATENCY_ITOF 8 +`define LATENCY_UTOF 7 + `define LATENCY_FMULADD 2 `define LATENCY_FDIVSQRT 2 `define LATENCY_FCONV 2 @@ -193,6 +200,12 @@ `define FRM_RMM 3'b100 // round to nearest max magnitude `define FRM_DYN 3'b111 // dynamic mode `define FRM_BITS 3 + +`define FFG_NX 0 // inexact +`define FFG_UF 1 // underflow +`define FFG_OF 2 // overflow +`define FFG_DZ 3 // division by zero +`define FFG_NV 4 // invalid `define FFG_BITS 5 `define GPU_TMC 3'h0 @@ -415,6 +428,16 @@ typedef struct packed { logic [31:0] curr_PC; logic [`NR_BITS-1:0] rd; logic wb; -} is_data_t; +} issue_data_t; + +typedef struct packed { + logic is_normal; + logic is_zero; + logic is_subnormal; + logic is_inf; + logic is_nan; + logic is_signaling; + logic is_quiet; +} fp_type_t; `endif diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 17992b4d..9e49ca57 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -16,7 +16,7 @@ module VX_gpr_stage #( wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; - wire [`NW_BITS+`NR_BITS-1:0] raddr1; + wire [`NW_BITS+`NR_BITS-1:0] raddr1; VX_gpr_ram gpr_ram ( .clk (clk), diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 2074d44e..bf086fbd 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -86,7 +86,7 @@ module VX_lsu_unit #( .reset (reset), .stall (stall_in), .flush (0), - .in ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.thread_mask, lsu_req_if.issue_tag, full_address, mem_req_sext, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.wb, lsu_req_if.curr_PC}), + .in ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.thread_mask, lsu_req_if.issue_tag, full_address, mem_req_sext, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.wb, lsu_req_if.curr_PC}), .out ({use_valid, use_warp_num, use_thread_mask, use_issue_tag, use_address, use_req_sext, use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd, use_wb, use_pc}) ); @@ -126,7 +126,7 @@ module VX_lsu_unit #( mem_rsp_rd_buf [use_issue_tag] <= use_rd; end if (dcache_rsp_fire) begin - mem_rsp_mask_buf [rsp_issue_tag] <= mem_rsp_mask_n; + mem_rsp_mask_buf [rsp_issue_tag] <= mem_rsp_mask_n; mem_rsp_data_all_buf [rsp_issue_tag] <= mem_rsp_data_all | mem_rsp_data_curr; end end diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 691f30ae..36b46bba 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -104,7 +104,7 @@ module VX_mul_unit #( VX_shift_register #( .DATAW(1 + `ISTAG_BITS + 1), .DEPTH(`LATENCY_IMUL) - ) mul_delay ( + ) mul_shift_reg ( .clk(clk), .reset(reset), .enable(~stall_mul), @@ -115,7 +115,7 @@ module VX_mul_unit #( VX_shift_register #( .DATAW(1 + `ISTAG_BITS + `NUM_THREADS), .DEPTH(`LATENCY_IDIV) - ) div_delay ( + ) div_shift_reg ( .clk(clk), .reset(reset), .enable(~stall_div), diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index 22afdec1..d922e768 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -67,7 +67,7 @@ module VX_scheduler #( wire issue_fire = decode_if.valid && ~stall; VX_cam_buffer #( - .DATAW ($bits(is_data_t)), + .DATAW ($bits(issue_data_t)), .SIZE (`ISSUEQ_SIZE), .RPORTS (`NUM_EXS) ) issue_buffer ( diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index 04c2d80e..80eda9f7 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -123,12 +123,12 @@ module VX_warp_sched #( thread_masks[join_if.warp_num] <= join_tm; didnt_split <= 0; end else if (warp_ctl_if.is_split) begin - warp_stalled[warp_ctl_if.warp_num] <= 0; + warp_stalled[warp_ctl_if.warp_num] <= 0; if (warp_ctl_if.do_split) begin thread_masks[warp_ctl_if.warp_num] <= warp_ctl_if.split_new_mask; - didnt_split <= 0; + didnt_split <= 0; end else begin - didnt_split <= 1; + didnt_split <= 1; end end @@ -206,11 +206,8 @@ module VX_warp_sched #( genvar i; for (i = 0; i < `NUM_WARPS; i++) begin - wire correct_warp_s = (i == warp_ctl_if.warp_num); - wire correct_warp_j = (i == join_if.warp_num); - - wire push = (warp_ctl_if.is_split && warp_ctl_if.do_split) && correct_warp_s; - wire pop = join_if.is_join && correct_warp_j; + wire push = warp_ctl_if.is_split && warp_ctl_if.do_split && (i == warp_ctl_if.warp_num); + wire pop = join_if.is_join && (i == join_if.warp_num); VX_ipdom_stack #( .WIDTH(1+32+`NUM_THREADS), @@ -234,7 +231,7 @@ module VX_warp_sched #( assign real_schedule = schedule && !warp_stalled[warp_to_schedule] && !total_barrier_stall[warp_to_schedule] && !warp_lock[0]; - assign global_stall = (stall || wstall_this_cycle || hazard || !real_schedule || join_if.is_join); + assign global_stall = stall || wstall_this_cycle || hazard || !real_schedule || join_if.is_join; assign scheduled_warp = !(wstall_this_cycle || hazard || !real_schedule || join_if.is_join) && !reset; diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 8519b9f7..60e86440 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -25,8 +25,8 @@ module VX_writeback #( reg [31:0] wb_curr_PC_table [`ISSUEQ_SIZE-1:0]; reg [`NR_BITS-1:0] wb_rd_table [`ISSUEQ_SIZE-1:0]; - reg [`ISSUEQ_SIZE-1:0] wb_pending; - reg [`ISSUEQ_SIZE-1:0] wb_pending_n; + reg [`ISSUEQ_SIZE-1:0] wb_valid_table; + reg [`ISSUEQ_SIZE-1:0] wb_valid_table_n; reg [`ISTAG_BITS-1:0] wb_index; wire [`ISTAG_BITS-1:0] wb_index_n; @@ -35,40 +35,40 @@ module VX_writeback #( wire wb_valid_n; always @(*) begin - wb_pending_n = wb_pending; + wb_valid_table_n = wb_valid_table; if (wb_valid) begin - wb_pending_n[wb_index] = 0; + wb_valid_table_n[wb_index] = 0; end if (alu_commit_if.valid) begin - wb_pending_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.wb; + wb_valid_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.wb; end if (lsu_commit_if.valid) begin - wb_pending_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.wb; + wb_valid_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.wb; end if (csr_commit_if.valid) begin - wb_pending_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.wb; + wb_valid_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.wb; end if (mul_commit_if.valid) begin - wb_pending_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.wb; + wb_valid_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.wb; end if (fpu_commit_if.valid) begin - wb_pending_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.wb; + wb_valid_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.wb; end end VX_priority_encoder #( .N(`ISSUEQ_SIZE) ) wb_select ( - .data_in (wb_pending_n), + .data_in (wb_valid_table_n), .data_out (wb_index_n), .valid_out (wb_valid_n) ); always @(posedge clk) begin if (reset) begin - wb_pending <= 0; + wb_valid_table <= 0; wb_index <= 0; wb_valid <= 0; end else begin @@ -112,7 +112,7 @@ module VX_writeback #( wb_rd_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd; end - wb_pending <= wb_pending_n; + wb_valid_table <= wb_valid_table_n; wb_index <= wb_index_n; wb_valid <= wb_valid_n && writeback_if.ready; end diff --git a/hw/rtl/fp_cores/VX_fp_fpga.v b/hw/rtl/fp_cores/VX_fp_fpga.v index e120a4a0..fc35d9db 100644 --- a/hw/rtl/fp_cores/VX_fp_fpga.v +++ b/hw/rtl/fp_cores/VX_fp_fpga.v @@ -1,4 +1,5 @@ `include "VX_define.vh" +`include "dspba_library_ver.sv" module VX_fp_fpga ( input wire clk, @@ -25,68 +26,234 @@ module VX_fp_fpga ( input wire out_ready, output wire out_valid ); - wire fpnew_in_ready; - wire [`NUM_THREADS-1:0][31:0] fpnew_result; + localparam NUM_FPC = 12; + localparam FPC_BITS = `LOG2UP(NUM_FPC); + + reg [FPC_BITS-1:0] core_select; + + wire [NUM_FPC-1:0] core_in_ready; + wire [NUM_FPC-1:0][`NUM_THREADS-1:0][31:0] core_result; wire fpnew_has_fflags; wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fpnew_fflags; - wire [`ISTAG_BITS-1:0] fpnew_out_tag; - wire fpnew_out_ready; - wire fpnew_out_valid; + wire [NUM_FPC-1:0][`ISTAG_BITS-1:0] core_out_tag; + wire [NUM_FPC-1:0] core_out_ready; + wire [NUM_FPC-1:0] core_out_valid; - wire [`NUM_THREADS-1:0][31:0] add_result; - wire add_out_ready; - - VX_fpnew #( - .FMULADD (0), - .FDIVSQRT (0), - .FNONCOMP (1), - .FCONV (0) - ) fp_core ( - .clk (clk), - .reset (reset), - - .in_valid (in_valid), - .in_ready (fpnew_in_ready), - - .in_tag (in_tag), - - .op (op), - .frm (frm), - - .dataa (dataa), - .datab (datab), - .datac (datac), - .result (fpnew_result), - - .has_fflags (fpnew_has_fflags), - .fflags (fpnew_fflags), - - .out_tag (fpnew_out_tag), - - .out_ready (fpnew_out_ready), - .out_valid (fpnew_out_valid) - ); + reg negate_output; genvar i; - for (i = 0; i < `NUM_THREADS; i++) begin - acl_fp_add fp_add ( - .clock (clk), - .dataa (dataa), - .datab (datab), - .enable (add_out_ready), - .result (add_result[i]) - ); + + always @(*) begin + core_select = 0; + negate_output = 0; + case (op) + `FPU_ADD: core_select = 1; + `FPU_SUB: core_select = 2; + `FPU_MUL: core_select = 3; + `FPU_MADD: core_select = 4; + `FPU_MSUB: core_select = 5; + `FPU_NMSUB: begin core_select = 4; negate_output = 1; end + `FPU_NMADD: begin core_select = 5; negate_output = 1; end + `FPU_DIV: core_select = 6; + `FPU_SQRT: core_select = 7; + `FPU_CVTWS: core_select = 8; + `FPU_CVTWUS: core_select = 9; + `FPU_CVTSW: core_select = 10; + `FPU_CVTSWU: core_select = 11; + default:; + endcase end - assign in_reqady = fpnew_in_ready; - assign has_fflags = fpnew_has_fflags; - assign fflags = fpnew_fflags; - assign out_tag = fpnew_out_tag; - assign fpnew_out_ready = out_ready; + VX_fp_noncomp fp_noncomp ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 0)), + .in_ready (core_in_ready[0]), + .in_tag (in_tag), + .op (op), + .frm (frm), + .dataa (dataa), + .datab (datab), + .result (core_result[0]), + .has_fflags (fpnew_has_fflags), + .fflags (fpnew_fflags), + .out_tag (core_out_tag[0]), + .out_ready (core_out_ready[0]), + .out_valid (core_out_valid[0]) + ); + + VX_fp_add fp_add ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 1)), + .in_ready (core_in_ready[1]), + .in_tag (in_tag), + .dataa (dataa), + .datab (datab), + .result (core_result[1]), + .out_tag (core_out_tag[1]), + .out_ready (core_out_ready[1]), + .out_valid (core_out_valid[1]) + ); - assign add_out_ready = out_ready; + VX_fp_sub fp_sub ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 2)), + .in_ready (core_in_ready[2]), + .in_tag (in_tag), + .dataa (dataa), + .datab (datab), + .result (core_result[2]), + .out_tag (core_out_tag[2]), + .out_ready (core_out_ready[2]), + .out_valid (core_out_valid[2]) + ); - assign result = fpnew_out_valid ? fpnew_result : add_result; - assign out_valid = fpnew_out_valid; + VX_fp_mul fp_mul ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 3)), + .in_ready (core_in_ready[3]), + .in_tag (in_tag), + .dataa (dataa), + .datab (datab), + .result (core_result[3]), + .out_tag (core_out_tag[3]), + .out_ready (core_out_ready[3]), + .out_valid (core_out_valid[3]) + ); + + VX_fp_madd fp_madd ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 4)), + .in_ready (core_in_ready[4]), + .in_tag (in_tag), + .negate (negate_output), + .dataa (dataa), + .datab (datab), + .datac (datac), + .result (core_result[4]), + .out_tag (core_out_tag[4]), + .out_ready (core_out_ready[4]), + .out_valid (core_out_valid[4]) + ); + + VX_fp_msub fp_msub ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 5)), + .in_ready (core_in_ready[5]), + .in_tag (in_tag), + .negate (negate_output), + .dataa (dataa), + .datab (datab), + .datac (datac), + .result (core_result[5]), + .out_tag (core_out_tag[5]), + .out_ready (core_out_ready[5]), + .out_valid (core_out_valid[5]) + ); + + VX_fp_div fp_div ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 6)), + .in_ready (core_in_ready[6]), + .in_tag (in_tag), + .dataa (dataa), + .datab (datab), + .result (core_result[6]), + .out_tag (core_out_tag[6]), + .out_ready (core_out_ready[6]), + .out_valid (core_out_valid[6]) + ); + + VX_fp_sqrt fp_sqrt ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 7)), + .in_ready (core_in_ready[7]), + .in_tag (in_tag), + .dataa (dataa), + .result (core_result[7]), + .out_tag (core_out_tag[7]), + .out_ready (core_out_ready[7]), + .out_valid (core_out_valid[7]) + ); + + VX_fp_ftoi fp_ftoi ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 8)), + .in_ready (core_in_ready[8]), + .in_tag (in_tag), + .dataa (dataa), + .result (core_result[8]), + .out_tag (core_out_tag[8]), + .out_ready (core_out_ready[8]), + .out_valid (core_out_valid[8]) + ); + + VX_fp_ftou fp_ftou ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 9)), + .in_ready (core_in_ready[9]), + .in_tag (in_tag), + .dataa (dataa), + .result (core_result[9]), + .out_tag (core_out_tag[9]), + .out_ready (core_out_ready[9]), + .out_valid (core_out_valid[9]) + ); + + VX_fp_itof fp_itof ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 10)), + .in_ready (core_in_ready[10]), + .in_tag (in_tag), + .dataa (dataa), + .result (core_result[10]), + .out_tag (core_out_tag[10]), + .out_ready (core_out_ready[10]), + .out_valid (core_out_valid[10]) + ); + + VX_fp_utof fp_utof ( + .clk (clk), + .reset (reset), + .in_valid (in_valid && (core_select == 11)), + .in_ready (core_in_ready[11]), + .in_tag (in_tag), + .dataa (dataa), + .result (core_result[11]), + .out_tag (core_out_tag[11]), + .out_ready (core_out_ready[11]), + .out_valid (core_out_valid[11]) + ); + + wire [FPC_BITS-1:0] fp_index; + wire fp_valid; + + VX_priority_encoder #( + .N(NUM_FPC) + ) wb_select ( + .data_in (core_out_valid), + .data_out (fp_index), + .valid_out (fp_valid) + ); + + for (i = 0; i < NUM_FPC; i++) begin + assign core_out_ready[i] = out_ready && (i == fp_index); + end + + assign has_fflags = fpnew_has_fflags && (fp_index == 0); + assign fflags = fpnew_fflags; + assign out_tag = core_out_tag[fp_index]; + assign result = core_result[fp_index]; + assign out_valid = fp_valid; endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fp_noncomp.v b/hw/rtl/fp_cores/VX_fp_noncomp.v new file mode 100644 index 00000000..b081e571 --- /dev/null +++ b/hw/rtl/fp_cores/VX_fp_noncomp.v @@ -0,0 +1,243 @@ +`include "VX_define.vh" + +module VX_fp_noncomp ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`FPU_BITS-1:0] op, + input wire [`FRM_BITS-1:0] frm, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire has_fflags, + output wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + localparam NEG_INF = 32'h00000001, + NEG_NORM = 32'h00000002, + NEG_SUBNORM = 32'h00000004, + NEG_ZERO = 32'h00000008, + POS_ZERO = 32'h00000010, + POS_SUBNORM = 32'h00000020, + POS_NORM = 32'h00000040, + POS_INF = 32'h00000080, + SIG_NAN = 32'h00000100, + QUT_NAN = 32'h00000200; + + wire [`NUM_THREADS-1:0] a_sign, b_sign; + wire [`NUM_THREADS-1:0][7:0] a_exponent, b_exponent; + wire [`NUM_THREADS-1:0][22:0] a_mantissa, b_mantissa; + fp_type_t [`NUM_THREADS-1:0] a_type, b_type; + + wire [`NUM_THREADS-1:0] a_smaller, ab_equal; + + reg [`NUM_THREADS-1:0][31:0] fclass_mask; // generate a 10-bit mask for integer reg + reg [`NUM_THREADS-1:0][31:0] fminmax_res; // result of fmin/fmax + reg [`NUM_THREADS-1:0][31:0] fsgnj_res; // result of sign injection + reg [`NUM_THREADS-1:0][31:0] fcmp_res; // result of comparison + reg [`NUM_THREADS-1:0][ 4:0] fcmp_excp; // exception of comparison + + genvar i; + + // Setup + for (i = 0; i < `NUM_THREADS; i++) begin + assign a_sign[i] = dataa[i][31]; + assign a_exponent[i] = dataa[i][30:23]; + assign a_mantissa[i] = dataa[i][22:0]; + + assign b_sign[i] = datab[i][31]; + assign b_exponent[i] = datab[i][30:23]; + assign b_mantissa[i] = datab[i][22:0]; + + assign a_smaller[i] = (dataa[i] < datab[i]) ^ (a_sign[i] || b_sign[i]); + assign ab_equal[i] = (dataa[i] == datab[i]) | (a_type[i][4] & b_type[i][4]); + + VX_fp_type fp_type_a ( + .exponent(a_exponent[i]), + .mantissa(a_mantissa[i]), + .o_type(a_type[i]) + ); + + VX_fp_type fp_type_b ( + .exponent(b_exponent[i]), + .mantissa(b_mantissa[i]), + .o_type(b_type[i]) + ); + end + + // FCLASS + for (i = 0; i < `NUM_THREADS; i++) begin + always @(*) begin + if (a_type[i].is_normal) begin + fclass_mask[i] = a_sign[i] ? NEG_NORM : POS_NORM; + end + else if (a_type[i].is_inf) begin + fclass_mask[i] = a_sign[i] ? NEG_INF : POS_INF; + end + else if (a_type[i].is_zero) begin + fclass_mask[i] = a_sign[i] ? NEG_ZERO : POS_ZERO; + end + else if (a_type[i].is_subnormal) begin + fclass_mask[i] = a_sign[i] ? NEG_SUBNORM : POS_SUBNORM; + end + else if (a_type[i].is_nan) begin + fclass_mask[i] = {22'h0, a_type[i].is_quiet, a_type[i].is_signaling, 8'h0}; + end + else begin + fclass_mask[i] = QUT_NAN; + end + end + end + + // Min/Max + for (i = 0; i < `NUM_THREADS; i++) begin + always @(*) begin + if (a_type[i].is_nan && b_type[i].is_nan) + fminmax_res[i] = {1'b0, 8'hff, 1'b1, 22'd0}; // canonical qNaN + else if (a_type[i].is_nan) + fminmax_res[i] = datab[i]; + else if (b_type[i].is_nan) + fminmax_res[i] = dataa[i]; + else begin + case (op) // use LSB to distinguish MIN and MAX + `FPU_MIN: fminmax_res[i] = a_smaller[i] ? dataa[i] : datab[i]; + `FPU_MAX: fminmax_res[i] = a_smaller[i] ? datab[i] : dataa[i]; + default: fminmax_res[i] = 32'hdeadbeaf; // don't care value + endcase + end + end + end + + // Sign Injection + for (i = 0; i < `NUM_THREADS; i++) begin + always @(*) begin + case (op) + `FPU_SGNJ: fsgnj_res[i] = { b_sign[i], a_exponent[i], a_mantissa[i]}; + `FPU_SGNJN: fsgnj_res[i] = {~b_sign[i], a_exponent[i], a_mantissa[i]}; + `FPU_SGNJX: fsgnj_res[i] = { a_sign[i] ^ b_sign[i], a_exponent[i], a_mantissa[i]}; + default: fsgnj_res[i] = 32'hdeadbeaf; // don't care value + endcase + end + end + + // Comparison + for (i = 0; i < `NUM_THREADS; i++) begin + always @(*) begin + case (frm) + `FRM_RNE: begin + if (a_type[i].is_nan || b_type[i].is_nan) begin + fcmp_res[i] = 32'h0; // result is 0 when either operand is NaN + fcmp_excp[i] = {1'b1, 4'h0}; // raise NV flag when either operand is NaN + end + else begin + fcmp_res[i] = {31'h0, (a_smaller[i] | ab_equal[i])}; + fcmp_excp[i] = 5'h0; + end + end + `FRM_RTZ: begin + if (a_type[i].is_nan || b_type[i].is_nan) begin + fcmp_res[i] = 32'h0; // result is 0 when either operand is NaN + fcmp_excp[i] = {1'b1, 4'h0}; // raise NV flag when either operand is NaN + end + else begin + fcmp_res[i] = {31'h0, (a_smaller[i] & ~ab_equal[i])}; + fcmp_excp[i] = 5'h0; + end + end + `FRM_RDN: begin + if (a_type[i].is_nan || b_type[i].is_nan) begin + fcmp_res[i] = 32'h0; // result is 0 when either operand is NaN + // ** FEQS only raise NV flag when either operand is signaling NaN + fcmp_excp[i] = {(a_type[i].is_signaling | b_type[i].is_signaling), 4'h0}; + end + else begin + fcmp_res[i] = {31'h0, ab_equal[i]}; + fcmp_excp[i] = 5'h0; + end + end + default: begin + fcmp_res[i] = 32'hdeadbeaf; // don't care value + fcmp_excp[i] = 5'h0; + end + endcase + end + end + + // outputs + + reg tmp_valid; + reg tmp_has_fflags; + reg [`NUM_THREADS-1:0][`FFG_BITS-1:0] tmp_fflags; + reg [`NUM_THREADS-1:0][31:0] tmp_result; + + always @(*) begin + case (op) + `FPU_SGNJ: tmp_has_fflags = 0; + `FPU_SGNJN: tmp_has_fflags = 0; + `FPU_SGNJX: tmp_has_fflags = 0; + `FPU_MVXW: tmp_has_fflags = 0; + `FPU_MVWX: tmp_has_fflags = 0; + `FPU_CLASS: tmp_has_fflags = 0; + default: tmp_has_fflags = 1; + endcase + end + + for (i = 0; i < `NUM_THREADS; i++) begin + always @(*) begin + tmp_valid = 1'b1; + case (op) + `FPU_CLASS: begin + tmp_result[i] = fclass_mask[i]; + {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + end + `FPU_MVXW,`FPU_MVWX: begin + tmp_result[i] = dataa[i]; + {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + end + `FPU_MIN,`FPU_MAX: begin + tmp_result[i] = fminmax_res[i]; + {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = {a_type[i][0] | b_type[i][0], 4'h0}; + end + `FPU_SGNJ,`FPU_SGNJN,`FPU_SGNJX: begin + tmp_result[i] = fsgnj_res[i]; + {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + end + `FPU_CMP: begin + tmp_result[i] = fcmp_res[i]; + {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = fcmp_excp[i]; + end + default: begin + tmp_result[i] = 32'hdeadbeaf; + {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + tmp_valid = 1'b0; + end + endcase + end + end + + wire stall = ~out_ready && out_valid; + assign in_ready = ~stall; + + VX_generic_register #( + .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32) + 1 + `FFG_BITS) + ) nc_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (1'b0), + .in ({tmp_valid, in_tag, tmp_result, tmp_has_fflags, tmp_fflags}), + .out ({out_valid, out_tag, result, has_fflags, fflags}) + ); + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fp_type.v b/hw/rtl/fp_cores/VX_fp_type.v new file mode 100644 index 00000000..5e5aeb50 --- /dev/null +++ b/hw/rtl/fp_cores/VX_fp_type.v @@ -0,0 +1,19 @@ + +`include "VX_define.vh" + +module VX_fp_type ( + // inputs + input [7:0] exponent, + input [22:0] mantissa, + // outputs + output fp_type_t o_type +); + assign o_type.is_normal = (exponent != 8'd0) && (exponent != 8'hff); + assign o_type.is_zero = (exponent == 8'd0) && (mantissa == 23'd0); + assign o_type.is_subnormal = (exponent == 8'd0) && !o_type.is_zero; + assign o_type.is_inf = ((exponent == 8'hff) && (mantissa == 23'd0)); + assign o_type.is_nan = ((exponent == 8'hff) && (mantissa != 23'd0)); + assign o_type.is_signaling = o_type.is_nan && (mantissa[22] == 1'b0); + assign o_type.is_quiet = o_type.is_nan && !o_type.is_signaling; + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fpnew.v b/hw/rtl/fp_cores/VX_fpnew.v index 71ad066d..d56f8695 100644 --- a/hw/rtl/fp_cores/VX_fpnew.v +++ b/hw/rtl/fp_cores/VX_fpnew.v @@ -83,13 +83,13 @@ module VX_fpnew #( reg [FOP_BITS-1:0] fpu_op; reg [`FRM_BITS-1:0] fpu_rnd; reg fpu_op_mod; - reg fflags_en, fflags_en_o; + reg fpu_has_fflags, fpu_has_fflags_o; always @(*) begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = frm; fpu_op_mod = 0; - fflags_en = 1; + fpu_has_fflags = 1; fpu_operands[0] = dataa; fpu_operands[1] = datab; fpu_operands[2] = datac; @@ -112,18 +112,18 @@ module VX_fpnew #( `FPU_MSUB: begin fpu_op = fpnew_pkg::FMADD; fpu_op_mod = 1; end `FPU_NMSUB: begin fpu_op = fpnew_pkg::FNMSUB; end `FPU_NMADD: begin fpu_op = fpnew_pkg::FNMSUB; fpu_op_mod = 1; end - `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; fflags_en = 0; end - `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; fflags_en = 0; end - `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; fflags_en = 0; end + `FPU_SGNJ: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RNE; fpu_has_fflags = 0; end + `FPU_SGNJN: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RTZ; fpu_has_fflags = 0; end + `FPU_SGNJX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RDN; fpu_has_fflags = 0; end `FPU_MIN: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RNE; end `FPU_MAX: begin fpu_op = fpnew_pkg::MINMAX; fpu_rnd = `FRM_RTZ; end `FPU_CVTWS: begin fpu_op = fpnew_pkg::F2I; end `FPU_CVTWUS:begin fpu_op = fpnew_pkg::F2I; fpu_op_mod = 1; end `FPU_CVTSW: begin fpu_op = fpnew_pkg::I2F; end `FPU_CVTSWU:begin fpu_op = fpnew_pkg::I2F; fpu_op_mod = 1; end - `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end - `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fflags_en = 0; end - `FPU_CLASS: begin fpu_op = fpnew_pkg::CLASSIFY; fflags_en = 0; end + `FPU_MVXW: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fpu_has_fflags = 0; end + `FPU_MVWX: begin fpu_op = fpnew_pkg::SGNJ; fpu_rnd = `FRM_RUP; fpu_has_fflags = 0; end + `FPU_CLASS: begin fpu_op = fpnew_pkg::CLASSIFY; fpu_has_fflags = 0; end `FPU_CMP: begin fpu_op = fpnew_pkg::CMP; end default:; endcase @@ -150,13 +150,13 @@ module VX_fpnew #( .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), .vectorial_op_i (1'b0), - .tag_i ({fpu_in_tag, fflags_en, is_class_op_i}), + .tag_i ({fpu_in_tag, fpu_has_fflags, is_class_op_i}), .in_valid_i (fpu_in_valid), .in_ready_o (fpu_in_ready), .flush_i (reset), .result_o (fpu_result[0]), .status_o (fpu_status[0]), - .tag_o ({fpu_out_tag, fflags_en_o, is_class_op_o}), + .tag_o ({fpu_out_tag, fpu_has_fflags_o, is_class_op_o}), .out_valid_o (fpu_out_valid), .out_ready_i (fpu_out_ready), `UNUSED_PIN (busy_o) @@ -201,14 +201,14 @@ module VX_fpnew #( assign result = fpu_result; - assign has_fflags = fflags_en_o; + assign has_fflags = fpu_has_fflags_o; for (i = 0; i < `NUM_THREADS; i++) begin - assign fflags[i][0] = fpu_status[i].NX; - assign fflags[i][1] = fpu_status[i].UF; - assign fflags[i][2] = fpu_status[i].OF; - assign fflags[i][3] = fpu_status[i].DZ; - assign fflags[i][4] = fpu_status[i].NV; + assign fflags[i][`FFG_NX] = fpu_status[i].NX; + assign fflags[i][`FFG_UF] = fpu_status[i].UF; + assign fflags[i][`FFG_OF] = fpu_status[i].OF; + assign fflags[i][`FFG_DZ] = fpu_status[i].DZ; + assign fflags[i][`FFG_NV] = fpu_status[i].NV; end assign out_valid = fpu_out_valid; diff --git a/hw/rtl/fp_cores/altera/VX_fp_add.v b/hw/rtl/fp_cores/altera/VX_fp_add.v new file mode 100644 index 00000000..d06b80c2 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_add.v @@ -0,0 +1,80 @@ +`include "VX_define.vh" + +module VX_fp_add ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(dataa[i]), + .ay(datab[i]), + .az(), + .clk({2'b00,clk}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result[i]), + .chainout() + ); + defparam mac_fp_wys.operation_mode = "sp_add"; + defparam mac_fp_wys.use_chainin = "false"; + defparam mac_fp_wys.adder_subtract = "false"; + defparam mac_fp_wys.ax_clock = "0"; + defparam mac_fp_wys.ay_clock = "0"; + defparam mac_fp_wys.az_clock = "none"; + defparam mac_fp_wys.output_clock = "0"; + defparam mac_fp_wys.accumulate_clock = "none"; + defparam mac_fp_wys.ax_chainin_pl_clock = "none"; + defparam mac_fp_wys.accum_pipeline_clock = "none"; + defparam mac_fp_wys.mult_pipeline_clock = "none"; + defparam mac_fp_wys.adder_input_clock = "0"; + defparam mac_fp_wys.accum_adder_clock = "none"; + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(1) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_div.v b/hw/rtl/fp_cores/altera/VX_fp_div.v new file mode 100644 index 00000000..a08c1087 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_div.v @@ -0,0 +1,49 @@ +`include "VX_define.vh" + +module VX_fp_div ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + acl_fp_div fdiv ( + .clk (clk), + .areset (1'b0), + .en (enable), + .a (dataa[i]), + .b (datab[i]), + .q (result[i]) + ); + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(`LATENCY_FDIV) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_ftoi.v b/hw/rtl/fp_cores/altera/VX_fp_ftoi.v new file mode 100644 index 00000000..b9e64db5 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_ftoi.v @@ -0,0 +1,47 @@ +`include "VX_define.vh" + +module VX_fp_ftoi ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + acl_fp_ftoi ftoi ( + .clk (clk), + .areset (1'b0), + .en (enable), + .a (dataa[i]), + .q (result[i]) + ); + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(`LATENCY_FTOI) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_ftou.v b/hw/rtl/fp_cores/altera/VX_fp_ftou.v new file mode 100644 index 00000000..6044c2e5 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_ftou.v @@ -0,0 +1,47 @@ +`include "VX_define.vh" + +module VX_fp_ftou ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + acl_fp_ftou ftou ( + .clk (clk), + .areset (1'b0), + .en (enable), + .a (dataa[i]), + .q (result[i]) + ); + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(`LATENCY_FTOU) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_itof.v b/hw/rtl/fp_cores/altera/VX_fp_itof.v new file mode 100644 index 00000000..4c8f3188 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_itof.v @@ -0,0 +1,47 @@ +`include "VX_define.vh" + +module VX_fp_itof ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + acl_fp_itof itof ( + .clk (clk), + .areset (1'b0), + .en (enable), + .a (dataa[i]), + .q (result[i]) + ); + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(`LATENCY_ITOF) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_madd.v b/hw/rtl/fp_cores/altera/VX_fp_madd.v new file mode 100644 index 00000000..b6058e98 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_madd.v @@ -0,0 +1,145 @@ +`include "VX_define.vh" + +module VX_fp_madd ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + input wire [`NUM_THREADS-1:0][31:0] datac, + output wire [`NUM_THREADS-1:0][31:0] result, + + input wire negate, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire enable0, enable1; + assign in_ready = enable0 && enable1; + + wire [`NUM_THREADS-1:0][31:0] result_st0, result_st1; + wire [`ISTAG_BITS-1:0] out_tag_st0, out_tag_st1; + wire in_valid_st0, out_valid_st0, out_valid_st1; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + twentynm_fp_mac mac_fp_wys0 ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(datac[i]), + .ay(datab[i]), + .az(dataa[i]), + .clk({2'b00,clk}), + .ena({2'b11,enable0}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result_st0[i]), + .chainout() + ); + defparam mac_fp_wys0.operation_mode = "sp_mult_add"; + defparam mac_fp_wys0.use_chainin = "false"; + defparam mac_fp_wys0.adder_subtract = "false"; + defparam mac_fp_wys0.ax_clock = "0"; + defparam mac_fp_wys0.ay_clock = "0"; + defparam mac_fp_wys0.az_clock = "0"; + defparam mac_fp_wys0.output_clock = "0"; + defparam mac_fp_wys0.accumulate_clock = "none"; + defparam mac_fp_wys0.ax_chainin_pl_clock = "0"; + defparam mac_fp_wys0.accum_pipeline_clock = "none"; + defparam mac_fp_wys0.mult_pipeline_clock = "0"; + defparam mac_fp_wys0.adder_input_clock = "0"; + defparam mac_fp_wys0.accum_adder_clock = "none"; + + twentynm_fp_mac mac_fp_wys1 ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(32'h0), + .ay(result_st0[i]), + .az(), + .clk({2'b00,clk}), + .ena({2'b11,enable1}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result_st1[i]), + .chainout() + ); + defparam mac_fp_wys1.operation_mode = "sp_add"; + defparam mac_fp_wys1.use_chainin = "false"; + defparam mac_fp_wys1.adder_subtract = "true"; + defparam mac_fp_wys1.ax_clock = "0"; + defparam mac_fp_wys1.ay_clock = "0"; + defparam mac_fp_wys1.az_clock = "none"; + defparam mac_fp_wys1.output_clock = "0"; + defparam mac_fp_wys1.accumulate_clock = "none"; + defparam mac_fp_wys1.ax_chainin_pl_clock = "none"; + defparam mac_fp_wys1.accum_pipeline_clock = "none"; + defparam mac_fp_wys1.mult_pipeline_clock = "none"; + defparam mac_fp_wys1.adder_input_clock = "0"; + defparam mac_fp_wys1.accum_adder_clock = "none"; + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1 + 1), + .DEPTH(1) + ) shift_reg0 ( + .clk(clk), + .reset(reset), + .enable(enable0), + .in({in_tag, (in_valid && ~negate), (in_valid && negate)}), + .out({out_tag_st0, out_valid_st0, in_valid_st0}) + ); + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(1) + ) shift_reg1 ( + .clk(clk), + .reset(reset), + .enable(enable1), + .in({in_tag_st0, in_valid_st0}), + .out({out_tag_st1, out_valid_st1}) + ); + + wire out_stall = ~out_ready && out_valid; + assign enable0 = ~out_stall; + assign enable1 = ~out_stall && ~(out_valid_st0 && out_valid_st1); // stall the negate stage if dual outputs + + assign result = out_valid_st0 ? result_st0 : result_st1; + assign out_tag = out_valid_st0 ? out_tag_st0 : out_tag_st1; + assign out_valid = out_valid_st0 || out_valid_st1; + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_msub.v b/hw/rtl/fp_cores/altera/VX_fp_msub.v new file mode 100644 index 00000000..83a499d2 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_msub.v @@ -0,0 +1,145 @@ +`include "VX_define.vh" + +module VX_fp_msub ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + input wire [`NUM_THREADS-1:0][31:0] datac, + output wire [`NUM_THREADS-1:0][31:0] result, + + input wire negate, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire enable0, enable1; + assign in_ready = enable0 && enable1; + + wire [`NUM_THREADS-1:0][31:0] result_st0, result_st1; + wire [`ISTAG_BITS-1:0] out_tag_st0, out_tag_st1; + wire in_valid_st0, out_valid_st0, out_valid_st1; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + twentynm_fp_mac mac_fp_wys0 ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(datac[i]), + .ay(datab[i]), + .az(dataa[i]), + .clk({2'b00,clk}), + .ena({2'b11,enable0}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result_st0[i]), + .chainout() + ); + defparam mac_fp_wys0.operation_mode = "sp_mult_add"; + defparam mac_fp_wys0.use_chainin = "false"; + defparam mac_fp_wys0.adder_subtract = "true"; + defparam mac_fp_wys0.ax_clock = "0"; + defparam mac_fp_wys0.ay_clock = "0"; + defparam mac_fp_wys0.az_clock = "0"; + defparam mac_fp_wys0.output_clock = "0"; + defparam mac_fp_wys0.accumulate_clock = "none"; + defparam mac_fp_wys0.ax_chainin_pl_clock = "0"; + defparam mac_fp_wys0.accum_pipeline_clock = "none"; + defparam mac_fp_wys0.mult_pipeline_clock = "0"; + defparam mac_fp_wys0.adder_input_clock = "0"; + defparam mac_fp_wys0.accum_adder_clock = "none"; + + twentynm_fp_mac mac_fp_wys1 ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(32'h0), + .ay(result_st0[i]), + .az(), + .clk({2'b00,clk}), + .ena({2'b11,enable1}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result_st1[i]), + .chainout() + ); + defparam mac_fp_wys1.operation_mode = "sp_add"; + defparam mac_fp_wys1.use_chainin = "false"; + defparam mac_fp_wys1.adder_subtract = "true"; + defparam mac_fp_wys1.ax_clock = "0"; + defparam mac_fp_wys1.ay_clock = "0"; + defparam mac_fp_wys1.az_clock = "none"; + defparam mac_fp_wys1.output_clock = "0"; + defparam mac_fp_wys1.accumulate_clock = "none"; + defparam mac_fp_wys1.ax_chainin_pl_clock = "none"; + defparam mac_fp_wys1.accum_pipeline_clock = "none"; + defparam mac_fp_wys1.mult_pipeline_clock = "none"; + defparam mac_fp_wys1.adder_input_clock = "0"; + defparam mac_fp_wys1.accum_adder_clock = "none"; + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1 + 1), + .DEPTH(1) + ) shift_reg0 ( + .clk(clk), + .reset(reset), + .enable(enable0), + .in({in_tag, (in_valid && ~negate), (in_valid && negate)}), + .out({out_tag_st0, out_valid_st0, in_valid_st0}) + ); + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(1) + ) shift_reg1 ( + .clk(clk), + .reset(reset), + .enable(enable1), + .in({in_tag_st0, in_valid_st0}), + .out({out_tag_st1, out_valid_st1}) + ); + + wire out_stall = ~out_ready && out_valid; + assign enable0 = ~out_stall; + assign enable1 = ~out_stall && ~(out_valid_st0 && out_valid_st1); // stall the negate stage if dual outputs + + assign result = out_valid_st0 ? result_st0 : result_st1; + assign out_tag = out_valid_st0 ? out_tag_st0 : out_tag_st1; + assign out_valid = out_valid_st0 || out_valid_st1; + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/VX_fp_mul.v b/hw/rtl/fp_cores/altera/VX_fp_mul.v new file mode 100644 index 00000000..76709969 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_mul.v @@ -0,0 +1,80 @@ +`include "VX_define.vh" + +module VX_fp_mul ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(), + .ay(datab[i]), + .az(dataa[i]), + .clk({2'b00,clk}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result[i]), + .chainout() + ); + defparam mac_fp_wys.operation_mode = "sp_mult"; + defparam mac_fp_wys.use_chainin = "false"; + defparam mac_fp_wys.adder_subtract = "false"; + defparam mac_fp_wys.ax_clock = "none"; + defparam mac_fp_wys.ay_clock = "0"; + defparam mac_fp_wys.az_clock = "0"; + defparam mac_fp_wys.output_clock = "0"; + defparam mac_fp_wys.accumulate_clock = "none"; + defparam mac_fp_wys.ax_chainin_pl_clock = "none"; + defparam mac_fp_wys.accum_pipeline_clock = "none"; + defparam mac_fp_wys.mult_pipeline_clock = "0"; + defparam mac_fp_wys.adder_input_clock = "none"; + defparam mac_fp_wys.accum_adder_clock = "none"; + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(1) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/VX_fp_sqrt.v b/hw/rtl/fp_cores/altera/VX_fp_sqrt.v new file mode 100644 index 00000000..0a57adc7 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_sqrt.v @@ -0,0 +1,47 @@ +`include "VX_define.vh" + +module VX_fp_sqrt ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + acl_fp_sqrt fsqrt ( + .clk (clk), + .areset (1'b0), + .en (enable), + .a (dataa[i]), + .q (result[i]) + ); + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(`LATENCY_FSQRT) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_sub.v b/hw/rtl/fp_cores/altera/VX_fp_sub.v new file mode 100644 index 00000000..986c7bf0 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_sub.v @@ -0,0 +1,80 @@ +`include "VX_define.vh" + +module VX_fp_sub ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + input wire [`NUM_THREADS-1:0][31:0] datab, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + twentynm_fp_mac mac_fp_wys ( + // inputs + .accumulate(), + .chainin_overflow(), + .chainin_invalid(), + .chainin_underflow(), + .chainin_inexact(), + .ax(dataa[i]), + .ay(datab[i]), + .az(), + .clk({2'b00,clk}), + .ena({2'b11,enable}), + .aclr(2'b00), + .chainin(), + // outputs + .overflow(), + .invalid(), + .underflow(), + .inexact(), + .chainout_overflow(), + .chainout_invalid(), + .chainout_underflow(), + .chainout_inexact(), + .resulta(result[i]), + .chainout() + ); + defparam mac_fp_wys.operation_mode = "sp_add"; + defparam mac_fp_wys.use_chainin = "false"; + defparam mac_fp_wys.adder_subtract = "true"; + defparam mac_fp_wys.ax_clock = "0"; + defparam mac_fp_wys.ay_clock = "0"; + defparam mac_fp_wys.az_clock = "none"; + defparam mac_fp_wys.output_clock = "0"; + defparam mac_fp_wys.accumulate_clock = "none"; + defparam mac_fp_wys.ax_chainin_pl_clock = "none"; + defparam mac_fp_wys.accum_pipeline_clock = "none"; + defparam mac_fp_wys.mult_pipeline_clock = "none"; + defparam mac_fp_wys.adder_input_clock = "0"; + defparam mac_fp_wys.accum_adder_clock = "none"; + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(1) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_utof.v b/hw/rtl/fp_cores/altera/VX_fp_utof.v new file mode 100644 index 00000000..e4169097 --- /dev/null +++ b/hw/rtl/fp_cores/altera/VX_fp_utof.v @@ -0,0 +1,47 @@ +`include "VX_define.vh" + +module VX_fp_utof ( + input wire clk, + input wire reset, + + output wire in_ready, + input wire in_valid, + + input wire [`ISTAG_BITS-1:0] in_tag, + + input wire [`NUM_THREADS-1:0][31:0] dataa, + output wire [`NUM_THREADS-1:0][31:0] result, + + output wire [`ISTAG_BITS-1:0] out_tag, + + input wire out_ready, + output wire out_valid +); + wire stall = ~out_ready && out_valid; + wire enable = ~stall; + assign in_ready = enable; + + genvar i; + + for (i = 0; i < `NUM_THREADS; i++) begin + acl_fp_utof utof ( + .clk (clk), + .areset (1'b0), + .en (enable), + .a (dataa[i]), + .q (result[i]) + ); + end + + VX_shift_register #( + .DATAW(`ISTAG_BITS + 1), + .DEPTH(`LATENCY_UTOF) + ) shift_reg ( + .clk(clk), + .reset(reset), + .enable(enable), + .in({in_tag, in_valid}), + .out({out_tag, out_valid}) + ); + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_add.v b/hw/rtl/fp_cores/altera/acl_fp_add.v deleted file mode 100644 index 6024a22e..00000000 --- a/hw/rtl/fp_cores/altera/acl_fp_add.v +++ /dev/null @@ -1,67 +0,0 @@ -// (C) 1992-2016 Intel Corporation. -// Intel, the Intel logo, Intel, MegaCore, NIOS II, Quartus and TalkBack words -// and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. -// and/or other countries. Other marks and brands may be claimed as the property -// of others. See Trademarks on intel.com for full list of Intel trademarks or -// the Trademarks & Brands Names Database (if Intel) or See www.Intel.com/legal (if Altera) -// Your use of Intel Corporation's design tools, logic functions and other -// software and tools, and its AMPP partner logic functions, and any output -// files any of the foregoing (including device programming or simulation -// files), and any associated documentation or information are expressly subject -// to the terms and conditions of the Altera Program License Subscription -// Agreement, Intel MegaCore Function License Agreement, or other applicable -// license agreement, including, without limitation, that your use is for the -// sole purpose of programming logic devices manufactured by Intel and sold by -// Intel or its authorized distributors. Please refer to the applicable -// agreement for further details. - -module acl_fp_add(dataa, datab, clock, enable, result); - -input [31:0] dataa; -input [31:0] datab; -input clock, enable; - -output [31:0] result; - -// FP MAC wysiwyg -twentynm_fp_mac mac_fp_wys ( - // inputs - .accumulate(), - .chainin_overflow(), - .chainin_invalid(), - .chainin_underflow(), - .chainin_inexact(), - .ax(dataa), - .ay(datab), - .az(), - .clk({2'b00,clock}), - .ena({2'b11,enable}), - .aclr(2'b00), - .chainin(), - // outputs - .overflow(), - .invalid(), - .underflow(), - .inexact(), - .chainout_overflow(), - .chainout_invalid(), - .chainout_underflow(), - .chainout_inexact(), - .resulta(result), - .chainout() -); -defparam mac_fp_wys.operation_mode = "sp_add"; -defparam mac_fp_wys.use_chainin = "false"; -defparam mac_fp_wys.adder_subtract = "false"; -defparam mac_fp_wys.ax_clock = "0"; -defparam mac_fp_wys.ay_clock = "0"; -defparam mac_fp_wys.az_clock = "none"; -defparam mac_fp_wys.output_clock = "0"; -defparam mac_fp_wys.accumulate_clock = "none"; -defparam mac_fp_wys.ax_chainin_pl_clock = "none"; -defparam mac_fp_wys.accum_pipeline_clock = "none"; -defparam mac_fp_wys.mult_pipeline_clock = "none"; -defparam mac_fp_wys.adder_input_clock = "0"; -defparam mac_fp_wys.accum_adder_clock = "none"; - -endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_div.sv b/hw/rtl/fp_cores/altera/acl_fp_div.sv new file mode 100644 index 00000000..ec08a90b --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_div.sv @@ -0,0 +1,1605 @@ +// ------------------------------------------------------------------------- +// High Level Design Compiler for Intel(R) FPGAs Version 17.1 (Release Build #273) +// Quartus Prime development tool and MATLAB/Simulink Interface +// +// Legal Notice: Copyright 2017 Intel Corporation. All rights reserved. +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly +// subject to the terms and conditions of the Intel FPGA Software License +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for +// the sole purpose of programming logic devices manufactured by Intel +// and sold by Intel or its authorized distributors. Please refer to the +// applicable agreement for further details. +// --------------------------------------------------------------------------- + +// SystemVerilog created from acl_fp_div +// SystemVerilog created on Wed Aug 5 12:58:14 2020 + + +(* altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 10037; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 15400; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 12020; -name MESSAGE_DISABLE 12030; -name MESSAGE_DISABLE 12010; -name MESSAGE_DISABLE 12110; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 13410; -name MESSAGE_DISABLE 113007; -name MESSAGE_DISABLE 10958" *) +module acl_fp_div ( + input wire [31:0] a, + input wire [31:0] b, + input wire [0:0] en, + output wire [31:0] q, + input wire clk, + input wire areset + ); + + wire [0:0] GND_q; + wire [0:0] VCC_q; + wire [7:0] cstBiasM1_uid6_fpDivTest_q; + wire [7:0] expX_uid9_fpDivTest_b; + wire [22:0] fracX_uid10_fpDivTest_b; + wire [0:0] signX_uid11_fpDivTest_b; + wire [7:0] expY_uid12_fpDivTest_b; + wire [22:0] fracY_uid13_fpDivTest_b; + wire [0:0] signY_uid14_fpDivTest_b; + wire [22:0] paddingY_uid15_fpDivTest_q; + wire [23:0] updatedY_uid16_fpDivTest_q; + wire [23:0] fracYZero_uid15_fpDivTest_a; + wire [0:0] fracYZero_uid15_fpDivTest_qi; + reg [0:0] fracYZero_uid15_fpDivTest_q; + wire [7:0] cstAllOWE_uid18_fpDivTest_q; + wire [7:0] cstAllZWE_uid20_fpDivTest_q; + wire [0:0] excZ_x_uid23_fpDivTest_qi; + reg [0:0] excZ_x_uid23_fpDivTest_q; + wire [0:0] expXIsMax_uid24_fpDivTest_qi; + reg [0:0] expXIsMax_uid24_fpDivTest_q; + wire [0:0] fracXIsZero_uid25_fpDivTest_qi; + reg [0:0] fracXIsZero_uid25_fpDivTest_q; + wire [0:0] fracXIsNotZero_uid26_fpDivTest_q; + wire [0:0] excI_x_uid27_fpDivTest_q; + wire [0:0] excN_x_uid28_fpDivTest_q; + wire [0:0] invExpXIsMax_uid29_fpDivTest_q; + wire [0:0] InvExpXIsZero_uid30_fpDivTest_q; + wire [0:0] excR_x_uid31_fpDivTest_q; + wire [0:0] excZ_y_uid37_fpDivTest_qi; + reg [0:0] excZ_y_uid37_fpDivTest_q; + wire [0:0] expXIsMax_uid38_fpDivTest_qi; + reg [0:0] expXIsMax_uid38_fpDivTest_q; + wire [0:0] fracXIsZero_uid39_fpDivTest_qi; + reg [0:0] fracXIsZero_uid39_fpDivTest_q; + wire [0:0] fracXIsNotZero_uid40_fpDivTest_q; + wire [0:0] excI_y_uid41_fpDivTest_q; + wire [0:0] excN_y_uid42_fpDivTest_q; + wire [0:0] invExpXIsMax_uid43_fpDivTest_q; + wire [0:0] InvExpXIsZero_uid44_fpDivTest_q; + wire [0:0] excR_y_uid45_fpDivTest_q; + wire [0:0] signR_uid46_fpDivTest_qi; + reg [0:0] signR_uid46_fpDivTest_q; + wire [8:0] expXmY_uid47_fpDivTest_a; + wire [8:0] expXmY_uid47_fpDivTest_b; + logic [8:0] expXmY_uid47_fpDivTest_o; + wire [8:0] expXmY_uid47_fpDivTest_q; + wire [10:0] expR_uid48_fpDivTest_a; + wire [10:0] expR_uid48_fpDivTest_b; + logic [10:0] expR_uid48_fpDivTest_o; + wire [9:0] expR_uid48_fpDivTest_q; + wire [8:0] yAddr_uid51_fpDivTest_b; + wire [13:0] yPE_uid52_fpDivTest_b; + wire [0:0] fracYPostZ_uid56_fpDivTest_qi; + reg [0:0] fracYPostZ_uid56_fpDivTest_q; + wire [23:0] lOAdded_uid58_fpDivTest_q; + wire [1:0] oFracXSE_bottomExtension_uid61_fpDivTest_q; + wire [25:0] oFracXSE_mergedSignalTM_uid63_fpDivTest_q; + wire [0:0] divValPreNormTrunc_uid66_fpDivTest_s; + reg [25:0] divValPreNormTrunc_uid66_fpDivTest_q; + wire [0:0] norm_uid67_fpDivTest_b; + wire [24:0] divValPreNormHigh_uid68_fpDivTest_in; + wire [23:0] divValPreNormHigh_uid68_fpDivTest_b; + wire [23:0] divValPreNormLow_uid69_fpDivTest_in; + wire [23:0] divValPreNormLow_uid69_fpDivTest_b; + wire [0:0] normFracRnd_uid70_fpDivTest_s; + reg [23:0] normFracRnd_uid70_fpDivTest_q; + wire [33:0] expFracRnd_uid71_fpDivTest_q; + wire [24:0] rndOp_uid75_fpDivTest_q; + wire [35:0] expFracPostRnd_uid76_fpDivTest_a; + wire [35:0] expFracPostRnd_uid76_fpDivTest_b; + logic [35:0] expFracPostRnd_uid76_fpDivTest_o; + wire [34:0] expFracPostRnd_uid76_fpDivTest_q; + wire [23:0] fracRPreExc_uid78_fpDivTest_in; + wire [22:0] fracRPreExc_uid78_fpDivTest_b; + wire [31:0] excRPreExc_uid79_fpDivTest_in; + wire [7:0] excRPreExc_uid79_fpDivTest_b; + wire [10:0] expRExt_uid80_fpDivTest_b; + wire [12:0] expUdf_uid81_fpDivTest_a; + wire [12:0] expUdf_uid81_fpDivTest_b; + logic [12:0] expUdf_uid81_fpDivTest_o; + wire [0:0] expUdf_uid81_fpDivTest_n; + wire [12:0] expOvf_uid84_fpDivTest_a; + wire [12:0] expOvf_uid84_fpDivTest_b; + logic [12:0] expOvf_uid84_fpDivTest_o; + wire [0:0] expOvf_uid84_fpDivTest_n; + wire [0:0] zeroOverReg_uid85_fpDivTest_q; + wire [0:0] regOverRegWithUf_uid86_fpDivTest_q; + wire [0:0] xRegOrZero_uid87_fpDivTest_q; + wire [0:0] regOrZeroOverInf_uid88_fpDivTest_q; + wire [0:0] excRZero_uid89_fpDivTest_qi; + reg [0:0] excRZero_uid89_fpDivTest_q; + wire [0:0] excXRYZ_uid90_fpDivTest_q; + wire [0:0] excXRYROvf_uid91_fpDivTest_q; + wire [0:0] excXIYZ_uid92_fpDivTest_q; + wire [0:0] excXIYR_uid93_fpDivTest_q; + wire [0:0] excRInf_uid94_fpDivTest_qi; + reg [0:0] excRInf_uid94_fpDivTest_q; + wire [0:0] excXZYZ_uid95_fpDivTest_q; + wire [0:0] excXIYI_uid96_fpDivTest_q; + wire [0:0] excRNaN_uid97_fpDivTest_qi; + reg [0:0] excRNaN_uid97_fpDivTest_q; + wire [2:0] concExc_uid98_fpDivTest_q; + reg [1:0] excREnc_uid99_fpDivTest_q; + wire [22:0] oneFracRPostExc2_uid100_fpDivTest_q; + wire [1:0] fracRPostExc_uid103_fpDivTest_s; + reg [22:0] fracRPostExc_uid103_fpDivTest_q; + wire [1:0] expRPostExc_uid107_fpDivTest_s; + reg [7:0] expRPostExc_uid107_fpDivTest_q; + wire [0:0] invExcRNaN_uid108_fpDivTest_q; + wire [0:0] sRPostExc_uid109_fpDivTest_q; + wire [31:0] divR_uid110_fpDivTest_q; + wire [11:0] yT1_uid124_invPolyEval_b; + wire [0:0] lowRangeB_uid126_invPolyEval_in; + wire [0:0] lowRangeB_uid126_invPolyEval_b; + wire [11:0] highBBits_uid127_invPolyEval_b; + wire [21:0] s1sumAHighB_uid128_invPolyEval_a; + wire [21:0] s1sumAHighB_uid128_invPolyEval_b; + logic [21:0] s1sumAHighB_uid128_invPolyEval_o; + wire [21:0] s1sumAHighB_uid128_invPolyEval_q; + wire [22:0] s1_uid129_invPolyEval_q; + wire [1:0] lowRangeB_uid132_invPolyEval_in; + wire [1:0] lowRangeB_uid132_invPolyEval_b; + wire [21:0] highBBits_uid133_invPolyEval_b; + wire [31:0] s2sumAHighB_uid134_invPolyEval_a; + wire [31:0] s2sumAHighB_uid134_invPolyEval_b; + logic [31:0] s2sumAHighB_uid134_invPolyEval_o; + wire [31:0] s2sumAHighB_uid134_invPolyEval_q; + wire [33:0] s2_uid135_invPolyEval_q; + wire [25:0] osig_uid138_prodDivPreNormProd_uid60_fpDivTest_b; + wire [12:0] osig_uid141_pT1_uid125_invPolyEval_b; + wire [23:0] osig_uid144_pT2_uid131_invPolyEval_b; + wire memoryC0_uid112_invTables_lutmem_reset0; + wire [30:0] memoryC0_uid112_invTables_lutmem_ia; + wire [8:0] memoryC0_uid112_invTables_lutmem_aa; + wire [8:0] memoryC0_uid112_invTables_lutmem_ab; + wire [30:0] memoryC0_uid112_invTables_lutmem_ir; + wire [30:0] memoryC0_uid112_invTables_lutmem_r; + wire memoryC1_uid115_invTables_lutmem_reset0; + wire [20:0] memoryC1_uid115_invTables_lutmem_ia; + wire [8:0] memoryC1_uid115_invTables_lutmem_aa; + wire [8:0] memoryC1_uid115_invTables_lutmem_ab; + wire [20:0] memoryC1_uid115_invTables_lutmem_ir; + wire [20:0] memoryC1_uid115_invTables_lutmem_r; + wire memoryC2_uid118_invTables_lutmem_reset0; + wire [11:0] memoryC2_uid118_invTables_lutmem_ia; + wire [8:0] memoryC2_uid118_invTables_lutmem_aa; + wire [8:0] memoryC2_uid118_invTables_lutmem_ab; + wire [11:0] memoryC2_uid118_invTables_lutmem_ir; + wire [11:0] memoryC2_uid118_invTables_lutmem_r; + wire prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_reset; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [25:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [25:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a1 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [23:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [23:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c1 [0:0]; + wire [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_p [0:0]; + wire [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_u [0:0]; + wire [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_w [0:0]; + wire [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_x [0:0]; + wire [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_y [0:0]; + reg [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_s [0:0]; + wire [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_qq; + wire [49:0] prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_q; + wire prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena0; + wire prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena1; + wire prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena2; + wire prodXY_uid140_pT1_uid125_invPolyEval_cma_reset; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [11:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_a0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [11:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_a1 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [11:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_c0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [11:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_c1 [0:0]; + wire signed [12:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_l [0:0]; + wire signed [24:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_p [0:0]; + wire signed [24:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_u [0:0]; + wire signed [24:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_w [0:0]; + wire signed [24:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_x [0:0]; + wire signed [24:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_y [0:0]; + reg signed [24:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_s [0:0]; + wire [23:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_qq; + wire [23:0] prodXY_uid140_pT1_uid125_invPolyEval_cma_q; + wire prodXY_uid140_pT1_uid125_invPolyEval_cma_ena0; + wire prodXY_uid140_pT1_uid125_invPolyEval_cma_ena1; + wire prodXY_uid140_pT1_uid125_invPolyEval_cma_ena2; + wire prodXY_uid143_pT2_uid131_invPolyEval_cma_reset; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [13:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_a0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [13:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_a1 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [22:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_c0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [22:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_c1 [0:0]; + wire signed [14:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_l [0:0]; + wire signed [37:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_p [0:0]; + wire signed [37:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_u [0:0]; + wire signed [37:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_w [0:0]; + wire signed [37:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_x [0:0]; + wire signed [37:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_y [0:0]; + reg signed [37:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_s [0:0]; + wire [36:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_qq; + wire [36:0] prodXY_uid143_pT2_uid131_invPolyEval_cma_q; + wire prodXY_uid143_pT2_uid131_invPolyEval_cma_ena0; + wire prodXY_uid143_pT2_uid131_invPolyEval_cma_ena1; + wire prodXY_uid143_pT2_uid131_invPolyEval_cma_ena2; + wire [31:0] invY_uid54_fpDivTest_merged_bit_select_in; + wire [25:0] invY_uid54_fpDivTest_merged_bit_select_b; + wire [0:0] invY_uid54_fpDivTest_merged_bit_select_c; + reg [25:0] redist0_invY_uid54_fpDivTest_merged_bit_select_b_1_q; + reg [0:0] redist1_lowRangeB_uid126_invPolyEval_b_1_q; + reg [7:0] redist2_excRPreExc_uid79_fpDivTest_b_1_q; + reg [22:0] redist3_fracRPreExc_uid78_fpDivTest_b_1_q; + reg [0:0] redist4_norm_uid67_fpDivTest_b_1_q; + reg [23:0] redist5_lOAdded_uid58_fpDivTest_q_3_q; + reg [0:0] redist6_fracYPostZ_uid56_fpDivTest_q_4_q; + reg [13:0] redist7_yPE_uid52_fpDivTest_b_2_q; + reg [8:0] redist9_yAddr_uid51_fpDivTest_b_3_q; + reg [8:0] redist10_yAddr_uid51_fpDivTest_b_7_q; + reg [0:0] redist12_signR_uid46_fpDivTest_q_16_q; + reg [0:0] redist13_fracXIsZero_uid39_fpDivTest_q_15_q; + reg [0:0] redist14_expXIsMax_uid38_fpDivTest_q_15_q; + reg [0:0] redist15_excZ_y_uid37_fpDivTest_q_15_q; + reg [0:0] redist16_fracXIsZero_uid25_fpDivTest_q_5_q; + reg [0:0] redist17_expXIsMax_uid24_fpDivTest_q_15_q; + reg [0:0] redist18_excZ_x_uid23_fpDivTest_q_15_q; + reg [0:0] redist19_fracYZero_uid15_fpDivTest_q_9_q; + wire redist8_yPE_uid52_fpDivTest_b_6_mem_reset0; + wire [13:0] redist8_yPE_uid52_fpDivTest_b_6_mem_ia; + wire [1:0] redist8_yPE_uid52_fpDivTest_b_6_mem_aa; + wire [1:0] redist8_yPE_uid52_fpDivTest_b_6_mem_ab; + wire [13:0] redist8_yPE_uid52_fpDivTest_b_6_mem_iq; + wire [13:0] redist8_yPE_uid52_fpDivTest_b_6_mem_q; + wire [1:0] redist8_yPE_uid52_fpDivTest_b_6_rdcnt_q; + (* preserve *) reg [1:0] redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i; + (* preserve *) reg redist8_yPE_uid52_fpDivTest_b_6_rdcnt_eq; + wire [0:0] redist8_yPE_uid52_fpDivTest_b_6_rdmux_s; + reg [1:0] redist8_yPE_uid52_fpDivTest_b_6_rdmux_q; + reg [1:0] redist8_yPE_uid52_fpDivTest_b_6_wraddr_q; + wire [1:0] redist8_yPE_uid52_fpDivTest_b_6_mem_last_q; + wire [0:0] redist8_yPE_uid52_fpDivTest_b_6_cmp_q; + reg [0:0] redist8_yPE_uid52_fpDivTest_b_6_cmpReg_q; + wire [0:0] redist8_yPE_uid52_fpDivTest_b_6_notEnable_q; + wire [0:0] redist8_yPE_uid52_fpDivTest_b_6_nor_q; + (* preserve_syn_only *) reg [0:0] redist8_yPE_uid52_fpDivTest_b_6_sticky_ena_q; + wire [0:0] redist8_yPE_uid52_fpDivTest_b_6_enaAnd_q; + reg [8:0] redist11_expXmY_uid47_fpDivTest_q_13_outputreg_q; + wire redist11_expXmY_uid47_fpDivTest_q_13_mem_reset0; + wire [8:0] redist11_expXmY_uid47_fpDivTest_q_13_mem_ia; + wire [3:0] redist11_expXmY_uid47_fpDivTest_q_13_mem_aa; + wire [3:0] redist11_expXmY_uid47_fpDivTest_q_13_mem_ab; + wire [8:0] redist11_expXmY_uid47_fpDivTest_q_13_mem_iq; + wire [8:0] redist11_expXmY_uid47_fpDivTest_q_13_mem_q; + wire [3:0] redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_q; + (* preserve *) reg [3:0] redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i; + (* preserve *) reg redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_eq; + wire [0:0] redist11_expXmY_uid47_fpDivTest_q_13_rdmux_s; + reg [3:0] redist11_expXmY_uid47_fpDivTest_q_13_rdmux_q; + reg [3:0] redist11_expXmY_uid47_fpDivTest_q_13_wraddr_q; + wire [4:0] redist11_expXmY_uid47_fpDivTest_q_13_mem_last_q; + wire [4:0] redist11_expXmY_uid47_fpDivTest_q_13_cmp_b; + wire [0:0] redist11_expXmY_uid47_fpDivTest_q_13_cmp_q; + reg [0:0] redist11_expXmY_uid47_fpDivTest_q_13_cmpReg_q; + wire [0:0] redist11_expXmY_uid47_fpDivTest_q_13_notEnable_q; + wire [0:0] redist11_expXmY_uid47_fpDivTest_q_13_nor_q; + (* preserve_syn_only *) reg [0:0] redist11_expXmY_uid47_fpDivTest_q_13_sticky_ena_q; + wire [0:0] redist11_expXmY_uid47_fpDivTest_q_13_enaAnd_q; + reg [22:0] redist20_fracX_uid10_fpDivTest_b_10_outputreg_q; + wire redist20_fracX_uid10_fpDivTest_b_10_mem_reset0; + wire [22:0] redist20_fracX_uid10_fpDivTest_b_10_mem_ia; + wire [2:0] redist20_fracX_uid10_fpDivTest_b_10_mem_aa; + wire [2:0] redist20_fracX_uid10_fpDivTest_b_10_mem_ab; + wire [22:0] redist20_fracX_uid10_fpDivTest_b_10_mem_iq; + wire [22:0] redist20_fracX_uid10_fpDivTest_b_10_mem_q; + wire [2:0] redist20_fracX_uid10_fpDivTest_b_10_rdcnt_q; + (* preserve *) reg [2:0] redist20_fracX_uid10_fpDivTest_b_10_rdcnt_i; + wire [0:0] redist20_fracX_uid10_fpDivTest_b_10_rdmux_s; + reg [2:0] redist20_fracX_uid10_fpDivTest_b_10_rdmux_q; + reg [2:0] redist20_fracX_uid10_fpDivTest_b_10_wraddr_q; + wire [3:0] redist20_fracX_uid10_fpDivTest_b_10_mem_last_q; + wire [3:0] redist20_fracX_uid10_fpDivTest_b_10_cmp_b; + wire [0:0] redist20_fracX_uid10_fpDivTest_b_10_cmp_q; + reg [0:0] redist20_fracX_uid10_fpDivTest_b_10_cmpReg_q; + wire [0:0] redist20_fracX_uid10_fpDivTest_b_10_notEnable_q; + wire [0:0] redist20_fracX_uid10_fpDivTest_b_10_nor_q; + (* preserve_syn_only *) reg [0:0] redist20_fracX_uid10_fpDivTest_b_10_sticky_ena_q; + wire [0:0] redist20_fracX_uid10_fpDivTest_b_10_enaAnd_q; + + + // fracY_uid13_fpDivTest(BITSELECT,12)@0 + assign fracY_uid13_fpDivTest_b = b[22:0]; + + // paddingY_uid15_fpDivTest(CONSTANT,14) + assign paddingY_uid15_fpDivTest_q = 23'b00000000000000000000000; + + // fracXIsZero_uid39_fpDivTest(LOGICAL,38)@0 + 1 + assign fracXIsZero_uid39_fpDivTest_qi = paddingY_uid15_fpDivTest_q == fracY_uid13_fpDivTest_b ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + fracXIsZero_uid39_fpDivTest_delay ( .xin(fracXIsZero_uid39_fpDivTest_qi), .xout(fracXIsZero_uid39_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist13_fracXIsZero_uid39_fpDivTest_q_15(DELAY,165) + dspba_delay_ver #( .width(1), .depth(14), .reset_kind("ASYNC") ) + redist13_fracXIsZero_uid39_fpDivTest_q_15 ( .xin(fracXIsZero_uid39_fpDivTest_q), .xout(redist13_fracXIsZero_uid39_fpDivTest_q_15_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // cstAllOWE_uid18_fpDivTest(CONSTANT,17) + assign cstAllOWE_uid18_fpDivTest_q = 8'b11111111; + + // expY_uid12_fpDivTest(BITSELECT,11)@0 + assign expY_uid12_fpDivTest_b = b[30:23]; + + // expXIsMax_uid38_fpDivTest(LOGICAL,37)@0 + 1 + assign expXIsMax_uid38_fpDivTest_qi = expY_uid12_fpDivTest_b == cstAllOWE_uid18_fpDivTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + expXIsMax_uid38_fpDivTest_delay ( .xin(expXIsMax_uid38_fpDivTest_qi), .xout(expXIsMax_uid38_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist14_expXIsMax_uid38_fpDivTest_q_15(DELAY,166) + dspba_delay_ver #( .width(1), .depth(14), .reset_kind("ASYNC") ) + redist14_expXIsMax_uid38_fpDivTest_q_15 ( .xin(expXIsMax_uid38_fpDivTest_q), .xout(redist14_expXIsMax_uid38_fpDivTest_q_15_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excI_y_uid41_fpDivTest(LOGICAL,40)@15 + assign excI_y_uid41_fpDivTest_q = redist14_expXIsMax_uid38_fpDivTest_q_15_q & redist13_fracXIsZero_uid39_fpDivTest_q_15_q; + + // redist20_fracX_uid10_fpDivTest_b_10_notEnable(LOGICAL,204) + assign redist20_fracX_uid10_fpDivTest_b_10_notEnable_q = ~ (en); + + // redist20_fracX_uid10_fpDivTest_b_10_nor(LOGICAL,205) + assign redist20_fracX_uid10_fpDivTest_b_10_nor_q = ~ (redist20_fracX_uid10_fpDivTest_b_10_notEnable_q | redist20_fracX_uid10_fpDivTest_b_10_sticky_ena_q); + + // redist20_fracX_uid10_fpDivTest_b_10_mem_last(CONSTANT,201) + assign redist20_fracX_uid10_fpDivTest_b_10_mem_last_q = 4'b0110; + + // redist20_fracX_uid10_fpDivTest_b_10_cmp(LOGICAL,202) + assign redist20_fracX_uid10_fpDivTest_b_10_cmp_b = {1'b0, redist20_fracX_uid10_fpDivTest_b_10_rdmux_q}; + assign redist20_fracX_uid10_fpDivTest_b_10_cmp_q = redist20_fracX_uid10_fpDivTest_b_10_mem_last_q == redist20_fracX_uid10_fpDivTest_b_10_cmp_b ? 1'b1 : 1'b0; + + // redist20_fracX_uid10_fpDivTest_b_10_cmpReg(REG,203) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist20_fracX_uid10_fpDivTest_b_10_cmpReg_q <= 1'b0; + end + else if (en == 1'b1) + begin + redist20_fracX_uid10_fpDivTest_b_10_cmpReg_q <= redist20_fracX_uid10_fpDivTest_b_10_cmp_q; + end + end + + // redist20_fracX_uid10_fpDivTest_b_10_sticky_ena(REG,206) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist20_fracX_uid10_fpDivTest_b_10_sticky_ena_q <= 1'b0; + end + else if (redist20_fracX_uid10_fpDivTest_b_10_nor_q == 1'b1) + begin + redist20_fracX_uid10_fpDivTest_b_10_sticky_ena_q <= redist20_fracX_uid10_fpDivTest_b_10_cmpReg_q; + end + end + + // redist20_fracX_uid10_fpDivTest_b_10_enaAnd(LOGICAL,207) + assign redist20_fracX_uid10_fpDivTest_b_10_enaAnd_q = redist20_fracX_uid10_fpDivTest_b_10_sticky_ena_q & en; + + // redist20_fracX_uid10_fpDivTest_b_10_rdcnt(COUNTER,198) + // low=0, high=7, step=1, init=0 + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist20_fracX_uid10_fpDivTest_b_10_rdcnt_i <= 3'd0; + end + else if (en == 1'b1) + begin + redist20_fracX_uid10_fpDivTest_b_10_rdcnt_i <= $unsigned(redist20_fracX_uid10_fpDivTest_b_10_rdcnt_i) + $unsigned(3'd1); + end + end + assign redist20_fracX_uid10_fpDivTest_b_10_rdcnt_q = redist20_fracX_uid10_fpDivTest_b_10_rdcnt_i[2:0]; + + // redist20_fracX_uid10_fpDivTest_b_10_rdmux(MUX,199) + assign redist20_fracX_uid10_fpDivTest_b_10_rdmux_s = en; + always @(redist20_fracX_uid10_fpDivTest_b_10_rdmux_s or redist20_fracX_uid10_fpDivTest_b_10_wraddr_q or redist20_fracX_uid10_fpDivTest_b_10_rdcnt_q) + begin + unique case (redist20_fracX_uid10_fpDivTest_b_10_rdmux_s) + 1'b0 : redist20_fracX_uid10_fpDivTest_b_10_rdmux_q = redist20_fracX_uid10_fpDivTest_b_10_wraddr_q; + 1'b1 : redist20_fracX_uid10_fpDivTest_b_10_rdmux_q = redist20_fracX_uid10_fpDivTest_b_10_rdcnt_q; + default : redist20_fracX_uid10_fpDivTest_b_10_rdmux_q = 3'b0; + endcase + end + + // VCC(CONSTANT,1) + assign VCC_q = 1'b1; + + // fracX_uid10_fpDivTest(BITSELECT,9)@0 + assign fracX_uid10_fpDivTest_b = a[22:0]; + + // redist20_fracX_uid10_fpDivTest_b_10_wraddr(REG,200) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist20_fracX_uid10_fpDivTest_b_10_wraddr_q <= 3'b111; + end + else + begin + redist20_fracX_uid10_fpDivTest_b_10_wraddr_q <= redist20_fracX_uid10_fpDivTest_b_10_rdmux_q; + end + end + + // redist20_fracX_uid10_fpDivTest_b_10_mem(DUALMEM,197) + assign redist20_fracX_uid10_fpDivTest_b_10_mem_ia = fracX_uid10_fpDivTest_b; + assign redist20_fracX_uid10_fpDivTest_b_10_mem_aa = redist20_fracX_uid10_fpDivTest_b_10_wraddr_q; + assign redist20_fracX_uid10_fpDivTest_b_10_mem_ab = redist20_fracX_uid10_fpDivTest_b_10_rdmux_q; + assign redist20_fracX_uid10_fpDivTest_b_10_mem_reset0 = areset; + altera_syncram #( + .ram_block_type("MLAB"), + .operation_mode("DUAL_PORT"), + .width_a(23), + .widthad_a(3), + .numwords_a(8), + .width_b(23), + .widthad_b(3), + .numwords_b(8), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .address_reg_b("CLOCK0"), + .indata_reg_b("CLOCK0"), + .rdcontrol_reg_b("CLOCK0"), + .byteena_reg_b("CLOCK0"), + .outdata_reg_b("CLOCK1"), + .outdata_aclr_b("CLEAR1"), + .clock_enable_input_a("NORMAL"), + .clock_enable_input_b("NORMAL"), + .clock_enable_output_b("NORMAL"), + .read_during_write_mode_mixed_ports("DONT_CARE"), + .power_up_uninitialized("TRUE"), + .intended_device_family("Arria 10") + ) redist20_fracX_uid10_fpDivTest_b_10_mem_dmem ( + .clocken1(redist20_fracX_uid10_fpDivTest_b_10_enaAnd_q[0]), + .clocken0(VCC_q[0]), + .clock0(clk), + .aclr1(redist20_fracX_uid10_fpDivTest_b_10_mem_reset0), + .clock1(clk), + .address_a(redist20_fracX_uid10_fpDivTest_b_10_mem_aa), + .data_a(redist20_fracX_uid10_fpDivTest_b_10_mem_ia), + .wren_a(en[0]), + .address_b(redist20_fracX_uid10_fpDivTest_b_10_mem_ab), + .q_b(redist20_fracX_uid10_fpDivTest_b_10_mem_iq), + .wren_b(), + .rden_a(), + .rden_b(), + .data_b(), + .clocken2(), + .clocken3(), + .aclr0(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_a(), + .eccstatus() + ); + assign redist20_fracX_uid10_fpDivTest_b_10_mem_q = redist20_fracX_uid10_fpDivTest_b_10_mem_iq[22:0]; + + // redist20_fracX_uid10_fpDivTest_b_10_outputreg(DELAY,196) + dspba_delay_ver #( .width(23), .depth(1), .reset_kind("ASYNC") ) + redist20_fracX_uid10_fpDivTest_b_10_outputreg ( .xin(redist20_fracX_uid10_fpDivTest_b_10_mem_q), .xout(redist20_fracX_uid10_fpDivTest_b_10_outputreg_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // fracXIsZero_uid25_fpDivTest(LOGICAL,24)@10 + 1 + assign fracXIsZero_uid25_fpDivTest_qi = paddingY_uid15_fpDivTest_q == redist20_fracX_uid10_fpDivTest_b_10_outputreg_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + fracXIsZero_uid25_fpDivTest_delay ( .xin(fracXIsZero_uid25_fpDivTest_qi), .xout(fracXIsZero_uid25_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist16_fracXIsZero_uid25_fpDivTest_q_5(DELAY,168) + dspba_delay_ver #( .width(1), .depth(4), .reset_kind("ASYNC") ) + redist16_fracXIsZero_uid25_fpDivTest_q_5 ( .xin(fracXIsZero_uid25_fpDivTest_q), .xout(redist16_fracXIsZero_uid25_fpDivTest_q_5_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expX_uid9_fpDivTest(BITSELECT,8)@0 + assign expX_uid9_fpDivTest_b = a[30:23]; + + // expXIsMax_uid24_fpDivTest(LOGICAL,23)@0 + 1 + assign expXIsMax_uid24_fpDivTest_qi = expX_uid9_fpDivTest_b == cstAllOWE_uid18_fpDivTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + expXIsMax_uid24_fpDivTest_delay ( .xin(expXIsMax_uid24_fpDivTest_qi), .xout(expXIsMax_uid24_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist17_expXIsMax_uid24_fpDivTest_q_15(DELAY,169) + dspba_delay_ver #( .width(1), .depth(14), .reset_kind("ASYNC") ) + redist17_expXIsMax_uid24_fpDivTest_q_15 ( .xin(expXIsMax_uid24_fpDivTest_q), .xout(redist17_expXIsMax_uid24_fpDivTest_q_15_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excI_x_uid27_fpDivTest(LOGICAL,26)@15 + assign excI_x_uid27_fpDivTest_q = redist17_expXIsMax_uid24_fpDivTest_q_15_q & redist16_fracXIsZero_uid25_fpDivTest_q_5_q; + + // excXIYI_uid96_fpDivTest(LOGICAL,95)@15 + assign excXIYI_uid96_fpDivTest_q = excI_x_uid27_fpDivTest_q & excI_y_uid41_fpDivTest_q; + + // fracXIsNotZero_uid40_fpDivTest(LOGICAL,39)@15 + assign fracXIsNotZero_uid40_fpDivTest_q = ~ (redist13_fracXIsZero_uid39_fpDivTest_q_15_q); + + // excN_y_uid42_fpDivTest(LOGICAL,41)@15 + assign excN_y_uid42_fpDivTest_q = redist14_expXIsMax_uid38_fpDivTest_q_15_q & fracXIsNotZero_uid40_fpDivTest_q; + + // fracXIsNotZero_uid26_fpDivTest(LOGICAL,25)@15 + assign fracXIsNotZero_uid26_fpDivTest_q = ~ (redist16_fracXIsZero_uid25_fpDivTest_q_5_q); + + // excN_x_uid28_fpDivTest(LOGICAL,27)@15 + assign excN_x_uid28_fpDivTest_q = redist17_expXIsMax_uid24_fpDivTest_q_15_q & fracXIsNotZero_uid26_fpDivTest_q; + + // cstAllZWE_uid20_fpDivTest(CONSTANT,19) + assign cstAllZWE_uid20_fpDivTest_q = 8'b00000000; + + // excZ_y_uid37_fpDivTest(LOGICAL,36)@0 + 1 + assign excZ_y_uid37_fpDivTest_qi = expY_uid12_fpDivTest_b == cstAllZWE_uid20_fpDivTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excZ_y_uid37_fpDivTest_delay ( .xin(excZ_y_uid37_fpDivTest_qi), .xout(excZ_y_uid37_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist15_excZ_y_uid37_fpDivTest_q_15(DELAY,167) + dspba_delay_ver #( .width(1), .depth(14), .reset_kind("ASYNC") ) + redist15_excZ_y_uid37_fpDivTest_q_15 ( .xin(excZ_y_uid37_fpDivTest_q), .xout(redist15_excZ_y_uid37_fpDivTest_q_15_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excZ_x_uid23_fpDivTest(LOGICAL,22)@0 + 1 + assign excZ_x_uid23_fpDivTest_qi = expX_uid9_fpDivTest_b == cstAllZWE_uid20_fpDivTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excZ_x_uid23_fpDivTest_delay ( .xin(excZ_x_uid23_fpDivTest_qi), .xout(excZ_x_uid23_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist18_excZ_x_uid23_fpDivTest_q_15(DELAY,170) + dspba_delay_ver #( .width(1), .depth(14), .reset_kind("ASYNC") ) + redist18_excZ_x_uid23_fpDivTest_q_15 ( .xin(excZ_x_uid23_fpDivTest_q), .xout(redist18_excZ_x_uid23_fpDivTest_q_15_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excXZYZ_uid95_fpDivTest(LOGICAL,94)@15 + assign excXZYZ_uid95_fpDivTest_q = redist18_excZ_x_uid23_fpDivTest_q_15_q & redist15_excZ_y_uid37_fpDivTest_q_15_q; + + // excRNaN_uid97_fpDivTest(LOGICAL,96)@15 + 1 + assign excRNaN_uid97_fpDivTest_qi = excXZYZ_uid95_fpDivTest_q | excN_x_uid28_fpDivTest_q | excN_y_uid42_fpDivTest_q | excXIYI_uid96_fpDivTest_q; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excRNaN_uid97_fpDivTest_delay ( .xin(excRNaN_uid97_fpDivTest_qi), .xout(excRNaN_uid97_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // invExcRNaN_uid108_fpDivTest(LOGICAL,107)@16 + assign invExcRNaN_uid108_fpDivTest_q = ~ (excRNaN_uid97_fpDivTest_q); + + // signY_uid14_fpDivTest(BITSELECT,13)@0 + assign signY_uid14_fpDivTest_b = b[31:31]; + + // signX_uid11_fpDivTest(BITSELECT,10)@0 + assign signX_uid11_fpDivTest_b = a[31:31]; + + // signR_uid46_fpDivTest(LOGICAL,45)@0 + 1 + assign signR_uid46_fpDivTest_qi = signX_uid11_fpDivTest_b ^ signY_uid14_fpDivTest_b; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + signR_uid46_fpDivTest_delay ( .xin(signR_uid46_fpDivTest_qi), .xout(signR_uid46_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist12_signR_uid46_fpDivTest_q_16(DELAY,164) + dspba_delay_ver #( .width(1), .depth(15), .reset_kind("ASYNC") ) + redist12_signR_uid46_fpDivTest_q_16 ( .xin(signR_uid46_fpDivTest_q), .xout(redist12_signR_uid46_fpDivTest_q_16_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // sRPostExc_uid109_fpDivTest(LOGICAL,108)@16 + assign sRPostExc_uid109_fpDivTest_q = redist12_signR_uid46_fpDivTest_q_16_q & invExcRNaN_uid108_fpDivTest_q; + + // lOAdded_uid58_fpDivTest(BITJOIN,57)@10 + assign lOAdded_uid58_fpDivTest_q = {VCC_q, redist20_fracX_uid10_fpDivTest_b_10_outputreg_q}; + + // redist5_lOAdded_uid58_fpDivTest_q_3(DELAY,157) + dspba_delay_ver #( .width(24), .depth(3), .reset_kind("ASYNC") ) + redist5_lOAdded_uid58_fpDivTest_q_3 ( .xin(lOAdded_uid58_fpDivTest_q), .xout(redist5_lOAdded_uid58_fpDivTest_q_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // oFracXSE_bottomExtension_uid61_fpDivTest(CONSTANT,60) + assign oFracXSE_bottomExtension_uid61_fpDivTest_q = 2'b00; + + // oFracXSE_mergedSignalTM_uid63_fpDivTest(BITJOIN,62)@13 + assign oFracXSE_mergedSignalTM_uid63_fpDivTest_q = {redist5_lOAdded_uid58_fpDivTest_q_3_q, oFracXSE_bottomExtension_uid61_fpDivTest_q}; + + // yAddr_uid51_fpDivTest(BITSELECT,50)@0 + assign yAddr_uid51_fpDivTest_b = fracY_uid13_fpDivTest_b[22:14]; + + // memoryC2_uid118_invTables_lutmem(DUALMEM,147)@0 + 2 + // in j@20000000 + assign memoryC2_uid118_invTables_lutmem_aa = yAddr_uid51_fpDivTest_b; + assign memoryC2_uid118_invTables_lutmem_reset0 = areset; + altera_syncram #( + .ram_block_type("M20K"), + .operation_mode("ROM"), + .width_a(12), + .widthad_a(9), + .numwords_a(512), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .outdata_reg_a("CLOCK0"), + .outdata_aclr_a("CLEAR0"), + .clock_enable_input_a("NORMAL"), + .power_up_uninitialized("FALSE"), + .init_file("acl_fp_div_memoryC2_uid118_invTables_lutmem.hex"), + .init_file_layout("PORT_A"), + .intended_device_family("Arria 10") + ) memoryC2_uid118_invTables_lutmem_dmem ( + .clocken0(en[0]), + .aclr0(memoryC2_uid118_invTables_lutmem_reset0), + .clock0(clk), + .address_a(memoryC2_uid118_invTables_lutmem_aa), + .q_a(memoryC2_uid118_invTables_lutmem_ir), + .wren_a(), + .wren_b(), + .rden_a(), + .rden_b(), + .data_a(), + .data_b(), + .address_b(), + .clock1(), + .clocken1(), + .clocken2(), + .clocken3(), + .aclr1(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_b(), + .eccstatus() + ); + assign memoryC2_uid118_invTables_lutmem_r = memoryC2_uid118_invTables_lutmem_ir[11:0]; + + // yPE_uid52_fpDivTest(BITSELECT,51)@0 + assign yPE_uid52_fpDivTest_b = b[13:0]; + + // redist7_yPE_uid52_fpDivTest_b_2(DELAY,159) + dspba_delay_ver #( .width(14), .depth(2), .reset_kind("ASYNC") ) + redist7_yPE_uid52_fpDivTest_b_2 ( .xin(yPE_uid52_fpDivTest_b), .xout(redist7_yPE_uid52_fpDivTest_b_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // yT1_uid124_invPolyEval(BITSELECT,123)@2 + assign yT1_uid124_invPolyEval_b = redist7_yPE_uid52_fpDivTest_b_2_q[13:2]; + + // prodXY_uid140_pT1_uid125_invPolyEval_cma(CHAINMULTADD,149)@2 + 3 + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_reset = areset; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_ena0 = en[0]; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_ena1 = prodXY_uid140_pT1_uid125_invPolyEval_cma_ena0; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_ena2 = prodXY_uid140_pT1_uid125_invPolyEval_cma_ena0; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_l[0] = $signed({1'b0, prodXY_uid140_pT1_uid125_invPolyEval_cma_a1[0][11:0]}); + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_p[0] = prodXY_uid140_pT1_uid125_invPolyEval_cma_l[0] * prodXY_uid140_pT1_uid125_invPolyEval_cma_c1[0]; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_u[0] = prodXY_uid140_pT1_uid125_invPolyEval_cma_p[0][24:0]; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_w[0] = prodXY_uid140_pT1_uid125_invPolyEval_cma_u[0]; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_x[0] = prodXY_uid140_pT1_uid125_invPolyEval_cma_w[0]; + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_y[0] = prodXY_uid140_pT1_uid125_invPolyEval_cma_x[0]; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid140_pT1_uid125_invPolyEval_cma_a0 <= '{default: '0}; + prodXY_uid140_pT1_uid125_invPolyEval_cma_c0 <= '{default: '0}; + end + else + begin + if (prodXY_uid140_pT1_uid125_invPolyEval_cma_ena0 == 1'b1) + begin + prodXY_uid140_pT1_uid125_invPolyEval_cma_a0[0] <= yT1_uid124_invPolyEval_b; + prodXY_uid140_pT1_uid125_invPolyEval_cma_c0[0] <= memoryC2_uid118_invTables_lutmem_r; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid140_pT1_uid125_invPolyEval_cma_a1 <= '{default: '0}; + prodXY_uid140_pT1_uid125_invPolyEval_cma_c1 <= '{default: '0}; + end + else + begin + if (prodXY_uid140_pT1_uid125_invPolyEval_cma_ena2 == 1'b1) + begin + prodXY_uid140_pT1_uid125_invPolyEval_cma_a1 <= prodXY_uid140_pT1_uid125_invPolyEval_cma_a0; + prodXY_uid140_pT1_uid125_invPolyEval_cma_c1 <= prodXY_uid140_pT1_uid125_invPolyEval_cma_c0; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid140_pT1_uid125_invPolyEval_cma_s <= '{default: '0}; + end + else + begin + if (prodXY_uid140_pT1_uid125_invPolyEval_cma_ena1 == 1'b1) + begin + prodXY_uid140_pT1_uid125_invPolyEval_cma_s[0] <= prodXY_uid140_pT1_uid125_invPolyEval_cma_y[0]; + end + end + end + dspba_delay_ver #( .width(24), .depth(0), .reset_kind("ASYNC") ) + prodXY_uid140_pT1_uid125_invPolyEval_cma_delay ( .xin(prodXY_uid140_pT1_uid125_invPolyEval_cma_s[0][23:0]), .xout(prodXY_uid140_pT1_uid125_invPolyEval_cma_qq), .ena(en[0]), .clk(clk), .aclr(areset) ); + assign prodXY_uid140_pT1_uid125_invPolyEval_cma_q = prodXY_uid140_pT1_uid125_invPolyEval_cma_qq[23:0]; + + // osig_uid141_pT1_uid125_invPolyEval(BITSELECT,140)@5 + assign osig_uid141_pT1_uid125_invPolyEval_b = prodXY_uid140_pT1_uid125_invPolyEval_cma_q[23:11]; + + // highBBits_uid127_invPolyEval(BITSELECT,126)@5 + assign highBBits_uid127_invPolyEval_b = osig_uid141_pT1_uid125_invPolyEval_b[12:1]; + + // redist9_yAddr_uid51_fpDivTest_b_3(DELAY,161) + dspba_delay_ver #( .width(9), .depth(3), .reset_kind("ASYNC") ) + redist9_yAddr_uid51_fpDivTest_b_3 ( .xin(yAddr_uid51_fpDivTest_b), .xout(redist9_yAddr_uid51_fpDivTest_b_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // memoryC1_uid115_invTables_lutmem(DUALMEM,146)@3 + 2 + // in j@20000000 + assign memoryC1_uid115_invTables_lutmem_aa = redist9_yAddr_uid51_fpDivTest_b_3_q; + assign memoryC1_uid115_invTables_lutmem_reset0 = areset; + altera_syncram #( + .ram_block_type("M20K"), + .operation_mode("ROM"), + .width_a(21), + .widthad_a(9), + .numwords_a(512), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .outdata_reg_a("CLOCK0"), + .outdata_aclr_a("CLEAR0"), + .clock_enable_input_a("NORMAL"), + .power_up_uninitialized("FALSE"), + .init_file("acl_fp_div_memoryC1_uid115_invTables_lutmem.hex"), + .init_file_layout("PORT_A"), + .intended_device_family("Arria 10") + ) memoryC1_uid115_invTables_lutmem_dmem ( + .clocken0(en[0]), + .aclr0(memoryC1_uid115_invTables_lutmem_reset0), + .clock0(clk), + .address_a(memoryC1_uid115_invTables_lutmem_aa), + .q_a(memoryC1_uid115_invTables_lutmem_ir), + .wren_a(), + .wren_b(), + .rden_a(), + .rden_b(), + .data_a(), + .data_b(), + .address_b(), + .clock1(), + .clocken1(), + .clocken2(), + .clocken3(), + .aclr1(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_b(), + .eccstatus() + ); + assign memoryC1_uid115_invTables_lutmem_r = memoryC1_uid115_invTables_lutmem_ir[20:0]; + + // s1sumAHighB_uid128_invPolyEval(ADD,127)@5 + 1 + assign s1sumAHighB_uid128_invPolyEval_a = {{1{memoryC1_uid115_invTables_lutmem_r[20]}}, memoryC1_uid115_invTables_lutmem_r}; + assign s1sumAHighB_uid128_invPolyEval_b = {{10{highBBits_uid127_invPolyEval_b[11]}}, highBBits_uid127_invPolyEval_b}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + s1sumAHighB_uid128_invPolyEval_o <= 22'b0; + end + else if (en == 1'b1) + begin + s1sumAHighB_uid128_invPolyEval_o <= $signed(s1sumAHighB_uid128_invPolyEval_a) + $signed(s1sumAHighB_uid128_invPolyEval_b); + end + end + assign s1sumAHighB_uid128_invPolyEval_q = s1sumAHighB_uid128_invPolyEval_o[21:0]; + + // lowRangeB_uid126_invPolyEval(BITSELECT,125)@5 + assign lowRangeB_uid126_invPolyEval_in = osig_uid141_pT1_uid125_invPolyEval_b[0:0]; + assign lowRangeB_uid126_invPolyEval_b = lowRangeB_uid126_invPolyEval_in[0:0]; + + // redist1_lowRangeB_uid126_invPolyEval_b_1(DELAY,153) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist1_lowRangeB_uid126_invPolyEval_b_1 ( .xin(lowRangeB_uid126_invPolyEval_b), .xout(redist1_lowRangeB_uid126_invPolyEval_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // s1_uid129_invPolyEval(BITJOIN,128)@6 + assign s1_uid129_invPolyEval_q = {s1sumAHighB_uid128_invPolyEval_q, redist1_lowRangeB_uid126_invPolyEval_b_1_q}; + + // redist8_yPE_uid52_fpDivTest_b_6_notEnable(LOGICAL,180) + assign redist8_yPE_uid52_fpDivTest_b_6_notEnable_q = ~ (en); + + // redist8_yPE_uid52_fpDivTest_b_6_nor(LOGICAL,181) + assign redist8_yPE_uid52_fpDivTest_b_6_nor_q = ~ (redist8_yPE_uid52_fpDivTest_b_6_notEnable_q | redist8_yPE_uid52_fpDivTest_b_6_sticky_ena_q); + + // redist8_yPE_uid52_fpDivTest_b_6_mem_last(CONSTANT,177) + assign redist8_yPE_uid52_fpDivTest_b_6_mem_last_q = 2'b01; + + // redist8_yPE_uid52_fpDivTest_b_6_cmp(LOGICAL,178) + assign redist8_yPE_uid52_fpDivTest_b_6_cmp_q = redist8_yPE_uid52_fpDivTest_b_6_mem_last_q == redist8_yPE_uid52_fpDivTest_b_6_rdmux_q ? 1'b1 : 1'b0; + + // redist8_yPE_uid52_fpDivTest_b_6_cmpReg(REG,179) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist8_yPE_uid52_fpDivTest_b_6_cmpReg_q <= 1'b0; + end + else if (en == 1'b1) + begin + redist8_yPE_uid52_fpDivTest_b_6_cmpReg_q <= redist8_yPE_uid52_fpDivTest_b_6_cmp_q; + end + end + + // redist8_yPE_uid52_fpDivTest_b_6_sticky_ena(REG,182) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist8_yPE_uid52_fpDivTest_b_6_sticky_ena_q <= 1'b0; + end + else if (redist8_yPE_uid52_fpDivTest_b_6_nor_q == 1'b1) + begin + redist8_yPE_uid52_fpDivTest_b_6_sticky_ena_q <= redist8_yPE_uid52_fpDivTest_b_6_cmpReg_q; + end + end + + // redist8_yPE_uid52_fpDivTest_b_6_enaAnd(LOGICAL,183) + assign redist8_yPE_uid52_fpDivTest_b_6_enaAnd_q = redist8_yPE_uid52_fpDivTest_b_6_sticky_ena_q & en; + + // redist8_yPE_uid52_fpDivTest_b_6_rdcnt(COUNTER,174) + // low=0, high=2, step=1, init=0 + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i <= 2'd0; + redist8_yPE_uid52_fpDivTest_b_6_rdcnt_eq <= 1'b0; + end + else if (en == 1'b1) + begin + if (redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i == 2'd1) + begin + redist8_yPE_uid52_fpDivTest_b_6_rdcnt_eq <= 1'b1; + end + else + begin + redist8_yPE_uid52_fpDivTest_b_6_rdcnt_eq <= 1'b0; + end + if (redist8_yPE_uid52_fpDivTest_b_6_rdcnt_eq == 1'b1) + begin + redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i <= $unsigned(redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i) + $unsigned(2'd2); + end + else + begin + redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i <= $unsigned(redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i) + $unsigned(2'd1); + end + end + end + assign redist8_yPE_uid52_fpDivTest_b_6_rdcnt_q = redist8_yPE_uid52_fpDivTest_b_6_rdcnt_i[1:0]; + + // redist8_yPE_uid52_fpDivTest_b_6_rdmux(MUX,175) + assign redist8_yPE_uid52_fpDivTest_b_6_rdmux_s = en; + always @(redist8_yPE_uid52_fpDivTest_b_6_rdmux_s or redist8_yPE_uid52_fpDivTest_b_6_wraddr_q or redist8_yPE_uid52_fpDivTest_b_6_rdcnt_q) + begin + unique case (redist8_yPE_uid52_fpDivTest_b_6_rdmux_s) + 1'b0 : redist8_yPE_uid52_fpDivTest_b_6_rdmux_q = redist8_yPE_uid52_fpDivTest_b_6_wraddr_q; + 1'b1 : redist8_yPE_uid52_fpDivTest_b_6_rdmux_q = redist8_yPE_uid52_fpDivTest_b_6_rdcnt_q; + default : redist8_yPE_uid52_fpDivTest_b_6_rdmux_q = 2'b0; + endcase + end + + // redist8_yPE_uid52_fpDivTest_b_6_wraddr(REG,176) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist8_yPE_uid52_fpDivTest_b_6_wraddr_q <= 2'b10; + end + else + begin + redist8_yPE_uid52_fpDivTest_b_6_wraddr_q <= redist8_yPE_uid52_fpDivTest_b_6_rdmux_q; + end + end + + // redist8_yPE_uid52_fpDivTest_b_6_mem(DUALMEM,173) + assign redist8_yPE_uid52_fpDivTest_b_6_mem_ia = redist7_yPE_uid52_fpDivTest_b_2_q; + assign redist8_yPE_uid52_fpDivTest_b_6_mem_aa = redist8_yPE_uid52_fpDivTest_b_6_wraddr_q; + assign redist8_yPE_uid52_fpDivTest_b_6_mem_ab = redist8_yPE_uid52_fpDivTest_b_6_rdmux_q; + assign redist8_yPE_uid52_fpDivTest_b_6_mem_reset0 = areset; + altera_syncram #( + .ram_block_type("MLAB"), + .operation_mode("DUAL_PORT"), + .width_a(14), + .widthad_a(2), + .numwords_a(3), + .width_b(14), + .widthad_b(2), + .numwords_b(3), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .address_reg_b("CLOCK0"), + .indata_reg_b("CLOCK0"), + .rdcontrol_reg_b("CLOCK0"), + .byteena_reg_b("CLOCK0"), + .outdata_reg_b("CLOCK1"), + .outdata_aclr_b("CLEAR1"), + .clock_enable_input_a("NORMAL"), + .clock_enable_input_b("NORMAL"), + .clock_enable_output_b("NORMAL"), + .read_during_write_mode_mixed_ports("DONT_CARE"), + .power_up_uninitialized("TRUE"), + .intended_device_family("Arria 10") + ) redist8_yPE_uid52_fpDivTest_b_6_mem_dmem ( + .clocken1(redist8_yPE_uid52_fpDivTest_b_6_enaAnd_q[0]), + .clocken0(VCC_q[0]), + .clock0(clk), + .aclr1(redist8_yPE_uid52_fpDivTest_b_6_mem_reset0), + .clock1(clk), + .address_a(redist8_yPE_uid52_fpDivTest_b_6_mem_aa), + .data_a(redist8_yPE_uid52_fpDivTest_b_6_mem_ia), + .wren_a(en[0]), + .address_b(redist8_yPE_uid52_fpDivTest_b_6_mem_ab), + .q_b(redist8_yPE_uid52_fpDivTest_b_6_mem_iq), + .wren_b(), + .rden_a(), + .rden_b(), + .data_b(), + .clocken2(), + .clocken3(), + .aclr0(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_a(), + .eccstatus() + ); + assign redist8_yPE_uid52_fpDivTest_b_6_mem_q = redist8_yPE_uid52_fpDivTest_b_6_mem_iq[13:0]; + + // prodXY_uid143_pT2_uid131_invPolyEval_cma(CHAINMULTADD,150)@6 + 3 + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_reset = areset; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_ena0 = en[0]; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_ena1 = prodXY_uid143_pT2_uid131_invPolyEval_cma_ena0; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_ena2 = prodXY_uid143_pT2_uid131_invPolyEval_cma_ena0; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_l[0] = $signed({1'b0, prodXY_uid143_pT2_uid131_invPolyEval_cma_a1[0][13:0]}); + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_p[0] = prodXY_uid143_pT2_uid131_invPolyEval_cma_l[0] * prodXY_uid143_pT2_uid131_invPolyEval_cma_c1[0]; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_u[0] = prodXY_uid143_pT2_uid131_invPolyEval_cma_p[0][37:0]; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_w[0] = prodXY_uid143_pT2_uid131_invPolyEval_cma_u[0]; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_x[0] = prodXY_uid143_pT2_uid131_invPolyEval_cma_w[0]; + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_y[0] = prodXY_uid143_pT2_uid131_invPolyEval_cma_x[0]; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid143_pT2_uid131_invPolyEval_cma_a0 <= '{default: '0}; + prodXY_uid143_pT2_uid131_invPolyEval_cma_c0 <= '{default: '0}; + end + else + begin + if (prodXY_uid143_pT2_uid131_invPolyEval_cma_ena0 == 1'b1) + begin + prodXY_uid143_pT2_uid131_invPolyEval_cma_a0[0] <= redist8_yPE_uid52_fpDivTest_b_6_mem_q; + prodXY_uid143_pT2_uid131_invPolyEval_cma_c0[0] <= s1_uid129_invPolyEval_q; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid143_pT2_uid131_invPolyEval_cma_a1 <= '{default: '0}; + prodXY_uid143_pT2_uid131_invPolyEval_cma_c1 <= '{default: '0}; + end + else + begin + if (prodXY_uid143_pT2_uid131_invPolyEval_cma_ena2 == 1'b1) + begin + prodXY_uid143_pT2_uid131_invPolyEval_cma_a1 <= prodXY_uid143_pT2_uid131_invPolyEval_cma_a0; + prodXY_uid143_pT2_uid131_invPolyEval_cma_c1 <= prodXY_uid143_pT2_uid131_invPolyEval_cma_c0; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid143_pT2_uid131_invPolyEval_cma_s <= '{default: '0}; + end + else + begin + if (prodXY_uid143_pT2_uid131_invPolyEval_cma_ena1 == 1'b1) + begin + prodXY_uid143_pT2_uid131_invPolyEval_cma_s[0] <= prodXY_uid143_pT2_uid131_invPolyEval_cma_y[0]; + end + end + end + dspba_delay_ver #( .width(37), .depth(0), .reset_kind("ASYNC") ) + prodXY_uid143_pT2_uid131_invPolyEval_cma_delay ( .xin(prodXY_uid143_pT2_uid131_invPolyEval_cma_s[0][36:0]), .xout(prodXY_uid143_pT2_uid131_invPolyEval_cma_qq), .ena(en[0]), .clk(clk), .aclr(areset) ); + assign prodXY_uid143_pT2_uid131_invPolyEval_cma_q = prodXY_uid143_pT2_uid131_invPolyEval_cma_qq[36:0]; + + // osig_uid144_pT2_uid131_invPolyEval(BITSELECT,143)@9 + assign osig_uid144_pT2_uid131_invPolyEval_b = prodXY_uid143_pT2_uid131_invPolyEval_cma_q[36:13]; + + // highBBits_uid133_invPolyEval(BITSELECT,132)@9 + assign highBBits_uid133_invPolyEval_b = osig_uid144_pT2_uid131_invPolyEval_b[23:2]; + + // redist10_yAddr_uid51_fpDivTest_b_7(DELAY,162) + dspba_delay_ver #( .width(9), .depth(4), .reset_kind("ASYNC") ) + redist10_yAddr_uid51_fpDivTest_b_7 ( .xin(redist9_yAddr_uid51_fpDivTest_b_3_q), .xout(redist10_yAddr_uid51_fpDivTest_b_7_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // memoryC0_uid112_invTables_lutmem(DUALMEM,145)@7 + 2 + // in j@20000000 + assign memoryC0_uid112_invTables_lutmem_aa = redist10_yAddr_uid51_fpDivTest_b_7_q; + assign memoryC0_uid112_invTables_lutmem_reset0 = areset; + altera_syncram #( + .ram_block_type("M20K"), + .operation_mode("ROM"), + .width_a(31), + .widthad_a(9), + .numwords_a(512), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .outdata_reg_a("CLOCK0"), + .outdata_aclr_a("CLEAR0"), + .clock_enable_input_a("NORMAL"), + .power_up_uninitialized("FALSE"), + .init_file("acl_fp_div_memoryC0_uid112_invTables_lutmem.hex"), + .init_file_layout("PORT_A"), + .intended_device_family("Arria 10") + ) memoryC0_uid112_invTables_lutmem_dmem ( + .clocken0(en[0]), + .aclr0(memoryC0_uid112_invTables_lutmem_reset0), + .clock0(clk), + .address_a(memoryC0_uid112_invTables_lutmem_aa), + .q_a(memoryC0_uid112_invTables_lutmem_ir), + .wren_a(), + .wren_b(), + .rden_a(), + .rden_b(), + .data_a(), + .data_b(), + .address_b(), + .clock1(), + .clocken1(), + .clocken2(), + .clocken3(), + .aclr1(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_b(), + .eccstatus() + ); + assign memoryC0_uid112_invTables_lutmem_r = memoryC0_uid112_invTables_lutmem_ir[30:0]; + + // s2sumAHighB_uid134_invPolyEval(ADD,133)@9 + assign s2sumAHighB_uid134_invPolyEval_a = {{1{memoryC0_uid112_invTables_lutmem_r[30]}}, memoryC0_uid112_invTables_lutmem_r}; + assign s2sumAHighB_uid134_invPolyEval_b = {{10{highBBits_uid133_invPolyEval_b[21]}}, highBBits_uid133_invPolyEval_b}; + assign s2sumAHighB_uid134_invPolyEval_o = $signed(s2sumAHighB_uid134_invPolyEval_a) + $signed(s2sumAHighB_uid134_invPolyEval_b); + assign s2sumAHighB_uid134_invPolyEval_q = s2sumAHighB_uid134_invPolyEval_o[31:0]; + + // lowRangeB_uid132_invPolyEval(BITSELECT,131)@9 + assign lowRangeB_uid132_invPolyEval_in = osig_uid144_pT2_uid131_invPolyEval_b[1:0]; + assign lowRangeB_uid132_invPolyEval_b = lowRangeB_uid132_invPolyEval_in[1:0]; + + // s2_uid135_invPolyEval(BITJOIN,134)@9 + assign s2_uid135_invPolyEval_q = {s2sumAHighB_uid134_invPolyEval_q, lowRangeB_uid132_invPolyEval_b}; + + // invY_uid54_fpDivTest_merged_bit_select(BITSELECT,151)@9 + assign invY_uid54_fpDivTest_merged_bit_select_in = s2_uid135_invPolyEval_q[31:0]; + assign invY_uid54_fpDivTest_merged_bit_select_b = invY_uid54_fpDivTest_merged_bit_select_in[30:5]; + assign invY_uid54_fpDivTest_merged_bit_select_c = invY_uid54_fpDivTest_merged_bit_select_in[31:31]; + + // redist0_invY_uid54_fpDivTest_merged_bit_select_b_1(DELAY,152) + dspba_delay_ver #( .width(26), .depth(1), .reset_kind("ASYNC") ) + redist0_invY_uid54_fpDivTest_merged_bit_select_b_1 ( .xin(invY_uid54_fpDivTest_merged_bit_select_b), .xout(redist0_invY_uid54_fpDivTest_merged_bit_select_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // GND(CONSTANT,0) + assign GND_q = 1'b0; + + // prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma(CHAINMULTADD,148)@10 + 3 + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_reset = areset; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena0 = en[0]; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena1 = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena0; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena2 = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena0; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_p[0] = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a1[0] * prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c1[0]; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_u[0] = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_p[0][49:0]; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_w[0] = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_u[0]; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_x[0] = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_w[0]; + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_y[0] = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_x[0]; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a0 <= '{default: '0}; + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c0 <= '{default: '0}; + end + else + begin + if (prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena0 == 1'b1) + begin + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a0[0] <= redist0_invY_uid54_fpDivTest_merged_bit_select_b_1_q; + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c0[0] <= lOAdded_uid58_fpDivTest_q; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a1 <= '{default: '0}; + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c1 <= '{default: '0}; + end + else + begin + if (prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena2 == 1'b1) + begin + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a1 <= prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_a0; + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c1 <= prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_c0; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_s <= '{default: '0}; + end + else + begin + if (prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_ena1 == 1'b1) + begin + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_s[0] <= prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_y[0]; + end + end + end + dspba_delay_ver #( .width(50), .depth(0), .reset_kind("ASYNC") ) + prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_delay ( .xin(prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_s[0][49:0]), .xout(prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_qq), .ena(en[0]), .clk(clk), .aclr(areset) ); + assign prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_q = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_qq[49:0]; + + // osig_uid138_prodDivPreNormProd_uid60_fpDivTest(BITSELECT,137)@13 + assign osig_uid138_prodDivPreNormProd_uid60_fpDivTest_b = prodXY_uid137_prodDivPreNormProd_uid60_fpDivTest_cma_q[49:24]; + + // updatedY_uid16_fpDivTest(BITJOIN,15)@0 + assign updatedY_uid16_fpDivTest_q = {GND_q, paddingY_uid15_fpDivTest_q}; + + // fracYZero_uid15_fpDivTest(LOGICAL,16)@0 + 1 + assign fracYZero_uid15_fpDivTest_a = {1'b0, fracY_uid13_fpDivTest_b}; + assign fracYZero_uid15_fpDivTest_qi = fracYZero_uid15_fpDivTest_a == updatedY_uid16_fpDivTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + fracYZero_uid15_fpDivTest_delay ( .xin(fracYZero_uid15_fpDivTest_qi), .xout(fracYZero_uid15_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist19_fracYZero_uid15_fpDivTest_q_9(DELAY,171) + dspba_delay_ver #( .width(1), .depth(8), .reset_kind("ASYNC") ) + redist19_fracYZero_uid15_fpDivTest_q_9 ( .xin(fracYZero_uid15_fpDivTest_q), .xout(redist19_fracYZero_uid15_fpDivTest_q_9_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // fracYPostZ_uid56_fpDivTest(LOGICAL,55)@9 + 1 + assign fracYPostZ_uid56_fpDivTest_qi = redist19_fracYZero_uid15_fpDivTest_q_9_q | invY_uid54_fpDivTest_merged_bit_select_c; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + fracYPostZ_uid56_fpDivTest_delay ( .xin(fracYPostZ_uid56_fpDivTest_qi), .xout(fracYPostZ_uid56_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist6_fracYPostZ_uid56_fpDivTest_q_4(DELAY,158) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist6_fracYPostZ_uid56_fpDivTest_q_4 ( .xin(fracYPostZ_uid56_fpDivTest_q), .xout(redist6_fracYPostZ_uid56_fpDivTest_q_4_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // divValPreNormTrunc_uid66_fpDivTest(MUX,65)@13 + assign divValPreNormTrunc_uid66_fpDivTest_s = redist6_fracYPostZ_uid56_fpDivTest_q_4_q; + always @(divValPreNormTrunc_uid66_fpDivTest_s or en or osig_uid138_prodDivPreNormProd_uid60_fpDivTest_b or oFracXSE_mergedSignalTM_uid63_fpDivTest_q) + begin + unique case (divValPreNormTrunc_uid66_fpDivTest_s) + 1'b0 : divValPreNormTrunc_uid66_fpDivTest_q = osig_uid138_prodDivPreNormProd_uid60_fpDivTest_b; + 1'b1 : divValPreNormTrunc_uid66_fpDivTest_q = oFracXSE_mergedSignalTM_uid63_fpDivTest_q; + default : divValPreNormTrunc_uid66_fpDivTest_q = 26'b0; + endcase + end + + // norm_uid67_fpDivTest(BITSELECT,66)@13 + assign norm_uid67_fpDivTest_b = divValPreNormTrunc_uid66_fpDivTest_q[25:25]; + + // redist4_norm_uid67_fpDivTest_b_1(DELAY,156) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist4_norm_uid67_fpDivTest_b_1 ( .xin(norm_uid67_fpDivTest_b), .xout(redist4_norm_uid67_fpDivTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // rndOp_uid75_fpDivTest(BITJOIN,74)@14 + assign rndOp_uid75_fpDivTest_q = {redist4_norm_uid67_fpDivTest_b_1_q, paddingY_uid15_fpDivTest_q, VCC_q}; + + // cstBiasM1_uid6_fpDivTest(CONSTANT,5) + assign cstBiasM1_uid6_fpDivTest_q = 8'b01111110; + + // redist11_expXmY_uid47_fpDivTest_q_13_notEnable(LOGICAL,192) + assign redist11_expXmY_uid47_fpDivTest_q_13_notEnable_q = ~ (en); + + // redist11_expXmY_uid47_fpDivTest_q_13_nor(LOGICAL,193) + assign redist11_expXmY_uid47_fpDivTest_q_13_nor_q = ~ (redist11_expXmY_uid47_fpDivTest_q_13_notEnable_q | redist11_expXmY_uid47_fpDivTest_q_13_sticky_ena_q); + + // redist11_expXmY_uid47_fpDivTest_q_13_mem_last(CONSTANT,189) + assign redist11_expXmY_uid47_fpDivTest_q_13_mem_last_q = 5'b01000; + + // redist11_expXmY_uid47_fpDivTest_q_13_cmp(LOGICAL,190) + assign redist11_expXmY_uid47_fpDivTest_q_13_cmp_b = {1'b0, redist11_expXmY_uid47_fpDivTest_q_13_rdmux_q}; + assign redist11_expXmY_uid47_fpDivTest_q_13_cmp_q = redist11_expXmY_uid47_fpDivTest_q_13_mem_last_q == redist11_expXmY_uid47_fpDivTest_q_13_cmp_b ? 1'b1 : 1'b0; + + // redist11_expXmY_uid47_fpDivTest_q_13_cmpReg(REG,191) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist11_expXmY_uid47_fpDivTest_q_13_cmpReg_q <= 1'b0; + end + else if (en == 1'b1) + begin + redist11_expXmY_uid47_fpDivTest_q_13_cmpReg_q <= redist11_expXmY_uid47_fpDivTest_q_13_cmp_q; + end + end + + // redist11_expXmY_uid47_fpDivTest_q_13_sticky_ena(REG,194) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist11_expXmY_uid47_fpDivTest_q_13_sticky_ena_q <= 1'b0; + end + else if (redist11_expXmY_uid47_fpDivTest_q_13_nor_q == 1'b1) + begin + redist11_expXmY_uid47_fpDivTest_q_13_sticky_ena_q <= redist11_expXmY_uid47_fpDivTest_q_13_cmpReg_q; + end + end + + // redist11_expXmY_uid47_fpDivTest_q_13_enaAnd(LOGICAL,195) + assign redist11_expXmY_uid47_fpDivTest_q_13_enaAnd_q = redist11_expXmY_uid47_fpDivTest_q_13_sticky_ena_q & en; + + // redist11_expXmY_uid47_fpDivTest_q_13_rdcnt(COUNTER,186) + // low=0, high=9, step=1, init=0 + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i <= 4'd0; + redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_eq <= 1'b0; + end + else if (en == 1'b1) + begin + if (redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i == 4'd8) + begin + redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_eq <= 1'b1; + end + else + begin + redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_eq <= 1'b0; + end + if (redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_eq == 1'b1) + begin + redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i <= $unsigned(redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i) + $unsigned(4'd7); + end + else + begin + redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i <= $unsigned(redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i) + $unsigned(4'd1); + end + end + end + assign redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_q = redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_i[3:0]; + + // redist11_expXmY_uid47_fpDivTest_q_13_rdmux(MUX,187) + assign redist11_expXmY_uid47_fpDivTest_q_13_rdmux_s = en; + always @(redist11_expXmY_uid47_fpDivTest_q_13_rdmux_s or redist11_expXmY_uid47_fpDivTest_q_13_wraddr_q or redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_q) + begin + unique case (redist11_expXmY_uid47_fpDivTest_q_13_rdmux_s) + 1'b0 : redist11_expXmY_uid47_fpDivTest_q_13_rdmux_q = redist11_expXmY_uid47_fpDivTest_q_13_wraddr_q; + 1'b1 : redist11_expXmY_uid47_fpDivTest_q_13_rdmux_q = redist11_expXmY_uid47_fpDivTest_q_13_rdcnt_q; + default : redist11_expXmY_uid47_fpDivTest_q_13_rdmux_q = 4'b0; + endcase + end + + // expXmY_uid47_fpDivTest(SUB,46)@0 + 1 + assign expXmY_uid47_fpDivTest_a = {1'b0, expX_uid9_fpDivTest_b}; + assign expXmY_uid47_fpDivTest_b = {1'b0, expY_uid12_fpDivTest_b}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + expXmY_uid47_fpDivTest_o <= 9'b0; + end + else if (en == 1'b1) + begin + expXmY_uid47_fpDivTest_o <= $unsigned(expXmY_uid47_fpDivTest_a) - $unsigned(expXmY_uid47_fpDivTest_b); + end + end + assign expXmY_uid47_fpDivTest_q = expXmY_uid47_fpDivTest_o[8:0]; + + // redist11_expXmY_uid47_fpDivTest_q_13_wraddr(REG,188) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist11_expXmY_uid47_fpDivTest_q_13_wraddr_q <= 4'b1001; + end + else + begin + redist11_expXmY_uid47_fpDivTest_q_13_wraddr_q <= redist11_expXmY_uid47_fpDivTest_q_13_rdmux_q; + end + end + + // redist11_expXmY_uid47_fpDivTest_q_13_mem(DUALMEM,185) + assign redist11_expXmY_uid47_fpDivTest_q_13_mem_ia = expXmY_uid47_fpDivTest_q; + assign redist11_expXmY_uid47_fpDivTest_q_13_mem_aa = redist11_expXmY_uid47_fpDivTest_q_13_wraddr_q; + assign redist11_expXmY_uid47_fpDivTest_q_13_mem_ab = redist11_expXmY_uid47_fpDivTest_q_13_rdmux_q; + assign redist11_expXmY_uid47_fpDivTest_q_13_mem_reset0 = areset; + altera_syncram #( + .ram_block_type("MLAB"), + .operation_mode("DUAL_PORT"), + .width_a(9), + .widthad_a(4), + .numwords_a(10), + .width_b(9), + .widthad_b(4), + .numwords_b(10), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .address_reg_b("CLOCK0"), + .indata_reg_b("CLOCK0"), + .rdcontrol_reg_b("CLOCK0"), + .byteena_reg_b("CLOCK0"), + .outdata_reg_b("CLOCK1"), + .outdata_aclr_b("CLEAR1"), + .clock_enable_input_a("NORMAL"), + .clock_enable_input_b("NORMAL"), + .clock_enable_output_b("NORMAL"), + .read_during_write_mode_mixed_ports("DONT_CARE"), + .power_up_uninitialized("TRUE"), + .intended_device_family("Arria 10") + ) redist11_expXmY_uid47_fpDivTest_q_13_mem_dmem ( + .clocken1(redist11_expXmY_uid47_fpDivTest_q_13_enaAnd_q[0]), + .clocken0(VCC_q[0]), + .clock0(clk), + .aclr1(redist11_expXmY_uid47_fpDivTest_q_13_mem_reset0), + .clock1(clk), + .address_a(redist11_expXmY_uid47_fpDivTest_q_13_mem_aa), + .data_a(redist11_expXmY_uid47_fpDivTest_q_13_mem_ia), + .wren_a(en[0]), + .address_b(redist11_expXmY_uid47_fpDivTest_q_13_mem_ab), + .q_b(redist11_expXmY_uid47_fpDivTest_q_13_mem_iq), + .wren_b(), + .rden_a(), + .rden_b(), + .data_b(), + .clocken2(), + .clocken3(), + .aclr0(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_a(), + .eccstatus() + ); + assign redist11_expXmY_uid47_fpDivTest_q_13_mem_q = redist11_expXmY_uid47_fpDivTest_q_13_mem_iq[8:0]; + + // redist11_expXmY_uid47_fpDivTest_q_13_outputreg(DELAY,184) + dspba_delay_ver #( .width(9), .depth(1), .reset_kind("ASYNC") ) + redist11_expXmY_uid47_fpDivTest_q_13_outputreg ( .xin(redist11_expXmY_uid47_fpDivTest_q_13_mem_q), .xout(redist11_expXmY_uid47_fpDivTest_q_13_outputreg_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expR_uid48_fpDivTest(ADD,47)@13 + 1 + assign expR_uid48_fpDivTest_a = {{2{redist11_expXmY_uid47_fpDivTest_q_13_outputreg_q[8]}}, redist11_expXmY_uid47_fpDivTest_q_13_outputreg_q}; + assign expR_uid48_fpDivTest_b = {3'b000, cstBiasM1_uid6_fpDivTest_q}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + expR_uid48_fpDivTest_o <= 11'b0; + end + else if (en == 1'b1) + begin + expR_uid48_fpDivTest_o <= $signed(expR_uid48_fpDivTest_a) + $signed(expR_uid48_fpDivTest_b); + end + end + assign expR_uid48_fpDivTest_q = expR_uid48_fpDivTest_o[9:0]; + + // divValPreNormHigh_uid68_fpDivTest(BITSELECT,67)@13 + assign divValPreNormHigh_uid68_fpDivTest_in = divValPreNormTrunc_uid66_fpDivTest_q[24:0]; + assign divValPreNormHigh_uid68_fpDivTest_b = divValPreNormHigh_uid68_fpDivTest_in[24:1]; + + // divValPreNormLow_uid69_fpDivTest(BITSELECT,68)@13 + assign divValPreNormLow_uid69_fpDivTest_in = divValPreNormTrunc_uid66_fpDivTest_q[23:0]; + assign divValPreNormLow_uid69_fpDivTest_b = divValPreNormLow_uid69_fpDivTest_in[23:0]; + + // normFracRnd_uid70_fpDivTest(MUX,69)@13 + 1 + assign normFracRnd_uid70_fpDivTest_s = norm_uid67_fpDivTest_b; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + normFracRnd_uid70_fpDivTest_q <= 24'b0; + end + else if (en == 1'b1) + begin + unique case (normFracRnd_uid70_fpDivTest_s) + 1'b0 : normFracRnd_uid70_fpDivTest_q <= divValPreNormLow_uid69_fpDivTest_b; + 1'b1 : normFracRnd_uid70_fpDivTest_q <= divValPreNormHigh_uid68_fpDivTest_b; + default : normFracRnd_uid70_fpDivTest_q <= 24'b0; + endcase + end + end + + // expFracRnd_uid71_fpDivTest(BITJOIN,70)@14 + assign expFracRnd_uid71_fpDivTest_q = {expR_uid48_fpDivTest_q, normFracRnd_uid70_fpDivTest_q}; + + // expFracPostRnd_uid76_fpDivTest(ADD,75)@14 + 1 + assign expFracPostRnd_uid76_fpDivTest_a = {{2{expFracRnd_uid71_fpDivTest_q[33]}}, expFracRnd_uid71_fpDivTest_q}; + assign expFracPostRnd_uid76_fpDivTest_b = {11'b00000000000, rndOp_uid75_fpDivTest_q}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + expFracPostRnd_uid76_fpDivTest_o <= 36'b0; + end + else if (en == 1'b1) + begin + expFracPostRnd_uid76_fpDivTest_o <= $signed(expFracPostRnd_uid76_fpDivTest_a) + $signed(expFracPostRnd_uid76_fpDivTest_b); + end + end + assign expFracPostRnd_uid76_fpDivTest_q = expFracPostRnd_uid76_fpDivTest_o[34:0]; + + // excRPreExc_uid79_fpDivTest(BITSELECT,78)@15 + assign excRPreExc_uid79_fpDivTest_in = expFracPostRnd_uid76_fpDivTest_q[31:0]; + assign excRPreExc_uid79_fpDivTest_b = excRPreExc_uid79_fpDivTest_in[31:24]; + + // redist2_excRPreExc_uid79_fpDivTest_b_1(DELAY,154) + dspba_delay_ver #( .width(8), .depth(1), .reset_kind("ASYNC") ) + redist2_excRPreExc_uid79_fpDivTest_b_1 ( .xin(excRPreExc_uid79_fpDivTest_b), .xout(redist2_excRPreExc_uid79_fpDivTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // invExpXIsMax_uid43_fpDivTest(LOGICAL,42)@15 + assign invExpXIsMax_uid43_fpDivTest_q = ~ (redist14_expXIsMax_uid38_fpDivTest_q_15_q); + + // InvExpXIsZero_uid44_fpDivTest(LOGICAL,43)@15 + assign InvExpXIsZero_uid44_fpDivTest_q = ~ (redist15_excZ_y_uid37_fpDivTest_q_15_q); + + // excR_y_uid45_fpDivTest(LOGICAL,44)@15 + assign excR_y_uid45_fpDivTest_q = InvExpXIsZero_uid44_fpDivTest_q & invExpXIsMax_uid43_fpDivTest_q; + + // excXIYR_uid93_fpDivTest(LOGICAL,92)@15 + assign excXIYR_uid93_fpDivTest_q = excI_x_uid27_fpDivTest_q & excR_y_uid45_fpDivTest_q; + + // excXIYZ_uid92_fpDivTest(LOGICAL,91)@15 + assign excXIYZ_uid92_fpDivTest_q = excI_x_uid27_fpDivTest_q & redist15_excZ_y_uid37_fpDivTest_q_15_q; + + // expRExt_uid80_fpDivTest(BITSELECT,79)@15 + assign expRExt_uid80_fpDivTest_b = expFracPostRnd_uid76_fpDivTest_q[34:24]; + + // expOvf_uid84_fpDivTest(COMPARE,83)@15 + assign expOvf_uid84_fpDivTest_a = {{2{expRExt_uid80_fpDivTest_b[10]}}, expRExt_uid80_fpDivTest_b}; + assign expOvf_uid84_fpDivTest_b = {5'b00000, cstAllOWE_uid18_fpDivTest_q}; + assign expOvf_uid84_fpDivTest_o = $signed(expOvf_uid84_fpDivTest_a) - $signed(expOvf_uid84_fpDivTest_b); + assign expOvf_uid84_fpDivTest_n[0] = ~ (expOvf_uid84_fpDivTest_o[12]); + + // invExpXIsMax_uid29_fpDivTest(LOGICAL,28)@15 + assign invExpXIsMax_uid29_fpDivTest_q = ~ (redist17_expXIsMax_uid24_fpDivTest_q_15_q); + + // InvExpXIsZero_uid30_fpDivTest(LOGICAL,29)@15 + assign InvExpXIsZero_uid30_fpDivTest_q = ~ (redist18_excZ_x_uid23_fpDivTest_q_15_q); + + // excR_x_uid31_fpDivTest(LOGICAL,30)@15 + assign excR_x_uid31_fpDivTest_q = InvExpXIsZero_uid30_fpDivTest_q & invExpXIsMax_uid29_fpDivTest_q; + + // excXRYROvf_uid91_fpDivTest(LOGICAL,90)@15 + assign excXRYROvf_uid91_fpDivTest_q = excR_x_uid31_fpDivTest_q & excR_y_uid45_fpDivTest_q & expOvf_uid84_fpDivTest_n; + + // excXRYZ_uid90_fpDivTest(LOGICAL,89)@15 + assign excXRYZ_uid90_fpDivTest_q = excR_x_uid31_fpDivTest_q & redist15_excZ_y_uid37_fpDivTest_q_15_q; + + // excRInf_uid94_fpDivTest(LOGICAL,93)@15 + 1 + assign excRInf_uid94_fpDivTest_qi = excXRYZ_uid90_fpDivTest_q | excXRYROvf_uid91_fpDivTest_q | excXIYZ_uid92_fpDivTest_q | excXIYR_uid93_fpDivTest_q; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excRInf_uid94_fpDivTest_delay ( .xin(excRInf_uid94_fpDivTest_qi), .xout(excRInf_uid94_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // xRegOrZero_uid87_fpDivTest(LOGICAL,86)@15 + assign xRegOrZero_uid87_fpDivTest_q = excR_x_uid31_fpDivTest_q | redist18_excZ_x_uid23_fpDivTest_q_15_q; + + // regOrZeroOverInf_uid88_fpDivTest(LOGICAL,87)@15 + assign regOrZeroOverInf_uid88_fpDivTest_q = xRegOrZero_uid87_fpDivTest_q & excI_y_uid41_fpDivTest_q; + + // expUdf_uid81_fpDivTest(COMPARE,80)@15 + assign expUdf_uid81_fpDivTest_a = {12'b000000000000, GND_q}; + assign expUdf_uid81_fpDivTest_b = {{2{expRExt_uid80_fpDivTest_b[10]}}, expRExt_uid80_fpDivTest_b}; + assign expUdf_uid81_fpDivTest_o = $signed(expUdf_uid81_fpDivTest_a) - $signed(expUdf_uid81_fpDivTest_b); + assign expUdf_uid81_fpDivTest_n[0] = ~ (expUdf_uid81_fpDivTest_o[12]); + + // regOverRegWithUf_uid86_fpDivTest(LOGICAL,85)@15 + assign regOverRegWithUf_uid86_fpDivTest_q = expUdf_uid81_fpDivTest_n & excR_x_uid31_fpDivTest_q & excR_y_uid45_fpDivTest_q; + + // zeroOverReg_uid85_fpDivTest(LOGICAL,84)@15 + assign zeroOverReg_uid85_fpDivTest_q = redist18_excZ_x_uid23_fpDivTest_q_15_q & excR_y_uid45_fpDivTest_q; + + // excRZero_uid89_fpDivTest(LOGICAL,88)@15 + 1 + assign excRZero_uid89_fpDivTest_qi = zeroOverReg_uid85_fpDivTest_q | regOverRegWithUf_uid86_fpDivTest_q | regOrZeroOverInf_uid88_fpDivTest_q; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excRZero_uid89_fpDivTest_delay ( .xin(excRZero_uid89_fpDivTest_qi), .xout(excRZero_uid89_fpDivTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // concExc_uid98_fpDivTest(BITJOIN,97)@16 + assign concExc_uid98_fpDivTest_q = {excRNaN_uid97_fpDivTest_q, excRInf_uid94_fpDivTest_q, excRZero_uid89_fpDivTest_q}; + + // excREnc_uid99_fpDivTest(LOOKUP,98)@16 + always @(concExc_uid98_fpDivTest_q) + begin + // Begin reserved scope level + unique case (concExc_uid98_fpDivTest_q) + 3'b000 : excREnc_uid99_fpDivTest_q = 2'b01; + 3'b001 : excREnc_uid99_fpDivTest_q = 2'b00; + 3'b010 : excREnc_uid99_fpDivTest_q = 2'b10; + 3'b011 : excREnc_uid99_fpDivTest_q = 2'b00; + 3'b100 : excREnc_uid99_fpDivTest_q = 2'b11; + 3'b101 : excREnc_uid99_fpDivTest_q = 2'b00; + 3'b110 : excREnc_uid99_fpDivTest_q = 2'b00; + 3'b111 : excREnc_uid99_fpDivTest_q = 2'b00; + default : begin + // unreachable + excREnc_uid99_fpDivTest_q = 2'bxx; + end + endcase + // End reserved scope level + end + + // expRPostExc_uid107_fpDivTest(MUX,106)@16 + assign expRPostExc_uid107_fpDivTest_s = excREnc_uid99_fpDivTest_q; + always @(expRPostExc_uid107_fpDivTest_s or en or cstAllZWE_uid20_fpDivTest_q or redist2_excRPreExc_uid79_fpDivTest_b_1_q or cstAllOWE_uid18_fpDivTest_q) + begin + unique case (expRPostExc_uid107_fpDivTest_s) + 2'b00 : expRPostExc_uid107_fpDivTest_q = cstAllZWE_uid20_fpDivTest_q; + 2'b01 : expRPostExc_uid107_fpDivTest_q = redist2_excRPreExc_uid79_fpDivTest_b_1_q; + 2'b10 : expRPostExc_uid107_fpDivTest_q = cstAllOWE_uid18_fpDivTest_q; + 2'b11 : expRPostExc_uid107_fpDivTest_q = cstAllOWE_uid18_fpDivTest_q; + default : expRPostExc_uid107_fpDivTest_q = 8'b0; + endcase + end + + // oneFracRPostExc2_uid100_fpDivTest(CONSTANT,99) + assign oneFracRPostExc2_uid100_fpDivTest_q = 23'b00000000000000000000001; + + // fracRPreExc_uid78_fpDivTest(BITSELECT,77)@15 + assign fracRPreExc_uid78_fpDivTest_in = expFracPostRnd_uid76_fpDivTest_q[23:0]; + assign fracRPreExc_uid78_fpDivTest_b = fracRPreExc_uid78_fpDivTest_in[23:1]; + + // redist3_fracRPreExc_uid78_fpDivTest_b_1(DELAY,155) + dspba_delay_ver #( .width(23), .depth(1), .reset_kind("ASYNC") ) + redist3_fracRPreExc_uid78_fpDivTest_b_1 ( .xin(fracRPreExc_uid78_fpDivTest_b), .xout(redist3_fracRPreExc_uid78_fpDivTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // fracRPostExc_uid103_fpDivTest(MUX,102)@16 + assign fracRPostExc_uid103_fpDivTest_s = excREnc_uid99_fpDivTest_q; + always @(fracRPostExc_uid103_fpDivTest_s or en or paddingY_uid15_fpDivTest_q or redist3_fracRPreExc_uid78_fpDivTest_b_1_q or oneFracRPostExc2_uid100_fpDivTest_q) + begin + unique case (fracRPostExc_uid103_fpDivTest_s) + 2'b00 : fracRPostExc_uid103_fpDivTest_q = paddingY_uid15_fpDivTest_q; + 2'b01 : fracRPostExc_uid103_fpDivTest_q = redist3_fracRPreExc_uid78_fpDivTest_b_1_q; + 2'b10 : fracRPostExc_uid103_fpDivTest_q = paddingY_uid15_fpDivTest_q; + 2'b11 : fracRPostExc_uid103_fpDivTest_q = oneFracRPostExc2_uid100_fpDivTest_q; + default : fracRPostExc_uid103_fpDivTest_q = 23'b0; + endcase + end + + // divR_uid110_fpDivTest(BITJOIN,109)@16 + assign divR_uid110_fpDivTest_q = {sRPostExc_uid109_fpDivTest_q, expRPostExc_uid107_fpDivTest_q, fracRPostExc_uid103_fpDivTest_q}; + + // xOut(GPOUT,4)@16 + assign q = divR_uid110_fpDivTest_q; + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_div_memoryC0_uid112_invTables_lutmem.hex b/hw/rtl/fp_cores/altera/acl_fp_div_memoryC0_uid112_invTables_lutmem.hex new file mode 100644 index 00000000..fdcd40d6 --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_div_memoryC0_uid112_invTables_lutmem.hex @@ -0,0 +1,514 @@ +:020000040000FA +:0400000020000004D8 +:040001001FF00800E4 +:040002001FE01FE4F8 +:040003001FD047992A +:040004001FC07F0694 +:040005001FB0C6154D +:040006001FA11CAE6C +:040007001F9182BA09 +:040008001F81F82339 +:040009001F727CD214 +:04000A001F6310B1AF +:04000B001F53B3A824 +:04000C001F4465A286 +:04000D001F352689EC +:04000E001F25F6486C +:04000F001F16D4C81C +:040010001F07C1F411 +:040011001EF8BDB761 +:040012001EE9C7FC20 +:040013001EDAE0AE63 +:040014001ECC07B740 +:040015001EBD3D03CC +:040016001EAE807F1B +:040017001E9FD21442 +:040018001E9131B054 +:040019001E829F3E66 +:04001A001E741AA98D +:04001B001E65A3E0DB +:04001C001E573ACD64 +:04001D001E48DF5D3D +:04001E001E3A917E77 +:04001F001E2C511B27 +:040020001E1E1E2260 +:040021001E0FF88036 +:040022001E01E022B9 +:040023001DF3D4F500 +:040024001DE5D6E818 +:040025001DD7E5E717 +:040026001DCA01E10D +:040027001DBC2AC210 +:040028001DAE607B2E +:040029001DA0A2F77D +:04002A001D92F2270A +:04002B001D854DF8EA +:04002C001D77B6592D +:04002D001D6A2B38E5 +:04002E001D5CAC8425 +:04002F001D4F3A2DFA +:040030001D41D42179 +:040031001D347A50B0 +:040032001D272CA8B2 +:040033001D19EB198F +:040034001D0CB59357 +:040035001CFF8C061A +:040036001CF26E60EA +:040037001CE55C93D5 +:040038001CD8568DED +:040039001CCB5C3F41 +:04003A001CBE6D9AE1 +:04003B001CB18A8DDD +:04003C001CA4B30944 +:04003D001C97E6FF27 +:04003E001C8B265F92 +:04003F001C7E711A98 +:040040001C71C72048 +:040041001C652864AE +:040042001C5894D5DD +:040043001C4C0C65E0 +:040044001C3F8F06C8 +:040045001C331CA8A4 +:040046001C26B53D82 +:040047001C1A58B770 +:040048001C0E07077C +:040049001C01C020B6 +:04004A001BF583F22D +:04004B001BE95271EA +:04004C001BDD2B8EFF +:04004D001BD10F3A7A +:04004E001BC4FD6969 +:04004F001BB8F60DD7 +:040050001BACF919D3 +:040051001BA1067E6B +:040052001B951E2FAD +:040053001B89401FA6 +:040054001B7D6C4262 +:040055001B71A289F0 +:040056001B65E2E85C +:040057001B5A2D51B2 +:040058001B4E81B901 +:040059001B42E01254 +:04005A001B37484FB9 +:04005B001B2BBA643D +:04005C001B203644EB +:04005D001B14BBE4D1 +:04005E001B094B36F9 +:04005F001AFDE42E74 +:040060001AF286C149 +:040061001AE732E187 +:040062001ADBE88439 +:040063001AD0A79C6C +:040064001AC5701F2A +:040065001ABA420081 +:040066001AAF1D337D +:040067001AA401AE28 +:040068001A98EF648F +:040069001A8DE64ABC +:04006A001A82E655BB +:04006B001A77EF7998 +:04006C001A6D01AB5D +:04006D001A621CDF18 +:04006E001A57410BD1 +:04006F001A4C6E2495 +:040070001A41A41E6F +:040071001A36E2EF6A +:040072001A2C2A8C8E +:040073001A217AE9EB +:040074001A16D3FD88 +:040075001A0C35BD6F +:040076001A01A01EAD +:0400770019F713154D +:0400780019EC8E9958 +:0400790019E2129ED8 +:04007A0019D79F1BD8 +:04007B0019CD340661 +:04007C0019C2D15381 +:04007D0019B876F93F +:04007E0019AE24EEA5 +:04007F0019A3DB28BE +:040080001999999E93 +:04008100198F60442F +:0400820019852F129B +:04008300197B05FDE3 +:040084001970E4FC0F +:040085001966CC0626 +:04008600195CBB1036 +:040087001952B21147 +:040088001948B10161 +:04008900193EB7D590 +:04008A001934C684DB +:04008B00192ADD044D +:04008C001920FB4EEE +:04008D0019172157C7 +:04008E00190D4F16E3 +:04008F00190384834A +:0400900018F9C19406 +:0400910018F006401D +:0400920018E6527F9B +:0400930018DCA64887 +:0400940018D30191EB +:0400950018C96453CF +:0400960018BFCE843D +:0400970018B6401D3A +:0400980018ACB913D4 +:0400990018A339600F +:04009A001899C0FAF7 +:04009B0018904FD991 +:04009C001886E5F5E8 +:04009D00187D834502 +:04009E00187427C1EA +:04009F00186AD361A7 +:0400A0001861861C41 +:0400A10018583FECC0 +:0400A200184F00C62D +:0400A3001845C8A58F +:0400A400183C977FEE +:0400A50018336D4C53 +:0400A600182A4A05C5 +:0400A70018212DA34C +:0400A8001818181CF0 +:0400A900180F096AB9 +:0400AA0018060184AF +:0400AB0017FD0064D9 +:0400AC0017F406013E +:0400AD0017EB1254E7 +:0400AE0017E22555DB +:0400AF0017D93EFE21 +:0400B00017D05F45C1 +:0400B10017C78625C2 +:0400B20017BEB3962C +:0400B30017B5E79006 +:0400B40017AD220D55 +:0400B50017A4630425 +:0400B600179BAA707A +:0400B7001792F8485C +:0400B800178A4C85D2 +:0400B9001781A722E2 +:0400BA001779081694 +:0400BB0017706F5AF1 +:0400BC001767DCE8FE +:0400BD00175F50B9C0 +:0400BE001756CAC641 +:0400BF00174E4B0885 +:0400C0001745D17897 +:0400C100173D5E1079 +:0400C2001734F0C936 +:0400C300172C899CD1 +:0400C4001724288352 +:0400C500171BCD77C1 +:0400C6001713787222 +:0400C700170B296C7E +:0400C8001702E060DB +:0400C90016FA9D473F +:0400CA0016F2601BAF +:0400CB0016EA28D534 +:0400CC0016E1F76FD3 +:0400CD0016D9CBE392 +:0400CE0016D1A62A77 +:0400CF0016C9863F89 +:0400D00016C16C1BCE +:0400D10016B957B74E +:0400D20016B1490F0B +:0400D30016A9401B0F +:0400D40016A13CD560 +:0400D50016993F3900 +:0400D6001691473FF9 +:0400D700168954E151 +:0400D8001681681A0B +:0400D900167980E52F +:0400DA0016719F3AC2 +:0400DB001669C314CB +:0400DC001661EC6E4F +:0400DD00165A1B4252 +:0400DE0016524F89DE +:0400DF00164A893FF5 +:0400E0001642C85D9F +:0400E100163B0CDEE0 +:0400E200163356BDBE +:0400E300162BA5F340 +:0400E4001623FA7B6A +:0400E500161C545041 +:0400E6001614B36CCD +:0400E700160D17CA11 +:0400E8001605816414 +:0400E90015FDF035DC +:0400EA0015F664386B +:0400EB0015EEDD67CA +:0400EC0015E75BBDFC +:0400ED0015DFDF3408 +:0400EE0015D867C8F2 +:0400EF0015D0F573C0 +:0400F00015C9883076 +:0400F10015C21FF91C +:0400F20015BABCCAB5 +:0400F30015B35E9E45 +:0400F40015AC056FD3 +:0400F50015A4B13865 +:0400F600159D61F5FE +:0400F700159617A0A3 +:0400F800158ED2345B +:0400F900158791AD29 +:0400FA001580560512 +:0400FB0015791F381C +:0400FC001571ED404D +:0400FD00156AC019A7 +:0400FE00156397BE31 +:0400FF00155C742BED +:0401000015555559E3 +:04010100154E3B4616 +:04010200154725EB8D +:04010300154015444A +:040104001539094D53 +:0401050015320201AC +:04010600152AFF5B5C +:040107001524015664 +:04010800151D07EFCB +:040109001516132094 +:04010A00150F22E5C6 +:04010B001508373A62 +:04010C001501501970 +:04010D0014FA6D7FF4 +:04010E0014F38F67F0 +:04010F0014ECB5CC6B +:0401100014E5E0AB67 +:0401110014DF0FFFE9 +:0401120014D843C3F7 +:0401130014D17BF395 +:0401140014CAB88BC6 +:0401150014C3F9878F +:0401160014BD3EE2F4 +:0401170014B68898FA +:0401180014AFD6A4A6 +:0401190014A92904F8 +:04011A0014A27FB1FB +:04011B00149BDAA9AE +:04011C00149539E815 +:04011D00148E9D6837 +:04011E001488052616 +:04011F001481711EB8 +:04012000147AE14C20 +:04012100147455AB52 +:04012200146DCE3852 +:0401230014674AEF24 +:040124001460CBCCCC +:04012500145A50CA4E +:040126001453D9E7AE +:04012700144D671DEF +:040128001446F86918 +:0401290014408DC829 +:04012A00143A273527 +:04012B001433C4AC19 +:04012C00142D662AFE +:04012D0014270BABDD +:04012E001420B52ABA +:04012F00141A62A597 +:040130001414141877 +:04013100140DC97E62 +:04013200140782D557 +:04013300140140185B +:0401340013FB014474 +:0401350013F4C654A5 +:0401360013EE8F47EE +:0401370013E85C1756 +:0401380013E22CC1E1 +:0401390013DC014290 +:04013A0013D5D9966A +:04013B0013CFB5B970 +:04013C0013C995A8A6 +:04013D0013C379600F +:04013E0013BD60DDB0 +:04013F0013B74C1B8B +:0401400013B13B18A4 +:0401410013AB2DCF00 +:0401420013A5243CA1 +:04014300139F1E5E8A +:0401440013991C30BF +:0401450013931DAF44 +:04014600138D22D71C +:0401470013872BA649 +:0401480013813817D0 +:04014900137B4829B3 +:04014A0013755BD6F8 +:04014B00136F731C9F +:04014C0013698DF8AE +:04014D001363AC6626 +:04014E00135DCE640B +:04014F001357F3ED62 +:0401500013521CFF2B +:04015100134C49976B +:04015200134679B126 +:040153001340AD4A5E +:04015400133AE45F17 +:0401550013351EED53 +:04015600132F5CF116 +:0401570013299E6862 +:040158001323E34E3C +:04015900131E2BA1A5 +:04015A001318775DA2 +:04015B001312C67F36 +:04015C00130D190561 +:04015D0013076EEB2B +:04015E001301C82F92 +:04015F0012FC24CD9D +:0401600012F684C24D +:0401610012F0E80BA5 +:0401620012EB4EA6A8 +:0401630012E5B88F5A +:0401640012E025C4BC +:0401650012DA9642D2 +:0401660012D50A059F +:0401670012CF810B27 +:0401680012C9FB516C +:0401690012C478D56F +:04016A0012BEF99236 +:04016B0012B97D87C1 +:04016C0012B404B114 +:04016D0012AE8F0C33 +:04016E0012A91C971F +:04016F0012A3AD4EDC +:04017000129E412E6C +:040171001298D835D3 +:040172001293726012 +:04017300128E0FAC2D +:040174001288B01726 +:040175001283539D01 +:04017600127DFA3DBF +:040177001278A3F364 +:04017800127350BCF2 +:04017900126E00976B +:04017A001268B381D3 +:04017B00126369762C +:04017C00125E227479 +:04017D001258DE7ABC +:04017E0012539D83F8 +:04017F00124E5F8D30 +:040180001249249666 +:040181001243EC9C9D +:04018200123EB79BD7 +:040183001239859216 +:040184001234567D5E +:04018500122F2A5AB1 +:04018600122A012711 +:040187001224DAE183 +:04018800121FB78506 +:04018900121A97129D +:04018A00121579844D +:04018B0012105EDA16 +:04018C00120B4710FB +:04018D0012063225FF +:04018E001201201624 +:04018F0011FC10E06F +:0401900011F70482DD +:0401910011F1FAF876 +:0401920011ECF44038 +:0401930011E7F05927 +:0401940011E2EF3F46 +:0401950011DDF0F197 +:0401960011D8F56B1C +:0401970011D3FCACD8 +:0401980011CF06B2CB +:0401990011CA1379FB +:04019A0011C5230068 +:04019B0011C0354515 +:04019C0011BB4A4405 +:04019D0011B661FD39 +:04019E0011B17C6CB3 +:04019F0011AC998F77 +:0401A00011A7B96585 +:0401A10011A2DBEBE1 +:0401A200119E011E8B +:0401A300119928FD89 +:0401A40011945385DA +:0401A500118F80B482 +:0401A600118AB08882 +:0401A7001185E2FEDE +:0401A8001181181594 +:0401A900117C4FCBAB +:0401AA0011778A1D22 +:0401AB001172C709FD +:0401AC00116E068D3D +:0401AD00116948A7E5 +:0401AE0011648D55F6 +:0401AF00115FD49474 +:0401B000115B1E635E +:0401B10011566AC0B9 +:0401B2001151B9A886 +:0401B300114D0B19C6 +:0401B40011485F127D +:0401B5001143B590AD +:0401B600113F0E9156 +:0401B700113A6A147B +:0401B8001135C81520 +:0401B9001131289444 +:0401BA00112C8B8EEB +:0401BB001127F10116 +:0401BC00112358EBC8 +:0401BD00111EC34B01 +:0401BE00111A301EC4 +:0401BF0011159F6215 +:0401C00011111115F3 +:0401C100110C853662 +:0401C2001107FBC264 +:0401C300110374B8F8 +:0401C40010FEF01524 +:0401C50010FA6DD8E7 +:0401C60010F5EDFF44 +:0401C70010F170873C +:0401C80010ECF570D2 +:0401C90010E87CB707 +:0401CA0010E40659DE +:0401CB0010DF925758 +:0401CC0010DB20AD77 +:0401CD0010D6B1593E +:0401CE0010D2445AAD +:0401CF0010CDD9AEC8 +:0401D00010C971548D +:0401D10010C50B4802 +:0401D20010C0A78B27 +:0401D30010BC4618FE +:0401D40010B7E6F08A +:0401D50010B38A10C9 +:0401D60010AF2F76C1 +:0401D70010AAD72172 +:0401D80010A6810EDE +:0401D90010A22D3D06 +:0401DA00109DDBABEE +:0401DB0010998C5695 +:0401DC0010953F3DFE +:0401DD001090F45E2C +:0401DE00108CABB71F +:0401DF0010886547D8 +:0401E0001084210C5A +:0401E100107FDF04A8 +:0401E200107B9F2EC1 +:0401E30010776187A9 +:0401E4001073260E60 +:0401E500106EECC2EA +:0401E600106AB5A046 +:0401E700106680A876 +:0401E80010624DD77D +:0401E900105E1D2C5B +:0401EA001059EEA416 +:0401EB001055C240A9 +:0401EC00105197FC1B +:0401ED00104D6FD76B +:0401EE00104949D09B +:0401EF00104525E5AD +:0401F00010410414A2 +:0401F100103CE45C7E +:0401F2001038C6BC3F +:0401F3001034AB30E9 +:0401F400103091B97D +:0401F500102C7A54FC +:0401F6001028650068 +:0401F700102451BCC3 +:0401F800102040850E +:0401F900101C315A4B +:0401FA001018243A7B +:0401FB0010141923A0 +:0401FC0010101014BB +:0401FD00100C090BCE +:0401FE0010080406DB +:0401FF0010040104E3 +:00000001ff diff --git a/hw/rtl/fp_cores/altera/acl_fp_div_memoryC1_uid115_invTables_lutmem.hex b/hw/rtl/fp_cores/altera/acl_fp_div_memoryC1_uid115_invTables_lutmem.hex new file mode 100644 index 00000000..7578e58b --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_div_memoryC1_uid115_invTables_lutmem.hex @@ -0,0 +1,514 @@ +:020000040000FA +:03000000100002EB +:03000100100FF6E7 +:03000200101FD2FA +:03000300102F9526 +:03000400103F4466 +:03000500104ED9C1 +:03000600105E5831 +:03000700106DC1B8 +:03000800107D1454 +:03000900108C4D0B +:03000A00109B6FD9 +:03000B0010AA7FB9 +:03000C0010B977B1 +:03000D0010C85BBD +:03000E0010D726E2 +:03000F0010E5DC1D +:0300100010F47E6B +:0300110011030CCC +:0300120011118148 +:03001300111FE1D9 +:03001400112E2F7B +:03001500113C6A31 +:03001600114A8DFF +:0300170011589FDE +:03001800116699D5 +:03001900117480DF +:03001A00118258F8 +:03001B001190162B +:03001C00119DC370 +:03001D0011AB5FC5 +:03001E0011B8E333 +:03001F0011C657B0 +:0300200011D3B841 +:0300210011E105E5 +:0300220011EE3F9D +:0300230011FB6965 +:0300240012087D42 +:0300250012158130 +:0300260012227033 +:03002700122F5342 +:03002800123C1D6A +:030029001248DD9D +:03002A00125585E7 +:03002B0012621D41 +:03002C00126EA3AE +:03002D00127B192A +:03002E00128781B5 +:03002F001293D455 +:0300300012A01605 +:0300310012AC47C7 +:0300320012B86A97 +:0300330012C47C78 +:0300340012D07C6B +:0300350012DC6A70 +:0300360012E84B82 +:0300370012F419A7 +:0300380012FFDBD9 +:03003900130B8C1A +:03003A0013172B6E +:03003B001322BDD0 +:03003C00132E3E42 +:03003D001339AFC5 +:03003E0013451156 +:03003F00135063F8 +:03004000135BAAA5 +:030041001366DD66 +:0300420013720531 +:03004300137D1D0D +:03004400138824FA +:0300450013931FF3 +:03004600139E0CFA +:0300470013A8E813 +:0300480013B3BA35 +:0300490013BE786B +:03004A0013C92EA9 +:03004B0013D3D0FC +:03004C0013DE6759 +:03004D0013E8F2C3 +:03004E0013F36E3B +:03004F0013FDDDC1 +:0300500014083A57 +:0300510014128EF8 +:03005200141CD4A7 +:0300530014270E61 +:030054001431372D +:03005500143B5603 +:03005600144567E7 +:03005700144F6DD6 +:03005800145962D6 +:0300590014634DE0 +:03005A00146D2CF6 +:03005B001476FD1B +:03005C001480C449 +:03005D00148A7B87 +:03005E00149428CF +:03005F00149DC825 +:0300600014A75B87 +:0300610014B0E4F4 +:0300620014BA5F6E +:0300630014C3D1F2 +:0300640014CD3484 +:0300650014D68C22 +:0300660014DFDCC8 +:0300670014E91D7C +:0300680014F2523D +:0300690014FB7E07 +:03006A0015049BDF +:03006B00150DADC3 +:03006C001516B6B0 +:03006D00151FB5A7 +:03006E001528A7AB +:03006F0015318DBB +:03007000153A69D5 +:03007100154339FB +:03007200154BFE2D +:030073001554BE63 +:03007400155D6FA8 +:03007500156614F9 +:03007600156EAE56 +:03007700157742B8 +:03007800157FC62B +:03007900158846A1 +:03007A001590B727 +:03007B0015991DB7 +:03007C0015A17C4F +:03007D0015A9D1F1 +:03007E0015B21C9C +:03007F0015BA5B54 +:0300800015C28F17 +:0300810015CABBE2 +:0300820015D2DDB7 +:0300830015DAF794 +:0300840015E3067B +:0300850015EB0B6D +:0300860015F30768 +:0300870015FAFC6B +:030088001602E37A +:03008900160AC292 +:03008A00161298B3 +:03008B00161A69D9 +:03008C0016222A0F +:03008D001629E54C +:03008E0016319890 +:03008F0016393FE0 +:030090001640DF38 +:0300910016487896 +:0300920016500500 +:0300930016578A73 +:03009400165F09EB +:0300950016667C70 +:03009600166DE8FC +:0300970016754893 +:03009800167CA52E +:030099001683F5D6 +:03009A00168B3F83 +:03009B0016927F3B +:03009C001699B6FC +:03009D0016A0E6C4 +:03009E0016A80F92 +:03009F0016AF2F6A +:0300A00016B64849 +:0300A10016BD5534 +:0300A20016C46021 +:0300A30016CB5D1C +:0300A40016D2551C +:0300A50016D94524 +:0300A60016E02F32 +:0300A70016E70C4D +:0300A80016EDE66C +:0300A90016F4B694 +:0300AA0016FB80C2 +:0300AB00170240F9 +:0300AC001708FA38 +:0300AD00170FAD7D +:0300AE00171657CB +:0300AF00171CF823 +:0300B0001723987B +:0300B100172A2CDF +:0300B2001730B94B +:0300B30017373EBE +:0300B400173DBC39 +:0300B500174434B9 +:0300B600174AA244 +:0300B70017510BD3 +:0300B80017577067 +:0300B900175DC808 +:0300BA0017641DAB +:0300BB00176A6C55 +:0300BC001770B208 +:0300BD001776F1C2 +:0300BE00177D2982 +:0300BF0017835B49 +:0300C00017898815 +:0300C100178FACEA +:0300C2001795C9C6 +:0300C300179BE1A7 +:0300C40017A1F091 +:0300C50017A7F981 +:0300C60017ADFB78 +:0300C70017B3F973 +:0300C80017B9F075 +:0300C90017BFDF7F +:0300CA0017C5C98E +:0300CB0017CBADA3 +:0300CC0017D18ABF +:0300CD0017D75FE3 +:0300CE0017DD3209 +:0300CF0017E2FA3B +:0300D00017E8BD71 +:0300D10017EE7CAB +:0300D20017F431EF +:0300D30017F9E436 +:0300D40017FF9182 +:0300D500180534D7 +:0300D600180AD431 +:0300D70018106F8F +:0300D800181605F2 +:0300D900181B9061 +:0300DA0018211AD0 +:0300DB0018269E46 +:0300DC00182C19C4 +:0300DD0018318F48 +:0300DE00183701CF +:0300DF00183C6B5F +:0300E0001841D1F3 +:0300E1001847318C +:0300E200184C892E +:0300E3001851DFD2 +:0300E4001857307A +:0300E500185C7A2A +:0300E6001861BFDF +:0300E7001866FE9A +:0300E800186C3958 +:0300E90018716D1E +:0300EA0018769BEA +:0300EB00187BC3BC +:0300EC001880E891 +:0300ED001886076B +:0300EE00188B204C +:0300EF0018903432 +:0300F0001895431D +:0300F100189A500A +:0300F200189F55FF +:0300F30018A453FB +:0300F40018A94FF9 +:0300F50018AE46FC +:0300F60018B33606 +:0300F70018B82115 +:0300F80018BD0A26 +:0300F90018C1EB40 +:0300FA0018C6C85D +:0300FB0018CB9F80 +:0300FC0018D074A5 +:0300FD0018D543D0 +:0300FE0018DA0B02 +:0300FF0018DECE3A +:0301000018E38F72 +:0301010018E848B3 +:0301020018ED00F5 +:0301030018F1B33D +:0301040018F65F8B +:0301050018FB06DE +:0301060018FFAB34 +:0301070019044C8C +:030108001908E6ED +:03010900190D7C51 +:03010A0019120DBA +:03010B0019169A28 +:03010C00191B2498 +:03010D00191FA80F +:03010E0019242889 +:03010F001928A507 +:03011000192D1B8B +:0301110019318C15 +:030112001935FBA1 +:03011300193A6630 +:03011400193ECBC6 +:0301150019432B60 +:03011600194787FF +:03011700194BE1A0 +:0301180019503843 +:03011900195486F0 +:03011A001958D79A +:03011B00195D1E4D +:03011C0019615F07 +:03011D001965A0C1 +:03011E001969DC80 +:03011F00196E1343 +:030120001972470A +:03012100197678D4 +:03012200197AA5A2 +:03012300197ECC76 +:030124001982EF4E +:0301250019871027 +:03012600198B2A08 +:03012700198F43EA +:03012800199358D0 +:03012900199766BD +:03012A00199B72AC +:03012B00199F7B9E +:03012C0019A37F95 +:03012D0019A7808F +:03012E0019AB808A +:03012F0019AF7A8B +:0301300019B36D93 +:0301310019B7619A +:0301320019BB4EA8 +:0301330019BF38B9 +:0301340019C31DCF +:0301350019C703E4 +:0301360019CAE003 +:0301370019CEBD21 +:0301380019D29643 +:0301390019D66A6A +:03013A0019DA3B94 +:03013B0019DE0BBF +:03013C0019E1D7EF +:03013D0019E59D24 +:03013E0019E9605C +:03013F0019ED1F98 +:0301400019F0D8DB +:0301410019F4911D +:0301420019F84B5E +:0301430019FBFBAA +:0301440019FFAAF6 +:030145001A035545 +:030146001A06FE98 +:030147001A0AA0F1 +:030148001A0E4547 +:030149001A11DEAA +:03014A001A157A09 +:03014B001A19126C +:03014C001A1CA6D4 +:03014D001A20373E +:03014E001A23C3AE +:03014F001A274F1D +:030150001A2AD692 +:030151001A2E590A +:030152001A31DA85 +:030153001A355901 +:030154001A38D581 +:030155001A3C4C05 +:030156001A3FC08D +:030157001A432F19 +:030158001A469EA6 +:030159001A4A0738 +:03015A001A4D70CB +:03015B001A50D760 +:03015C001A5438FA +:03015D001A579698 +:03015E001A5AF03A +:03015F001A5E48DD +:030160001A619F82 +:030161001A64F32A +:030162001A6843D5 +:030163001A6B9282 +:030164001A6EDB35 +:030165001A7221EA +:030166001A7567A0 +:030167001A78A95A +:030168001A7BE718 +:030169001A7F21D9 +:03016A001A825C9A +:03016B001A859161 +:03016C001A88C42A +:03016D001A8BF5F5 +:03016E001A8F21C4 +:03016F001A924B96 +:030170001A957469 +:030171001A989841 +:030172001A9BBB1A +:030173001A9EDBF6 +:030174001AA1F8D5 +:030175001AA513B5 +:030176001AA82A9A +:030177001AAB3F81 +:030178001AAE5666 +:030179001AB16454 +:03017A001AB46F45 +:03017B001AB77A36 +:03017C001ABA8527 +:03017D001ABD8523 +:03017E001AC0891B +:03017F001AC38B15 +:030180001AC68913 +:030181001AC98315 +:030182001ACC7B19 +:030183001ACF6F21 +:030184001AD26329 +:030185001AD55434 +:030186001AD84242 +:030187001ADB2E52 +:030188001ADE1A62 +:030189001AE10078 +:03018A001AE3E68F +:03018B001AE6C7AA +:03018C001AE9A8C5 +:03018D001AEC84E5 +:03018E001AEF5F06 +:03018F001AF2372A +:030190001AF50B52 +:030191001AF7DF7B +:030192001AFAB3A3 +:030193001AFD81D1 +:030194001B004D00 +:030195001B031633 +:030196001B05DF67 +:030197001B08A49E +:030198001B0B66D8 +:030199001B0E2812 +:03019A001B10E651 +:03019B001B13A291 +:03019C001B165DD2 +:03019D001B191417 +:03019E001B1BCA5E +:03019F001B1E7FA5 +:0301A0001B212EF2 +:0301A1001B23DB42 +:0301A2001B268891 +:0301A3001B2932E3 +:0301A4001B2BDA38 +:0301A5001B2E808E +:0301A6001B3125E5 +:0301A7001B33C93E +:0301A8001B36699A +:0301A9001B3905FA +:0301AA001B3BA05C +:0301AB001B3E3ABE +:0301AC001B40D124 +:0301AD001B43658C +:0301AE001B45F8F6 +:0301AF001B488A60 +:0301B0001B4B18CE +:0301B1001B4DA340 +:0301B2001B502EB1 +:0301B3001B52B725 +:0301B4001B553C9C +:0301B5001B57C015 +:0301B6001B5A428F +:0301B7001B5CC10D +:0301B8001B5F4189 +:0301B9001B61BD0A +:0301BA001B64378C +:0301BB001B66B010 +:0301BC001B692795 +:0301BD001B6B9920 +:0301BE001B6E0AAB +:0301BF001B707B37 +:0301C0001B72EAC5 +:0301C1001B755655 +:0301C2001B77C1E7 +:0301C3001B7A297B +:0301C4001B7C9110 +:0301C5001B7EF5A9 +:0301C6001B815842 +:0301C7001B83BADD +:0301C8001B86177C +:0301C9001B88731D +:0301CA001B8AD2BB +:0301CB001B8D2861 +:0301CC001B8F8006 +:0301CD001B91D8AB +:0301CE001B942D52 +:0301CF001B967EFE +:0301D0001B98CDAC +:0301D1001B9B1E57 +:0301D2001B9D670B +:0301D3001B9FB5BA +:0301D4001BA1FD6F +:0301D5001BA44424 +:0301D6001BA689DC +:0301D7001BA8CD95 +:0301D8001BAB104E +:0301D9001BAD4E0D +:0301DA001BAF8CCC +:0301DB001BB1C98C +:0301DC001BB4054C +:0301DD001BB63F0F +:0301DE001BB877D4 +:0301DF001BBAAD9B +:0301E0001BBCE065 +:0301E1001BBF122F +:0301E2001BC141FD +:0301E3001BC371CA +:0301E4001BC59F99 +:0301E5001BC7CA6B +:0301E6001BC9F53D +:0301E7001BCC1C12 +:0301E8001BCE41EA +:0301E9001BD065C3 +:0301EA001BD28C99 +:0301EB001BD4AB77 +:0301EC001BD6CC53 +:0301ED001BD8EB31 +:0301EE001BDB0810 +:0301EF001BDD23F2 +:0301F0001BDF3DD5 +:0301F1001BE156B9 +:0301F2001BE369A3 +:0301F3001BE58188 +:0301F4001BE79373 +:0301F5001BE9A65D +:0301F6001BEBB64A +:0301F7001BEDC23B +:0301F8001BEFD02A +:0301F9001BF1DD1A +:0301FA001BF3E70D +:0301FB001BF5EF02 +:0301FC001BF7F4FA +:0301FD001BF9F9F2 +:0301FE001BFBFEEA +:0301FF001BFE00E4 +:00000001ff diff --git a/hw/rtl/fp_cores/altera/acl_fp_div_memoryC2_uid118_invTables_lutmem.hex b/hw/rtl/fp_cores/altera/acl_fp_div_memoryC2_uid118_invTables_lutmem.hex new file mode 100644 index 00000000..5c7f0b28 --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_div_memoryC2_uid118_invTables_lutmem.hex @@ -0,0 +1,514 @@ +:020000040000FA +:0200000007FAFD +:0200010007EE08 +:0200020007E312 +:0200030007D81C +:0200040007CB28 +:0200050007C032 +:0200060007B53C +:0200070007A947 +:02000800079B54 +:0200090007925C +:02000A00078865 +:02000B00077B71 +:02000C0007717A +:02000D00076486 +:02000E00075A8F +:02000F00075197 +:020010000746A1 +:020011000739AD +:020012000731B4 +:020013000728BC +:02001400071EC5 +:020015000712D0 +:020016000708D9 +:0200170006FDE4 +:0200180006F5EB +:0200190006ECF3 +:02001A0006DFFF +:02001B0006D706 +:02001C0006CE0E +:02001D0006C219 +:02001E0006BA20 +:02001F0006B029 +:0200200006A632 +:02002100069D3A +:02002200069541 +:02002300068A4B +:02002400068252 +:0200250006795A +:02002600067260 +:0200270006666B +:02002800066070 +:0200290006537C +:02002A00064C82 +:02002B00064489 +:02002C00063C90 +:02002D00063497 +:02002E000628A2 +:02002F000620A9 +:020030000619AF +:020031000611B6 +:020032000607BF +:0200330005FEC8 +:0200340005F7CE +:0200350005F0D4 +:0200360005E8DB +:0200370005E1E1 +:0200380005D7EA +:0200390005CFF1 +:02003A0005C8F7 +:02003B0005BFFF +:02003C0005B805 +:02003D0005B10B +:02003E0005AA11 +:02003F0005A416 +:02004000059A1F +:02004100059424 +:02004200058B2C +:02004300058432 +:02004400057E37 +:0200450005763E +:02004600056E45 +:02004700056949 +:02004800055F52 +:02004900055B55 +:02004A0005515E +:02004B00054D61 +:02004C00054568 +:02004D00053E6E +:02004E00053774 +:02004F00052F7B +:02005000052B7E +:02005100052385 +:02005200051D8A +:02005300051591 +:02005400051095 +:0200550005099B +:020056000502A1 +:0200570004FBA8 +:0200580004F7AB +:0200590004F0B1 +:02005A0004E9B7 +:02005B0004E4BB +:02005C0004DCC2 +:02005D0004D7C6 +:02005E0004D0CC +:02005F0004CBD0 +:0200600004C5D5 +:0200610004BFDA +:0200620004B9DF +:0200630004B2E5 +:0200640004ADE9 +:0200650004A8ED +:02006600049FF5 +:020067000499FA +:020068000495FD +:02006900048D04 +:02006A00048907 +:02006B0004850A +:02006C00047E10 +:02006D00047716 +:02006E0004721A +:02006F00046D1E +:02007000046822 +:02007100046425 +:02007200046028 +:02007300045631 +:02007400045135 +:02007500044D38 +:02007600044A3A +:02007700044241 +:02007800044042 +:0200790004374A +:02007A0004344C +:02007B0004304F +:02007C00042A54 +:02007D00042459 +:02007E00041E5E +:02007F00041B60 +:02008000041763 +:02008100041366 +:02008200040E6A +:0200830004086F +:02008400040472 +:0200850003FF77 +:0200860003FB7A +:0200870003F480 +:0200880003F182 +:0200890003ED85 +:02008A0003E988 +:02008B0003E18F +:02008C0003DF90 +:02008D0003DA94 +:02008E0003D598 +:02008F0003D29A +:0200900003CD9E +:0200910003C7A3 +:0200920003C4A5 +:0200930003BFA9 +:0200940003B9AE +:0200950003B5B1 +:0200960003B1B4 +:0200970003AFB5 +:0200980003A8BB +:0200990003A5BD +:02009A0003A0C1 +:02009B00039DC3 +:02009C00039AC5 +:02009D000396C8 +:02009E000391CC +:02009F00038CD0 +:0200A0000388D3 +:0200A1000386D4 +:0200A200037FDA +:0200A300037DDB +:0200A4000378DF +:0200A5000375E1 +:0200A600036FE6 +:0200A700036DE7 +:0200A8000368EB +:0200A9000364EE +:0200AA000360F1 +:0200AB00035DF3 +:0200AC000359F6 +:0200AD000354FA +:0200AE000352FB +:0200AF000350FC +:0200B000034803 +:0200B100034505 +:0200B200034108 +:0200B300033F09 +:0200B400033B0C +:0200B50003380E +:0200B60003360F +:0200B700033311 +:0200B800032D16 +:0200B900032C16 +:0200BA0003271A +:0200BB0003221E +:0200BC00031F20 +:0200BD00031C22 +:0200BE00031924 +:0200BF00031527 +:0200C00003102B +:0200C100030D2D +:0200C200030A2F +:0200C300030632 +:0200C400030433 +:0200C500030234 +:0200C60002FF37 +:0200C70002FB3A +:0200C80002F73D +:0200C90002F53E +:0200CA0002F141 +:0200CB0002ED44 +:0200CC0002EA46 +:0200CD0002E946 +:0200CE0002E34B +:0200CF0002E24B +:0200D00002DF4D +:0200D10002DC4F +:0200D20002DB4F +:0200D30002D653 +:0200D40002D355 +:0200D50002D255 +:0200D60002CE58 +:0200D70002CB5A +:0200D80002C65E +:0200D90002C55E +:0200DA0002C062 +:0200DB0002BC65 +:0200DC0002BB65 +:0200DD0002B867 +:0200DE0002B569 +:0200DF0002B36A +:0200E00002B06C +:0200E10002AE6D +:0200E20002AD6D +:0200E30002A970 +:0200E40002A573 +:0200E50002A275 +:0200E600029F77 +:0200E700029C79 +:0200E80002987C +:0200E90002967D +:0200EA0002947E +:0200EB0002937E +:0200EC00028F81 +:0200ED00028D82 +:0200EE00028B83 +:0200EF00028984 +:0200F000028686 +:0200F10002818A +:0200F200027F8B +:0200F300027E8B +:0200F400027A8E +:0200F500027790 +:0200F600027591 +:0200F700027491 +:0200F800026F95 +:0200F900026D96 +:0200FA00026B97 +:0200FB00026998 +:0200FC0002659B +:0200FD0002629D +:0200FE0002629C +:0200FF0002609D +:02010000025E9D +:02010100025D9D +:020102000259A0 +:020103000256A2 +:020104000255A2 +:020105000254A2 +:020106000250A5 +:02010700024DA7 +:02010800024BA8 +:020109000249A9 +:02010A000248A9 +:02010B000245AB +:02010C000242AD +:02010D000240AE +:02010E00023DB0 +:02010F00023AB2 +:020110000239B2 +:020111000238B2 +:020112000235B4 +:020113000232B6 +:020114000231B6 +:020115000230B6 +:02011600022FB6 +:02011700022BB9 +:020118000228BB +:020119000228BA +:02011A000221C0 +:02011B000221BF +:02011C000221BE +:02011D00021EC0 +:02011E00021CC1 +:02011F00021BC1 +:020120000218C3 +:020121000215C5 +:020122000212C7 +:020123000211C7 +:02012400020FC8 +:02012500020DC9 +:02012600020CC9 +:020127000209CB +:020128000207CC +:020129000207CB +:02012A000205CC +:02012B000203CD +:02012C000202CD +:02012D0001FFD0 +:02012E0001FBD3 +:02012F0001F9D4 +:0201300001FAD2 +:0201310001F6D5 +:0201320001F5D5 +:0201330001F4D5 +:0201340001F4D4 +:0201350001F0D7 +:0201360001F0D6 +:0201370001EDD8 +:0201380001EBD9 +:0201390001EAD9 +:02013A0001E8DA +:02013B0001E4DD +:02013C0001E1DF +:02013D0001E0DF +:02013E0001DEE0 +:02013F0001DEDF +:0201400001DFDD +:0201410001DDDE +:0201420001D7E3 +:0201430001D7E2 +:0201440001D5E3 +:0201450001D3E4 +:0201460001D1E5 +:0201470001D2E3 +:0201480001CCE8 +:0201490001CFE4 +:02014A0001CCE6 +:02014B0001CAE7 +:02014C0001C8E8 +:02014D0001C7E8 +:02014E0001C6E8 +:02014F0001C3EA +:0201500001C2EA +:0201510001C1EA +:0201520001BFEB +:0201530001BCED +:0201540001B9EF +:0201550001B8EF +:0201560001B7EF +:0201570001B7EE +:0201580001B5EF +:0201590001B5EE +:02015A0001B2F0 +:02015B0001AFF2 +:02015C0001AEF2 +:02015D0001AEF1 +:02015E0001AEF0 +:02015F0001ADF0 +:0201600001AAF2 +:0201610001A8F3 +:0201620001A6F4 +:0201630001A3F6 +:0201640001A3F5 +:0201650001A2F5 +:02016600019FF7 +:02016700019DF8 +:02016800019DF7 +:02016900019CF7 +:02016A000199F9 +:02016B000199F8 +:02016C000197F9 +:02016D000196F9 +:02016E000196F8 +:02016F000195F8 +:020170000193F9 +:020171000193F8 +:020172000191F9 +:020173000190F9 +:02017400018EFA +:02017500018DFA +:02017600018CFA +:02017700018BFA +:020178000185FF +:020179000186FD +:02017A000186FC +:02017B000185FC +:02017C00018000 +:02017D000184FB +:02017E000181FD +:02017F00017EFF +:02018000017DFF +:02018100017CFF +:02018200017CFE +:02018300017CFD +:02018400017AFE +:020185000179FE +:020186000178FE +:020187000176FF +:02018800017301 +:02018900017201 +:02018A00017002 +:02018B00016F02 +:02018C00016D03 +:02018D00016D02 +:02018E00016B03 +:02018F00016B02 +:02019000016B01 +:02019100016A01 +:02019200016604 +:02019300016504 +:02019400016503 +:02019500016403 +:02019600016204 +:02019700016203 +:02019800016103 +:02019900015F04 +:02019A00015F03 +:02019B00015D04 +:02019C00015C04 +:02019D00015B04 +:02019E00015905 +:02019F00015706 +:0201A000015804 +:0201A100015803 +:0201A200015703 +:0201A300015603 +:0201A400015503 +:0201A500015403 +:0201A600015105 +:0201A700014E07 +:0201A800014D07 +:0201A900014D06 +:0201AA00014C06 +:0201AB00014A07 +:0201AC00014907 +:0201AD00014906 +:0201AE00014707 +:0201AF00014508 +:0201B000014507 +:0201B100014506 +:0201B200014307 +:0201B300014207 +:0201B400014206 +:0201B500014106 +:0201B600014105 +:0201B700014005 +:0201B800013E06 +:0201B900013D06 +:0201BA00013C06 +:0201BB00013A07 +:0201BC00013907 +:0201BD00013A05 +:0201BE00013A04 +:0201BF00013805 +:0201C000013705 +:0201C100013605 +:0201C200013505 +:0201C300013405 +:0201C400013206 +:0201C500013205 +:0201C600013006 +:0201C700012F06 +:0201C800013004 +:0201C900013003 +:0201CA00012C06 +:0201CB00012E03 +:0201CC00012C04 +:0201CD00012906 +:0201CE00012707 +:0201CF00012805 +:0201D000012705 +:0201D100012407 +:0201D200012604 +:0201D300012306 +:0201D400012305 +:0201D500012205 +:0201D600012204 +:0201D700012005 +:0201D800011F05 +:0201D900012003 +:0201DA00011F03 +:0201DB00011E03 +:0201DC00011C04 +:0201DD00011A05 +:0201DE00011905 +:0201DF00011805 +:0201E000011804 +:0201E100011803 +:0201E200011802 +:0201E300011603 +:0201E400011503 +:0201E500011403 +:0201E600011303 +:0201E700011302 +:0201E800011400 +:0201E9000114FF +:0201EA00011002 +:0201EB00011100 +:0201EC00010F01 +:0201ED00010E01 +:0201EE00010D01 +:0201EF00010C01 +:0201F000010B01 +:0201F100010902 +:0201F200010BFF +:0201F300010801 +:0201F400010800 +:0201F500010601 +:0201F600010600 +:0201F7000107FE +:0201F8000105FF +:0201F900010300 +:0201FA00010200 +:0201FB000102FF +:0201FC000103FD +:0201FD000102FD +:0201FE000100FE +:0201FF000100FD +:00000001ff diff --git a/hw/rtl/fp_cores/altera/acl_fp_ftoi.sv b/hw/rtl/fp_cores/altera/acl_fp_ftoi.sv new file mode 100644 index 00000000..ccb8326c --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_ftoi.sv @@ -0,0 +1,518 @@ +// ------------------------------------------------------------------------- +// High Level Design Compiler for Intel(R) FPGAs Version 17.1 (Release Build #273) +// Quartus Prime development tool and MATLAB/Simulink Interface +// +// Legal Notice: Copyright 2017 Intel Corporation. All rights reserved. +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly +// subject to the terms and conditions of the Intel FPGA Software License +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for +// the sole purpose of programming logic devices manufactured by Intel +// and sold by Intel or its authorized distributors. Please refer to the +// applicable agreement for further details. +// --------------------------------------------------------------------------- + +// SystemVerilog created from acl_fp_ftoi +// SystemVerilog created on Wed Aug 5 12:58:15 2020 + + +(* altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 10037; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 15400; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 12020; -name MESSAGE_DISABLE 12030; -name MESSAGE_DISABLE 12010; -name MESSAGE_DISABLE 12110; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 13410; -name MESSAGE_DISABLE 113007; -name MESSAGE_DISABLE 10958" *) +module acl_fp_ftoi ( + input wire [31:0] a, + input wire [0:0] en, + output wire [31:0] q, + input wire clk, + input wire areset + ); + + wire [0:0] GND_q; + wire [7:0] cstAllOWE_uid6_fpToFxPTest_q; + wire [22:0] cstZeroWF_uid7_fpToFxPTest_q; + wire [7:0] cstAllZWE_uid8_fpToFxPTest_q; + wire [7:0] exp_x_uid9_fpToFxPTest_b; + wire [22:0] frac_x_uid10_fpToFxPTest_b; + wire [0:0] excZ_x_uid11_fpToFxPTest_qi; + reg [0:0] excZ_x_uid11_fpToFxPTest_q; + wire [0:0] expXIsMax_uid12_fpToFxPTest_qi; + reg [0:0] expXIsMax_uid12_fpToFxPTest_q; + wire [0:0] fracXIsZero_uid13_fpToFxPTest_qi; + reg [0:0] fracXIsZero_uid13_fpToFxPTest_q; + wire [0:0] fracXIsNotZero_uid14_fpToFxPTest_q; + wire [0:0] excI_x_uid15_fpToFxPTest_q; + wire [0:0] excN_x_uid16_fpToFxPTest_q; + wire [0:0] invExcXZ_uid22_fpToFxPTest_q; + wire [23:0] oFracX_uid23_fpToFxPTest_q; + wire [0:0] signX_uid25_fpToFxPTest_b; + wire [8:0] ovfExpVal_uid26_fpToFxPTest_q; + wire [10:0] ovfExpRange_uid27_fpToFxPTest_a; + wire [10:0] ovfExpRange_uid27_fpToFxPTest_b; + logic [10:0] ovfExpRange_uid27_fpToFxPTest_o; + wire [0:0] ovfExpRange_uid27_fpToFxPTest_n; + wire [7:0] udfExpVal_uid28_fpToFxPTest_q; + wire [10:0] udf_uid29_fpToFxPTest_a; + wire [10:0] udf_uid29_fpToFxPTest_b; + logic [10:0] udf_uid29_fpToFxPTest_o; + wire [0:0] udf_uid29_fpToFxPTest_n; + wire [8:0] ovfExpVal_uid30_fpToFxPTest_q; + wire [10:0] shiftValE_uid31_fpToFxPTest_a; + wire [10:0] shiftValE_uid31_fpToFxPTest_b; + logic [10:0] shiftValE_uid31_fpToFxPTest_o; + wire [9:0] shiftValE_uid31_fpToFxPTest_q; + wire [5:0] shiftValRaw_uid32_fpToFxPTest_in; + wire [5:0] shiftValRaw_uid32_fpToFxPTest_b; + wire [5:0] maxShiftCst_uid33_fpToFxPTest_q; + wire [11:0] shiftOutOfRange_uid34_fpToFxPTest_a; + wire [11:0] shiftOutOfRange_uid34_fpToFxPTest_b; + logic [11:0] shiftOutOfRange_uid34_fpToFxPTest_o; + wire [0:0] shiftOutOfRange_uid34_fpToFxPTest_n; + wire [0:0] shiftVal_uid35_fpToFxPTest_s; + reg [5:0] shiftVal_uid35_fpToFxPTest_q; + wire [31:0] shifterIn_uid37_fpToFxPTest_q; + wire [31:0] maxPosValueS_uid39_fpToFxPTest_q; + wire [31:0] maxNegValueS_uid40_fpToFxPTest_q; + wire [32:0] zRightShiferNoStickyOut_uid41_fpToFxPTest_q; + wire [32:0] xXorSignE_uid42_fpToFxPTest_b; + wire [32:0] xXorSignE_uid42_fpToFxPTest_q; + wire [2:0] d0_uid43_fpToFxPTest_q; + wire [33:0] sPostRndFull_uid44_fpToFxPTest_a; + wire [33:0] sPostRndFull_uid44_fpToFxPTest_b; + logic [33:0] sPostRndFull_uid44_fpToFxPTest_o; + wire [33:0] sPostRndFull_uid44_fpToFxPTest_q; + wire [32:0] sPostRnd_uid45_fpToFxPTest_in; + wire [31:0] sPostRnd_uid45_fpToFxPTest_b; + wire [34:0] sPostRnd_uid46_fpToFxPTest_in; + wire [33:0] sPostRnd_uid46_fpToFxPTest_b; + wire [35:0] rndOvfPos_uid47_fpToFxPTest_a; + wire [35:0] rndOvfPos_uid47_fpToFxPTest_b; + logic [35:0] rndOvfPos_uid47_fpToFxPTest_o; + wire [0:0] rndOvfPos_uid47_fpToFxPTest_c; + wire [0:0] ovfPostRnd_uid48_fpToFxPTest_qi; + reg [0:0] ovfPostRnd_uid48_fpToFxPTest_q; + wire [2:0] muxSelConc_uid49_fpToFxPTest_q; + reg [1:0] muxSel_uid50_fpToFxPTest_q; + wire [31:0] maxNegValueU_uid51_fpToFxPTest_q; + wire [1:0] finalOut_uid52_fpToFxPTest_s; + reg [31:0] finalOut_uid52_fpToFxPTest_q; + wire [15:0] rightShiftStage0Idx1Rng16_uid56_rightShiferNoStickyOut_uid38_fpToFxPTest_b; + wire [15:0] rightShiftStage0Idx1Pad16_uid57_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [31:0] rightShiftStage0Idx1_uid58_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [1:0] rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_s; + reg [31:0] rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [27:0] rightShiftStage1Idx1Rng4_uid63_rightShiferNoStickyOut_uid38_fpToFxPTest_b; + wire [3:0] rightShiftStage1Idx1Pad4_uid64_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [31:0] rightShiftStage1Idx1_uid65_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [23:0] rightShiftStage1Idx2Rng8_uid66_rightShiferNoStickyOut_uid38_fpToFxPTest_b; + wire [31:0] rightShiftStage1Idx2_uid68_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [19:0] rightShiftStage1Idx3Rng12_uid69_rightShiferNoStickyOut_uid38_fpToFxPTest_b; + wire [11:0] rightShiftStage1Idx3Pad12_uid70_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [31:0] rightShiftStage1Idx3_uid71_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [1:0] rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_s; + reg [31:0] rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [30:0] rightShiftStage2Idx1Rng1_uid74_rightShiferNoStickyOut_uid38_fpToFxPTest_b; + wire [31:0] rightShiftStage2Idx1_uid76_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [29:0] rightShiftStage2Idx2Rng2_uid77_rightShiferNoStickyOut_uid38_fpToFxPTest_b; + wire [1:0] rightShiftStage2Idx2Pad2_uid78_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [31:0] rightShiftStage2Idx2_uid79_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [28:0] rightShiftStage2Idx3Rng3_uid80_rightShiferNoStickyOut_uid38_fpToFxPTest_b; + wire [2:0] rightShiftStage2Idx3Pad3_uid81_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [31:0] rightShiftStage2Idx3_uid82_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [1:0] rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_s; + reg [31:0] rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + wire [1:0] rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_b; + wire [1:0] rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_c; + wire [1:0] rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_d; + reg [31:0] redist0_sPostRnd_uid45_fpToFxPTest_b_1_q; + reg [0:0] redist1_udf_uid29_fpToFxPTest_n_5_q; + reg [0:0] redist2_ovfExpRange_uid27_fpToFxPTest_n_4_q; + reg [0:0] redist3_signX_uid25_fpToFxPTest_b_3_q; + reg [0:0] redist4_signX_uid25_fpToFxPTest_b_5_q; + reg [0:0] redist5_fracXIsZero_uid13_fpToFxPTest_q_2_q; + reg [0:0] redist6_expXIsMax_uid12_fpToFxPTest_q_4_q; + reg [0:0] redist7_excZ_x_uid11_fpToFxPTest_q_2_q; + reg [22:0] redist8_frac_x_uid10_fpToFxPTest_b_2_q; + + + // maxNegValueU_uid51_fpToFxPTest(CONSTANT,50) + assign maxNegValueU_uid51_fpToFxPTest_q = 32'b00000000000000000000000000000000; + + // maxNegValueS_uid40_fpToFxPTest(CONSTANT,39) + assign maxNegValueS_uid40_fpToFxPTest_q = 32'b10000000000000000000000000000000; + + // maxPosValueS_uid39_fpToFxPTest(CONSTANT,38) + assign maxPosValueS_uid39_fpToFxPTest_q = 32'b01111111111111111111111111111111; + + // d0_uid43_fpToFxPTest(CONSTANT,42) + assign d0_uid43_fpToFxPTest_q = 3'b001; + + // signX_uid25_fpToFxPTest(BITSELECT,24)@0 + assign signX_uid25_fpToFxPTest_b = a[31:31]; + + // redist3_signX_uid25_fpToFxPTest_b_3(DELAY,89) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist3_signX_uid25_fpToFxPTest_b_3 ( .xin(signX_uid25_fpToFxPTest_b), .xout(redist3_signX_uid25_fpToFxPTest_b_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // GND(CONSTANT,0) + assign GND_q = 1'b0; + + // rightShiftStage2Idx3Pad3_uid81_rightShiferNoStickyOut_uid38_fpToFxPTest(CONSTANT,80) + assign rightShiftStage2Idx3Pad3_uid81_rightShiferNoStickyOut_uid38_fpToFxPTest_q = 3'b000; + + // rightShiftStage2Idx3Rng3_uid80_rightShiferNoStickyOut_uid38_fpToFxPTest(BITSELECT,79)@2 + assign rightShiftStage2Idx3Rng3_uid80_rightShiferNoStickyOut_uid38_fpToFxPTest_b = rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q[31:3]; + + // rightShiftStage2Idx3_uid82_rightShiferNoStickyOut_uid38_fpToFxPTest(BITJOIN,81)@2 + assign rightShiftStage2Idx3_uid82_rightShiferNoStickyOut_uid38_fpToFxPTest_q = {rightShiftStage2Idx3Pad3_uid81_rightShiferNoStickyOut_uid38_fpToFxPTest_q, rightShiftStage2Idx3Rng3_uid80_rightShiferNoStickyOut_uid38_fpToFxPTest_b}; + + // rightShiftStage2Idx2Pad2_uid78_rightShiferNoStickyOut_uid38_fpToFxPTest(CONSTANT,77) + assign rightShiftStage2Idx2Pad2_uid78_rightShiferNoStickyOut_uid38_fpToFxPTest_q = 2'b00; + + // rightShiftStage2Idx2Rng2_uid77_rightShiferNoStickyOut_uid38_fpToFxPTest(BITSELECT,76)@2 + assign rightShiftStage2Idx2Rng2_uid77_rightShiferNoStickyOut_uid38_fpToFxPTest_b = rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q[31:2]; + + // rightShiftStage2Idx2_uid79_rightShiferNoStickyOut_uid38_fpToFxPTest(BITJOIN,78)@2 + assign rightShiftStage2Idx2_uid79_rightShiferNoStickyOut_uid38_fpToFxPTest_q = {rightShiftStage2Idx2Pad2_uid78_rightShiferNoStickyOut_uid38_fpToFxPTest_q, rightShiftStage2Idx2Rng2_uid77_rightShiferNoStickyOut_uid38_fpToFxPTest_b}; + + // rightShiftStage2Idx1Rng1_uid74_rightShiferNoStickyOut_uid38_fpToFxPTest(BITSELECT,73)@2 + assign rightShiftStage2Idx1Rng1_uid74_rightShiferNoStickyOut_uid38_fpToFxPTest_b = rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q[31:1]; + + // rightShiftStage2Idx1_uid76_rightShiferNoStickyOut_uid38_fpToFxPTest(BITJOIN,75)@2 + assign rightShiftStage2Idx1_uid76_rightShiferNoStickyOut_uid38_fpToFxPTest_q = {GND_q, rightShiftStage2Idx1Rng1_uid74_rightShiferNoStickyOut_uid38_fpToFxPTest_b}; + + // rightShiftStage1Idx3Pad12_uid70_rightShiferNoStickyOut_uid38_fpToFxPTest(CONSTANT,69) + assign rightShiftStage1Idx3Pad12_uid70_rightShiferNoStickyOut_uid38_fpToFxPTest_q = 12'b000000000000; + + // rightShiftStage1Idx3Rng12_uid69_rightShiferNoStickyOut_uid38_fpToFxPTest(BITSELECT,68)@2 + assign rightShiftStage1Idx3Rng12_uid69_rightShiferNoStickyOut_uid38_fpToFxPTest_b = rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q[31:12]; + + // rightShiftStage1Idx3_uid71_rightShiferNoStickyOut_uid38_fpToFxPTest(BITJOIN,70)@2 + assign rightShiftStage1Idx3_uid71_rightShiferNoStickyOut_uid38_fpToFxPTest_q = {rightShiftStage1Idx3Pad12_uid70_rightShiferNoStickyOut_uid38_fpToFxPTest_q, rightShiftStage1Idx3Rng12_uid69_rightShiferNoStickyOut_uid38_fpToFxPTest_b}; + + // cstAllZWE_uid8_fpToFxPTest(CONSTANT,7) + assign cstAllZWE_uid8_fpToFxPTest_q = 8'b00000000; + + // rightShiftStage1Idx2Rng8_uid66_rightShiferNoStickyOut_uid38_fpToFxPTest(BITSELECT,65)@2 + assign rightShiftStage1Idx2Rng8_uid66_rightShiferNoStickyOut_uid38_fpToFxPTest_b = rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q[31:8]; + + // rightShiftStage1Idx2_uid68_rightShiferNoStickyOut_uid38_fpToFxPTest(BITJOIN,67)@2 + assign rightShiftStage1Idx2_uid68_rightShiferNoStickyOut_uid38_fpToFxPTest_q = {cstAllZWE_uid8_fpToFxPTest_q, rightShiftStage1Idx2Rng8_uid66_rightShiferNoStickyOut_uid38_fpToFxPTest_b}; + + // rightShiftStage1Idx1Pad4_uid64_rightShiferNoStickyOut_uid38_fpToFxPTest(CONSTANT,63) + assign rightShiftStage1Idx1Pad4_uid64_rightShiferNoStickyOut_uid38_fpToFxPTest_q = 4'b0000; + + // rightShiftStage1Idx1Rng4_uid63_rightShiferNoStickyOut_uid38_fpToFxPTest(BITSELECT,62)@2 + assign rightShiftStage1Idx1Rng4_uid63_rightShiferNoStickyOut_uid38_fpToFxPTest_b = rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q[31:4]; + + // rightShiftStage1Idx1_uid65_rightShiferNoStickyOut_uid38_fpToFxPTest(BITJOIN,64)@2 + assign rightShiftStage1Idx1_uid65_rightShiferNoStickyOut_uid38_fpToFxPTest_q = {rightShiftStage1Idx1Pad4_uid64_rightShiferNoStickyOut_uid38_fpToFxPTest_q, rightShiftStage1Idx1Rng4_uid63_rightShiferNoStickyOut_uid38_fpToFxPTest_b}; + + // rightShiftStage0Idx1Pad16_uid57_rightShiferNoStickyOut_uid38_fpToFxPTest(CONSTANT,56) + assign rightShiftStage0Idx1Pad16_uid57_rightShiferNoStickyOut_uid38_fpToFxPTest_q = 16'b0000000000000000; + + // rightShiftStage0Idx1Rng16_uid56_rightShiferNoStickyOut_uid38_fpToFxPTest(BITSELECT,55)@2 + assign rightShiftStage0Idx1Rng16_uid56_rightShiferNoStickyOut_uid38_fpToFxPTest_b = shifterIn_uid37_fpToFxPTest_q[31:16]; + + // rightShiftStage0Idx1_uid58_rightShiferNoStickyOut_uid38_fpToFxPTest(BITJOIN,57)@2 + assign rightShiftStage0Idx1_uid58_rightShiferNoStickyOut_uid38_fpToFxPTest_q = {rightShiftStage0Idx1Pad16_uid57_rightShiferNoStickyOut_uid38_fpToFxPTest_q, rightShiftStage0Idx1Rng16_uid56_rightShiferNoStickyOut_uid38_fpToFxPTest_b}; + + // exp_x_uid9_fpToFxPTest(BITSELECT,8)@0 + assign exp_x_uid9_fpToFxPTest_b = a[30:23]; + + // excZ_x_uid11_fpToFxPTest(LOGICAL,10)@0 + 1 + assign excZ_x_uid11_fpToFxPTest_qi = exp_x_uid9_fpToFxPTest_b == cstAllZWE_uid8_fpToFxPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excZ_x_uid11_fpToFxPTest_delay ( .xin(excZ_x_uid11_fpToFxPTest_qi), .xout(excZ_x_uid11_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist7_excZ_x_uid11_fpToFxPTest_q_2(DELAY,93) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist7_excZ_x_uid11_fpToFxPTest_q_2 ( .xin(excZ_x_uid11_fpToFxPTest_q), .xout(redist7_excZ_x_uid11_fpToFxPTest_q_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // invExcXZ_uid22_fpToFxPTest(LOGICAL,21)@2 + assign invExcXZ_uid22_fpToFxPTest_q = ~ (redist7_excZ_x_uid11_fpToFxPTest_q_2_q); + + // frac_x_uid10_fpToFxPTest(BITSELECT,9)@0 + assign frac_x_uid10_fpToFxPTest_b = a[22:0]; + + // redist8_frac_x_uid10_fpToFxPTest_b_2(DELAY,94) + dspba_delay_ver #( .width(23), .depth(2), .reset_kind("ASYNC") ) + redist8_frac_x_uid10_fpToFxPTest_b_2 ( .xin(frac_x_uid10_fpToFxPTest_b), .xout(redist8_frac_x_uid10_fpToFxPTest_b_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // oFracX_uid23_fpToFxPTest(BITJOIN,22)@2 + assign oFracX_uid23_fpToFxPTest_q = {invExcXZ_uid22_fpToFxPTest_q, redist8_frac_x_uid10_fpToFxPTest_b_2_q}; + + // shifterIn_uid37_fpToFxPTest(BITJOIN,36)@2 + assign shifterIn_uid37_fpToFxPTest_q = {oFracX_uid23_fpToFxPTest_q, cstAllZWE_uid8_fpToFxPTest_q}; + + // rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest(MUX,61)@2 + assign rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_s = rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_b; + always @(rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_s or en or shifterIn_uid37_fpToFxPTest_q or rightShiftStage0Idx1_uid58_rightShiferNoStickyOut_uid38_fpToFxPTest_q or maxNegValueU_uid51_fpToFxPTest_q) + begin + unique case (rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_s) + 2'b00 : rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q = shifterIn_uid37_fpToFxPTest_q; + 2'b01 : rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q = rightShiftStage0Idx1_uid58_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + 2'b10 : rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q = maxNegValueU_uid51_fpToFxPTest_q; + 2'b11 : rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q = maxNegValueU_uid51_fpToFxPTest_q; + default : rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q = 32'b0; + endcase + end + + // rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest(MUX,72)@2 + assign rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_s = rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_c; + always @(rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_s or en or rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q or rightShiftStage1Idx1_uid65_rightShiferNoStickyOut_uid38_fpToFxPTest_q or rightShiftStage1Idx2_uid68_rightShiferNoStickyOut_uid38_fpToFxPTest_q or rightShiftStage1Idx3_uid71_rightShiferNoStickyOut_uid38_fpToFxPTest_q) + begin + unique case (rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_s) + 2'b00 : rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q = rightShiftStage0_uid62_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + 2'b01 : rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q = rightShiftStage1Idx1_uid65_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + 2'b10 : rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q = rightShiftStage1Idx2_uid68_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + 2'b11 : rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q = rightShiftStage1Idx3_uid71_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + default : rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q = 32'b0; + endcase + end + + // maxShiftCst_uid33_fpToFxPTest(CONSTANT,32) + assign maxShiftCst_uid33_fpToFxPTest_q = 6'b100000; + + // ovfExpVal_uid30_fpToFxPTest(CONSTANT,29) + assign ovfExpVal_uid30_fpToFxPTest_q = 9'b010011101; + + // shiftValE_uid31_fpToFxPTest(SUB,30)@0 + 1 + assign shiftValE_uid31_fpToFxPTest_a = {{2{ovfExpVal_uid30_fpToFxPTest_q[8]}}, ovfExpVal_uid30_fpToFxPTest_q}; + assign shiftValE_uid31_fpToFxPTest_b = {3'b000, exp_x_uid9_fpToFxPTest_b}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + shiftValE_uid31_fpToFxPTest_o <= 11'b0; + end + else if (en == 1'b1) + begin + shiftValE_uid31_fpToFxPTest_o <= $signed(shiftValE_uid31_fpToFxPTest_a) - $signed(shiftValE_uid31_fpToFxPTest_b); + end + end + assign shiftValE_uid31_fpToFxPTest_q = shiftValE_uid31_fpToFxPTest_o[9:0]; + + // shiftValRaw_uid32_fpToFxPTest(BITSELECT,31)@1 + assign shiftValRaw_uid32_fpToFxPTest_in = shiftValE_uid31_fpToFxPTest_q[5:0]; + assign shiftValRaw_uid32_fpToFxPTest_b = shiftValRaw_uid32_fpToFxPTest_in[5:0]; + + // shiftOutOfRange_uid34_fpToFxPTest(COMPARE,33)@1 + assign shiftOutOfRange_uid34_fpToFxPTest_a = {{2{shiftValE_uid31_fpToFxPTest_q[9]}}, shiftValE_uid31_fpToFxPTest_q}; + assign shiftOutOfRange_uid34_fpToFxPTest_b = {6'b000000, maxShiftCst_uid33_fpToFxPTest_q}; + assign shiftOutOfRange_uid34_fpToFxPTest_o = $signed(shiftOutOfRange_uid34_fpToFxPTest_a) - $signed(shiftOutOfRange_uid34_fpToFxPTest_b); + assign shiftOutOfRange_uid34_fpToFxPTest_n[0] = ~ (shiftOutOfRange_uid34_fpToFxPTest_o[11]); + + // shiftVal_uid35_fpToFxPTest(MUX,34)@1 + 1 + assign shiftVal_uid35_fpToFxPTest_s = shiftOutOfRange_uid34_fpToFxPTest_n; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + shiftVal_uid35_fpToFxPTest_q <= 6'b0; + end + else if (en == 1'b1) + begin + unique case (shiftVal_uid35_fpToFxPTest_s) + 1'b0 : shiftVal_uid35_fpToFxPTest_q <= shiftValRaw_uid32_fpToFxPTest_b; + 1'b1 : shiftVal_uid35_fpToFxPTest_q <= maxShiftCst_uid33_fpToFxPTest_q; + default : shiftVal_uid35_fpToFxPTest_q <= 6'b0; + endcase + end + end + + // rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select(BITSELECT,85)@2 + assign rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_b = shiftVal_uid35_fpToFxPTest_q[5:4]; + assign rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_c = shiftVal_uid35_fpToFxPTest_q[3:2]; + assign rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_d = shiftVal_uid35_fpToFxPTest_q[1:0]; + + // rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest(MUX,83)@2 + 1 + assign rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_s = rightShiftStageSel5Dto4_uid61_rightShiferNoStickyOut_uid38_fpToFxPTest_merged_bit_select_d; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q <= 32'b0; + end + else if (en == 1'b1) + begin + unique case (rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_s) + 2'b00 : rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q <= rightShiftStage1_uid73_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + 2'b01 : rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q <= rightShiftStage2Idx1_uid76_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + 2'b10 : rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q <= rightShiftStage2Idx2_uid79_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + 2'b11 : rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q <= rightShiftStage2Idx3_uid82_rightShiferNoStickyOut_uid38_fpToFxPTest_q; + default : rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q <= 32'b0; + endcase + end + end + + // zRightShiferNoStickyOut_uid41_fpToFxPTest(BITJOIN,40)@3 + assign zRightShiferNoStickyOut_uid41_fpToFxPTest_q = {GND_q, rightShiftStage2_uid84_rightShiferNoStickyOut_uid38_fpToFxPTest_q}; + + // xXorSignE_uid42_fpToFxPTest(LOGICAL,41)@3 + assign xXorSignE_uid42_fpToFxPTest_b = {{32{redist3_signX_uid25_fpToFxPTest_b_3_q[0]}}, redist3_signX_uid25_fpToFxPTest_b_3_q}; + assign xXorSignE_uid42_fpToFxPTest_q = zRightShiferNoStickyOut_uid41_fpToFxPTest_q ^ xXorSignE_uid42_fpToFxPTest_b; + + // sPostRndFull_uid44_fpToFxPTest(ADD,43)@3 + 1 + assign sPostRndFull_uid44_fpToFxPTest_a = {{1{xXorSignE_uid42_fpToFxPTest_q[32]}}, xXorSignE_uid42_fpToFxPTest_q}; + assign sPostRndFull_uid44_fpToFxPTest_b = {{31{d0_uid43_fpToFxPTest_q[2]}}, d0_uid43_fpToFxPTest_q}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + sPostRndFull_uid44_fpToFxPTest_o <= 34'b0; + end + else if (en == 1'b1) + begin + sPostRndFull_uid44_fpToFxPTest_o <= $signed(sPostRndFull_uid44_fpToFxPTest_a) + $signed(sPostRndFull_uid44_fpToFxPTest_b); + end + end + assign sPostRndFull_uid44_fpToFxPTest_q = sPostRndFull_uid44_fpToFxPTest_o[33:0]; + + // sPostRnd_uid45_fpToFxPTest(BITSELECT,44)@4 + assign sPostRnd_uid45_fpToFxPTest_in = sPostRndFull_uid44_fpToFxPTest_q[32:0]; + assign sPostRnd_uid45_fpToFxPTest_b = sPostRnd_uid45_fpToFxPTest_in[32:1]; + + // redist0_sPostRnd_uid45_fpToFxPTest_b_1(DELAY,86) + dspba_delay_ver #( .width(32), .depth(1), .reset_kind("ASYNC") ) + redist0_sPostRnd_uid45_fpToFxPTest_b_1 ( .xin(sPostRnd_uid45_fpToFxPTest_b), .xout(redist0_sPostRnd_uid45_fpToFxPTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist4_signX_uid25_fpToFxPTest_b_5(DELAY,90) + dspba_delay_ver #( .width(1), .depth(2), .reset_kind("ASYNC") ) + redist4_signX_uid25_fpToFxPTest_b_5 ( .xin(redist3_signX_uid25_fpToFxPTest_b_3_q), .xout(redist4_signX_uid25_fpToFxPTest_b_5_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // udfExpVal_uid28_fpToFxPTest(CONSTANT,27) + assign udfExpVal_uid28_fpToFxPTest_q = 8'b01111101; + + // udf_uid29_fpToFxPTest(COMPARE,28)@0 + 1 + assign udf_uid29_fpToFxPTest_a = {{3{udfExpVal_uid28_fpToFxPTest_q[7]}}, udfExpVal_uid28_fpToFxPTest_q}; + assign udf_uid29_fpToFxPTest_b = {3'b000, exp_x_uid9_fpToFxPTest_b}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + udf_uid29_fpToFxPTest_o <= 11'b0; + end + else if (en == 1'b1) + begin + udf_uid29_fpToFxPTest_o <= $signed(udf_uid29_fpToFxPTest_a) - $signed(udf_uid29_fpToFxPTest_b); + end + end + assign udf_uid29_fpToFxPTest_n[0] = ~ (udf_uid29_fpToFxPTest_o[10]); + + // redist1_udf_uid29_fpToFxPTest_n_5(DELAY,87) + dspba_delay_ver #( .width(1), .depth(4), .reset_kind("ASYNC") ) + redist1_udf_uid29_fpToFxPTest_n_5 ( .xin(udf_uid29_fpToFxPTest_n), .xout(redist1_udf_uid29_fpToFxPTest_n_5_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // sPostRnd_uid46_fpToFxPTest(BITSELECT,45)@4 + assign sPostRnd_uid46_fpToFxPTest_in = {{1{sPostRndFull_uid44_fpToFxPTest_q[33]}}, sPostRndFull_uid44_fpToFxPTest_q}; + assign sPostRnd_uid46_fpToFxPTest_b = sPostRnd_uid46_fpToFxPTest_in[34:1]; + + // rndOvfPos_uid47_fpToFxPTest(COMPARE,46)@4 + assign rndOvfPos_uid47_fpToFxPTest_a = {4'b0000, maxPosValueS_uid39_fpToFxPTest_q}; + assign rndOvfPos_uid47_fpToFxPTest_b = {{2{sPostRnd_uid46_fpToFxPTest_b[33]}}, sPostRnd_uid46_fpToFxPTest_b}; + assign rndOvfPos_uid47_fpToFxPTest_o = $signed(rndOvfPos_uid47_fpToFxPTest_a) - $signed(rndOvfPos_uid47_fpToFxPTest_b); + assign rndOvfPos_uid47_fpToFxPTest_c[0] = rndOvfPos_uid47_fpToFxPTest_o[35]; + + // ovfExpVal_uid26_fpToFxPTest(CONSTANT,25) + assign ovfExpVal_uid26_fpToFxPTest_q = 9'b010011110; + + // ovfExpRange_uid27_fpToFxPTest(COMPARE,26)@0 + 1 + assign ovfExpRange_uid27_fpToFxPTest_a = {3'b000, exp_x_uid9_fpToFxPTest_b}; + assign ovfExpRange_uid27_fpToFxPTest_b = {{2{ovfExpVal_uid26_fpToFxPTest_q[8]}}, ovfExpVal_uid26_fpToFxPTest_q}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + ovfExpRange_uid27_fpToFxPTest_o <= 11'b0; + end + else if (en == 1'b1) + begin + ovfExpRange_uid27_fpToFxPTest_o <= $signed(ovfExpRange_uid27_fpToFxPTest_a) - $signed(ovfExpRange_uid27_fpToFxPTest_b); + end + end + assign ovfExpRange_uid27_fpToFxPTest_n[0] = ~ (ovfExpRange_uid27_fpToFxPTest_o[10]); + + // redist2_ovfExpRange_uid27_fpToFxPTest_n_4(DELAY,88) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist2_ovfExpRange_uid27_fpToFxPTest_n_4 ( .xin(ovfExpRange_uid27_fpToFxPTest_n), .xout(redist2_ovfExpRange_uid27_fpToFxPTest_n_4_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // cstZeroWF_uid7_fpToFxPTest(CONSTANT,6) + assign cstZeroWF_uid7_fpToFxPTest_q = 23'b00000000000000000000000; + + // fracXIsZero_uid13_fpToFxPTest(LOGICAL,12)@2 + 1 + assign fracXIsZero_uid13_fpToFxPTest_qi = cstZeroWF_uid7_fpToFxPTest_q == redist8_frac_x_uid10_fpToFxPTest_b_2_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + fracXIsZero_uid13_fpToFxPTest_delay ( .xin(fracXIsZero_uid13_fpToFxPTest_qi), .xout(fracXIsZero_uid13_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist5_fracXIsZero_uid13_fpToFxPTest_q_2(DELAY,91) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist5_fracXIsZero_uid13_fpToFxPTest_q_2 ( .xin(fracXIsZero_uid13_fpToFxPTest_q), .xout(redist5_fracXIsZero_uid13_fpToFxPTest_q_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // cstAllOWE_uid6_fpToFxPTest(CONSTANT,5) + assign cstAllOWE_uid6_fpToFxPTest_q = 8'b11111111; + + // expXIsMax_uid12_fpToFxPTest(LOGICAL,11)@0 + 1 + assign expXIsMax_uid12_fpToFxPTest_qi = exp_x_uid9_fpToFxPTest_b == cstAllOWE_uid6_fpToFxPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + expXIsMax_uid12_fpToFxPTest_delay ( .xin(expXIsMax_uid12_fpToFxPTest_qi), .xout(expXIsMax_uid12_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist6_expXIsMax_uid12_fpToFxPTest_q_4(DELAY,92) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist6_expXIsMax_uid12_fpToFxPTest_q_4 ( .xin(expXIsMax_uid12_fpToFxPTest_q), .xout(redist6_expXIsMax_uid12_fpToFxPTest_q_4_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excI_x_uid15_fpToFxPTest(LOGICAL,14)@4 + assign excI_x_uid15_fpToFxPTest_q = redist6_expXIsMax_uid12_fpToFxPTest_q_4_q & redist5_fracXIsZero_uid13_fpToFxPTest_q_2_q; + + // fracXIsNotZero_uid14_fpToFxPTest(LOGICAL,13)@4 + assign fracXIsNotZero_uid14_fpToFxPTest_q = ~ (redist5_fracXIsZero_uid13_fpToFxPTest_q_2_q); + + // excN_x_uid16_fpToFxPTest(LOGICAL,15)@4 + assign excN_x_uid16_fpToFxPTest_q = redist6_expXIsMax_uid12_fpToFxPTest_q_4_q & fracXIsNotZero_uid14_fpToFxPTest_q; + + // ovfPostRnd_uid48_fpToFxPTest(LOGICAL,47)@4 + 1 + assign ovfPostRnd_uid48_fpToFxPTest_qi = excN_x_uid16_fpToFxPTest_q | excI_x_uid15_fpToFxPTest_q | redist2_ovfExpRange_uid27_fpToFxPTest_n_4_q | rndOvfPos_uid47_fpToFxPTest_c; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + ovfPostRnd_uid48_fpToFxPTest_delay ( .xin(ovfPostRnd_uid48_fpToFxPTest_qi), .xout(ovfPostRnd_uid48_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // muxSelConc_uid49_fpToFxPTest(BITJOIN,48)@5 + assign muxSelConc_uid49_fpToFxPTest_q = {redist4_signX_uid25_fpToFxPTest_b_5_q, redist1_udf_uid29_fpToFxPTest_n_5_q, ovfPostRnd_uid48_fpToFxPTest_q}; + + // muxSel_uid50_fpToFxPTest(LOOKUP,49)@5 + always @(muxSelConc_uid49_fpToFxPTest_q) + begin + // Begin reserved scope level + unique case (muxSelConc_uid49_fpToFxPTest_q) + 3'b000 : muxSel_uid50_fpToFxPTest_q = 2'b00; + 3'b001 : muxSel_uid50_fpToFxPTest_q = 2'b01; + 3'b010 : muxSel_uid50_fpToFxPTest_q = 2'b11; + 3'b011 : muxSel_uid50_fpToFxPTest_q = 2'b11; + 3'b100 : muxSel_uid50_fpToFxPTest_q = 2'b00; + 3'b101 : muxSel_uid50_fpToFxPTest_q = 2'b10; + 3'b110 : muxSel_uid50_fpToFxPTest_q = 2'b11; + 3'b111 : muxSel_uid50_fpToFxPTest_q = 2'b11; + default : begin + // unreachable + muxSel_uid50_fpToFxPTest_q = 2'bxx; + end + endcase + // End reserved scope level + end + + // finalOut_uid52_fpToFxPTest(MUX,51)@5 + assign finalOut_uid52_fpToFxPTest_s = muxSel_uid50_fpToFxPTest_q; + always @(finalOut_uid52_fpToFxPTest_s or en or redist0_sPostRnd_uid45_fpToFxPTest_b_1_q or maxPosValueS_uid39_fpToFxPTest_q or maxNegValueS_uid40_fpToFxPTest_q or maxNegValueU_uid51_fpToFxPTest_q) + begin + unique case (finalOut_uid52_fpToFxPTest_s) + 2'b00 : finalOut_uid52_fpToFxPTest_q = redist0_sPostRnd_uid45_fpToFxPTest_b_1_q; + 2'b01 : finalOut_uid52_fpToFxPTest_q = maxPosValueS_uid39_fpToFxPTest_q; + 2'b10 : finalOut_uid52_fpToFxPTest_q = maxNegValueS_uid40_fpToFxPTest_q; + 2'b11 : finalOut_uid52_fpToFxPTest_q = maxNegValueU_uid51_fpToFxPTest_q; + default : finalOut_uid52_fpToFxPTest_q = 32'b0; + endcase + end + + // xOut(GPOUT,4)@5 + assign q = finalOut_uid52_fpToFxPTest_q; + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_ftou.sv b/hw/rtl/fp_cores/altera/acl_fp_ftou.sv new file mode 100644 index 00000000..06a67a6a --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_ftou.sv @@ -0,0 +1,503 @@ +// ------------------------------------------------------------------------- +// High Level Design Compiler for Intel(R) FPGAs Version 17.1 (Release Build #273) +// Quartus Prime development tool and MATLAB/Simulink Interface +// +// Legal Notice: Copyright 2017 Intel Corporation. All rights reserved. +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly +// subject to the terms and conditions of the Intel FPGA Software License +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for +// the sole purpose of programming logic devices manufactured by Intel +// and sold by Intel or its authorized distributors. Please refer to the +// applicable agreement for further details. +// --------------------------------------------------------------------------- + +// SystemVerilog created from acl_fp_ftou +// SystemVerilog created on Wed Aug 5 12:58:15 2020 + + +(* altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 10037; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 15400; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 12020; -name MESSAGE_DISABLE 12030; -name MESSAGE_DISABLE 12010; -name MESSAGE_DISABLE 12110; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 13410; -name MESSAGE_DISABLE 113007; -name MESSAGE_DISABLE 10958" *) +module acl_fp_ftou ( + input wire [31:0] a, + input wire [0:0] en, + output wire [31:0] q, + input wire clk, + input wire areset + ); + + wire [0:0] GND_q; + wire [0:0] VCC_q; + wire [7:0] cstAllOWE_uid6_fpToFxPTest_q; + wire [22:0] cstZeroWF_uid7_fpToFxPTest_q; + wire [7:0] cstAllZWE_uid8_fpToFxPTest_q; + wire [7:0] exp_x_uid9_fpToFxPTest_b; + wire [22:0] frac_x_uid10_fpToFxPTest_b; + wire [0:0] excZ_x_uid11_fpToFxPTest_qi; + reg [0:0] excZ_x_uid11_fpToFxPTest_q; + wire [0:0] expXIsMax_uid12_fpToFxPTest_qi; + reg [0:0] expXIsMax_uid12_fpToFxPTest_q; + wire [0:0] fracXIsZero_uid13_fpToFxPTest_qi; + reg [0:0] fracXIsZero_uid13_fpToFxPTest_q; + wire [0:0] fracXIsNotZero_uid14_fpToFxPTest_q; + wire [0:0] excI_x_uid15_fpToFxPTest_q; + wire [0:0] excN_x_uid16_fpToFxPTest_q; + wire [0:0] invExcXZ_uid22_fpToFxPTest_q; + wire [23:0] oFracX_uid23_fpToFxPTest_q; + wire [0:0] signX_uid25_fpToFxPTest_b; + wire [8:0] ovfExpVal_uid26_fpToFxPTest_q; + wire [10:0] ovf_uid27_fpToFxPTest_a; + wire [10:0] ovf_uid27_fpToFxPTest_b; + logic [10:0] ovf_uid27_fpToFxPTest_o; + wire [0:0] ovf_uid27_fpToFxPTest_n; + wire [0:0] negOrOvf_uid28_fpToFxPTest_q; + wire [7:0] udfExpVal_uid29_fpToFxPTest_q; + wire [10:0] udf_uid30_fpToFxPTest_a; + wire [10:0] udf_uid30_fpToFxPTest_b; + logic [10:0] udf_uid30_fpToFxPTest_o; + wire [0:0] udf_uid30_fpToFxPTest_n; + wire [8:0] ovfExpVal_uid31_fpToFxPTest_q; + wire [10:0] shiftValE_uid32_fpToFxPTest_a; + wire [10:0] shiftValE_uid32_fpToFxPTest_b; + logic [10:0] shiftValE_uid32_fpToFxPTest_o; + wire [9:0] shiftValE_uid32_fpToFxPTest_q; + wire [5:0] shiftValRaw_uid33_fpToFxPTest_in; + wire [5:0] shiftValRaw_uid33_fpToFxPTest_b; + wire [5:0] maxShiftCst_uid34_fpToFxPTest_q; + wire [11:0] shiftOutOfRange_uid35_fpToFxPTest_a; + wire [11:0] shiftOutOfRange_uid35_fpToFxPTest_b; + logic [11:0] shiftOutOfRange_uid35_fpToFxPTest_o; + wire [0:0] shiftOutOfRange_uid35_fpToFxPTest_n; + wire [0:0] shiftVal_uid36_fpToFxPTest_s; + reg [5:0] shiftVal_uid36_fpToFxPTest_q; + wire [8:0] zPadd_uid37_fpToFxPTest_q; + wire [32:0] shifterIn_uid38_fpToFxPTest_q; + wire [31:0] maxPosValueU_uid40_fpToFxPTest_q; + wire [31:0] maxNegValueU_uid41_fpToFxPTest_q; + wire [33:0] zRightShiferNoStickyOut_uid43_fpToFxPTest_q; + wire [34:0] sPostRndFull_uid44_fpToFxPTest_a; + wire [34:0] sPostRndFull_uid44_fpToFxPTest_b; + logic [34:0] sPostRndFull_uid44_fpToFxPTest_o; + wire [34:0] sPostRndFull_uid44_fpToFxPTest_q; + wire [32:0] sPostRnd_uid45_fpToFxPTest_in; + wire [31:0] sPostRnd_uid45_fpToFxPTest_b; + wire [33:0] sPostRndFullMSBU_uid46_fpToFxPTest_in; + wire [0:0] sPostRndFullMSBU_uid46_fpToFxPTest_b; + wire [0:0] ovfPostRnd_uid47_fpToFxPTest_qi; + reg [0:0] ovfPostRnd_uid47_fpToFxPTest_q; + wire [2:0] muxSelConc_uid48_fpToFxPTest_q; + reg [1:0] muxSel_uid49_fpToFxPTest_q; + wire [1:0] finalOut_uid51_fpToFxPTest_s; + reg [31:0] finalOut_uid51_fpToFxPTest_q; + wire [16:0] rightShiftStage0Idx1Rng16_uid55_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [15:0] rightShiftStage0Idx1Pad16_uid56_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [32:0] rightShiftStage0Idx1_uid57_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [0:0] rightShiftStage0Idx2Rng32_uid58_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [32:0] rightShiftStage0Idx2_uid60_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [32:0] rightShiftStage0Idx3_uid61_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [1:0] rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_s; + reg [32:0] rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [28:0] rightShiftStage1Idx1Rng4_uid64_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [3:0] rightShiftStage1Idx1Pad4_uid65_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [32:0] rightShiftStage1Idx1_uid66_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [24:0] rightShiftStage1Idx2Rng8_uid67_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [32:0] rightShiftStage1Idx2_uid69_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [20:0] rightShiftStage1Idx3Rng12_uid70_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [11:0] rightShiftStage1Idx3Pad12_uid71_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [32:0] rightShiftStage1Idx3_uid72_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [1:0] rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_s; + reg [32:0] rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [31:0] rightShiftStage2Idx1Rng1_uid75_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [32:0] rightShiftStage2Idx1_uid77_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [30:0] rightShiftStage2Idx2Rng2_uid78_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [1:0] rightShiftStage2Idx2Pad2_uid79_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [32:0] rightShiftStage2Idx2_uid80_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [29:0] rightShiftStage2Idx3Rng3_uid81_rightShiferNoStickyOut_uid39_fpToFxPTest_b; + wire [2:0] rightShiftStage2Idx3Pad3_uid82_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [32:0] rightShiftStage2Idx3_uid83_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [1:0] rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_s; + reg [32:0] rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + wire [1:0] rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_b; + wire [1:0] rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_c; + wire [1:0] rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_d; + reg [31:0] redist0_sPostRnd_uid45_fpToFxPTest_b_1_q; + reg [0:0] redist1_udf_uid30_fpToFxPTest_n_4_q; + reg [0:0] redist2_ovf_uid27_fpToFxPTest_n_3_q; + reg [0:0] redist3_signX_uid25_fpToFxPTest_b_3_q; + reg [0:0] redist4_signX_uid25_fpToFxPTest_b_4_q; + reg [0:0] redist5_expXIsMax_uid12_fpToFxPTest_q_3_q; + reg [0:0] redist6_excZ_x_uid11_fpToFxPTest_q_2_q; + reg [22:0] redist7_frac_x_uid10_fpToFxPTest_b_2_q; + + + // maxNegValueU_uid41_fpToFxPTest(CONSTANT,40) + assign maxNegValueU_uid41_fpToFxPTest_q = 32'b00000000000000000000000000000000; + + // maxPosValueU_uid40_fpToFxPTest(CONSTANT,39) + assign maxPosValueU_uid40_fpToFxPTest_q = 32'b11111111111111111111111111111111; + + // VCC(CONSTANT,1) + assign VCC_q = 1'b1; + + // GND(CONSTANT,0) + assign GND_q = 1'b0; + + // rightShiftStage2Idx3Pad3_uid82_rightShiferNoStickyOut_uid39_fpToFxPTest(CONSTANT,81) + assign rightShiftStage2Idx3Pad3_uid82_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 3'b000; + + // rightShiftStage2Idx3Rng3_uid81_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,80)@2 + assign rightShiftStage2Idx3Rng3_uid81_rightShiferNoStickyOut_uid39_fpToFxPTest_b = rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q[32:3]; + + // rightShiftStage2Idx3_uid83_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,82)@2 + assign rightShiftStage2Idx3_uid83_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {rightShiftStage2Idx3Pad3_uid82_rightShiferNoStickyOut_uid39_fpToFxPTest_q, rightShiftStage2Idx3Rng3_uid81_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // rightShiftStage2Idx2Pad2_uid79_rightShiferNoStickyOut_uid39_fpToFxPTest(CONSTANT,78) + assign rightShiftStage2Idx2Pad2_uid79_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 2'b00; + + // rightShiftStage2Idx2Rng2_uid78_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,77)@2 + assign rightShiftStage2Idx2Rng2_uid78_rightShiferNoStickyOut_uid39_fpToFxPTest_b = rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q[32:2]; + + // rightShiftStage2Idx2_uid80_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,79)@2 + assign rightShiftStage2Idx2_uid80_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {rightShiftStage2Idx2Pad2_uid79_rightShiferNoStickyOut_uid39_fpToFxPTest_q, rightShiftStage2Idx2Rng2_uid78_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // rightShiftStage2Idx1Rng1_uid75_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,74)@2 + assign rightShiftStage2Idx1Rng1_uid75_rightShiferNoStickyOut_uid39_fpToFxPTest_b = rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q[32:1]; + + // rightShiftStage2Idx1_uid77_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,76)@2 + assign rightShiftStage2Idx1_uid77_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {GND_q, rightShiftStage2Idx1Rng1_uid75_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // rightShiftStage1Idx3Pad12_uid71_rightShiferNoStickyOut_uid39_fpToFxPTest(CONSTANT,70) + assign rightShiftStage1Idx3Pad12_uid71_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 12'b000000000000; + + // rightShiftStage1Idx3Rng12_uid70_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,69)@2 + assign rightShiftStage1Idx3Rng12_uid70_rightShiferNoStickyOut_uid39_fpToFxPTest_b = rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q[32:12]; + + // rightShiftStage1Idx3_uid72_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,71)@2 + assign rightShiftStage1Idx3_uid72_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {rightShiftStage1Idx3Pad12_uid71_rightShiferNoStickyOut_uid39_fpToFxPTest_q, rightShiftStage1Idx3Rng12_uid70_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // cstAllZWE_uid8_fpToFxPTest(CONSTANT,7) + assign cstAllZWE_uid8_fpToFxPTest_q = 8'b00000000; + + // rightShiftStage1Idx2Rng8_uid67_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,66)@2 + assign rightShiftStage1Idx2Rng8_uid67_rightShiferNoStickyOut_uid39_fpToFxPTest_b = rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q[32:8]; + + // rightShiftStage1Idx2_uid69_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,68)@2 + assign rightShiftStage1Idx2_uid69_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {cstAllZWE_uid8_fpToFxPTest_q, rightShiftStage1Idx2Rng8_uid67_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // rightShiftStage1Idx1Pad4_uid65_rightShiferNoStickyOut_uid39_fpToFxPTest(CONSTANT,64) + assign rightShiftStage1Idx1Pad4_uid65_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 4'b0000; + + // rightShiftStage1Idx1Rng4_uid64_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,63)@2 + assign rightShiftStage1Idx1Rng4_uid64_rightShiferNoStickyOut_uid39_fpToFxPTest_b = rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q[32:4]; + + // rightShiftStage1Idx1_uid66_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,65)@2 + assign rightShiftStage1Idx1_uid66_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {rightShiftStage1Idx1Pad4_uid65_rightShiferNoStickyOut_uid39_fpToFxPTest_q, rightShiftStage1Idx1Rng4_uid64_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // rightShiftStage0Idx3_uid61_rightShiferNoStickyOut_uid39_fpToFxPTest(CONSTANT,60) + assign rightShiftStage0Idx3_uid61_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 33'b000000000000000000000000000000000; + + // rightShiftStage0Idx2Rng32_uid58_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,57)@2 + assign rightShiftStage0Idx2Rng32_uid58_rightShiferNoStickyOut_uid39_fpToFxPTest_b = shifterIn_uid38_fpToFxPTest_q[32:32]; + + // rightShiftStage0Idx2_uid60_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,59)@2 + assign rightShiftStage0Idx2_uid60_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {maxNegValueU_uid41_fpToFxPTest_q, rightShiftStage0Idx2Rng32_uid58_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // rightShiftStage0Idx1Pad16_uid56_rightShiferNoStickyOut_uid39_fpToFxPTest(CONSTANT,55) + assign rightShiftStage0Idx1Pad16_uid56_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 16'b0000000000000000; + + // rightShiftStage0Idx1Rng16_uid55_rightShiferNoStickyOut_uid39_fpToFxPTest(BITSELECT,54)@2 + assign rightShiftStage0Idx1Rng16_uid55_rightShiferNoStickyOut_uid39_fpToFxPTest_b = shifterIn_uid38_fpToFxPTest_q[32:16]; + + // rightShiftStage0Idx1_uid57_rightShiferNoStickyOut_uid39_fpToFxPTest(BITJOIN,56)@2 + assign rightShiftStage0Idx1_uid57_rightShiferNoStickyOut_uid39_fpToFxPTest_q = {rightShiftStage0Idx1Pad16_uid56_rightShiferNoStickyOut_uid39_fpToFxPTest_q, rightShiftStage0Idx1Rng16_uid55_rightShiferNoStickyOut_uid39_fpToFxPTest_b}; + + // exp_x_uid9_fpToFxPTest(BITSELECT,8)@0 + assign exp_x_uid9_fpToFxPTest_b = a[30:23]; + + // excZ_x_uid11_fpToFxPTest(LOGICAL,10)@0 + 1 + assign excZ_x_uid11_fpToFxPTest_qi = exp_x_uid9_fpToFxPTest_b == cstAllZWE_uid8_fpToFxPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excZ_x_uid11_fpToFxPTest_delay ( .xin(excZ_x_uid11_fpToFxPTest_qi), .xout(excZ_x_uid11_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist6_excZ_x_uid11_fpToFxPTest_q_2(DELAY,93) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist6_excZ_x_uid11_fpToFxPTest_q_2 ( .xin(excZ_x_uid11_fpToFxPTest_q), .xout(redist6_excZ_x_uid11_fpToFxPTest_q_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // invExcXZ_uid22_fpToFxPTest(LOGICAL,21)@2 + assign invExcXZ_uid22_fpToFxPTest_q = ~ (redist6_excZ_x_uid11_fpToFxPTest_q_2_q); + + // frac_x_uid10_fpToFxPTest(BITSELECT,9)@0 + assign frac_x_uid10_fpToFxPTest_b = a[22:0]; + + // redist7_frac_x_uid10_fpToFxPTest_b_2(DELAY,94) + dspba_delay_ver #( .width(23), .depth(2), .reset_kind("ASYNC") ) + redist7_frac_x_uid10_fpToFxPTest_b_2 ( .xin(frac_x_uid10_fpToFxPTest_b), .xout(redist7_frac_x_uid10_fpToFxPTest_b_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // oFracX_uid23_fpToFxPTest(BITJOIN,22)@2 + assign oFracX_uid23_fpToFxPTest_q = {invExcXZ_uid22_fpToFxPTest_q, redist7_frac_x_uid10_fpToFxPTest_b_2_q}; + + // zPadd_uid37_fpToFxPTest(CONSTANT,36) + assign zPadd_uid37_fpToFxPTest_q = 9'b000000000; + + // shifterIn_uid38_fpToFxPTest(BITJOIN,37)@2 + assign shifterIn_uid38_fpToFxPTest_q = {oFracX_uid23_fpToFxPTest_q, zPadd_uid37_fpToFxPTest_q}; + + // rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest(MUX,62)@2 + assign rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_s = rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_b; + always @(rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_s or en or shifterIn_uid38_fpToFxPTest_q or rightShiftStage0Idx1_uid57_rightShiferNoStickyOut_uid39_fpToFxPTest_q or rightShiftStage0Idx2_uid60_rightShiferNoStickyOut_uid39_fpToFxPTest_q or rightShiftStage0Idx3_uid61_rightShiferNoStickyOut_uid39_fpToFxPTest_q) + begin + unique case (rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_s) + 2'b00 : rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q = shifterIn_uid38_fpToFxPTest_q; + 2'b01 : rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q = rightShiftStage0Idx1_uid57_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b10 : rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q = rightShiftStage0Idx2_uid60_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b11 : rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q = rightShiftStage0Idx3_uid61_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + default : rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 33'b0; + endcase + end + + // rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest(MUX,73)@2 + assign rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_s = rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_c; + always @(rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_s or en or rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q or rightShiftStage1Idx1_uid66_rightShiferNoStickyOut_uid39_fpToFxPTest_q or rightShiftStage1Idx2_uid69_rightShiferNoStickyOut_uid39_fpToFxPTest_q or rightShiftStage1Idx3_uid72_rightShiferNoStickyOut_uid39_fpToFxPTest_q) + begin + unique case (rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_s) + 2'b00 : rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q = rightShiftStage0_uid63_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b01 : rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q = rightShiftStage1Idx1_uid66_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b10 : rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q = rightShiftStage1Idx2_uid69_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b11 : rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q = rightShiftStage1Idx3_uid72_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + default : rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q = 33'b0; + endcase + end + + // maxShiftCst_uid34_fpToFxPTest(CONSTANT,33) + assign maxShiftCst_uid34_fpToFxPTest_q = 6'b100001; + + // ovfExpVal_uid31_fpToFxPTest(CONSTANT,30) + assign ovfExpVal_uid31_fpToFxPTest_q = 9'b010011110; + + // shiftValE_uid32_fpToFxPTest(SUB,31)@0 + 1 + assign shiftValE_uid32_fpToFxPTest_a = {{2{ovfExpVal_uid31_fpToFxPTest_q[8]}}, ovfExpVal_uid31_fpToFxPTest_q}; + assign shiftValE_uid32_fpToFxPTest_b = {3'b000, exp_x_uid9_fpToFxPTest_b}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + shiftValE_uid32_fpToFxPTest_o <= 11'b0; + end + else if (en == 1'b1) + begin + shiftValE_uid32_fpToFxPTest_o <= $signed(shiftValE_uid32_fpToFxPTest_a) - $signed(shiftValE_uid32_fpToFxPTest_b); + end + end + assign shiftValE_uid32_fpToFxPTest_q = shiftValE_uid32_fpToFxPTest_o[9:0]; + + // shiftValRaw_uid33_fpToFxPTest(BITSELECT,32)@1 + assign shiftValRaw_uid33_fpToFxPTest_in = shiftValE_uid32_fpToFxPTest_q[5:0]; + assign shiftValRaw_uid33_fpToFxPTest_b = shiftValRaw_uid33_fpToFxPTest_in[5:0]; + + // shiftOutOfRange_uid35_fpToFxPTest(COMPARE,34)@1 + assign shiftOutOfRange_uid35_fpToFxPTest_a = {{2{shiftValE_uid32_fpToFxPTest_q[9]}}, shiftValE_uid32_fpToFxPTest_q}; + assign shiftOutOfRange_uid35_fpToFxPTest_b = {6'b000000, maxShiftCst_uid34_fpToFxPTest_q}; + assign shiftOutOfRange_uid35_fpToFxPTest_o = $signed(shiftOutOfRange_uid35_fpToFxPTest_a) - $signed(shiftOutOfRange_uid35_fpToFxPTest_b); + assign shiftOutOfRange_uid35_fpToFxPTest_n[0] = ~ (shiftOutOfRange_uid35_fpToFxPTest_o[11]); + + // shiftVal_uid36_fpToFxPTest(MUX,35)@1 + 1 + assign shiftVal_uid36_fpToFxPTest_s = shiftOutOfRange_uid35_fpToFxPTest_n; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + shiftVal_uid36_fpToFxPTest_q <= 6'b0; + end + else if (en == 1'b1) + begin + unique case (shiftVal_uid36_fpToFxPTest_s) + 1'b0 : shiftVal_uid36_fpToFxPTest_q <= shiftValRaw_uid33_fpToFxPTest_b; + 1'b1 : shiftVal_uid36_fpToFxPTest_q <= maxShiftCst_uid34_fpToFxPTest_q; + default : shiftVal_uid36_fpToFxPTest_q <= 6'b0; + endcase + end + end + + // rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select(BITSELECT,86)@2 + assign rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_b = shiftVal_uid36_fpToFxPTest_q[5:4]; + assign rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_c = shiftVal_uid36_fpToFxPTest_q[3:2]; + assign rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_d = shiftVal_uid36_fpToFxPTest_q[1:0]; + + // rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest(MUX,84)@2 + 1 + assign rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_s = rightShiftStageSel5Dto4_uid62_rightShiferNoStickyOut_uid39_fpToFxPTest_merged_bit_select_d; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q <= 33'b0; + end + else if (en == 1'b1) + begin + unique case (rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_s) + 2'b00 : rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q <= rightShiftStage1_uid74_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b01 : rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q <= rightShiftStage2Idx1_uid77_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b10 : rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q <= rightShiftStage2Idx2_uid80_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + 2'b11 : rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q <= rightShiftStage2Idx3_uid83_rightShiferNoStickyOut_uid39_fpToFxPTest_q; + default : rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q <= 33'b0; + endcase + end + end + + // zRightShiferNoStickyOut_uid43_fpToFxPTest(BITJOIN,42)@3 + assign zRightShiferNoStickyOut_uid43_fpToFxPTest_q = {GND_q, rightShiftStage2_uid85_rightShiferNoStickyOut_uid39_fpToFxPTest_q}; + + // sPostRndFull_uid44_fpToFxPTest(ADD,43)@3 + assign sPostRndFull_uid44_fpToFxPTest_a = {1'b0, zRightShiferNoStickyOut_uid43_fpToFxPTest_q}; + assign sPostRndFull_uid44_fpToFxPTest_b = {34'b0000000000000000000000000000000000, VCC_q}; + assign sPostRndFull_uid44_fpToFxPTest_o = $unsigned(sPostRndFull_uid44_fpToFxPTest_a) + $unsigned(sPostRndFull_uid44_fpToFxPTest_b); + assign sPostRndFull_uid44_fpToFxPTest_q = sPostRndFull_uid44_fpToFxPTest_o[34:0]; + + // sPostRnd_uid45_fpToFxPTest(BITSELECT,44)@3 + assign sPostRnd_uid45_fpToFxPTest_in = sPostRndFull_uid44_fpToFxPTest_q[32:0]; + assign sPostRnd_uid45_fpToFxPTest_b = sPostRnd_uid45_fpToFxPTest_in[32:1]; + + // redist0_sPostRnd_uid45_fpToFxPTest_b_1(DELAY,87) + dspba_delay_ver #( .width(32), .depth(1), .reset_kind("ASYNC") ) + redist0_sPostRnd_uid45_fpToFxPTest_b_1 ( .xin(sPostRnd_uid45_fpToFxPTest_b), .xout(redist0_sPostRnd_uid45_fpToFxPTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // signX_uid25_fpToFxPTest(BITSELECT,24)@0 + assign signX_uid25_fpToFxPTest_b = a[31:31]; + + // redist3_signX_uid25_fpToFxPTest_b_3(DELAY,90) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist3_signX_uid25_fpToFxPTest_b_3 ( .xin(signX_uid25_fpToFxPTest_b), .xout(redist3_signX_uid25_fpToFxPTest_b_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist4_signX_uid25_fpToFxPTest_b_4(DELAY,91) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist4_signX_uid25_fpToFxPTest_b_4 ( .xin(redist3_signX_uid25_fpToFxPTest_b_3_q), .xout(redist4_signX_uid25_fpToFxPTest_b_4_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // udfExpVal_uid29_fpToFxPTest(CONSTANT,28) + assign udfExpVal_uid29_fpToFxPTest_q = 8'b01111101; + + // udf_uid30_fpToFxPTest(COMPARE,29)@0 + 1 + assign udf_uid30_fpToFxPTest_a = {{3{udfExpVal_uid29_fpToFxPTest_q[7]}}, udfExpVal_uid29_fpToFxPTest_q}; + assign udf_uid30_fpToFxPTest_b = {3'b000, exp_x_uid9_fpToFxPTest_b}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + udf_uid30_fpToFxPTest_o <= 11'b0; + end + else if (en == 1'b1) + begin + udf_uid30_fpToFxPTest_o <= $signed(udf_uid30_fpToFxPTest_a) - $signed(udf_uid30_fpToFxPTest_b); + end + end + assign udf_uid30_fpToFxPTest_n[0] = ~ (udf_uid30_fpToFxPTest_o[10]); + + // redist1_udf_uid30_fpToFxPTest_n_4(DELAY,88) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist1_udf_uid30_fpToFxPTest_n_4 ( .xin(udf_uid30_fpToFxPTest_n), .xout(redist1_udf_uid30_fpToFxPTest_n_4_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // sPostRndFullMSBU_uid46_fpToFxPTest(BITSELECT,45)@3 + assign sPostRndFullMSBU_uid46_fpToFxPTest_in = sPostRndFull_uid44_fpToFxPTest_q[33:0]; + assign sPostRndFullMSBU_uid46_fpToFxPTest_b = sPostRndFullMSBU_uid46_fpToFxPTest_in[33:33]; + + // ovfExpVal_uid26_fpToFxPTest(CONSTANT,25) + assign ovfExpVal_uid26_fpToFxPTest_q = 9'b010011111; + + // ovf_uid27_fpToFxPTest(COMPARE,26)@0 + 1 + assign ovf_uid27_fpToFxPTest_a = {3'b000, exp_x_uid9_fpToFxPTest_b}; + assign ovf_uid27_fpToFxPTest_b = {{2{ovfExpVal_uid26_fpToFxPTest_q[8]}}, ovfExpVal_uid26_fpToFxPTest_q}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + ovf_uid27_fpToFxPTest_o <= 11'b0; + end + else if (en == 1'b1) + begin + ovf_uid27_fpToFxPTest_o <= $signed(ovf_uid27_fpToFxPTest_a) - $signed(ovf_uid27_fpToFxPTest_b); + end + end + assign ovf_uid27_fpToFxPTest_n[0] = ~ (ovf_uid27_fpToFxPTest_o[10]); + + // redist2_ovf_uid27_fpToFxPTest_n_3(DELAY,89) + dspba_delay_ver #( .width(1), .depth(2), .reset_kind("ASYNC") ) + redist2_ovf_uid27_fpToFxPTest_n_3 ( .xin(ovf_uid27_fpToFxPTest_n), .xout(redist2_ovf_uid27_fpToFxPTest_n_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // negOrOvf_uid28_fpToFxPTest(LOGICAL,27)@3 + assign negOrOvf_uid28_fpToFxPTest_q = redist3_signX_uid25_fpToFxPTest_b_3_q | redist2_ovf_uid27_fpToFxPTest_n_3_q; + + // cstZeroWF_uid7_fpToFxPTest(CONSTANT,6) + assign cstZeroWF_uid7_fpToFxPTest_q = 23'b00000000000000000000000; + + // fracXIsZero_uid13_fpToFxPTest(LOGICAL,12)@2 + 1 + assign fracXIsZero_uid13_fpToFxPTest_qi = cstZeroWF_uid7_fpToFxPTest_q == redist7_frac_x_uid10_fpToFxPTest_b_2_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + fracXIsZero_uid13_fpToFxPTest_delay ( .xin(fracXIsZero_uid13_fpToFxPTest_qi), .xout(fracXIsZero_uid13_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // cstAllOWE_uid6_fpToFxPTest(CONSTANT,5) + assign cstAllOWE_uid6_fpToFxPTest_q = 8'b11111111; + + // expXIsMax_uid12_fpToFxPTest(LOGICAL,11)@0 + 1 + assign expXIsMax_uid12_fpToFxPTest_qi = exp_x_uid9_fpToFxPTest_b == cstAllOWE_uid6_fpToFxPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + expXIsMax_uid12_fpToFxPTest_delay ( .xin(expXIsMax_uid12_fpToFxPTest_qi), .xout(expXIsMax_uid12_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist5_expXIsMax_uid12_fpToFxPTest_q_3(DELAY,92) + dspba_delay_ver #( .width(1), .depth(2), .reset_kind("ASYNC") ) + redist5_expXIsMax_uid12_fpToFxPTest_q_3 ( .xin(expXIsMax_uid12_fpToFxPTest_q), .xout(redist5_expXIsMax_uid12_fpToFxPTest_q_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excI_x_uid15_fpToFxPTest(LOGICAL,14)@3 + assign excI_x_uid15_fpToFxPTest_q = redist5_expXIsMax_uid12_fpToFxPTest_q_3_q & fracXIsZero_uid13_fpToFxPTest_q; + + // fracXIsNotZero_uid14_fpToFxPTest(LOGICAL,13)@3 + assign fracXIsNotZero_uid14_fpToFxPTest_q = ~ (fracXIsZero_uid13_fpToFxPTest_q); + + // excN_x_uid16_fpToFxPTest(LOGICAL,15)@3 + assign excN_x_uid16_fpToFxPTest_q = redist5_expXIsMax_uid12_fpToFxPTest_q_3_q & fracXIsNotZero_uid14_fpToFxPTest_q; + + // ovfPostRnd_uid47_fpToFxPTest(LOGICAL,46)@3 + 1 + assign ovfPostRnd_uid47_fpToFxPTest_qi = excN_x_uid16_fpToFxPTest_q | excI_x_uid15_fpToFxPTest_q | negOrOvf_uid28_fpToFxPTest_q | sPostRndFullMSBU_uid46_fpToFxPTest_b; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + ovfPostRnd_uid47_fpToFxPTest_delay ( .xin(ovfPostRnd_uid47_fpToFxPTest_qi), .xout(ovfPostRnd_uid47_fpToFxPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // muxSelConc_uid48_fpToFxPTest(BITJOIN,47)@4 + assign muxSelConc_uid48_fpToFxPTest_q = {redist4_signX_uid25_fpToFxPTest_b_4_q, redist1_udf_uid30_fpToFxPTest_n_4_q, ovfPostRnd_uid47_fpToFxPTest_q}; + + // muxSel_uid49_fpToFxPTest(LOOKUP,48)@4 + always @(muxSelConc_uid48_fpToFxPTest_q) + begin + // Begin reserved scope level + unique case (muxSelConc_uid48_fpToFxPTest_q) + 3'b000 : muxSel_uid49_fpToFxPTest_q = 2'b00; + 3'b001 : muxSel_uid49_fpToFxPTest_q = 2'b01; + 3'b010 : muxSel_uid49_fpToFxPTest_q = 2'b11; + 3'b011 : muxSel_uid49_fpToFxPTest_q = 2'b00; + 3'b100 : muxSel_uid49_fpToFxPTest_q = 2'b10; + 3'b101 : muxSel_uid49_fpToFxPTest_q = 2'b10; + 3'b110 : muxSel_uid49_fpToFxPTest_q = 2'b10; + 3'b111 : muxSel_uid49_fpToFxPTest_q = 2'b10; + default : begin + // unreachable + muxSel_uid49_fpToFxPTest_q = 2'bxx; + end + endcase + // End reserved scope level + end + + // finalOut_uid51_fpToFxPTest(MUX,50)@4 + assign finalOut_uid51_fpToFxPTest_s = muxSel_uid49_fpToFxPTest_q; + always @(finalOut_uid51_fpToFxPTest_s or en or redist0_sPostRnd_uid45_fpToFxPTest_b_1_q or maxPosValueU_uid40_fpToFxPTest_q or maxNegValueU_uid41_fpToFxPTest_q) + begin + unique case (finalOut_uid51_fpToFxPTest_s) + 2'b00 : finalOut_uid51_fpToFxPTest_q = redist0_sPostRnd_uid45_fpToFxPTest_b_1_q; + 2'b01 : finalOut_uid51_fpToFxPTest_q = maxPosValueU_uid40_fpToFxPTest_q; + 2'b10 : finalOut_uid51_fpToFxPTest_q = maxNegValueU_uid41_fpToFxPTest_q; + 2'b11 : finalOut_uid51_fpToFxPTest_q = maxNegValueU_uid41_fpToFxPTest_q; + default : finalOut_uid51_fpToFxPTest_q = 32'b0; + endcase + end + + // xOut(GPOUT,4)@4 + assign q = finalOut_uid51_fpToFxPTest_q; + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_itof.sv b/hw/rtl/fp_cores/altera/acl_fp_itof.sv new file mode 100644 index 00000000..43b15b93 --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_itof.sv @@ -0,0 +1,522 @@ +// ------------------------------------------------------------------------- +// High Level Design Compiler for Intel(R) FPGAs Version 17.1 (Release Build #273) +// Quartus Prime development tool and MATLAB/Simulink Interface +// +// Legal Notice: Copyright 2017 Intel Corporation. All rights reserved. +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly +// subject to the terms and conditions of the Intel FPGA Software License +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for +// the sole purpose of programming logic devices manufactured by Intel +// and sold by Intel or its authorized distributors. Please refer to the +// applicable agreement for further details. +// --------------------------------------------------------------------------- + +// SystemVerilog created from acl_fp_itof +// SystemVerilog created on Wed Aug 5 12:58:15 2020 + + +(* altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 10037; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 15400; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 12020; -name MESSAGE_DISABLE 12030; -name MESSAGE_DISABLE 12010; -name MESSAGE_DISABLE 12110; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 13410; -name MESSAGE_DISABLE 113007; -name MESSAGE_DISABLE 10958" *) +module acl_fp_itof ( + input wire [31:0] a, + input wire [0:0] en, + output wire [31:0] q, + input wire clk, + input wire areset + ); + + wire [0:0] GND_q; + wire [0:0] signX_uid6_fxpToFPTest_b; + wire [31:0] xXorSign_uid7_fxpToFPTest_b; + wire [31:0] xXorSign_uid7_fxpToFPTest_q; + wire [32:0] yE_uid8_fxpToFPTest_a; + wire [32:0] yE_uid8_fxpToFPTest_b; + logic [32:0] yE_uid8_fxpToFPTest_o; + wire [32:0] yE_uid8_fxpToFPTest_q; + wire [31:0] y_uid9_fxpToFPTest_in; + wire [31:0] y_uid9_fxpToFPTest_b; + wire [5:0] maxCount_uid11_fxpToFPTest_q; + wire [0:0] inIsZero_uid12_fxpToFPTest_qi; + reg [0:0] inIsZero_uid12_fxpToFPTest_q; + wire [7:0] msbIn_uid13_fxpToFPTest_q; + wire [8:0] expPreRnd_uid14_fxpToFPTest_a; + wire [8:0] expPreRnd_uid14_fxpToFPTest_b; + logic [8:0] expPreRnd_uid14_fxpToFPTest_o; + wire [8:0] expPreRnd_uid14_fxpToFPTest_q; + wire [32:0] expFracRnd_uid16_fxpToFPTest_q; + wire [0:0] sticky_uid20_fxpToFPTest_qi; + reg [0:0] sticky_uid20_fxpToFPTest_q; + wire [0:0] nr_uid21_fxpToFPTest_q; + wire [0:0] rnd_uid22_fxpToFPTest_qi; + reg [0:0] rnd_uid22_fxpToFPTest_q; + wire [34:0] expFracR_uid24_fxpToFPTest_a; + wire [34:0] expFracR_uid24_fxpToFPTest_b; + logic [34:0] expFracR_uid24_fxpToFPTest_o; + wire [33:0] expFracR_uid24_fxpToFPTest_q; + wire [23:0] fracR_uid25_fxpToFPTest_in; + wire [22:0] fracR_uid25_fxpToFPTest_b; + wire [9:0] expR_uid26_fxpToFPTest_b; + wire [11:0] udf_uid27_fxpToFPTest_a; + wire [11:0] udf_uid27_fxpToFPTest_b; + logic [11:0] udf_uid27_fxpToFPTest_o; + wire [0:0] udf_uid27_fxpToFPTest_n; + wire [7:0] expInf_uid28_fxpToFPTest_q; + wire [11:0] ovf_uid29_fxpToFPTest_a; + wire [11:0] ovf_uid29_fxpToFPTest_b; + logic [11:0] ovf_uid29_fxpToFPTest_o; + wire [0:0] ovf_uid29_fxpToFPTest_n; + wire [0:0] excSelector_uid30_fxpToFPTest_q; + wire [22:0] fracZ_uid31_fxpToFPTest_q; + wire [0:0] fracRPostExc_uid32_fxpToFPTest_s; + reg [22:0] fracRPostExc_uid32_fxpToFPTest_q; + wire [0:0] udfOrInZero_uid33_fxpToFPTest_q; + wire [1:0] excSelector_uid34_fxpToFPTest_q; + wire [7:0] expZ_uid37_fxpToFPTest_q; + wire [7:0] expR_uid38_fxpToFPTest_in; + wire [7:0] expR_uid38_fxpToFPTest_b; + wire [1:0] expRPostExc_uid39_fxpToFPTest_s; + reg [7:0] expRPostExc_uid39_fxpToFPTest_q; + wire [31:0] outRes_uid40_fxpToFPTest_q; + wire [31:0] zs_uid42_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_qi; + reg [0:0] vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_s; + reg [31:0] vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [15:0] zs_uid47_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [31:0] cStage_uid52_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_s; + reg [31:0] vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [31:0] cStage_uid59_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_s; + reg [31:0] vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [3:0] zs_uid61_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [31:0] cStage_uid66_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_s; + reg [31:0] vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [1:0] zs_uid68_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [31:0] cStage_uid73_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_s; + reg [31:0] vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vCount_uid77_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [31:0] cStage_uid80_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [0:0] vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_s; + reg [31:0] vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [5:0] vCount_uid82_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [7:0] vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_a; + wire [7:0] vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_b; + logic [7:0] vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_o; + wire [0:0] vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_c; + wire [0:0] vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_s; + reg [5:0] vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_q; + wire [1:0] l_uid17_fxpToFPTest_merged_bit_select_in; + wire [0:0] l_uid17_fxpToFPTest_merged_bit_select_b; + wire [0:0] l_uid17_fxpToFPTest_merged_bit_select_c; + wire [15:0] rVStage_uid48_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b; + wire [15:0] rVStage_uid48_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c; + wire [7:0] rVStage_uid55_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b; + wire [23:0] rVStage_uid55_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c; + wire [3:0] rVStage_uid62_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b; + wire [27:0] rVStage_uid62_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c; + wire [1:0] rVStage_uid69_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b; + wire [29:0] rVStage_uid69_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c; + wire [0:0] rVStage_uid76_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b; + wire [30:0] rVStage_uid76_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c; + wire [30:0] fracRnd_uid15_fxpToFPTest_merged_bit_select_in; + wire [23:0] fracRnd_uid15_fxpToFPTest_merged_bit_select_b; + wire [6:0] fracRnd_uid15_fxpToFPTest_merged_bit_select_c; + reg [23:0] redist0_fracRnd_uid15_fxpToFPTest_merged_bit_select_b_1_q; + reg [0:0] redist1_vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q_1_q; + reg [0:0] redist2_vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q_1_q; + reg [0:0] redist3_vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q_2_q; + reg [0:0] redist4_vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q_3_q; + reg [0:0] redist5_vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q_4_q; + reg [9:0] redist6_expR_uid26_fxpToFPTest_b_1_q; + reg [22:0] redist7_fracR_uid25_fxpToFPTest_b_1_q; + reg [32:0] redist8_expFracRnd_uid16_fxpToFPTest_q_1_q; + reg [0:0] redist9_inIsZero_uid12_fxpToFPTest_q_2_q; + reg [31:0] redist10_y_uid9_fxpToFPTest_b_1_q; + reg [31:0] redist11_y_uid9_fxpToFPTest_b_2_q; + reg [0:0] redist12_signX_uid6_fxpToFPTest_b_8_q; + + + // signX_uid6_fxpToFPTest(BITSELECT,5)@0 + assign signX_uid6_fxpToFPTest_b = a[31:31]; + + // redist12_signX_uid6_fxpToFPTest_b_8(DELAY,107) + dspba_delay_ver #( .width(1), .depth(8), .reset_kind("ASYNC") ) + redist12_signX_uid6_fxpToFPTest_b_8 ( .xin(signX_uid6_fxpToFPTest_b), .xout(redist12_signX_uid6_fxpToFPTest_b_8_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expInf_uid28_fxpToFPTest(CONSTANT,27) + assign expInf_uid28_fxpToFPTest_q = 8'b11111111; + + // expZ_uid37_fxpToFPTest(CONSTANT,36) + assign expZ_uid37_fxpToFPTest_q = 8'b00000000; + + // rVStage_uid76_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select(BITSELECT,93)@5 + assign rVStage_uid76_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b = vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q[31:31]; + assign rVStage_uid76_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c = vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q[30:0]; + + // GND(CONSTANT,0) + assign GND_q = 1'b0; + + // cStage_uid80_lzcShifterZ1_uid10_fxpToFPTest(BITJOIN,79)@5 + assign cStage_uid80_lzcShifterZ1_uid10_fxpToFPTest_q = {rVStage_uid76_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c, GND_q}; + + // rVStage_uid69_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select(BITSELECT,92)@4 + assign rVStage_uid69_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b = vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_q[31:30]; + assign rVStage_uid69_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c = vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_q[29:0]; + + // zs_uid68_lzcShifterZ1_uid10_fxpToFPTest(CONSTANT,67) + assign zs_uid68_lzcShifterZ1_uid10_fxpToFPTest_q = 2'b00; + + // cStage_uid73_lzcShifterZ1_uid10_fxpToFPTest(BITJOIN,72)@4 + assign cStage_uid73_lzcShifterZ1_uid10_fxpToFPTest_q = {rVStage_uid69_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c, zs_uid68_lzcShifterZ1_uid10_fxpToFPTest_q}; + + // rVStage_uid62_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select(BITSELECT,91)@4 + assign rVStage_uid62_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b = vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q[31:28]; + assign rVStage_uid62_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c = vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q[27:0]; + + // zs_uid61_lzcShifterZ1_uid10_fxpToFPTest(CONSTANT,60) + assign zs_uid61_lzcShifterZ1_uid10_fxpToFPTest_q = 4'b0000; + + // cStage_uid66_lzcShifterZ1_uid10_fxpToFPTest(BITJOIN,65)@4 + assign cStage_uid66_lzcShifterZ1_uid10_fxpToFPTest_q = {rVStage_uid62_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c, zs_uid61_lzcShifterZ1_uid10_fxpToFPTest_q}; + + // rVStage_uid55_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select(BITSELECT,90)@3 + assign rVStage_uid55_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b = vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q[31:24]; + assign rVStage_uid55_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c = vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q[23:0]; + + // cStage_uid59_lzcShifterZ1_uid10_fxpToFPTest(BITJOIN,58)@3 + assign cStage_uid59_lzcShifterZ1_uid10_fxpToFPTest_q = {rVStage_uid55_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c, expZ_uid37_fxpToFPTest_q}; + + // rVStage_uid48_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select(BITSELECT,89)@2 + assign rVStage_uid48_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b = vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_q[31:16]; + assign rVStage_uid48_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c = vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_q[15:0]; + + // zs_uid47_lzcShifterZ1_uid10_fxpToFPTest(CONSTANT,46) + assign zs_uid47_lzcShifterZ1_uid10_fxpToFPTest_q = 16'b0000000000000000; + + // cStage_uid52_lzcShifterZ1_uid10_fxpToFPTest(BITJOIN,51)@2 + assign cStage_uid52_lzcShifterZ1_uid10_fxpToFPTest_q = {rVStage_uid48_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_c, zs_uid47_lzcShifterZ1_uid10_fxpToFPTest_q}; + + // zs_uid42_lzcShifterZ1_uid10_fxpToFPTest(CONSTANT,41) + assign zs_uid42_lzcShifterZ1_uid10_fxpToFPTest_q = 32'b00000000000000000000000000000000; + + // xXorSign_uid7_fxpToFPTest(LOGICAL,6)@0 + assign xXorSign_uid7_fxpToFPTest_b = {{31{signX_uid6_fxpToFPTest_b[0]}}, signX_uid6_fxpToFPTest_b}; + assign xXorSign_uid7_fxpToFPTest_q = a ^ xXorSign_uid7_fxpToFPTest_b; + + // yE_uid8_fxpToFPTest(ADD,7)@0 + assign yE_uid8_fxpToFPTest_a = {1'b0, xXorSign_uid7_fxpToFPTest_q}; + assign yE_uid8_fxpToFPTest_b = {32'b00000000000000000000000000000000, signX_uid6_fxpToFPTest_b}; + assign yE_uid8_fxpToFPTest_o = $unsigned(yE_uid8_fxpToFPTest_a) + $unsigned(yE_uid8_fxpToFPTest_b); + assign yE_uid8_fxpToFPTest_q = yE_uid8_fxpToFPTest_o[32:0]; + + // y_uid9_fxpToFPTest(BITSELECT,8)@0 + assign y_uid9_fxpToFPTest_in = yE_uid8_fxpToFPTest_q[31:0]; + assign y_uid9_fxpToFPTest_b = y_uid9_fxpToFPTest_in[31:0]; + + // redist10_y_uid9_fxpToFPTest_b_1(DELAY,105) + dspba_delay_ver #( .width(32), .depth(1), .reset_kind("ASYNC") ) + redist10_y_uid9_fxpToFPTest_b_1 ( .xin(y_uid9_fxpToFPTest_b), .xout(redist10_y_uid9_fxpToFPTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist11_y_uid9_fxpToFPTest_b_2(DELAY,106) + dspba_delay_ver #( .width(32), .depth(1), .reset_kind("ASYNC") ) + redist11_y_uid9_fxpToFPTest_b_2 ( .xin(redist10_y_uid9_fxpToFPTest_b_1_q), .xout(redist11_y_uid9_fxpToFPTest_b_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest(LOGICAL,43)@1 + 1 + assign vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_qi = redist10_y_uid9_fxpToFPTest_b_1_q == zs_uid42_lzcShifterZ1_uid10_fxpToFPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_delay ( .xin(vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_qi), .xout(vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest(MUX,45)@2 + assign vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_s = vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q; + always @(vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_s or en or redist11_y_uid9_fxpToFPTest_b_2_q or zs_uid42_lzcShifterZ1_uid10_fxpToFPTest_q) + begin + unique case (vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_s) + 1'b0 : vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_q = redist11_y_uid9_fxpToFPTest_b_2_q; + 1'b1 : vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_q = zs_uid42_lzcShifterZ1_uid10_fxpToFPTest_q; + default : vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_q = 32'b0; + endcase + end + + // vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest(LOGICAL,48)@2 + assign vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q = rVStage_uid48_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b == zs_uid47_lzcShifterZ1_uid10_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest(MUX,52)@2 + 1 + assign vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_s = vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q <= 32'b0; + end + else if (en == 1'b1) + begin + unique case (vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_s) + 1'b0 : vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q <= vStagei_uid46_lzcShifterZ1_uid10_fxpToFPTest_q; + 1'b1 : vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q <= cStage_uid52_lzcShifterZ1_uid10_fxpToFPTest_q; + default : vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q <= 32'b0; + endcase + end + end + + // vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest(LOGICAL,55)@3 + assign vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q = rVStage_uid55_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b == expZ_uid37_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest(MUX,59)@3 + 1 + assign vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_s = vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q <= 32'b0; + end + else if (en == 1'b1) + begin + unique case (vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_s) + 1'b0 : vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q <= vStagei_uid53_lzcShifterZ1_uid10_fxpToFPTest_q; + 1'b1 : vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q <= cStage_uid59_lzcShifterZ1_uid10_fxpToFPTest_q; + default : vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q <= 32'b0; + endcase + end + end + + // vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest(LOGICAL,62)@4 + assign vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q = rVStage_uid62_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b == zs_uid61_lzcShifterZ1_uid10_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest(MUX,66)@4 + assign vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_s = vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q; + always @(vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_s or en or vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q or cStage_uid66_lzcShifterZ1_uid10_fxpToFPTest_q) + begin + unique case (vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_s) + 1'b0 : vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_q = vStagei_uid60_lzcShifterZ1_uid10_fxpToFPTest_q; + 1'b1 : vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_q = cStage_uid66_lzcShifterZ1_uid10_fxpToFPTest_q; + default : vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_q = 32'b0; + endcase + end + + // vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest(LOGICAL,69)@4 + assign vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q = rVStage_uid69_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b == zs_uid68_lzcShifterZ1_uid10_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest(MUX,73)@4 + 1 + assign vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_s = vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q <= 32'b0; + end + else if (en == 1'b1) + begin + unique case (vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_s) + 1'b0 : vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q <= vStagei_uid67_lzcShifterZ1_uid10_fxpToFPTest_q; + 1'b1 : vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q <= cStage_uid73_lzcShifterZ1_uid10_fxpToFPTest_q; + default : vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q <= 32'b0; + endcase + end + end + + // vCount_uid77_lzcShifterZ1_uid10_fxpToFPTest(LOGICAL,76)@5 + assign vCount_uid77_lzcShifterZ1_uid10_fxpToFPTest_q = rVStage_uid76_lzcShifterZ1_uid10_fxpToFPTest_merged_bit_select_b == GND_q ? 1'b1 : 1'b0; + + // vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest(MUX,80)@5 + assign vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_s = vCount_uid77_lzcShifterZ1_uid10_fxpToFPTest_q; + always @(vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_s or en or vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q or cStage_uid80_lzcShifterZ1_uid10_fxpToFPTest_q) + begin + unique case (vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_s) + 1'b0 : vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_q = vStagei_uid74_lzcShifterZ1_uid10_fxpToFPTest_q; + 1'b1 : vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_q = cStage_uid80_lzcShifterZ1_uid10_fxpToFPTest_q; + default : vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_q = 32'b0; + endcase + end + + // fracRnd_uid15_fxpToFPTest_merged_bit_select(BITSELECT,94)@5 + assign fracRnd_uid15_fxpToFPTest_merged_bit_select_in = vStagei_uid81_lzcShifterZ1_uid10_fxpToFPTest_q[30:0]; + assign fracRnd_uid15_fxpToFPTest_merged_bit_select_b = fracRnd_uid15_fxpToFPTest_merged_bit_select_in[30:7]; + assign fracRnd_uid15_fxpToFPTest_merged_bit_select_c = fracRnd_uid15_fxpToFPTest_merged_bit_select_in[6:0]; + + // sticky_uid20_fxpToFPTest(LOGICAL,19)@5 + 1 + assign sticky_uid20_fxpToFPTest_qi = fracRnd_uid15_fxpToFPTest_merged_bit_select_c != 7'b0000000 ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + sticky_uid20_fxpToFPTest_delay ( .xin(sticky_uid20_fxpToFPTest_qi), .xout(sticky_uid20_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // nr_uid21_fxpToFPTest(LOGICAL,20)@6 + assign nr_uid21_fxpToFPTest_q = ~ (l_uid17_fxpToFPTest_merged_bit_select_c); + + // maxCount_uid11_fxpToFPTest(CONSTANT,10) + assign maxCount_uid11_fxpToFPTest_q = 6'b100000; + + // redist5_vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q_4(DELAY,100) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist5_vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q_4 ( .xin(vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q), .xout(redist5_vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q_4_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist4_vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q_3(DELAY,99) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist4_vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q_3 ( .xin(vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q), .xout(redist4_vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist3_vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q_2(DELAY,98) + dspba_delay_ver #( .width(1), .depth(2), .reset_kind("ASYNC") ) + redist3_vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q_2 ( .xin(vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q), .xout(redist3_vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist2_vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q_1(DELAY,97) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist2_vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q_1 ( .xin(vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q), .xout(redist2_vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist1_vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q_1(DELAY,96) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist1_vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q_1 ( .xin(vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q), .xout(redist1_vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // vCount_uid82_lzcShifterZ1_uid10_fxpToFPTest(BITJOIN,81)@5 + assign vCount_uid82_lzcShifterZ1_uid10_fxpToFPTest_q = {redist5_vCount_uid44_lzcShifterZ1_uid10_fxpToFPTest_q_4_q, redist4_vCount_uid49_lzcShifterZ1_uid10_fxpToFPTest_q_3_q, redist3_vCount_uid56_lzcShifterZ1_uid10_fxpToFPTest_q_2_q, redist2_vCount_uid63_lzcShifterZ1_uid10_fxpToFPTest_q_1_q, redist1_vCount_uid70_lzcShifterZ1_uid10_fxpToFPTest_q_1_q, vCount_uid77_lzcShifterZ1_uid10_fxpToFPTest_q}; + + // vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest(COMPARE,83)@5 + assign vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_a = {2'b00, maxCount_uid11_fxpToFPTest_q}; + assign vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_b = {2'b00, vCount_uid82_lzcShifterZ1_uid10_fxpToFPTest_q}; + assign vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_o = $unsigned(vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_a) - $unsigned(vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_b); + assign vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_c[0] = vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_o[7]; + + // vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest(MUX,85)@5 + 1 + assign vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_s = vCountBig_uid84_lzcShifterZ1_uid10_fxpToFPTest_c; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_q <= 6'b0; + end + else if (en == 1'b1) + begin + unique case (vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_s) + 1'b0 : vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_q <= vCount_uid82_lzcShifterZ1_uid10_fxpToFPTest_q; + 1'b1 : vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_q <= maxCount_uid11_fxpToFPTest_q; + default : vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_q <= 6'b0; + endcase + end + end + + // msbIn_uid13_fxpToFPTest(CONSTANT,12) + assign msbIn_uid13_fxpToFPTest_q = 8'b10011110; + + // expPreRnd_uid14_fxpToFPTest(SUB,13)@6 + assign expPreRnd_uid14_fxpToFPTest_a = {1'b0, msbIn_uid13_fxpToFPTest_q}; + assign expPreRnd_uid14_fxpToFPTest_b = {3'b000, vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_q}; + assign expPreRnd_uid14_fxpToFPTest_o = $unsigned(expPreRnd_uid14_fxpToFPTest_a) - $unsigned(expPreRnd_uid14_fxpToFPTest_b); + assign expPreRnd_uid14_fxpToFPTest_q = expPreRnd_uid14_fxpToFPTest_o[8:0]; + + // redist0_fracRnd_uid15_fxpToFPTest_merged_bit_select_b_1(DELAY,95) + dspba_delay_ver #( .width(24), .depth(1), .reset_kind("ASYNC") ) + redist0_fracRnd_uid15_fxpToFPTest_merged_bit_select_b_1 ( .xin(fracRnd_uid15_fxpToFPTest_merged_bit_select_b), .xout(redist0_fracRnd_uid15_fxpToFPTest_merged_bit_select_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expFracRnd_uid16_fxpToFPTest(BITJOIN,15)@6 + assign expFracRnd_uid16_fxpToFPTest_q = {expPreRnd_uid14_fxpToFPTest_q, redist0_fracRnd_uid15_fxpToFPTest_merged_bit_select_b_1_q}; + + // l_uid17_fxpToFPTest_merged_bit_select(BITSELECT,88)@6 + assign l_uid17_fxpToFPTest_merged_bit_select_in = expFracRnd_uid16_fxpToFPTest_q[1:0]; + assign l_uid17_fxpToFPTest_merged_bit_select_b = l_uid17_fxpToFPTest_merged_bit_select_in[1:1]; + assign l_uid17_fxpToFPTest_merged_bit_select_c = l_uid17_fxpToFPTest_merged_bit_select_in[0:0]; + + // rnd_uid22_fxpToFPTest(LOGICAL,21)@6 + 1 + assign rnd_uid22_fxpToFPTest_qi = l_uid17_fxpToFPTest_merged_bit_select_b | nr_uid21_fxpToFPTest_q | sticky_uid20_fxpToFPTest_q; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + rnd_uid22_fxpToFPTest_delay ( .xin(rnd_uid22_fxpToFPTest_qi), .xout(rnd_uid22_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist8_expFracRnd_uid16_fxpToFPTest_q_1(DELAY,103) + dspba_delay_ver #( .width(33), .depth(1), .reset_kind("ASYNC") ) + redist8_expFracRnd_uid16_fxpToFPTest_q_1 ( .xin(expFracRnd_uid16_fxpToFPTest_q), .xout(redist8_expFracRnd_uid16_fxpToFPTest_q_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expFracR_uid24_fxpToFPTest(ADD,23)@7 + assign expFracR_uid24_fxpToFPTest_a = {{2{redist8_expFracRnd_uid16_fxpToFPTest_q_1_q[32]}}, redist8_expFracRnd_uid16_fxpToFPTest_q_1_q}; + assign expFracR_uid24_fxpToFPTest_b = {34'b0000000000000000000000000000000000, rnd_uid22_fxpToFPTest_q}; + assign expFracR_uid24_fxpToFPTest_o = $signed(expFracR_uid24_fxpToFPTest_a) + $signed(expFracR_uid24_fxpToFPTest_b); + assign expFracR_uid24_fxpToFPTest_q = expFracR_uid24_fxpToFPTest_o[33:0]; + + // expR_uid26_fxpToFPTest(BITSELECT,25)@7 + assign expR_uid26_fxpToFPTest_b = expFracR_uid24_fxpToFPTest_q[33:24]; + + // redist6_expR_uid26_fxpToFPTest_b_1(DELAY,101) + dspba_delay_ver #( .width(10), .depth(1), .reset_kind("ASYNC") ) + redist6_expR_uid26_fxpToFPTest_b_1 ( .xin(expR_uid26_fxpToFPTest_b), .xout(redist6_expR_uid26_fxpToFPTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expR_uid38_fxpToFPTest(BITSELECT,37)@8 + assign expR_uid38_fxpToFPTest_in = redist6_expR_uid26_fxpToFPTest_b_1_q[7:0]; + assign expR_uid38_fxpToFPTest_b = expR_uid38_fxpToFPTest_in[7:0]; + + // ovf_uid29_fxpToFPTest(COMPARE,28)@8 + assign ovf_uid29_fxpToFPTest_a = {{2{redist6_expR_uid26_fxpToFPTest_b_1_q[9]}}, redist6_expR_uid26_fxpToFPTest_b_1_q}; + assign ovf_uid29_fxpToFPTest_b = {4'b0000, expInf_uid28_fxpToFPTest_q}; + assign ovf_uid29_fxpToFPTest_o = $signed(ovf_uid29_fxpToFPTest_a) - $signed(ovf_uid29_fxpToFPTest_b); + assign ovf_uid29_fxpToFPTest_n[0] = ~ (ovf_uid29_fxpToFPTest_o[11]); + + // inIsZero_uid12_fxpToFPTest(LOGICAL,11)@6 + 1 + assign inIsZero_uid12_fxpToFPTest_qi = vCountFinal_uid86_lzcShifterZ1_uid10_fxpToFPTest_q == maxCount_uid11_fxpToFPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + inIsZero_uid12_fxpToFPTest_delay ( .xin(inIsZero_uid12_fxpToFPTest_qi), .xout(inIsZero_uid12_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist9_inIsZero_uid12_fxpToFPTest_q_2(DELAY,104) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist9_inIsZero_uid12_fxpToFPTest_q_2 ( .xin(inIsZero_uid12_fxpToFPTest_q), .xout(redist9_inIsZero_uid12_fxpToFPTest_q_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // udf_uid27_fxpToFPTest(COMPARE,26)@8 + assign udf_uid27_fxpToFPTest_a = {11'b00000000000, GND_q}; + assign udf_uid27_fxpToFPTest_b = {{2{redist6_expR_uid26_fxpToFPTest_b_1_q[9]}}, redist6_expR_uid26_fxpToFPTest_b_1_q}; + assign udf_uid27_fxpToFPTest_o = $signed(udf_uid27_fxpToFPTest_a) - $signed(udf_uid27_fxpToFPTest_b); + assign udf_uid27_fxpToFPTest_n[0] = ~ (udf_uid27_fxpToFPTest_o[11]); + + // udfOrInZero_uid33_fxpToFPTest(LOGICAL,32)@8 + assign udfOrInZero_uid33_fxpToFPTest_q = udf_uid27_fxpToFPTest_n | redist9_inIsZero_uid12_fxpToFPTest_q_2_q; + + // excSelector_uid34_fxpToFPTest(BITJOIN,33)@8 + assign excSelector_uid34_fxpToFPTest_q = {ovf_uid29_fxpToFPTest_n, udfOrInZero_uid33_fxpToFPTest_q}; + + // expRPostExc_uid39_fxpToFPTest(MUX,38)@8 + assign expRPostExc_uid39_fxpToFPTest_s = excSelector_uid34_fxpToFPTest_q; + always @(expRPostExc_uid39_fxpToFPTest_s or en or expR_uid38_fxpToFPTest_b or expZ_uid37_fxpToFPTest_q or expInf_uid28_fxpToFPTest_q) + begin + unique case (expRPostExc_uid39_fxpToFPTest_s) + 2'b00 : expRPostExc_uid39_fxpToFPTest_q = expR_uid38_fxpToFPTest_b; + 2'b01 : expRPostExc_uid39_fxpToFPTest_q = expZ_uid37_fxpToFPTest_q; + 2'b10 : expRPostExc_uid39_fxpToFPTest_q = expInf_uid28_fxpToFPTest_q; + 2'b11 : expRPostExc_uid39_fxpToFPTest_q = expInf_uid28_fxpToFPTest_q; + default : expRPostExc_uid39_fxpToFPTest_q = 8'b0; + endcase + end + + // fracZ_uid31_fxpToFPTest(CONSTANT,30) + assign fracZ_uid31_fxpToFPTest_q = 23'b00000000000000000000000; + + // fracR_uid25_fxpToFPTest(BITSELECT,24)@7 + assign fracR_uid25_fxpToFPTest_in = expFracR_uid24_fxpToFPTest_q[23:0]; + assign fracR_uid25_fxpToFPTest_b = fracR_uid25_fxpToFPTest_in[23:1]; + + // redist7_fracR_uid25_fxpToFPTest_b_1(DELAY,102) + dspba_delay_ver #( .width(23), .depth(1), .reset_kind("ASYNC") ) + redist7_fracR_uid25_fxpToFPTest_b_1 ( .xin(fracR_uid25_fxpToFPTest_b), .xout(redist7_fracR_uid25_fxpToFPTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excSelector_uid30_fxpToFPTest(LOGICAL,29)@8 + assign excSelector_uid30_fxpToFPTest_q = redist9_inIsZero_uid12_fxpToFPTest_q_2_q | ovf_uid29_fxpToFPTest_n | udf_uid27_fxpToFPTest_n; + + // fracRPostExc_uid32_fxpToFPTest(MUX,31)@8 + assign fracRPostExc_uid32_fxpToFPTest_s = excSelector_uid30_fxpToFPTest_q; + always @(fracRPostExc_uid32_fxpToFPTest_s or en or redist7_fracR_uid25_fxpToFPTest_b_1_q or fracZ_uid31_fxpToFPTest_q) + begin + unique case (fracRPostExc_uid32_fxpToFPTest_s) + 1'b0 : fracRPostExc_uid32_fxpToFPTest_q = redist7_fracR_uid25_fxpToFPTest_b_1_q; + 1'b1 : fracRPostExc_uid32_fxpToFPTest_q = fracZ_uid31_fxpToFPTest_q; + default : fracRPostExc_uid32_fxpToFPTest_q = 23'b0; + endcase + end + + // outRes_uid40_fxpToFPTest(BITJOIN,39)@8 + assign outRes_uid40_fxpToFPTest_q = {redist12_signX_uid6_fxpToFPTest_b_8_q, expRPostExc_uid39_fxpToFPTest_q, fracRPostExc_uid32_fxpToFPTest_q}; + + // xOut(GPOUT,4)@8 + assign q = outRes_uid40_fxpToFPTest_q; + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_msub.v b/hw/rtl/fp_cores/altera/acl_fp_msub.v deleted file mode 100644 index 09c0de6a..00000000 --- a/hw/rtl/fp_cores/altera/acl_fp_msub.v +++ /dev/null @@ -1,63 +0,0 @@ -// (C) 1992-2014 Altera Corporation. All rights reserved. -// Your use of Altera Corporation's design tools, logic functions and other -// software and tools, and its AMPP partner logic functions, and any output -// files any of the foregoing (including device programming or simulation -// files), and any associated documentation or information are expressly subject -// to the terms and conditions of the Altera Program License Subscription -// Agreement, Altera MegaCore Function License Agreement, or other applicable -// license agreement, including, without limitation, that your use is for the -// sole purpose of programming logic devices manufactured by Altera and sold by -// Altera or its authorized distributors. Please refer to the applicable -// agreement for further details. - -module acl_fp_multadd(dataa, datab, datac, clock, enable, result); -// a*b + c -input [31:0] dataa; -input [31:0] datab; -input [31:0] datac; -input clock; -input enable; -output [31:0] result; - -// FP MAC wysiwyg -twentynm_fp_mac mac_fp_wys ( - // inputs - .accumulate(), - .chainin_overflow(), - .chainin_invalid(), - .chainin_underflow(), - .chainin_inexact(), - .ax(datac), - .ay(datab), - .az(dataa), - .clk({2'b00,clock}), - .ena({2'b11,enable}), - .aclr(2'b00), - .chainin(), - // outputs - .overflow(), - .invalid(), - .underflow(), - .inexact(), - .chainout_overflow(), - .chainout_invalid(), - .chainout_underflow(), - .chainout_inexact(), - .resulta(result), - .chainout() -); -defparam mac_fp_wys.operation_mode = "sp_mult_add"; -defparam mac_fp_wys.use_chainin = "false"; -defparam mac_fp_wys.adder_subtract = "true"; -defparam mac_fp_wys.ax_clock = "0"; -defparam mac_fp_wys.ay_clock = "0"; -defparam mac_fp_wys.az_clock = "0"; -defparam mac_fp_wys.output_clock = "0"; -defparam mac_fp_wys.accumulate_clock = "none"; -defparam mac_fp_wys.ax_chainin_pl_clock = "0"; -defparam mac_fp_wys.accum_pipeline_clock = "none"; -defparam mac_fp_wys.mult_pipeline_clock = "0"; -defparam mac_fp_wys.adder_input_clock = "0"; -defparam mac_fp_wys.accum_adder_clock = "none"; - -endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/acl_fp_mul.v b/hw/rtl/fp_cores/altera/acl_fp_mul.v deleted file mode 100644 index a19eda1d..00000000 --- a/hw/rtl/fp_cores/altera/acl_fp_mul.v +++ /dev/null @@ -1,67 +0,0 @@ -// (C) 1992-2016 Intel Corporation. -// Intel, the Intel logo, Intel, MegaCore, NIOS II, Quartus and TalkBack words -// and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. -// and/or other countries. Other marks and brands may be claimed as the property -// of others. See Trademarks on intel.com for full list of Intel trademarks or -// the Trademarks & Brands Names Database (if Intel) or See www.Intel.com/legal (if Altera) -// Your use of Intel Corporation's design tools, logic functions and other -// software and tools, and its AMPP partner logic functions, and any output -// files any of the foregoing (including device programming or simulation -// files), and any associated documentation or information are expressly subject -// to the terms and conditions of the Altera Program License Subscription -// Agreement, Intel MegaCore Function License Agreement, or other applicable -// license agreement, including, without limitation, that your use is for the -// sole purpose of programming logic devices manufactured by Intel and sold by -// Intel or its authorized distributors. Please refer to the applicable -// agreement for further details. - -module acl_fp_mul(dataa, datab, clock, enable, result); - -input [31:0] dataa; -input [31:0] datab; -input clock, enable; - -output [31:0] result; - -// FP MAC wysiwyg -twentynm_fp_mac mac_fp_wys ( - // inputs - .accumulate(), - .chainin_overflow(), - .chainin_invalid(), - .chainin_underflow(), - .chainin_inexact(), - .ax(), - .ay(datab), - .az(dataa), - .clk({2'b00,clock}), - .ena({2'b11,enable}), - .aclr(2'b00), - .chainin(), - // outputs - .overflow(), - .invalid(), - .underflow(), - .inexact(), - .chainout_overflow(), - .chainout_invalid(), - .chainout_underflow(), - .chainout_inexact(), - .resulta(result), - .chainout() -); -defparam mac_fp_wys.operation_mode = "sp_mult"; -defparam mac_fp_wys.use_chainin = "false"; -defparam mac_fp_wys.adder_subtract = "false"; -defparam mac_fp_wys.ax_clock = "none"; -defparam mac_fp_wys.ay_clock = "0"; -defparam mac_fp_wys.az_clock = "0"; -defparam mac_fp_wys.output_clock = "0"; -defparam mac_fp_wys.accumulate_clock = "none"; -defparam mac_fp_wys.ax_chainin_pl_clock = "none"; -defparam mac_fp_wys.accum_pipeline_clock = "none"; -defparam mac_fp_wys.mult_pipeline_clock = "0"; -defparam mac_fp_wys.adder_input_clock = "none"; -defparam mac_fp_wys.accum_adder_clock = "none"; - -endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_nmadd.v b/hw/rtl/fp_cores/altera/acl_fp_nmadd.v deleted file mode 100644 index f7ad8aa8..00000000 --- a/hw/rtl/fp_cores/altera/acl_fp_nmadd.v +++ /dev/null @@ -1,63 +0,0 @@ -// (C) 1992-2014 Altera Corporation. All rights reserved. -// Your use of Altera Corporation's design tools, logic functions and other -// software and tools, and its AMPP partner logic functions, and any output -// files any of the foregoing (including device programming or simulation -// files), and any associated documentation or information are expressly subject -// to the terms and conditions of the Altera Program License Subscription -// Agreement, Altera MegaCore Function License Agreement, or other applicable -// license agreement, including, without limitation, that your use is for the -// sole purpose of programming logic devices manufactured by Altera and sold by -// Altera or its authorized distributors. Please refer to the applicable -// agreement for further details. - -module acl_fp_multadd(dataa, datab, datac, clock, enable, result); -// a*b + c -input [31:0] dataa; -input [31:0] datab; -input [31:0] datac; -input clock; -input enable; -output [31:0] result; - -// FP MAC wysiwyg -twentynm_fp_mac mac_fp_wys ( - // inputs - .accumulate(), - .chainin_overflow(), - .chainin_invalid(), - .chainin_underflow(), - .chainin_inexact(), - .ax(datac), - .ay(datab), - .az(dataa), - .clk({2'b00,clock}), - .ena({2'b11,enable}), - .aclr(2'b00), - .chainin(), - // outputs - .overflow(), - .invalid(), - .underflow(), - .inexact(), - .chainout_overflow(), - .chainout_invalid(), - .chainout_underflow(), - .chainout_inexact(), - .resulta(result), - .chainout() -); -defparam mac_fp_wys.operation_mode = "sp_mult_add"; -defparam mac_fp_wys.use_chainin = "false"; -defparam mac_fp_wys.adder_subtract = "false"; -defparam mac_fp_wys.ax_clock = "0"; -defparam mac_fp_wys.ay_clock = "0"; -defparam mac_fp_wys.az_clock = "0"; -defparam mac_fp_wys.output_clock = "0"; -defparam mac_fp_wys.accumulate_clock = "none"; -defparam mac_fp_wys.ax_chainin_pl_clock = "0"; -defparam mac_fp_wys.accum_pipeline_clock = "none"; -defparam mac_fp_wys.mult_pipeline_clock = "0"; -defparam mac_fp_wys.adder_input_clock = "0"; -defparam mac_fp_wys.accum_adder_clock = "none"; - -endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/acl_fp_sqrt.sv b/hw/rtl/fp_cores/altera/acl_fp_sqrt.sv new file mode 100644 index 00000000..82888773 --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_sqrt.sv @@ -0,0 +1,1128 @@ +// ------------------------------------------------------------------------- +// High Level Design Compiler for Intel(R) FPGAs Version 17.1 (Release Build #273) +// Quartus Prime development tool and MATLAB/Simulink Interface +// +// Legal Notice: Copyright 2017 Intel Corporation. All rights reserved. +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly +// subject to the terms and conditions of the Intel FPGA Software License +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for +// the sole purpose of programming logic devices manufactured by Intel +// and sold by Intel or its authorized distributors. Please refer to the +// applicable agreement for further details. +// --------------------------------------------------------------------------- + +// SystemVerilog created from acl_fp_sqrt +// SystemVerilog created on Wed Aug 5 12:58:14 2020 + + +(* altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 10037; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 15400; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 12020; -name MESSAGE_DISABLE 12030; -name MESSAGE_DISABLE 12010; -name MESSAGE_DISABLE 12110; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 13410; -name MESSAGE_DISABLE 113007; -name MESSAGE_DISABLE 10958" *) +module acl_fp_sqrt ( + input wire [31:0] a, + input wire [0:0] en, + output wire [31:0] q, + input wire clk, + input wire areset + ); + + wire [0:0] GND_q; + wire [0:0] VCC_q; + wire [7:0] expX_uid6_fpSqrtTest_b; + wire [0:0] signX_uid7_fpSqrtTest_b; + wire [7:0] cstAllOWE_uid8_fpSqrtTest_q; + wire [22:0] cstZeroWF_uid9_fpSqrtTest_q; + wire [7:0] cstAllZWE_uid10_fpSqrtTest_q; + wire [22:0] frac_x_uid12_fpSqrtTest_b; + wire [0:0] excZ_x_uid13_fpSqrtTest_qi; + reg [0:0] excZ_x_uid13_fpSqrtTest_q; + wire [0:0] expXIsMax_uid14_fpSqrtTest_qi; + reg [0:0] expXIsMax_uid14_fpSqrtTest_q; + wire [0:0] fracXIsZero_uid15_fpSqrtTest_qi; + reg [0:0] fracXIsZero_uid15_fpSqrtTest_q; + wire [0:0] fracXIsNotZero_uid16_fpSqrtTest_q; + wire [0:0] excI_x_uid17_fpSqrtTest_q; + wire [0:0] excN_x_uid18_fpSqrtTest_q; + wire [0:0] invExpXIsMax_uid19_fpSqrtTest_q; + wire [0:0] InvExpXIsZero_uid20_fpSqrtTest_q; + wire [0:0] excR_x_uid21_fpSqrtTest_q; + wire [7:0] sBias_uid22_fpSqrtTest_q; + wire [8:0] expEvenSig_uid24_fpSqrtTest_a; + wire [8:0] expEvenSig_uid24_fpSqrtTest_b; + logic [8:0] expEvenSig_uid24_fpSqrtTest_o; + wire [8:0] expEvenSig_uid24_fpSqrtTest_q; + wire [7:0] expREven_uid25_fpSqrtTest_b; + wire [7:0] sBiasM1_uid26_fpSqrtTest_q; + wire [8:0] expOddSig_uid27_fpSqrtTest_a; + wire [8:0] expOddSig_uid27_fpSqrtTest_b; + logic [8:0] expOddSig_uid27_fpSqrtTest_o; + wire [8:0] expOddSig_uid27_fpSqrtTest_q; + wire [7:0] expROdd_uid28_fpSqrtTest_b; + wire [0:0] expX0PS_uid29_fpSqrtTest_in; + wire [0:0] expX0PS_uid29_fpSqrtTest_b; + wire [0:0] expOddSelect_uid30_fpSqrtTest_q; + wire [0:0] expRMux_uid31_fpSqrtTest_s; + reg [7:0] expRMux_uid31_fpSqrtTest_q; + wire [23:0] addrFull_uid33_fpSqrtTest_q; + wire [7:0] yAddr_uid35_fpSqrtTest_b; + wire [15:0] yForPe_uid36_fpSqrtTest_in; + wire [15:0] yForPe_uid36_fpSqrtTest_b; + wire [30:0] expInc_uid38_fpSqrtTest_in; + wire [0:0] expInc_uid38_fpSqrtTest_b; + wire [28:0] fracRPostProcessings_uid39_fpSqrtTest_in; + wire [22:0] fracRPostProcessings_uid39_fpSqrtTest_b; + wire [8:0] expR_uid40_fpSqrtTest_a; + wire [8:0] expR_uid40_fpSqrtTest_b; + logic [8:0] expR_uid40_fpSqrtTest_o; + wire [8:0] expR_uid40_fpSqrtTest_q; + wire [0:0] invSignX_uid41_fpSqrtTest_q; + wire [0:0] inInfAndNotNeg_uid42_fpSqrtTest_q; + wire [0:0] minReg_uid43_fpSqrtTest_q; + wire [0:0] minInf_uid44_fpSqrtTest_q; + wire [0:0] excRNaN_uid45_fpSqrtTest_q; + wire [2:0] excConc_uid46_fpSqrtTest_q; + wire [3:0] fracSelIn_uid47_fpSqrtTest_q; + reg [1:0] fracSel_uid48_fpSqrtTest_q; + wire [7:0] expRR_uid51_fpSqrtTest_in; + wire [7:0] expRR_uid51_fpSqrtTest_b; + wire [1:0] expRPostExc_uid53_fpSqrtTest_s; + reg [7:0] expRPostExc_uid53_fpSqrtTest_q; + wire [22:0] fracNaN_uid54_fpSqrtTest_q; + wire [1:0] fracRPostExc_uid58_fpSqrtTest_s; + reg [22:0] fracRPostExc_uid58_fpSqrtTest_q; + wire [0:0] negZero_uid59_fpSqrtTest_qi; + reg [0:0] negZero_uid59_fpSqrtTest_q; + wire [31:0] RSqrt_uid60_fpSqrtTest_q; + wire [11:0] yT1_uid74_invPolyEval_b; + wire [0:0] lowRangeB_uid76_invPolyEval_in; + wire [0:0] lowRangeB_uid76_invPolyEval_b; + wire [11:0] highBBits_uid77_invPolyEval_b; + wire [21:0] s1sumAHighB_uid78_invPolyEval_a; + wire [21:0] s1sumAHighB_uid78_invPolyEval_b; + logic [21:0] s1sumAHighB_uid78_invPolyEval_o; + wire [21:0] s1sumAHighB_uid78_invPolyEval_q; + wire [22:0] s1_uid79_invPolyEval_q; + wire [1:0] lowRangeB_uid82_invPolyEval_in; + wire [1:0] lowRangeB_uid82_invPolyEval_b; + wire [21:0] highBBits_uid83_invPolyEval_b; + wire [29:0] s2sumAHighB_uid84_invPolyEval_a; + wire [29:0] s2sumAHighB_uid84_invPolyEval_b; + logic [29:0] s2sumAHighB_uid84_invPolyEval_o; + wire [29:0] s2sumAHighB_uid84_invPolyEval_q; + wire [31:0] s2_uid85_invPolyEval_q; + wire [12:0] osig_uid88_pT1_uid75_invPolyEval_b; + wire [23:0] osig_uid91_pT2_uid81_invPolyEval_b; + wire memoryC0_uid62_sqrtTables_lutmem_reset0; + wire [28:0] memoryC0_uid62_sqrtTables_lutmem_ia; + wire [7:0] memoryC0_uid62_sqrtTables_lutmem_aa; + wire [7:0] memoryC0_uid62_sqrtTables_lutmem_ab; + wire [28:0] memoryC0_uid62_sqrtTables_lutmem_ir; + wire [28:0] memoryC0_uid62_sqrtTables_lutmem_r; + wire memoryC1_uid65_sqrtTables_lutmem_reset0; + wire [20:0] memoryC1_uid65_sqrtTables_lutmem_ia; + wire [7:0] memoryC1_uid65_sqrtTables_lutmem_aa; + wire [7:0] memoryC1_uid65_sqrtTables_lutmem_ab; + wire [20:0] memoryC1_uid65_sqrtTables_lutmem_ir; + wire [20:0] memoryC1_uid65_sqrtTables_lutmem_r; + wire memoryC2_uid68_sqrtTables_lutmem_reset0; + wire [11:0] memoryC2_uid68_sqrtTables_lutmem_ia; + wire [7:0] memoryC2_uid68_sqrtTables_lutmem_aa; + wire [7:0] memoryC2_uid68_sqrtTables_lutmem_ab; + wire [11:0] memoryC2_uid68_sqrtTables_lutmem_ir; + wire [11:0] memoryC2_uid68_sqrtTables_lutmem_r; + wire prodXY_uid87_pT1_uid75_invPolyEval_cma_reset; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [11:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_a0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [11:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_a1 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [11:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_c0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [11:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_c1 [0:0]; + wire signed [12:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_l [0:0]; + wire signed [24:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_p [0:0]; + wire signed [24:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_u [0:0]; + wire signed [24:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_w [0:0]; + wire signed [24:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_x [0:0]; + wire signed [24:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_y [0:0]; + reg signed [24:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_s [0:0]; + wire [23:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_qq; + wire [23:0] prodXY_uid87_pT1_uid75_invPolyEval_cma_q; + wire prodXY_uid87_pT1_uid75_invPolyEval_cma_ena0; + wire prodXY_uid87_pT1_uid75_invPolyEval_cma_ena1; + wire prodXY_uid87_pT1_uid75_invPolyEval_cma_ena2; + wire prodXY_uid90_pT2_uid81_invPolyEval_cma_reset; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [15:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_a0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg [15:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_a1 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [22:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_c0 [0:0]; + (* preserve, altera_attribute = "-name allow_synch_ctrl_usage off" *) reg signed [22:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_c1 [0:0]; + wire signed [16:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_l [0:0]; + wire signed [39:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_p [0:0]; + wire signed [39:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_u [0:0]; + wire signed [39:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_w [0:0]; + wire signed [39:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_x [0:0]; + wire signed [39:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_y [0:0]; + reg signed [39:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_s [0:0]; + wire [38:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_qq; + wire [38:0] prodXY_uid90_pT2_uid81_invPolyEval_cma_q; + wire prodXY_uid90_pT2_uid81_invPolyEval_cma_ena0; + wire prodXY_uid90_pT2_uid81_invPolyEval_cma_ena1; + wire prodXY_uid90_pT2_uid81_invPolyEval_cma_ena2; + reg [0:0] redist0_lowRangeB_uid76_invPolyEval_b_1_q; + reg [0:0] redist1_negZero_uid59_fpSqrtTest_q_9_q; + reg [1:0] redist2_fracSel_uid48_fpSqrtTest_q_9_q; + reg [22:0] redist3_fracRPostProcessings_uid39_fpSqrtTest_b_1_q; + reg [0:0] redist4_expInc_uid38_fpSqrtTest_b_1_q; + reg [15:0] redist5_yForPe_uid36_fpSqrtTest_b_2_q; + reg [7:0] redist7_yAddr_uid35_fpSqrtTest_b_3_q; + reg [7:0] redist8_yAddr_uid35_fpSqrtTest_b_7_q; + reg [0:0] redist10_signX_uid7_fpSqrtTest_b_1_q; + wire redist6_yForPe_uid36_fpSqrtTest_b_6_mem_reset0; + wire [15:0] redist6_yForPe_uid36_fpSqrtTest_b_6_mem_ia; + wire [1:0] redist6_yForPe_uid36_fpSqrtTest_b_6_mem_aa; + wire [1:0] redist6_yForPe_uid36_fpSqrtTest_b_6_mem_ab; + wire [15:0] redist6_yForPe_uid36_fpSqrtTest_b_6_mem_iq; + wire [15:0] redist6_yForPe_uid36_fpSqrtTest_b_6_mem_q; + wire [1:0] redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_q; + (* preserve *) reg [1:0] redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i; + (* preserve *) reg redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_eq; + wire [0:0] redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_s; + reg [1:0] redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_q; + reg [1:0] redist6_yForPe_uid36_fpSqrtTest_b_6_wraddr_q; + wire [1:0] redist6_yForPe_uid36_fpSqrtTest_b_6_mem_last_q; + wire [0:0] redist6_yForPe_uid36_fpSqrtTest_b_6_cmp_q; + reg [0:0] redist6_yForPe_uid36_fpSqrtTest_b_6_cmpReg_q; + wire [0:0] redist6_yForPe_uid36_fpSqrtTest_b_6_notEnable_q; + wire [0:0] redist6_yForPe_uid36_fpSqrtTest_b_6_nor_q; + (* preserve_syn_only *) reg [0:0] redist6_yForPe_uid36_fpSqrtTest_b_6_sticky_ena_q; + wire [0:0] redist6_yForPe_uid36_fpSqrtTest_b_6_enaAnd_q; + reg [7:0] redist9_expRMux_uid31_fpSqrtTest_q_10_outputreg_q; + wire redist9_expRMux_uid31_fpSqrtTest_q_10_mem_reset0; + wire [7:0] redist9_expRMux_uid31_fpSqrtTest_q_10_mem_ia; + wire [2:0] redist9_expRMux_uid31_fpSqrtTest_q_10_mem_aa; + wire [2:0] redist9_expRMux_uid31_fpSqrtTest_q_10_mem_ab; + wire [7:0] redist9_expRMux_uid31_fpSqrtTest_q_10_mem_iq; + wire [7:0] redist9_expRMux_uid31_fpSqrtTest_q_10_mem_q; + wire [2:0] redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_q; + (* preserve *) reg [2:0] redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i; + (* preserve *) reg redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_eq; + wire [0:0] redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_s; + reg [2:0] redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_q; + reg [2:0] redist9_expRMux_uid31_fpSqrtTest_q_10_wraddr_q; + wire [3:0] redist9_expRMux_uid31_fpSqrtTest_q_10_mem_last_q; + wire [3:0] redist9_expRMux_uid31_fpSqrtTest_q_10_cmp_b; + wire [0:0] redist9_expRMux_uid31_fpSqrtTest_q_10_cmp_q; + reg [0:0] redist9_expRMux_uid31_fpSqrtTest_q_10_cmpReg_q; + wire [0:0] redist9_expRMux_uid31_fpSqrtTest_q_10_notEnable_q; + wire [0:0] redist9_expRMux_uid31_fpSqrtTest_q_10_nor_q; + (* preserve_syn_only *) reg [0:0] redist9_expRMux_uid31_fpSqrtTest_q_10_sticky_ena_q; + wire [0:0] redist9_expRMux_uid31_fpSqrtTest_q_10_enaAnd_q; + + + // signX_uid7_fpSqrtTest(BITSELECT,6)@0 + assign signX_uid7_fpSqrtTest_b = a[31:31]; + + // redist10_signX_uid7_fpSqrtTest_b_1(DELAY,107) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist10_signX_uid7_fpSqrtTest_b_1 ( .xin(signX_uid7_fpSqrtTest_b), .xout(redist10_signX_uid7_fpSqrtTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // cstAllZWE_uid10_fpSqrtTest(CONSTANT,9) + assign cstAllZWE_uid10_fpSqrtTest_q = 8'b00000000; + + // expX_uid6_fpSqrtTest(BITSELECT,5)@0 + assign expX_uid6_fpSqrtTest_b = a[30:23]; + + // excZ_x_uid13_fpSqrtTest(LOGICAL,12)@0 + 1 + assign excZ_x_uid13_fpSqrtTest_qi = expX_uid6_fpSqrtTest_b == cstAllZWE_uid10_fpSqrtTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + excZ_x_uid13_fpSqrtTest_delay ( .xin(excZ_x_uid13_fpSqrtTest_qi), .xout(excZ_x_uid13_fpSqrtTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // negZero_uid59_fpSqrtTest(LOGICAL,58)@1 + 1 + assign negZero_uid59_fpSqrtTest_qi = excZ_x_uid13_fpSqrtTest_q & redist10_signX_uid7_fpSqrtTest_b_1_q; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + negZero_uid59_fpSqrtTest_delay ( .xin(negZero_uid59_fpSqrtTest_qi), .xout(negZero_uid59_fpSqrtTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist1_negZero_uid59_fpSqrtTest_q_9(DELAY,98) + dspba_delay_ver #( .width(1), .depth(8), .reset_kind("ASYNC") ) + redist1_negZero_uid59_fpSqrtTest_q_9 ( .xin(negZero_uid59_fpSqrtTest_q), .xout(redist1_negZero_uid59_fpSqrtTest_q_9_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // cstAllOWE_uid8_fpSqrtTest(CONSTANT,7) + assign cstAllOWE_uid8_fpSqrtTest_q = 8'b11111111; + + // expX0PS_uid29_fpSqrtTest(BITSELECT,28)@0 + assign expX0PS_uid29_fpSqrtTest_in = expX_uid6_fpSqrtTest_b[0:0]; + assign expX0PS_uid29_fpSqrtTest_b = expX0PS_uid29_fpSqrtTest_in[0:0]; + + // expOddSelect_uid30_fpSqrtTest(LOGICAL,29)@0 + assign expOddSelect_uid30_fpSqrtTest_q = ~ (expX0PS_uid29_fpSqrtTest_b); + + // frac_x_uid12_fpSqrtTest(BITSELECT,11)@0 + assign frac_x_uid12_fpSqrtTest_b = a[22:0]; + + // addrFull_uid33_fpSqrtTest(BITJOIN,32)@0 + assign addrFull_uid33_fpSqrtTest_q = {expOddSelect_uid30_fpSqrtTest_q, frac_x_uid12_fpSqrtTest_b}; + + // yAddr_uid35_fpSqrtTest(BITSELECT,34)@0 + assign yAddr_uid35_fpSqrtTest_b = addrFull_uid33_fpSqrtTest_q[23:16]; + + // memoryC2_uid68_sqrtTables_lutmem(DUALMEM,94)@0 + 2 + // in j@20000000 + assign memoryC2_uid68_sqrtTables_lutmem_aa = yAddr_uid35_fpSqrtTest_b; + assign memoryC2_uid68_sqrtTables_lutmem_reset0 = areset; + altera_syncram #( + .ram_block_type("M20K"), + .operation_mode("ROM"), + .width_a(12), + .widthad_a(8), + .numwords_a(256), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .outdata_reg_a("CLOCK0"), + .outdata_aclr_a("CLEAR0"), + .clock_enable_input_a("NORMAL"), + .power_up_uninitialized("FALSE"), + .init_file("acl_fp_sqrt_memoryC2_uid68_sqrtTables_lutmem.hex"), + .init_file_layout("PORT_A"), + .intended_device_family("Arria 10") + ) memoryC2_uid68_sqrtTables_lutmem_dmem ( + .clocken0(en[0]), + .aclr0(memoryC2_uid68_sqrtTables_lutmem_reset0), + .clock0(clk), + .address_a(memoryC2_uid68_sqrtTables_lutmem_aa), + .q_a(memoryC2_uid68_sqrtTables_lutmem_ir), + .wren_a(), + .wren_b(), + .rden_a(), + .rden_b(), + .data_a(), + .data_b(), + .address_b(), + .clock1(), + .clocken1(), + .clocken2(), + .clocken3(), + .aclr1(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_b(), + .eccstatus() + ); + assign memoryC2_uid68_sqrtTables_lutmem_r = memoryC2_uid68_sqrtTables_lutmem_ir[11:0]; + + // yForPe_uid36_fpSqrtTest(BITSELECT,35)@0 + assign yForPe_uid36_fpSqrtTest_in = frac_x_uid12_fpSqrtTest_b[15:0]; + assign yForPe_uid36_fpSqrtTest_b = yForPe_uid36_fpSqrtTest_in[15:0]; + + // redist5_yForPe_uid36_fpSqrtTest_b_2(DELAY,102) + dspba_delay_ver #( .width(16), .depth(2), .reset_kind("ASYNC") ) + redist5_yForPe_uid36_fpSqrtTest_b_2 ( .xin(yForPe_uid36_fpSqrtTest_b), .xout(redist5_yForPe_uid36_fpSqrtTest_b_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // yT1_uid74_invPolyEval(BITSELECT,73)@2 + assign yT1_uid74_invPolyEval_b = redist5_yForPe_uid36_fpSqrtTest_b_2_q[15:4]; + + // prodXY_uid87_pT1_uid75_invPolyEval_cma(CHAINMULTADD,95)@2 + 3 + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_reset = areset; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_ena0 = en[0]; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_ena1 = prodXY_uid87_pT1_uid75_invPolyEval_cma_ena0; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_ena2 = prodXY_uid87_pT1_uid75_invPolyEval_cma_ena0; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_l[0] = $signed({1'b0, prodXY_uid87_pT1_uid75_invPolyEval_cma_a1[0][11:0]}); + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_p[0] = prodXY_uid87_pT1_uid75_invPolyEval_cma_l[0] * prodXY_uid87_pT1_uid75_invPolyEval_cma_c1[0]; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_u[0] = prodXY_uid87_pT1_uid75_invPolyEval_cma_p[0][24:0]; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_w[0] = prodXY_uid87_pT1_uid75_invPolyEval_cma_u[0]; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_x[0] = prodXY_uid87_pT1_uid75_invPolyEval_cma_w[0]; + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_y[0] = prodXY_uid87_pT1_uid75_invPolyEval_cma_x[0]; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid87_pT1_uid75_invPolyEval_cma_a0 <= '{default: '0}; + prodXY_uid87_pT1_uid75_invPolyEval_cma_c0 <= '{default: '0}; + end + else + begin + if (prodXY_uid87_pT1_uid75_invPolyEval_cma_ena0 == 1'b1) + begin + prodXY_uid87_pT1_uid75_invPolyEval_cma_a0[0] <= yT1_uid74_invPolyEval_b; + prodXY_uid87_pT1_uid75_invPolyEval_cma_c0[0] <= memoryC2_uid68_sqrtTables_lutmem_r; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid87_pT1_uid75_invPolyEval_cma_a1 <= '{default: '0}; + prodXY_uid87_pT1_uid75_invPolyEval_cma_c1 <= '{default: '0}; + end + else + begin + if (prodXY_uid87_pT1_uid75_invPolyEval_cma_ena2 == 1'b1) + begin + prodXY_uid87_pT1_uid75_invPolyEval_cma_a1 <= prodXY_uid87_pT1_uid75_invPolyEval_cma_a0; + prodXY_uid87_pT1_uid75_invPolyEval_cma_c1 <= prodXY_uid87_pT1_uid75_invPolyEval_cma_c0; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid87_pT1_uid75_invPolyEval_cma_s <= '{default: '0}; + end + else + begin + if (prodXY_uid87_pT1_uid75_invPolyEval_cma_ena1 == 1'b1) + begin + prodXY_uid87_pT1_uid75_invPolyEval_cma_s[0] <= prodXY_uid87_pT1_uid75_invPolyEval_cma_y[0]; + end + end + end + dspba_delay_ver #( .width(24), .depth(0), .reset_kind("ASYNC") ) + prodXY_uid87_pT1_uid75_invPolyEval_cma_delay ( .xin(prodXY_uid87_pT1_uid75_invPolyEval_cma_s[0][23:0]), .xout(prodXY_uid87_pT1_uid75_invPolyEval_cma_qq), .ena(en[0]), .clk(clk), .aclr(areset) ); + assign prodXY_uid87_pT1_uid75_invPolyEval_cma_q = prodXY_uid87_pT1_uid75_invPolyEval_cma_qq[23:0]; + + // osig_uid88_pT1_uid75_invPolyEval(BITSELECT,87)@5 + assign osig_uid88_pT1_uid75_invPolyEval_b = prodXY_uid87_pT1_uid75_invPolyEval_cma_q[23:11]; + + // highBBits_uid77_invPolyEval(BITSELECT,76)@5 + assign highBBits_uid77_invPolyEval_b = osig_uid88_pT1_uid75_invPolyEval_b[12:1]; + + // redist7_yAddr_uid35_fpSqrtTest_b_3(DELAY,104) + dspba_delay_ver #( .width(8), .depth(3), .reset_kind("ASYNC") ) + redist7_yAddr_uid35_fpSqrtTest_b_3 ( .xin(yAddr_uid35_fpSqrtTest_b), .xout(redist7_yAddr_uid35_fpSqrtTest_b_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // memoryC1_uid65_sqrtTables_lutmem(DUALMEM,93)@3 + 2 + // in j@20000000 + assign memoryC1_uid65_sqrtTables_lutmem_aa = redist7_yAddr_uid35_fpSqrtTest_b_3_q; + assign memoryC1_uid65_sqrtTables_lutmem_reset0 = areset; + altera_syncram #( + .ram_block_type("M20K"), + .operation_mode("ROM"), + .width_a(21), + .widthad_a(8), + .numwords_a(256), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .outdata_reg_a("CLOCK0"), + .outdata_aclr_a("CLEAR0"), + .clock_enable_input_a("NORMAL"), + .power_up_uninitialized("FALSE"), + .init_file("acl_fp_sqrt_memoryC1_uid65_sqrtTables_lutmem.hex"), + .init_file_layout("PORT_A"), + .intended_device_family("Arria 10") + ) memoryC1_uid65_sqrtTables_lutmem_dmem ( + .clocken0(en[0]), + .aclr0(memoryC1_uid65_sqrtTables_lutmem_reset0), + .clock0(clk), + .address_a(memoryC1_uid65_sqrtTables_lutmem_aa), + .q_a(memoryC1_uid65_sqrtTables_lutmem_ir), + .wren_a(), + .wren_b(), + .rden_a(), + .rden_b(), + .data_a(), + .data_b(), + .address_b(), + .clock1(), + .clocken1(), + .clocken2(), + .clocken3(), + .aclr1(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_b(), + .eccstatus() + ); + assign memoryC1_uid65_sqrtTables_lutmem_r = memoryC1_uid65_sqrtTables_lutmem_ir[20:0]; + + // s1sumAHighB_uid78_invPolyEval(ADD,77)@5 + 1 + assign s1sumAHighB_uid78_invPolyEval_a = {{1{memoryC1_uid65_sqrtTables_lutmem_r[20]}}, memoryC1_uid65_sqrtTables_lutmem_r}; + assign s1sumAHighB_uid78_invPolyEval_b = {{10{highBBits_uid77_invPolyEval_b[11]}}, highBBits_uid77_invPolyEval_b}; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + s1sumAHighB_uid78_invPolyEval_o <= 22'b0; + end + else if (en == 1'b1) + begin + s1sumAHighB_uid78_invPolyEval_o <= $signed(s1sumAHighB_uid78_invPolyEval_a) + $signed(s1sumAHighB_uid78_invPolyEval_b); + end + end + assign s1sumAHighB_uid78_invPolyEval_q = s1sumAHighB_uid78_invPolyEval_o[21:0]; + + // lowRangeB_uid76_invPolyEval(BITSELECT,75)@5 + assign lowRangeB_uid76_invPolyEval_in = osig_uid88_pT1_uid75_invPolyEval_b[0:0]; + assign lowRangeB_uid76_invPolyEval_b = lowRangeB_uid76_invPolyEval_in[0:0]; + + // redist0_lowRangeB_uid76_invPolyEval_b_1(DELAY,97) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist0_lowRangeB_uid76_invPolyEval_b_1 ( .xin(lowRangeB_uid76_invPolyEval_b), .xout(redist0_lowRangeB_uid76_invPolyEval_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // s1_uid79_invPolyEval(BITJOIN,78)@6 + assign s1_uid79_invPolyEval_q = {s1sumAHighB_uid78_invPolyEval_q, redist0_lowRangeB_uid76_invPolyEval_b_1_q}; + + // redist6_yForPe_uid36_fpSqrtTest_b_6_notEnable(LOGICAL,115) + assign redist6_yForPe_uid36_fpSqrtTest_b_6_notEnable_q = ~ (en); + + // redist6_yForPe_uid36_fpSqrtTest_b_6_nor(LOGICAL,116) + assign redist6_yForPe_uid36_fpSqrtTest_b_6_nor_q = ~ (redist6_yForPe_uid36_fpSqrtTest_b_6_notEnable_q | redist6_yForPe_uid36_fpSqrtTest_b_6_sticky_ena_q); + + // redist6_yForPe_uid36_fpSqrtTest_b_6_mem_last(CONSTANT,112) + assign redist6_yForPe_uid36_fpSqrtTest_b_6_mem_last_q = 2'b01; + + // redist6_yForPe_uid36_fpSqrtTest_b_6_cmp(LOGICAL,113) + assign redist6_yForPe_uid36_fpSqrtTest_b_6_cmp_q = redist6_yForPe_uid36_fpSqrtTest_b_6_mem_last_q == redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_q ? 1'b1 : 1'b0; + + // redist6_yForPe_uid36_fpSqrtTest_b_6_cmpReg(REG,114) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_cmpReg_q <= 1'b0; + end + else if (en == 1'b1) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_cmpReg_q <= redist6_yForPe_uid36_fpSqrtTest_b_6_cmp_q; + end + end + + // redist6_yForPe_uid36_fpSqrtTest_b_6_sticky_ena(REG,117) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_sticky_ena_q <= 1'b0; + end + else if (redist6_yForPe_uid36_fpSqrtTest_b_6_nor_q == 1'b1) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_sticky_ena_q <= redist6_yForPe_uid36_fpSqrtTest_b_6_cmpReg_q; + end + end + + // redist6_yForPe_uid36_fpSqrtTest_b_6_enaAnd(LOGICAL,118) + assign redist6_yForPe_uid36_fpSqrtTest_b_6_enaAnd_q = redist6_yForPe_uid36_fpSqrtTest_b_6_sticky_ena_q & en; + + // redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt(COUNTER,109) + // low=0, high=2, step=1, init=0 + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i <= 2'd0; + redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_eq <= 1'b0; + end + else if (en == 1'b1) + begin + if (redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i == 2'd1) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_eq <= 1'b1; + end + else + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_eq <= 1'b0; + end + if (redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_eq == 1'b1) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i <= $unsigned(redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i) + $unsigned(2'd2); + end + else + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i <= $unsigned(redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i) + $unsigned(2'd1); + end + end + end + assign redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_q = redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_i[1:0]; + + // redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux(MUX,110) + assign redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_s = en; + always @(redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_s or redist6_yForPe_uid36_fpSqrtTest_b_6_wraddr_q or redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_q) + begin + unique case (redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_s) + 1'b0 : redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_q = redist6_yForPe_uid36_fpSqrtTest_b_6_wraddr_q; + 1'b1 : redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_q = redist6_yForPe_uid36_fpSqrtTest_b_6_rdcnt_q; + default : redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_q = 2'b0; + endcase + end + + // VCC(CONSTANT,1) + assign VCC_q = 1'b1; + + // redist6_yForPe_uid36_fpSqrtTest_b_6_wraddr(REG,111) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_wraddr_q <= 2'b10; + end + else + begin + redist6_yForPe_uid36_fpSqrtTest_b_6_wraddr_q <= redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_q; + end + end + + // redist6_yForPe_uid36_fpSqrtTest_b_6_mem(DUALMEM,108) + assign redist6_yForPe_uid36_fpSqrtTest_b_6_mem_ia = redist5_yForPe_uid36_fpSqrtTest_b_2_q; + assign redist6_yForPe_uid36_fpSqrtTest_b_6_mem_aa = redist6_yForPe_uid36_fpSqrtTest_b_6_wraddr_q; + assign redist6_yForPe_uid36_fpSqrtTest_b_6_mem_ab = redist6_yForPe_uid36_fpSqrtTest_b_6_rdmux_q; + assign redist6_yForPe_uid36_fpSqrtTest_b_6_mem_reset0 = areset; + altera_syncram #( + .ram_block_type("MLAB"), + .operation_mode("DUAL_PORT"), + .width_a(16), + .widthad_a(2), + .numwords_a(3), + .width_b(16), + .widthad_b(2), + .numwords_b(3), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .address_reg_b("CLOCK0"), + .indata_reg_b("CLOCK0"), + .rdcontrol_reg_b("CLOCK0"), + .byteena_reg_b("CLOCK0"), + .outdata_reg_b("CLOCK1"), + .outdata_aclr_b("CLEAR1"), + .clock_enable_input_a("NORMAL"), + .clock_enable_input_b("NORMAL"), + .clock_enable_output_b("NORMAL"), + .read_during_write_mode_mixed_ports("DONT_CARE"), + .power_up_uninitialized("TRUE"), + .intended_device_family("Arria 10") + ) redist6_yForPe_uid36_fpSqrtTest_b_6_mem_dmem ( + .clocken1(redist6_yForPe_uid36_fpSqrtTest_b_6_enaAnd_q[0]), + .clocken0(VCC_q[0]), + .clock0(clk), + .aclr1(redist6_yForPe_uid36_fpSqrtTest_b_6_mem_reset0), + .clock1(clk), + .address_a(redist6_yForPe_uid36_fpSqrtTest_b_6_mem_aa), + .data_a(redist6_yForPe_uid36_fpSqrtTest_b_6_mem_ia), + .wren_a(en[0]), + .address_b(redist6_yForPe_uid36_fpSqrtTest_b_6_mem_ab), + .q_b(redist6_yForPe_uid36_fpSqrtTest_b_6_mem_iq), + .wren_b(), + .rden_a(), + .rden_b(), + .data_b(), + .clocken2(), + .clocken3(), + .aclr0(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_a(), + .eccstatus() + ); + assign redist6_yForPe_uid36_fpSqrtTest_b_6_mem_q = redist6_yForPe_uid36_fpSqrtTest_b_6_mem_iq[15:0]; + + // GND(CONSTANT,0) + assign GND_q = 1'b0; + + // prodXY_uid90_pT2_uid81_invPolyEval_cma(CHAINMULTADD,96)@6 + 3 + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_reset = areset; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_ena0 = en[0]; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_ena1 = prodXY_uid90_pT2_uid81_invPolyEval_cma_ena0; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_ena2 = prodXY_uid90_pT2_uid81_invPolyEval_cma_ena0; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_l[0] = $signed({1'b0, prodXY_uid90_pT2_uid81_invPolyEval_cma_a1[0][15:0]}); + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_p[0] = prodXY_uid90_pT2_uid81_invPolyEval_cma_l[0] * prodXY_uid90_pT2_uid81_invPolyEval_cma_c1[0]; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_u[0] = prodXY_uid90_pT2_uid81_invPolyEval_cma_p[0][39:0]; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_w[0] = prodXY_uid90_pT2_uid81_invPolyEval_cma_u[0]; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_x[0] = prodXY_uid90_pT2_uid81_invPolyEval_cma_w[0]; + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_y[0] = prodXY_uid90_pT2_uid81_invPolyEval_cma_x[0]; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid90_pT2_uid81_invPolyEval_cma_a0 <= '{default: '0}; + prodXY_uid90_pT2_uid81_invPolyEval_cma_c0 <= '{default: '0}; + end + else + begin + if (prodXY_uid90_pT2_uid81_invPolyEval_cma_ena0 == 1'b1) + begin + prodXY_uid90_pT2_uid81_invPolyEval_cma_a0[0] <= redist6_yForPe_uid36_fpSqrtTest_b_6_mem_q; + prodXY_uid90_pT2_uid81_invPolyEval_cma_c0[0] <= s1_uid79_invPolyEval_q; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid90_pT2_uid81_invPolyEval_cma_a1 <= '{default: '0}; + prodXY_uid90_pT2_uid81_invPolyEval_cma_c1 <= '{default: '0}; + end + else + begin + if (prodXY_uid90_pT2_uid81_invPolyEval_cma_ena2 == 1'b1) + begin + prodXY_uid90_pT2_uid81_invPolyEval_cma_a1 <= prodXY_uid90_pT2_uid81_invPolyEval_cma_a0; + prodXY_uid90_pT2_uid81_invPolyEval_cma_c1 <= prodXY_uid90_pT2_uid81_invPolyEval_cma_c0; + end + end + end + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + prodXY_uid90_pT2_uid81_invPolyEval_cma_s <= '{default: '0}; + end + else + begin + if (prodXY_uid90_pT2_uid81_invPolyEval_cma_ena1 == 1'b1) + begin + prodXY_uid90_pT2_uid81_invPolyEval_cma_s[0] <= prodXY_uid90_pT2_uid81_invPolyEval_cma_y[0]; + end + end + end + dspba_delay_ver #( .width(39), .depth(0), .reset_kind("ASYNC") ) + prodXY_uid90_pT2_uid81_invPolyEval_cma_delay ( .xin(prodXY_uid90_pT2_uid81_invPolyEval_cma_s[0][38:0]), .xout(prodXY_uid90_pT2_uid81_invPolyEval_cma_qq), .ena(en[0]), .clk(clk), .aclr(areset) ); + assign prodXY_uid90_pT2_uid81_invPolyEval_cma_q = prodXY_uid90_pT2_uid81_invPolyEval_cma_qq[38:0]; + + // osig_uid91_pT2_uid81_invPolyEval(BITSELECT,90)@9 + assign osig_uid91_pT2_uid81_invPolyEval_b = prodXY_uid90_pT2_uid81_invPolyEval_cma_q[38:15]; + + // highBBits_uid83_invPolyEval(BITSELECT,82)@9 + assign highBBits_uid83_invPolyEval_b = osig_uid91_pT2_uid81_invPolyEval_b[23:2]; + + // redist8_yAddr_uid35_fpSqrtTest_b_7(DELAY,105) + dspba_delay_ver #( .width(8), .depth(4), .reset_kind("ASYNC") ) + redist8_yAddr_uid35_fpSqrtTest_b_7 ( .xin(redist7_yAddr_uid35_fpSqrtTest_b_3_q), .xout(redist8_yAddr_uid35_fpSqrtTest_b_7_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // memoryC0_uid62_sqrtTables_lutmem(DUALMEM,92)@7 + 2 + // in j@20000000 + assign memoryC0_uid62_sqrtTables_lutmem_aa = redist8_yAddr_uid35_fpSqrtTest_b_7_q; + assign memoryC0_uid62_sqrtTables_lutmem_reset0 = areset; + altera_syncram #( + .ram_block_type("M20K"), + .operation_mode("ROM"), + .width_a(29), + .widthad_a(8), + .numwords_a(256), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .outdata_reg_a("CLOCK0"), + .outdata_aclr_a("CLEAR0"), + .clock_enable_input_a("NORMAL"), + .power_up_uninitialized("FALSE"), + .init_file("acl_fp_sqrt_memoryC0_uid62_sqrtTables_lutmem.hex"), + .init_file_layout("PORT_A"), + .intended_device_family("Arria 10") + ) memoryC0_uid62_sqrtTables_lutmem_dmem ( + .clocken0(en[0]), + .aclr0(memoryC0_uid62_sqrtTables_lutmem_reset0), + .clock0(clk), + .address_a(memoryC0_uid62_sqrtTables_lutmem_aa), + .q_a(memoryC0_uid62_sqrtTables_lutmem_ir), + .wren_a(), + .wren_b(), + .rden_a(), + .rden_b(), + .data_a(), + .data_b(), + .address_b(), + .clock1(), + .clocken1(), + .clocken2(), + .clocken3(), + .aclr1(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_b(), + .eccstatus() + ); + assign memoryC0_uid62_sqrtTables_lutmem_r = memoryC0_uid62_sqrtTables_lutmem_ir[28:0]; + + // s2sumAHighB_uid84_invPolyEval(ADD,83)@9 + assign s2sumAHighB_uid84_invPolyEval_a = {{1{memoryC0_uid62_sqrtTables_lutmem_r[28]}}, memoryC0_uid62_sqrtTables_lutmem_r}; + assign s2sumAHighB_uid84_invPolyEval_b = {{8{highBBits_uid83_invPolyEval_b[21]}}, highBBits_uid83_invPolyEval_b}; + assign s2sumAHighB_uid84_invPolyEval_o = $signed(s2sumAHighB_uid84_invPolyEval_a) + $signed(s2sumAHighB_uid84_invPolyEval_b); + assign s2sumAHighB_uid84_invPolyEval_q = s2sumAHighB_uid84_invPolyEval_o[29:0]; + + // lowRangeB_uid82_invPolyEval(BITSELECT,81)@9 + assign lowRangeB_uid82_invPolyEval_in = osig_uid91_pT2_uid81_invPolyEval_b[1:0]; + assign lowRangeB_uid82_invPolyEval_b = lowRangeB_uid82_invPolyEval_in[1:0]; + + // s2_uid85_invPolyEval(BITJOIN,84)@9 + assign s2_uid85_invPolyEval_q = {s2sumAHighB_uid84_invPolyEval_q, lowRangeB_uid82_invPolyEval_b}; + + // expInc_uid38_fpSqrtTest(BITSELECT,37)@9 + assign expInc_uid38_fpSqrtTest_in = s2_uid85_invPolyEval_q[30:0]; + assign expInc_uid38_fpSqrtTest_b = expInc_uid38_fpSqrtTest_in[30:30]; + + // redist4_expInc_uid38_fpSqrtTest_b_1(DELAY,101) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist4_expInc_uid38_fpSqrtTest_b_1 ( .xin(expInc_uid38_fpSqrtTest_b), .xout(redist4_expInc_uid38_fpSqrtTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist9_expRMux_uid31_fpSqrtTest_q_10_notEnable(LOGICAL,127) + assign redist9_expRMux_uid31_fpSqrtTest_q_10_notEnable_q = ~ (en); + + // redist9_expRMux_uid31_fpSqrtTest_q_10_nor(LOGICAL,128) + assign redist9_expRMux_uid31_fpSqrtTest_q_10_nor_q = ~ (redist9_expRMux_uid31_fpSqrtTest_q_10_notEnable_q | redist9_expRMux_uid31_fpSqrtTest_q_10_sticky_ena_q); + + // redist9_expRMux_uid31_fpSqrtTest_q_10_mem_last(CONSTANT,124) + assign redist9_expRMux_uid31_fpSqrtTest_q_10_mem_last_q = 4'b0101; + + // redist9_expRMux_uid31_fpSqrtTest_q_10_cmp(LOGICAL,125) + assign redist9_expRMux_uid31_fpSqrtTest_q_10_cmp_b = {1'b0, redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_q}; + assign redist9_expRMux_uid31_fpSqrtTest_q_10_cmp_q = redist9_expRMux_uid31_fpSqrtTest_q_10_mem_last_q == redist9_expRMux_uid31_fpSqrtTest_q_10_cmp_b ? 1'b1 : 1'b0; + + // redist9_expRMux_uid31_fpSqrtTest_q_10_cmpReg(REG,126) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_cmpReg_q <= 1'b0; + end + else if (en == 1'b1) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_cmpReg_q <= redist9_expRMux_uid31_fpSqrtTest_q_10_cmp_q; + end + end + + // redist9_expRMux_uid31_fpSqrtTest_q_10_sticky_ena(REG,129) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_sticky_ena_q <= 1'b0; + end + else if (redist9_expRMux_uid31_fpSqrtTest_q_10_nor_q == 1'b1) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_sticky_ena_q <= redist9_expRMux_uid31_fpSqrtTest_q_10_cmpReg_q; + end + end + + // redist9_expRMux_uid31_fpSqrtTest_q_10_enaAnd(LOGICAL,130) + assign redist9_expRMux_uid31_fpSqrtTest_q_10_enaAnd_q = redist9_expRMux_uid31_fpSqrtTest_q_10_sticky_ena_q & en; + + // redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt(COUNTER,121) + // low=0, high=6, step=1, init=0 + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i <= 3'd0; + redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_eq <= 1'b0; + end + else if (en == 1'b1) + begin + if (redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i == 3'd5) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_eq <= 1'b1; + end + else + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_eq <= 1'b0; + end + if (redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_eq == 1'b1) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i <= $unsigned(redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i) + $unsigned(3'd2); + end + else + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i <= $unsigned(redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i) + $unsigned(3'd1); + end + end + end + assign redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_q = redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_i[2:0]; + + // redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux(MUX,122) + assign redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_s = en; + always @(redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_s or redist9_expRMux_uid31_fpSqrtTest_q_10_wraddr_q or redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_q) + begin + unique case (redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_s) + 1'b0 : redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_q = redist9_expRMux_uid31_fpSqrtTest_q_10_wraddr_q; + 1'b1 : redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_q = redist9_expRMux_uid31_fpSqrtTest_q_10_rdcnt_q; + default : redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_q = 3'b0; + endcase + end + + // sBiasM1_uid26_fpSqrtTest(CONSTANT,25) + assign sBiasM1_uid26_fpSqrtTest_q = 8'b01111110; + + // expOddSig_uid27_fpSqrtTest(ADD,26)@0 + assign expOddSig_uid27_fpSqrtTest_a = {1'b0, expX_uid6_fpSqrtTest_b}; + assign expOddSig_uid27_fpSqrtTest_b = {1'b0, sBiasM1_uid26_fpSqrtTest_q}; + assign expOddSig_uid27_fpSqrtTest_o = $unsigned(expOddSig_uid27_fpSqrtTest_a) + $unsigned(expOddSig_uid27_fpSqrtTest_b); + assign expOddSig_uid27_fpSqrtTest_q = expOddSig_uid27_fpSqrtTest_o[8:0]; + + // expROdd_uid28_fpSqrtTest(BITSELECT,27)@0 + assign expROdd_uid28_fpSqrtTest_b = expOddSig_uid27_fpSqrtTest_q[8:1]; + + // sBias_uid22_fpSqrtTest(CONSTANT,21) + assign sBias_uid22_fpSqrtTest_q = 8'b01111111; + + // expEvenSig_uid24_fpSqrtTest(ADD,23)@0 + assign expEvenSig_uid24_fpSqrtTest_a = {1'b0, expX_uid6_fpSqrtTest_b}; + assign expEvenSig_uid24_fpSqrtTest_b = {1'b0, sBias_uid22_fpSqrtTest_q}; + assign expEvenSig_uid24_fpSqrtTest_o = $unsigned(expEvenSig_uid24_fpSqrtTest_a) + $unsigned(expEvenSig_uid24_fpSqrtTest_b); + assign expEvenSig_uid24_fpSqrtTest_q = expEvenSig_uid24_fpSqrtTest_o[8:0]; + + // expREven_uid25_fpSqrtTest(BITSELECT,24)@0 + assign expREven_uid25_fpSqrtTest_b = expEvenSig_uid24_fpSqrtTest_q[8:1]; + + // expRMux_uid31_fpSqrtTest(MUX,30)@0 + 1 + assign expRMux_uid31_fpSqrtTest_s = expOddSelect_uid30_fpSqrtTest_q; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + expRMux_uid31_fpSqrtTest_q <= 8'b0; + end + else if (en == 1'b1) + begin + unique case (expRMux_uid31_fpSqrtTest_s) + 1'b0 : expRMux_uid31_fpSqrtTest_q <= expREven_uid25_fpSqrtTest_b; + 1'b1 : expRMux_uid31_fpSqrtTest_q <= expROdd_uid28_fpSqrtTest_b; + default : expRMux_uid31_fpSqrtTest_q <= 8'b0; + endcase + end + end + + // redist9_expRMux_uid31_fpSqrtTest_q_10_wraddr(REG,123) + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_wraddr_q <= 3'b110; + end + else + begin + redist9_expRMux_uid31_fpSqrtTest_q_10_wraddr_q <= redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_q; + end + end + + // redist9_expRMux_uid31_fpSqrtTest_q_10_mem(DUALMEM,120) + assign redist9_expRMux_uid31_fpSqrtTest_q_10_mem_ia = expRMux_uid31_fpSqrtTest_q; + assign redist9_expRMux_uid31_fpSqrtTest_q_10_mem_aa = redist9_expRMux_uid31_fpSqrtTest_q_10_wraddr_q; + assign redist9_expRMux_uid31_fpSqrtTest_q_10_mem_ab = redist9_expRMux_uid31_fpSqrtTest_q_10_rdmux_q; + assign redist9_expRMux_uid31_fpSqrtTest_q_10_mem_reset0 = areset; + altera_syncram #( + .ram_block_type("MLAB"), + .operation_mode("DUAL_PORT"), + .width_a(8), + .widthad_a(3), + .numwords_a(7), + .width_b(8), + .widthad_b(3), + .numwords_b(7), + .lpm_type("altera_syncram"), + .width_byteena_a(1), + .address_reg_b("CLOCK0"), + .indata_reg_b("CLOCK0"), + .rdcontrol_reg_b("CLOCK0"), + .byteena_reg_b("CLOCK0"), + .outdata_reg_b("CLOCK1"), + .outdata_aclr_b("CLEAR1"), + .clock_enable_input_a("NORMAL"), + .clock_enable_input_b("NORMAL"), + .clock_enable_output_b("NORMAL"), + .read_during_write_mode_mixed_ports("DONT_CARE"), + .power_up_uninitialized("TRUE"), + .intended_device_family("Arria 10") + ) redist9_expRMux_uid31_fpSqrtTest_q_10_mem_dmem ( + .clocken1(redist9_expRMux_uid31_fpSqrtTest_q_10_enaAnd_q[0]), + .clocken0(VCC_q[0]), + .clock0(clk), + .aclr1(redist9_expRMux_uid31_fpSqrtTest_q_10_mem_reset0), + .clock1(clk), + .address_a(redist9_expRMux_uid31_fpSqrtTest_q_10_mem_aa), + .data_a(redist9_expRMux_uid31_fpSqrtTest_q_10_mem_ia), + .wren_a(en[0]), + .address_b(redist9_expRMux_uid31_fpSqrtTest_q_10_mem_ab), + .q_b(redist9_expRMux_uid31_fpSqrtTest_q_10_mem_iq), + .wren_b(), + .rden_a(), + .rden_b(), + .data_b(), + .clocken2(), + .clocken3(), + .aclr0(), + .addressstall_a(), + .addressstall_b(), + .byteena_a(), + .byteena_b(), + .eccencbypass(), + .eccencparity(), + .sclr(), + .address2_a(), + .address2_b(), + .q_a(), + .eccstatus() + ); + assign redist9_expRMux_uid31_fpSqrtTest_q_10_mem_q = redist9_expRMux_uid31_fpSqrtTest_q_10_mem_iq[7:0]; + + // redist9_expRMux_uid31_fpSqrtTest_q_10_outputreg(DELAY,119) + dspba_delay_ver #( .width(8), .depth(1), .reset_kind("ASYNC") ) + redist9_expRMux_uid31_fpSqrtTest_q_10_outputreg ( .xin(redist9_expRMux_uid31_fpSqrtTest_q_10_mem_q), .xout(redist9_expRMux_uid31_fpSqrtTest_q_10_outputreg_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expR_uid40_fpSqrtTest(ADD,39)@10 + assign expR_uid40_fpSqrtTest_a = {1'b0, redist9_expRMux_uid31_fpSqrtTest_q_10_outputreg_q}; + assign expR_uid40_fpSqrtTest_b = {8'b00000000, redist4_expInc_uid38_fpSqrtTest_b_1_q}; + assign expR_uid40_fpSqrtTest_o = $unsigned(expR_uid40_fpSqrtTest_a) + $unsigned(expR_uid40_fpSqrtTest_b); + assign expR_uid40_fpSqrtTest_q = expR_uid40_fpSqrtTest_o[8:0]; + + // expRR_uid51_fpSqrtTest(BITSELECT,50)@10 + assign expRR_uid51_fpSqrtTest_in = expR_uid40_fpSqrtTest_q[7:0]; + assign expRR_uid51_fpSqrtTest_b = expRR_uid51_fpSqrtTest_in[7:0]; + + // expXIsMax_uid14_fpSqrtTest(LOGICAL,13)@0 + 1 + assign expXIsMax_uid14_fpSqrtTest_qi = expX_uid6_fpSqrtTest_b == cstAllOWE_uid8_fpSqrtTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + expXIsMax_uid14_fpSqrtTest_delay ( .xin(expXIsMax_uid14_fpSqrtTest_qi), .xout(expXIsMax_uid14_fpSqrtTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // invExpXIsMax_uid19_fpSqrtTest(LOGICAL,18)@1 + assign invExpXIsMax_uid19_fpSqrtTest_q = ~ (expXIsMax_uid14_fpSqrtTest_q); + + // InvExpXIsZero_uid20_fpSqrtTest(LOGICAL,19)@1 + assign InvExpXIsZero_uid20_fpSqrtTest_q = ~ (excZ_x_uid13_fpSqrtTest_q); + + // excR_x_uid21_fpSqrtTest(LOGICAL,20)@1 + assign excR_x_uid21_fpSqrtTest_q = InvExpXIsZero_uid20_fpSqrtTest_q & invExpXIsMax_uid19_fpSqrtTest_q; + + // minReg_uid43_fpSqrtTest(LOGICAL,42)@1 + assign minReg_uid43_fpSqrtTest_q = excR_x_uid21_fpSqrtTest_q & redist10_signX_uid7_fpSqrtTest_b_1_q; + + // cstZeroWF_uid9_fpSqrtTest(CONSTANT,8) + assign cstZeroWF_uid9_fpSqrtTest_q = 23'b00000000000000000000000; + + // fracXIsZero_uid15_fpSqrtTest(LOGICAL,14)@0 + 1 + assign fracXIsZero_uid15_fpSqrtTest_qi = cstZeroWF_uid9_fpSqrtTest_q == frac_x_uid12_fpSqrtTest_b ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + fracXIsZero_uid15_fpSqrtTest_delay ( .xin(fracXIsZero_uid15_fpSqrtTest_qi), .xout(fracXIsZero_uid15_fpSqrtTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excI_x_uid17_fpSqrtTest(LOGICAL,16)@1 + assign excI_x_uid17_fpSqrtTest_q = expXIsMax_uid14_fpSqrtTest_q & fracXIsZero_uid15_fpSqrtTest_q; + + // minInf_uid44_fpSqrtTest(LOGICAL,43)@1 + assign minInf_uid44_fpSqrtTest_q = excI_x_uid17_fpSqrtTest_q & redist10_signX_uid7_fpSqrtTest_b_1_q; + + // fracXIsNotZero_uid16_fpSqrtTest(LOGICAL,15)@1 + assign fracXIsNotZero_uid16_fpSqrtTest_q = ~ (fracXIsZero_uid15_fpSqrtTest_q); + + // excN_x_uid18_fpSqrtTest(LOGICAL,17)@1 + assign excN_x_uid18_fpSqrtTest_q = expXIsMax_uid14_fpSqrtTest_q & fracXIsNotZero_uid16_fpSqrtTest_q; + + // excRNaN_uid45_fpSqrtTest(LOGICAL,44)@1 + assign excRNaN_uid45_fpSqrtTest_q = excN_x_uid18_fpSqrtTest_q | minInf_uid44_fpSqrtTest_q | minReg_uid43_fpSqrtTest_q; + + // invSignX_uid41_fpSqrtTest(LOGICAL,40)@1 + assign invSignX_uid41_fpSqrtTest_q = ~ (redist10_signX_uid7_fpSqrtTest_b_1_q); + + // inInfAndNotNeg_uid42_fpSqrtTest(LOGICAL,41)@1 + assign inInfAndNotNeg_uid42_fpSqrtTest_q = excI_x_uid17_fpSqrtTest_q & invSignX_uid41_fpSqrtTest_q; + + // excConc_uid46_fpSqrtTest(BITJOIN,45)@1 + assign excConc_uid46_fpSqrtTest_q = {excRNaN_uid45_fpSqrtTest_q, inInfAndNotNeg_uid42_fpSqrtTest_q, excZ_x_uid13_fpSqrtTest_q}; + + // fracSelIn_uid47_fpSqrtTest(BITJOIN,46)@1 + assign fracSelIn_uid47_fpSqrtTest_q = {redist10_signX_uid7_fpSqrtTest_b_1_q, excConc_uid46_fpSqrtTest_q}; + + // fracSel_uid48_fpSqrtTest(LOOKUP,47)@1 + 1 + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + fracSel_uid48_fpSqrtTest_q <= 2'b01; + end + else if (en == 1'b1) + begin + unique case (fracSelIn_uid47_fpSqrtTest_q) + 4'b0000 : fracSel_uid48_fpSqrtTest_q <= 2'b01; + 4'b0001 : fracSel_uid48_fpSqrtTest_q <= 2'b00; + 4'b0010 : fracSel_uid48_fpSqrtTest_q <= 2'b10; + 4'b0011 : fracSel_uid48_fpSqrtTest_q <= 2'b00; + 4'b0100 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + 4'b0101 : fracSel_uid48_fpSqrtTest_q <= 2'b00; + 4'b0110 : fracSel_uid48_fpSqrtTest_q <= 2'b10; + 4'b0111 : fracSel_uid48_fpSqrtTest_q <= 2'b00; + 4'b1000 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + 4'b1001 : fracSel_uid48_fpSqrtTest_q <= 2'b00; + 4'b1010 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + 4'b1011 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + 4'b1100 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + 4'b1101 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + 4'b1110 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + 4'b1111 : fracSel_uid48_fpSqrtTest_q <= 2'b11; + default : begin + // unreachable + fracSel_uid48_fpSqrtTest_q <= 2'bxx; + end + endcase + end + end + + // redist2_fracSel_uid48_fpSqrtTest_q_9(DELAY,99) + dspba_delay_ver #( .width(2), .depth(8), .reset_kind("ASYNC") ) + redist2_fracSel_uid48_fpSqrtTest_q_9 ( .xin(fracSel_uid48_fpSqrtTest_q), .xout(redist2_fracSel_uid48_fpSqrtTest_q_9_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expRPostExc_uid53_fpSqrtTest(MUX,52)@10 + assign expRPostExc_uid53_fpSqrtTest_s = redist2_fracSel_uid48_fpSqrtTest_q_9_q; + always @(expRPostExc_uid53_fpSqrtTest_s or en or cstAllZWE_uid10_fpSqrtTest_q or expRR_uid51_fpSqrtTest_b or cstAllOWE_uid8_fpSqrtTest_q) + begin + unique case (expRPostExc_uid53_fpSqrtTest_s) + 2'b00 : expRPostExc_uid53_fpSqrtTest_q = cstAllZWE_uid10_fpSqrtTest_q; + 2'b01 : expRPostExc_uid53_fpSqrtTest_q = expRR_uid51_fpSqrtTest_b; + 2'b10 : expRPostExc_uid53_fpSqrtTest_q = cstAllOWE_uid8_fpSqrtTest_q; + 2'b11 : expRPostExc_uid53_fpSqrtTest_q = cstAllOWE_uid8_fpSqrtTest_q; + default : expRPostExc_uid53_fpSqrtTest_q = 8'b0; + endcase + end + + // fracNaN_uid54_fpSqrtTest(CONSTANT,53) + assign fracNaN_uid54_fpSqrtTest_q = 23'b00000000000000000000001; + + // fracRPostProcessings_uid39_fpSqrtTest(BITSELECT,38)@9 + assign fracRPostProcessings_uid39_fpSqrtTest_in = s2_uid85_invPolyEval_q[28:0]; + assign fracRPostProcessings_uid39_fpSqrtTest_b = fracRPostProcessings_uid39_fpSqrtTest_in[28:6]; + + // redist3_fracRPostProcessings_uid39_fpSqrtTest_b_1(DELAY,100) + dspba_delay_ver #( .width(23), .depth(1), .reset_kind("ASYNC") ) + redist3_fracRPostProcessings_uid39_fpSqrtTest_b_1 ( .xin(fracRPostProcessings_uid39_fpSqrtTest_b), .xout(redist3_fracRPostProcessings_uid39_fpSqrtTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // fracRPostExc_uid58_fpSqrtTest(MUX,57)@10 + assign fracRPostExc_uid58_fpSqrtTest_s = redist2_fracSel_uid48_fpSqrtTest_q_9_q; + always @(fracRPostExc_uid58_fpSqrtTest_s or en or cstZeroWF_uid9_fpSqrtTest_q or redist3_fracRPostProcessings_uid39_fpSqrtTest_b_1_q or fracNaN_uid54_fpSqrtTest_q) + begin + unique case (fracRPostExc_uid58_fpSqrtTest_s) + 2'b00 : fracRPostExc_uid58_fpSqrtTest_q = cstZeroWF_uid9_fpSqrtTest_q; + 2'b01 : fracRPostExc_uid58_fpSqrtTest_q = redist3_fracRPostProcessings_uid39_fpSqrtTest_b_1_q; + 2'b10 : fracRPostExc_uid58_fpSqrtTest_q = cstZeroWF_uid9_fpSqrtTest_q; + 2'b11 : fracRPostExc_uid58_fpSqrtTest_q = fracNaN_uid54_fpSqrtTest_q; + default : fracRPostExc_uid58_fpSqrtTest_q = 23'b0; + endcase + end + + // RSqrt_uid60_fpSqrtTest(BITJOIN,59)@10 + assign RSqrt_uid60_fpSqrtTest_q = {redist1_negZero_uid59_fpSqrtTest_q_9_q, expRPostExc_uid53_fpSqrtTest_q, fracRPostExc_uid58_fpSqrtTest_q}; + + // xOut(GPOUT,4)@10 + assign q = RSqrt_uid60_fpSqrtTest_q; + +endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC0_uid62_sqrtTables_lutmem.hex b/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC0_uid62_sqrtTables_lutmem.hex new file mode 100644 index 00000000..dacc8b55 --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC0_uid62_sqrtTables_lutmem.hex @@ -0,0 +1,258 @@ +:020000040000FA +:0400000008000004F0 +:040001000807FC08E8 +:04000200080FF024CF +:040003000817DC6F8F +:04000400081FC0FF12 +:0400050008279DEC3F +:04000600082F734C00 +:040007000837413342 +:04000800083F07B7EF +:040009000846C6EEF1 +:04000A00084E7EEB33 +:04000B0008562FC2A2 +:04000C00085DD9882A +:04000D0008657C4FB7 +:04000E00086D182B36 +:04000F000874AD2E96 +:04001000087C3B6BC2 +:040011000883C2F3AB +:04001200088B43D83C +:040013000892BE2D64 +:04001400089A320113 +:0400150008A19F6639 +:0400160008A9066DC2 +:0400170008B06725A1 +:0400180008B7C19EC6 +:0400190008BF15E91E +:04001A0008C664159B +:04001B0008CDAC312F +:04001C0008D4EE4CCA +:04001D0008DC2A755C +:04001E0008E360BAD9 +:04001F0008EA912931 +:0400200008F1BBD256 +:0400210008F8E0C13A +:0400220009000004CD +:04002300090719A907 +:04002400090E2DBCD8 +:0400250009153C4C31 +:04002600091C456408 +:04002700092349114F +:04002800092A4761F9 +:040029000931405EFB +:04002A000938341548 +:04002B00093F2292D5 +:04002C0009460BE195 +:04002D00094CF00D7D +:04002E000953CF2182 +:04002F00095AA92998 +:0400300009617E31B3 +:0400310009684E42CA +:04003200096F1967D2 +:040033000975DFACC0 +:04003400097CA11A88 +:0400350009835DBC22 +:04003600098A159C82 +:040037000990C8C59F +:040038000997773F6E +:04003900099E2115E6 +:04003A0009A4C650FF +:04003B0009AB66FAAD +:04003C0009B2031CE6 +:04003D0009B89AC0A4 +:04003E0009BF2DEEDB +:04003F0009C5BCB083 +:0400400009CC470E92 +:0400410009D2CD1102 +:0400420009D94EC3C7 +:0400430009DFCC2ADB +:0400440009E6455133 +:0400450009ECBA3FC9 +:0400460009F32AFC94 +:0400470009F997908C +:040048000A000004A6 +:040049000A06645FE0 +:04004A000A0CC4AA2E +:04004B000A1320EC88 +:04004C000A19792CE8 +:04004D000A1FCD7247 +:04004E000A261DC69B +:04004F000A2C6A2FDE +:040050000A32B2B40A +:040051000A38F75C16 +:040052000A3F382EFB +:040053000A457532B3 +:040054000A4BAE6F36 +:040055000A51E3EA7F +:040056000A5815AC83 +:040057000A5E43BA40 +:040058000A646E1BAD +:040059000A6A94D6C5 +:04005A000A70B7F180 +:04005B000A76D773D7 +:04005C000A7CF362C5 +:04005D000A830BC443 +:04005E000A89209F4C +:04005F000A8F31F9DA +:040060000A953FD9E5 +:040061000A9B4A4468 +:040062000AA151405E +:040063000AA754D4C0 +:040064000AAD550488 +:040065000AB351D7B2 +:040066000AB94B5236 +:040067000ABF417A11 +:040068000AC534563B +:040069000ACB23EBB0 +:04006A000AD1103E69 +:04006B000AD6F95464 +:04006C000ADCDF3398 +:04006D000AE2C1E002 +:04006E000AE8A15F9C +:04006F000AEE7DB860 +:040070000AF456ED4B +:040071000AFA2D0555 +:040072000B0000047B +:040073000B05CFEFBB +:040074000B0B9CCC0A +:040075000B11669E67 +:040076000B172D6BCC +:040077000B1CF13736 +:040078000B22B2079E +:040079000B286FDF02 +:04007A000B2E2AC55A +:04007B000B33E2BDA4 +:04007C000B3997CBDA +:04007D000B3F49F3F9 +:04007E000B44F93AFC +:04007F000B4AA5A5DE +:040080000B504F3C96 +:040081000B5B99E894 +:040082000B66D966CA +:040083000B720DD619 +:040084000B7D375861 +:040085000B88560E80 +:040086000B936A145A +:040087000B9E738ACF +:040088000BA97290BE +:040089000BB4673E0F +:04008A000BBF51B6A1 +:04008B000BCA321456 +:04008C000BD5087018 +:04008D000BDFD4EAC7 +:04008E000BEA979A48 +:04008F000BF5509C81 +:040090000C00000858 +:040091000C0AA5FAB6 +:040092000C1542887F +:040093000C1FD5CE9B +:040094000C2A5FE2F1 +:040095000C34E0DC6B +:040096000C3F58D4EF +:040097000C49C7E267 +:040098000C542E1ABC +:040099000C5E8B96D8 +:04009A000C68E068A6 +:04009B000C732CA610 +:04009C000C7D7068FF +:04009D000C87ABC25F +:04009E000C91DEC81B +:04009F000C9C098C20 +:0400A0000CA62C2658 +:0400A1000CB046A6B3 +:0400A2000CBA592219 +:0400A3000CC463AC7A +:0400A4000CCE6654C4 +:0400A5000CD86132E0 +:0400A6000CE25454C0 +:0400A7000CEC3FCC52 +:0400A8000CF623AE81 +:0400A9000D0000083E +:0400AA000D09D4EE7A +:0400AB000D13A2701F +:0400AC000D1D689E20 +:0400AD000D2727886C +:0400AE000D30DF3EF4 +:0400AF000D3A8FD2A5 +:0400B0000D44395270 +:0400B1000D4DDBCE48 +:0400B2000D5777541B +:0400B3000D610BF4DC +:0400B4000D6A99BC7C +:0400B5000D7420BCEA +:0400B6000D7DA10219 +:0400B7000D871A9CFB +:0400B8000D908D9684 +:0400B9000D99FA00A3 +:0400BA000DA35FE84B +:0400BB000DACBF5A6F +:0400BC000DB6186401 +:0400BD000DBF6B12F6 +:0400BE000DC8B7743E +:0400BF000DD1FD92D0 +:0400C0000DDB3D7C9B +:0400C1000DE4773E95 +:0400C2000DEDAAE2B4 +:0400C3000DF6D878E6 +:0400C4000E00000822 +:0400C5000E0921A05F +:0400C6000E123D4C8D +:0400C7000E1B5314A5 +:0400C8000E24630897 +:0400C9000E2D6D305B +:0400CA000E36719AE3 +:0400CB000E3F704E26 +:0400CC000E4869561B +:0400CD000E515CC0B4 +:0400CE000E5A4A96E6 +:0400CF000E6332E0AA +:0400D0000E6C15AAF3 +:0400D1000E74F2FEB9 +:0400D2000E7DCAE6EF +:0400D3000E869D6C8C +:0400D4000E8F6A9889 +:0400D5000E983276D9 +:0400D6000EA0F51073 +:0400D7000EA9B26C50 +:0400D8000EB26A9862 +:0400D9000EBB1D98A5 +:0400DA000EC3CB7A0C +:0400DB000ECC74448F +:0400DC000ED5180025 +:0400DD000EDDB6B6C8 +:0400DE000EE650706A +:0400DF000EEEE53606 +:0400E0000EF7751092 +:0400E1000F00000804 +:0400E2000F08862459 +:0400E3000F11076E84 +:0400E4000F1983EE7F +:0400E5000F21FBAC40 +:0400E6000F2A6EAEC1 +:0400E7000F32DD00F7 +:0400E8000F3B46A4E0 +:0400E9000F43ABA86E +:0400EA000F4C0C109B +:0400EB000F5467E463 +:0400EC000F5CBF2ABC +:0400ED000F6511EE9C +:0400EE000F6D603200 +:0400EF000F75AA02DD +:0400F0000F7DEF6031 +:0400F1000F863058EE +:0400F2000F8E6CEE13 +:0400F3000F96A52A95 +:0400F4000F9ED9146E +:0400F5000FA708B099 +:0400F6000FAF34060E +:0400F7000FB75B1EC6 +:0400F8000FBF7DFEBB +:0400F9000FC79CACE5 +:0400FA000FCFB72C41 +:0400FB000FD7CD8AC4 +:0400FC000FDFDFC86B +:0400FD000FE7EDEC30 +:0400FE000FEFF80008 +:0400FF000FF7FE08F1 +:00000001ff diff --git a/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC1_uid65_sqrtTables_lutmem.hex b/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC1_uid65_sqrtTables_lutmem.hex new file mode 100644 index 00000000..7a6961dc --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC1_uid65_sqrtTables_lutmem.hex @@ -0,0 +1,258 @@ +:020000040000FA +:0300000007FFFEF9 +:0300010007F809F4 +:0300020007F02DD7 +:0300030007E866A5 +:0300040007E0BA58 +:0300050007D922F6 +:0300060007D19C83 +:0300070007CA31F4 +:0300080007C2D953 +:0300090007BB949E +:03000A0007B465D3 +:03000B0007AD4AF4 +:03000C0007A64103 +:03000D00079F4DFD +:03000E0007986AE6 +:03000F0007919BBB +:03001000078ADB81 +:030011000784322F +:03001200077D9ACD +:0300130007770F5D +:03001400077099D9 +:03001500076A3344 +:030016000763D9A4 +:03001700075D94EE +:0300180007575F28 +:0300190007513854 +:03001A00074B1F72 +:03001B0007451680 +:03001C00073F1E7D +:03001D000739316F +:03001E000733564F +:03001F00072D8A20 +:030020000727C7E8 +:030021000722159E +:03002200071C7048 +:030023000716D9E4 +:0300240007115071 +:03002500070BD0F6 +:030026000706606A +:030027000700FED1 +:0300280006FBA133 +:0300290006F65583 +:03002A0006F116C6 +:03002B0006EBE2FF +:03002C0006E6B82D +:03002D0006E19C4D +:03002E0006DC8D60 +:03002F0006D7866B +:0300300006D2886D +:0300310006CD9861 +:0300320006C8B34A +:0300330006C3D62B +:0300340006BF06FE +:0300350006BA40C8 +:0300360006B58488 +:0300370006B0CD43 +:0300380006AC24EF +:0300390006A78592 +:03003A0006A2F02B +:03003B00069E64BA +:03003C000699E141 +:03003D00069566BF +:03003E000690F633 +:03003F00068C8D9F +:0300400006882F00 +:030041000683D95A +:03004200067F8AAC +:03004300067B46F3 +:0300440006770834 +:030045000672D16F +:03004600066EA59E +:03004700066A82C4 +:03004800066666E3 +:03004900066253F9 +:03004A00065E440B +:03004B00065A3E14 +:03004C0006564114 +:03004D0006524C0C +:03004E00064E5CFF +:03004F00064A73EB +:03005000064693CE +:030051000642BBA9 +:03005200063EEB7C +:03005300063B1F4A +:0300540006375A12 +:0300550006339DD2 +:03005600062FE58D +:03005700062C363E +:0300580006288DEA +:030059000624EB8F +:03005A0006214F2D +:03005B00061DB7C8 +:03005C00061A265B +:03005D0006169BE9 +:03005E000613186E +:03005F00060F9CED +:03006000060C2467 +:030061000608B3DB +:0300620006054848 +:030063000601E0B3 +:0300640005FE8016 +:0300650005FB2573 +:0300660005F7D0CB +:0300670005F4831A +:0300680005F13867 +:0300690005EDF1B1 +:03006A0005EAB1F3 +:03006B0005E7782E +:03006C0005E44266 +:03006D0005E11298 +:03006E0005DDEDC0 +:03006F0005DAC4EB +:0300700005D7A60B +:0300710005D48A29 +:0300720005D17441 +:0300730005CE6552 +:0300740005CB5465 +:0300750005C84D6E +:0300760005C54974 +:0300770005C24B74 +:0300780005BF536E +:0300790005BC6063 +:03007A0005B96E57 +:03007B0005B68047 +:03007C0005B39831 +:03007D0005B0B714 +:03007E0005ADD9F4 +:03007F0005AAFED1 +:030080000B504AD8 +:030081000B450C20 +:030082000B39EE49 +:030083000B2EF24F +:030084000B241634 +:030085000B1956FE +:030086000B0EB8A6 +:030087000B043A2D +:030088000AF9D0A2 +:030089000AEF90EB +:03008A000AE5661E +:03008B000ADB5637 +:03008C000AD1682E +:03008D000AC78E11 +:03008E000ABDD2D6 +:03008F000AB42E82 +:030090000AAAA811 +:030091000AA13889 +:030092000A97E4E6 +:030093000A8EA42E +:030094000A85805A +:030095000A7C766C +:030096000A737E6C +:030097000A6A9E54 +:030098000A61D822 +:030099000A591CE5 +:03009A000A508287 +:03009B000A480010 +:03009C000A3F8A8E +:03009D000A372CF3 +:03009E000A2EDE49 +:03009F000A26AA84 +:0300A0000A1E86AF +:0300A1000A167AC2 +:0300A2000A0E7EC5 +:0300A3000A0692B8 +:0300A40009FEC092 +:0300A50009F6F861 +:0300A60009EF4619 +:0300A70009E7AABC +:0300A80009E01656 +:0300A90009D89CD7 +:0300AA0009D12E4B +:0300AB0009C9D0B0 +:0300AC0009C28402 +:0300AD0009BB4C40 +:0300AE0009B4246E +:0300AF0009AD0692 +:0300B00009A5F8A7 +:0300B100099EFAAB +:0300B20009980E9C +:0300B3000991327E +:0300B400098A6452 +:0300B5000983A21A +:0300B600097CECD6 +:0300B70009764483 +:0300B800096FB21B +:0300B900096928AA +:0300BA000962AA2E +:0300BB00095C3CA1 +:0300BC000955DA09 +:0300BD00094F8662 +:0300BE0009493AB3 +:0300BF00094302F0 +:0300C000093CD226 +:0300C1000936B04D +:0300C20009309C66 +:0300C300092A8E79 +:0300C4000924927A +:0300C500091EA071 +:0300C6000918B462 +:0300C7000912DE3D +:0300C800090D0C13 +:0300C900090746DE +:0300CA00090188A1 +:0300CB0008FBDA55 +:0300CC0008F63AF9 +:0300CD0008F09E9A +:0300CE0008EB0C30 +:0300CF0008E588B9 +:0300D00008E00E37 +:0300D10008DA9CAE +:0300D20008D5321C +:0300D30008CFD47F +:0300D40008CA84D3 +:0300D50008C53A21 +:0300D60008BFF66A +:0300D70008BAC4A0 +:0300D80008B590D8 +:0300D90008B070FC +:0300DA0008AB521E +:0300DB0008A64034 +:0300DC0008A13840 +:0300DD00089C3844 +:0300DE0008974040 +:0300DF0008925034 +:0300E000088D6A1E +:0300E10008888804 +:0300E2000883B4DC +:0300E300087EE6AE +:0300E400087A1C7B +:0300E50008755E3D +:0300E6000870ACF3 +:0300E700086BF6AD +:0300E80008675452 +:0300E9000862B2F8 +:0300EA00085E1895 +:0300EB0008598A27 +:0300EC00085504B0 +:0300ED0008508038 +:0300EE00084C0CAF +:0300EF000847942B +:0300F00008432C96 +:0300F100083EC600 +:0300F200083A6A5F +:0300F300083612BA +:0300F4000831C010 +:0300F500082D7A59 +:0300F60008293A9C +:0300F7000824FCDE +:0300F8000820C21B +:0300F900081C944C +:0300FA0008187073 +:0300FB000814489E +:0300FC00081030B9 +:0300FD00080C1ECE +:0300FE0008080EE1 +:0300FF000803FEF5 +:00000001ff diff --git a/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC2_uid68_sqrtTables_lutmem.hex b/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC2_uid68_sqrtTables_lutmem.hex new file mode 100644 index 00000000..7e63b697 --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_sqrt_memoryC2_uid68_sqrtTables_lutmem.hex @@ -0,0 +1,258 @@ +:020000040000FA +:020000000C06EC +:020001000C13DE +:020002000C1DD3 +:020003000C2AC5 +:020004000C33BB +:020005000C3DB0 +:020006000C4BA1 +:020007000C5398 +:020008000C5E8C +:020009000C6980 +:02000A000C7276 +:02000B000C7C6B +:02000C000C8660 +:02000D000C8F56 +:02000E000C994B +:02000F000CA142 +:020010000CAD35 +:020011000CB32E +:020012000CBB25 +:020013000CC51A +:020014000CCC12 +:020015000CD30A +:020016000CDFFD +:020017000CE5F6 +:020018000CECEE +:020019000CF4E5 +:02001A000CFDDB +:02001B000D05D1 +:02001C000D0ACB +:02001D000D14C0 +:02001E000D19BA +:02001F000D1FB3 +:020020000D28A9 +:020021000D2EA2 +:020022000D359A +:020023000D3A94 +:020024000D408D +:020025000D4884 +:020026000D4D7E +:020027000D5179 +:020028000D5C6D +:020029000D6266 +:02002A000D6760 +:02002B000D6D59 +:02002C000D7451 +:02002D000D784C +:02002E000D7B48 +:02002F000D8240 +:020030000D8938 +:020031000D8D33 +:020032000D922D +:020033000D9826 +:020034000D9C21 +:020035000DA01C +:020036000DA417 +:020037000DAD0D +:020038000DB207 +:020039000DB602 +:02003A000DBAFD +:02003B000DBEF8 +:02003C000DC3F2 +:02003D000DC8EC +:02003E000DCCE7 +:02003F000DD1E1 +:020040000DD4DD +:020041000DD9D7 +:020042000DDDD2 +:020043000DE1CD +:020044000DE5C8 +:020045000DECC0 +:020046000DEFBC +:020047000DF2B8 +:020048000DF5B4 +:020049000DF8B0 +:02004A000DFEA9 +:02004B000E02A3 +:02004C000E059F +:02004D000E089B +:02004E000E0D95 +:02004F000E128F +:020050000E158B +:020051000E1788 +:020052000E1985 +:020053000E1E7F +:020054000E217B +:020055000E2576 +:020056000E2971 +:020057000E2B6E +:020058000E2E6A +:020059000E3067 +:02005A000E3363 +:02005B000E385D +:02005C000E3C58 +:02005D000E4053 +:02005E000E4250 +:02005F000E444D +:020060000E4749 +:020061000E4946 +:020062000E4C42 +:020063000E503D +:020064000E5339 +:020065000E5635 +:020066000E5832 +:020067000E5930 +:020068000E5D2B +:020069000E6225 +:02006A000E6521 +:02006B000E671E +:02006C000E6B19 +:02006D000E6E15 +:02006E000E6B17 +:02006F000E7110 +:020070000E720E +:020071000E750A +:020072000E7707 +:020073000E7706 +:020074000E7EFE +:020075000E80FB +:020076000E83F7 +:020077000E85F4 +:020078000E85F3 +:020079000E86F1 +:02007A000E8AEC +:02007B000E8EE7 +:02007C000E90E4 +:02007D000E90E3 +:02007E000E92E0 +:02007F000E94DD +:020080000A6212 +:020081000A7201 +:020082000A82F0 +:020083000A90E1 +:020084000AA0D0 +:020085000AB0BF +:020086000ABEB0 +:020087000ACAA3 +:020088000ADE8E +:020089000AE883 +:02008A000AF872 +:02008B000B0662 +:02008C000B1255 +:02008D000B2244 +:02008E000B3035 +:02008F000B3E26 +:020090000B4A19 +:020091000B560C +:020092000B62FF +:020093000B70F0 +:020094000B7AE5 +:020095000B82DC +:020096000B90CD +:020097000B9AC2 +:020098000BA2B9 +:020099000BB6A4 +:02009A000BBC9D +:02009B000BC296 +:02009C000BD087 +:02009D000BD87E +:02009E000BE66F +:02009F000BF064 +:0200A0000BFA59 +:0200A1000C024F +:0200A2000C0A46 +:0200A3000C1639 +:0200A4000C1E30 +:0200A5000C2A23 +:0200A6000C321A +:0200A7000C3615 +:0200A8000C4406 +:0200A9000C4AFF +:0200AA000C54F4 +:0200AB000C5EE9 +:0200AC000C66E0 +:0200AD000C6ADB +:0200AE000C70D4 +:0200AF000C7AC9 +:0200B0000C84BE +:0200B1000C8CB5 +:0200B2000C92AE +:0200B3000C96A9 +:0200B4000C9CA2 +:0200B5000CA499 +:0200B6000CAE8E +:0200B7000CB685 +:0200B8000CB882 +:0200B9000CC079 +:0200BA000CC870 +:0200BB000CCE69 +:0200BC000CD462 +:0200BD000CDC59 +:0200BE000CE450 +:0200BF000CE84B +:0200C0000CF042 +:0200C1000CF43D +:0200C2000CFA36 +:0200C3000D022C +:0200C4000D0627 +:0200C5000D0A22 +:0200C6000D1417 +:0200C7000D1614 +:0200C8000D1C0D +:0200C9000D2404 +:0200CA000D2CFB +:0200CB000D2EF8 +:0200CC000D30F5 +:0200CD000D38EC +:0200CE000D3EE5 +:0200CF000D42E0 +:0200D0000D46DB +:0200D1000D4CD4 +:0200D2000D54CB +:0200D3000D58C6 +:0200D4000D5AC3 +:0200D5000D60BC +:0200D6000D66B5 +:0200D7000D66B4 +:0200D8000D70A9 +:0200D9000D72A6 +:0200DA000D789F +:0200DB000D7C9A +:0200DC000D7E97 +:0200DD000D8292 +:0200DE000D868D +:0200DF000D8A88 +:0200E0000D8E83 +:0200E1000D947C +:0200E2000D9679 +:0200E3000D9A74 +:0200E4000DA26B +:0200E5000DA468 +:0200E6000DA467 +:0200E7000DAE5C +:0200E8000DB059 +:0200E9000DB652 +:0200EA000DBC4B +:0200EB000DBC4A +:0200EC000DC045 +:0200ED000DC440 +:0200EE000DC241 +:0200EF000DCA38 +:0200F0000DCC35 +:0200F1000DD030 +:0200F2000DD22D +:0200F3000DD826 +:0200F4000DDC21 +:0200F5000DDC20 +:0200F6000DDE1D +:0200F7000DE416 +:0200F8000DEC0D +:0200F9000DEC0C +:0200FA000DEE09 +:0200FB000DF600 +:0200FC000DF401 +:0200FD000DF6FE +:0200FE000DF8FB +:0200FF000E02EF +:00000001ff diff --git a/hw/rtl/fp_cores/altera/acl_fp_sub.v b/hw/rtl/fp_cores/altera/acl_fp_sub.v deleted file mode 100644 index f3a1956a..00000000 --- a/hw/rtl/fp_cores/altera/acl_fp_sub.v +++ /dev/null @@ -1,67 +0,0 @@ -// (C) 1992-2016 Intel Corporation. -// Intel, the Intel logo, Intel, MegaCore, NIOS II, Quartus and TalkBack words -// and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. -// and/or other countries. Other marks and brands may be claimed as the property -// of others. See Trademarks on intel.com for full list of Intel trademarks or -// the Trademarks & Brands Names Database (if Intel) or See www.Intel.com/legal (if Altera) -// Your use of Intel Corporation's design tools, logic functions and other -// software and tools, and its AMPP partner logic functions, and any output -// files any of the foregoing (including device programming or simulation -// files), and any associated documentation or information are expressly subject -// to the terms and conditions of the Altera Program License Subscription -// Agreement, Intel MegaCore Function License Agreement, or other applicable -// license agreement, including, without limitation, that your use is for the -// sole purpose of programming logic devices manufactured by Intel and sold by -// Intel or its authorized distributors. Please refer to the applicable -// agreement for further details. - -module acl_fp_add(dataa, datab, clock, enable, result); - -input [31:0] dataa; -input [31:0] datab; -input clock, enable; - -output [31:0] result; - -// FP MAC wysiwyg -twentynm_fp_mac mac_fp_wys ( - // inputs - .accumulate(), - .chainin_overflow(), - .chainin_invalid(), - .chainin_underflow(), - .chainin_inexact(), - .ax(dataa), - .ay(datab), - .az(), - .clk({2'b00,clock}), - .ena({2'b11,enable}), - .aclr(2'b00), - .chainin(), - // outputs - .overflow(), - .invalid(), - .underflow(), - .inexact(), - .chainout_overflow(), - .chainout_invalid(), - .chainout_underflow(), - .chainout_inexact(), - .resulta(result), - .chainout() -); -defparam mac_fp_wys.operation_mode = "sp_add"; -defparam mac_fp_wys.use_chainin = "false"; -defparam mac_fp_wys.adder_subtract = "true"; -defparam mac_fp_wys.ax_clock = "0"; -defparam mac_fp_wys.ay_clock = "0"; -defparam mac_fp_wys.az_clock = "none"; -defparam mac_fp_wys.output_clock = "0"; -defparam mac_fp_wys.accumulate_clock = "none"; -defparam mac_fp_wys.ax_chainin_pl_clock = "none"; -defparam mac_fp_wys.accum_pipeline_clock = "none"; -defparam mac_fp_wys.mult_pipeline_clock = "none"; -defparam mac_fp_wys.adder_input_clock = "0"; -defparam mac_fp_wys.accum_adder_clock = "none"; - -endmodule diff --git a/hw/rtl/fp_cores/altera/acl_fp_utof.sv b/hw/rtl/fp_cores/altera/acl_fp_utof.sv new file mode 100644 index 00000000..2ba2b67d --- /dev/null +++ b/hw/rtl/fp_cores/altera/acl_fp_utof.sv @@ -0,0 +1,486 @@ +// ------------------------------------------------------------------------- +// High Level Design Compiler for Intel(R) FPGAs Version 17.1 (Release Build #273) +// Quartus Prime development tool and MATLAB/Simulink Interface +// +// Legal Notice: Copyright 2017 Intel Corporation. All rights reserved. +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing (including device programming or simulation +// files), and any associated documentation or information are expressly +// subject to the terms and conditions of the Intel FPGA Software License +// Agreement, Intel MegaCore Function License Agreement, or other applicable +// license agreement, including, without limitation, that your use is for +// the sole purpose of programming logic devices manufactured by Intel +// and sold by Intel or its authorized distributors. Please refer to the +// applicable agreement for further details. +// --------------------------------------------------------------------------- + +// SystemVerilog created from acl_fp_utof +// SystemVerilog created on Wed Aug 5 12:58:16 2020 + + +(* altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 10037; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 15400; -name MESSAGE_DISABLE 14130; -name MESSAGE_DISABLE 10036; -name MESSAGE_DISABLE 12020; -name MESSAGE_DISABLE 12030; -name MESSAGE_DISABLE 12010; -name MESSAGE_DISABLE 12110; -name MESSAGE_DISABLE 14320; -name MESSAGE_DISABLE 13410; -name MESSAGE_DISABLE 113007; -name MESSAGE_DISABLE 10958" *) +module acl_fp_utof ( + input wire [31:0] a, + input wire [0:0] en, + output wire [31:0] q, + input wire clk, + input wire areset + ); + + wire [0:0] GND_q; + wire [5:0] maxCount_uid7_fxpToFPTest_q; + wire [0:0] inIsZero_uid8_fxpToFPTest_qi; + reg [0:0] inIsZero_uid8_fxpToFPTest_q; + wire [7:0] msbIn_uid9_fxpToFPTest_q; + wire [8:0] expPreRnd_uid10_fxpToFPTest_a; + wire [8:0] expPreRnd_uid10_fxpToFPTest_b; + logic [8:0] expPreRnd_uid10_fxpToFPTest_o; + wire [8:0] expPreRnd_uid10_fxpToFPTest_q; + wire [32:0] expFracRnd_uid12_fxpToFPTest_q; + wire [0:0] sticky_uid16_fxpToFPTest_qi; + reg [0:0] sticky_uid16_fxpToFPTest_q; + wire [0:0] nr_uid17_fxpToFPTest_q; + wire [0:0] rnd_uid18_fxpToFPTest_qi; + reg [0:0] rnd_uid18_fxpToFPTest_q; + wire [34:0] expFracR_uid20_fxpToFPTest_a; + wire [34:0] expFracR_uid20_fxpToFPTest_b; + logic [34:0] expFracR_uid20_fxpToFPTest_o; + wire [33:0] expFracR_uid20_fxpToFPTest_q; + wire [23:0] fracR_uid21_fxpToFPTest_in; + wire [22:0] fracR_uid21_fxpToFPTest_b; + wire [9:0] expR_uid22_fxpToFPTest_b; + wire [11:0] udf_uid23_fxpToFPTest_a; + wire [11:0] udf_uid23_fxpToFPTest_b; + logic [11:0] udf_uid23_fxpToFPTest_o; + wire [0:0] udf_uid23_fxpToFPTest_n; + wire [7:0] expInf_uid24_fxpToFPTest_q; + wire [11:0] ovf_uid25_fxpToFPTest_a; + wire [11:0] ovf_uid25_fxpToFPTest_b; + logic [11:0] ovf_uid25_fxpToFPTest_o; + wire [0:0] ovf_uid25_fxpToFPTest_n; + wire [0:0] excSelector_uid26_fxpToFPTest_q; + wire [22:0] fracZ_uid27_fxpToFPTest_q; + wire [0:0] fracRPostExc_uid28_fxpToFPTest_s; + reg [22:0] fracRPostExc_uid28_fxpToFPTest_q; + wire [0:0] udfOrInZero_uid29_fxpToFPTest_q; + wire [1:0] excSelector_uid30_fxpToFPTest_q; + wire [7:0] expZ_uid33_fxpToFPTest_q; + wire [7:0] expR_uid34_fxpToFPTest_in; + wire [7:0] expR_uid34_fxpToFPTest_b; + wire [1:0] expRPostExc_uid35_fxpToFPTest_s; + reg [7:0] expRPostExc_uid35_fxpToFPTest_q; + wire [31:0] outRes_uid36_fxpToFPTest_q; + wire [31:0] zs_uid38_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_qi; + reg [0:0] vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_s; + reg [31:0] vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [15:0] zs_uid43_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [31:0] cStage_uid48_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_s; + reg [31:0] vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [31:0] cStage_uid55_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_s; + reg [31:0] vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [3:0] zs_uid57_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [31:0] cStage_uid62_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_s; + reg [31:0] vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [1:0] zs_uid64_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [31:0] cStage_uid69_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_s; + reg [31:0] vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vCount_uid73_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [31:0] cStage_uid76_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [0:0] vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_s; + reg [31:0] vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [5:0] vCount_uid78_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [7:0] vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_a; + wire [7:0] vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_b; + logic [7:0] vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_o; + wire [0:0] vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_c; + wire [0:0] vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_s; + reg [5:0] vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_q; + wire [1:0] l_uid13_fxpToFPTest_merged_bit_select_in; + wire [0:0] l_uid13_fxpToFPTest_merged_bit_select_b; + wire [0:0] l_uid13_fxpToFPTest_merged_bit_select_c; + wire [15:0] rVStage_uid44_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b; + wire [15:0] rVStage_uid44_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c; + wire [7:0] rVStage_uid51_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b; + wire [23:0] rVStage_uid51_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c; + wire [3:0] rVStage_uid58_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b; + wire [27:0] rVStage_uid58_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c; + wire [1:0] rVStage_uid65_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b; + wire [29:0] rVStage_uid65_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c; + wire [0:0] rVStage_uid72_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b; + wire [30:0] rVStage_uid72_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c; + wire [30:0] fracRnd_uid11_fxpToFPTest_merged_bit_select_in; + wire [23:0] fracRnd_uid11_fxpToFPTest_merged_bit_select_b; + wire [6:0] fracRnd_uid11_fxpToFPTest_merged_bit_select_c; + reg [23:0] redist0_fracRnd_uid11_fxpToFPTest_merged_bit_select_b_1_q; + reg [0:0] redist1_vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q_1_q; + reg [0:0] redist2_vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q_1_q; + reg [0:0] redist3_vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q_2_q; + reg [0:0] redist4_vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q_3_q; + reg [0:0] redist5_vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q_4_q; + reg [9:0] redist6_expR_uid22_fxpToFPTest_b_1_q; + reg [22:0] redist7_fracR_uid21_fxpToFPTest_b_1_q; + reg [32:0] redist8_expFracRnd_uid12_fxpToFPTest_q_1_q; + reg [0:0] redist9_inIsZero_uid8_fxpToFPTest_q_2_q; + reg [31:0] redist10_xIn_a_1_q; + + + // GND(CONSTANT,0) + assign GND_q = 1'b0; + + // expInf_uid24_fxpToFPTest(CONSTANT,23) + assign expInf_uid24_fxpToFPTest_q = 8'b11111111; + + // expZ_uid33_fxpToFPTest(CONSTANT,32) + assign expZ_uid33_fxpToFPTest_q = 8'b00000000; + + // rVStage_uid72_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select(BITSELECT,89)@4 + assign rVStage_uid72_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b = vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q[31:31]; + assign rVStage_uid72_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c = vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q[30:0]; + + // cStage_uid76_lzcShifterZ1_uid6_fxpToFPTest(BITJOIN,75)@4 + assign cStage_uid76_lzcShifterZ1_uid6_fxpToFPTest_q = {rVStage_uid72_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c, GND_q}; + + // rVStage_uid65_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select(BITSELECT,88)@3 + assign rVStage_uid65_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b = vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_q[31:30]; + assign rVStage_uid65_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c = vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_q[29:0]; + + // zs_uid64_lzcShifterZ1_uid6_fxpToFPTest(CONSTANT,63) + assign zs_uid64_lzcShifterZ1_uid6_fxpToFPTest_q = 2'b00; + + // cStage_uid69_lzcShifterZ1_uid6_fxpToFPTest(BITJOIN,68)@3 + assign cStage_uid69_lzcShifterZ1_uid6_fxpToFPTest_q = {rVStage_uid65_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c, zs_uid64_lzcShifterZ1_uid6_fxpToFPTest_q}; + + // rVStage_uid58_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select(BITSELECT,87)@3 + assign rVStage_uid58_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b = vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q[31:28]; + assign rVStage_uid58_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c = vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q[27:0]; + + // zs_uid57_lzcShifterZ1_uid6_fxpToFPTest(CONSTANT,56) + assign zs_uid57_lzcShifterZ1_uid6_fxpToFPTest_q = 4'b0000; + + // cStage_uid62_lzcShifterZ1_uid6_fxpToFPTest(BITJOIN,61)@3 + assign cStage_uid62_lzcShifterZ1_uid6_fxpToFPTest_q = {rVStage_uid58_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c, zs_uid57_lzcShifterZ1_uid6_fxpToFPTest_q}; + + // rVStage_uid51_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select(BITSELECT,86)@2 + assign rVStage_uid51_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b = vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q[31:24]; + assign rVStage_uid51_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c = vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q[23:0]; + + // cStage_uid55_lzcShifterZ1_uid6_fxpToFPTest(BITJOIN,54)@2 + assign cStage_uid55_lzcShifterZ1_uid6_fxpToFPTest_q = {rVStage_uid51_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c, expZ_uid33_fxpToFPTest_q}; + + // rVStage_uid44_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select(BITSELECT,85)@1 + assign rVStage_uid44_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b = vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_q[31:16]; + assign rVStage_uid44_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c = vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_q[15:0]; + + // zs_uid43_lzcShifterZ1_uid6_fxpToFPTest(CONSTANT,42) + assign zs_uid43_lzcShifterZ1_uid6_fxpToFPTest_q = 16'b0000000000000000; + + // cStage_uid48_lzcShifterZ1_uid6_fxpToFPTest(BITJOIN,47)@1 + assign cStage_uid48_lzcShifterZ1_uid6_fxpToFPTest_q = {rVStage_uid44_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_c, zs_uid43_lzcShifterZ1_uid6_fxpToFPTest_q}; + + // zs_uid38_lzcShifterZ1_uid6_fxpToFPTest(CONSTANT,37) + assign zs_uid38_lzcShifterZ1_uid6_fxpToFPTest_q = 32'b00000000000000000000000000000000; + + // redist10_xIn_a_1(DELAY,101) + dspba_delay_ver #( .width(32), .depth(1), .reset_kind("ASYNC") ) + redist10_xIn_a_1 ( .xin(a), .xout(redist10_xIn_a_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest(LOGICAL,39)@0 + 1 + assign vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_qi = a == zs_uid38_lzcShifterZ1_uid6_fxpToFPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_delay ( .xin(vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_qi), .xout(vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest(MUX,41)@1 + assign vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_s = vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q; + always @(vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_s or en or redist10_xIn_a_1_q or zs_uid38_lzcShifterZ1_uid6_fxpToFPTest_q) + begin + unique case (vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_s) + 1'b0 : vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_q = redist10_xIn_a_1_q; + 1'b1 : vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_q = zs_uid38_lzcShifterZ1_uid6_fxpToFPTest_q; + default : vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_q = 32'b0; + endcase + end + + // vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest(LOGICAL,44)@1 + assign vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q = rVStage_uid44_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b == zs_uid43_lzcShifterZ1_uid6_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest(MUX,48)@1 + 1 + assign vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_s = vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q <= 32'b0; + end + else if (en == 1'b1) + begin + unique case (vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_s) + 1'b0 : vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q <= vStagei_uid42_lzcShifterZ1_uid6_fxpToFPTest_q; + 1'b1 : vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q <= cStage_uid48_lzcShifterZ1_uid6_fxpToFPTest_q; + default : vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q <= 32'b0; + endcase + end + end + + // vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest(LOGICAL,51)@2 + assign vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q = rVStage_uid51_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b == expZ_uid33_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest(MUX,55)@2 + 1 + assign vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_s = vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q <= 32'b0; + end + else if (en == 1'b1) + begin + unique case (vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_s) + 1'b0 : vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q <= vStagei_uid49_lzcShifterZ1_uid6_fxpToFPTest_q; + 1'b1 : vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q <= cStage_uid55_lzcShifterZ1_uid6_fxpToFPTest_q; + default : vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q <= 32'b0; + endcase + end + end + + // vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest(LOGICAL,58)@3 + assign vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q = rVStage_uid58_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b == zs_uid57_lzcShifterZ1_uid6_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest(MUX,62)@3 + assign vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_s = vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q; + always @(vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_s or en or vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q or cStage_uid62_lzcShifterZ1_uid6_fxpToFPTest_q) + begin + unique case (vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_s) + 1'b0 : vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_q = vStagei_uid56_lzcShifterZ1_uid6_fxpToFPTest_q; + 1'b1 : vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_q = cStage_uid62_lzcShifterZ1_uid6_fxpToFPTest_q; + default : vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_q = 32'b0; + endcase + end + + // vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest(LOGICAL,65)@3 + assign vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q = rVStage_uid65_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b == zs_uid64_lzcShifterZ1_uid6_fxpToFPTest_q ? 1'b1 : 1'b0; + + // vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest(MUX,69)@3 + 1 + assign vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_s = vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q <= 32'b0; + end + else if (en == 1'b1) + begin + unique case (vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_s) + 1'b0 : vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q <= vStagei_uid63_lzcShifterZ1_uid6_fxpToFPTest_q; + 1'b1 : vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q <= cStage_uid69_lzcShifterZ1_uid6_fxpToFPTest_q; + default : vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q <= 32'b0; + endcase + end + end + + // vCount_uid73_lzcShifterZ1_uid6_fxpToFPTest(LOGICAL,72)@4 + assign vCount_uid73_lzcShifterZ1_uid6_fxpToFPTest_q = rVStage_uid72_lzcShifterZ1_uid6_fxpToFPTest_merged_bit_select_b == GND_q ? 1'b1 : 1'b0; + + // vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest(MUX,76)@4 + assign vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_s = vCount_uid73_lzcShifterZ1_uid6_fxpToFPTest_q; + always @(vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_s or en or vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q or cStage_uid76_lzcShifterZ1_uid6_fxpToFPTest_q) + begin + unique case (vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_s) + 1'b0 : vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_q = vStagei_uid70_lzcShifterZ1_uid6_fxpToFPTest_q; + 1'b1 : vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_q = cStage_uid76_lzcShifterZ1_uid6_fxpToFPTest_q; + default : vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_q = 32'b0; + endcase + end + + // fracRnd_uid11_fxpToFPTest_merged_bit_select(BITSELECT,90)@4 + assign fracRnd_uid11_fxpToFPTest_merged_bit_select_in = vStagei_uid77_lzcShifterZ1_uid6_fxpToFPTest_q[30:0]; + assign fracRnd_uid11_fxpToFPTest_merged_bit_select_b = fracRnd_uid11_fxpToFPTest_merged_bit_select_in[30:7]; + assign fracRnd_uid11_fxpToFPTest_merged_bit_select_c = fracRnd_uid11_fxpToFPTest_merged_bit_select_in[6:0]; + + // sticky_uid16_fxpToFPTest(LOGICAL,15)@4 + 1 + assign sticky_uid16_fxpToFPTest_qi = fracRnd_uid11_fxpToFPTest_merged_bit_select_c != 7'b0000000 ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + sticky_uid16_fxpToFPTest_delay ( .xin(sticky_uid16_fxpToFPTest_qi), .xout(sticky_uid16_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // nr_uid17_fxpToFPTest(LOGICAL,16)@5 + assign nr_uid17_fxpToFPTest_q = ~ (l_uid13_fxpToFPTest_merged_bit_select_c); + + // maxCount_uid7_fxpToFPTest(CONSTANT,6) + assign maxCount_uid7_fxpToFPTest_q = 6'b100000; + + // redist5_vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q_4(DELAY,96) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist5_vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q_4 ( .xin(vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q), .xout(redist5_vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q_4_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist4_vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q_3(DELAY,95) + dspba_delay_ver #( .width(1), .depth(3), .reset_kind("ASYNC") ) + redist4_vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q_3 ( .xin(vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q), .xout(redist4_vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q_3_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist3_vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q_2(DELAY,94) + dspba_delay_ver #( .width(1), .depth(2), .reset_kind("ASYNC") ) + redist3_vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q_2 ( .xin(vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q), .xout(redist3_vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist2_vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q_1(DELAY,93) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist2_vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q_1 ( .xin(vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q), .xout(redist2_vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist1_vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q_1(DELAY,92) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist1_vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q_1 ( .xin(vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q), .xout(redist1_vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // vCount_uid78_lzcShifterZ1_uid6_fxpToFPTest(BITJOIN,77)@4 + assign vCount_uid78_lzcShifterZ1_uid6_fxpToFPTest_q = {redist5_vCount_uid40_lzcShifterZ1_uid6_fxpToFPTest_q_4_q, redist4_vCount_uid45_lzcShifterZ1_uid6_fxpToFPTest_q_3_q, redist3_vCount_uid52_lzcShifterZ1_uid6_fxpToFPTest_q_2_q, redist2_vCount_uid59_lzcShifterZ1_uid6_fxpToFPTest_q_1_q, redist1_vCount_uid66_lzcShifterZ1_uid6_fxpToFPTest_q_1_q, vCount_uid73_lzcShifterZ1_uid6_fxpToFPTest_q}; + + // vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest(COMPARE,79)@4 + assign vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_a = {2'b00, maxCount_uid7_fxpToFPTest_q}; + assign vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_b = {2'b00, vCount_uid78_lzcShifterZ1_uid6_fxpToFPTest_q}; + assign vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_o = $unsigned(vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_a) - $unsigned(vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_b); + assign vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_c[0] = vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_o[7]; + + // vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest(MUX,81)@4 + 1 + assign vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_s = vCountBig_uid80_lzcShifterZ1_uid6_fxpToFPTest_c; + always @ (posedge clk or posedge areset) + begin + if (areset) + begin + vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_q <= 6'b0; + end + else if (en == 1'b1) + begin + unique case (vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_s) + 1'b0 : vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_q <= vCount_uid78_lzcShifterZ1_uid6_fxpToFPTest_q; + 1'b1 : vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_q <= maxCount_uid7_fxpToFPTest_q; + default : vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_q <= 6'b0; + endcase + end + end + + // msbIn_uid9_fxpToFPTest(CONSTANT,8) + assign msbIn_uid9_fxpToFPTest_q = 8'b10011110; + + // expPreRnd_uid10_fxpToFPTest(SUB,9)@5 + assign expPreRnd_uid10_fxpToFPTest_a = {1'b0, msbIn_uid9_fxpToFPTest_q}; + assign expPreRnd_uid10_fxpToFPTest_b = {3'b000, vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_q}; + assign expPreRnd_uid10_fxpToFPTest_o = $unsigned(expPreRnd_uid10_fxpToFPTest_a) - $unsigned(expPreRnd_uid10_fxpToFPTest_b); + assign expPreRnd_uid10_fxpToFPTest_q = expPreRnd_uid10_fxpToFPTest_o[8:0]; + + // redist0_fracRnd_uid11_fxpToFPTest_merged_bit_select_b_1(DELAY,91) + dspba_delay_ver #( .width(24), .depth(1), .reset_kind("ASYNC") ) + redist0_fracRnd_uid11_fxpToFPTest_merged_bit_select_b_1 ( .xin(fracRnd_uid11_fxpToFPTest_merged_bit_select_b), .xout(redist0_fracRnd_uid11_fxpToFPTest_merged_bit_select_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expFracRnd_uid12_fxpToFPTest(BITJOIN,11)@5 + assign expFracRnd_uid12_fxpToFPTest_q = {expPreRnd_uid10_fxpToFPTest_q, redist0_fracRnd_uid11_fxpToFPTest_merged_bit_select_b_1_q}; + + // l_uid13_fxpToFPTest_merged_bit_select(BITSELECT,84)@5 + assign l_uid13_fxpToFPTest_merged_bit_select_in = expFracRnd_uid12_fxpToFPTest_q[1:0]; + assign l_uid13_fxpToFPTest_merged_bit_select_b = l_uid13_fxpToFPTest_merged_bit_select_in[1:1]; + assign l_uid13_fxpToFPTest_merged_bit_select_c = l_uid13_fxpToFPTest_merged_bit_select_in[0:0]; + + // rnd_uid18_fxpToFPTest(LOGICAL,17)@5 + 1 + assign rnd_uid18_fxpToFPTest_qi = l_uid13_fxpToFPTest_merged_bit_select_b | nr_uid17_fxpToFPTest_q | sticky_uid16_fxpToFPTest_q; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + rnd_uid18_fxpToFPTest_delay ( .xin(rnd_uid18_fxpToFPTest_qi), .xout(rnd_uid18_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist8_expFracRnd_uid12_fxpToFPTest_q_1(DELAY,99) + dspba_delay_ver #( .width(33), .depth(1), .reset_kind("ASYNC") ) + redist8_expFracRnd_uid12_fxpToFPTest_q_1 ( .xin(expFracRnd_uid12_fxpToFPTest_q), .xout(redist8_expFracRnd_uid12_fxpToFPTest_q_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expFracR_uid20_fxpToFPTest(ADD,19)@6 + assign expFracR_uid20_fxpToFPTest_a = {{2{redist8_expFracRnd_uid12_fxpToFPTest_q_1_q[32]}}, redist8_expFracRnd_uid12_fxpToFPTest_q_1_q}; + assign expFracR_uid20_fxpToFPTest_b = {34'b0000000000000000000000000000000000, rnd_uid18_fxpToFPTest_q}; + assign expFracR_uid20_fxpToFPTest_o = $signed(expFracR_uid20_fxpToFPTest_a) + $signed(expFracR_uid20_fxpToFPTest_b); + assign expFracR_uid20_fxpToFPTest_q = expFracR_uid20_fxpToFPTest_o[33:0]; + + // expR_uid22_fxpToFPTest(BITSELECT,21)@6 + assign expR_uid22_fxpToFPTest_b = expFracR_uid20_fxpToFPTest_q[33:24]; + + // redist6_expR_uid22_fxpToFPTest_b_1(DELAY,97) + dspba_delay_ver #( .width(10), .depth(1), .reset_kind("ASYNC") ) + redist6_expR_uid22_fxpToFPTest_b_1 ( .xin(expR_uid22_fxpToFPTest_b), .xout(redist6_expR_uid22_fxpToFPTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // expR_uid34_fxpToFPTest(BITSELECT,33)@7 + assign expR_uid34_fxpToFPTest_in = redist6_expR_uid22_fxpToFPTest_b_1_q[7:0]; + assign expR_uid34_fxpToFPTest_b = expR_uid34_fxpToFPTest_in[7:0]; + + // ovf_uid25_fxpToFPTest(COMPARE,24)@7 + assign ovf_uid25_fxpToFPTest_a = {{2{redist6_expR_uid22_fxpToFPTest_b_1_q[9]}}, redist6_expR_uid22_fxpToFPTest_b_1_q}; + assign ovf_uid25_fxpToFPTest_b = {4'b0000, expInf_uid24_fxpToFPTest_q}; + assign ovf_uid25_fxpToFPTest_o = $signed(ovf_uid25_fxpToFPTest_a) - $signed(ovf_uid25_fxpToFPTest_b); + assign ovf_uid25_fxpToFPTest_n[0] = ~ (ovf_uid25_fxpToFPTest_o[11]); + + // inIsZero_uid8_fxpToFPTest(LOGICAL,7)@5 + 1 + assign inIsZero_uid8_fxpToFPTest_qi = vCountFinal_uid82_lzcShifterZ1_uid6_fxpToFPTest_q == maxCount_uid7_fxpToFPTest_q ? 1'b1 : 1'b0; + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + inIsZero_uid8_fxpToFPTest_delay ( .xin(inIsZero_uid8_fxpToFPTest_qi), .xout(inIsZero_uid8_fxpToFPTest_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // redist9_inIsZero_uid8_fxpToFPTest_q_2(DELAY,100) + dspba_delay_ver #( .width(1), .depth(1), .reset_kind("ASYNC") ) + redist9_inIsZero_uid8_fxpToFPTest_q_2 ( .xin(inIsZero_uid8_fxpToFPTest_q), .xout(redist9_inIsZero_uid8_fxpToFPTest_q_2_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // udf_uid23_fxpToFPTest(COMPARE,22)@7 + assign udf_uid23_fxpToFPTest_a = {11'b00000000000, GND_q}; + assign udf_uid23_fxpToFPTest_b = {{2{redist6_expR_uid22_fxpToFPTest_b_1_q[9]}}, redist6_expR_uid22_fxpToFPTest_b_1_q}; + assign udf_uid23_fxpToFPTest_o = $signed(udf_uid23_fxpToFPTest_a) - $signed(udf_uid23_fxpToFPTest_b); + assign udf_uid23_fxpToFPTest_n[0] = ~ (udf_uid23_fxpToFPTest_o[11]); + + // udfOrInZero_uid29_fxpToFPTest(LOGICAL,28)@7 + assign udfOrInZero_uid29_fxpToFPTest_q = udf_uid23_fxpToFPTest_n | redist9_inIsZero_uid8_fxpToFPTest_q_2_q; + + // excSelector_uid30_fxpToFPTest(BITJOIN,29)@7 + assign excSelector_uid30_fxpToFPTest_q = {ovf_uid25_fxpToFPTest_n, udfOrInZero_uid29_fxpToFPTest_q}; + + // expRPostExc_uid35_fxpToFPTest(MUX,34)@7 + assign expRPostExc_uid35_fxpToFPTest_s = excSelector_uid30_fxpToFPTest_q; + always @(expRPostExc_uid35_fxpToFPTest_s or en or expR_uid34_fxpToFPTest_b or expZ_uid33_fxpToFPTest_q or expInf_uid24_fxpToFPTest_q) + begin + unique case (expRPostExc_uid35_fxpToFPTest_s) + 2'b00 : expRPostExc_uid35_fxpToFPTest_q = expR_uid34_fxpToFPTest_b; + 2'b01 : expRPostExc_uid35_fxpToFPTest_q = expZ_uid33_fxpToFPTest_q; + 2'b10 : expRPostExc_uid35_fxpToFPTest_q = expInf_uid24_fxpToFPTest_q; + 2'b11 : expRPostExc_uid35_fxpToFPTest_q = expInf_uid24_fxpToFPTest_q; + default : expRPostExc_uid35_fxpToFPTest_q = 8'b0; + endcase + end + + // fracZ_uid27_fxpToFPTest(CONSTANT,26) + assign fracZ_uid27_fxpToFPTest_q = 23'b00000000000000000000000; + + // fracR_uid21_fxpToFPTest(BITSELECT,20)@6 + assign fracR_uid21_fxpToFPTest_in = expFracR_uid20_fxpToFPTest_q[23:0]; + assign fracR_uid21_fxpToFPTest_b = fracR_uid21_fxpToFPTest_in[23:1]; + + // redist7_fracR_uid21_fxpToFPTest_b_1(DELAY,98) + dspba_delay_ver #( .width(23), .depth(1), .reset_kind("ASYNC") ) + redist7_fracR_uid21_fxpToFPTest_b_1 ( .xin(fracR_uid21_fxpToFPTest_b), .xout(redist7_fracR_uid21_fxpToFPTest_b_1_q), .ena(en[0]), .clk(clk), .aclr(areset) ); + + // excSelector_uid26_fxpToFPTest(LOGICAL,25)@7 + assign excSelector_uid26_fxpToFPTest_q = redist9_inIsZero_uid8_fxpToFPTest_q_2_q | ovf_uid25_fxpToFPTest_n | udf_uid23_fxpToFPTest_n; + + // fracRPostExc_uid28_fxpToFPTest(MUX,27)@7 + assign fracRPostExc_uid28_fxpToFPTest_s = excSelector_uid26_fxpToFPTest_q; + always @(fracRPostExc_uid28_fxpToFPTest_s or en or redist7_fracR_uid21_fxpToFPTest_b_1_q or fracZ_uid27_fxpToFPTest_q) + begin + unique case (fracRPostExc_uid28_fxpToFPTest_s) + 1'b0 : fracRPostExc_uid28_fxpToFPTest_q = redist7_fracR_uid21_fxpToFPTest_b_1_q; + 1'b1 : fracRPostExc_uid28_fxpToFPTest_q = fracZ_uid27_fxpToFPTest_q; + default : fracRPostExc_uid28_fxpToFPTest_q = 23'b0; + endcase + end + + // outRes_uid36_fxpToFPTest(BITJOIN,35)@7 + assign outRes_uid36_fxpToFPTest_q = {GND_q, expRPostExc_uid35_fxpToFPTest_q, fracRPostExc_uid28_fxpToFPTest_q}; + + // xOut(GPOUT,4)@7 + assign q = outRes_uid36_fxpToFPTest_q; + +endmodule diff --git a/hw/rtl/fp_cores/altera/dspba_library_ver.sv b/hw/rtl/fp_cores/altera/dspba_library_ver.sv new file mode 100644 index 00000000..16367ad0 --- /dev/null +++ b/hw/rtl/fp_cores/altera/dspba_library_ver.sv @@ -0,0 +1,392 @@ +// Legal Notice: Copyright 2017 Intel Corporation. All rights reserved. +// Your use of Intel Corporation's design tools, logic functions and other +// software and tools, and its AMPP partner logic functions, and any output +// files any of the foregoing device programming or simulation files), and +// any associated documentation or information are expressly subject to the +// terms and conditions of the Intel FPGA Software License Agreement, +// Intel MegaCore Function License Agreement, or other applicable license +// agreement, including, without limitation, that your use is for the sole +// purpose of programming logic devices manufactured by Intel and sold by +// Intel or its authorized distributors. Please refer to the applicable +// agreement for further details. + + +module dspba_delay_ver +#( + parameter width = 8, + parameter depth = 1, + parameter reset_high = 1'b1, + parameter reset_kind = "ASYNC" +) ( + input clk, + input aclr, + input ena, + input [width-1:0] xin, + output [width-1:0] xout +); + + wire reset; + reg [width-1:0] delays [depth-1:0]; + + assign reset = aclr ^ reset_high; + + generate + if (depth > 0) + begin + genvar i; + for (i = 0; i < depth; ++i) + begin : delay_block + if (reset_kind == "ASYNC") + begin : sync_reset + always @ (posedge clk or negedge reset) + begin: a + if (!reset) begin + delays[i] <= 0; + end else begin + if (ena) begin + if (i > 0) begin + delays[i] <= delays[i - 1]; + end else begin + delays[i] <= xin; + end + end + end + end + end + + if (reset_kind == "SYNC") + begin : async_reset + always @ (posedge clk) + begin: a + if (!reset) begin + delays[i] <= 0; + end else begin + if (ena) begin + if (i > 0) begin + delays[i] <= delays[i - 1]; + end else begin + delays[i] <= xin; + end + end + end + end + end + + if (reset_kind == "NONE") + begin : no_reset + always @ (posedge clk) + begin: a + if (ena) begin + if (i > 0) begin + delays[i] <= delays[i - 1]; + end else begin + delays[i] <= xin; + end + end + end + end + end + + assign xout = delays[depth - 1]; + end else begin + assign xout = xin; + end + endgenerate + +endmodule + +//------------------------------------------------------------------------------ + +module dspba_sync_reg_ver +#( + parameter width1 = 8, + parameter width2 = 8, + parameter depth = 2, + parameter pulse_multiplier = 1, + parameter counter_width = 8, + parameter init_value = 0, + parameter reset1_high = 1'b1, + parameter reset2_high = 1'b1, + parameter reset_kind = "ASYNC" +) ( + input clk1, + input aclr1, + input [0 : 0] ena, + input [width1-1 : 0] xin, + output [width1-1 : 0] xout, + input clk2, + input aclr2, + output [width2-1 : 0] sxout +); +wire [width1-1 : 0] init_value_internal; + +wire reset1; +wire reset2; + +reg iclk_enable; +reg [width1-1 : 0] iclk_data; +reg [width2-1 : 0] oclk_data; + +// For Synthesis this means: preserve this registers and do not merge any other flip-flops with synchronizer flip-flops +// For TimeQuest this means: identify these flip-flops as synchronizer to enable automatic MTBF analysis +(* altera_attribute = {"-name ADV_NETLIST_OPT_ALLOWED NEVER_ALLOW; -name SYNCHRONIZER_IDENTIFICATION FORCED; -name DONT_MERGE_REGISTER ON; -name PRESERVE_REGISTER ON"} *) reg [depth-1 : 0] sync_regs; + +wire oclk_enable; + +wire ena_internal; +reg [counter_width-1 : 0] counter; + +assign init_value_internal = init_value; + +assign reset1 = aclr1 ^ reset1_high; +assign reset2 = aclr2 ^ reset2_high; + +generate + if (pulse_multiplier == 1) + begin: no_multiplication + assign ena_internal = ena[0]; + end +endgenerate + +generate + if (pulse_multiplier > 1) + begin: multiplu_ena_pulse + if (reset_kind == "ASYNC") + begin: async_reset + always @ (posedge clk1 or negedge reset1) + begin + if (reset1 == 1'b0) begin + counter <= 0; + end else begin + if (counter > 0) begin + if (counter == pulse_multiplier - 1) begin + counter <= 0; + end else begin + counter <= counter + 2'd1; + end + end else begin + if (ena[0] == 1'b1) begin + counter <= 1; + end + end + end + end + end + if (reset_kind == "SYNC") + begin: sync_reset + always @ (posedge clk1) + begin + if (reset1 == 1'b0) begin + counter <= 0; + end else begin + if (counter > 0) begin + if (counter == pulse_multiplier - 1) begin + counter <= 0; + end else begin + counter <= counter + 2'd1; + end + end else begin + if (ena[0] == 1'b1) begin + counter <= 1; + end + end + end + end + end + if (reset_kind == "NONE") + begin: no_reset + always @ (posedge clk1) + begin + if (counter > 0) begin + if (counter == pulse_multiplier - 1) begin + counter <= 0; + end else begin + counter <= counter + 2'd1; + end + end else begin + if (ena[0] == 1'b1) begin + counter <= 1; + end + end + end + end + + assign ena_internal = counter > 0 ? 1'b1 : ena[0]; + end +endgenerate + +assign oclk_enable = sync_regs[depth - 1]; + +generate + if (reset_kind == "ASYNC") + begin: iclk_async_reset + always @ (posedge clk1 or negedge reset1) + begin + if (reset1 == 1'b0) begin + iclk_data <= init_value_internal; + iclk_enable <= 1'b0; + end else begin + iclk_enable <= ena_internal; + if (ena[0] == 1'b1) begin + iclk_data <= xin; + end + end + end + end + if (reset_kind == "SYNC") + begin: iclk_sync_reset + always @ (posedge clk1) + begin + if (reset1 == 1'b0) begin + iclk_data <= init_value_internal; + iclk_enable <= 1'b0; + end else begin + iclk_enable <= ena_internal; + if (ena[0] == 1'b1) begin + iclk_data <= xin; + end + end + end + end + if (reset_kind == "NONE") + begin: iclk_no_reset + always @ (posedge clk1) + begin + iclk_enable <= ena_internal; + if (ena[0] == 1'b1) begin + iclk_data <= xin; + end + end + end +endgenerate + +generate + genvar i; + for (i = 0; i < depth; ++i) + begin: sync_regs_block + if (reset_kind == "ASYNC") + begin: sync_reg_async_reset + always @ (posedge clk2 or negedge reset2) begin + if (reset2 == 1'b0) begin + sync_regs[i] <= 1'b0; + end else begin + if (i > 0) begin + sync_regs[i] <= sync_regs[i - 1]; + end else begin + sync_regs[i] <= iclk_enable; + end + end + end + end + if (reset_kind == "SYNC") + begin: sync_reg_sync_reset + always @ (posedge clk2) begin + if (reset2 == 1'b0) begin + sync_regs[i] <= 1'b0; + end else begin + if (i > 0) begin + sync_regs[i] <= sync_regs[i - 1]; + end else begin + sync_regs[i] <= iclk_enable; + end + end + end + end + if (reset_kind == "NONE") + begin: sync_reg_no_reset + always @ (posedge clk2) begin + if (i > 0) begin + sync_regs[i] <= sync_regs[i - 1]; + end else begin + sync_regs[i] <= iclk_enable; + end + end + end + end +endgenerate + +generate + if (reset_kind == "ASYNC") + begin: oclk_async_reset + always @ (posedge clk2 or negedge reset2) + begin + if (reset2 == 1'b0) begin + oclk_data <= init_value_internal[width2-1 : 0]; + end else begin + if (oclk_enable == 1'b1) begin + oclk_data <= iclk_data[width2-1 : 0]; + end + end + end + end + if (reset_kind == "SYNC") + begin: oclk_sync_reset + always @ (posedge clk2) + begin + if (reset2 == 1'b0) begin + oclk_data <= init_value_internal[width2-1 : 0]; + end else begin + if (oclk_enable == 1'b1) begin + oclk_data <= iclk_data[width2-1 : 0]; + end + end + end + end + if (reset_kind == "NONE") + begin: oclk_no_reset + always @ (posedge clk2) + begin + if (oclk_enable == 1'b1) begin + oclk_data <= iclk_data[width2-1 : 0]; + end + end + end +endgenerate + +assign xout = iclk_data; +assign sxout = oclk_data; + +endmodule + +//------------------------------------------------------------------------------ + +module dspba_pipe +#( + parameter num_bits = 8, + parameter num_stages = 0, + parameter init_value = 1'bx +) ( + input clk, + input [num_bits-1:0] d, + output [num_bits-1:0] q +); + logic [num_bits-1:0] init_stage = { num_bits { init_value } }; + + generate + if (num_stages > 0) + begin + reg [num_bits-1:0] stage_array[num_stages-1:0]; + + genvar i; + for (i = 0; i < num_stages; ++i) + begin : g_pipe + always @ (posedge clk) begin + if (i>0) begin + stage_array[i] <= stage_array[i-1]; + end else begin + stage_array[i] <= d; + end + end + end + initial begin + stage_array = '{ num_stages { init_stage } }; + end + + assign q = stage_array[num_stages-1]; + + end else begin + assign q = d; + end + endgenerate + +endmodule diff --git a/hw/rtl/fp_cores/altera/generate.sh b/hw/rtl/fp_cores/altera/generate.sh new file mode 100755 index 00000000..550b56be --- /dev/null +++ b/hw/rtl/fp_cores/altera/generate.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +CMD_POLY_EVAL_PATH=$QUARTUS_HOME/dspba/backend/linux64 + +OPTIONS="-target Arria10 -lang verilog -frequency 300 -enableHardFP 1 -printMachineReadable -faithfulRounding -noChanValid -enable -speedgrade 2" + +export LD_LIBRARY_PATH=$CMD_POLY_EVAL_PATH:$LD_LIBRARY_PATH + +CMD="$CMD_POLY_EVAL_PATH/cmdPolyEval $OPTIONS" + +EXP_BITS=8 +MAN_BITS=23 +FBITS="f$(($EXP_BITS + $MAN_BITS + 1))" + +echo Generating IP cores for $FBITS +{ + $CMD -name acl_fp_div FPDiv $EXP_BITS $MAN_BITS 0 + $CMD -name acl_fp_sqrt FPSqrt $EXP_BITS $MAN_BITS + $CMD -name acl_fp_ftoi FPToFXP $EXP_BITS $MAN_BITS 32 0 1 + $CMD -name acl_fp_ftou FPToFXP $EXP_BITS $MAN_BITS 32 0 0 + $CMD -name acl_fp_itof FXPToFP 32 0 1 $EXP_BITS $MAN_BITS + $CMD -name acl_fp_utof FXPToFP 32 0 0 $EXP_BITS $MAN_BITS +} > log.txt 2>&1 + +cp $QUARTUS_HOME/dspba/backend/Libraries/sv/base/dspba_library_ver.sv . \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_cmt_to_issue_if.v b/hw/rtl/interfaces/VX_cmt_to_issue_if.v index cff19de2..e083a3e5 100644 --- a/hw/rtl/interfaces/VX_cmt_to_issue_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_issue_if.v @@ -20,12 +20,12 @@ interface VX_cmt_to_issue_if (); wire [`ISTAG_BITS-1:0] gpu_tag; `IGNORE_WARNINGS_BEGIN - is_data_t alu_data; - is_data_t lsu_data; - is_data_t csr_data; - is_data_t mul_data; - is_data_t fpu_data; - is_data_t gpu_data; + issue_data_t alu_data; + issue_data_t lsu_data; + issue_data_t csr_data; + issue_data_t mul_data; + issue_data_t fpu_data; + issue_data_t gpu_data; `IGNORE_WARNINGS_END endinterface diff --git a/hw/rtl/libs/VX_divide.v b/hw/rtl/libs/VX_divide.v index 3c871658..be13a186 100644 --- a/hw/rtl/libs/VX_divide.v +++ b/hw/rtl/libs/VX_divide.v @@ -31,7 +31,6 @@ module VX_divide #( .denom (denom), .quotient (quotient_unqual), .remain (remainder_unqual), - .aclr (1'b0), .clken (clk_en) ); @@ -41,7 +40,7 @@ module VX_divide #( divide.lpm_widthd = WIDTHD, divide.lpm_nrepresentation = NSIGNED ? "SIGNED" : "UNSIGNED", divide.lpm_drepresentation = DSIGNED ? "SIGNED" : "UNSIGNED", - divide.lpm_hint = "MAXIMIZE_SPEED=9,LPM_REMAINDERPOSITIVE=FALSE", + divide.lpm_hint = "MAXIMIZE_SPEED=6,LPM_REMAINDERPOSITIVE=FALSE", divide.lpm_pipeline = PIPELINE; assign quotient = quotient_unqual [WIDTHQ-1:0]; diff --git a/hw/rtl/libs/VX_multiplier.v b/hw/rtl/libs/VX_multiplier.v index 3322b479..d5b7793c 100644 --- a/hw/rtl/libs/VX_multiplier.v +++ b/hw/rtl/libs/VX_multiplier.v @@ -23,8 +23,6 @@ module VX_multiplier #( .dataa (dataa), .datab (datab), .result (result), - .sclr (reset), - .aclr (1'b0), .clken (clk_en), .sum (1'b0) ); diff --git a/hw/rtl/libs/VX_shift_register.v b/hw/rtl/libs/VX_shift_register.v index c6a63ae1..b4f2496f 100644 --- a/hw/rtl/libs/VX_shift_register.v +++ b/hw/rtl/libs/VX_shift_register.v @@ -2,7 +2,7 @@ module VX_shift_register #( parameter DATAW = 1, - parameter DEPTH = 0 + parameter DEPTH = 1 ) ( input wire clk, input wire reset, @@ -10,41 +10,33 @@ module VX_shift_register #( input wire [DATAW-1:0] in, output wire [DATAW-1:0] out ); - if (0 == DEPTH) begin + reg [DEPTH-1:0][DATAW-1:0] entries; - assign out = in; - - end if (1 == DEPTH) begin - - reg [DATAW-1:0] ram; + if (1 == DEPTH) begin always @(posedge clk) begin if (reset) begin - ram <= '0; + entries <= '0; end else begin if (enable) begin - ram <= in; + entries <= in; end end end - assign out = ram; - - end else begin - - reg [DEPTH-1:0][DATAW-1:0] ram; + end else begin always @(posedge clk) begin if (reset) begin - ram <= '0; + entries <= '0; end else begin if (enable) begin - ram <= {ram[DEPTH-2:0], in}; + entries <= {entries[DEPTH-2:0], in}; end end end - - assign out = ram [DEPTH-1]; end + assign out = entries [DEPTH-1]; + endmodule \ No newline at end of file diff --git a/hw/syn/quartus/project.sdc b/hw/syn/quartus/project.sdc index 59686a41..61b8cba9 100644 --- a/hw/syn/quartus/project.sdc +++ b/hw/syn/quartus/project.sdc @@ -1,6 +1,6 @@ set_time_format -unit ns -decimal_places 3 -create_clock -name {clk} -period "200 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] +create_clock -name {clk} -period "300 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] derive_pll_clocks -create_base_clocks derive_clock_uncertainty From 94d957e5404509bad4b1962b486bdbf6cc65430d Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Wed, 5 Aug 2020 19:28:17 -0400 Subject: [PATCH 37/94] update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 544bf12b..32f90c57 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,6 @@ Install Vortex Quick Test running SGEMM kernel - $ cd /Vortex/benchmarks/opencl/sgemm + $ cd /Vortex/benchmarks/opencl/vecadd $ make - $ make run + $ make run-rtlsim From e336d401eadf84385659d6f17db08729c2a65a46 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Fri, 7 Aug 2020 12:13:34 -0400 Subject: [PATCH 38/94] adding dogfood unit test --- driver/tests/basic/Makefile | 10 +- driver/tests/basic/basic.cpp | 2 + driver/tests/demo/Makefile | 10 +- driver/tests/demo/demo.cpp | 2 + driver/tests/dogfood/Makefile | 64 ++ driver/tests/dogfood/Memcpy/hw/rtl/_hdr | 603 ---------------- .../dogfood/Memcpy/hw/rtl/cci_hello.json | 18 - .../dogfood/Memcpy/hw/rtl/cci_hello_afu.sv | 653 ------------------ .../Memcpy/hw/rtl/cci_hello_afu_working.sv | 621 ----------------- .../tests/dogfood/Memcpy/hw/rtl/sources.txt | 2 - driver/tests/dogfood/Memcpy/hw/sim/setup_ase | 11 - driver/tests/dogfood/Memcpy/sw/Makefile | 41 -- driver/tests/dogfood/Memcpy/sw/cci_hello.c | 210 ------ .../dogfood/Memcpy/sw/obj/afu_json_info.h | 13 - .../tests/dogfood/Memcpy/sw/obj/cci_hello.o | Bin 5336 -> 0 bytes driver/tests/dogfood/common.h | 14 + driver/tests/dogfood/dogfood.cpp | 264 +++++++ driver/tests/dogfood/kernel.c | 354 ++++++++++ driver/tests/dogfood/testcases.h | 555 +++++++++++++++ 19 files changed, 1267 insertions(+), 2180 deletions(-) create mode 100644 driver/tests/dogfood/Makefile delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/_hdr delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/sources.txt delete mode 100755 driver/tests/dogfood/Memcpy/hw/sim/setup_ase delete mode 100644 driver/tests/dogfood/Memcpy/sw/Makefile delete mode 100644 driver/tests/dogfood/Memcpy/sw/cci_hello.c delete mode 100644 driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h delete mode 100644 driver/tests/dogfood/Memcpy/sw/obj/cci_hello.o create mode 100644 driver/tests/dogfood/common.h create mode 100644 driver/tests/dogfood/dogfood.cpp create mode 100644 driver/tests/dogfood/kernel.c create mode 100644 driver/tests/dogfood/testcases.h diff --git a/driver/tests/basic/Makefile b/driver/tests/basic/Makefile index a3792edc..2edd71cf 100644 --- a/driver/tests/basic/Makefile +++ b/driver/tests/basic/Makefile @@ -1,6 +1,8 @@ RISCV_TOOLCHAIN_PATH ?= $(wildcard ~/dev/riscv-gnu-toolchain/drops) VORTEX_RT_PATH ?= $(wildcard ../../../runtime) +OPTS ?= -n256 + VX_CC = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-gcc VX_CXX = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-g++ VX_DP = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-objdump @@ -38,16 +40,16 @@ $(PROJECT): $(SRCS) $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -L../../stub -lvortex -o $@ run-fpga: $(PROJECT) - LD_LIBRARY_PATH=../../opae:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 256 + LD_LIBRARY_PATH=../../opae:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) run-ase: $(PROJECT) - ASE_LOG=0 LD_LIBRARY_PATH=../../opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 256 + ASE_LOG=0 LD_LIBRARY_PATH=../../opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) run-rtlsim: $(PROJECT) - LD_LIBRARY_PATH=../../rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 256 + LD_LIBRARY_PATH=../../rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) run-simx: $(PROJECT) - LD_LIBRARY_PATH=../../simx:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 256 + LD_LIBRARY_PATH=../../simx:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) .depend: $(SRCS) $(CXX) $(CXXFLAGS) -MM $^ > .depend; diff --git a/driver/tests/basic/basic.cpp b/driver/tests/basic/basic.cpp index 92a785f4..ee16533d 100755 --- a/driver/tests/basic/basic.cpp +++ b/driver/tests/basic/basic.cpp @@ -14,6 +14,8 @@ exit(-1); \ } while (false) +/////////////////////////////////////////////////////////////////////////////// + const char* kernel_file = "kernel.bin"; int test = -1; uint32_t count = 0; diff --git a/driver/tests/demo/Makefile b/driver/tests/demo/Makefile index e142e5fd..348e5d11 100644 --- a/driver/tests/demo/Makefile +++ b/driver/tests/demo/Makefile @@ -1,6 +1,8 @@ RISCV_TOOLCHAIN_PATH ?= $(wildcard ~/dev/riscv-gnu-toolchain/drops) VORTEX_RT_PATH ?= $(wildcard ../../../runtime) +OPTS ?= -n64 + VX_CC = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-gcc VX_CXX = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-g++ VX_DP = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-objdump @@ -36,16 +38,16 @@ $(PROJECT): $(SRCS) $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -L../../stub -lvortex -o $@ run-fpga: $(PROJECT) - LD_LIBRARY_PATH=../../opae:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 + LD_LIBRARY_PATH=../../opae:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) run-ase: $(PROJECT) - ASE_LOG=0 LD_LIBRARY_PATH=../../opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 + ASE_LOG=0 LD_LIBRARY_PATH=../../opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) run-rtlsim: $(PROJECT) - LD_LIBRARY_PATH=../../rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 + LD_LIBRARY_PATH=../../rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) run-simx: $(PROJECT) - LD_LIBRARY_PATH=../../simx:$(LD_LIBRARY_PATH) ./$(PROJECT) -n 64 + LD_LIBRARY_PATH=../../simx:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) .depend: $(SRCS) $(CXX) $(CXXFLAGS) -MM $^ > .depend; diff --git a/driver/tests/demo/demo.cpp b/driver/tests/demo/demo.cpp index 2d5b47f8..10d0b8ae 100644 --- a/driver/tests/demo/demo.cpp +++ b/driver/tests/demo/demo.cpp @@ -14,6 +14,8 @@ exit(-1); \ } while (false) +/////////////////////////////////////////////////////////////////////////////// + const char* kernel_file = "kernel.bin"; uint32_t count = 0; diff --git a/driver/tests/dogfood/Makefile b/driver/tests/dogfood/Makefile new file mode 100644 index 00000000..72fdf50b --- /dev/null +++ b/driver/tests/dogfood/Makefile @@ -0,0 +1,64 @@ +RISCV_TOOLCHAIN_PATH ?= $(wildcard ~/dev/riscv-gnu-toolchain/drops) +VORTEX_RT_PATH ?= $(wildcard ../../../runtime) + +OPTS ?= -n64 + +VX_CC = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-gcc +VX_CXX = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-g++ +VX_DP = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-objdump +VX_CP = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-objcopy + +VX_CFLAGS += -march=rv32imf -mabi=ilp32 -O3 -Wl,-Bstatic,-T,$(VORTEX_RT_PATH)/linker/vx_link.ld -ffreestanding -nostartfiles -Wl,--gc-sections +VX_CFLAGS += -I$(VORTEX_RT_PATH)/include + +VX_LDFLAGS += $(VORTEX_RT_PATH)/libvortexrt.a +VX_LDFLAGS += -lm + +VX_SRCS = kernel.c + +CXXFLAGS += -std=c++11 -O0 -g -Wall -Wextra -pedantic -Wfatal-errors + +CXXFLAGS += -I../../include + +PROJECT = dogfood + +SRCS = dogfood.cpp + +all: $(PROJECT) kernel.bin kernel.dump + +kernel.dump: kernel.elf + $(VX_DP) -D kernel.elf > kernel.dump + +kernel.bin: kernel.elf + $(VX_CP) -O binary kernel.elf kernel.bin + +kernel.elf: $(VX_SRCS) + $(VX_CC) $(VX_CFLAGS) $(VX_SRCS) $(VX_LDFLAGS) -o kernel.elf + +$(PROJECT): $(SRCS) + $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -L../../stub -lvortex -o $@ + +run-fpga: $(PROJECT) + LD_LIBRARY_PATH=../../opae:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) + +run-ase: $(PROJECT) + ASE_LOG=0 LD_LIBRARY_PATH=../../opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) + +run-rtlsim: $(PROJECT) + LD_LIBRARY_PATH=../../rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) + +run-simx: $(PROJECT) + LD_LIBRARY_PATH=../../simx:$(LD_LIBRARY_PATH) ./$(PROJECT) $(OPTS) + +.depend: $(SRCS) + $(CXX) $(CXXFLAGS) -MM $^ > .depend; + +clean: + rm -rf $(PROJECT) *.o .depend + +clean-all: + rm -rf $(PROJECT) *.o *.elf *.bin *.dump .depend + +ifneq ($(MAKECMDGOALS),clean) + -include .depend +endif \ No newline at end of file diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/_hdr b/driver/tests/dogfood/Memcpy/hw/rtl/_hdr deleted file mode 100644 index 39a1dd9e..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/_hdr +++ /dev/null @@ -1,603 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - - -// Read from the memory locations first and then write to the memory locations - -`include "platform_if.vh" -`include "afu_json_info.vh" - - -module ccip_std_afu - ( - // CCI-P Clocks and Resets - input logic pClk, // 400MHz - CCI-P clock domain. Primary interface clock - input logic pClkDiv2, // 200MHz - CCI-P clock domain. - input logic pClkDiv4, // 100MHz - CCI-P clock domain. - input logic uClk_usr, // User clock domain. Refer to clock programming guide ** Currently provides fixed 300MHz clock ** - input logic uClk_usrDiv2, // User clock domain. Half the programmed frequency ** Currently provides fixed 150MHz clock ** - input logic pck_cp2af_softReset, // CCI-P ACTIVE HIGH Soft Reset - input logic [1:0] pck_cp2af_pwrState, // CCI-P AFU Power State - input logic pck_cp2af_error, // CCI-P Protocol Error Detected - - // Interface structures - input t_if_ccip_Rx pck_cp2af_sRx, // CCI-P Rx Port - output t_if_ccip_Tx pck_af2cp_sTx // CCI-P Tx Port - ); - - - // - // Run the entire design at the standard CCI-P frequency (400 MHz). - // - logic clk; - assign clk = pClk; - - logic reset; - assign reset = pck_cp2af_softReset; - - logic [511:0] wr_data; - logic [511:0] rd_data; - - logic get_write_addr; - logic do_update; - logic rd_end_of_list; - logic rd_needed; - logic wr_needed; - logic [15:0] cnt_list_length; - - // ========================================================================= - // - // Register requests. - // - // ========================================================================= - - // - // The incoming pck_cp2af_sRx and outgoing pck_af2cp_sTx must both be - // registered. Here we register pck_cp2af_sRx and assign it to sRx. - // We also assign pck_af2cp_sTx to sTx here but don't register it. - // The code below never uses combinational logic to write sTx. - // - - t_if_ccip_Rx sRx; - always_ff @(posedge clk) - begin - sRx <= pck_cp2af_sRx; - end - - t_if_ccip_Tx sTx; - assign pck_af2cp_sTx = sTx; - - - // ========================================================================= - // - // CSR (MMIO) handling. - // - // ========================================================================= - - // The AFU ID is a unique ID for a given program. Here we generated - // one with the "uuidgen" program and stored it in the AFU's JSON file. - // ASE and synthesis setup scripts automatically invoke afu_json_mgr - // to extract the UUID into afu_json_info.vh. - logic [127:0] afu_id = `AFU_ACCEL_UUID; - - // - // A valid AFU must implement a device feature list, starting at MMIO - // address 0. Every entry in the feature list begins with 5 64-bit - // words: a device feature header, two AFU UUID words and two reserved - // words. - // - - // Is a CSR read request active this cycle? - logic is_csr_read; - assign is_csr_read = sRx.c0.mmioRdValid; - - // Is a CSR write request active this cycle? - logic is_csr_write; - assign is_csr_write = sRx.c0.mmioWrValid; - - // The MMIO request header is overlayed on the normal c0 memory read - // response data structure. Cast the c0Rx header to an MMIO request - // header. - t_ccip_c0_ReqMmioHdr mmio_req_hdr; - assign mmio_req_hdr = t_ccip_c0_ReqMmioHdr'(sRx.c0.hdr); - - - // - // Implement the device feature list by responding to MMIO reads. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c2.mmioRdValid <= 1'b0; - end - else - begin - // Always respond with something for every read request - sTx.c2.mmioRdValid <= is_csr_read; - - // The unique transaction ID matches responses to requests - sTx.c2.hdr.tid <= mmio_req_hdr.tid; - - // Addresses are of 32-bit objects in MMIO space. Addresses - // of 64-bit objects are thus multiples of 2. - case (mmio_req_hdr.address) - 0: // AFU DFH (device feature header) - begin - // Here we define a trivial feature list. In this - // example, our AFU is the only entry in this list. - sTx.c2.data <= t_ccip_mmioData'(0); - // Feature type is AFU - sTx.c2.data[63:60] <= 4'h1; - // End of list (last entry in list) - sTx.c2.data[40] <= 1'b1; - end - - // AFU_ID_L - 2: sTx.c2.data <= afu_id[63:0]; - - // AFU_ID_H - 4: sTx.c2.data <= afu_id[127:64]; - - // DFH_RSVD0 - 6: sTx.c2.data <= t_ccip_mmioData'(0); - - // DFH_RSVD1 - 8: sTx.c2.data <= t_ccip_mmioData'(0); - - default: sTx.c2.data <= t_ccip_mmioData'(0); - endcase - end - end - - - // - // CSR write handling. Host software must tell the AFU the memory address - // to which it should be writing. The address is set by writing a CSR. - // - - // We use MMIO address 0 to set the memory address. The read and - // write MMIO spaces are logically separate so we are free to use - // whatever we like. This may not be good practice for cleanly - // organizing the MMIO address space, but it is legal. - logic is_mem_addr_csr_write; - assign is_mem_addr_csr_write = get_write_addr && is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address to which this AFU will write. - t_ccip_clAddr write_mem_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - get_write_addr <= 1'b1; - end - else if (is_mem_addr_csr_write) - begin - write_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - get_write_addr <= 1'b0; - end - end - - - // We use MMIO address 0 to set the memory address for reading data. - logic is_mem_addr_csr_read; - assign is_mem_addr_csr_read = !get_write_addr && is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address from which this AFU will read. - logic start_read; - t_ccip_clAddr read_mem_addr; - - //logic start_traversal = 'b0; - //t_ccip_clAddr start_traversal_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_read <= 1'b0; - end - else if (is_mem_addr_csr_read) - begin - read_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_read <= 'b1; - end - end - - - // ========================================================================= - // - // Main AFU logic - // - // ========================================================================= - - // - // States in our simple example. - // - //typedef enum logic [0:0] - typedef enum logic [1:0] - { - STATE_IDLE, - STATE_READ, - STATE_UPDATE, - STATE_WRITE - } - t_state; - - t_state state; - - // - // State machine - // - always_ff @(posedge clk) - begin - if (reset) - begin - state <= STATE_IDLE; - rd_end_of_list <= 1'b0; - end - else - begin - case (state) - STATE_IDLE: - begin - // Traversal begins when CSR 1 is written - if (start_read) - begin - state <= STATE_READ; - $display("AFU starting traversal at 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - STATE_READ: - begin - if (rd_needed) - begin - // Read data from the address and update address - state <= STATE_UPDATE; - start_read <= 'b0; - $display("AFU reading data and pointing to next read address..."); - end - end - - STATE_UPDATE: - begin - // Update the read value to be written back - if (do_update) - begin - state <= STATE_WRITE; - $display("AFU performing comutations on the read values..."); - end - end - - STATE_WRITE: - begin - // Write the updated value to the address - // Point to new address after that - // if done then point to IDLE; else read new values - if (rd_end_of_list) - begin - state <= STATE_IDLE; - $display("AFU done..."); - end - else - begin - if (wr_needed) - begin - state <= STATE_READ; - $display("AFU reading again from read address..."); - end - end - end - endcase - end - end - - - // ========================================================================= - // - // Read logic. - // - // ========================================================================= - - // - // READ REQUEST - // - - // Did a write response just arrive - logic addr_next_valid; - - // Next read address - t_ccip_clAddr addr_next; - - always_ff @(posedge clk) - begin - // Next read address is valid when we have got the write response back - // and channel is not full - //addr_next_valid <= sRx.c0TxAlmFull; - addr_next_valid <= sRx.c1.rspValid; - - // Next address is current address plus address length - // Apurve - //addr_next <= addr_next + addr_size; - addr_next <= addr_next + 0; - - // End of list reached if we have read 10 times - rd_end_of_list <= (cnt_list_length == 'h10); - end - - // - // Since back pressure may prevent an immediate read request, we must - // record whether a read is needed and hold it until the request can - // be sent to the FIU. - // - t_ccip_clAddr rd_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - rd_needed <= 1'b0; - end - else - begin - // If reads are allowed this cycle then we can safely clear - // any previously requested reads. This simple AFU has only - // one read in flight at a time since it is walking a pointer - // chain. - if (rd_needed) - begin - rd_needed <= sRx.c0TxAlmFull; - end - else - begin - // Need a read under two conditions: - // - Starting a new walk - // - A read response just arrived from a line containing - // a next pointer. - rd_needed <= (start_read || (addr_next_valid && ! rd_end_of_list)); - rd_addr <= (start_read ? read_mem_addr : addr_next); - end - end - end - - // - // Emit read requests to the FIU. - // - - // Read header defines the request to the FIU - t_cci_c0_ReqMemHdr rd_hdr; - - always_comb - begin - rd_hdr = t_cci_c0_ReqMemHdr'(0); - - // Read request type - rd_hdr.req_type = eREQ_RDLINE_I; - // Virtual address (MPF virtual addressing is enabled) - rd_hdr.address = rd_addr; - // Let the FIU pick the channel - rd_hdr.vc_sel = eVC_VA; - // Read 4 lines (the size of an entry in the list) - rd_hdr.cl_len = eCL_LEN_4; - end - - // Send read requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c0.valid <= 1'b0; - cnt_list_length <= 0; - end - else - begin - // Generate a read request when needed and the FIU isn't full - sTx.c0.valid <= (rd_needed && ! sRx.c0TxAlmFull); - sTx.c0.hdr <= rd_hdr; - - if (rd_needed && ! sRx.c0TxAlmFull) - begin - cnt_list_length <= cnt_list_length + 1; - //$display(" Reading from VA 0x%x", clAddrToByteAddr(rd_addr)); - $display("Incrementing read count..."); - end - end - end - - // - // READ RESPONSE HANDLING - // - - // - // Receive data (read responses). - // - always_ff @(posedge clk) - begin - if (reset) - begin - do_update <= 1'b0; - end - else - begin - if (state == STATE_READ) - begin - rd_data <= sRx.c0.data; - do_update <= 1'b1; - end - if (state == STATE_UPDATE) - begin - // Update the read data and put it in the write data to be written - wr_data <= rd_data + 1; - do_update <= 1'b0; - end - end - end - - - // ========================================================================= - // - // Write logic. - // - // ========================================================================= - - - // - // WRITE REQUEST - // - - // Did a write response just arrive - logic wr_addr_next_valid; - - // Next write address - t_ccip_clAddr wr_addr_next; - - always_ff @(posedge clk) - begin - // Next write address is valid when we have got the read response back - // and channel is not full - //wr_addr_next_valid <= sRx.c1TxAlmFull; - wr_addr_next_valid <= sRx.c0.rspValid; - - // Next address is current address plus address length - // Apurve - //wr_addr_next <= wr_addr_next + addr_size; - wr_addr_next <= wr_addr_next + 0; - end - - // - // Since back pressure may prevent an immediate write request, we must - // record whether a write is needed and hold it until the request can - // be sent to the FIU. - // - t_ccip_clAddr wr_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - wr_needed <= 1'b0; - end - else - begin - // If writes are allowed this cycle then we can safely clear - // any previously requested writes. This simple AFU has only - // one write in flight at a time since it is walking a pointer - // chain. - if (wr_needed) - begin - wr_needed <= sRx.c1TxAlmFull; - end - else - begin - // Need a write under two conditions: - // - Starting a new walk - // - A write response just arrived from a line containing - // a next pointer. - //wr_needed <= (start_write || (wr_addr_next_valid && ! rd_end_of_list)); - wr_needed <= (start_write || wr_addr_next_valid); - wr_addr <= (start_write ? write_mem_addr : wr_addr_next); - end - end - end - - // - // Emit write requests to the FIU. - // - - // Write header defines the request to the FIU - t_ccip_c1_ReqMemHdr wr_hdr; - - always_comb - begin - wr_hdr = t_cci_c1_ReqMemHdr'(0); - - // Write request type - wr_hdr.req_type = eREQ_RDLINE_I; - // Virtual address (MPF virtual addressing is enabled) - wr_hdr.address = wr_addr; - // Let the FIU pick the channel - wr_hdr.vc_sel = eVC_VA; - // Write 4 lines (the size of an entry in the list) - wr_hdr.cl_len = eCL_LEN_4; - // Start of packet is true (single line write) - wr_hdr.sop = 1'b1; - end - - // Send write requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c1.valid <= 1'b0; - //cnt_list_length <= 0; - end - else - begin - // Generate a write request when needed and the FIU isn't full - sTx.c1.valid <= (wr_needed && ! sRx.c1TxAlmFull); - sTx.c1.hdr <= wr_hdr; - sTx.c1.data = t_ccip_clData'(wr_data); - - //if (wr_needed && ! sRx.c1TxAlmFull) - //begin - // cnt_list_length <= cnt_list_length + 1; - // //$display(" Writing from VA 0x%x", clAddrToByteAddr(rd_addr)); - // $display("Incrementing write count..."); - //end - end - end - - // - // WRITE RESPONSE HANDLING - // - - // Apurve: Check if a signal is to be sent to read to start reading in case - // write response does not work - // - // Send data (write requests). - // - //always_ff @(posedge clk) - //begin - // if (state == STATE_WRITE) - // begin - // rd_data <= sRx.c0.data; - // end - // if (state == STATE_UPDATE) - // begin - // // Update the write data and put it in the write data to be written - // wr_data <= rd_data + 1; - // end - //end - -endmodule diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json b/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json deleted file mode 100644 index 85d7a529..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "afu-image": { - "power": 0, - "afu-top-interface": - { - "name": "ccip_std_afu" - }, - "accelerator-clusters": - [ - { - "name": "cci_hello", - "total-contexts": 1, - "accelerator-type-uuid": "c6aa954a-9b91-4a37-abc1-1d9f0709dcc3" - } - ] - } -} diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv b/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv deleted file mode 100644 index eaee72da..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv +++ /dev/null @@ -1,653 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - - -// Read from the memory locations first and then write to the memory locations - -`include "platform_if.vh" -`include "afu_json_info.vh" - - -module ccip_std_afu - ( - // CCI-P Clocks and Resets - input logic pClk, // 400MHz - CCI-P clock domain. Primary interface clock - input logic pClkDiv2, // 200MHz - CCI-P clock domain. - input logic pClkDiv4, // 100MHz - CCI-P clock domain. - input logic uClk_usr, // User clock domain. Refer to clock programming guide ** Currently provides fixed 300MHz clock ** - input logic uClk_usrDiv2, // User clock domain. Half the programmed frequency ** Currently provides fixed 150MHz clock ** - input logic pck_cp2af_softReset, // CCI-P ACTIVE HIGH Soft Reset - input logic [1:0] pck_cp2af_pwrState, // CCI-P AFU Power State - input logic pck_cp2af_error, // CCI-P Protocol Error Detected - - // Interface structures - input t_if_ccip_Rx pck_cp2af_sRx, // CCI-P Rx Port - output t_if_ccip_Tx pck_af2cp_sTx // CCI-P Tx Port - ); - - - // - // Run the entire design at the standard CCI-P frequency (400 MHz). - // - logic clk; - assign clk = pClk; - - logic reset; - assign reset = pck_cp2af_softReset; - - logic [511:0] wr_data; - logic [511:0] rd_data; - - logic do_update; - logic start_read; - logic start_write; - logic wr_addr_next_valid; - logic addr_next_valid; - logic rd_end_of_list; - logic rd_needed; - logic wr_needed; - logic read_req; - logic write_req; - logic [15:0] cnt_list_length; - t_ccip_clAddr rd_addr; - t_ccip_clAddr wr_addr; - t_ccip_clAddr addr_next; - t_ccip_clAddr wr_addr_next; - - // ========================================================================= - // - // Register requests. - // - // ========================================================================= - - // - // The incoming pck_cp2af_sRx and outgoing pck_af2cp_sTx must both be - // registered. Here we register pck_cp2af_sRx and assign it to sRx. - // We also assign pck_af2cp_sTx to sTx here but don't register it. - // The code below never uses combinational logic to write sTx. - // - - t_if_ccip_Rx sRx; - always_ff @(posedge clk) - begin - sRx <= pck_cp2af_sRx; - end - - t_if_ccip_Tx sTx; - assign pck_af2cp_sTx = sTx; - - - // ========================================================================= - // - // CSR (MMIO) handling. - // - // ========================================================================= - - // The AFU ID is a unique ID for a given program. Here we generated - // one with the "uuidgen" program and stored it in the AFU's JSON file. - // ASE and synthesis setup scripts automatically invoke afu_json_mgr - // to extract the UUID into afu_json_info.vh. - logic [127:0] afu_id = `AFU_ACCEL_UUID; - - // - // A valid AFU must implement a device feature list, starting at MMIO - // address 0. Every entry in the feature list begins with 5 64-bit - // words: a device feature header, two AFU UUID words and two reserved - // words. - // - - // Is a CSR read request active this cycle? - logic is_csr_read; - assign is_csr_read = sRx.c0.mmioRdValid; - - // Is a CSR write request active this cycle? - logic is_csr_write; - assign is_csr_write = sRx.c0.mmioWrValid; - - // The MMIO request header is overlayed on the normal c0 memory read - // response data structure. Cast the c0Rx header to an MMIO request - // header. - t_ccip_c0_ReqMmioHdr mmio_req_hdr; - assign mmio_req_hdr = t_ccip_c0_ReqMmioHdr'(sRx.c0.hdr); - - - // - // Implement the device feature list by responding to MMIO reads. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c2.mmioRdValid <= 1'b0; - end - else - begin - // Always respond with something for every read request - sTx.c2.mmioRdValid <= is_csr_read; - - // The unique transaction ID matches responses to requests - sTx.c2.hdr.tid <= mmio_req_hdr.tid; - - // Addresses are of 32-bit objects in MMIO space. Addresses - // of 64-bit objects are thus multiples of 2. - case (mmio_req_hdr.address) - 0: // AFU DFH (device feature header) - begin - // Here we define a trivial feature list. In this - // example, our AFU is the only entry in this list. - sTx.c2.data <= t_ccip_mmioData'(0); - // Feature type is AFU - sTx.c2.data[63:60] <= 4'h1; - // End of list (last entry in list) - sTx.c2.data[40] <= 1'b1; - end - - // AFU_ID_L - 2: sTx.c2.data <= afu_id[63:0]; - - // AFU_ID_H - 4: sTx.c2.data <= afu_id[127:64]; - - // DFH_RSVD0 - 6: sTx.c2.data <= t_ccip_mmioData'(0); - - // DFH_RSVD1 - 8: sTx.c2.data <= t_ccip_mmioData'(0); - - // Updated by apurve to check fpgaReadMMIO - 10: sTx.c2.data <= t_ccip_mmioData'(start_read); - - default: sTx.c2.data <= t_ccip_mmioData'(0); - endcase - end - end - - - // - // CSR write handling. Host software must tell the AFU the memory address - // to which it should be writing. The address is set by writing a CSR. - // - - // We use MMIO address 0 to set the memory address. The read and - // write MMIO spaces are logically separate so we are free to use - // whatever we like. This may not be good practice for cleanly - // organizing the MMIO address space, but it is legal. - logic is_mem_addr_csr_write; - assign is_mem_addr_csr_write = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address to which this AFU will write. - t_ccip_clAddr write_mem_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_write <= 1'b0; - end - else if (is_mem_addr_csr_write) - begin - write_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_write <= 1'b1; - //$display("Write mem address is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - - - // We use MMIO address 8 to set the memory address for reading data. - logic is_mem_addr_csr_read; - assign is_mem_addr_csr_read = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(2)); - - // Memory address from which this AFU will read. - t_ccip_clAddr read_mem_addr; - - //logic start_traversal = 'b0; - //t_ccip_clAddr start_traversal_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_read <= 1'b0; - end - else if (is_mem_addr_csr_read) - begin - read_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_read <= 1'b1; - //$display("Read mem address is 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - - // ========================================================================= - // - // Main AFU logic - // - // ========================================================================= - - // - // States in our simple example. - // - //typedef enum logic [0:0] - typedef enum logic [1:0] - { - STATE_IDLE, - STATE_READ, - STATE_UPDATE, - STATE_WRITE - } - t_state; - - t_state state; - - // - // State machine - // - always_ff @(posedge clk) - begin - if (reset) - begin - state <= STATE_IDLE; - rd_end_of_list <= 1'b0; - end - else - begin - case (state) - STATE_IDLE: - begin - // Traversal begins when CSR 1 is written - if (start_read) - begin - state <= STATE_READ; - $display("AFU starting traversal at 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - STATE_READ: - begin - $display("AFU in READ..."); - $display("do_update is %d...",do_update); - $display("addr_next_valid is %d...",addr_next_valid); - $display("rd_needed is %d...",rd_needed); - if (!rd_needed && do_update) - begin - state <= STATE_UPDATE; - $display("AFU moving to UPDATE..."); - end - end - - STATE_UPDATE: - begin - // Update the read value to be written back - $display("AFU in UPDATE..."); - if (!do_update) - begin - state <= STATE_WRITE; - wr_needed <= 1'b1; - $display("AFU moving to WRITE..."); - end - end - - STATE_WRITE: - begin - // Write the updated value to the address - // Point to new address after that - // if done then point to IDLE; else read new values - $display("AFU in WRITE..."); - if (rd_end_of_list) - begin - state <= STATE_IDLE; - $display("AFU done..."); - end - else if (!wr_needed) - begin - state <= STATE_READ; - $display("AFU moving to READ from WRITE..."); - start_write <= 1'b0; - write_req <= 1'b0; - end - end - endcase - end - end - - - // ========================================================================= - // - // Read logic. - // - // ========================================================================= - - // - // READ REQUEST - // - - // Did a write response just arrive - - // Next read address - - always_ff @(posedge clk) - begin - // Next read address is valid when we have got the write response back - if (sRx.c1.rspValid) - begin - addr_next_valid <= sRx.c1.rspValid; - - //if (state == STATE_READ && !rd_needed) - //begin - // Apurve: Next address is current address plus address length - //addr_next <= addr_next + addr_size; - addr_next <= (addr_next_valid ? rd_addr + 0 : rd_addr); - - // End of list reached if we have read 5 times - rd_end_of_list <= (cnt_list_length == 'h5); - //end - end - end - - // - // Since back pressure may prevent an immediate read request, we must - // record whether a read is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - rd_needed <= 1'b0; - end - else - begin - // If reads are allowed this cycle then we can safely clear - // any previously requested reads. This simple AFU has only - // one read in flight at a time since it is walking a pointer - // chain. - if (rd_needed) - begin - //rd_needed <= sRx.c0TxAlmFull; - //rd_needed <= (!sRx.c0TxAlmFull && !sRx.c0.rspValid); - rd_needed <= !sRx.c0.rspValid; - end - else if (state == STATE_READ) - begin - // Need a read under two conditions: - // - Starting a new walk - // - A read response just arrived from a line containing - // a next pointer. - rd_needed <= (start_read || (!sRx.c0TxAlmFull && (addr_next_valid && ! rd_end_of_list))); - rd_addr <= (start_read ? read_mem_addr : addr_next); - //$display("rd_addr is 0x%x", t_ccip_clAddr'(rd_addr)); - //$display("read mem addr is 0x%x", t_ccip_clAddr'(read_mem_addr)); - //$display("start read is %d", start_read); - end - end - end - - // - // Emit read requests to the FIU. - // - - // Read header defines the request to the FIU - t_ccip_c0_ReqMemHdr rd_hdr; - - always_comb - begin - rd_hdr = t_ccip_c0_ReqMemHdr'(0); - - // Read request type (No intention to cache) - //rd_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - rd_hdr.address = rd_addr; - - // Read over channel VA - //rd_hdr.vc_sel = 2'h0; - - // Read one cache line (64 bytes) - //rd_hdr.cl_len = 2'h0; - end - - // Send read requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c0.valid <= 1'b0; - cnt_list_length <= 0; - read_req <= 1'b0; - end - else - begin - // Generate a read request when needed and the FIU isn't full - if (state == STATE_READ) - begin - sTx.c0.valid <= (rd_needed && !sRx.c0TxAlmFull && !read_req); - - if (rd_needed && !sRx.c0TxAlmFull && !read_req) - begin - sTx.c0.hdr <= rd_hdr; - cnt_list_length <= cnt_list_length + 1; - read_req <= 1'b1; - $display("Incrementing read count...%d",cnt_list_length); - $display("Read address is 0x%x...",rd_hdr.address); - addr_next_valid <= 1'b0; - // Apurve: Add something to stop read once this section has been accessed - //rd_needed <= 1'b0; - end - end - end - end - - // - // READ RESPONSE HANDLING - // - - // - // Receive data (read responses). - // - always_ff @(posedge clk) - begin - if (reset) - begin - do_update <= 1'b0; - end - else - begin - if (!do_update && sRx.c0.rspValid) - begin - rd_data <= sRx.c0.data; - do_update <= 1'b1; - $display("rd data is %d...",rd_data); - end - - if ((state == STATE_UPDATE) && (do_update == 1'b1)) - begin - // Update the read data and put it in the write data to be written - wr_data <= rd_data + 2; - do_update <= 1'b0; - read_req <= 1'b0; - $display("write data is %d...",wr_data); - - // First read done. Next reads should be from the updated addresses - start_read <= 1'b0; - end - end - end - - - // ========================================================================= - // - // Write logic. - // - // ========================================================================= - - - // - // WRITE REQUEST - // - - // Did a write response just arrive - - // Next write address - - always_ff @(posedge clk) - begin - if (sRx.c0.rspValid) - begin - // Next write address is valid when we have got the read response back - wr_addr_next_valid <= sRx.c0.rspValid; - //wr_addr_next_valid <= (!start_write && sRx.c0.rspValid); - - //if (state == STATE_WRITE && !wr_needed) - //begin - // Apurve: Next address is current address plus address length - //wr_addr_next <= wr_addr + 0; - wr_addr_next <= (wr_addr_next_valid ? wr_addr + 0 : wr_addr); - //end - end - end - - // - // Since back pressure may prevent an immediate write request, we must - // record whether a write is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - wr_needed <= 1'b0; - end - else - begin - // If writes are allowed this cycle then we can safely clear - // any previously requested writes. This simple AFU has only - // one write in flight at a time since it is walking a pointer - // chain. - if (wr_needed) - begin - //wr_needed <= sRx.c1TxAlmFull; - //wr_needed <= (!sRx.c1TxAlmFull && !sRx.c1.rspValid); - wr_needed <= !sRx.c1.rspValid; - end - else - begin - // Need a write under two conditions: - // - Starting a new walk - // - A write response just arrived from a line containing - // a next pointer. - wr_needed <= (start_write || (!sRx.c1TxAlmFull && wr_addr_next_valid)); - wr_addr <= (start_write ? write_mem_addr : wr_addr_next); - //$display("Write mem address later is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - end - - // - // Emit write requests to the FIU. - // - - // Write header defines the request to the FIU - t_ccip_c1_ReqMemHdr wr_hdr; - - always_comb - begin - wr_hdr = t_ccip_c1_ReqMemHdr'(0); - - // Write request type - //wr_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - wr_hdr.address = wr_addr; - - // Let the FIU pick the channel - //wr_hdr.vc_sel = 2'h2; - - // Write 1 cache line (64 bytes) - //wr_hdr.cl_len = 2'h0; - - // Start of packet is true (single line write) - wr_hdr.sop = 1'b1; - end - - // Send write requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c1.valid <= 1'b0; - write_req <= 1'b0; - end - else - begin - // Generate a write request when needed and the FIU isn't full - if (state == STATE_WRITE) - begin - sTx.c1.valid <= (wr_needed && !sRx.c1TxAlmFull && !write_req); - if (wr_needed && !sRx.c1TxAlmFull && !write_req) - begin - sTx.c1.hdr <= wr_hdr; - sTx.c1.data <= t_ccip_clData'(wr_data); - write_req <= 1'b1; - wr_addr_next_valid <= 1'b0; - $display("Write address is 0x%x...", wr_hdr.address); - end - end - end - end - - - // - // WRITE RESPONSE HANDLING - // - - // Apurve: Check if a signal is to be sent to read to start reading in case - // write response does not work - // - // Send data (write requests). - // - //always_ff @(posedge clk) - //begin - // if (state == STATE_WRITE) - // begin - // rd_data <= sRx.c0.data; - // end - // if (state == STATE_UPDATE) - // begin - // // Update the write data and put it in the write data to be written - // wr_data <= rd_data + 1; - // end - //end - -endmodule diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv b/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv deleted file mode 100644 index 144b430e..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv +++ /dev/null @@ -1,621 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - - -// Read from the memory locations first and then write to the memory locations - -`include "platform_if.vh" -`include "afu_json_info.vh" - - -module ccip_std_afu - ( - // CCI-P Clocks and Resets - input logic pClk, // 400MHz - CCI-P clock domain. Primary interface clock - input logic pClkDiv2, // 200MHz - CCI-P clock domain. - input logic pClkDiv4, // 100MHz - CCI-P clock domain. - input logic uClk_usr, // User clock domain. Refer to clock programming guide ** Currently provides fixed 300MHz clock ** - input logic uClk_usrDiv2, // User clock domain. Half the programmed frequency ** Currently provides fixed 150MHz clock ** - input logic pck_cp2af_softReset, // CCI-P ACTIVE HIGH Soft Reset - input logic [1:0] pck_cp2af_pwrState, // CCI-P AFU Power State - input logic pck_cp2af_error, // CCI-P Protocol Error Detected - - // Interface structures - input t_if_ccip_Rx pck_cp2af_sRx, // CCI-P Rx Port - output t_if_ccip_Tx pck_af2cp_sTx // CCI-P Tx Port - ); - - - // - // Run the entire design at the standard CCI-P frequency (400 MHz). - // - logic clk; - assign clk = pClk; - - logic reset; - assign reset = pck_cp2af_softReset; - - logic [511:0] wr_data; - logic [511:0] rd_data; - - logic do_update; - logic start_read; - logic start_write; - logic wr_addr_next_valid; - logic addr_next_valid; - logic rd_end_of_list; - logic rd_needed; - logic wr_needed; - logic [15:0] cnt_list_length; - t_ccip_clAddr rd_addr; - t_ccip_clAddr wr_addr; - t_ccip_clAddr addr_next; - t_ccip_clAddr wr_addr_next; - - // ========================================================================= - // - // Register requests. - // - // ========================================================================= - - // - // The incoming pck_cp2af_sRx and outgoing pck_af2cp_sTx must both be - // registered. Here we register pck_cp2af_sRx and assign it to sRx. - // We also assign pck_af2cp_sTx to sTx here but don't register it. - // The code below never uses combinational logic to write sTx. - // - - t_if_ccip_Rx sRx; - always_ff @(posedge clk) - begin - sRx <= pck_cp2af_sRx; - end - - t_if_ccip_Tx sTx; - assign pck_af2cp_sTx = sTx; - - - // ========================================================================= - // - // CSR (MMIO) handling. - // - // ========================================================================= - - // The AFU ID is a unique ID for a given program. Here we generated - // one with the "uuidgen" program and stored it in the AFU's JSON file. - // ASE and synthesis setup scripts automatically invoke afu_json_mgr - // to extract the UUID into afu_json_info.vh. - logic [127:0] afu_id = `AFU_ACCEL_UUID; - - // - // A valid AFU must implement a device feature list, starting at MMIO - // address 0. Every entry in the feature list begins with 5 64-bit - // words: a device feature header, two AFU UUID words and two reserved - // words. - // - - // Is a CSR read request active this cycle? - logic is_csr_read; - assign is_csr_read = sRx.c0.mmioRdValid; - - // Is a CSR write request active this cycle? - logic is_csr_write; - assign is_csr_write = sRx.c0.mmioWrValid; - - // The MMIO request header is overlayed on the normal c0 memory read - // response data structure. Cast the c0Rx header to an MMIO request - // header. - t_ccip_c0_ReqMmioHdr mmio_req_hdr; - assign mmio_req_hdr = t_ccip_c0_ReqMmioHdr'(sRx.c0.hdr); - - - // - // Implement the device feature list by responding to MMIO reads. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c2.mmioRdValid <= 1'b0; - end - else - begin - // Always respond with something for every read request - sTx.c2.mmioRdValid <= is_csr_read; - - // The unique transaction ID matches responses to requests - sTx.c2.hdr.tid <= mmio_req_hdr.tid; - - // Addresses are of 32-bit objects in MMIO space. Addresses - // of 64-bit objects are thus multiples of 2. - case (mmio_req_hdr.address) - 0: // AFU DFH (device feature header) - begin - // Here we define a trivial feature list. In this - // example, our AFU is the only entry in this list. - sTx.c2.data <= t_ccip_mmioData'(0); - // Feature type is AFU - sTx.c2.data[63:60] <= 4'h1; - // End of list (last entry in list) - sTx.c2.data[40] <= 1'b1; - end - - // AFU_ID_L - 2: sTx.c2.data <= afu_id[63:0]; - - // AFU_ID_H - 4: sTx.c2.data <= afu_id[127:64]; - - // DFH_RSVD0 - 6: sTx.c2.data <= t_ccip_mmioData'(0); - - // DFH_RSVD1 - 8: sTx.c2.data <= t_ccip_mmioData'(0); - - // Updated by apurve to check fpgaReadMMIO - 10: sTx.c2.data <= t_ccip_mmioData'(start_read); - - default: sTx.c2.data <= t_ccip_mmioData'(0); - endcase - end - end - - - // - // CSR write handling. Host software must tell the AFU the memory address - // to which it should be writing. The address is set by writing a CSR. - // - - // We use MMIO address 0 to set the memory address. The read and - // write MMIO spaces are logically separate so we are free to use - // whatever we like. This may not be good practice for cleanly - // organizing the MMIO address space, but it is legal. - logic is_mem_addr_csr_write; - assign is_mem_addr_csr_write = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address to which this AFU will write. - t_ccip_clAddr write_mem_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_write <= 1'b0; - end - else if (is_mem_addr_csr_write) - begin - write_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_write <= 1'b1; - //$display("Write mem address is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - - - // We use MMIO address 8 to set the memory address for reading data. - logic is_mem_addr_csr_read; - assign is_mem_addr_csr_read = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(2)); - - // Memory address from which this AFU will read. - t_ccip_clAddr read_mem_addr; - - //logic start_traversal = 'b0; - //t_ccip_clAddr start_traversal_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_read <= 1'b0; - end - else if (is_mem_addr_csr_read) - begin - read_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_read <= 1'b1; - //$display("Read mem address is 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - - // ========================================================================= - // - // Main AFU logic - // - // ========================================================================= - - // - // States in our simple example. - // - //typedef enum logic [0:0] - typedef enum logic [1:0] - { - STATE_IDLE, - STATE_READ, - STATE_UPDATE, - STATE_WRITE - } - t_state; - - t_state state; - - // - // State machine - // - always_ff @(posedge clk) - begin - if (reset) - begin - state <= STATE_IDLE; - rd_end_of_list <= 1'b0; - end - else - begin - case (state) - STATE_IDLE: - begin - // Traversal begins when CSR 1 is written - if (start_read) - begin - state <= STATE_READ; - $display("AFU starting traversal at 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - STATE_READ: - begin - $display("AFU in READ..."); - if (!rd_needed && do_update) - begin - state <= STATE_UPDATE; - $display("AFU moving to UPDATE..."); - end - end - - STATE_UPDATE: - begin - // Update the read value to be written back - $display("AFU in UPDATE..."); - if (!do_update) - begin - state <= STATE_WRITE; - wr_needed <= 1'b1; - $display("AFU moving to WRITE..."); - end - end - - STATE_WRITE: - begin - // Write the updated value to the address - // Point to new address after that - // if done then point to IDLE; else read new values - $display("AFU in WRITE..."); - if (rd_end_of_list) - begin - state <= STATE_IDLE; - $display("AFU done..."); - end - else if (!wr_needed) - begin - state <= STATE_READ; - $display("AFU moving to READ from WRITE..."); - start_write <= 1'b0; - end - end - endcase - end - end - - - // ========================================================================= - // - // Read logic. - // - // ========================================================================= - - // - // READ REQUEST - // - - // Did a write response just arrive - - // Next read address - - always_ff @(posedge clk) - begin - // Next read address is valid when we have got the write response back - addr_next_valid <= sRx.c1.rspValid; - - // Apurve: Next address is current address plus address length - //addr_next <= addr_next + addr_size; - addr_next <= rd_addr + 0; - - // End of list reached if we have read 5 times - rd_end_of_list <= (cnt_list_length == 'h5); - end - - // - // Since back pressure may prevent an immediate read request, we must - // record whether a read is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - rd_needed <= 1'b0; - end - else - begin - // If reads are allowed this cycle then we can safely clear - // any previously requested reads. This simple AFU has only - // one read in flight at a time since it is walking a pointer - // chain. - if (rd_needed) - begin - rd_needed <= sRx.c0TxAlmFull; - end - else - begin - // Need a read under two conditions: - // - Starting a new walk - // - A read response just arrived from a line containing - // a next pointer. - rd_needed <= (start_read || (!sRx.c0TxAlmFull && (addr_next_valid && ! rd_end_of_list))); - rd_addr <= (start_read ? read_mem_addr : addr_next); - //$display("rd_addr is 0x%x", t_ccip_clAddr'(rd_addr)); - //$display("read mem addr is 0x%x", t_ccip_clAddr'(read_mem_addr)); - //$display("start read is %d", start_read); - end - end - end - - // - // Emit read requests to the FIU. - // - - // Read header defines the request to the FIU - t_ccip_c0_ReqMemHdr rd_hdr; - - always_comb - begin - rd_hdr = t_ccip_c0_ReqMemHdr'(0); - - // Read request type (No intention to cache) - //rd_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - rd_hdr.address = rd_addr; - - // Read over channel VA - //rd_hdr.vc_sel = 2'h0; - - // Read one cache line (64 bytes) - //rd_hdr.cl_len = 2'h0; - end - - // Send read requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c0.valid <= 1'b0; - cnt_list_length <= 0; - end - else - begin - // Generate a read request when needed and the FIU isn't full - if (state == STATE_READ) - begin - sTx.c0.valid <= (rd_needed && !sRx.c0TxAlmFull); - - if (rd_needed && !sRx.c0TxAlmFull) - begin - sTx.c0.hdr <= rd_hdr; - cnt_list_length <= cnt_list_length + 1; - $display("Incrementing read count...%d",cnt_list_length); - $display("Read address is 0x%x...",rd_hdr.address); - // Apurve: Add something to stop read once this section has been accessed - end - end - end - end - - // - // READ RESPONSE HANDLING - // - - // - // Receive data (read responses). - // - always_ff @(posedge clk) - begin - if (reset) - begin - do_update <= 1'b0; - end - else - begin - if (sRx.c0.rspValid) - begin - rd_data <= sRx.c0.data; - do_update <= 1'b1; - //$display("rd data is %d...",rd_data); - end - - if (state == STATE_UPDATE) - begin - // Update the read data and put it in the write data to be written - wr_data <= rd_data + 2; - do_update <= 1'b0; - $display("write data is %d...",wr_data); - - // First read done. Next reads should be from the updated addresses - start_read <= 1'b0; - end - end - end - - - // ========================================================================= - // - // Write logic. - // - // ========================================================================= - - - // - // WRITE REQUEST - // - - // Did a write response just arrive - - // Next write address - - always_ff @(posedge clk) - begin - // Next write address is valid when we have got the read response back - wr_addr_next_valid <= sRx.c0.rspValid; - - // Apurve: Next address is current address plus address length - wr_addr_next <= wr_addr + 0; - - end - - // - // Since back pressure may prevent an immediate write request, we must - // record whether a write is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - wr_needed <= 1'b0; - end - else - begin - // If writes are allowed this cycle then we can safely clear - // any previously requested writes. This simple AFU has only - // one write in flight at a time since it is walking a pointer - // chain. - if (wr_needed) - begin - wr_needed <= sRx.c1TxAlmFull; - end - else - begin - // Need a write under two conditions: - // - Starting a new walk - // - A write response just arrived from a line containing - // a next pointer. - wr_needed <= (start_write || (!sRx.c1TxAlmFull && wr_addr_next_valid)); - wr_addr <= (start_write ? write_mem_addr : wr_addr_next); - //$display("Write mem address later is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - end - - // - // Emit write requests to the FIU. - // - - // Write header defines the request to the FIU - t_ccip_c1_ReqMemHdr wr_hdr; - - always_comb - begin - wr_hdr = t_ccip_c1_ReqMemHdr'(0); - - // Write request type - //wr_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - wr_hdr.address = wr_addr; - - // Let the FIU pick the channel - //wr_hdr.vc_sel = 2'h2; - - // Write 1 cache line (64 bytes) - //wr_hdr.cl_len = 2'h0; - - // Start of packet is true (single line write) - wr_hdr.sop = 1'b1; - end - - // Send write requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c1.valid <= 1'b0; - end - else - begin - // Generate a write request when needed and the FIU isn't full - if (state == STATE_WRITE) - begin - sTx.c1.valid <= (wr_needed && !sRx.c1TxAlmFull); - if (wr_needed && !sRx.c1TxAlmFull) - begin - sTx.c1.hdr <= wr_hdr; - sTx.c1.data <= t_ccip_clData'(wr_data); - end - end - end - end - - - // - // WRITE RESPONSE HANDLING - // - - // Apurve: Check if a signal is to be sent to read to start reading in case - // write response does not work - // - // Send data (write requests). - // - //always_ff @(posedge clk) - //begin - // if (state == STATE_WRITE) - // begin - // rd_data <= sRx.c0.data; - // end - // if (state == STATE_UPDATE) - // begin - // // Update the write data and put it in the write data to be written - // wr_data <= rd_data + 1; - // end - //end - -endmodule diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/sources.txt b/driver/tests/dogfood/Memcpy/hw/rtl/sources.txt deleted file mode 100644 index 8a73008b..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/sources.txt +++ /dev/null @@ -1,2 +0,0 @@ -cci_hello.json -cci_hello_afu.sv diff --git a/driver/tests/dogfood/Memcpy/hw/sim/setup_ase b/driver/tests/dogfood/Memcpy/hw/sim/setup_ase deleted file mode 100755 index a8414ac0..00000000 --- a/driver/tests/dogfood/Memcpy/hw/sim/setup_ase +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -## -## Setup ASE environment using ../rtl/sources.txt. -## - -# Absolute path to this script -SCRIPT=$(readlink -f "$0") -SCRIPT_PATH=$(dirname "$SCRIPT") - -afu_sim_setup --sources="${SCRIPT_PATH}/../rtl/sources.txt" $@ diff --git a/driver/tests/dogfood/Memcpy/sw/Makefile b/driver/tests/dogfood/Memcpy/sw/Makefile deleted file mode 100644 index f3b66c12..00000000 --- a/driver/tests/dogfood/Memcpy/sw/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -include ../../common/sw/common_include.mk - -# Primary test name -TEST = cci_hello - -# Build directory -OBJDIR = obj -CFLAGS += -I./$(OBJDIR) -CPPFLAGS += -I./$(OBJDIR) - -# Files and folders -SRCS = $(TEST).c -OBJS = $(addprefix $(OBJDIR)/,$(patsubst %.c,%.o,$(SRCS))) - -# Targets (build only $(TEST)_ase by default) -all: $(TEST) $(TEST)_ase - -# AFU info from JSON file, including AFU UUID -AFU_JSON_INFO = $(OBJDIR)/afu_json_info.h - -$(AFU_JSON_INFO): ../hw/rtl/$(TEST).json | objdir - afu_json_mgr json-info --afu-json=$^ --c-hdr=$@ - -$(OBJS): $(AFU_JSON_INFO) - -$(TEST): $(OBJS) - $(CC) -o $@ $^ $(LDFLAGS) $(FPGA_LIBS) - -$(TEST)_ase: $(OBJS) - $(CC) -o $@ $^ $(LDFLAGS) $(ASE_LIBS) - -$(OBJDIR)/%.o: %.c | objdir - $(CC) $(CFLAGS) -c $< -o $@ - -clean: - rm -rf $(TEST) $(TEST)_ase $(OBJDIR) - -objdir: - @mkdir -p $(OBJDIR) - -.PHONY: all clean diff --git a/driver/tests/dogfood/Memcpy/sw/cci_hello.c b/driver/tests/dogfood/Memcpy/sw/cci_hello.c deleted file mode 100644 index f12d95c2..00000000 --- a/driver/tests/dogfood/Memcpy/sw/cci_hello.c +++ /dev/null @@ -1,210 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -#include -#include -#include -#include -#include -#include - -#include - -// State from the AFU's JSON file, extracted using OPAE's afu_json_mgr script -#include "afu_json_info.h" - -#define CACHELINE_BYTES 64 -#define CL(x) ((x) * CACHELINE_BYTES) - - -// -// Search for an accelerator matching the requested UUID and connect to it. -// -static fpga_handle connect_to_accel(const char *accel_uuid) -{ - fpga_properties filter = NULL; - fpga_guid guid; - fpga_token accel_token; - uint32_t num_matches; - fpga_handle accel_handle; - fpga_result r; - - // Don't print verbose messages in ASE by default - //setenv("ASE_LOG", "0", 0); - - // Set up a filter that will search for an accelerator - fpgaGetProperties(NULL, &filter); - fpgaPropertiesSetObjectType(filter, FPGA_ACCELERATOR); - - // Add the desired UUID to the filter - uuid_parse(accel_uuid, guid); - fpgaPropertiesSetGUID(filter, guid); - - // Do the search across the available FPGA contexts - num_matches = 1; - fpgaEnumerate(&filter, 1, &accel_token, 1, &num_matches); - - // Not needed anymore - fpgaDestroyProperties(&filter); - - if (num_matches < 1) - { - fprintf(stderr, "Accelerator %s not found!\n", accel_uuid); - return 0; - } - - // Open accelerator - r = fpgaOpen(accel_token, &accel_handle, 0); - assert(FPGA_OK == r); - - // Done with token - fpgaDestroyToken(&accel_token); - - return accel_handle; -} - - -// -// Allocate a buffer in I/O memory, shared with the FPGA. -// -static volatile void* alloc_buffer(fpga_handle accel_handle, - ssize_t size, - uint64_t *wsid, - uint64_t *io_addr) -{ - fpga_result r; - volatile void* buf; - - r = fpgaPrepareBuffer(accel_handle, size, (void*)&buf, wsid, 0); - if (FPGA_OK != r) return NULL; - - // Get the physical address of the buffer in the accelerator - r = fpgaGetIOAddress(accel_handle, *wsid, io_addr); - assert(FPGA_OK == r); - - return buf; -} - - -int main(int argc, char *argv[]) -{ - fpga_handle accel_handle; - volatile char *buf; - volatile char *buf_r; - uint64_t wsid1; - uint64_t wsid2; - uint64_t buf_pa; - uint64_t ret_buf_pa; - uint64_t buf_rpa; - uint64_t ret_buf_rpa; - fpga_result r; - - // Find and connect to the accelerator - accel_handle = connect_to_accel(AFU_ACCEL_UUID); - - // Allocate a single page memory buffer for write - buf = (volatile char*)alloc_buffer(accel_handle, 4 * getpagesize(), - &wsid1, &buf_pa); - // Allocate a single page memory buffer for read - buf_r = (volatile char*)alloc_buffer(accel_handle, 4 * getpagesize(), - &wsid2, &buf_rpa); - assert(NULL != buf); - - //// Set the low byte of the shared buffer to 0. The FPGA will write - //// a non-zero value to it. - //buf[0] = 0; - - // Set the low byte of the shared buffer buf_r to 0. The FPGA will read - // the values and write to buf address - buf[0] = 5; - buf_r[0] = 5; - - // Tell the accelerator the address of the buffer using cache line - // addresses. The accelerator will respond by writing to the buffer. - r = fpgaWriteMMIO64(accel_handle, 0, 0, buf_pa / CL(1)); - printf("Write address is %08lx\n", buf_pa); - printf("Write address div 64 is %08lx\n", buf_pa/ CL(1)); - assert(FPGA_OK == r); - - // Wait for response from FPGA. Check using fpgaReadMMIO - //r = fpgaReadMMIO64(accel_handle, 0, 0, &ret_buf_pa); - //printf("Returned write is %08lx\n", ret_buf_pa); - //assert(FPGA_OK == r); - -///////////////////// Added to check fpgaRead - // Wait for response from FPGA. Check using fpgaReadMMIO - r = fpgaReadMMIO64(accel_handle, 0, 5 * sizeof(uint64_t), &ret_buf_rpa); - printf("Returned read at 10 is %08lx\n", ret_buf_rpa); - assert(FPGA_OK == r); -/////////////////////////////////////////////// - - - // Tell the accelerator the address of the buffer using cache line - // addresses. The accelerator will read from the buffer. - // Write the address to MMIO 1 - r = fpgaWriteMMIO64(accel_handle, 0, sizeof(uint64_t), buf_rpa / CL(1)); - printf("Read address is %08lx\n", buf_rpa); - printf("Read address div64 is %08lx\n", buf_rpa / CL(1)); - assert(FPGA_OK == r); - - // Wait for response from FPGA. Check using fpgaReadMMIO - //r = fpgaReadMMIO64(accel_handle, 0, sizeof(uint64_t), &ret_buf_rpa); - //printf("Returned write is %08lx\n", ret_buf_rpa); - //assert(FPGA_OK == r); - - - - - - - - - // Update this - // Spin, waiting for the value in memory to change to something non-zero. - while (5 == buf[0]) - { - // A well-behaved program would use _mm_pause(), nanosleep() or - // equivalent to save power here. - }; - - // Print the string written by the FPGA - printf("%d\n", buf[0]); - - do { - //printf("%d\n", buf[0]); - } while (10 != buf[0]); - - // Done - fpgaReleaseBuffer(accel_handle, wsid1); - fpgaReleaseBuffer(accel_handle, wsid2); - fpgaClose(accel_handle); - - return 0; -} diff --git a/driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h b/driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h deleted file mode 100644 index e16a5349..00000000 --- a/driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// Generated by afu_json_mgr from ../hw/rtl/cci_hello.json -// - -#ifndef __AFU_JSON_INFO__ -#define __AFU_JSON_INFO__ - -#define AFU_ACCEL_NAME "cci_hello" -#define AFU_ACCEL_UUID "C6AA954A-9B91-4A37-ABC1-1D9F0709DCC3" -#define AFU_IMAGE_POWER 0 -#define AFU_TOP_IFC "ccip_std_afu" - -#endif // __AFU_JSON_INFO__ diff --git a/driver/tests/dogfood/Memcpy/sw/obj/cci_hello.o b/driver/tests/dogfood/Memcpy/sw/obj/cci_hello.o deleted file mode 100644 index a6d79f493c77264d59167e9a913e3aeedecb5e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5336 zcmbW4e`p*<6vyY1CaLLlea%UXnZ83S2J2%|#B9OpjAS-r1CCH`8V_*+5E3P)Yr+O#aoQq$Z}r zN_tJzZg46odD%Oo%*u19RHo!PC3W>%Y%fxfmgg?wBuZ-50#m`8N?M*)QopPs&?tyA zXjYz~gQmJ>z%!3wJ5qDsAQPhDd{*SNJoCy-a*vWOvL+@Y|}ijX^ToK35yIaD5_O{83x)KkZfIuQkg5_=EN)6e@nkGqQA$Fgh&rN2qj7hLwDq+6)WFlyfdi63 zNBSFlzNY#*Uv*PUlefCgSKC%ly{%1co<>hotKVNsx`UmaQpEvjFgZjH8xd2N zv~bwa6A3Ajkg7cUqT{7Jk8F21a!hKdv#EM@Gik*1uw>|3Skg?%>&fyW%n98~wG2bZ ztcX=%I(H}@i|HX#HRGy=Tfy_uVBH}V5+BkHGO9)37u)XlKPl}F4klw}QmS{?yFJz3 znk4OdU-UM(J#~95EY*0tjb4w}1HrbifUXn0#5G>-+P=PI?J2k-9|4X9tsbvT-^TKj z1^x}ig&r43sBb^@67mMt++UDFH}yZm{GkGyzwo&NDqudb!l~AfzgI+#{ldI&8svrf zf7Xdvc2F71&jnGCt*U>!y)(Qpn+nAo-{=lAPyozyq z28E;qyt!6L@E4wIg`_wK9s^RILkW4^fxqv-@y5&-=X(eKs{{YTf#bpEi(d@;l8>>Tp zI4qbD4?a|2cypCOxeMPzXg-8s$np8+ybmE5a=e>3A4Uj4^CxWlVH+Q|@$EMLmW|_kk;nOvah}f>*8f!C zJpV5R&hw}LmOxxF|DOeY9ca*QF^+nCNAY}$F%dA4*D%iWtYG603Y_OD3%uV7OP*p} z%<}~s-vL^l&y)}cpK-LeZF&j%Tz^K;zl>tAFC6qUf}XGI2Z8f-{U~t0{|mPG_UGr0 zjaNV(JkR1nn%3%b_>t8m<&5M0NKm-`Q9;l1+#_(Fr$^wGEPg%X;{NyBxPAYR2yrg4 zIHpZ+&-0|9Uts!E4*K^5Jzv)uf%A2JF7Qeg|0~ADb^Rph?=byuHoZOnyEeWPw0!@| zFfbTacD~)lE5XP06136q_}L>s`_1%khV$>g0fF=H1L95`A2qc>s7=GFM|jK7qng{) z$4%l6YoijR)!G4R3vJi5ERJ6KKMO(4Kw`iMGYXruh+#Ad(uN`j$y zC5T^^&A`xhv3;_7tDnQXOYp8lN%JbP8UyRB`c-^MfMFNs;a|4+TSMCg1vxuDMAU|a zc{xX|-5!Sy#=O_@UKoop?Pm>LGREfLD@-VUV>Yqz{QZq%(N42<^LyK(nf>EoTfo8F zT!Zy>Hr~##Eou)lCgwlS#*YgD`2KU;3ypl|x5yT%Fd?2Fj^*R|`Qf*Rxc4~3!~S8? ouwyeZf9#97qg-JROel28f4TqVVE_OC diff --git a/driver/tests/dogfood/common.h b/driver/tests/dogfood/common.h new file mode 100644 index 00000000..da6e77d2 --- /dev/null +++ b/driver/tests/dogfood/common.h @@ -0,0 +1,14 @@ +#ifndef _COMMON_H_ +#define _COMMON_H_ + +#define KERNEL_ARG_DEV_MEM_ADDR 0x7ffff000 + +struct kernel_arg_t { + uint32_t testid; + uint32_t count; + uint32_t src0_ptr; + uint32_t src1_ptr; + uint32_t dst_ptr; +}; + +#endif \ No newline at end of file diff --git a/driver/tests/dogfood/dogfood.cpp b/driver/tests/dogfood/dogfood.cpp new file mode 100644 index 00000000..c54fcbf4 --- /dev/null +++ b/driver/tests/dogfood/dogfood.cpp @@ -0,0 +1,264 @@ +#include +#include +#include +#include +#include +#include "testcases.h" +#include "common.h" + +#define RT_CHECK(_expr) \ + do { \ + int _ret = _expr; \ + if (0 == _ret) \ + break; \ + printf("Error: '%s' returned %d!\n", #_expr, (int)_ret); \ + cleanup(); \ + exit(-1); \ + } while (false) + +/////////////////////////////////////////////////////////////////////////////// + +class TestMngr { +public: + TestMngr() { + this->add_test("iadd", new Test_IADD()); + this->add_test("imul", new Test_IMUL()); + this->add_test("idiv", new Test_IDIV()); + this->add_test("idiv-mul", new Test_IDIV_MUL()); + this->add_test("fadd", new Test_FADD()); + this->add_test("fsub", new Test_FSUB()); + this->add_test("fmul", new Test_FMUL()); + this->add_test("fmadd", new Test_FMADD()); + this->add_test("fmsub", new Test_FMSUB()); + this->add_test("fnmadd", new Test_FNMADD()); + this->add_test("fnmsub", new Test_FNMSUB()); + this->add_test("fnmadd-madd", new Test_FNMADD_MADD()); + this->add_test("fdiv", new Test_FDIV()); + this->add_test("fdiv2", new Test_FDIV2()); + this->add_test("fsqrt", new Test_FSQRT()); + this->add_test("ftoi", new Test_FTOI()); + this->add_test("ftou", new Test_FTOU()); + this->add_test("tof", new Test_ITOF()); + this->add_test("utof", new Test_UTOF()); + } + + ~TestMngr() { + for (size_t i = 0; i < _tests.size(); ++i) { + delete _tests[i]; + } + } + + const std::string& get_name(int testid) const { + return _names.at(testid); + } + + ITestCase* get_test(int testid) const { + return _tests.at(testid); + } + + void add_test(const char* name, ITestCase* test) { + _names.push_back(name); + _tests.push_back(test); + } + + size_t size() const { + return _tests.size(); + } + +private: + std::vector _names; + std::vector _tests; +}; + +/////////////////////////////////////////////////////////////////////////////// + +TestMngr testMngr; +const char* kernel_file = "kernel.bin"; +int count = 0; +int testid_s = 0; +int testid_e = (testMngr.size() - 1); + +vx_device_h device = nullptr; +vx_buffer_h arg_buf = nullptr; +vx_buffer_h src1_buf = nullptr; +vx_buffer_h src2_buf = nullptr; +vx_buffer_h dst_buf = nullptr; + +static void show_usage() { + std::cout << "Vortex Driver Test." << std::endl; + std::cout << "Usage: [-s:testid] [-e:testid] [-k: kernel] [-n words] [-h: help]" << std::endl; +} + +static void parse_args(int argc, char **argv) { + int c; + while ((c = getopt(argc, argv, "n:s:e:k:h?")) != -1) { + switch (c) { + case 'n': + count = atoi(optarg); + break; + case 's': + testid_s = atoi(optarg); + break; + case 'e': + testid_e = atoi(optarg); + break; + case 'k': + kernel_file = optarg; + break; + case 'h': + case '?': { + show_usage(); + exit(0); + } break; + default: + show_usage(); + exit(-1); + } + } +} + +void cleanup() { + if (arg_buf) { + vx_buf_release(arg_buf); + } + if (src1_buf) { + vx_buf_release(src1_buf); + } + if (src2_buf) { + vx_buf_release(src2_buf); + } + if (dst_buf) { + vx_buf_release(dst_buf); + } + if (device) { + vx_dev_close(device); + } +} + +int main(int argc, char *argv[]) { + size_t value; + kernel_arg_t kernel_arg; + + // parse command arguments + parse_args(argc, argv); + + if (count == 0) { + count = 1; + } + + std::cout << "test ids: " << testid_s << " - " << testid_e << std::endl; + std::cout << "workitem size: " << count << std::endl; + std::cout << "using kernel: " << kernel_file << std::endl; + + // open device connection + std::cout << "open device connection" << std::endl; + RT_CHECK(vx_dev_open(&device)); + + unsigned max_cores, max_warps, max_threads; + RT_CHECK(vx_dev_caps(device, VX_CAPS_MAX_CORES, &max_cores)); + RT_CHECK(vx_dev_caps(device, VX_CAPS_MAX_WARPS, &max_warps)); + RT_CHECK(vx_dev_caps(device, VX_CAPS_MAX_THREADS, &max_threads)); + + int num_points = count * max_cores * max_warps * max_threads; + size_t buf_size = num_points * sizeof(uint32_t); + + std::cout << "number of points: " << num_points << std::endl; + std::cout << "number of points: " << num_points << std::endl; + std::cout << "number of points: " << num_points << std::endl; + std::cout << "buffer size: " << buf_size << " bytes" << std::endl; + + // upload program + std::cout << "upload kernel" << std::endl; + RT_CHECK(vx_upload_kernel_file(device, kernel_file)); + + // allocate device memory + std::cout << "allocate device memory" << std::endl; + + RT_CHECK(vx_alloc_dev_mem(device, buf_size, &value)); + kernel_arg.src0_ptr = value; + RT_CHECK(vx_alloc_dev_mem(device, buf_size, &value)); + kernel_arg.src1_ptr = value; + RT_CHECK(vx_alloc_dev_mem(device, buf_size, &value)); + kernel_arg.dst_ptr = value; + + kernel_arg.count = count; + + std::cout << "dev_src0=" << std::hex << kernel_arg.src0_ptr << std::endl; + std::cout << "dev_src1=" << std::hex << kernel_arg.src1_ptr << std::endl; + std::cout << "dev_dst=" << std::hex << kernel_arg.dst_ptr << std::endl; + + // allocate shared memory + std::cout << "allocate shared memory" << std::endl; + RT_CHECK(vx_alloc_shared_mem(device, sizeof(kernel_arg_t), &arg_buf)); + RT_CHECK(vx_alloc_shared_mem(device, buf_size, &src1_buf)); + RT_CHECK(vx_alloc_shared_mem(device, buf_size, &src2_buf)); + RT_CHECK(vx_alloc_shared_mem(device, buf_size, &dst_buf)); + + for (int t = testid_s; t <= testid_e; ++t) { + auto name = testMngr.get_name(t); + auto test = testMngr.get_test(t); + + std::cout << "Test" << t << ": " << name << std::endl; + + // upload kernel argument + std::cout << "upload kernel argument" << std::endl; + kernel_arg.testid = t; + memcpy((void*)vx_host_ptr(arg_buf), &kernel_arg, sizeof(kernel_arg_t)); + RT_CHECK(vx_copy_to_dev(arg_buf, KERNEL_ARG_DEV_MEM_ADDR, sizeof(kernel_arg_t), 0)); + + // get test arguments + std::cout << "get test arguments" << std::endl; + test->setup(num_points, (void*)vx_host_ptr(src1_buf), (void*)vx_host_ptr(src2_buf)); + + // upload source buffer0 + std::cout << "upload source buffer0" << std::endl; + RT_CHECK(vx_copy_to_dev(src1_buf, kernel_arg.src0_ptr, buf_size, 0)); + + // upload source buffer1 + std::cout << "upload source buffer1" << std::endl; + RT_CHECK(vx_copy_to_dev(src2_buf, kernel_arg.src1_ptr, buf_size, 0)); + + // clear destination buffer + std::cout << "clear destination buffer" << std::endl; + for (int i = 0; i < num_points; ++i) { + ((uint32_t*)vx_host_ptr(dst_buf))[i] = 0xdeadbeef; + } + RT_CHECK(vx_copy_to_dev(dst_buf, kernel_arg.dst_ptr, buf_size, 0)); + + // start device + std::cout << "start device" << std::endl; + RT_CHECK(vx_start(device)); + + // wait for completion + std::cout << "wait for completion" << std::endl; + RT_CHECK(vx_ready_wait(device, -1)); + + // flush the destination buffer caches + std::cout << "flush the destination buffer caches" << std::endl; + RT_CHECK(vx_flush_caches(device, kernel_arg.dst_ptr, buf_size)); + + // download destination buffer + std::cout << "download destination buffer" << std::endl; + RT_CHECK(vx_copy_from_dev(dst_buf, kernel_arg.dst_ptr, buf_size, 0)); + + // verify destination + std::cout << "verify test result" << std::endl; + int errors = test->verify(num_points, + (void*)vx_host_ptr(dst_buf), + (void*)vx_host_ptr(src1_buf), + (void*)vx_host_ptr(src2_buf)); + if (errors != 0) { + std::cout << "found " << errors << " errors!" << std::endl; + std::cout << "FAILED!" << std::endl << std::flush; + cleanup(); + exit(1); + } + std::cout << "PASSED!" << std::endl << std::flush; + } + + // cleanup + std::cout << "cleanup" << std::endl; + cleanup(); + + return 0; +} \ No newline at end of file diff --git a/driver/tests/dogfood/kernel.c b/driver/tests/dogfood/kernel.c new file mode 100644 index 00000000..2fc49872 --- /dev/null +++ b/driver/tests/dogfood/kernel.c @@ -0,0 +1,354 @@ +#include +#include +#include +#include +#include "common.h" + +typedef void (*PFN_Kernel)(void* arg); + +void kernel_iadd(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + int32_t* src0_ptr = (int32_t*)_arg->src0_ptr; + int32_t* src1_ptr = (int32_t*)_arg->src1_ptr; + int32_t* dst_ptr = (int32_t*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + int32_t a = src0_ptr[offset+i]; + int32_t b = src1_ptr[offset+i]; + int32_t c = a + b; + dst_ptr[offset+i] = c; + } +} + +void kernel_imul(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + int32_t* src0_ptr = (int32_t*)_arg->src0_ptr; + int32_t* src1_ptr = (int32_t*)_arg->src1_ptr; + int32_t* dst_ptr = (int32_t*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + int32_t a = src0_ptr[offset+i]; + int32_t b = src1_ptr[offset+i]; + int32_t c = a * b; + dst_ptr[offset+i] = c; + } +} + +void kernel_idiv(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + int32_t* src0_ptr = (int32_t*)_arg->src0_ptr; + int32_t* src1_ptr = (int32_t*)_arg->src1_ptr; + int32_t* dst_ptr = (int32_t*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + int32_t a = src0_ptr[offset+i]; + int32_t b = src1_ptr[offset+i]; + int32_t c = a / b; + dst_ptr[offset+i] = c; + } +} + +void kernel_idiv_mul(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + int32_t* src0_ptr = (int32_t*)_arg->src0_ptr; + int32_t* src1_ptr = (int32_t*)_arg->src1_ptr; + int32_t* dst_ptr = (int32_t*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + int32_t a = src0_ptr[offset+i]; + int32_t b = src1_ptr[offset+i]; + int32_t c = a / b; + int32_t d = a * b; + int32_t e = c + d; + dst_ptr[offset+i] = e; + } +} + +void kernel_fadd(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a + b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fsub(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a - b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fmul(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a * b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fmadd(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a * 0.5f + b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fmsub(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a * 0.5f - b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fnmadd(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = -a * 0.5f - b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fnmsub(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = -a * 0.5f + b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fnmadd_madd(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = -a * 0.25f - b; + float d = a * 0.25f + b; + float e = c + d; + dst_ptr[offset+i] = e; + } +} + +void kernel_fdiv(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a / b; + dst_ptr[offset+i] = c; + } +} + +void kernel_fdiv2(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a / b; + float d = b / a; + float e = c + d; + dst_ptr[offset+i] = e; + } +} + +void kernel_fsqrt(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = sqrt(a) + b; + dst_ptr[offset+i] = c; + } +} + +void kernel_ftoi(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + int32_t* dst_ptr = (int32_t*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a + b; + int32_t d = (int32_t)c; + dst_ptr[offset+i] = d; + } +} + +void kernel_ftou(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + uint32_t* dst_ptr = (uint32_t*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + float c = a + b; + uint32_t d = (uint32_t)c; + dst_ptr[offset+i] = d; + } +} + +void kernel_itof(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + int32_t c = (int32_t)a; + int32_t d = (int32_t)b; + int32_t e = c + d; + float f = (float)e; + dst_ptr[offset+i] = f; + } +} + +void kernel_utof(void* arg) { + struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); + uint32_t count = _arg->count; + float* src0_ptr = (float*)_arg->src0_ptr; + float* src1_ptr = (float*)_arg->src1_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; + uint32_t offset = vx_thread_gid() * count; + + for (uint32_t i = 0; i < count; ++i) { + float a = src0_ptr[offset+i]; + float b = src1_ptr[offset+i]; + uint32_t c = (uint32_t)a; + uint32_t d = (uint32_t)b; + uint32_t e = c + d; + float f = (float)e; + dst_ptr[offset+i] = f; + } +} + +static const PFN_Kernel sc_tests[] = { + kernel_iadd, + kernel_imul, + kernel_idiv, + kernel_idiv_mul, + kernel_fadd, + kernel_fsub, + kernel_fmul, + kernel_fmadd, + kernel_fmsub, + kernel_fnmadd, + kernel_fnmsub, + kernel_fnmadd_madd, + kernel_fdiv, + kernel_fdiv2, + kernel_fsqrt, + kernel_ftoi, + kernel_ftou, + kernel_itof, + kernel_utof, +}; + +void main() { + struct kernel_arg_t* arg = (struct kernel_arg_t*)KERNEL_ARG_DEV_MEM_ADDR; + int num_warps = vx_num_warps(); + int num_threads = vx_num_threads(); + vx_spawn_warps(num_warps, num_threads, sc_tests[arg->testid], arg); +} \ No newline at end of file diff --git a/driver/tests/dogfood/testcases.h b/driver/tests/dogfood/testcases.h new file mode 100644 index 00000000..e2718a82 --- /dev/null +++ b/driver/tests/dogfood/testcases.h @@ -0,0 +1,555 @@ +#pragma once + +#include +#include + +class ITestCase { +public: + ITestCase() {} + virtual ~ITestCase() {} + + virtual void setup(int n, void* src1, void* src2) = 0; + virtual int verify(int n, void* dst, const void* src1, const void* src2) = 0; +}; + +class Test_IADD : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + for (int i = 0; i < n; ++i) { + a[i] = n/2 + i; + b[i] = n/2 - i; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + auto c = (int32_t*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] + b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_IMUL : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + for (int i = 0; i < n; ++i) { + a[i] = n/2 + i; + b[i] = n/2 - i; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + auto c = (int32_t*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] * b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_IDIV : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + for (int i = 0; i < n; ++i) { + a[i] = n/2 - i; + b[i] = n/2 + i; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + auto c = (int32_t*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] / b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_IDIV_MUL : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + for (int i = 0; i < n; ++i) { + a[i] = n/2 - i; + b[i] = n/2 + i; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + auto c = (int32_t*)dst; + for (int i = 0; i < n; ++i) { + auto x = a[i] / b[i]; + auto y = a[i] * b[i]; + auto ref = x + y; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FADD : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] + b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FSUB : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] - b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FMUL : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] * b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FMADD : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] * 0.5f + b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FMSUB : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] * 0.5f - b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FNMADD : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = -a[i] * 0.5f - b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FNMSUB : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = -a[i] * 0.5f + b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FNMADD_MADD : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto x = -a[i] * 0.5f - b[i]; + auto y = a[i] * 0.5f + b[i]; + auto ref = x + y; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FDIV : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n - i) * 0.125f; + b[i] = (n + i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = a[i] / b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FDIV2 : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n - i) * 0.125f; + b[i] = (n + i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto x = a[i] / b[i]; + auto y = b[i] / a[i]; + auto ref = x + y; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FSQRT : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.125f; + b[i] = (n - i) * 0.125f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto ref = sqrt(a[i]) + b[i]; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FTOI : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.5f; + b[i] = (n - i) * 0.5f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto x = a[i] + b[i]; + auto ref = (int32_t)x; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_FTOU : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (float*)src1; + auto b = (float*)src2; + for (int i = 0; i < n; ++i) { + a[i] = (n + i) * 0.5f; + b[i] = (n - i) * 0.5f; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (float*)src1; + auto b = (float*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto x = a[i] + b[i]; + auto ref = (uint32_t)x; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_ITOF : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + for (int i = 0; i < n; ++i) { + a[i] = n/2 + i; + b[i] = n/2 - i; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (int32_t*)src1; + auto b = (int32_t*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto x = a[i] + b[i]; + auto ref = (float)x; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; + +class Test_UTOF : public ITestCase { +public: + + void setup(int n, void* src1, void* src2) override { + auto a = (uint32_t*)src1; + auto b = (uint32_t*)src2; + for (int i = 0; i < n; ++i) { + a[i] = n/2 + i; + b[i] = n/2 - i; + } + } + + int verify(int n, void* dst, const void* src1, const void* src2) override { + int errors = 0; + auto a = (uint32_t*)src1; + auto b = (uint32_t*)src2; + auto c = (float*)dst; + for (int i = 0; i < n; ++i) { + auto x = a[i] + b[i]; + auto ref = (float)x; + if (c[i] != ref) { + std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + ++errors; + } + } + return errors; + } +}; \ No newline at end of file From 87220f2d296a06cff5ee16416b1462b42316f676 Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Fri, 7 Aug 2020 12:54:03 -0400 Subject: [PATCH 39/94] benchmarks/riscv_tests Makefiles and modified testbench.cpp --- benchmarks/riscv_tests/Makefile | 2 ++ benchmarks/riscv_tests/isa/Makefile | 6 +++++ hw/simulate/testbench.cpp | 40 +++++++++++++++++++++++------ 3 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 benchmarks/riscv_tests/Makefile create mode 100644 benchmarks/riscv_tests/isa/Makefile diff --git a/benchmarks/riscv_tests/Makefile b/benchmarks/riscv_tests/Makefile new file mode 100644 index 00000000..a7a76d67 --- /dev/null +++ b/benchmarks/riscv_tests/Makefile @@ -0,0 +1,2 @@ +run: + $(MAKE) -C isa run diff --git a/benchmarks/riscv_tests/isa/Makefile b/benchmarks/riscv_tests/isa/Makefile new file mode 100644 index 00000000..944d1875 --- /dev/null +++ b/benchmarks/riscv_tests/isa/Makefile @@ -0,0 +1,6 @@ +TESTS := $(wildcard *.hex) +#VTESTS := $(wildcard *-v-*.hex) +#TESTS := $(filter-out $(VTESTS) rv32ud-p-fclass.hex, $(TESTS)) + +run: + cd ../../../hw/simulate/obj_dir && ./VVortex -f $(foreach test,$(TESTS),../../../benchmarks/riscv_tests/isa/$(test)) diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index c68062c8..18c1c887 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -143,18 +143,42 @@ int main(int argc, char **argv) { #endif } else { + bool passed = true; - char* test = argv[2]; + std::vector tests(argv+2, argv+argc); + for (std::string test : tests) { + std::cerr << DEFAULT << "\n---------------------------------------\n"; + + std::cerr << test << std::endl; + + RAM ram; + Simulator simulator; + simulator.attach_ram(&ram); + simulator.load_ihex(test.c_str()); + simulator.run(); + + bool status = (1 == simulator.get_last_wb_value(3)); + + if (status) std::cerr << GREEN << "Test Passed: " << test << std::endl; + if (!status) std::cerr << RED << "Test Failed: " << test << std::endl; + std::cerr << DEFAULT; + passed = passed && status; + if (!passed) + break; + } - std::cerr << test << std::endl; - RAM ram; - Simulator simulator; - simulator.attach_ram(&ram); - simulator.load_ihex(test); - simulator.run(); +// char* test = argv[2]; + +// std::cerr << test << std::endl; + +// RAM ram; +// Simulator simulator; +// simulator.attach_ram(&ram); +// simulator.load_ihex(test); +// simulator.run(); return 0; } -} \ No newline at end of file +} From cd29362d108dbb5b5887909d77a43f66f4695549 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Fri, 7 Aug 2020 10:11:54 -0700 Subject: [PATCH 40/94] fixed FPU handshake, optimized writeback's critical path --- driver/tests/dogfood/Memcpy/hw/rtl/_hdr | 603 ---------------- .../dogfood/Memcpy/hw/rtl/cci_hello.json | 18 - .../dogfood/Memcpy/hw/rtl/cci_hello_afu.sv | 653 ------------------ .../Memcpy/hw/rtl/cci_hello_afu_working.sv | 621 ----------------- .../tests/dogfood/Memcpy/hw/rtl/sources.txt | 2 - driver/tests/dogfood/Memcpy/hw/sim/setup_ase | 11 - driver/tests/dogfood/Memcpy/sw/Makefile | 41 -- driver/tests/dogfood/Memcpy/sw/cci_hello.c | 210 ------ .../dogfood/Memcpy/sw/obj/afu_json_info.h | 13 - .../tests/dogfood/Memcpy/sw/obj/cci_hello.o | Bin 5336 -> 0 bytes hw/rtl/VX_commit.v | 14 +- hw/rtl/VX_csr_data.v | 4 +- hw/rtl/VX_define.vh | 19 +- hw/rtl/VX_issue.v | 55 +- hw/rtl/VX_scheduler.v | 52 +- hw/rtl/VX_writeback.v | 164 +++-- hw/rtl/cache/VX_tag_data_access.v | 2 + hw/rtl/fp_cores/VX_fp_fpga.v | 44 +- hw/rtl/fp_cores/VX_fp_noncomp.v | 18 +- hw/rtl/fp_cores/VX_fpnew.v | 18 +- hw/rtl/interfaces/VX_cmt_to_csr_if.v | 2 +- hw/rtl/interfaces/VX_fpu_to_cmt_if.v | 4 +- hw/rtl/libs/VX_index_queue.v | 6 +- hw/simulate/Makefile | 2 +- hw/syn/quartus/project.sdc | 2 +- hw/syn/quartus/timing.tcl | 2 +- 26 files changed, 212 insertions(+), 2368 deletions(-) delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/_hdr delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv delete mode 100644 driver/tests/dogfood/Memcpy/hw/rtl/sources.txt delete mode 100755 driver/tests/dogfood/Memcpy/hw/sim/setup_ase delete mode 100644 driver/tests/dogfood/Memcpy/sw/Makefile delete mode 100644 driver/tests/dogfood/Memcpy/sw/cci_hello.c delete mode 100644 driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h delete mode 100644 driver/tests/dogfood/Memcpy/sw/obj/cci_hello.o diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/_hdr b/driver/tests/dogfood/Memcpy/hw/rtl/_hdr deleted file mode 100644 index 39a1dd9e..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/_hdr +++ /dev/null @@ -1,603 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - - -// Read from the memory locations first and then write to the memory locations - -`include "platform_if.vh" -`include "afu_json_info.vh" - - -module ccip_std_afu - ( - // CCI-P Clocks and Resets - input logic pClk, // 400MHz - CCI-P clock domain. Primary interface clock - input logic pClkDiv2, // 200MHz - CCI-P clock domain. - input logic pClkDiv4, // 100MHz - CCI-P clock domain. - input logic uClk_usr, // User clock domain. Refer to clock programming guide ** Currently provides fixed 300MHz clock ** - input logic uClk_usrDiv2, // User clock domain. Half the programmed frequency ** Currently provides fixed 150MHz clock ** - input logic pck_cp2af_softReset, // CCI-P ACTIVE HIGH Soft Reset - input logic [1:0] pck_cp2af_pwrState, // CCI-P AFU Power State - input logic pck_cp2af_error, // CCI-P Protocol Error Detected - - // Interface structures - input t_if_ccip_Rx pck_cp2af_sRx, // CCI-P Rx Port - output t_if_ccip_Tx pck_af2cp_sTx // CCI-P Tx Port - ); - - - // - // Run the entire design at the standard CCI-P frequency (400 MHz). - // - logic clk; - assign clk = pClk; - - logic reset; - assign reset = pck_cp2af_softReset; - - logic [511:0] wr_data; - logic [511:0] rd_data; - - logic get_write_addr; - logic do_update; - logic rd_end_of_list; - logic rd_needed; - logic wr_needed; - logic [15:0] cnt_list_length; - - // ========================================================================= - // - // Register requests. - // - // ========================================================================= - - // - // The incoming pck_cp2af_sRx and outgoing pck_af2cp_sTx must both be - // registered. Here we register pck_cp2af_sRx and assign it to sRx. - // We also assign pck_af2cp_sTx to sTx here but don't register it. - // The code below never uses combinational logic to write sTx. - // - - t_if_ccip_Rx sRx; - always_ff @(posedge clk) - begin - sRx <= pck_cp2af_sRx; - end - - t_if_ccip_Tx sTx; - assign pck_af2cp_sTx = sTx; - - - // ========================================================================= - // - // CSR (MMIO) handling. - // - // ========================================================================= - - // The AFU ID is a unique ID for a given program. Here we generated - // one with the "uuidgen" program and stored it in the AFU's JSON file. - // ASE and synthesis setup scripts automatically invoke afu_json_mgr - // to extract the UUID into afu_json_info.vh. - logic [127:0] afu_id = `AFU_ACCEL_UUID; - - // - // A valid AFU must implement a device feature list, starting at MMIO - // address 0. Every entry in the feature list begins with 5 64-bit - // words: a device feature header, two AFU UUID words and two reserved - // words. - // - - // Is a CSR read request active this cycle? - logic is_csr_read; - assign is_csr_read = sRx.c0.mmioRdValid; - - // Is a CSR write request active this cycle? - logic is_csr_write; - assign is_csr_write = sRx.c0.mmioWrValid; - - // The MMIO request header is overlayed on the normal c0 memory read - // response data structure. Cast the c0Rx header to an MMIO request - // header. - t_ccip_c0_ReqMmioHdr mmio_req_hdr; - assign mmio_req_hdr = t_ccip_c0_ReqMmioHdr'(sRx.c0.hdr); - - - // - // Implement the device feature list by responding to MMIO reads. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c2.mmioRdValid <= 1'b0; - end - else - begin - // Always respond with something for every read request - sTx.c2.mmioRdValid <= is_csr_read; - - // The unique transaction ID matches responses to requests - sTx.c2.hdr.tid <= mmio_req_hdr.tid; - - // Addresses are of 32-bit objects in MMIO space. Addresses - // of 64-bit objects are thus multiples of 2. - case (mmio_req_hdr.address) - 0: // AFU DFH (device feature header) - begin - // Here we define a trivial feature list. In this - // example, our AFU is the only entry in this list. - sTx.c2.data <= t_ccip_mmioData'(0); - // Feature type is AFU - sTx.c2.data[63:60] <= 4'h1; - // End of list (last entry in list) - sTx.c2.data[40] <= 1'b1; - end - - // AFU_ID_L - 2: sTx.c2.data <= afu_id[63:0]; - - // AFU_ID_H - 4: sTx.c2.data <= afu_id[127:64]; - - // DFH_RSVD0 - 6: sTx.c2.data <= t_ccip_mmioData'(0); - - // DFH_RSVD1 - 8: sTx.c2.data <= t_ccip_mmioData'(0); - - default: sTx.c2.data <= t_ccip_mmioData'(0); - endcase - end - end - - - // - // CSR write handling. Host software must tell the AFU the memory address - // to which it should be writing. The address is set by writing a CSR. - // - - // We use MMIO address 0 to set the memory address. The read and - // write MMIO spaces are logically separate so we are free to use - // whatever we like. This may not be good practice for cleanly - // organizing the MMIO address space, but it is legal. - logic is_mem_addr_csr_write; - assign is_mem_addr_csr_write = get_write_addr && is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address to which this AFU will write. - t_ccip_clAddr write_mem_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - get_write_addr <= 1'b1; - end - else if (is_mem_addr_csr_write) - begin - write_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - get_write_addr <= 1'b0; - end - end - - - // We use MMIO address 0 to set the memory address for reading data. - logic is_mem_addr_csr_read; - assign is_mem_addr_csr_read = !get_write_addr && is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address from which this AFU will read. - logic start_read; - t_ccip_clAddr read_mem_addr; - - //logic start_traversal = 'b0; - //t_ccip_clAddr start_traversal_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_read <= 1'b0; - end - else if (is_mem_addr_csr_read) - begin - read_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_read <= 'b1; - end - end - - - // ========================================================================= - // - // Main AFU logic - // - // ========================================================================= - - // - // States in our simple example. - // - //typedef enum logic [0:0] - typedef enum logic [1:0] - { - STATE_IDLE, - STATE_READ, - STATE_UPDATE, - STATE_WRITE - } - t_state; - - t_state state; - - // - // State machine - // - always_ff @(posedge clk) - begin - if (reset) - begin - state <= STATE_IDLE; - rd_end_of_list <= 1'b0; - end - else - begin - case (state) - STATE_IDLE: - begin - // Traversal begins when CSR 1 is written - if (start_read) - begin - state <= STATE_READ; - $display("AFU starting traversal at 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - STATE_READ: - begin - if (rd_needed) - begin - // Read data from the address and update address - state <= STATE_UPDATE; - start_read <= 'b0; - $display("AFU reading data and pointing to next read address..."); - end - end - - STATE_UPDATE: - begin - // Update the read value to be written back - if (do_update) - begin - state <= STATE_WRITE; - $display("AFU performing comutations on the read values..."); - end - end - - STATE_WRITE: - begin - // Write the updated value to the address - // Point to new address after that - // if done then point to IDLE; else read new values - if (rd_end_of_list) - begin - state <= STATE_IDLE; - $display("AFU done..."); - end - else - begin - if (wr_needed) - begin - state <= STATE_READ; - $display("AFU reading again from read address..."); - end - end - end - endcase - end - end - - - // ========================================================================= - // - // Read logic. - // - // ========================================================================= - - // - // READ REQUEST - // - - // Did a write response just arrive - logic addr_next_valid; - - // Next read address - t_ccip_clAddr addr_next; - - always_ff @(posedge clk) - begin - // Next read address is valid when we have got the write response back - // and channel is not full - //addr_next_valid <= sRx.c0TxAlmFull; - addr_next_valid <= sRx.c1.rspValid; - - // Next address is current address plus address length - // Apurve - //addr_next <= addr_next + addr_size; - addr_next <= addr_next + 0; - - // End of list reached if we have read 10 times - rd_end_of_list <= (cnt_list_length == 'h10); - end - - // - // Since back pressure may prevent an immediate read request, we must - // record whether a read is needed and hold it until the request can - // be sent to the FIU. - // - t_ccip_clAddr rd_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - rd_needed <= 1'b0; - end - else - begin - // If reads are allowed this cycle then we can safely clear - // any previously requested reads. This simple AFU has only - // one read in flight at a time since it is walking a pointer - // chain. - if (rd_needed) - begin - rd_needed <= sRx.c0TxAlmFull; - end - else - begin - // Need a read under two conditions: - // - Starting a new walk - // - A read response just arrived from a line containing - // a next pointer. - rd_needed <= (start_read || (addr_next_valid && ! rd_end_of_list)); - rd_addr <= (start_read ? read_mem_addr : addr_next); - end - end - end - - // - // Emit read requests to the FIU. - // - - // Read header defines the request to the FIU - t_cci_c0_ReqMemHdr rd_hdr; - - always_comb - begin - rd_hdr = t_cci_c0_ReqMemHdr'(0); - - // Read request type - rd_hdr.req_type = eREQ_RDLINE_I; - // Virtual address (MPF virtual addressing is enabled) - rd_hdr.address = rd_addr; - // Let the FIU pick the channel - rd_hdr.vc_sel = eVC_VA; - // Read 4 lines (the size of an entry in the list) - rd_hdr.cl_len = eCL_LEN_4; - end - - // Send read requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c0.valid <= 1'b0; - cnt_list_length <= 0; - end - else - begin - // Generate a read request when needed and the FIU isn't full - sTx.c0.valid <= (rd_needed && ! sRx.c0TxAlmFull); - sTx.c0.hdr <= rd_hdr; - - if (rd_needed && ! sRx.c0TxAlmFull) - begin - cnt_list_length <= cnt_list_length + 1; - //$display(" Reading from VA 0x%x", clAddrToByteAddr(rd_addr)); - $display("Incrementing read count..."); - end - end - end - - // - // READ RESPONSE HANDLING - // - - // - // Receive data (read responses). - // - always_ff @(posedge clk) - begin - if (reset) - begin - do_update <= 1'b0; - end - else - begin - if (state == STATE_READ) - begin - rd_data <= sRx.c0.data; - do_update <= 1'b1; - end - if (state == STATE_UPDATE) - begin - // Update the read data and put it in the write data to be written - wr_data <= rd_data + 1; - do_update <= 1'b0; - end - end - end - - - // ========================================================================= - // - // Write logic. - // - // ========================================================================= - - - // - // WRITE REQUEST - // - - // Did a write response just arrive - logic wr_addr_next_valid; - - // Next write address - t_ccip_clAddr wr_addr_next; - - always_ff @(posedge clk) - begin - // Next write address is valid when we have got the read response back - // and channel is not full - //wr_addr_next_valid <= sRx.c1TxAlmFull; - wr_addr_next_valid <= sRx.c0.rspValid; - - // Next address is current address plus address length - // Apurve - //wr_addr_next <= wr_addr_next + addr_size; - wr_addr_next <= wr_addr_next + 0; - end - - // - // Since back pressure may prevent an immediate write request, we must - // record whether a write is needed and hold it until the request can - // be sent to the FIU. - // - t_ccip_clAddr wr_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - wr_needed <= 1'b0; - end - else - begin - // If writes are allowed this cycle then we can safely clear - // any previously requested writes. This simple AFU has only - // one write in flight at a time since it is walking a pointer - // chain. - if (wr_needed) - begin - wr_needed <= sRx.c1TxAlmFull; - end - else - begin - // Need a write under two conditions: - // - Starting a new walk - // - A write response just arrived from a line containing - // a next pointer. - //wr_needed <= (start_write || (wr_addr_next_valid && ! rd_end_of_list)); - wr_needed <= (start_write || wr_addr_next_valid); - wr_addr <= (start_write ? write_mem_addr : wr_addr_next); - end - end - end - - // - // Emit write requests to the FIU. - // - - // Write header defines the request to the FIU - t_ccip_c1_ReqMemHdr wr_hdr; - - always_comb - begin - wr_hdr = t_cci_c1_ReqMemHdr'(0); - - // Write request type - wr_hdr.req_type = eREQ_RDLINE_I; - // Virtual address (MPF virtual addressing is enabled) - wr_hdr.address = wr_addr; - // Let the FIU pick the channel - wr_hdr.vc_sel = eVC_VA; - // Write 4 lines (the size of an entry in the list) - wr_hdr.cl_len = eCL_LEN_4; - // Start of packet is true (single line write) - wr_hdr.sop = 1'b1; - end - - // Send write requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c1.valid <= 1'b0; - //cnt_list_length <= 0; - end - else - begin - // Generate a write request when needed and the FIU isn't full - sTx.c1.valid <= (wr_needed && ! sRx.c1TxAlmFull); - sTx.c1.hdr <= wr_hdr; - sTx.c1.data = t_ccip_clData'(wr_data); - - //if (wr_needed && ! sRx.c1TxAlmFull) - //begin - // cnt_list_length <= cnt_list_length + 1; - // //$display(" Writing from VA 0x%x", clAddrToByteAddr(rd_addr)); - // $display("Incrementing write count..."); - //end - end - end - - // - // WRITE RESPONSE HANDLING - // - - // Apurve: Check if a signal is to be sent to read to start reading in case - // write response does not work - // - // Send data (write requests). - // - //always_ff @(posedge clk) - //begin - // if (state == STATE_WRITE) - // begin - // rd_data <= sRx.c0.data; - // end - // if (state == STATE_UPDATE) - // begin - // // Update the write data and put it in the write data to be written - // wr_data <= rd_data + 1; - // end - //end - -endmodule diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json b/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json deleted file mode 100644 index 85d7a529..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "afu-image": { - "power": 0, - "afu-top-interface": - { - "name": "ccip_std_afu" - }, - "accelerator-clusters": - [ - { - "name": "cci_hello", - "total-contexts": 1, - "accelerator-type-uuid": "c6aa954a-9b91-4a37-abc1-1d9f0709dcc3" - } - ] - } -} diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv b/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv deleted file mode 100644 index eaee72da..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu.sv +++ /dev/null @@ -1,653 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - - -// Read from the memory locations first and then write to the memory locations - -`include "platform_if.vh" -`include "afu_json_info.vh" - - -module ccip_std_afu - ( - // CCI-P Clocks and Resets - input logic pClk, // 400MHz - CCI-P clock domain. Primary interface clock - input logic pClkDiv2, // 200MHz - CCI-P clock domain. - input logic pClkDiv4, // 100MHz - CCI-P clock domain. - input logic uClk_usr, // User clock domain. Refer to clock programming guide ** Currently provides fixed 300MHz clock ** - input logic uClk_usrDiv2, // User clock domain. Half the programmed frequency ** Currently provides fixed 150MHz clock ** - input logic pck_cp2af_softReset, // CCI-P ACTIVE HIGH Soft Reset - input logic [1:0] pck_cp2af_pwrState, // CCI-P AFU Power State - input logic pck_cp2af_error, // CCI-P Protocol Error Detected - - // Interface structures - input t_if_ccip_Rx pck_cp2af_sRx, // CCI-P Rx Port - output t_if_ccip_Tx pck_af2cp_sTx // CCI-P Tx Port - ); - - - // - // Run the entire design at the standard CCI-P frequency (400 MHz). - // - logic clk; - assign clk = pClk; - - logic reset; - assign reset = pck_cp2af_softReset; - - logic [511:0] wr_data; - logic [511:0] rd_data; - - logic do_update; - logic start_read; - logic start_write; - logic wr_addr_next_valid; - logic addr_next_valid; - logic rd_end_of_list; - logic rd_needed; - logic wr_needed; - logic read_req; - logic write_req; - logic [15:0] cnt_list_length; - t_ccip_clAddr rd_addr; - t_ccip_clAddr wr_addr; - t_ccip_clAddr addr_next; - t_ccip_clAddr wr_addr_next; - - // ========================================================================= - // - // Register requests. - // - // ========================================================================= - - // - // The incoming pck_cp2af_sRx and outgoing pck_af2cp_sTx must both be - // registered. Here we register pck_cp2af_sRx and assign it to sRx. - // We also assign pck_af2cp_sTx to sTx here but don't register it. - // The code below never uses combinational logic to write sTx. - // - - t_if_ccip_Rx sRx; - always_ff @(posedge clk) - begin - sRx <= pck_cp2af_sRx; - end - - t_if_ccip_Tx sTx; - assign pck_af2cp_sTx = sTx; - - - // ========================================================================= - // - // CSR (MMIO) handling. - // - // ========================================================================= - - // The AFU ID is a unique ID for a given program. Here we generated - // one with the "uuidgen" program and stored it in the AFU's JSON file. - // ASE and synthesis setup scripts automatically invoke afu_json_mgr - // to extract the UUID into afu_json_info.vh. - logic [127:0] afu_id = `AFU_ACCEL_UUID; - - // - // A valid AFU must implement a device feature list, starting at MMIO - // address 0. Every entry in the feature list begins with 5 64-bit - // words: a device feature header, two AFU UUID words and two reserved - // words. - // - - // Is a CSR read request active this cycle? - logic is_csr_read; - assign is_csr_read = sRx.c0.mmioRdValid; - - // Is a CSR write request active this cycle? - logic is_csr_write; - assign is_csr_write = sRx.c0.mmioWrValid; - - // The MMIO request header is overlayed on the normal c0 memory read - // response data structure. Cast the c0Rx header to an MMIO request - // header. - t_ccip_c0_ReqMmioHdr mmio_req_hdr; - assign mmio_req_hdr = t_ccip_c0_ReqMmioHdr'(sRx.c0.hdr); - - - // - // Implement the device feature list by responding to MMIO reads. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c2.mmioRdValid <= 1'b0; - end - else - begin - // Always respond with something for every read request - sTx.c2.mmioRdValid <= is_csr_read; - - // The unique transaction ID matches responses to requests - sTx.c2.hdr.tid <= mmio_req_hdr.tid; - - // Addresses are of 32-bit objects in MMIO space. Addresses - // of 64-bit objects are thus multiples of 2. - case (mmio_req_hdr.address) - 0: // AFU DFH (device feature header) - begin - // Here we define a trivial feature list. In this - // example, our AFU is the only entry in this list. - sTx.c2.data <= t_ccip_mmioData'(0); - // Feature type is AFU - sTx.c2.data[63:60] <= 4'h1; - // End of list (last entry in list) - sTx.c2.data[40] <= 1'b1; - end - - // AFU_ID_L - 2: sTx.c2.data <= afu_id[63:0]; - - // AFU_ID_H - 4: sTx.c2.data <= afu_id[127:64]; - - // DFH_RSVD0 - 6: sTx.c2.data <= t_ccip_mmioData'(0); - - // DFH_RSVD1 - 8: sTx.c2.data <= t_ccip_mmioData'(0); - - // Updated by apurve to check fpgaReadMMIO - 10: sTx.c2.data <= t_ccip_mmioData'(start_read); - - default: sTx.c2.data <= t_ccip_mmioData'(0); - endcase - end - end - - - // - // CSR write handling. Host software must tell the AFU the memory address - // to which it should be writing. The address is set by writing a CSR. - // - - // We use MMIO address 0 to set the memory address. The read and - // write MMIO spaces are logically separate so we are free to use - // whatever we like. This may not be good practice for cleanly - // organizing the MMIO address space, but it is legal. - logic is_mem_addr_csr_write; - assign is_mem_addr_csr_write = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address to which this AFU will write. - t_ccip_clAddr write_mem_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_write <= 1'b0; - end - else if (is_mem_addr_csr_write) - begin - write_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_write <= 1'b1; - //$display("Write mem address is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - - - // We use MMIO address 8 to set the memory address for reading data. - logic is_mem_addr_csr_read; - assign is_mem_addr_csr_read = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(2)); - - // Memory address from which this AFU will read. - t_ccip_clAddr read_mem_addr; - - //logic start_traversal = 'b0; - //t_ccip_clAddr start_traversal_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_read <= 1'b0; - end - else if (is_mem_addr_csr_read) - begin - read_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_read <= 1'b1; - //$display("Read mem address is 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - - // ========================================================================= - // - // Main AFU logic - // - // ========================================================================= - - // - // States in our simple example. - // - //typedef enum logic [0:0] - typedef enum logic [1:0] - { - STATE_IDLE, - STATE_READ, - STATE_UPDATE, - STATE_WRITE - } - t_state; - - t_state state; - - // - // State machine - // - always_ff @(posedge clk) - begin - if (reset) - begin - state <= STATE_IDLE; - rd_end_of_list <= 1'b0; - end - else - begin - case (state) - STATE_IDLE: - begin - // Traversal begins when CSR 1 is written - if (start_read) - begin - state <= STATE_READ; - $display("AFU starting traversal at 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - STATE_READ: - begin - $display("AFU in READ..."); - $display("do_update is %d...",do_update); - $display("addr_next_valid is %d...",addr_next_valid); - $display("rd_needed is %d...",rd_needed); - if (!rd_needed && do_update) - begin - state <= STATE_UPDATE; - $display("AFU moving to UPDATE..."); - end - end - - STATE_UPDATE: - begin - // Update the read value to be written back - $display("AFU in UPDATE..."); - if (!do_update) - begin - state <= STATE_WRITE; - wr_needed <= 1'b1; - $display("AFU moving to WRITE..."); - end - end - - STATE_WRITE: - begin - // Write the updated value to the address - // Point to new address after that - // if done then point to IDLE; else read new values - $display("AFU in WRITE..."); - if (rd_end_of_list) - begin - state <= STATE_IDLE; - $display("AFU done..."); - end - else if (!wr_needed) - begin - state <= STATE_READ; - $display("AFU moving to READ from WRITE..."); - start_write <= 1'b0; - write_req <= 1'b0; - end - end - endcase - end - end - - - // ========================================================================= - // - // Read logic. - // - // ========================================================================= - - // - // READ REQUEST - // - - // Did a write response just arrive - - // Next read address - - always_ff @(posedge clk) - begin - // Next read address is valid when we have got the write response back - if (sRx.c1.rspValid) - begin - addr_next_valid <= sRx.c1.rspValid; - - //if (state == STATE_READ && !rd_needed) - //begin - // Apurve: Next address is current address plus address length - //addr_next <= addr_next + addr_size; - addr_next <= (addr_next_valid ? rd_addr + 0 : rd_addr); - - // End of list reached if we have read 5 times - rd_end_of_list <= (cnt_list_length == 'h5); - //end - end - end - - // - // Since back pressure may prevent an immediate read request, we must - // record whether a read is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - rd_needed <= 1'b0; - end - else - begin - // If reads are allowed this cycle then we can safely clear - // any previously requested reads. This simple AFU has only - // one read in flight at a time since it is walking a pointer - // chain. - if (rd_needed) - begin - //rd_needed <= sRx.c0TxAlmFull; - //rd_needed <= (!sRx.c0TxAlmFull && !sRx.c0.rspValid); - rd_needed <= !sRx.c0.rspValid; - end - else if (state == STATE_READ) - begin - // Need a read under two conditions: - // - Starting a new walk - // - A read response just arrived from a line containing - // a next pointer. - rd_needed <= (start_read || (!sRx.c0TxAlmFull && (addr_next_valid && ! rd_end_of_list))); - rd_addr <= (start_read ? read_mem_addr : addr_next); - //$display("rd_addr is 0x%x", t_ccip_clAddr'(rd_addr)); - //$display("read mem addr is 0x%x", t_ccip_clAddr'(read_mem_addr)); - //$display("start read is %d", start_read); - end - end - end - - // - // Emit read requests to the FIU. - // - - // Read header defines the request to the FIU - t_ccip_c0_ReqMemHdr rd_hdr; - - always_comb - begin - rd_hdr = t_ccip_c0_ReqMemHdr'(0); - - // Read request type (No intention to cache) - //rd_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - rd_hdr.address = rd_addr; - - // Read over channel VA - //rd_hdr.vc_sel = 2'h0; - - // Read one cache line (64 bytes) - //rd_hdr.cl_len = 2'h0; - end - - // Send read requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c0.valid <= 1'b0; - cnt_list_length <= 0; - read_req <= 1'b0; - end - else - begin - // Generate a read request when needed and the FIU isn't full - if (state == STATE_READ) - begin - sTx.c0.valid <= (rd_needed && !sRx.c0TxAlmFull && !read_req); - - if (rd_needed && !sRx.c0TxAlmFull && !read_req) - begin - sTx.c0.hdr <= rd_hdr; - cnt_list_length <= cnt_list_length + 1; - read_req <= 1'b1; - $display("Incrementing read count...%d",cnt_list_length); - $display("Read address is 0x%x...",rd_hdr.address); - addr_next_valid <= 1'b0; - // Apurve: Add something to stop read once this section has been accessed - //rd_needed <= 1'b0; - end - end - end - end - - // - // READ RESPONSE HANDLING - // - - // - // Receive data (read responses). - // - always_ff @(posedge clk) - begin - if (reset) - begin - do_update <= 1'b0; - end - else - begin - if (!do_update && sRx.c0.rspValid) - begin - rd_data <= sRx.c0.data; - do_update <= 1'b1; - $display("rd data is %d...",rd_data); - end - - if ((state == STATE_UPDATE) && (do_update == 1'b1)) - begin - // Update the read data and put it in the write data to be written - wr_data <= rd_data + 2; - do_update <= 1'b0; - read_req <= 1'b0; - $display("write data is %d...",wr_data); - - // First read done. Next reads should be from the updated addresses - start_read <= 1'b0; - end - end - end - - - // ========================================================================= - // - // Write logic. - // - // ========================================================================= - - - // - // WRITE REQUEST - // - - // Did a write response just arrive - - // Next write address - - always_ff @(posedge clk) - begin - if (sRx.c0.rspValid) - begin - // Next write address is valid when we have got the read response back - wr_addr_next_valid <= sRx.c0.rspValid; - //wr_addr_next_valid <= (!start_write && sRx.c0.rspValid); - - //if (state == STATE_WRITE && !wr_needed) - //begin - // Apurve: Next address is current address plus address length - //wr_addr_next <= wr_addr + 0; - wr_addr_next <= (wr_addr_next_valid ? wr_addr + 0 : wr_addr); - //end - end - end - - // - // Since back pressure may prevent an immediate write request, we must - // record whether a write is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - wr_needed <= 1'b0; - end - else - begin - // If writes are allowed this cycle then we can safely clear - // any previously requested writes. This simple AFU has only - // one write in flight at a time since it is walking a pointer - // chain. - if (wr_needed) - begin - //wr_needed <= sRx.c1TxAlmFull; - //wr_needed <= (!sRx.c1TxAlmFull && !sRx.c1.rspValid); - wr_needed <= !sRx.c1.rspValid; - end - else - begin - // Need a write under two conditions: - // - Starting a new walk - // - A write response just arrived from a line containing - // a next pointer. - wr_needed <= (start_write || (!sRx.c1TxAlmFull && wr_addr_next_valid)); - wr_addr <= (start_write ? write_mem_addr : wr_addr_next); - //$display("Write mem address later is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - end - - // - // Emit write requests to the FIU. - // - - // Write header defines the request to the FIU - t_ccip_c1_ReqMemHdr wr_hdr; - - always_comb - begin - wr_hdr = t_ccip_c1_ReqMemHdr'(0); - - // Write request type - //wr_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - wr_hdr.address = wr_addr; - - // Let the FIU pick the channel - //wr_hdr.vc_sel = 2'h2; - - // Write 1 cache line (64 bytes) - //wr_hdr.cl_len = 2'h0; - - // Start of packet is true (single line write) - wr_hdr.sop = 1'b1; - end - - // Send write requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c1.valid <= 1'b0; - write_req <= 1'b0; - end - else - begin - // Generate a write request when needed and the FIU isn't full - if (state == STATE_WRITE) - begin - sTx.c1.valid <= (wr_needed && !sRx.c1TxAlmFull && !write_req); - if (wr_needed && !sRx.c1TxAlmFull && !write_req) - begin - sTx.c1.hdr <= wr_hdr; - sTx.c1.data <= t_ccip_clData'(wr_data); - write_req <= 1'b1; - wr_addr_next_valid <= 1'b0; - $display("Write address is 0x%x...", wr_hdr.address); - end - end - end - end - - - // - // WRITE RESPONSE HANDLING - // - - // Apurve: Check if a signal is to be sent to read to start reading in case - // write response does not work - // - // Send data (write requests). - // - //always_ff @(posedge clk) - //begin - // if (state == STATE_WRITE) - // begin - // rd_data <= sRx.c0.data; - // end - // if (state == STATE_UPDATE) - // begin - // // Update the write data and put it in the write data to be written - // wr_data <= rd_data + 1; - // end - //end - -endmodule diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv b/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv deleted file mode 100644 index 144b430e..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/cci_hello_afu_working.sv +++ /dev/null @@ -1,621 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - - -// Read from the memory locations first and then write to the memory locations - -`include "platform_if.vh" -`include "afu_json_info.vh" - - -module ccip_std_afu - ( - // CCI-P Clocks and Resets - input logic pClk, // 400MHz - CCI-P clock domain. Primary interface clock - input logic pClkDiv2, // 200MHz - CCI-P clock domain. - input logic pClkDiv4, // 100MHz - CCI-P clock domain. - input logic uClk_usr, // User clock domain. Refer to clock programming guide ** Currently provides fixed 300MHz clock ** - input logic uClk_usrDiv2, // User clock domain. Half the programmed frequency ** Currently provides fixed 150MHz clock ** - input logic pck_cp2af_softReset, // CCI-P ACTIVE HIGH Soft Reset - input logic [1:0] pck_cp2af_pwrState, // CCI-P AFU Power State - input logic pck_cp2af_error, // CCI-P Protocol Error Detected - - // Interface structures - input t_if_ccip_Rx pck_cp2af_sRx, // CCI-P Rx Port - output t_if_ccip_Tx pck_af2cp_sTx // CCI-P Tx Port - ); - - - // - // Run the entire design at the standard CCI-P frequency (400 MHz). - // - logic clk; - assign clk = pClk; - - logic reset; - assign reset = pck_cp2af_softReset; - - logic [511:0] wr_data; - logic [511:0] rd_data; - - logic do_update; - logic start_read; - logic start_write; - logic wr_addr_next_valid; - logic addr_next_valid; - logic rd_end_of_list; - logic rd_needed; - logic wr_needed; - logic [15:0] cnt_list_length; - t_ccip_clAddr rd_addr; - t_ccip_clAddr wr_addr; - t_ccip_clAddr addr_next; - t_ccip_clAddr wr_addr_next; - - // ========================================================================= - // - // Register requests. - // - // ========================================================================= - - // - // The incoming pck_cp2af_sRx and outgoing pck_af2cp_sTx must both be - // registered. Here we register pck_cp2af_sRx and assign it to sRx. - // We also assign pck_af2cp_sTx to sTx here but don't register it. - // The code below never uses combinational logic to write sTx. - // - - t_if_ccip_Rx sRx; - always_ff @(posedge clk) - begin - sRx <= pck_cp2af_sRx; - end - - t_if_ccip_Tx sTx; - assign pck_af2cp_sTx = sTx; - - - // ========================================================================= - // - // CSR (MMIO) handling. - // - // ========================================================================= - - // The AFU ID is a unique ID for a given program. Here we generated - // one with the "uuidgen" program and stored it in the AFU's JSON file. - // ASE and synthesis setup scripts automatically invoke afu_json_mgr - // to extract the UUID into afu_json_info.vh. - logic [127:0] afu_id = `AFU_ACCEL_UUID; - - // - // A valid AFU must implement a device feature list, starting at MMIO - // address 0. Every entry in the feature list begins with 5 64-bit - // words: a device feature header, two AFU UUID words and two reserved - // words. - // - - // Is a CSR read request active this cycle? - logic is_csr_read; - assign is_csr_read = sRx.c0.mmioRdValid; - - // Is a CSR write request active this cycle? - logic is_csr_write; - assign is_csr_write = sRx.c0.mmioWrValid; - - // The MMIO request header is overlayed on the normal c0 memory read - // response data structure. Cast the c0Rx header to an MMIO request - // header. - t_ccip_c0_ReqMmioHdr mmio_req_hdr; - assign mmio_req_hdr = t_ccip_c0_ReqMmioHdr'(sRx.c0.hdr); - - - // - // Implement the device feature list by responding to MMIO reads. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c2.mmioRdValid <= 1'b0; - end - else - begin - // Always respond with something for every read request - sTx.c2.mmioRdValid <= is_csr_read; - - // The unique transaction ID matches responses to requests - sTx.c2.hdr.tid <= mmio_req_hdr.tid; - - // Addresses are of 32-bit objects in MMIO space. Addresses - // of 64-bit objects are thus multiples of 2. - case (mmio_req_hdr.address) - 0: // AFU DFH (device feature header) - begin - // Here we define a trivial feature list. In this - // example, our AFU is the only entry in this list. - sTx.c2.data <= t_ccip_mmioData'(0); - // Feature type is AFU - sTx.c2.data[63:60] <= 4'h1; - // End of list (last entry in list) - sTx.c2.data[40] <= 1'b1; - end - - // AFU_ID_L - 2: sTx.c2.data <= afu_id[63:0]; - - // AFU_ID_H - 4: sTx.c2.data <= afu_id[127:64]; - - // DFH_RSVD0 - 6: sTx.c2.data <= t_ccip_mmioData'(0); - - // DFH_RSVD1 - 8: sTx.c2.data <= t_ccip_mmioData'(0); - - // Updated by apurve to check fpgaReadMMIO - 10: sTx.c2.data <= t_ccip_mmioData'(start_read); - - default: sTx.c2.data <= t_ccip_mmioData'(0); - endcase - end - end - - - // - // CSR write handling. Host software must tell the AFU the memory address - // to which it should be writing. The address is set by writing a CSR. - // - - // We use MMIO address 0 to set the memory address. The read and - // write MMIO spaces are logically separate so we are free to use - // whatever we like. This may not be good practice for cleanly - // organizing the MMIO address space, but it is legal. - logic is_mem_addr_csr_write; - assign is_mem_addr_csr_write = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(0)); - - // Memory address to which this AFU will write. - t_ccip_clAddr write_mem_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_write <= 1'b0; - end - else if (is_mem_addr_csr_write) - begin - write_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_write <= 1'b1; - //$display("Write mem address is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - - - // We use MMIO address 8 to set the memory address for reading data. - logic is_mem_addr_csr_read; - assign is_mem_addr_csr_read = is_csr_write && - (mmio_req_hdr.address == t_ccip_mmioAddr'(2)); - - // Memory address from which this AFU will read. - t_ccip_clAddr read_mem_addr; - - //logic start_traversal = 'b0; - //t_ccip_clAddr start_traversal_addr; - - always_ff @(posedge clk) - begin - if (reset) - begin - start_read <= 1'b0; - end - else if (is_mem_addr_csr_read) - begin - read_mem_addr <= t_ccip_clAddr'(sRx.c0.data); - start_read <= 1'b1; - //$display("Read mem address is 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - - // ========================================================================= - // - // Main AFU logic - // - // ========================================================================= - - // - // States in our simple example. - // - //typedef enum logic [0:0] - typedef enum logic [1:0] - { - STATE_IDLE, - STATE_READ, - STATE_UPDATE, - STATE_WRITE - } - t_state; - - t_state state; - - // - // State machine - // - always_ff @(posedge clk) - begin - if (reset) - begin - state <= STATE_IDLE; - rd_end_of_list <= 1'b0; - end - else - begin - case (state) - STATE_IDLE: - begin - // Traversal begins when CSR 1 is written - if (start_read) - begin - state <= STATE_READ; - $display("AFU starting traversal at 0x%x", t_ccip_clAddr'(read_mem_addr)); - end - end - - STATE_READ: - begin - $display("AFU in READ..."); - if (!rd_needed && do_update) - begin - state <= STATE_UPDATE; - $display("AFU moving to UPDATE..."); - end - end - - STATE_UPDATE: - begin - // Update the read value to be written back - $display("AFU in UPDATE..."); - if (!do_update) - begin - state <= STATE_WRITE; - wr_needed <= 1'b1; - $display("AFU moving to WRITE..."); - end - end - - STATE_WRITE: - begin - // Write the updated value to the address - // Point to new address after that - // if done then point to IDLE; else read new values - $display("AFU in WRITE..."); - if (rd_end_of_list) - begin - state <= STATE_IDLE; - $display("AFU done..."); - end - else if (!wr_needed) - begin - state <= STATE_READ; - $display("AFU moving to READ from WRITE..."); - start_write <= 1'b0; - end - end - endcase - end - end - - - // ========================================================================= - // - // Read logic. - // - // ========================================================================= - - // - // READ REQUEST - // - - // Did a write response just arrive - - // Next read address - - always_ff @(posedge clk) - begin - // Next read address is valid when we have got the write response back - addr_next_valid <= sRx.c1.rspValid; - - // Apurve: Next address is current address plus address length - //addr_next <= addr_next + addr_size; - addr_next <= rd_addr + 0; - - // End of list reached if we have read 5 times - rd_end_of_list <= (cnt_list_length == 'h5); - end - - // - // Since back pressure may prevent an immediate read request, we must - // record whether a read is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - rd_needed <= 1'b0; - end - else - begin - // If reads are allowed this cycle then we can safely clear - // any previously requested reads. This simple AFU has only - // one read in flight at a time since it is walking a pointer - // chain. - if (rd_needed) - begin - rd_needed <= sRx.c0TxAlmFull; - end - else - begin - // Need a read under two conditions: - // - Starting a new walk - // - A read response just arrived from a line containing - // a next pointer. - rd_needed <= (start_read || (!sRx.c0TxAlmFull && (addr_next_valid && ! rd_end_of_list))); - rd_addr <= (start_read ? read_mem_addr : addr_next); - //$display("rd_addr is 0x%x", t_ccip_clAddr'(rd_addr)); - //$display("read mem addr is 0x%x", t_ccip_clAddr'(read_mem_addr)); - //$display("start read is %d", start_read); - end - end - end - - // - // Emit read requests to the FIU. - // - - // Read header defines the request to the FIU - t_ccip_c0_ReqMemHdr rd_hdr; - - always_comb - begin - rd_hdr = t_ccip_c0_ReqMemHdr'(0); - - // Read request type (No intention to cache) - //rd_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - rd_hdr.address = rd_addr; - - // Read over channel VA - //rd_hdr.vc_sel = 2'h0; - - // Read one cache line (64 bytes) - //rd_hdr.cl_len = 2'h0; - end - - // Send read requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c0.valid <= 1'b0; - cnt_list_length <= 0; - end - else - begin - // Generate a read request when needed and the FIU isn't full - if (state == STATE_READ) - begin - sTx.c0.valid <= (rd_needed && !sRx.c0TxAlmFull); - - if (rd_needed && !sRx.c0TxAlmFull) - begin - sTx.c0.hdr <= rd_hdr; - cnt_list_length <= cnt_list_length + 1; - $display("Incrementing read count...%d",cnt_list_length); - $display("Read address is 0x%x...",rd_hdr.address); - // Apurve: Add something to stop read once this section has been accessed - end - end - end - end - - // - // READ RESPONSE HANDLING - // - - // - // Receive data (read responses). - // - always_ff @(posedge clk) - begin - if (reset) - begin - do_update <= 1'b0; - end - else - begin - if (sRx.c0.rspValid) - begin - rd_data <= sRx.c0.data; - do_update <= 1'b1; - //$display("rd data is %d...",rd_data); - end - - if (state == STATE_UPDATE) - begin - // Update the read data and put it in the write data to be written - wr_data <= rd_data + 2; - do_update <= 1'b0; - $display("write data is %d...",wr_data); - - // First read done. Next reads should be from the updated addresses - start_read <= 1'b0; - end - end - end - - - // ========================================================================= - // - // Write logic. - // - // ========================================================================= - - - // - // WRITE REQUEST - // - - // Did a write response just arrive - - // Next write address - - always_ff @(posedge clk) - begin - // Next write address is valid when we have got the read response back - wr_addr_next_valid <= sRx.c0.rspValid; - - // Apurve: Next address is current address plus address length - wr_addr_next <= wr_addr + 0; - - end - - // - // Since back pressure may prevent an immediate write request, we must - // record whether a write is needed and hold it until the request can - // be sent to the FIU. - // - - always_ff @(posedge clk) - begin - if (reset) - begin - wr_needed <= 1'b0; - end - else - begin - // If writes are allowed this cycle then we can safely clear - // any previously requested writes. This simple AFU has only - // one write in flight at a time since it is walking a pointer - // chain. - if (wr_needed) - begin - wr_needed <= sRx.c1TxAlmFull; - end - else - begin - // Need a write under two conditions: - // - Starting a new walk - // - A write response just arrived from a line containing - // a next pointer. - wr_needed <= (start_write || (!sRx.c1TxAlmFull && wr_addr_next_valid)); - wr_addr <= (start_write ? write_mem_addr : wr_addr_next); - //$display("Write mem address later is 0x%x", t_ccip_clAddr'(write_mem_addr)); - end - end - end - - // - // Emit write requests to the FIU. - // - - // Write header defines the request to the FIU - t_ccip_c1_ReqMemHdr wr_hdr; - - always_comb - begin - wr_hdr = t_ccip_c1_ReqMemHdr'(0); - - // Write request type - //wr_hdr.req_type = 4'h0; - - // Virtual address (MPF virtual addressing is enabled) - wr_hdr.address = wr_addr; - - // Let the FIU pick the channel - //wr_hdr.vc_sel = 2'h2; - - // Write 1 cache line (64 bytes) - //wr_hdr.cl_len = 2'h0; - - // Start of packet is true (single line write) - wr_hdr.sop = 1'b1; - end - - // Send write requests to the FIU - always_ff @(posedge clk) - begin - if (reset) - begin - sTx.c1.valid <= 1'b0; - end - else - begin - // Generate a write request when needed and the FIU isn't full - if (state == STATE_WRITE) - begin - sTx.c1.valid <= (wr_needed && !sRx.c1TxAlmFull); - if (wr_needed && !sRx.c1TxAlmFull) - begin - sTx.c1.hdr <= wr_hdr; - sTx.c1.data <= t_ccip_clData'(wr_data); - end - end - end - end - - - // - // WRITE RESPONSE HANDLING - // - - // Apurve: Check if a signal is to be sent to read to start reading in case - // write response does not work - // - // Send data (write requests). - // - //always_ff @(posedge clk) - //begin - // if (state == STATE_WRITE) - // begin - // rd_data <= sRx.c0.data; - // end - // if (state == STATE_UPDATE) - // begin - // // Update the write data and put it in the write data to be written - // wr_data <= rd_data + 1; - // end - //end - -endmodule diff --git a/driver/tests/dogfood/Memcpy/hw/rtl/sources.txt b/driver/tests/dogfood/Memcpy/hw/rtl/sources.txt deleted file mode 100644 index 8a73008b..00000000 --- a/driver/tests/dogfood/Memcpy/hw/rtl/sources.txt +++ /dev/null @@ -1,2 +0,0 @@ -cci_hello.json -cci_hello_afu.sv diff --git a/driver/tests/dogfood/Memcpy/hw/sim/setup_ase b/driver/tests/dogfood/Memcpy/hw/sim/setup_ase deleted file mode 100755 index a8414ac0..00000000 --- a/driver/tests/dogfood/Memcpy/hw/sim/setup_ase +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -## -## Setup ASE environment using ../rtl/sources.txt. -## - -# Absolute path to this script -SCRIPT=$(readlink -f "$0") -SCRIPT_PATH=$(dirname "$SCRIPT") - -afu_sim_setup --sources="${SCRIPT_PATH}/../rtl/sources.txt" $@ diff --git a/driver/tests/dogfood/Memcpy/sw/Makefile b/driver/tests/dogfood/Memcpy/sw/Makefile deleted file mode 100644 index f3b66c12..00000000 --- a/driver/tests/dogfood/Memcpy/sw/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -include ../../common/sw/common_include.mk - -# Primary test name -TEST = cci_hello - -# Build directory -OBJDIR = obj -CFLAGS += -I./$(OBJDIR) -CPPFLAGS += -I./$(OBJDIR) - -# Files and folders -SRCS = $(TEST).c -OBJS = $(addprefix $(OBJDIR)/,$(patsubst %.c,%.o,$(SRCS))) - -# Targets (build only $(TEST)_ase by default) -all: $(TEST) $(TEST)_ase - -# AFU info from JSON file, including AFU UUID -AFU_JSON_INFO = $(OBJDIR)/afu_json_info.h - -$(AFU_JSON_INFO): ../hw/rtl/$(TEST).json | objdir - afu_json_mgr json-info --afu-json=$^ --c-hdr=$@ - -$(OBJS): $(AFU_JSON_INFO) - -$(TEST): $(OBJS) - $(CC) -o $@ $^ $(LDFLAGS) $(FPGA_LIBS) - -$(TEST)_ase: $(OBJS) - $(CC) -o $@ $^ $(LDFLAGS) $(ASE_LIBS) - -$(OBJDIR)/%.o: %.c | objdir - $(CC) $(CFLAGS) -c $< -o $@ - -clean: - rm -rf $(TEST) $(TEST)_ase $(OBJDIR) - -objdir: - @mkdir -p $(OBJDIR) - -.PHONY: all clean diff --git a/driver/tests/dogfood/Memcpy/sw/cci_hello.c b/driver/tests/dogfood/Memcpy/sw/cci_hello.c deleted file mode 100644 index f12d95c2..00000000 --- a/driver/tests/dogfood/Memcpy/sw/cci_hello.c +++ /dev/null @@ -1,210 +0,0 @@ -// -// Copyright (c) 2017, Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// Neither the name of the Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -#include -#include -#include -#include -#include -#include - -#include - -// State from the AFU's JSON file, extracted using OPAE's afu_json_mgr script -#include "afu_json_info.h" - -#define CACHELINE_BYTES 64 -#define CL(x) ((x) * CACHELINE_BYTES) - - -// -// Search for an accelerator matching the requested UUID and connect to it. -// -static fpga_handle connect_to_accel(const char *accel_uuid) -{ - fpga_properties filter = NULL; - fpga_guid guid; - fpga_token accel_token; - uint32_t num_matches; - fpga_handle accel_handle; - fpga_result r; - - // Don't print verbose messages in ASE by default - //setenv("ASE_LOG", "0", 0); - - // Set up a filter that will search for an accelerator - fpgaGetProperties(NULL, &filter); - fpgaPropertiesSetObjectType(filter, FPGA_ACCELERATOR); - - // Add the desired UUID to the filter - uuid_parse(accel_uuid, guid); - fpgaPropertiesSetGUID(filter, guid); - - // Do the search across the available FPGA contexts - num_matches = 1; - fpgaEnumerate(&filter, 1, &accel_token, 1, &num_matches); - - // Not needed anymore - fpgaDestroyProperties(&filter); - - if (num_matches < 1) - { - fprintf(stderr, "Accelerator %s not found!\n", accel_uuid); - return 0; - } - - // Open accelerator - r = fpgaOpen(accel_token, &accel_handle, 0); - assert(FPGA_OK == r); - - // Done with token - fpgaDestroyToken(&accel_token); - - return accel_handle; -} - - -// -// Allocate a buffer in I/O memory, shared with the FPGA. -// -static volatile void* alloc_buffer(fpga_handle accel_handle, - ssize_t size, - uint64_t *wsid, - uint64_t *io_addr) -{ - fpga_result r; - volatile void* buf; - - r = fpgaPrepareBuffer(accel_handle, size, (void*)&buf, wsid, 0); - if (FPGA_OK != r) return NULL; - - // Get the physical address of the buffer in the accelerator - r = fpgaGetIOAddress(accel_handle, *wsid, io_addr); - assert(FPGA_OK == r); - - return buf; -} - - -int main(int argc, char *argv[]) -{ - fpga_handle accel_handle; - volatile char *buf; - volatile char *buf_r; - uint64_t wsid1; - uint64_t wsid2; - uint64_t buf_pa; - uint64_t ret_buf_pa; - uint64_t buf_rpa; - uint64_t ret_buf_rpa; - fpga_result r; - - // Find and connect to the accelerator - accel_handle = connect_to_accel(AFU_ACCEL_UUID); - - // Allocate a single page memory buffer for write - buf = (volatile char*)alloc_buffer(accel_handle, 4 * getpagesize(), - &wsid1, &buf_pa); - // Allocate a single page memory buffer for read - buf_r = (volatile char*)alloc_buffer(accel_handle, 4 * getpagesize(), - &wsid2, &buf_rpa); - assert(NULL != buf); - - //// Set the low byte of the shared buffer to 0. The FPGA will write - //// a non-zero value to it. - //buf[0] = 0; - - // Set the low byte of the shared buffer buf_r to 0. The FPGA will read - // the values and write to buf address - buf[0] = 5; - buf_r[0] = 5; - - // Tell the accelerator the address of the buffer using cache line - // addresses. The accelerator will respond by writing to the buffer. - r = fpgaWriteMMIO64(accel_handle, 0, 0, buf_pa / CL(1)); - printf("Write address is %08lx\n", buf_pa); - printf("Write address div 64 is %08lx\n", buf_pa/ CL(1)); - assert(FPGA_OK == r); - - // Wait for response from FPGA. Check using fpgaReadMMIO - //r = fpgaReadMMIO64(accel_handle, 0, 0, &ret_buf_pa); - //printf("Returned write is %08lx\n", ret_buf_pa); - //assert(FPGA_OK == r); - -///////////////////// Added to check fpgaRead - // Wait for response from FPGA. Check using fpgaReadMMIO - r = fpgaReadMMIO64(accel_handle, 0, 5 * sizeof(uint64_t), &ret_buf_rpa); - printf("Returned read at 10 is %08lx\n", ret_buf_rpa); - assert(FPGA_OK == r); -/////////////////////////////////////////////// - - - // Tell the accelerator the address of the buffer using cache line - // addresses. The accelerator will read from the buffer. - // Write the address to MMIO 1 - r = fpgaWriteMMIO64(accel_handle, 0, sizeof(uint64_t), buf_rpa / CL(1)); - printf("Read address is %08lx\n", buf_rpa); - printf("Read address div64 is %08lx\n", buf_rpa / CL(1)); - assert(FPGA_OK == r); - - // Wait for response from FPGA. Check using fpgaReadMMIO - //r = fpgaReadMMIO64(accel_handle, 0, sizeof(uint64_t), &ret_buf_rpa); - //printf("Returned write is %08lx\n", ret_buf_rpa); - //assert(FPGA_OK == r); - - - - - - - - - // Update this - // Spin, waiting for the value in memory to change to something non-zero. - while (5 == buf[0]) - { - // A well-behaved program would use _mm_pause(), nanosleep() or - // equivalent to save power here. - }; - - // Print the string written by the FPGA - printf("%d\n", buf[0]); - - do { - //printf("%d\n", buf[0]); - } while (10 != buf[0]); - - // Done - fpgaReleaseBuffer(accel_handle, wsid1); - fpgaReleaseBuffer(accel_handle, wsid2); - fpgaClose(accel_handle); - - return 0; -} diff --git a/driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h b/driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h deleted file mode 100644 index e16a5349..00000000 --- a/driver/tests/dogfood/Memcpy/sw/obj/afu_json_info.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// Generated by afu_json_mgr from ../hw/rtl/cci_hello.json -// - -#ifndef __AFU_JSON_INFO__ -#define __AFU_JSON_INFO__ - -#define AFU_ACCEL_NAME "cci_hello" -#define AFU_ACCEL_UUID "C6AA954A-9B91-4A37-ABC1-1D9F0709DCC3" -#define AFU_IMAGE_POWER 0 -#define AFU_TOP_IFC "ccip_std_afu" - -#endif // __AFU_JSON_INFO__ diff --git a/driver/tests/dogfood/Memcpy/sw/obj/cci_hello.o b/driver/tests/dogfood/Memcpy/sw/obj/cci_hello.o deleted file mode 100644 index a6d79f493c77264d59167e9a913e3aeedecb5e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5336 zcmbW4e`p*<6vyY1CaLLlea%UXnZ83S2J2%|#B9OpjAS-r1CCH`8V_*+5E3P)Yr+O#aoQq$Z}r zN_tJzZg46odD%Oo%*u19RHo!PC3W>%Y%fxfmgg?wBuZ-50#m`8N?M*)QopPs&?tyA zXjYz~gQmJ>z%!3wJ5qDsAQPhDd{*SNJoCy-a*vWOvL+@Y|}ijX^ToK35yIaD5_O{83x)KkZfIuQkg5_=EN)6e@nkGqQA$Fgh&rN2qj7hLwDq+6)WFlyfdi63 zNBSFlzNY#*Uv*PUlefCgSKC%ly{%1co<>hotKVNsx`UmaQpEvjFgZjH8xd2N zv~bwa6A3Ajkg7cUqT{7Jk8F21a!hKdv#EM@Gik*1uw>|3Skg?%>&fyW%n98~wG2bZ ztcX=%I(H}@i|HX#HRGy=Tfy_uVBH}V5+BkHGO9)37u)XlKPl}F4klw}QmS{?yFJz3 znk4OdU-UM(J#~95EY*0tjb4w}1HrbifUXn0#5G>-+P=PI?J2k-9|4X9tsbvT-^TKj z1^x}ig&r43sBb^@67mMt++UDFH}yZm{GkGyzwo&NDqudb!l~AfzgI+#{ldI&8svrf zf7Xdvc2F71&jnGCt*U>!y)(Qpn+nAo-{=lAPyozyq z28E;qyt!6L@E4wIg`_wK9s^RILkW4^fxqv-@y5&-=X(eKs{{YTf#bpEi(d@;l8>>Tp zI4qbD4?a|2cypCOxeMPzXg-8s$np8+ybmE5a=e>3A4Uj4^CxWlVH+Q|@$EMLmW|_kk;nOvah}f>*8f!C zJpV5R&hw}LmOxxF|DOeY9ca*QF^+nCNAY}$F%dA4*D%iWtYG603Y_OD3%uV7OP*p} z%<}~s-vL^l&y)}cpK-LeZF&j%Tz^K;zl>tAFC6qUf}XGI2Z8f-{U~t0{|mPG_UGr0 zjaNV(JkR1nn%3%b_>t8m<&5M0NKm-`Q9;l1+#_(Fr$^wGEPg%X;{NyBxPAYR2yrg4 zIHpZ+&-0|9Uts!E4*K^5Jzv)uf%A2JF7Qeg|0~ADb^Rph?=byuHoZOnyEeWPw0!@| zFfbTacD~)lE5XP06136q_}L>s`_1%khV$>g0fF=H1L95`A2qc>s7=GFM|jK7qng{) z$4%l6YoijR)!G4R3vJi5ERJ6KKMO(4Kw`iMGYXruh+#Ad(uN`j$y zC5T^^&A`xhv3;_7tDnQXOYp8lN%JbP8UyRB`c-^MfMFNs;a|4+TSMCg1vxuDMAU|a zc{xX|-5!Sy#=O_@UKoop?Pm>LGREfLD@-VUV>Yqz{QZq%(N42<^LyK(nf>EoTfo8F zT!Zy>Hr~##Eou)lCgwlS#*YgD`2KU;3ypl|x5yT%Fd?2Fj^*R|`Qf*Rxc4~3!~S8? ouwyeZf9#97qg-JROel28f4TqVVE_OC diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index d822dc59..d4c246c3 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -38,7 +38,7 @@ module VX_commit #( .count (num_commits) ); - assign cmt_to_csr_if.valid = (| commited_mask); + assign cmt_to_csr_if.valid = (| commited_mask); assign cmt_to_csr_if.warp_num = cmt_to_issue_if.fpu_data.warp_num; assign cmt_to_csr_if.num_commits = num_commits; @@ -46,16 +46,16 @@ module VX_commit #( integer i; - reg [`FFG_BITS-1:0] fflags; + fflags_t fflags; always @(*) begin fflags = 0; for (i = 0; i < `NUM_THREADS; i++) begin if (cmt_to_issue_if.fpu_data.thread_mask[i]) begin - fflags[0] |= fpu_commit_if.fflags[i][0]; - fflags[1] |= fpu_commit_if.fflags[i][1]; - fflags[2] |= fpu_commit_if.fflags[i][2]; - fflags[3] |= fpu_commit_if.fflags[i][3]; - fflags[4] |= fpu_commit_if.fflags[i][4]; + fflags.NX |= fpu_commit_if.fflags[i].NX; + fflags.UF |= fpu_commit_if.fflags[i].UF; + fflags.OF |= fpu_commit_if.fflags[i].OF; + fflags.DZ |= fpu_commit_if.fflags[i].DZ; + fflags.NV |= fpu_commit_if.fflags[i].NV; end end end diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index be090d26..71971aa4 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -71,8 +71,8 @@ module VX_csr_data #( `CSR_PMPADDR0: csr_pmpaddr[0] <= write_data; default: begin - assert(~write_enable) else $error("%t: invalid CSR write address: %0h", $time, write_addr); - end + assert(~write_enable) else $error("%t: invalid CSR write address: %0h", $time, write_addr); + end endcase end end diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 8c684ddf..8881413b 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -38,7 +38,7 @@ /////////////////////////////////////////////////////////////////////////////// -`define LATENCY_IDIV 22 +`define LATENCY_IDIV 23 `define LATENCY_IMUL 2 `define LATENCY_FDIV 16 @@ -201,13 +201,6 @@ `define FRM_DYN 3'b111 // dynamic mode `define FRM_BITS 3 -`define FFG_NX 0 // inexact -`define FFG_UF 1 // underflow -`define FFG_OF 2 // overflow -`define FFG_DZ 3 // division by zero -`define FFG_NV 4 // invalid -`define FFG_BITS 5 - `define GPU_TMC 3'h0 `define GPU_WSPAWN 3'h1 `define GPU_SPLIT 3'h2 @@ -440,4 +433,14 @@ typedef struct packed { logic is_quiet; } fp_type_t; +typedef struct packed { + logic NV; // Invalid + logic DZ; // Divide by zero + logic OF; // Overflow + logic UF; // Underflow + logic NX; // Inexact +} fflags_t; + +`define FFG_BITS $bits(fflags_t) + `endif diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 7bf96889..3c1b9171 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -28,13 +28,16 @@ module VX_issue #( wire [`ISTAG_BITS-1:0] issue_tag, issue_tmp_tag; - wire gpr_busy = ~gpr_read_if.in_ready; - wire alu_busy = ~alu_req_if.ready; - wire lsu_busy = ~lsu_req_if.ready; - wire csr_busy = ~csr_req_if.ready; - wire mul_busy = ~mul_req_if.ready; - wire fpu_busy = ~mul_req_if.ready; - wire gpu_busy = ~gpu_req_if.ready; + wire schedule_delay; + + wire gpr_busy = ~gpr_read_if.in_ready; + + wire ex_busy = (~alu_req_if.ready && (decode_if.ex_type == `EX_ALU)) + || (~lsu_req_if.ready && (decode_if.ex_type == `EX_LSU)) + || (~csr_req_if.ready && (decode_if.ex_type == `EX_CSR)) + || (~mul_req_if.ready && (decode_if.ex_type == `EX_MUL)) + || (~fpu_req_if.ready && (decode_if.ex_type == `EX_FPU)) + || (~gpu_req_if.ready && (decode_if.ex_type == `EX_GPU)); VX_scheduler #( .CORE_ID(CORE_ID) @@ -44,14 +47,10 @@ module VX_issue #( .decode_if (decode_if), .writeback_if (writeback_if), .cmt_to_issue_if(cmt_to_issue_if), - .gpr_busy (gpr_busy), - .alu_busy (alu_busy), - .lsu_busy (lsu_busy), - .csr_busy (csr_busy), - .mul_busy (mul_busy), - .fpu_busy (fpu_busy), - .gpu_busy (gpu_busy), - .issue_tag (issue_tag) + .ex_busy (ex_busy), + .gpr_busy (gpr_busy), + .issue_tag (issue_tag), + .schedule_delay (schedule_delay) ); VX_gpr_stage #( @@ -66,8 +65,8 @@ module VX_issue #( VX_decode_if decode_tmp_if(); VX_gpr_read_if gpr_read_tmp_if(); - wire stall = ~alu_req_if.ready || ~decode_if.ready; - wire flush = alu_req_if.ready && ~decode_if.ready; + wire stall = schedule_delay; + wire flush = schedule_delay && ~ex_busy; VX_generic_register #( .N(1 + `ISTAG_BITS + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) @@ -80,17 +79,19 @@ module VX_issue #( .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, gpr_read_tmp_if.rs1_data, gpr_read_tmp_if.rs2_data, gpr_read_tmp_if.rs3_data}) ); + assign decode_if.ready = ~stall; + VX_issue_demux issue_demux ( - .decode_if (decode_tmp_if), - .gpr_read_if (gpr_read_tmp_if), - .issue_tag (issue_tmp_tag), - .alu_req_if (alu_req_if), - .lsu_req_if (lsu_req_if), - .csr_req_if (csr_req_if), - .mul_req_if (mul_req_if), - .fpu_req_if (fpu_req_if), - .gpu_req_if (gpu_req_if) - ); + .decode_if (decode_tmp_if), + .gpr_read_if(gpr_read_tmp_if), + .issue_tag (issue_tmp_tag), + .alu_req_if (alu_req_if), + .lsu_req_if (lsu_req_if), + .csr_req_if (csr_req_if), + .mul_req_if (mul_req_if), + .fpu_req_if (fpu_req_if), + .gpu_req_if (gpu_req_if) + ); `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index d922e768..d5c9ed08 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -8,64 +8,52 @@ module VX_scheduler #( VX_decode_if decode_if, VX_wb_if writeback_if, - VX_cmt_to_issue_if cmt_to_issue_if, + VX_cmt_to_issue_if cmt_to_issue_if, + input wire ex_busy, input wire gpr_busy, - input wire alu_busy, - input wire lsu_busy, - input wire csr_busy, - input wire mul_busy, - input wire fpu_busy, - input wire gpu_busy, - output wire [`ISTAG_BITS-1:0] issue_tag + output wire [`ISTAG_BITS-1:0] issue_tag, + output wire schedule_delay ); localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); - reg [`NUM_THREADS-1:0] inuse_registers [`NUM_WARPS-1:0][`NUM_REGS-1:0]; + reg [`NUM_THREADS-1:0] inuse_registers [(`NUM_WARPS * `NUM_REGS)-1:0]; reg [`NUM_REGS-1:0] inuse_reg_mask [`NUM_WARPS-1:0]; wire [`NUM_REGS-1:0] inuse_mask = inuse_reg_mask[decode_if.warp_num] & decode_if.reg_use_mask; wire inuse_hazard = (inuse_mask != 0); - wire exu_stalled = (alu_busy && (decode_if.ex_type == `EX_ALU)) - || (lsu_busy && (decode_if.ex_type == `EX_LSU)) - || (csr_busy && (decode_if.ex_type == `EX_CSR)) - || (mul_busy && (decode_if.ex_type == `EX_MUL)) - || (fpu_busy && (decode_if.ex_type == `EX_FPU)) - || (gpu_busy && (decode_if.ex_type == `EX_GPU)); - wire issue_buf_full; - wire stall = (gpr_busy || exu_stalled || inuse_hazard || issue_buf_full) && decode_if.valid; + wire stall = gpr_busy || ex_busy || inuse_hazard || issue_buf_full; - wire acquire_rd = decode_if.valid && (decode_if.wb != 0) && ~stall; + wire issue_fire = decode_if.valid && ~stall; + + wire acquire_rd = issue_fire && (decode_if.wb != 0); wire release_rd = writeback_if.valid; - wire [`NUM_THREADS-1:0] inuse_registers_n = inuse_registers[writeback_if.warp_num][writeback_if.rd] & ~writeback_if.thread_mask; + wire [`NUM_THREADS-1:0] inuse_registers_n = inuse_registers[{writeback_if.warp_num, writeback_if.rd}] & ~writeback_if.thread_mask; always @(posedge clk) begin if (reset) begin - integer i, w; - for (w = 0; w < `NUM_WARPS; w++) begin - for (i = 0; i < `NUM_REGS; i++) begin - inuse_registers[w][i] <= 0; + for (integer w = 0; w < `NUM_WARPS; w++) begin + for (integer i = 0; i < `NUM_REGS; i++) begin + inuse_registers[w * `NUM_REGS + i] <= 0; end inuse_reg_mask[w] <= `NUM_REGS'(0); end end else begin if (acquire_rd) begin - inuse_registers[decode_if.warp_num][decode_if.rd] <= decode_if.thread_mask; + inuse_registers[{decode_if.warp_num, decode_if.rd}] <= decode_if.thread_mask; inuse_reg_mask[decode_if.warp_num][decode_if.rd] <= 1; end if (release_rd) begin assert(inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] != 0); - inuse_registers[writeback_if.warp_num][writeback_if.rd] <= inuse_registers_n; + inuse_registers[{writeback_if.warp_num, writeback_if.rd}] <= inuse_registers_n; inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] <= (| inuse_registers_n); end end end - wire issue_fire = decode_if.valid && ~stall; - VX_cam_buffer #( .DATAW ($bits(issue_data_t)), .SIZE (`ISSUEQ_SIZE), @@ -82,14 +70,14 @@ module VX_scheduler #( .full (issue_buf_full) ); - assign decode_if.ready = ~stall; + assign schedule_delay = stall; `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if (stall) begin - $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, gpr=%b, alu=%b, lsu=%b, csr=%b, mul=%b, fpu=%b, gpu=%b", - $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, inuse_mask[decode_if.rd], inuse_mask[decode_if.rs1], - inuse_mask[decode_if.rs2], inuse_mask[decode_if.rs3], gpr_busy, alu_busy, lsu_busy, csr_busy, mul_busy, fpu_busy, gpu_busy); + if (decode_if.valid && stall) begin + $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, ex_busy=%b, gpr_busy=%b", + $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, + inuse_mask[decode_if.rd], inuse_mask[decode_if.rs1], inuse_mask[decode_if.rs2], inuse_mask[decode_if.rs3], ex_busy, gpr_busy); end end `endif diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 60e86440..2da93479 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -18,113 +18,131 @@ module VX_writeback #( // outputs VX_wb_if writeback_if ); + reg [`ISSUEQ_SIZE-1:0] wb_valid_table, wb_valid_table_n; + reg [`ISSUEQ_SIZE-1:0][`NUM_THREADS-1:0][31:0] wb_data_table, wb_data_table_n; + reg [`ISSUEQ_SIZE-1:0][`NW_BITS-1:0] wb_warp_num_table, wb_warp_num_table_n; + reg [`ISSUEQ_SIZE-1:0][`NUM_THREADS-1:0] wb_thread_mask_table, wb_thread_mask_table_n; + reg [`ISSUEQ_SIZE-1:0][31:0] wb_curr_PC_table, wb_curr_PC_table_n; + reg [`ISSUEQ_SIZE-1:0][`NR_BITS-1:0] wb_rd_table, wb_rd_table_n; - reg [`NUM_THREADS-1:0][31:0] wb_data_table [`ISSUEQ_SIZE-1:0]; - reg [`NW_BITS-1:0] wb_warp_num_table [`ISSUEQ_SIZE-1:0]; - reg [`NUM_THREADS-1:0] wb_thread_mask_table [`ISSUEQ_SIZE-1:0]; - reg [31:0] wb_curr_PC_table [`ISSUEQ_SIZE-1:0]; - reg [`NR_BITS-1:0] wb_rd_table [`ISSUEQ_SIZE-1:0]; + reg [`NUM_THREADS-1:0][31:0] wb_data, wb_data_n; + reg [`NW_BITS-1:0] wb_warp_num, wb_warp_num_n; + reg [`NUM_THREADS-1:0] wb_thread_mask, wb_thread_mask_n; + reg [31:0] wb_curr_PC, wb_curr_PC_n; + reg [`NR_BITS-1:0] wb_rd, wb_rd_n; - reg [`ISSUEQ_SIZE-1:0] wb_valid_table; - reg [`ISSUEQ_SIZE-1:0] wb_valid_table_n; - - reg [`ISTAG_BITS-1:0] wb_index; - wire [`ISTAG_BITS-1:0] wb_index_n; + reg [`ISTAG_BITS-1:0] wb_index; + reg [`ISTAG_BITS-1:0] wb_index_n; reg wb_valid; - wire wb_valid_n; + reg wb_valid_n; always @(*) begin - wb_valid_table_n = wb_valid_table; + wb_valid_table_n = wb_valid_table; + wb_warp_num_table_n = wb_warp_num_table; + wb_thread_mask_table_n = wb_thread_mask_table; + wb_curr_PC_table_n = wb_curr_PC_table; + wb_rd_table_n = wb_rd_table; + wb_data_table_n = wb_data_table; if (wb_valid) begin wb_valid_table_n[wb_index] = 0; end if (alu_commit_if.valid) begin - wb_valid_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.wb; + wb_valid_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.wb; + wb_thread_mask_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.thread_mask; + wb_data_table_n [alu_commit_if.issue_tag] = alu_commit_if.data; + wb_warp_num_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.warp_num; + wb_curr_PC_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.curr_PC; + wb_rd_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.rd; end + if (lsu_commit_if.valid) begin - wb_valid_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.wb; + wb_valid_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.wb; + wb_thread_mask_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.thread_mask; + wb_data_table_n [lsu_commit_if.issue_tag] = lsu_commit_if.data; + wb_warp_num_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.warp_num; + wb_curr_PC_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.curr_PC; + wb_rd_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.rd; end + if (csr_commit_if.valid) begin - wb_valid_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.wb; + wb_valid_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.wb; + wb_thread_mask_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.thread_mask; + wb_data_table_n [csr_commit_if.issue_tag] = csr_commit_if.data; + wb_warp_num_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.warp_num; + wb_curr_PC_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.curr_PC; + wb_rd_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.rd; end + if (mul_commit_if.valid) begin - wb_valid_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.wb; + wb_valid_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.wb; + wb_thread_mask_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.thread_mask; + wb_data_table_n [mul_commit_if.issue_tag] = mul_commit_if.data; + wb_warp_num_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.warp_num; + wb_curr_PC_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.curr_PC; + wb_rd_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.rd; end + if (fpu_commit_if.valid) begin - wb_valid_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.wb; + wb_valid_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.wb; + wb_thread_mask_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.thread_mask; + wb_data_table_n [fpu_commit_if.issue_tag] = fpu_commit_if.data; + wb_warp_num_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.warp_num; + wb_curr_PC_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.curr_PC; + wb_rd_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.rd; end end - VX_priority_encoder #( - .N(`ISSUEQ_SIZE) - ) wb_select ( - .data_in (wb_valid_table_n), - .data_out (wb_index_n), - .valid_out (wb_valid_n) - ); + integer i; + + always @(*) begin + wb_index_n = 0; + wb_valid_n = 0; + for (i = `ISSUEQ_SIZE-1; i >= 0; i--) begin + if (wb_valid_table_n[i]) begin + wb_index_n = `ISTAG_BITS'(i); + wb_valid_n = 1; + wb_thread_mask_n= wb_thread_mask_table_n[i]; + wb_warp_num_n = wb_warp_num_table_n[i]; + wb_curr_PC_n = wb_curr_PC_table_n[i]; + wb_rd_n = wb_rd_table_n[i]; + wb_data_n = wb_data_table_n[i]; + end + end + end always @(posedge clk) begin if (reset) begin wb_valid_table <= 0; - wb_index <= 0; - wb_valid <= 0; + wb_index <= 0; + wb_valid <= 0; end else begin - if (alu_commit_if.valid) begin - wb_data_table [alu_commit_if.issue_tag] <= alu_commit_if.data; - wb_warp_num_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.warp_num; - wb_thread_mask_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.thread_mask; - wb_curr_PC_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.curr_PC; - wb_rd_table [alu_commit_if.issue_tag] <= cmt_to_issue_if.alu_data.rd; - end - - if (lsu_commit_if.valid) begin - wb_data_table [lsu_commit_if.issue_tag] <= lsu_commit_if.data; - wb_warp_num_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.warp_num; - wb_thread_mask_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.thread_mask; - wb_curr_PC_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.curr_PC; - wb_rd_table [lsu_commit_if.issue_tag] <= cmt_to_issue_if.lsu_data.rd; - end - - if (csr_commit_if.valid) begin - wb_data_table [csr_commit_if.issue_tag] <= csr_commit_if.data; - wb_warp_num_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.warp_num; - wb_thread_mask_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.thread_mask; - wb_curr_PC_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.curr_PC; - wb_rd_table [csr_commit_if.issue_tag] <= cmt_to_issue_if.csr_data.rd; - end - - if (mul_commit_if.valid) begin - wb_data_table [mul_commit_if.issue_tag] <= mul_commit_if.data; - wb_warp_num_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.warp_num; - wb_thread_mask_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.thread_mask; - wb_curr_PC_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.curr_PC; - wb_rd_table [mul_commit_if.issue_tag] <= cmt_to_issue_if.mul_data.rd; - end + wb_valid_table <= wb_valid_table_n; + wb_thread_mask_table <= wb_thread_mask_table_n; + wb_warp_num_table <= wb_warp_num_table_n; + wb_curr_PC_table <= wb_curr_PC_table_n; + wb_rd_table <= wb_rd_table_n; + wb_data_table <= wb_data_table_n; - if (fpu_commit_if.valid) begin - wb_data_table [fpu_commit_if.issue_tag] <= fpu_commit_if.data; - wb_warp_num_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.warp_num; - wb_thread_mask_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.thread_mask; - wb_curr_PC_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.curr_PC; - wb_rd_table [fpu_commit_if.issue_tag] <= cmt_to_issue_if.fpu_data.rd; - end - - wb_valid_table <= wb_valid_table_n; - wb_index <= wb_index_n; - wb_valid <= wb_valid_n && writeback_if.ready; + wb_index <= wb_index_n; + wb_valid <= wb_valid_n && writeback_if.ready; + wb_thread_mask <= wb_thread_mask_n; + wb_warp_num <= wb_warp_num_n; + wb_curr_PC <= wb_curr_PC_n; + wb_rd <= wb_rd_n; + wb_data <= wb_data_n; end end // writeback request assign writeback_if.valid = wb_valid; - assign writeback_if.warp_num = wb_warp_num_table [wb_index]; - assign writeback_if.thread_mask = wb_thread_mask_table [wb_index]; - assign writeback_if.curr_PC = wb_curr_PC_table [wb_index]; - assign writeback_if.rd = wb_rd_table [wb_index]; - assign writeback_if.data = wb_data_table [wb_index]; + assign writeback_if.thread_mask = wb_thread_mask; + assign writeback_if.warp_num = wb_warp_num; + assign writeback_if.curr_PC = wb_curr_PC; + assign writeback_if.rd = wb_rd; + assign writeback_if.data = wb_data; // commit back-pressure assign alu_commit_if.ready = 1'b1; diff --git a/hw/rtl/cache/VX_tag_data_access.v b/hw/rtl/cache/VX_tag_data_access.v index 13e52cb7..0b1748de 100644 --- a/hw/rtl/cache/VX_tag_data_access.v +++ b/hw/rtl/cache/VX_tag_data_access.v @@ -26,11 +26,13 @@ module VX_tag_data_access #( input wire reset, `ifdef DBG_CORE_REQ_INFO +`IGNORE_WARNINGS_BEGIN input wire[31:0] debug_pc_st1e, input wire debug_wb_st1e, input wire[`NR_BITS-1:0] debug_rd_st1e, input wire[`NW_BITS-1:0] debug_warp_num_st1e, input wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st1e, +`IGNORE_WARNINGS_END `endif input wire stall, diff --git a/hw/rtl/fp_cores/VX_fp_fpga.v b/hw/rtl/fp_cores/VX_fp_fpga.v index fc35d9db..e2142417 100644 --- a/hw/rtl/fp_cores/VX_fp_fpga.v +++ b/hw/rtl/fp_cores/VX_fp_fpga.v @@ -5,8 +5,8 @@ module VX_fp_fpga ( input wire clk, input wire reset, - output wire in_ready, input wire in_valid, + output wire in_ready, input wire [`ISTAG_BITS-1:0] in_tag, @@ -19,7 +19,7 @@ module VX_fp_fpga ( output wire [`NUM_THREADS-1:0][31:0] result, output wire has_fflags, - output wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags, + output fflags_t [`NUM_THREADS-1:0] fflags, output wire [`ISTAG_BITS-1:0] out_tag, @@ -29,31 +29,30 @@ module VX_fp_fpga ( localparam NUM_FPC = 12; localparam FPC_BITS = `LOG2UP(NUM_FPC); - reg [FPC_BITS-1:0] core_select; - wire [NUM_FPC-1:0] core_in_ready; wire [NUM_FPC-1:0][`NUM_THREADS-1:0][31:0] core_result; wire fpnew_has_fflags; - wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fpnew_fflags; + fflags_t fpnew_fflags; wire [NUM_FPC-1:0][`ISTAG_BITS-1:0] core_out_tag; wire [NUM_FPC-1:0] core_out_ready; wire [NUM_FPC-1:0] core_out_valid; - reg negate_output; + reg [FPC_BITS-1:0] core_select; + reg fmadd_negate; genvar i; always @(*) begin - core_select = 0; - negate_output = 0; + core_select = 0; + fmadd_negate = 0; case (op) `FPU_ADD: core_select = 1; `FPU_SUB: core_select = 2; `FPU_MUL: core_select = 3; `FPU_MADD: core_select = 4; `FPU_MSUB: core_select = 5; - `FPU_NMSUB: begin core_select = 4; negate_output = 1; end - `FPU_NMADD: begin core_select = 5; negate_output = 1; end + `FPU_NMSUB: begin core_select = 4; fmadd_negate = 1; end + `FPU_NMADD: begin core_select = 5; fmadd_negate = 1; end `FPU_DIV: core_select = 6; `FPU_SQRT: core_select = 7; `FPU_CVTWS: core_select = 8; @@ -130,7 +129,7 @@ module VX_fp_fpga ( .in_valid (in_valid && (core_select == 4)), .in_ready (core_in_ready[4]), .in_tag (in_tag), - .negate (negate_output), + .negate (fmadd_negate), .dataa (dataa), .datab (datab), .datac (datac), @@ -146,7 +145,7 @@ module VX_fp_fpga ( .in_valid (in_valid && (core_select == 5)), .in_ready (core_in_ready[5]), .in_tag (in_tag), - .negate (negate_output), + .negate (fmadd_negate), .dataa (dataa), .datab (datab), .datac (datac), @@ -250,10 +249,21 @@ module VX_fp_fpga ( assign core_out_ready[i] = out_ready && (i == fp_index); end - assign has_fflags = fpnew_has_fflags && (fp_index == 0); - assign fflags = fpnew_fflags; - assign out_tag = core_out_tag[fp_index]; - assign result = core_result[fp_index]; - assign out_valid = fp_valid; + wire tmp_valid = fp_valid; + wire [`ISTAG_BITS-1:0] tmp_tag = core_out_tag[fp_index]; + wire [`NUM_THREADS-1:0][31:0] tmp_result = core_result[fp_index]; + wire tmp_has_fflags = fpnew_has_fflags && (fp_index == 0); + fflags_t [`NUM_THREADS-1:0] tmp_flags = fpnew_fflags; + + VX_generic_register #( + .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32) + 1 + `FFG_BITS) + ) nc_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (1'b0), + .in ({tmp_valid, tmp_tag, tmp_result, tmp_has_fflags, tmp_fflags}), + .out ({out_valid, out_tag, result, has_fflags, fflags}) + ); endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fp_noncomp.v b/hw/rtl/fp_cores/VX_fp_noncomp.v index b081e571..4bcde8c4 100644 --- a/hw/rtl/fp_cores/VX_fp_noncomp.v +++ b/hw/rtl/fp_cores/VX_fp_noncomp.v @@ -17,7 +17,7 @@ module VX_fp_noncomp ( output wire [`NUM_THREADS-1:0][31:0] result, output wire has_fflags, - output wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags, + output fflags_t [`NUM_THREADS-1:0] fflags, output wire [`ISTAG_BITS-1:0] out_tag, @@ -178,7 +178,7 @@ module VX_fp_noncomp ( reg tmp_valid; reg tmp_has_fflags; - reg [`NUM_THREADS-1:0][`FFG_BITS-1:0] tmp_fflags; + fflags_t [`NUM_THREADS-1:0] tmp_fflags; reg [`NUM_THREADS-1:0][31:0] tmp_result; always @(*) begin @@ -199,27 +199,27 @@ module VX_fp_noncomp ( case (op) `FPU_CLASS: begin tmp_result[i] = fclass_mask[i]; - {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + {tmp_fflags[i].NV, tmp_fflags[i].DZ, tmp_fflags[i].OF, tmp_fflags[i].UF, tmp_fflags[i].NX} = 5'h0; end `FPU_MVXW,`FPU_MVWX: begin tmp_result[i] = dataa[i]; - {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + {tmp_fflags[i].NV, tmp_fflags[i].DZ, tmp_fflags[i].OF, tmp_fflags[i].UF, tmp_fflags[i].NX} = 5'h0; end `FPU_MIN,`FPU_MAX: begin tmp_result[i] = fminmax_res[i]; - {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = {a_type[i][0] | b_type[i][0], 4'h0}; + {tmp_fflags[i].NV, tmp_fflags[i].DZ, tmp_fflags[i].OF, tmp_fflags[i].UF, tmp_fflags[i].NX} = {a_type[i][0] | b_type[i][0], 4'h0}; end `FPU_SGNJ,`FPU_SGNJN,`FPU_SGNJX: begin tmp_result[i] = fsgnj_res[i]; - {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + {tmp_fflags[i].NV, tmp_fflags[i].DZ, tmp_fflags[i].OF, tmp_fflags[i].UF, tmp_fflags[i].NX} = 5'h0; end `FPU_CMP: begin tmp_result[i] = fcmp_res[i]; - {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = fcmp_excp[i]; + {tmp_fflags[i].NV, tmp_fflags[i].DZ, tmp_fflags[i].OF, tmp_fflags[i].UF, tmp_fflags[i].NX} = fcmp_excp[i]; end default: begin tmp_result[i] = 32'hdeadbeaf; - {tmp_fflags[i][`FFG_NV], tmp_fflags[i][`FFG_DZ], tmp_fflags[i][`FFG_OF], tmp_fflags[i][`FFG_UF], tmp_fflags[i][`FFG_NX]} = 5'h0; + {tmp_fflags[i].NV, tmp_fflags[i].DZ, tmp_fflags[i].OF, tmp_fflags[i].UF, tmp_fflags[i].NX} = 5'h0; tmp_valid = 1'b0; end endcase @@ -230,7 +230,7 @@ module VX_fp_noncomp ( assign in_ready = ~stall; VX_generic_register #( - .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32) + 1 + `FFG_BITS) + .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32) + 1 + (`NUM_THREADS * `FFG_BITS)) ) nc_reg ( .clk (clk), .reset (reset), diff --git a/hw/rtl/fp_cores/VX_fpnew.v b/hw/rtl/fp_cores/VX_fpnew.v index d56f8695..71668082 100644 --- a/hw/rtl/fp_cores/VX_fpnew.v +++ b/hw/rtl/fp_cores/VX_fpnew.v @@ -11,8 +11,8 @@ module VX_fpnew #( input wire clk, input wire reset, - output wire in_ready, input wire in_valid, + output wire in_ready, input wire [`ISTAG_BITS-1:0] in_tag, @@ -25,7 +25,7 @@ module VX_fpnew #( output wire [`NUM_THREADS-1:0][31:0] result, output wire has_fflags, - output wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags, + output fflags_t [`NUM_THREADS-1:0] fflags, output wire [`ISTAG_BITS-1:0] out_tag, @@ -75,7 +75,7 @@ module VX_fpnew #( wire [FMTI_BITS-1:0] fpu_int_fmt = fpnew_pkg::INT32; wire [`NUM_THREADS-1:0][31:0] fpu_result; - fpnew_pkg::status_t fpu_status [0:`NUM_THREADS-1]; + fpnew_pkg::status_t [0:`NUM_THREADS-1] fpu_status; wire is_class_op_i, is_class_op_o; assign is_class_op_i = (op == `FPU_CLASS); @@ -194,7 +194,8 @@ module VX_fpnew #( `ENABLE_TRACING assign fpu_in_valid = in_valid; - assign in_ready = fpu_in_ready; + assign in_ready = fpu_in_ready + || ~in_valid; // fix fpnews's in_ready containing in_valid; assign fpu_in_tag = in_tag; assign out_tag = fpu_out_tag; @@ -202,14 +203,7 @@ module VX_fpnew #( assign result = fpu_result; assign has_fflags = fpu_has_fflags_o; - - for (i = 0; i < `NUM_THREADS; i++) begin - assign fflags[i][`FFG_NX] = fpu_status[i].NX; - assign fflags[i][`FFG_UF] = fpu_status[i].UF; - assign fflags[i][`FFG_OF] = fpu_status[i].OF; - assign fflags[i][`FFG_DZ] = fpu_status[i].DZ; - assign fflags[i][`FFG_NV] = fpu_status[i].NV; - end + assign fflags = fpu_status; assign out_valid = fpu_out_valid; assign fpu_out_ready = out_ready; diff --git a/hw/rtl/interfaces/VX_cmt_to_csr_if.v b/hw/rtl/interfaces/VX_cmt_to_csr_if.v index ee6165bf..c35e3ecd 100644 --- a/hw/rtl/interfaces/VX_cmt_to_csr_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_csr_if.v @@ -12,7 +12,7 @@ interface VX_cmt_to_csr_if (); wire [`NE_BITS:0] num_commits; wire has_fflags; - wire [`FFG_BITS-1:0] fflags; + fflags_t fflags; endinterface diff --git a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v index ee14584c..beb44a5a 100644 --- a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v +++ b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v @@ -7,9 +7,9 @@ interface VX_fpu_to_cmt_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; - wire [`NUM_THREADS-1:0][31:0] data; + wire [`NUM_THREADS-1:0][31:0] data; wire has_fflags; - wire [`NUM_THREADS-1:0][`FFG_BITS-1:0] fflags; + fflags_t [`NUM_THREADS-1:0] fflags; wire ready; endinterface diff --git a/hw/rtl/libs/VX_index_queue.v b/hw/rtl/libs/VX_index_queue.v index 75252e56..bee8ccb9 100644 --- a/hw/rtl/libs/VX_index_queue.v +++ b/hw/rtl/libs/VX_index_queue.v @@ -15,7 +15,7 @@ module VX_index_queue #( input wire [`LOG2UP(SIZE)-1:0] read_addr, output wire [DATAW-1:0] read_data ); - `USE_FAST_BRAM reg [DATAW-1:0] data [SIZE-1:0]; + reg [DATAW-1:0] entries [SIZE-1:0]; reg [SIZE-1:0] valid; reg [`LOG2UP(SIZE):0] rd_ptr, wr_ptr; @@ -38,7 +38,7 @@ module VX_index_queue #( valid <= 0; end else begin if (enqueue) begin - data[wr_a] <= write_data; + entries[wr_a] <= write_data; valid[wr_a] <= 1; wr_ptr <= wr_ptr + 1; end @@ -52,6 +52,6 @@ module VX_index_queue #( end assign write_addr = wr_a; - assign read_data = data[read_addr]; + assign read_data = entries[read_addr]; endmodule \ No newline at end of file diff --git a/hw/simulate/Makefile b/hw/simulate/Makefile index 7788d0b6..ea6d87a1 100644 --- a/hw/simulate/Makefile +++ b/hw/simulate/Makefile @@ -14,7 +14,7 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_DRAM DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE -#DBG_FLAGS += $(DBG_PRINT_FLAGS) +DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO FPU_INCLUDE = -I../rtl/fp_cores/fpnew/src/common_cells/include -I../rtl/fp_cores/fpnew/src/common_cells/src -I../rtl/fp_cores/fpnew/src/fpu_div_sqrt_mvp/hdl -I../rtl/fp_cores/fpnew/src diff --git a/hw/syn/quartus/project.sdc b/hw/syn/quartus/project.sdc index 61b8cba9..59686a41 100644 --- a/hw/syn/quartus/project.sdc +++ b/hw/syn/quartus/project.sdc @@ -1,6 +1,6 @@ set_time_format -unit ns -decimal_places 3 -create_clock -name {clk} -period "300 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] +create_clock -name {clk} -period "200 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] derive_pll_clocks -create_base_clocks derive_clock_uncertainty diff --git a/hw/syn/quartus/timing.tcl b/hw/syn/quartus/timing.tcl index 411379dc..5e9def4d 100644 --- a/hw/syn/quartus/timing.tcl +++ b/hw/syn/quartus/timing.tcl @@ -1,4 +1,4 @@ -project_open Vortex_Socket +project_open VX_pipeline set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL From 2d4fd2a2b27156c51f61f3419ea36ec06001bb27 Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Sun, 9 Aug 2020 15:08:52 -0400 Subject: [PATCH 41/94] benchmarks/opencl Makefile --- benchmarks/opencl/Makefile | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 benchmarks/opencl/Makefile diff --git a/benchmarks/opencl/Makefile b/benchmarks/opencl/Makefile new file mode 100644 index 00000000..432461dd --- /dev/null +++ b/benchmarks/opencl/Makefile @@ -0,0 +1,30 @@ +all: + $(MAKE) -C vecadd + $(MAKE) -C sgemm + $(MAKE) -C saxpy + $(MAKE) -C sfilter + $(MAKE) -C nearn + $(MAKE) -C guassian + $(MAKE) -C bfs +run: + $(MAKE) -C vecadd run-rtlsim + $(MAKE) -C vecadd run-simx + $(MAKE) -C sgemm run-rtlsim + $(MAKE) -C sgemm run-simx + $(MAKE) -C saxpy run-rtlsim + $(MAKE) -C saxpy run-simx + $(MAKE) -C sfilter run-rtlsim + $(MAKE) -C nearn run-rtlsim + $(MAKE) -C nearn run-simx + $(MAKE) -C guassian run-rtlsim + $(MAKE) -C guassian run-simx + $(MAKE) -C bfs run-rtlsim + $(MAKE) -C bfs run-simx +clean: + $(MAKE) -C vecadd clean + $(MAKE) -C sgemm clean + $(MAKE) -C saxpy clean + $(MAKE) -C sfilter clean + $(MAKE) -C nearn clean + $(MAKE) -C guassian clean + $(MAKE) -C bfs clean From 65415d2bbcc9001d4595f1561e6fcd937cf5c24b Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Sun, 9 Aug 2020 18:13:12 -0400 Subject: [PATCH 42/94] getting dogfood tests passing on Verilator! --- driver/rtlsim/Makefile | 2 +- driver/tests/dogfood/dogfood.cpp | 33 +++-- driver/tests/dogfood/kernel.c | 46 +++---- driver/tests/dogfood/testcases.h | 174 ++++++++++++++---------- hw/opae/vortex_afu.sv | 44 +++--- hw/rtl/VX_decode.v | 6 +- hw/rtl/VX_define.vh | 32 +++-- hw/rtl/VX_execute.v | 36 ++--- hw/rtl/VX_fpu_unit.v | 24 ++-- hw/rtl/VX_gpr_fp_ctrl.v | 10 +- hw/rtl/VX_gpr_ram.v | 22 +-- hw/rtl/VX_gpr_stage.v | 6 +- hw/rtl/VX_icache_stage.v | 18 +-- hw/rtl/VX_issue.v | 149 +++++++++++++++------ hw/rtl/VX_issue_demux.v | 12 +- hw/rtl/VX_lsu_unit.v | 32 ++--- hw/rtl/VX_mul_unit.v | 33 ++--- hw/rtl/VX_pipeline.v | 10 +- hw/rtl/VX_scheduler.v | 39 +++--- hw/rtl/VX_writeback.v | 9 ++ hw/rtl/cache/VX_bank.v | 22 +-- hw/rtl/cache/VX_tag_data_store.v | 11 +- hw/rtl/fp_cores/VX_fp_fpga.v | 201 ++++++++++++++-------------- hw/rtl/fp_cores/VX_fp_noncomp.v | 20 +-- hw/rtl/fp_cores/VX_fpnew.v | 58 ++++---- hw/rtl/fp_cores/altera/VX_fp_add.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_div.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_ftoi.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_ftou.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_itof.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_madd.v | 22 +-- hw/rtl/fp_cores/altera/VX_fp_msub.v | 22 +-- hw/rtl/fp_cores/altera/VX_fp_mul.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_sqrt.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_sub.v | 20 +-- hw/rtl/fp_cores/altera/VX_fp_utof.v | 20 +-- hw/rtl/interfaces/VX_csr_req_if.v | 3 + hw/rtl/interfaces/VX_fpu_req_if.v | 4 + hw/rtl/interfaces/VX_gpr_read_if.v | 3 +- hw/rtl/interfaces/VX_gpu_req_if.v | 4 +- hw/rtl/interfaces/VX_mul_req_if.v | 6 +- hw/rtl/libs/VX_elastic_buffer.v | 38 ++++++ hw/rtl/libs/VX_generic_queue.v | 2 +- 43 files changed, 748 insertions(+), 585 deletions(-) create mode 100644 hw/rtl/libs/VX_elastic_buffer.v diff --git a/driver/rtlsim/Makefile b/driver/rtlsim/Makefile index 3bc7e4e7..8eeaa44e 100644 --- a/driver/rtlsim/Makefile +++ b/driver/rtlsim/Makefile @@ -13,7 +13,7 @@ DBG_PRINT_FLAGS += -DDBG_PRINT_DRAM DBG_PRINT_FLAGS += -DDBG_PRINT_PIPELINE DBG_PRINT_FLAGS += -DDBG_PRINT_OPAE -#DBG_FLAGS += $(DBG_PRINT_FLAGS) +DBG_FLAGS += $(DBG_PRINT_FLAGS) DBG_FLAGS += -DDBG_CORE_REQ_INFO #CONFIGS += -DNUM_CLUSTERS=2 -DNUM_CORES=4 -DL2_ENABLE=1 diff --git a/driver/tests/dogfood/dogfood.cpp b/driver/tests/dogfood/dogfood.cpp index c54fcbf4..1a62959f 100644 --- a/driver/tests/dogfood/dogfood.cpp +++ b/driver/tests/dogfood/dogfood.cpp @@ -77,6 +77,7 @@ const char* kernel_file = "kernel.bin"; int count = 0; int testid_s = 0; int testid_e = (testMngr.size() - 1); +bool stop_on_error = true; vx_device_h device = nullptr; vx_buffer_h arg_buf = nullptr; @@ -86,12 +87,12 @@ vx_buffer_h dst_buf = nullptr; static void show_usage() { std::cout << "Vortex Driver Test." << std::endl; - std::cout << "Usage: [-s:testid] [-e:testid] [-k: kernel] [-n words] [-h: help]" << std::endl; + std::cout << "Usage: [-s:testid] [-e:testid] [-k: kernel] [-n words] [-c] [-h: help]" << std::endl; } static void parse_args(int argc, char **argv) { int c; - while ((c = getopt(argc, argv, "n:s:e:k:h?")) != -1) { + while ((c = getopt(argc, argv, "n:s:e:k:ch?")) != -1) { switch (c) { case 'n': count = atoi(optarg); @@ -105,6 +106,9 @@ static void parse_args(int argc, char **argv) { case 'k': kernel_file = optarg; break; + case 'c': + stop_on_error = false; + break; case 'h': case '?': { show_usage(); @@ -136,6 +140,7 @@ void cleanup() { } int main(int argc, char *argv[]) { + int exitcode = 0; size_t value; kernel_arg_t kernel_arg; @@ -146,6 +151,8 @@ int main(int argc, char *argv[]) { count = 1; } + std::cout << std::dec; + std::cout << "test ids: " << testid_s << " - " << testid_e << std::endl; std::cout << "workitem size: " << count << std::endl; std::cout << "using kernel: " << kernel_file << std::endl; @@ -163,9 +170,7 @@ int main(int argc, char *argv[]) { size_t buf_size = num_points * sizeof(uint32_t); std::cout << "number of points: " << num_points << std::endl; - std::cout << "number of points: " << num_points << std::endl; - std::cout << "number of points: " << num_points << std::endl; - std::cout << "buffer size: " << buf_size << " bytes" << std::endl; + std::cout << "buffer size: " << std::hex << buf_size << std::dec << " bytes" << std::endl; // upload program std::cout << "upload kernel" << std::endl; @@ -183,9 +188,9 @@ int main(int argc, char *argv[]) { kernel_arg.count = count; - std::cout << "dev_src0=" << std::hex << kernel_arg.src0_ptr << std::endl; - std::cout << "dev_src1=" << std::hex << kernel_arg.src1_ptr << std::endl; - std::cout << "dev_dst=" << std::hex << kernel_arg.dst_ptr << std::endl; + std::cout << "dev_src0=" << std::hex << kernel_arg.src0_ptr << std::dec << std::endl; + std::cout << "dev_src1=" << std::hex << kernel_arg.src1_ptr << std::dec << std::endl; + std::cout << "dev_dst=" << std::hex << kernel_arg.dst_ptr << std::dec << std::endl; // allocate shared memory std::cout << "allocate shared memory" << std::endl; @@ -250,15 +255,19 @@ int main(int argc, char *argv[]) { if (errors != 0) { std::cout << "found " << errors << " errors!" << std::endl; std::cout << "FAILED!" << std::endl << std::flush; - cleanup(); - exit(1); + if (stop_on_error) { + cleanup(); + exit(1); + } + exitcode = 1; + } else { + std::cout << "PASSED!" << std::endl << std::flush; } - std::cout << "PASSED!" << std::endl << std::flush; } // cleanup std::cout << "cleanup" << std::endl; cleanup(); - return 0; + return exitcode; } \ No newline at end of file diff --git a/driver/tests/dogfood/kernel.c b/driver/tests/dogfood/kernel.c index 2fc49872..28f4f992 100644 --- a/driver/tests/dogfood/kernel.c +++ b/driver/tests/dogfood/kernel.c @@ -131,7 +131,7 @@ void kernel_fmadd(void* arg) { for (uint32_t i = 0; i < count; ++i) { float a = src0_ptr[offset+i]; float b = src1_ptr[offset+i]; - float c = a * 0.5f + b; + float c = a * b + 0.5f; dst_ptr[offset+i] = c; } } @@ -147,7 +147,7 @@ void kernel_fmsub(void* arg) { for (uint32_t i = 0; i < count; ++i) { float a = src0_ptr[offset+i]; float b = src1_ptr[offset+i]; - float c = a * 0.5f - b; + float c = a * b - 0.5f; dst_ptr[offset+i] = c; } } @@ -163,7 +163,7 @@ void kernel_fnmadd(void* arg) { for (uint32_t i = 0; i < count; ++i) { float a = src0_ptr[offset+i]; float b = src1_ptr[offset+i]; - float c = -a * 0.5f - b; + float c = -a * b - 0.5f; dst_ptr[offset+i] = c; } } @@ -179,7 +179,7 @@ void kernel_fnmsub(void* arg) { for (uint32_t i = 0; i < count; ++i) { float a = src0_ptr[offset+i]; float b = src1_ptr[offset+i]; - float c = -a * 0.5f + b; + float c = -a * b + 0.5f; dst_ptr[offset+i] = c; } } @@ -195,8 +195,8 @@ void kernel_fnmadd_madd(void* arg) { for (uint32_t i = 0; i < count; ++i) { float a = src0_ptr[offset+i]; float b = src1_ptr[offset+i]; - float c = -a * 0.25f - b; - float d = a * 0.25f + b; + float c =-a * b - 0.5f; + float d = a * b + 0.5f; float e = c + d; dst_ptr[offset+i] = e; } @@ -247,7 +247,7 @@ void kernel_fsqrt(void* arg) { for (uint32_t i = 0; i < count; ++i) { float a = src0_ptr[offset+i]; float b = src1_ptr[offset+i]; - float c = sqrt(a) + b; + float c = sqrt(a * b); dst_ptr[offset+i] = c; } } @@ -289,38 +289,34 @@ void kernel_ftou(void* arg) { void kernel_itof(void* arg) { struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); uint32_t count = _arg->count; - float* src0_ptr = (float*)_arg->src0_ptr; - float* src1_ptr = (float*)_arg->src1_ptr; + int32_t* src0_ptr = (int32_t*)_arg->src0_ptr; + int32_t* src1_ptr = (int32_t*)_arg->src1_ptr; float* dst_ptr = (float*)_arg->dst_ptr; uint32_t offset = vx_thread_gid() * count; for (uint32_t i = 0; i < count; ++i) { - float a = src0_ptr[offset+i]; - float b = src1_ptr[offset+i]; - int32_t c = (int32_t)a; - int32_t d = (int32_t)b; - int32_t e = c + d; - float f = (float)e; - dst_ptr[offset+i] = f; + int32_t a = src0_ptr[offset+i]; + int32_t b = src1_ptr[offset+i]; + int32_t c = a + b; + float d = (float)c; + dst_ptr[offset+i] = d; } } void kernel_utof(void* arg) { struct kernel_arg_t* _arg = (struct kernel_arg_t*)(arg); uint32_t count = _arg->count; - float* src0_ptr = (float*)_arg->src0_ptr; - float* src1_ptr = (float*)_arg->src1_ptr; + int32_t* src0_ptr = (int32_t*)_arg->src0_ptr; + int32_t* src1_ptr = (int32_t*)_arg->src1_ptr; float* dst_ptr = (float*)_arg->dst_ptr; uint32_t offset = vx_thread_gid() * count; for (uint32_t i = 0; i < count; ++i) { - float a = src0_ptr[offset+i]; - float b = src1_ptr[offset+i]; - uint32_t c = (uint32_t)a; - uint32_t d = (uint32_t)b; - uint32_t e = c + d; - float f = (float)e; - dst_ptr[offset+i] = f; + int32_t a = src0_ptr[offset+i]; + int32_t b = src1_ptr[offset+i]; + uint32_t c = a + b; + float d = (float)c; + dst_ptr[offset+i] = d; } } diff --git a/driver/tests/dogfood/testcases.h b/driver/tests/dogfood/testcases.h index e2718a82..4669c857 100644 --- a/driver/tests/dogfood/testcases.h +++ b/driver/tests/dogfood/testcases.h @@ -2,6 +2,31 @@ #include #include +#include + +union Float_t { + float f; + int32_t i; + struct { + uint32_t mantissa : 23; + uint32_t exponent : 8; + uint32_t sign : 1; + } parts; +}; + +inline bool almost_equal_eps(float a, float b, float eps = std::numeric_limits::epsilon()) { + auto tolerance = std::max(std::fabs(a), std::fabs(b)) * eps; + return std::fabs(a - b) <= tolerance; +} + +inline bool almost_equal_ulp(float a, float b, int32_t ulp = 4) { + Float_t fa{a}, fb{b}; + return std::abs(fa.i - fb.i) <= ulp; +} + +inline bool almost_equal(float a, float b) { + return almost_equal_ulp(a, b); +} class ITestCase { public: @@ -19,8 +44,8 @@ public: auto a = (int32_t*)src1; auto b = (int32_t*)src2; for (int i = 0; i < n; ++i) { - a[i] = n/2 + i; - b[i] = n/2 - i; + a[i] = n/2 - i; + b[i] = n/2 + i; } } @@ -32,7 +57,7 @@ public: for (int i = 0; i < n; ++i) { auto ref = a[i] + b[i]; if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -47,8 +72,8 @@ public: auto a = (int32_t*)src1; auto b = (int32_t*)src2; for (int i = 0; i < n; ++i) { - a[i] = n/2 + i; - b[i] = n/2 - i; + a[i] = n/2 - i; + b[i] = n/2 + i; } } @@ -60,7 +85,7 @@ public: for (int i = 0; i < n; ++i) { auto ref = a[i] * b[i]; if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -88,7 +113,7 @@ public: for (int i = 0; i < n; ++i) { auto ref = a[i] / b[i]; if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -118,7 +143,7 @@ public: auto y = a[i] * b[i]; auto ref = x + y; if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -133,8 +158,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -145,8 +170,8 @@ public: auto c = (float*)dst; for (int i = 0; i < n; ++i) { auto ref = a[i] + b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -161,8 +186,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -173,8 +198,8 @@ public: auto c = (float*)dst; for (int i = 0; i < n; ++i) { auto ref = a[i] - b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -189,8 +214,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -201,8 +226,8 @@ public: auto c = (float*)dst; for (int i = 0; i < n; ++i) { auto ref = a[i] * b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -217,8 +242,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -228,9 +253,9 @@ public: auto b = (float*)src2; auto c = (float*)dst; for (int i = 0; i < n; ++i) { - auto ref = a[i] * 0.5f + b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + auto ref = a[i] * b[i] + 0.5f; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -245,8 +270,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -256,9 +281,9 @@ public: auto b = (float*)src2; auto c = (float*)dst; for (int i = 0; i < n; ++i) { - auto ref = a[i] * 0.5f - b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + auto ref = a[i] * b[i] - 0.5f; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -273,8 +298,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -284,9 +309,9 @@ public: auto b = (float*)src2; auto c = (float*)dst; for (int i = 0; i < n; ++i) { - auto ref = -a[i] * 0.5f - b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + auto ref = -a[i] * b[i] - 0.5f; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -301,8 +326,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -312,9 +337,9 @@ public: auto b = (float*)src2; auto c = (float*)dst; for (int i = 0; i < n; ++i) { - auto ref = -a[i] * 0.5f + b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + auto ref = -a[i] * b[i] + 0.5f; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -329,8 +354,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -340,11 +365,11 @@ public: auto b = (float*)src2; auto c = (float*)dst; for (int i = 0; i < n; ++i) { - auto x = -a[i] * 0.5f - b[i]; - auto y = a[i] * 0.5f + b[i]; + auto x = -a[i] * b[i] - 0.5f; + auto y = a[i] * b[i] + 0.5f; auto ref = x + y; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -359,8 +384,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n - i) * 0.125f; - b[i] = (n + i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -371,8 +396,8 @@ public: auto c = (float*)dst; for (int i = 0; i < n; ++i) { auto ref = a[i] / b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -387,8 +412,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n - i) * 0.125f; - b[i] = (n + i) * 0.125f; + a[i] = (n - i) * (1.0f/n); + b[i] = (n + i) * (1.0f/n); } } @@ -401,8 +426,8 @@ public: auto x = a[i] / b[i]; auto y = b[i] / a[i]; auto ref = x + y; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -417,8 +442,9 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.125f; - b[i] = (n - i) * 0.125f; + int q = 1.0f + (i % 64); + a[i] = q; + b[i] = q; } } @@ -428,9 +454,9 @@ public: auto b = (float*)src2; auto c = (float*)dst; for (int i = 0; i < n; ++i) { - auto ref = sqrt(a[i]) + b[i]; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + auto ref = sqrt(a[i] * b[i]); + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -445,8 +471,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.5f; - b[i] = (n - i) * 0.5f; + a[i] = (n/2 - i) * (1.0f/n); + b[i] = (n/2 - i) * (1.0f/n); } } @@ -454,12 +480,12 @@ public: int errors = 0; auto a = (float*)src1; auto b = (float*)src2; - auto c = (float*)dst; + auto c = (int32_t*)dst; for (int i = 0; i < n; ++i) { auto x = a[i] + b[i]; auto ref = (int32_t)x; if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -474,8 +500,8 @@ public: auto a = (float*)src1; auto b = (float*)src2; for (int i = 0; i < n; ++i) { - a[i] = (n + i) * 0.5f; - b[i] = (n - i) * 0.5f; + a[i] = i * (1.0f/n); + b[i] = i * (1.0f/n); } } @@ -483,12 +509,12 @@ public: int errors = 0; auto a = (float*)src1; auto b = (float*)src2; - auto c = (float*)dst; + auto c = (uint32_t*)dst; for (int i = 0; i < n; ++i) { auto x = a[i] + b[i]; auto ref = (uint32_t)x; if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -503,7 +529,7 @@ public: auto a = (int32_t*)src1; auto b = (int32_t*)src2; for (int i = 0; i < n; ++i) { - a[i] = n/2 + i; + a[i] = n/2 - i; b[i] = n/2 - i; } } @@ -516,8 +542,8 @@ public: for (int i = 0; i < n; ++i) { auto x = a[i] + b[i]; auto ref = (float)x; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } @@ -532,8 +558,8 @@ public: auto a = (uint32_t*)src1; auto b = (uint32_t*)src2; for (int i = 0; i < n; ++i) { - a[i] = n/2 + i; - b[i] = n/2 - i; + a[i] = i; + b[i] = i; } } @@ -545,8 +571,8 @@ public: for (int i = 0; i < n; ++i) { auto x = a[i] + b[i]; auto ref = (float)x; - if (c[i] != ref) { - std::cout << "error at value " << i << ": actual 0x" << c[i] << ", expected 0x" << ref << std::endl; + if (!almost_equal(c[i], ref)) { + std::cout << "error at value " << i << ": expected " << ref << ", actual " << c[i] << ", a=" << a[i] << ", b=" << b[i] << std::endl; ++errors; } } diff --git a/hw/opae/vortex_afu.sv b/hw/opae/vortex_afu.sv index 278ee190..a059e8e7 100644 --- a/hw/opae/vortex_afu.sv +++ b/hw/opae/vortex_afu.sv @@ -988,32 +988,32 @@ Vortex #() vortex ( localparam SCOPE_DATAW = $bits({`SCOPE_SIGNALS_DATA_LIST `SCOPE_SIGNALS_UPD_LIST}); localparam SCOPE_SR_DEPTH = 2; -`SCOPE_ASSIGN(scope_dram_req_valid, vx_dram_req_valid); -`SCOPE_ASSIGN(scope_dram_req_addr, {vx_dram_req_addr, 4'b0}); -`SCOPE_ASSIGN(scope_dram_req_rw, vx_dram_req_rw); -`SCOPE_ASSIGN(scope_dram_req_byteen,vx_dram_req_byteen); -`SCOPE_ASSIGN(scope_dram_req_data, vx_dram_req_data); -`SCOPE_ASSIGN(scope_dram_req_tag, vx_dram_req_tag); -`SCOPE_ASSIGN(scope_dram_req_ready, vx_dram_req_ready); +`SCOPE_ASSIGN (scope_dram_req_valid, vx_dram_req_valid); +`SCOPE_ASSIGN (scope_dram_req_addr, {vx_dram_req_addr, 4'b0}); +`SCOPE_ASSIGN (scope_dram_req_rw, vx_dram_req_rw); +`SCOPE_ASSIGN (scope_dram_req_byteen,vx_dram_req_byteen); +`SCOPE_ASSIGN (scope_dram_req_data, vx_dram_req_data); +`SCOPE_ASSIGN (scope_dram_req_tag, vx_dram_req_tag); +`SCOPE_ASSIGN (scope_dram_req_ready, vx_dram_req_ready); -`SCOPE_ASSIGN(scope_dram_rsp_valid, vx_dram_rsp_valid); -`SCOPE_ASSIGN(scope_dram_rsp_data, vx_dram_rsp_data); -`SCOPE_ASSIGN(scope_dram_rsp_tag, vx_dram_rsp_tag); -`SCOPE_ASSIGN(scope_dram_rsp_ready, vx_dram_rsp_ready); +`SCOPE_ASSIGN (scope_dram_rsp_valid, vx_dram_rsp_valid); +`SCOPE_ASSIGN (scope_dram_rsp_data, vx_dram_rsp_data); +`SCOPE_ASSIGN (scope_dram_rsp_tag, vx_dram_rsp_tag); +`SCOPE_ASSIGN (scope_dram_rsp_ready, vx_dram_rsp_ready); -`SCOPE_ASSIGN(scope_snp_req_valid, vx_snp_req_valid); -`SCOPE_ASSIGN(scope_snp_req_addr, {vx_snp_req_addr, 4'b0}); -`SCOPE_ASSIGN(scope_snp_req_invalidate, vx_snp_req_invalidate); -`SCOPE_ASSIGN(scope_snp_req_tag, vx_snp_req_tag); -`SCOPE_ASSIGN(scope_snp_req_ready, vx_snp_req_ready); +`SCOPE_ASSIGN (scope_snp_req_valid, vx_snp_req_valid); +`SCOPE_ASSIGN (scope_snp_req_addr, {vx_snp_req_addr, 4'b0}); +`SCOPE_ASSIGN (scope_snp_req_invalidate, vx_snp_req_invalidate); +`SCOPE_ASSIGN (scope_snp_req_tag, vx_snp_req_tag); +`SCOPE_ASSIGN (scope_snp_req_ready, vx_snp_req_ready); -`SCOPE_ASSIGN(scope_snp_rsp_valid, vx_snp_rsp_valid); -`SCOPE_ASSIGN(scope_snp_rsp_tag, vx_snp_rsp_tag); -`SCOPE_ASSIGN(scope_snp_rsp_ready, vx_snp_rsp_ready); +`SCOPE_ASSIGN (scope_snp_rsp_valid, vx_snp_rsp_valid); +`SCOPE_ASSIGN (scope_snp_rsp_tag, vx_snp_rsp_tag); +`SCOPE_ASSIGN (scope_snp_rsp_ready, vx_snp_rsp_ready); -`SCOPE_ASSIGN(scope_snp_rsp_valid, vx_snp_rsp_valid); -`SCOPE_ASSIGN(scope_snp_rsp_tag, vx_snp_rsp_tag); -`SCOPE_ASSIGN(scope_snp_rsp_ready, vx_snp_rsp_ready); +`SCOPE_ASSIGN (scope_snp_rsp_valid, vx_snp_rsp_valid); +`SCOPE_ASSIGN (scope_snp_rsp_tag, vx_snp_rsp_tag); +`SCOPE_ASSIGN (scope_snp_rsp_ready, vx_snp_rsp_ready); wire scope_changed = (scope_icache_req_valid && scope_icache_req_ready) || (scope_icache_rsp_valid && scope_icache_rsp_ready) diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index ecb1038a..5c71df81 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -15,7 +15,7 @@ module VX_decode #( VX_wstall_if wstall_if, VX_join_if join_if ); - wire in_valid = ifetch_rsp_if.valid; + wire valid_in = ifetch_rsp_if.valid; wire [31:0] instr = ifetch_rsp_if.instr; reg [`ALU_BITS-1:0] alu_op; @@ -352,10 +352,10 @@ module VX_decode #( assign decode_tmp_if.frm = func3; - assign join_if.is_join = in_valid && is_gpu && (gpu_op == `GPU_JOIN); + assign join_if.is_join = valid_in && is_gpu && (gpu_op == `GPU_JOIN); assign join_if.warp_num = ifetch_rsp_if.warp_num; - assign wstall_if.wstall = in_valid && (is_btype || is_jal || is_jalr || (is_gpu && (gpu_op == `GPU_TMC || gpu_op == `GPU_SPLIT || gpu_op == `GPU_BAR))); + assign wstall_if.wstall = valid_in && (is_btype || is_jal || is_jalr || (is_gpu && (gpu_op == `GPU_TMC || gpu_op == `GPU_SPLIT || gpu_op == `GPU_BAR))); assign wstall_if.warp_num = ifetch_rsp_if.warp_num; wire stall = ~decode_if.ready && decode_if.valid; diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 8881413b..20e02bd0 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -77,6 +77,8 @@ `define INST_GPU 7'b1101011 +/////////////////////////////////////////////////////////////////////////////// + `define BYTEEN_SB 3'h0 `define BYTEEN_SH 3'h1 `define BYTEEN_SW 3'h2 @@ -85,6 +87,8 @@ `define BYTEEN_BITS 3 `define BYTEEN_TYPE(x) x[1:0] +/////////////////////////////////////////////////////////////////////////////// + `define BR_EQ 4'h0 `define BR_NE 4'h1 `define BR_LT 4'h2 @@ -101,6 +105,22 @@ `define BR_NO 4'hF `define BR_BITS 4 +/////////////////////////////////////////////////////////////////////////////// + +`define EX_NOP 3'h0 +`define EX_ALU 3'h1 +`define EX_LSU 3'h2 +`define EX_CSR 3'h3 +`define EX_MUL 3'h4 +`define EX_FPU 3'h5 +`define EX_GPU 3'h6 +`define EX_BITS 3 + +`define NUM_EXS 6 +`define NE_BITS `LOG2UP(`NUM_EXS) + +/////////////////////////////////////////////////////////////////////////////// + `define OP_BITS 5 `define ALU_ADD 5'h00 @@ -210,18 +230,6 @@ `define GPU_BITS 3 `define GPU_OP(x) x[`GPU_BITS-1:0] -`define EX_NOP 3'h0 -`define EX_ALU 3'h1 -`define EX_LSU 3'h2 -`define EX_CSR 3'h3 -`define EX_MUL 3'h4 -`define EX_FPU 3'h5 -`define EX_GPU 3'h6 -`define EX_BITS 3 - -`define NUM_EXS 6 -`define NE_BITS `LOG2UP(`NUM_EXS) - /////////////////////////////////////////////////////////////////////////////// `ifdef EXT_M_ENABLE diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 3ace93f6..81c76419 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -123,25 +123,25 @@ module VX_execute #( assign ebreak = alu_req_if.valid && (alu_req_if.alu_op == `ALU_EBREAK || alu_req_if.alu_op == `ALU_ECALL); - `SCOPE_ASSIGN(scope_decode_valid, decode_if.valid); - `SCOPE_ASSIGN(scope_decode_warp_num, decode_if.warp_num); - `SCOPE_ASSIGN(scope_decode_curr_PC, decode_if.curr_PC); - `SCOPE_ASSIGN(scope_decode_is_jal, decode_if.is_jal); - `SCOPE_ASSIGN(scope_decode_rs1, decode_if.rs1); - `SCOPE_ASSIGN(scope_decode_rs2, decode_if.rs2); + `SCOPE_ASSIGN (scope_decode_valid, decode_if.valid); + `SCOPE_ASSIGN (scope_decode_warp_num, decode_if.warp_num); + `SCOPE_ASSIGN (scope_decode_curr_PC, decode_if.curr_PC); + `SCOPE_ASSIGN (scope_decode_is_jal, decode_if.is_jal); + `SCOPE_ASSIGN (scope_decode_rs1, decode_if.rs1); + `SCOPE_ASSIGN (scope_decode_rs2, decode_if.rs2); - `SCOPE_ASSIGN(scope_execute_valid, alu_req_if.valid); - `SCOPE_ASSIGN(scope_execute_warp_num, alu_req_if.warp_num); - `SCOPE_ASSIGN(scope_execute_curr_PC, alu_req_if.curr_PC); - `SCOPE_ASSIGN(scope_execute_rd, alu_req_if.rd); - `SCOPE_ASSIGN(scope_execute_a, alu_req_if.rs1_data); - `SCOPE_ASSIGN(scope_execute_b, alu_req_if.rs2_data); + `SCOPE_ASSIGN (scope_execute_valid, alu_req_if.valid); + `SCOPE_ASSIGN (scope_execute_warp_num, alu_req_if.warp_num); + `SCOPE_ASSIGN (scope_execute_curr_PC, alu_req_if.curr_PC); + `SCOPE_ASSIGN (scope_execute_rd, alu_req_if.rd); + `SCOPE_ASSIGN (scope_execute_a, alu_req_if.rs1_data); + `SCOPE_ASSIGN (scope_execute_b, alu_req_if.rs2_data); - `SCOPE_ASSIGN(scope_writeback_valid, writeback_if.valid); - `SCOPE_ASSIGN(scope_writeback_warp_num, writeback_if.warp_num); - `SCOPE_ASSIGN(scope_writeback_curr_PC, writeback_if.curr_PC); - `SCOPE_ASSIGN(scope_writeback_wb, writeback_if.wb); - `SCOPE_ASSIGN(scope_writeback_rd, writeback_if.rd); - `SCOPE_ASSIGN(scope_writeback_data, writeback_if.data); + `SCOPE_ASSIGN (scope_writeback_valid, writeback_if.valid); + `SCOPE_ASSIGN (scope_writeback_warp_num, writeback_if.warp_num); + `SCOPE_ASSIGN (scope_writeback_curr_PC, writeback_if.curr_PC); + `SCOPE_ASSIGN (scope_writeback_wb, writeback_if.wb); + `SCOPE_ASSIGN (scope_writeback_rd, writeback_if.rd); + `SCOPE_ASSIGN (scope_writeback_data, writeback_if.data); endmodule diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index 09695bf5..cc8de7dc 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -24,10 +24,10 @@ module VX_fpu_unit #( .clk (clk), .reset (reset), - .in_valid (fpu_req_if.valid), - .in_ready (fpu_req_if.ready), + .valid_in (fpu_req_if.valid), + .ready_in (fpu_req_if.ready), - .in_tag (fpu_req_if.issue_tag), + .tag_in (fpu_req_if.issue_tag), .op (fpu_req_if.fpu_op), .frm (frm), @@ -40,10 +40,10 @@ module VX_fpu_unit #( .has_fflags (fpu_commit_if.has_fflags), .fflags (fpu_commit_if.fflags), - .out_tag (fpu_commit_if.issue_tag), + .tag_out (fpu_commit_if.issue_tag), - .out_ready (fpu_commit_if.ready), - .out_valid (fpu_commit_if.valid) + .ready_out (fpu_commit_if.ready), + .valid_out (fpu_commit_if.valid) ); `else @@ -57,10 +57,10 @@ module VX_fpu_unit #( .clk (clk), .reset (reset), - .in_valid (fpu_req_if.valid), - .in_ready (fpu_req_if.ready), + .valid_in (fpu_req_if.valid), + .ready_in (fpu_req_if.ready), - .in_tag (fpu_req_if.issue_tag), + .tag_in (fpu_req_if.issue_tag), .op (fpu_req_if.fpu_op), .frm (frm), @@ -73,10 +73,10 @@ module VX_fpu_unit #( .has_fflags (fpu_commit_if.has_fflags), .fflags (fpu_commit_if.fflags), - .out_tag (fpu_commit_if.issue_tag), + .tag_out (fpu_commit_if.issue_tag), - .out_ready (fpu_commit_if.ready), - .out_valid (fpu_commit_if.valid) + .ready_out (fpu_commit_if.ready), + .valid_out (fpu_commit_if.valid) ); `endif diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index 55e3873f..0e9dbe99 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -18,14 +18,14 @@ module VX_gpr_fp_ctrl ( reg [`NUM_THREADS-1:0][31:0] tmp_rs1_data; reg read_rs3; - wire delay = gpr_read_if.valid && gpr_read_if.use_rs3 && ~read_rs3; + wire rs3_delay = gpr_read_if.valid && gpr_read_if.use_rs3 && ~read_rs3; - wire read_fire = gpr_read_if.valid && gpr_read_if.out_ready; + wire read_fire = gpr_read_if.valid && read_rs3; always @(posedge clk) begin if (reset) begin read_rs3 <= 0; - end else if (delay) begin + end else if (rs3_delay) begin read_rs3 <= 1; end else if (read_fire) begin read_rs3 <= 0; @@ -34,14 +34,14 @@ module VX_gpr_fp_ctrl ( // backup original rs1 data always @(posedge clk) begin - if (delay) begin + if (rs3_delay) begin tmp_rs1_data <= rs1_data; end end // outputs assign raddr1 = {gpr_read_if.warp_num, (read_rs3 ? gpr_read_if.rs3 : gpr_read_if.rs1)}; - assign gpr_read_if.in_ready = ~delay; + assign gpr_read_if.ready = ~rs3_delay; assign gpr_read_if.rs1_data = gpr_read_if.use_rs3 ? tmp_rs1_data : rs1_data; assign gpr_read_if.rs2_data = rs2_data; assign gpr_read_if.rs3_data = rs1_data; diff --git a/hw/rtl/VX_gpr_ram.v b/hw/rtl/VX_gpr_ram.v index 00c5f1f0..bceb7d01 100644 --- a/hw/rtl/VX_gpr_ram.v +++ b/hw/rtl/VX_gpr_ram.v @@ -14,22 +14,24 @@ module VX_gpr_ram ( reg [`NUM_THREADS-1:0][3:0][7:0] ram [(`NUM_WARPS * `NUM_REGS)-1:0]; - integer i, j; - initial begin - // initialize r0 to 0 - for (j = 0; j < `NUM_WARPS; j++) begin - for (i = 0; i < `NUM_THREADS; i++) begin - ram[j * `NUM_REGS][i][0] = 8'h0; - ram[j * `NUM_REGS][i][1] = 8'h0; - ram[j * `NUM_REGS][i][2] = 8'h0; - ram[j * `NUM_REGS][i][3] = 8'h0; + // initialize ram + for (integer j = 0; j < `NUM_WARPS; j++) begin + for (integer i = 0; i < `NUM_REGS; i++) begin + if (i == 0) begin + ram[j * `NUM_REGS + i] = {`NUM_THREADS{32'h00000000}}; // set r0 = 0 + end + `ifndef SYNTHESIS + else begin + ram[j * `NUM_REGS + i] = {`NUM_THREADS{32'hdeadbeef}}; + end + `endif end end end always @(posedge clk) begin - for (i = 0; i < `NUM_THREADS; i++) begin + for (integer i = 0; i < `NUM_THREADS; i++) begin if (we[i]) begin ram[waddr][i][0] <= wdata[i][07:00]; ram[waddr][i][1] <= wdata[i][15:08]; diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 9e49ca57..8a05137f 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -43,18 +43,16 @@ module VX_gpr_stage #( assign gpr_read_if.rs1_data = rs1_data; assign gpr_read_if.rs2_data = rs2_data; assign gpr_read_if.rs3_data = 0; - assign gpr_read_if.in_ready = 1; + assign gpr_read_if.ready = 1; wire valid = gpr_read_if.valid; - wire out_ready = gpr_read_if.out_ready; wire use_rs3 = gpr_read_if.use_rs3; wire [`NR_BITS-1:0] rs3 = gpr_read_if.rs3; `UNUSED_VAR (valid); - `UNUSED_VAR (out_ready); `UNUSED_VAR (use_rs3); `UNUSED_VAR (rs3); `endif - assign writeback_if.ready = 1'b1; + assign writeback_if.ready = 1'b1; // writes are stall-free endmodule diff --git a/hw/rtl/VX_icache_stage.v b/hw/rtl/VX_icache_stage.v index fad3fcd4..276a24a2 100644 --- a/hw/rtl/VX_icache_stage.v +++ b/hw/rtl/VX_icache_stage.v @@ -60,16 +60,16 @@ module VX_icache_stage #( // Can accept new response? assign icache_rsp_if.ready = ifetch_rsp_if.ready; - `SCOPE_ASSIGN(scope_icache_req_valid, icache_req_if.valid); - `SCOPE_ASSIGN(scope_icache_req_warp_num, ifetch_req_if.warp_num); - `SCOPE_ASSIGN(scope_icache_req_addr, {icache_req_if.addr, 2'b0}); - `SCOPE_ASSIGN(scope_icache_req_tag, icache_req_if.tag); - `SCOPE_ASSIGN(scope_icache_req_ready, icache_req_if.ready); + `SCOPE_ASSIGN (scope_icache_req_valid, icache_req_if.valid); + `SCOPE_ASSIGN (scope_icache_req_warp_num, ifetch_req_if.warp_num); + `SCOPE_ASSIGN (scope_icache_req_addr, {icache_req_if.addr, 2'b0}); + `SCOPE_ASSIGN (scope_icache_req_tag, icache_req_if.tag); + `SCOPE_ASSIGN (scope_icache_req_ready, icache_req_if.ready); - `SCOPE_ASSIGN(scope_icache_rsp_valid, icache_rsp_if.valid); - `SCOPE_ASSIGN(scope_icache_rsp_data, icache_rsp_if.data); - `SCOPE_ASSIGN(scope_icache_rsp_tag, icache_rsp_if.tag); - `SCOPE_ASSIGN(scope_icache_rsp_ready, icache_rsp_if.ready); + `SCOPE_ASSIGN (scope_icache_rsp_valid, icache_rsp_if.valid); + `SCOPE_ASSIGN (scope_icache_rsp_data, icache_rsp_if.data); + `SCOPE_ASSIGN (scope_icache_rsp_tag, icache_rsp_if.tag); + `SCOPE_ASSIGN (scope_icache_rsp_ready, icache_rsp_if.ready); `ifdef DBG_PRINT_CORE_ICACHE always @(posedge clk) begin diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 3c1b9171..295434cd 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -17,26 +17,27 @@ module VX_issue #( VX_fpu_req_if fpu_req_if, VX_gpu_req_if gpu_req_if ); + + wire [`ISTAG_BITS-1:0] issue_tag; + wire schedule_delay; + VX_gpr_read_if gpr_read_if(); - assign gpr_read_if.valid = decode_if.valid; + assign gpr_read_if.valid = decode_if.valid && ~schedule_delay; assign gpr_read_if.warp_num = decode_if.warp_num; assign gpr_read_if.rs1 = decode_if.rs1; assign gpr_read_if.rs2 = decode_if.rs2; assign gpr_read_if.rs3 = decode_if.rs3; assign gpr_read_if.use_rs3 = decode_if.use_rs3; - assign gpr_read_if.out_ready = decode_if.ready; - - wire [`ISTAG_BITS-1:0] issue_tag, issue_tmp_tag; - - wire schedule_delay; - - wire gpr_busy = ~gpr_read_if.in_ready; wire ex_busy = (~alu_req_if.ready && (decode_if.ex_type == `EX_ALU)) || (~lsu_req_if.ready && (decode_if.ex_type == `EX_LSU)) || (~csr_req_if.ready && (decode_if.ex_type == `EX_CSR)) + `ifdef EXT_M_ENABLE || (~mul_req_if.ready && (decode_if.ex_type == `EX_MUL)) + `endif + `ifdef EXT_F_ENABLE || (~fpu_req_if.ready && (decode_if.ex_type == `EX_FPU)) + `endif || (~gpu_req_if.ready && (decode_if.ex_type == `EX_GPU)); VX_scheduler #( @@ -47,8 +48,7 @@ module VX_issue #( .decode_if (decode_if), .writeback_if (writeback_if), .cmt_to_issue_if(cmt_to_issue_if), - .ex_busy (ex_busy), - .gpr_busy (gpr_busy), + .ex_busy (ex_busy), .issue_tag (issue_tag), .schedule_delay (schedule_delay) ); @@ -62,56 +62,117 @@ module VX_issue #( .gpr_read_if (gpr_read_if) ); - VX_decode_if decode_tmp_if(); - VX_gpr_read_if gpr_read_tmp_if(); - - wire stall = schedule_delay; - wire flush = schedule_delay && ~ex_busy; - - VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) - ) issue_reg ( - .clk (clk), - .reset (reset), - .stall (stall), - .flush (flush), - .in ({decode_if.valid, issue_tag, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.frm, gpr_read_if.rs1_data, gpr_read_if.rs2_data, gpr_read_if.rs3_data}), - .out ({decode_tmp_if.valid, issue_tmp_tag, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, gpr_read_tmp_if.rs1_data, gpr_read_tmp_if.rs2_data, gpr_read_tmp_if.rs3_data}) - ); - - assign decode_if.ready = ~stall; + VX_alu_req_if alu_req_tmp_if(); + VX_lsu_req_if lsu_req_tmp_if(); + VX_csr_req_if csr_req_tmp_if(); + VX_mul_req_if mul_req_tmp_if(); + VX_fpu_req_if fpu_req_tmp_if(); + VX_gpu_req_if gpu_req_tmp_if(); VX_issue_demux issue_demux ( - .decode_if (decode_tmp_if), - .gpr_read_if(gpr_read_tmp_if), - .issue_tag (issue_tmp_tag), - .alu_req_if (alu_req_if), - .lsu_req_if (lsu_req_if), - .csr_req_if (csr_req_if), - .mul_req_if (mul_req_if), - .fpu_req_if (fpu_req_if), - .gpu_req_if (gpu_req_if) - ); + .decode_if (decode_if), + .gpr_read_if(gpr_read_if), + .issue_tag (issue_tag), + .alu_req_if (alu_req_tmp_if), + .lsu_req_if (lsu_req_tmp_if), + .csr_req_if (csr_req_tmp_if), + .mul_req_if (mul_req_tmp_if), + .fpu_req_if (fpu_req_tmp_if), + .gpu_req_if (gpu_req_tmp_if) + ); + + wire stall = schedule_delay || ~gpr_read_if.ready; + assign decode_if.ready = ~stall; + + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `ALU_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 32) + ) alu_reg ( + .clk (clk), + .reset (reset), + .stall (~alu_req_if.ready), + .flush (stall && alu_req_if.ready), + .in ({alu_req_tmp_if.valid, alu_req_tmp_if.issue_tag, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.thread_mask, alu_req_tmp_if.alu_op, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.offset, alu_req_tmp_if.next_PC}), + .out ({alu_req_if.valid, alu_req_if.issue_tag, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.thread_mask, alu_req_if.alu_op, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC}) + ); + + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + 1 + `BYTEEN_BITS + (`NUM_THREADS * 32) + 32 + (`NUM_THREADS * 32) + `NR_BITS + 1) + ) lsu_reg ( + .clk (clk), + .reset (reset), + .stall (~lsu_req_if.ready), + .flush (stall && lsu_req_if.ready), + .in ({lsu_req_tmp_if.valid, lsu_req_tmp_if.issue_tag, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.thread_mask, lsu_req_tmp_if.rw, lsu_req_tmp_if.byteen, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.offset, lsu_req_tmp_if.store_data, lsu_req_tmp_if.rd, lsu_req_tmp_if.wb}), + .out ({lsu_req_if.valid, lsu_req_if.issue_tag, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.thread_mask, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data, lsu_req_if.rd, lsu_req_if.wb}) + ); + + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `CSR_BITS + `CSR_ADDR_BITS + 32 + 1) + ) csr_reg ( + .clk (clk), + .reset (reset), + .stall (~csr_req_if.ready), + .flush (stall && csr_req_if.ready), + .in ({csr_req_tmp_if.valid, csr_req_tmp_if.issue_tag, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.thread_mask, csr_req_tmp_if.csr_op, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask, csr_req_tmp_if.is_io}), + .out ({csr_req_if.valid, csr_req_if.issue_tag, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.thread_mask, csr_req_if.csr_op, csr_req_if.csr_addr, csr_req_if.csr_mask, csr_req_if.is_io}) + ); + +`ifdef EXT_M_ENABLE + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `MUL_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) + ) mul_reg ( + .clk (clk), + .reset (reset), + .stall (~mul_req_if.ready), + .flush (stall && mul_req_if.ready), + .in ({mul_req_tmp_if.valid, mul_req_tmp_if.issue_tag, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.thread_mask, mul_req_tmp_if.mul_op, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data}), + .out ({mul_req_if.valid, mul_req_if.issue_tag, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.thread_mask, mul_req_if.mul_op, mul_req_if.rs1_data, mul_req_if.rs2_data}) + ); +`endif + +`ifdef EXT_F_ENABLE + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `FPU_BITS + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) + ) fpu_reg ( + .clk (clk), + .reset (reset), + .stall (~fpu_req_if.ready), + .flush (stall && fpu_req_if.ready), + .in ({fpu_req_tmp_if.valid, fpu_req_tmp_if.issue_tag, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.thread_mask, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.frm, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data, fpu_req_tmp_if.rs3_data}), + .out ({fpu_req_if.valid, fpu_req_if.issue_tag, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.thread_mask, fpu_req_if.fpu_op, fpu_req_if.frm, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data}) + ); +`endif + + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `GPU_BITS + (`NUM_THREADS * 32) + 32 + 32) + ) gpu_reg ( + .clk (clk), + .reset (reset), + .stall (~gpu_req_if.ready), + .flush (stall && gpu_req_if.ready), + .in ({gpu_req_tmp_if.valid, gpu_req_tmp_if.issue_tag, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.curr_PC, gpu_req_tmp_if.thread_mask, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data, gpu_req_tmp_if.next_PC}), + .out ({gpu_req_if.valid, gpu_req_if.issue_tag, gpu_req_if.warp_num, gpu_req_if.curr_PC, gpu_req_if.thread_mask, gpu_req_if.gpu_op, gpu_req_if.rs1_data, gpu_req_if.rs2_data, gpu_req_if.next_PC}) + ); `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (alu_req_if.valid && alu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%d, rd=%0d, rs1_data=%0h, rs2_data=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC); + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.issue_tag, alu_req_if.thread_mask, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC); end if (lsu_req_if.valid && lsu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0b, rd=%0d, rw=%b, byteen=%b, baddr=%0h, offset=%0h, data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data); + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, rw=%b, byteen=%b, baddr=%0h, offset=%0h, data=%0h", $time, CORE_ID, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.issue_tag, lsu_req_if.thread_mask, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data); end if (csr_req_if.valid && csr_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%d, rd=%0d, addr=%0h, mask=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, csr_req_if.csr_addr, csr_req_if.csr_mask); + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, addr=%0h, mask=%0h", $time, CORE_ID, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.issue_tag, csr_req_if.thread_mask, csr_req_if.csr_addr, csr_req_if.csr_mask); end if (mul_req_if.valid && mul_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%d, rd=%0d, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, mul_req_if.rs1_data, mul_req_if.rs2_data); + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.issue_tag, mul_req_if.thread_mask, mul_req_if.rs1_data, mul_req_if.rs2_data); end if (fpu_req_if.valid && fpu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%d, rd=%0d, frm=%0h, rs1_data=%0h, rs2_data=%0h, rs3_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, decode_tmp_if.wb, decode_tmp_if.rd, fpu_req_if.frm, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data); + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h, rs3_data=%0h", $time, CORE_ID, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.issue_tag, fpu_req_if.thread_mask, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data); end if (gpu_req_if.valid && gpu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC, issue_tmp_tag, decode_tmp_if.thread_mask, gpu_req_if.rs1_data, gpu_req_if.rs2_data); + $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, gpu_req_if.warp_num, gpu_req_if.curr_PC, gpu_req_if.issue_tag, gpu_req_if.thread_mask, gpu_req_if.rs1_data, gpu_req_if.rs2_data); end end `endif diff --git a/hw/rtl/VX_issue_demux.v b/hw/rtl/VX_issue_demux.v index 5e5a9672..44c4433b 100644 --- a/hw/rtl/VX_issue_demux.v +++ b/hw/rtl/VX_issue_demux.v @@ -32,11 +32,11 @@ module VX_issue_demux ( assign lsu_req_if.issue_tag = issue_tag; assign lsu_req_if.warp_num = decode_if.warp_num; assign lsu_req_if.curr_PC = decode_if.curr_PC; + assign lsu_req_if.rw = `LSU_RW(decode_if.ex_op); + assign lsu_req_if.byteen = `LSU_BE(decode_if.ex_op); assign lsu_req_if.base_addr = gpr_read_if.rs1_data; assign lsu_req_if.store_data = gpr_read_if.rs2_data; assign lsu_req_if.offset = decode_if.imm; - assign lsu_req_if.rw = `LSU_RW(decode_if.ex_op); - assign lsu_req_if.byteen = `LSU_BE(decode_if.ex_op); assign lsu_req_if.rd = decode_if.rd; assign lsu_req_if.wb = decode_if.wb; @@ -54,6 +54,8 @@ module VX_issue_demux ( `ifdef EXT_M_ENABLE assign mul_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_MUL); assign mul_req_if.issue_tag = issue_tag; + assign mul_req_if.warp_num = decode_if.warp_num; + assign mul_req_if.curr_PC = decode_if.curr_PC; assign mul_req_if.mul_op = `MUL_OP(decode_if.ex_op); assign mul_req_if.rs1_data = gpr_read_if.rs1_data; assign mul_req_if.rs2_data = gpr_read_if.rs2_data; @@ -64,11 +66,12 @@ module VX_issue_demux ( assign fpu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_FPU); assign fpu_req_if.issue_tag = issue_tag; assign fpu_req_if.warp_num = decode_if.warp_num; + assign fpu_req_if.curr_PC = decode_if.curr_PC; assign fpu_req_if.fpu_op = `FPU_OP(decode_if.ex_op); + assign fpu_req_if.frm = decode_if.frm; assign fpu_req_if.rs1_data = gpr_read_if.rs1_data; assign fpu_req_if.rs2_data = gpr_read_if.rs2_data; - assign fpu_req_if.rs3_data = gpr_read_if.rs3_data; - assign fpu_req_if.frm = decode_if.frm; + assign fpu_req_if.rs3_data = gpr_read_if.rs3_data; `endif // GPU unit @@ -76,6 +79,7 @@ module VX_issue_demux ( assign gpu_req_if.thread_mask = decode_if.thread_mask; assign gpu_req_if.issue_tag = issue_tag; assign gpu_req_if.warp_num = decode_if.warp_num; + assign gpu_req_if.curr_PC = decode_if.curr_PC; assign gpu_req_if.gpu_op = `GPU_OP(decode_if.ex_op); assign gpu_req_if.rs1_data = gpr_read_if.rs1_data; assign gpu_req_if.rs2_data = gpr_read_if.rs2_data[0]; diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index bf086fbd..87acc21b 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -68,12 +68,12 @@ module VX_lsu_unit #( assign mem_req_offset[i] = full_address[i][1:0]; assign mem_req_byteen[i] = wmask << full_address[i][1:0]; assign mem_req_data[i] = lsu_req_if.store_data[i] << {mem_req_offset[i], 3'b0}; - end + end - wire stall_in = ~dcache_req_if.ready; + wire stall_in = ~dcache_req_if.ready && use_valid; // Can accept new request? - assign lsu_req_if.ready = ~stall_in; + assign lsu_req_if.ready = ~stall_in; `IGNORE_WARNINGS_BEGIN wire [`NUM_THREADS-1:0][31:0] use_address; @@ -167,20 +167,20 @@ module VX_lsu_unit #( assign dcache_rsp_if.ready = lsu_commit_if.ready && ~is_store_rsp; // STORE has priority // scope registration - `SCOPE_ASSIGN(scope_dcache_req_valid, dcache_req_if.valid); - `SCOPE_ASSIGN(scope_dcache_req_addr, use_address); - `SCOPE_ASSIGN(scope_dcache_req_rw, dcache_req_if.rw ); - `SCOPE_ASSIGN(scope_dcache_req_byteen,dcache_req_if.byteen); - `SCOPE_ASSIGN(scope_dcache_req_data, dcache_req_if.data); - `SCOPE_ASSIGN(scope_dcache_req_tag, dcache_req_if.tag); - `SCOPE_ASSIGN(scope_dcache_req_ready, dcache_req_if.ready); - `SCOPE_ASSIGN(scope_dcache_req_warp_num, use_warp_num); - `SCOPE_ASSIGN(scope_dcache_req_curr_PC, use_pc); + `SCOPE_ASSIGN (scope_dcache_req_valid, dcache_req_if.valid); + `SCOPE_ASSIGN (scope_dcache_req_addr, use_address); + `SCOPE_ASSIGN (scope_dcache_req_rw, dcache_req_if.rw ); + `SCOPE_ASSIGN (scope_dcache_req_byteen,dcache_req_if.byteen); + `SCOPE_ASSIGN (scope_dcache_req_data, dcache_req_if.data); + `SCOPE_ASSIGN (scope_dcache_req_tag, dcache_req_if.tag); + `SCOPE_ASSIGN (scope_dcache_req_ready, dcache_req_if.ready); + `SCOPE_ASSIGN (scope_dcache_req_warp_num, use_warp_num); + `SCOPE_ASSIGN (scope_dcache_req_curr_PC, use_pc); - `SCOPE_ASSIGN(scope_dcache_rsp_valid, dcache_rsp_if.valid); - `SCOPE_ASSIGN(scope_dcache_rsp_data, dcache_rsp_if.data); - `SCOPE_ASSIGN(scope_dcache_rsp_tag, dcache_rsp_if.tag); - `SCOPE_ASSIGN(scope_dcache_rsp_ready, dcache_rsp_if.ready); + `SCOPE_ASSIGN (scope_dcache_rsp_valid, dcache_rsp_if.valid); + `SCOPE_ASSIGN (scope_dcache_rsp_data, dcache_rsp_if.data); + `SCOPE_ASSIGN (scope_dcache_rsp_tag, dcache_rsp_if.tag); + `SCOPE_ASSIGN (scope_dcache_rsp_ready, dcache_rsp_if.ready); `UNUSED_VAR (mem_rsp_warp_num) `UNUSED_VAR (mem_rsp_curr_PC) diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 36b46bba..394ebe06 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -21,13 +21,13 @@ module VX_mul_unit #( wire stall_mul, stall_div; - wire is_mul_op = (alu_op == `MUL_MUL); - wire is_div_op = (alu_op == `MUL_DIV || alu_op == `MUL_DIVU); - - reg [`NUM_THREADS-1:0] is_div_op_in; - wire [`NUM_THREADS-1:0] is_div_op_out; - wire is_mul_op_out; + wire is_mul_mul = (alu_op == `MUL_MUL); + wire is_mul_mul_out; + wire is_div_divu = (alu_op == `MUL_DIV || alu_op == `MUL_DIVU); + reg [`NUM_THREADS-1:0] is_div_divu_qual; + wire [`NUM_THREADS-1:0] is_div_divu_out; + genvar i; for (i = 0; i < `NUM_THREADS; i++) begin @@ -39,16 +39,16 @@ module VX_mul_unit #( // handle divide by zero always @(*) begin - is_div_op_in[i] = is_div_op; + is_div_divu_qual[i] = is_div_divu; div_in1 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in1[i][31], alu_in1[i]}; div_in2 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in2[i][31], alu_in2[i]}; if (0 == alu_in2[i]) begin - if (is_div_op) begin + if (is_div_divu) begin div_in1 = {1'b0, 32'hFFFFFFFF}; // quotient = (0xFFFFFFFF / 1) div_in2 = 1; end else begin - is_div_op_in[i] = 1; // remainder = (in1 / 1) + is_div_divu_qual[i] = 1; // remainder = (in1 / 1) div_in2 = 1; end end @@ -91,10 +91,13 @@ module VX_mul_unit #( .remainder(rem_result_tmp) ); - assign mul_result[i] = is_mul_op_out ? mul_result_tmp[31:0] : mul_result_tmp[63:32]; - assign div_result[i] = is_div_op_out[i] ? div_result_tmp : rem_result_tmp; + assign mul_result[i] = is_mul_mul_out ? mul_result_tmp[31:0] : mul_result_tmp[63:32]; + assign div_result[i] = is_div_divu_out[i] ? div_result_tmp : rem_result_tmp; end + wire is_mul_fire = alu_req_if.valid && alu_req_if.ready && ~`IS_DIV_OP(alu_op); + wire is_div_fire = alu_req_if.valid && alu_req_if.ready && `IS_DIV_OP(alu_op); + wire mul_valid_out; wire div_valid_out; @@ -108,8 +111,8 @@ module VX_mul_unit #( .clk(clk), .reset(reset), .enable(~stall_mul), - .in({alu_req_if.valid && ~`IS_DIV_OP(alu_op), alu_req_if.issue_tag, is_mul_op}), - .out({mul_valid_out, mul_issue_tag, is_mul_op_out}) + .in({is_mul_fire, alu_req_if.issue_tag, is_mul_mul}), + .out({mul_valid_out, mul_issue_tag, is_mul_mul_out}) ); VX_shift_register #( @@ -119,8 +122,8 @@ module VX_mul_unit #( .clk(clk), .reset(reset), .enable(~stall_div), - .in({alu_req_if.valid && `IS_DIV_OP(alu_op), alu_req_if.issue_tag, is_div_op_in}), - .out({div_valid_out, div_issue_tag, is_div_op_out}) + .in({is_div_fire, alu_req_if.issue_tag, is_div_divu_qual}), + .out({div_valid_out, div_issue_tag, is_div_divu_out}) ); wire stall_out = (~alu_commit_if.ready && alu_commit_if.valid); diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index 79219a1a..efc66237 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -245,10 +245,10 @@ module VX_pipeline #( assign core_icache_rsp_if.tag = icache_rsp_tag; assign icache_rsp_ready = core_icache_rsp_if.ready; - `SCOPE_ASSIGN(scope_busy, busy); - `SCOPE_ASSIGN(scope_schedule_delay, schedule_delay); - `SCOPE_ASSIGN(scope_mem_delay, mem_delay); - `SCOPE_ASSIGN(scope_exec_delay, exec_delay); - `SCOPE_ASSIGN(scope_gpr_stage_delay, gpr_delay); + `SCOPE_ASSIGN (scope_busy, busy); + `SCOPE_ASSIGN (scope_schedule_delay, schedule_delay); + `SCOPE_ASSIGN (scope_mem_delay, mem_delay); + `SCOPE_ASSIGN (scope_exec_delay, exec_delay); + `SCOPE_ASSIGN (scope_gpr_stage_delay, gpr_delay); endmodule diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v index d5c9ed08..a3bfa32a 100644 --- a/hw/rtl/VX_scheduler.v +++ b/hw/rtl/VX_scheduler.v @@ -10,11 +10,10 @@ module VX_scheduler #( VX_wb_if writeback_if, VX_cmt_to_issue_if cmt_to_issue_if, input wire ex_busy, - input wire gpr_busy, output wire [`ISTAG_BITS-1:0] issue_tag, output wire schedule_delay ); - localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); + localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); reg [`NUM_THREADS-1:0] inuse_registers [(`NUM_WARPS * `NUM_REGS)-1:0]; reg [`NUM_REGS-1:0] inuse_reg_mask [`NUM_WARPS-1:0]; @@ -23,13 +22,13 @@ module VX_scheduler #( wire issue_buf_full; - wire stall = gpr_busy || ex_busy || inuse_hazard || issue_buf_full; + assign schedule_delay = ex_busy || inuse_hazard || issue_buf_full; - wire issue_fire = decode_if.valid && ~stall; + wire issue_fire = decode_if.valid && decode_if.ready; + + wire writeback_fire = writeback_if.valid && writeback_if.ready; wire acquire_rd = issue_fire && (decode_if.wb != 0); - - wire release_rd = writeback_if.valid; wire [`NUM_THREADS-1:0] inuse_registers_n = inuse_registers[{writeback_if.warp_num, writeback_if.rd}] & ~writeback_if.thread_mask; @@ -46,7 +45,7 @@ module VX_scheduler #( inuse_registers[{decode_if.warp_num, decode_if.rd}] <= decode_if.thread_mask; inuse_reg_mask[decode_if.warp_num][decode_if.rd] <= 1; end - if (release_rd) begin + if (writeback_fire) begin assert(inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] != 0); inuse_registers[{writeback_if.warp_num, writeback_if.rd}] <= inuse_registers_n; inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] <= (| inuse_registers_n); @@ -59,25 +58,23 @@ module VX_scheduler #( .SIZE (`ISSUEQ_SIZE), .RPORTS (`NUM_EXS) ) issue_buffer ( - .clk (clk), - .reset (reset), - .write_data ({decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.wb}), - .write_addr (issue_tag), - .acquire_slot (issue_fire), - .release_slot ({cmt_to_issue_if.alu_valid, cmt_to_issue_if.lsu_valid, cmt_to_issue_if.csr_valid, cmt_to_issue_if.mul_valid, cmt_to_issue_if.fpu_valid, cmt_to_issue_if.gpu_valid}), - .read_addr ({cmt_to_issue_if.alu_tag, cmt_to_issue_if.lsu_tag, cmt_to_issue_if.csr_tag, cmt_to_issue_if.mul_tag, cmt_to_issue_if.fpu_tag, cmt_to_issue_if.gpu_tag}), - .read_data ({cmt_to_issue_if.alu_data, cmt_to_issue_if.lsu_data, cmt_to_issue_if.csr_data, cmt_to_issue_if.mul_data, cmt_to_issue_if.fpu_data, cmt_to_issue_if.gpu_data}), - .full (issue_buf_full) + .clk (clk), + .reset (reset), + .write_data ({decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.wb}), + .write_addr (issue_tag), + .acquire_slot (issue_fire), + .release_slot ({cmt_to_issue_if.alu_valid, cmt_to_issue_if.lsu_valid, cmt_to_issue_if.csr_valid, cmt_to_issue_if.mul_valid, cmt_to_issue_if.fpu_valid, cmt_to_issue_if.gpu_valid}), + .read_addr ({cmt_to_issue_if.alu_tag, cmt_to_issue_if.lsu_tag, cmt_to_issue_if.csr_tag, cmt_to_issue_if.mul_tag, cmt_to_issue_if.fpu_tag, cmt_to_issue_if.gpu_tag}), + .read_data ({cmt_to_issue_if.alu_data, cmt_to_issue_if.lsu_data, cmt_to_issue_if.csr_data, cmt_to_issue_if.mul_data, cmt_to_issue_if.fpu_data, cmt_to_issue_if.gpu_data}), + .full (issue_buf_full) ); - assign schedule_delay = stall; - `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if (decode_if.valid && stall) begin - $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, ex_busy=%b, gpr_busy=%b", + if (decode_if.valid && ~decode_if.ready) begin + $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, ex_busy=%b", $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, - inuse_mask[decode_if.rd], inuse_mask[decode_if.rs1], inuse_mask[decode_if.rs2], inuse_mask[decode_if.rs3], ex_busy, gpr_busy); + inuse_mask[decode_if.rd], inuse_mask[decode_if.rs1], inuse_mask[decode_if.rs2], inuse_mask[decode_if.rs3], ex_busy); end end `endif diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 2da93479..717e9cf4 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -92,6 +92,15 @@ module VX_writeback #( wb_warp_num_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.warp_num; wb_curr_PC_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.curr_PC; wb_rd_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.rd; + end + + if (gpu_commit_if.valid) begin + wb_valid_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.wb; + wb_thread_mask_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.thread_mask; + wb_data_table_n [gpu_commit_if.issue_tag] = gpu_commit_if.data; + wb_warp_num_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.warp_num; + wb_curr_PC_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.curr_PC; + wb_rd_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.rd; end end diff --git a/hw/rtl/cache/VX_bank.v b/hw/rtl/cache/VX_bank.v index 57992793..73f955a9 100644 --- a/hw/rtl/cache/VX_bank.v +++ b/hw/rtl/cache/VX_bank.v @@ -763,18 +763,18 @@ module VX_bank #( end `endif -`SCOPE_ASSIGN(scope_bank_valid_st0, qual_valid_st0); -`SCOPE_ASSIGN(scope_bank_valid_st1, valid_st1e); -`SCOPE_ASSIGN(scope_bank_valid_st2, valid_st2); +`SCOPE_ASSIGN (scope_bank_valid_st0, qual_valid_st0); +`SCOPE_ASSIGN (scope_bank_valid_st1, valid_st1e); +`SCOPE_ASSIGN (scope_bank_valid_st2, valid_st2); -`SCOPE_ASSIGN(scope_bank_is_mrvq_st1, is_mrvq_st1e); -`SCOPE_ASSIGN(scope_bank_miss_st1, miss_st1e); -`SCOPE_ASSIGN(scope_bank_dirty_st1, dirty_st1e); -`SCOPE_ASSIGN(scope_bank_force_miss_st1, force_request_miss_st1e); -`SCOPE_ASSIGN(scope_bank_stall_pipe, stall_bank_pipe); +`SCOPE_ASSIGN (scope_bank_is_mrvq_st1, is_mrvq_st1e); +`SCOPE_ASSIGN (scope_bank_miss_st1, miss_st1e); +`SCOPE_ASSIGN (scope_bank_dirty_st1, dirty_st1e); +`SCOPE_ASSIGN (scope_bank_force_miss_st1, force_request_miss_st1e); +`SCOPE_ASSIGN (scope_bank_stall_pipe, stall_bank_pipe); -`SCOPE_ASSIGN(scope_bank_addr_st0, `LINE_TO_BYTE_ADDR(qual_addr_st0, BANK_ID)); -`SCOPE_ASSIGN(scope_bank_addr_st1, `LINE_TO_BYTE_ADDR(addr_st1e, BANK_ID)); -`SCOPE_ASSIGN(scope_bank_addr_st2, `LINE_TO_BYTE_ADDR(addr_st2, BANK_ID)); +`SCOPE_ASSIGN (scope_bank_addr_st0, `LINE_TO_BYTE_ADDR(qual_addr_st0, BANK_ID)); +`SCOPE_ASSIGN (scope_bank_addr_st1, `LINE_TO_BYTE_ADDR(addr_st1e, BANK_ID)); +`SCOPE_ASSIGN (scope_bank_addr_st2, `LINE_TO_BYTE_ADDR(addr_st2, BANK_ID)); endmodule diff --git a/hw/rtl/cache/VX_tag_data_store.v b/hw/rtl/cache/VX_tag_data_store.v index 72a62a7b..e0f356cc 100644 --- a/hw/rtl/cache/VX_tag_data_store.v +++ b/hw/rtl/cache/VX_tag_data_store.v @@ -44,10 +44,9 @@ module VX_tag_data_store #( wire do_write = (| write_enable); - integer i, j; always @(posedge clk) begin if (reset) begin - for (i = 0; i < `BANK_LINE_COUNT; i++) begin + for (integer i = 0; i < `BANK_LINE_COUNT; i++) begin valid[i] <= 0; dirty[i] <= 0; end @@ -71,10 +70,10 @@ module VX_tag_data_store #( valid[write_addr] <= 0; end - for (i = 0; i < `BANK_LINE_WORDS; i++) begin - for (j = 0; j < WORD_SIZE; j++) begin - if (write_enable[i][j]) begin - data[write_addr][i][j] <= write_data[i * `WORD_WIDTH + j * 8 +: 8]; + for (integer j = 0; j < `BANK_LINE_WORDS; j++) begin + for (integer i = 0; i < WORD_SIZE; i++) begin + if (write_enable[j][i]) begin + data[write_addr][j][i] <= write_data[j * `WORD_WIDTH + i * 8 +: 8]; end end end diff --git a/hw/rtl/fp_cores/VX_fp_fpga.v b/hw/rtl/fp_cores/VX_fp_fpga.v index e2142417..fdce1d67 100644 --- a/hw/rtl/fp_cores/VX_fp_fpga.v +++ b/hw/rtl/fp_cores/VX_fp_fpga.v @@ -5,10 +5,10 @@ module VX_fp_fpga ( input wire clk, input wire reset, - input wire in_valid, - output wire in_ready, + input wire valid_in, + output wire ready_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`FPU_BITS-1:0] op, input wire [`FRM_BITS-1:0] frm, @@ -21,21 +21,22 @@ module VX_fp_fpga ( output wire has_fflags, output fflags_t [`NUM_THREADS-1:0] fflags, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); localparam NUM_FPC = 12; localparam FPC_BITS = `LOG2UP(NUM_FPC); - wire [NUM_FPC-1:0] core_in_ready; - wire [NUM_FPC-1:0][`NUM_THREADS-1:0][31:0] core_result; + wire [NUM_FPC-1:0] per_core_ready_in; + wire [NUM_FPC-1:0][`NUM_THREADS-1:0][31:0] per_core_result; + wire [NUM_FPC-1:0][`ISTAG_BITS-1:0] per_core_tag_out; + wire [NUM_FPC-1:0] per_core_ready_out; + wire [NUM_FPC-1:0] per_core_valid_out; + wire fpnew_has_fflags; fflags_t fpnew_fflags; - wire [NUM_FPC-1:0][`ISTAG_BITS-1:0] core_out_tag; - wire [NUM_FPC-1:0] core_out_ready; - wire [NUM_FPC-1:0] core_out_valid; reg [FPC_BITS-1:0] core_select; reg fmadd_negate; @@ -66,172 +67,172 @@ module VX_fp_fpga ( VX_fp_noncomp fp_noncomp ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 0)), - .in_ready (core_in_ready[0]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 0)), + .ready_in (per_core_ready_in[0]), + .tag_in (tag_in), .op (op), .frm (frm), .dataa (dataa), .datab (datab), - .result (core_result[0]), + .result (per_core_result[0]), .has_fflags (fpnew_has_fflags), .fflags (fpnew_fflags), - .out_tag (core_out_tag[0]), - .out_ready (core_out_ready[0]), - .out_valid (core_out_valid[0]) + .tag_out (per_core_tag_out[0]), + .ready_out (per_core_ready_out[0]), + .valid_out (per_core_valid_out[0]) ); VX_fp_add fp_add ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 1)), - .in_ready (core_in_ready[1]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 1)), + .ready_in (per_core_ready_in[1]), + .tag_in (tag_in), .dataa (dataa), .datab (datab), - .result (core_result[1]), - .out_tag (core_out_tag[1]), - .out_ready (core_out_ready[1]), - .out_valid (core_out_valid[1]) + .result (per_core_result[1]), + .tag_out (per_core_tag_out[1]), + .ready_out (per_core_ready_out[1]), + .valid_out (per_core_valid_out[1]) ); VX_fp_sub fp_sub ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 2)), - .in_ready (core_in_ready[2]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 2)), + .ready_in (per_core_ready_in[2]), + .tag_in (tag_in), .dataa (dataa), .datab (datab), - .result (core_result[2]), - .out_tag (core_out_tag[2]), - .out_ready (core_out_ready[2]), - .out_valid (core_out_valid[2]) + .result (per_core_result[2]), + .tag_out (per_core_tag_out[2]), + .ready_out (per_core_ready_out[2]), + .valid_out (per_core_valid_out[2]) ); VX_fp_mul fp_mul ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 3)), - .in_ready (core_in_ready[3]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 3)), + .ready_in (per_core_ready_in[3]), + .tag_in (tag_in), .dataa (dataa), .datab (datab), - .result (core_result[3]), - .out_tag (core_out_tag[3]), - .out_ready (core_out_ready[3]), - .out_valid (core_out_valid[3]) + .result (per_core_result[3]), + .tag_out (per_core_tag_out[3]), + .ready_out (per_core_ready_out[3]), + .valid_out (per_core_valid_out[3]) ); VX_fp_madd fp_madd ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 4)), - .in_ready (core_in_ready[4]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 4)), + .ready_in (per_core_ready_in[4]), + .tag_in (tag_in), .negate (fmadd_negate), .dataa (dataa), .datab (datab), .datac (datac), - .result (core_result[4]), - .out_tag (core_out_tag[4]), - .out_ready (core_out_ready[4]), - .out_valid (core_out_valid[4]) + .result (per_core_result[4]), + .tag_out (per_core_tag_out[4]), + .ready_out (per_core_ready_out[4]), + .valid_out (per_core_valid_out[4]) ); VX_fp_msub fp_msub ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 5)), - .in_ready (core_in_ready[5]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 5)), + .ready_in (per_core_ready_in[5]), + .tag_in (tag_in), .negate (fmadd_negate), .dataa (dataa), .datab (datab), .datac (datac), - .result (core_result[5]), - .out_tag (core_out_tag[5]), - .out_ready (core_out_ready[5]), - .out_valid (core_out_valid[5]) + .result (per_core_result[5]), + .tag_out (per_core_tag_out[5]), + .ready_out (per_core_ready_out[5]), + .valid_out (per_core_valid_out[5]) ); VX_fp_div fp_div ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 6)), - .in_ready (core_in_ready[6]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 6)), + .ready_in (per_core_ready_in[6]), + .tag_in (tag_in), .dataa (dataa), .datab (datab), - .result (core_result[6]), - .out_tag (core_out_tag[6]), - .out_ready (core_out_ready[6]), - .out_valid (core_out_valid[6]) + .result (per_core_result[6]), + .tag_out (per_core_tag_out[6]), + .ready_out (per_core_ready_out[6]), + .valid_out (per_core_valid_out[6]) ); VX_fp_sqrt fp_sqrt ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 7)), - .in_ready (core_in_ready[7]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 7)), + .ready_in (per_core_ready_in[7]), + .tag_in (tag_in), .dataa (dataa), - .result (core_result[7]), - .out_tag (core_out_tag[7]), - .out_ready (core_out_ready[7]), - .out_valid (core_out_valid[7]) + .result (per_core_result[7]), + .tag_out (per_core_tag_out[7]), + .ready_out (per_core_ready_out[7]), + .valid_out (per_core_valid_out[7]) ); VX_fp_ftoi fp_ftoi ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 8)), - .in_ready (core_in_ready[8]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 8)), + .ready_in (per_core_ready_in[8]), + .tag_in (tag_in), .dataa (dataa), - .result (core_result[8]), - .out_tag (core_out_tag[8]), - .out_ready (core_out_ready[8]), - .out_valid (core_out_valid[8]) + .result (per_core_result[8]), + .tag_out (per_core_tag_out[8]), + .ready_out (per_core_ready_out[8]), + .valid_out (per_core_valid_out[8]) ); VX_fp_ftou fp_ftou ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 9)), - .in_ready (core_in_ready[9]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 9)), + .ready_in (per_core_ready_in[9]), + .tag_in (tag_in), .dataa (dataa), - .result (core_result[9]), - .out_tag (core_out_tag[9]), - .out_ready (core_out_ready[9]), - .out_valid (core_out_valid[9]) + .result (per_core_result[9]), + .tag_out (per_core_tag_out[9]), + .ready_out (per_core_ready_out[9]), + .valid_out (per_core_valid_out[9]) ); VX_fp_itof fp_itof ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 10)), - .in_ready (core_in_ready[10]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 10)), + .ready_in (per_core_ready_in[10]), + .tag_in (tag_in), .dataa (dataa), - .result (core_result[10]), - .out_tag (core_out_tag[10]), - .out_ready (core_out_ready[10]), - .out_valid (core_out_valid[10]) + .result (per_core_result[10]), + .tag_out (per_core_tag_out[10]), + .ready_out (per_core_ready_out[10]), + .valid_out (per_core_valid_out[10]) ); VX_fp_utof fp_utof ( .clk (clk), .reset (reset), - .in_valid (in_valid && (core_select == 11)), - .in_ready (core_in_ready[11]), - .in_tag (in_tag), + .valid_in (valid_in && (core_select == 11)), + .ready_in (per_core_ready_in[11]), + .tag_in (tag_in), .dataa (dataa), - .result (core_result[11]), - .out_tag (core_out_tag[11]), - .out_ready (core_out_ready[11]), - .out_valid (core_out_valid[11]) + .result (per_core_result[11]), + .tag_out (per_core_tag_out[11]), + .ready_out (per_core_ready_out[11]), + .valid_out (per_core_valid_out[11]) ); wire [FPC_BITS-1:0] fp_index; @@ -240,18 +241,18 @@ module VX_fp_fpga ( VX_priority_encoder #( .N(NUM_FPC) ) wb_select ( - .data_in (core_out_valid), + .data_in (per_core_valid_out), .data_out (fp_index), .valid_out (fp_valid) ); for (i = 0; i < NUM_FPC; i++) begin - assign core_out_ready[i] = out_ready && (i == fp_index); + assign per_core_ready_out[i] = ready_out && (i == fp_index); end wire tmp_valid = fp_valid; - wire [`ISTAG_BITS-1:0] tmp_tag = core_out_tag[fp_index]; - wire [`NUM_THREADS-1:0][31:0] tmp_result = core_result[fp_index]; + wire [`ISTAG_BITS-1:0] tmp_tag = per_core_tag_out[fp_index]; + wire [`NUM_THREADS-1:0][31:0] tmp_result = per_core_result[fp_index]; wire tmp_has_fflags = fpnew_has_fflags && (fp_index == 0); fflags_t [`NUM_THREADS-1:0] tmp_flags = fpnew_fflags; @@ -263,7 +264,7 @@ module VX_fp_fpga ( .stall (stall), .flush (1'b0), .in ({tmp_valid, tmp_tag, tmp_result, tmp_has_fflags, tmp_fflags}), - .out ({out_valid, out_tag, result, has_fflags, fflags}) + .out ({valid_out, tag_out, result, has_fflags, fflags}) ); endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fp_noncomp.v b/hw/rtl/fp_cores/VX_fp_noncomp.v index 4bcde8c4..4ae4c047 100644 --- a/hw/rtl/fp_cores/VX_fp_noncomp.v +++ b/hw/rtl/fp_cores/VX_fp_noncomp.v @@ -4,10 +4,10 @@ module VX_fp_noncomp ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`FPU_BITS-1:0] op, input wire [`FRM_BITS-1:0] frm, @@ -19,10 +19,10 @@ module VX_fp_noncomp ( output wire has_fflags, output fflags_t [`NUM_THREADS-1:0] fflags, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); localparam NEG_INF = 32'h00000001, NEG_NORM = 32'h00000002, @@ -226,8 +226,8 @@ module VX_fp_noncomp ( end end - wire stall = ~out_ready && out_valid; - assign in_ready = ~stall; + wire stall = ~ready_out && valid_out; + assign ready_in = ~stall; VX_generic_register #( .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32) + 1 + (`NUM_THREADS * `FFG_BITS)) @@ -236,8 +236,8 @@ module VX_fp_noncomp ( .reset (reset), .stall (stall), .flush (1'b0), - .in ({tmp_valid, in_tag, tmp_result, tmp_has_fflags, tmp_fflags}), - .out ({out_valid, out_tag, result, has_fflags, fflags}) + .in ({tmp_valid, tag_in, tmp_result, tmp_has_fflags, tmp_fflags}), + .out ({valid_out, tag_out, result, has_fflags, fflags}) ); endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/VX_fpnew.v b/hw/rtl/fp_cores/VX_fpnew.v index 71668082..bcd27376 100644 --- a/hw/rtl/fp_cores/VX_fpnew.v +++ b/hw/rtl/fp_cores/VX_fpnew.v @@ -11,10 +11,10 @@ module VX_fpnew #( input wire clk, input wire reset, - input wire in_valid, - output wire in_ready, + input wire valid_in, + output wire ready_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`FPU_BITS-1:0] op, input wire [`FRM_BITS-1:0] frm, @@ -27,10 +27,10 @@ module VX_fpnew #( output wire has_fflags, output fflags_t [`NUM_THREADS-1:0] fflags, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); localparam UNIT_FMULADD = FMULADD ? fpnew_pkg::PARALLEL : fpnew_pkg::DISABLED; localparam UNIT_FDIVSQRT = FDIVSQRT ? fpnew_pkg::MERGED : fpnew_pkg::DISABLED; @@ -56,17 +56,17 @@ module VX_fpnew #( '{default: `LATENCY_FDIVSQRT}, // DIVSQRT '{default: `LATENCY_FNONCOMP}, // NONCOMP '{default: `LATENCY_FCONV}}, // CONV - UnitTypes:'{'{default: UNIT_FMULADD}, // ADDMUL + UnitTypes:'{'{default: UNIT_FMULADD}, // ADDMUL '{default: UNIT_FDIVSQRT}, // DIVSQRT '{default: UNIT_FNONCOMP}, // NONCOMP '{default: UNIT_FCONV}}, // CONV PipeConfig: fpnew_pkg::DISTRIBUTED }; - wire fpu_in_ready, fpu_in_valid; - wire fpu_out_ready, fpu_out_valid; + wire fpu_ready_in, fpu_valid_in; + wire fpu_ready_out, fpu_valid_out; - reg [`ISTAG_BITS-1:0] fpu_in_tag, fpu_out_tag; + reg [`ISTAG_BITS-1:0] fpu_tag_in, fpu_tag_out; reg [2:0][`NUM_THREADS-1:0][31:0] fpu_operands; @@ -77,13 +77,13 @@ module VX_fpnew #( wire [`NUM_THREADS-1:0][31:0] fpu_result; fpnew_pkg::status_t [0:`NUM_THREADS-1] fpu_status; - wire is_class_op_i, is_class_op_o; - assign is_class_op_i = (op == `FPU_CLASS); + wire is_class_op, is_class_op_out; + assign is_class_op = (op == `FPU_CLASS); reg [FOP_BITS-1:0] fpu_op; reg [`FRM_BITS-1:0] fpu_rnd; reg fpu_op_mod; - reg fpu_has_fflags, fpu_has_fflags_o; + reg fpu_has_fflags, fpu_has_fflags_out; always @(*) begin fpu_op = fpnew_pkg::SGNJ; @@ -150,15 +150,15 @@ module VX_fpnew #( .dst_fmt_i (fpnew_pkg::fp_format_e'(fpu_dst_fmt)), .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), .vectorial_op_i (1'b0), - .tag_i ({fpu_in_tag, fpu_has_fflags, is_class_op_i}), - .in_valid_i (fpu_in_valid), - .in_ready_o (fpu_in_ready), + .tag_i ({fpu_tag_in, fpu_has_fflags, is_class_op}), + .in_valid_i (fpu_valid_in), + .in_ready_o (fpu_ready_in), .flush_i (reset), .result_o (fpu_result[0]), .status_o (fpu_status[0]), - .tag_o ({fpu_out_tag, fpu_has_fflags_o, is_class_op_o}), - .out_valid_o (fpu_out_valid), - .out_ready_i (fpu_out_ready), + .tag_o ({fpu_tag_out, fpu_has_fflags_out, is_class_op_out}), + .out_valid_o (fpu_valid_out), + .out_ready_i (fpu_ready_out), `UNUSED_PIN (busy_o) ); end else begin @@ -178,14 +178,14 @@ module VX_fpnew #( .int_fmt_i (fpnew_pkg::int_format_e'(fpu_int_fmt)), .vectorial_op_i (1'b0), .tag_i (1'b0), - .in_valid_i (fpu_in_valid), + .in_valid_i (fpu_valid_in), `UNUSED_PIN (in_ready_o), .flush_i (reset), .result_o (fpu_result[i]), .status_o (fpu_status[i]), `UNUSED_PIN (tag_o), `UNUSED_PIN (out_valid_o), - .out_ready_i (fpu_out_ready), + .out_ready_i (fpu_ready_out), `UNUSED_PIN (busy_o) ); end @@ -193,19 +193,19 @@ module VX_fpnew #( `ENABLE_TRACING - assign fpu_in_valid = in_valid; - assign in_ready = fpu_in_ready - || ~in_valid; // fix fpnews's in_ready containing in_valid; + assign fpu_valid_in = valid_in; + assign ready_in = fpu_ready_in + || ~valid_in; // fix - assign fpu_in_tag = in_tag; - assign out_tag = fpu_out_tag; + assign fpu_tag_in = tag_in; + assign tag_out = fpu_tag_out; assign result = fpu_result; - assign has_fflags = fpu_has_fflags_o; + assign has_fflags = fpu_has_fflags_out; assign fflags = fpu_status; - assign out_valid = fpu_out_valid; - assign fpu_out_ready = out_ready; + assign valid_out = fpu_valid_out; + assign fpu_ready_out = ready_out; endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/VX_fp_add.v b/hw/rtl/fp_cores/altera/VX_fp_add.v index d06b80c2..e055adfa 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_add.v +++ b/hw/rtl/fp_cores/altera/VX_fp_add.v @@ -4,23 +4,23 @@ module VX_fp_add ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, input wire [`NUM_THREADS-1:0][31:0] datab, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -73,8 +73,8 @@ module VX_fp_add ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_div.v b/hw/rtl/fp_cores/altera/VX_fp_div.v index a08c1087..a0db0790 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_div.v +++ b/hw/rtl/fp_cores/altera/VX_fp_div.v @@ -4,23 +4,23 @@ module VX_fp_div ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, input wire [`NUM_THREADS-1:0][31:0] datab, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -42,8 +42,8 @@ module VX_fp_div ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_ftoi.v b/hw/rtl/fp_cores/altera/VX_fp_ftoi.v index b9e64db5..3036410a 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_ftoi.v +++ b/hw/rtl/fp_cores/altera/VX_fp_ftoi.v @@ -4,22 +4,22 @@ module VX_fp_ftoi ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -40,8 +40,8 @@ module VX_fp_ftoi ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_ftou.v b/hw/rtl/fp_cores/altera/VX_fp_ftou.v index 6044c2e5..461d45df 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_ftou.v +++ b/hw/rtl/fp_cores/altera/VX_fp_ftou.v @@ -4,22 +4,22 @@ module VX_fp_ftou ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -40,8 +40,8 @@ module VX_fp_ftou ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_itof.v b/hw/rtl/fp_cores/altera/VX_fp_itof.v index 4c8f3188..d67749ad 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_itof.v +++ b/hw/rtl/fp_cores/altera/VX_fp_itof.v @@ -4,22 +4,22 @@ module VX_fp_itof ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -40,8 +40,8 @@ module VX_fp_itof ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_madd.v b/hw/rtl/fp_cores/altera/VX_fp_madd.v index b6058e98..c7939cd7 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_madd.v +++ b/hw/rtl/fp_cores/altera/VX_fp_madd.v @@ -4,10 +4,10 @@ module VX_fp_madd ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, input wire [`NUM_THREADS-1:0][31:0] datab, @@ -16,13 +16,13 @@ module VX_fp_madd ( input wire negate, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); wire enable0, enable1; - assign in_ready = enable0 && enable1; + assign ready_in = enable0 && enable1; wire [`NUM_THREADS-1:0][31:0] result_st0, result_st1; wire [`ISTAG_BITS-1:0] out_tag_st0, out_tag_st1; @@ -119,7 +119,7 @@ module VX_fp_madd ( .clk(clk), .reset(reset), .enable(enable0), - .in({in_tag, (in_valid && ~negate), (in_valid && negate)}), + .in ({tag_in, (valid_in && ~negate), (valid_in && negate)}), .out({out_tag_st0, out_valid_st0, in_valid_st0}) ); @@ -134,12 +134,12 @@ module VX_fp_madd ( .out({out_tag_st1, out_valid_st1}) ); - wire out_stall = ~out_ready && out_valid; + wire out_stall = ~ready_out && valid_out; assign enable0 = ~out_stall; assign enable1 = ~out_stall && ~(out_valid_st0 && out_valid_st1); // stall the negate stage if dual outputs assign result = out_valid_st0 ? result_st0 : result_st1; - assign out_tag = out_valid_st0 ? out_tag_st0 : out_tag_st1; - assign out_valid = out_valid_st0 || out_valid_st1; + assign tag_out = out_valid_st0 ? out_tag_st0 : out_tag_st1; + assign valid_out = out_valid_st0 || out_valid_st1; endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_msub.v b/hw/rtl/fp_cores/altera/VX_fp_msub.v index 83a499d2..211c1b34 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_msub.v +++ b/hw/rtl/fp_cores/altera/VX_fp_msub.v @@ -4,10 +4,10 @@ module VX_fp_msub ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, input wire [`NUM_THREADS-1:0][31:0] datab, @@ -16,13 +16,13 @@ module VX_fp_msub ( input wire negate, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); wire enable0, enable1; - assign in_ready = enable0 && enable1; + assign ready_in = enable0 && enable1; wire [`NUM_THREADS-1:0][31:0] result_st0, result_st1; wire [`ISTAG_BITS-1:0] out_tag_st0, out_tag_st1; @@ -119,7 +119,7 @@ module VX_fp_msub ( .clk(clk), .reset(reset), .enable(enable0), - .in({in_tag, (in_valid && ~negate), (in_valid && negate)}), + .in ({tag_in, (valid_in && ~negate), (valid_in && negate)}), .out({out_tag_st0, out_valid_st0, in_valid_st0}) ); @@ -134,12 +134,12 @@ module VX_fp_msub ( .out({out_tag_st1, out_valid_st1}) ); - wire out_stall = ~out_ready && out_valid; + wire out_stall = ~ready_out && valid_out; assign enable0 = ~out_stall; assign enable1 = ~out_stall && ~(out_valid_st0 && out_valid_st1); // stall the negate stage if dual outputs assign result = out_valid_st0 ? result_st0 : result_st1; - assign out_tag = out_valid_st0 ? out_tag_st0 : out_tag_st1; - assign out_valid = out_valid_st0 || out_valid_st1; + assign tag_out = out_valid_st0 ? out_tag_st0 : out_tag_st1; + assign valid_out = out_valid_st0 || out_valid_st1; endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/VX_fp_mul.v b/hw/rtl/fp_cores/altera/VX_fp_mul.v index 76709969..56633586 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_mul.v +++ b/hw/rtl/fp_cores/altera/VX_fp_mul.v @@ -4,23 +4,23 @@ module VX_fp_mul ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, input wire [`NUM_THREADS-1:0][31:0] datab, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -73,8 +73,8 @@ module VX_fp_mul ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule \ No newline at end of file diff --git a/hw/rtl/fp_cores/altera/VX_fp_sqrt.v b/hw/rtl/fp_cores/altera/VX_fp_sqrt.v index 0a57adc7..22649771 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_sqrt.v +++ b/hw/rtl/fp_cores/altera/VX_fp_sqrt.v @@ -4,22 +4,22 @@ module VX_fp_sqrt ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -40,8 +40,8 @@ module VX_fp_sqrt ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_sub.v b/hw/rtl/fp_cores/altera/VX_fp_sub.v index 986c7bf0..f88567da 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_sub.v +++ b/hw/rtl/fp_cores/altera/VX_fp_sub.v @@ -4,23 +4,23 @@ module VX_fp_sub ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, input wire [`NUM_THREADS-1:0][31:0] datab, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -73,8 +73,8 @@ module VX_fp_sub ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/fp_cores/altera/VX_fp_utof.v b/hw/rtl/fp_cores/altera/VX_fp_utof.v index e4169097..601c0634 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_utof.v +++ b/hw/rtl/fp_cores/altera/VX_fp_utof.v @@ -4,22 +4,22 @@ module VX_fp_utof ( input wire clk, input wire reset, - output wire in_ready, - input wire in_valid, + output wire ready_in, + input wire valid_in, - input wire [`ISTAG_BITS-1:0] in_tag, + input wire [`ISTAG_BITS-1:0] tag_in, input wire [`NUM_THREADS-1:0][31:0] dataa, output wire [`NUM_THREADS-1:0][31:0] result, - output wire [`ISTAG_BITS-1:0] out_tag, + output wire [`ISTAG_BITS-1:0] tag_out, - input wire out_ready, - output wire out_valid + input wire ready_out, + output wire valid_out ); - wire stall = ~out_ready && out_valid; + wire stall = ~ready_out && valid_out; wire enable = ~stall; - assign in_ready = enable; + assign ready_in = enable; genvar i; @@ -40,8 +40,8 @@ module VX_fp_utof ( .clk(clk), .reset(reset), .enable(enable), - .in({in_tag, in_valid}), - .out({out_tag, out_valid}) + .in ({tag_in, valid_in}), + .out({tag_out, valid_out}) ); endmodule diff --git a/hw/rtl/interfaces/VX_csr_req_if.v b/hw/rtl/interfaces/VX_csr_req_if.v index b29cc649..1a727c7f 100644 --- a/hw/rtl/interfaces/VX_csr_req_if.v +++ b/hw/rtl/interfaces/VX_csr_req_if.v @@ -7,6 +7,9 @@ interface VX_csr_req_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; +`DEBUG_BEGIN + wire [`NUM_THREADS-1:0] thread_mask; +`DEBUG_END wire [`NW_BITS-1:0] warp_num; wire [31:0] curr_PC; diff --git a/hw/rtl/interfaces/VX_fpu_req_if.v b/hw/rtl/interfaces/VX_fpu_req_if.v index dd03f271..2c1b299d 100644 --- a/hw/rtl/interfaces/VX_fpu_req_if.v +++ b/hw/rtl/interfaces/VX_fpu_req_if.v @@ -11,7 +11,11 @@ interface VX_fpu_req_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; +`DEBUG_BEGIN + wire [`NUM_THREADS-1:0] thread_mask; +`DEBUG_END wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; wire [`FPU_BITS-1:0] fpu_op; wire [`FRM_BITS-1:0] frm; diff --git a/hw/rtl/interfaces/VX_gpr_read_if.v b/hw/rtl/interfaces/VX_gpr_read_if.v index 27310af2..9b24ce56 100644 --- a/hw/rtl/interfaces/VX_gpr_read_if.v +++ b/hw/rtl/interfaces/VX_gpr_read_if.v @@ -19,8 +19,7 @@ interface VX_gpr_read_if (); wire [`NUM_THREADS-1:0][31:0] rs2_data; wire [`NUM_THREADS-1:0][31:0] rs3_data; - wire in_ready; - wire out_ready; + wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_gpu_req_if.v b/hw/rtl/interfaces/VX_gpu_req_if.v index 38f36ab0..604f5903 100644 --- a/hw/rtl/interfaces/VX_gpu_req_if.v +++ b/hw/rtl/interfaces/VX_gpu_req_if.v @@ -9,7 +9,9 @@ interface VX_gpu_req_if(); wire [`ISTAG_BITS-1:0] issue_tag; wire [`NUM_THREADS-1:0] thread_mask; wire [`NW_BITS-1:0] warp_num; - +`DEBUG_BEGIN + wire [31:0] curr_PC; +`DEBUG_END wire [`GPU_BITS-1:0] gpu_op; wire [`NUM_THREADS-1:0][31:0] rs1_data; diff --git a/hw/rtl/interfaces/VX_mul_req_if.v b/hw/rtl/interfaces/VX_mul_req_if.v index 428edd94..44306bde 100644 --- a/hw/rtl/interfaces/VX_mul_req_if.v +++ b/hw/rtl/interfaces/VX_mul_req_if.v @@ -11,7 +11,11 @@ interface VX_mul_req_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; - +`DEBUG_BEGIN + wire [`NUM_THREADS-1:0] thread_mask; + wire [`NW_BITS-1:0] warp_num; + wire [31:0] curr_PC; +`DEBUG_END wire [`MUL_BITS-1:0] mul_op; wire [`NUM_THREADS-1:0][31:0] rs1_data; diff --git a/hw/rtl/libs/VX_elastic_buffer.v b/hw/rtl/libs/VX_elastic_buffer.v new file mode 100644 index 00000000..c551fbc6 --- /dev/null +++ b/hw/rtl/libs/VX_elastic_buffer.v @@ -0,0 +1,38 @@ +`include "VX_platform.vh" + +module VX_elastic_buffer #( + parameter DATAW = 1, + parameter SIZE = 2, + parameter BUFFERED = 1 +) ( + input wire clk, + input wire reset, + input wire valid_in, + output wire ready_in, + input wire [DATAW-1:0] data_in, + output wire [DATAW-1:0] data_out, + input wire ready_out, + output wire valid_out +); + wire empty, full; + + VX_generic_queue #( + .DATAW (DATAW), + .SIZE (SIZE), + .BUFFERED (BUFFERED) + ) queue ( + .clk (clk), + .reset (reset), + .push (valid_in), + .pop (ready_out), + .data_in(data_in), + .data_out(data_out), + .empty (empty), + .full (full), + `UNUSED_PIN (size) + ); + + assign ready_in = ~full; + assign valid_out = ~empty; + +endmodule \ No newline at end of file diff --git a/hw/rtl/libs/VX_generic_queue.v b/hw/rtl/libs/VX_generic_queue.v index 10421745..5ee61e6e 100644 --- a/hw/rtl/libs/VX_generic_queue.v +++ b/hw/rtl/libs/VX_generic_queue.v @@ -2,7 +2,7 @@ module VX_generic_queue #( parameter DATAW = 1, - parameter SIZE = 16, + parameter SIZE = 2, parameter BUFFERED = 1 ) ( input wire clk, From 71a46d04b9d2dfb9f688a641c285d5903a42145b Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Sun, 9 Aug 2020 20:07:45 -0400 Subject: [PATCH 43/94] addign dogfood kernel binary --- driver/tests/dogfood/kernel.bin | Bin 0 -> 18960 bytes driver/tests/dogfood/kernel.dump | 30752 +++++++++++++++++++++++++++++ driver/tests/dogfood/kernel.elf | Bin 0 -> 88868 bytes 3 files changed, 30752 insertions(+) create mode 100755 driver/tests/dogfood/kernel.bin create mode 100644 driver/tests/dogfood/kernel.dump create mode 100755 driver/tests/dogfood/kernel.elf diff --git a/driver/tests/dogfood/kernel.bin b/driver/tests/dogfood/kernel.bin new file mode 100755 index 0000000000000000000000000000000000000000..5eaf072cecf05f053bcc5c4b3c898f5c8adc556f GIT binary patch literal 18960 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 literal 0 HcmV?d00001 diff --git a/driver/tests/dogfood/kernel.dump b/driver/tests/dogfood/kernel.dump new file mode 100644 index 00000000..93e4d497 --- /dev/null +++ b/driver/tests/dogfood/kernel.dump @@ -0,0 +1,30752 @@ + +kernel.elf: file format elf32-littleriscv + + +Disassembly of section .init: + +80000000 <_start>: +80000000: 00001597 auipc a1,0x1 +80000004: b7458593 addi a1,a1,-1164 # 80000b74 +80000008: 02602573 csrr a0,0x26 +8000000c: 00b5106b 0xb5106b +80000010: 365000ef jal ra,80000b74 +80000014: 00100513 li a0,1 +80000018: 0005006b 0x5006b +8000001c: c3818513 addi a0,gp,-968 # 80004a10 +80000020: c4018613 addi a2,gp,-960 # 80004a18 <__BSS_END__> +80000024: 40a60633 sub a2,a2,a0 +80000028: 00000593 li a1,0 +8000002c: 14c030ef jal ra,80003178 +80000030: 00003517 auipc a0,0x3 +80000034: 05050513 addi a0,a0,80 # 80003080 <__libc_fini_array> +80000038: 7fd020ef jal ra,80003034 +8000003c: 0a0030ef jal ra,800030dc <__libc_init_array> +80000040: 008000ef jal ra,80000048
+80000044: 00c0306f j 80003050 + +Disassembly of section .text: + +80000048
: +80000048: ff010113 addi sp,sp,-16 +8000004c: 00112623 sw ra,12(sp) +80000050: 00812423 sw s0,8(sp) +80000054: 3b9000ef jal ra,80000c0c +80000058: 00050413 mv s0,a0 +8000005c: 3a9000ef jal ra,80000c04 +80000060: 7ffff7b7 lui a5,0x7ffff +80000064: 0007a783 lw a5,0(a5) # 7ffff000 <_start-0x1000> +80000068: 00050593 mv a1,a0 +8000006c: 00040513 mv a0,s0 +80000070: 00279713 slli a4,a5,0x2 +80000074: 800037b7 lui a5,0x80003 +80000078: 40c78793 addi a5,a5,1036 # 8000340c <__global_pointer$+0xffffe634> +8000007c: 00812403 lw s0,8(sp) +80000080: 00e787b3 add a5,a5,a4 +80000084: 00c12083 lw ra,12(sp) +80000088: 0007a603 lw a2,0(a5) +8000008c: 7ffff6b7 lui a3,0x7ffff +80000090: 01010113 addi sp,sp,16 +80000094: 3d90006f j 80000c6c + +80000098 : +80000098: 00000793 li a5,0 +8000009c: 00078863 beqz a5,800000ac +800000a0: 80003537 lui a0,0x80003 +800000a4: 08050513 addi a0,a0,128 # 80003080 <__global_pointer$+0xffffe2a8> +800000a8: 78d0206f j 80003034 +800000ac: 00008067 ret + +800000b0 : +800000b0: fe010113 addi sp,sp,-32 +800000b4: 00812c23 sw s0,24(sp) +800000b8: 00452403 lw s0,4(a0) +800000bc: 00912a23 sw s1,20(sp) +800000c0: 01212823 sw s2,16(sp) +800000c4: 01312623 sw s3,12(sp) +800000c8: 00c52483 lw s1,12(a0) +800000cc: 00852983 lw s3,8(a0) +800000d0: 01052903 lw s2,16(a0) +800000d4: 00112e23 sw ra,28(sp) +800000d8: 31d000ef jal ra,80000bf4 +800000dc: 02850533 mul a0,a0,s0 +800000e0: 04040063 beqz s0,80000120 +800000e4: 00a406b3 add a3,s0,a0 +800000e8: 00269693 slli a3,a3,0x2 +800000ec: 00251513 slli a0,a0,0x2 +800000f0: 013507b3 add a5,a0,s3 +800000f4: 013686b3 add a3,a3,s3 +800000f8: 41390833 sub a6,s2,s3 +800000fc: 41348533 sub a0,s1,s3 +80000100: 00f50733 add a4,a0,a5 +80000104: 0007a583 lw a1,0(a5) +80000108: 00072703 lw a4,0(a4) +8000010c: 00f80633 add a2,a6,a5 +80000110: 00478793 addi a5,a5,4 +80000114: 00b70733 add a4,a4,a1 +80000118: 00e62023 sw a4,0(a2) +8000011c: fef692e3 bne a3,a5,80000100 +80000120: 01c12083 lw ra,28(sp) +80000124: 01812403 lw s0,24(sp) +80000128: 01412483 lw s1,20(sp) +8000012c: 01012903 lw s2,16(sp) +80000130: 00c12983 lw s3,12(sp) +80000134: 02010113 addi sp,sp,32 +80000138: 00008067 ret + +8000013c : +8000013c: fe010113 addi sp,sp,-32 +80000140: 00812c23 sw s0,24(sp) +80000144: 00452403 lw s0,4(a0) +80000148: 00912a23 sw s1,20(sp) +8000014c: 01212823 sw s2,16(sp) +80000150: 01312623 sw s3,12(sp) +80000154: 00c52483 lw s1,12(a0) +80000158: 00852983 lw s3,8(a0) +8000015c: 01052903 lw s2,16(a0) +80000160: 00112e23 sw ra,28(sp) +80000164: 291000ef jal ra,80000bf4 +80000168: 02850533 mul a0,a0,s0 +8000016c: 04040063 beqz s0,800001ac +80000170: 00a406b3 add a3,s0,a0 +80000174: 00269693 slli a3,a3,0x2 +80000178: 00251513 slli a0,a0,0x2 +8000017c: 013507b3 add a5,a0,s3 +80000180: 013686b3 add a3,a3,s3 +80000184: 41390833 sub a6,s2,s3 +80000188: 41348533 sub a0,s1,s3 +8000018c: 00f50733 add a4,a0,a5 +80000190: 0007a583 lw a1,0(a5) +80000194: 00072703 lw a4,0(a4) +80000198: 00f80633 add a2,a6,a5 +8000019c: 00478793 addi a5,a5,4 +800001a0: 02b70733 mul a4,a4,a1 +800001a4: 00e62023 sw a4,0(a2) +800001a8: fef692e3 bne a3,a5,8000018c +800001ac: 01c12083 lw ra,28(sp) +800001b0: 01812403 lw s0,24(sp) +800001b4: 01412483 lw s1,20(sp) +800001b8: 01012903 lw s2,16(sp) +800001bc: 00c12983 lw s3,12(sp) +800001c0: 02010113 addi sp,sp,32 +800001c4: 00008067 ret + +800001c8 : +800001c8: fe010113 addi sp,sp,-32 +800001cc: 00812c23 sw s0,24(sp) +800001d0: 00452403 lw s0,4(a0) +800001d4: 00912a23 sw s1,20(sp) +800001d8: 01212823 sw s2,16(sp) +800001dc: 01312623 sw s3,12(sp) +800001e0: 00c52483 lw s1,12(a0) +800001e4: 00852983 lw s3,8(a0) +800001e8: 01052903 lw s2,16(a0) +800001ec: 00112e23 sw ra,28(sp) +800001f0: 205000ef jal ra,80000bf4 +800001f4: 02850533 mul a0,a0,s0 +800001f8: 04040063 beqz s0,80000238 +800001fc: 00a406b3 add a3,s0,a0 +80000200: 00269693 slli a3,a3,0x2 +80000204: 00251513 slli a0,a0,0x2 +80000208: 013507b3 add a5,a0,s3 +8000020c: 013686b3 add a3,a3,s3 +80000210: 41390833 sub a6,s2,s3 +80000214: 41348533 sub a0,s1,s3 +80000218: 00f50633 add a2,a0,a5 +8000021c: 0007a703 lw a4,0(a5) +80000220: 00062583 lw a1,0(a2) +80000224: 00f80633 add a2,a6,a5 +80000228: 00478793 addi a5,a5,4 +8000022c: 02b74733 div a4,a4,a1 +80000230: 00e62023 sw a4,0(a2) +80000234: fef692e3 bne a3,a5,80000218 +80000238: 01c12083 lw ra,28(sp) +8000023c: 01812403 lw s0,24(sp) +80000240: 01412483 lw s1,20(sp) +80000244: 01012903 lw s2,16(sp) +80000248: 00c12983 lw s3,12(sp) +8000024c: 02010113 addi sp,sp,32 +80000250: 00008067 ret + +80000254 : +80000254: fe010113 addi sp,sp,-32 +80000258: 00812c23 sw s0,24(sp) +8000025c: 00452403 lw s0,4(a0) +80000260: 00912a23 sw s1,20(sp) +80000264: 01212823 sw s2,16(sp) +80000268: 01312623 sw s3,12(sp) +8000026c: 00c52903 lw s2,12(a0) +80000270: 00852983 lw s3,8(a0) +80000274: 01052483 lw s1,16(a0) +80000278: 00112e23 sw ra,28(sp) +8000027c: 179000ef jal ra,80000bf4 +80000280: 02850533 mul a0,a0,s0 +80000284: 04040463 beqz s0,800002cc +80000288: 00a405b3 add a1,s0,a0 +8000028c: 00259593 slli a1,a1,0x2 +80000290: 00251513 slli a0,a0,0x2 +80000294: 013507b3 add a5,a0,s3 +80000298: 013585b3 add a1,a1,s3 +8000029c: 413908b3 sub a7,s2,s3 +800002a0: 41348833 sub a6,s1,s3 +800002a4: 00f886b3 add a3,a7,a5 +800002a8: 0007a703 lw a4,0(a5) +800002ac: 0006a603 lw a2,0(a3) # 7ffff000 <_start-0x1000> +800002b0: 00f80533 add a0,a6,a5 +800002b4: 00478793 addi a5,a5,4 +800002b8: 02c746b3 div a3,a4,a2 +800002bc: 02c70733 mul a4,a4,a2 +800002c0: 00e68733 add a4,a3,a4 +800002c4: 00e52023 sw a4,0(a0) +800002c8: fcf59ee3 bne a1,a5,800002a4 +800002cc: 01c12083 lw ra,28(sp) +800002d0: 01812403 lw s0,24(sp) +800002d4: 01412483 lw s1,20(sp) +800002d8: 01012903 lw s2,16(sp) +800002dc: 00c12983 lw s3,12(sp) +800002e0: 02010113 addi sp,sp,32 +800002e4: 00008067 ret + +800002e8 : +800002e8: fe010113 addi sp,sp,-32 +800002ec: 00812c23 sw s0,24(sp) +800002f0: 00452403 lw s0,4(a0) +800002f4: 00912a23 sw s1,20(sp) +800002f8: 01212823 sw s2,16(sp) +800002fc: 01312623 sw s3,12(sp) +80000300: 00c52483 lw s1,12(a0) +80000304: 00852983 lw s3,8(a0) +80000308: 01052903 lw s2,16(a0) +8000030c: 00112e23 sw ra,28(sp) +80000310: 0e5000ef jal ra,80000bf4 +80000314: 02850533 mul a0,a0,s0 +80000318: 04040063 beqz s0,80000358 +8000031c: 00a40733 add a4,s0,a0 +80000320: 00271713 slli a4,a4,0x2 +80000324: 00251513 slli a0,a0,0x2 +80000328: 013507b3 add a5,a0,s3 +8000032c: 01370733 add a4,a4,s3 +80000330: 413905b3 sub a1,s2,s3 +80000334: 41348633 sub a2,s1,s3 +80000338: 00f606b3 add a3,a2,a5 +8000033c: 0007a707 flw fa4,0(a5) +80000340: 0006a787 flw fa5,0(a3) +80000344: 00f586b3 add a3,a1,a5 +80000348: 00478793 addi a5,a5,4 +8000034c: 00e7f7d3 fadd.s fa5,fa5,fa4 +80000350: 00f6a027 fsw fa5,0(a3) +80000354: fef712e3 bne a4,a5,80000338 +80000358: 01c12083 lw ra,28(sp) +8000035c: 01812403 lw s0,24(sp) +80000360: 01412483 lw s1,20(sp) +80000364: 01012903 lw s2,16(sp) +80000368: 00c12983 lw s3,12(sp) +8000036c: 02010113 addi sp,sp,32 +80000370: 00008067 ret + +80000374 : +80000374: fe010113 addi sp,sp,-32 +80000378: 00812c23 sw s0,24(sp) +8000037c: 00452403 lw s0,4(a0) +80000380: 00912a23 sw s1,20(sp) +80000384: 01212823 sw s2,16(sp) +80000388: 01312623 sw s3,12(sp) +8000038c: 00c52483 lw s1,12(a0) +80000390: 00852983 lw s3,8(a0) +80000394: 01052903 lw s2,16(a0) +80000398: 00112e23 sw ra,28(sp) +8000039c: 059000ef jal ra,80000bf4 +800003a0: 02850533 mul a0,a0,s0 +800003a4: 04040063 beqz s0,800003e4 +800003a8: 00a40733 add a4,s0,a0 +800003ac: 00271713 slli a4,a4,0x2 +800003b0: 00251513 slli a0,a0,0x2 +800003b4: 013507b3 add a5,a0,s3 +800003b8: 01370733 add a4,a4,s3 +800003bc: 413905b3 sub a1,s2,s3 +800003c0: 41348633 sub a2,s1,s3 +800003c4: 00f606b3 add a3,a2,a5 +800003c8: 0007a787 flw fa5,0(a5) +800003cc: 0006a707 flw fa4,0(a3) +800003d0: 00f586b3 add a3,a1,a5 +800003d4: 00478793 addi a5,a5,4 +800003d8: 08e7f7d3 fsub.s fa5,fa5,fa4 +800003dc: 00f6a027 fsw fa5,0(a3) +800003e0: fef712e3 bne a4,a5,800003c4 +800003e4: 01c12083 lw ra,28(sp) +800003e8: 01812403 lw s0,24(sp) +800003ec: 01412483 lw s1,20(sp) +800003f0: 01012903 lw s2,16(sp) +800003f4: 00c12983 lw s3,12(sp) +800003f8: 02010113 addi sp,sp,32 +800003fc: 00008067 ret + +80000400 : +80000400: fe010113 addi sp,sp,-32 +80000404: 00812c23 sw s0,24(sp) +80000408: 00452403 lw s0,4(a0) +8000040c: 00912a23 sw s1,20(sp) +80000410: 01212823 sw s2,16(sp) +80000414: 01312623 sw s3,12(sp) +80000418: 00c52483 lw s1,12(a0) +8000041c: 00852983 lw s3,8(a0) +80000420: 01052903 lw s2,16(a0) +80000424: 00112e23 sw ra,28(sp) +80000428: 7cc000ef jal ra,80000bf4 +8000042c: 02850533 mul a0,a0,s0 +80000430: 04040063 beqz s0,80000470 +80000434: 00a40733 add a4,s0,a0 +80000438: 00271713 slli a4,a4,0x2 +8000043c: 00251513 slli a0,a0,0x2 +80000440: 013507b3 add a5,a0,s3 +80000444: 01370733 add a4,a4,s3 +80000448: 413905b3 sub a1,s2,s3 +8000044c: 41348633 sub a2,s1,s3 +80000450: 00f606b3 add a3,a2,a5 +80000454: 0007a707 flw fa4,0(a5) +80000458: 0006a787 flw fa5,0(a3) +8000045c: 00f586b3 add a3,a1,a5 +80000460: 00478793 addi a5,a5,4 +80000464: 10e7f7d3 fmul.s fa5,fa5,fa4 +80000468: 00f6a027 fsw fa5,0(a3) +8000046c: fef712e3 bne a4,a5,80000450 +80000470: 01c12083 lw ra,28(sp) +80000474: 01812403 lw s0,24(sp) +80000478: 01412483 lw s1,20(sp) +8000047c: 01012903 lw s2,16(sp) +80000480: 00c12983 lw s3,12(sp) +80000484: 02010113 addi sp,sp,32 +80000488: 00008067 ret + +8000048c : +8000048c: fe010113 addi sp,sp,-32 +80000490: 00812c23 sw s0,24(sp) +80000494: 00452403 lw s0,4(a0) +80000498: 00912a23 sw s1,20(sp) +8000049c: 01212823 sw s2,16(sp) +800004a0: 01312623 sw s3,12(sp) +800004a4: 00c52903 lw s2,12(a0) +800004a8: 00852983 lw s3,8(a0) +800004ac: 01052483 lw s1,16(a0) +800004b0: 00112e23 sw ra,28(sp) +800004b4: 740000ef jal ra,80000bf4 +800004b8: 02850533 mul a0,a0,s0 +800004bc: 04040263 beqz s0,80000500 +800004c0: 00a40733 add a4,s0,a0 +800004c4: 00251513 slli a0,a0,0x2 +800004c8: 00271713 slli a4,a4,0x2 +800004cc: c281a687 flw fa3,-984(gp) # 80004a00 <__SDATA_BEGIN__> +800004d0: 01370733 add a4,a4,s3 +800004d4: 013507b3 add a5,a0,s3 +800004d8: 413905b3 sub a1,s2,s3 +800004dc: 41348633 sub a2,s1,s3 +800004e0: 00f586b3 add a3,a1,a5 +800004e4: 0007a787 flw fa5,0(a5) +800004e8: 0006a707 flw fa4,0(a3) +800004ec: 00f606b3 add a3,a2,a5 +800004f0: 00478793 addi a5,a5,4 +800004f4: 68e7f7c3 fmadd.s fa5,fa5,fa4,fa3 +800004f8: 00f6a027 fsw fa5,0(a3) +800004fc: fef712e3 bne a4,a5,800004e0 +80000500: 01c12083 lw ra,28(sp) +80000504: 01812403 lw s0,24(sp) +80000508: 01412483 lw s1,20(sp) +8000050c: 01012903 lw s2,16(sp) +80000510: 00c12983 lw s3,12(sp) +80000514: 02010113 addi sp,sp,32 +80000518: 00008067 ret + +8000051c : +8000051c: fe010113 addi sp,sp,-32 +80000520: 00812c23 sw s0,24(sp) +80000524: 00452403 lw s0,4(a0) +80000528: 00912a23 sw s1,20(sp) +8000052c: 01212823 sw s2,16(sp) +80000530: 01312623 sw s3,12(sp) +80000534: 00c52903 lw s2,12(a0) +80000538: 00852983 lw s3,8(a0) +8000053c: 01052483 lw s1,16(a0) +80000540: 00112e23 sw ra,28(sp) +80000544: 6b0000ef jal ra,80000bf4 +80000548: 02850533 mul a0,a0,s0 +8000054c: 04040263 beqz s0,80000590 +80000550: 00a40733 add a4,s0,a0 +80000554: 00251513 slli a0,a0,0x2 +80000558: 00271713 slli a4,a4,0x2 +8000055c: c2c1a687 flw fa3,-980(gp) # 80004a04 <__SDATA_BEGIN__+0x4> +80000560: 01370733 add a4,a4,s3 +80000564: 013507b3 add a5,a0,s3 +80000568: 413905b3 sub a1,s2,s3 +8000056c: 41348633 sub a2,s1,s3 +80000570: 00f586b3 add a3,a1,a5 +80000574: 0007a787 flw fa5,0(a5) +80000578: 0006a707 flw fa4,0(a3) +8000057c: 00f606b3 add a3,a2,a5 +80000580: 00478793 addi a5,a5,4 +80000584: 68e7f7c3 fmadd.s fa5,fa5,fa4,fa3 +80000588: 00f6a027 fsw fa5,0(a3) +8000058c: fef712e3 bne a4,a5,80000570 +80000590: 01c12083 lw ra,28(sp) +80000594: 01812403 lw s0,24(sp) +80000598: 01412483 lw s1,20(sp) +8000059c: 01012903 lw s2,16(sp) +800005a0: 00c12983 lw s3,12(sp) +800005a4: 02010113 addi sp,sp,32 +800005a8: 00008067 ret + +800005ac : +800005ac: fe010113 addi sp,sp,-32 +800005b0: 00812c23 sw s0,24(sp) +800005b4: 00452403 lw s0,4(a0) +800005b8: 00912a23 sw s1,20(sp) +800005bc: 01212823 sw s2,16(sp) +800005c0: 01312623 sw s3,12(sp) +800005c4: 00c52903 lw s2,12(a0) +800005c8: 00852983 lw s3,8(a0) +800005cc: 01052483 lw s1,16(a0) +800005d0: 00112e23 sw ra,28(sp) +800005d4: 620000ef jal ra,80000bf4 +800005d8: 02850533 mul a0,a0,s0 +800005dc: 04040263 beqz s0,80000620 +800005e0: 00a40733 add a4,s0,a0 +800005e4: 00251513 slli a0,a0,0x2 +800005e8: 00271713 slli a4,a4,0x2 +800005ec: c2c1a687 flw fa3,-980(gp) # 80004a04 <__SDATA_BEGIN__+0x4> +800005f0: 01370733 add a4,a4,s3 +800005f4: 013507b3 add a5,a0,s3 +800005f8: 413905b3 sub a1,s2,s3 +800005fc: 41348633 sub a2,s1,s3 +80000600: 00f586b3 add a3,a1,a5 +80000604: 0007a787 flw fa5,0(a5) +80000608: 0006a707 flw fa4,0(a3) +8000060c: 00f606b3 add a3,a2,a5 +80000610: 00478793 addi a5,a5,4 +80000614: 68e7f7cb fnmsub.s fa5,fa5,fa4,fa3 +80000618: 00f6a027 fsw fa5,0(a3) +8000061c: fef712e3 bne a4,a5,80000600 +80000620: 01c12083 lw ra,28(sp) +80000624: 01812403 lw s0,24(sp) +80000628: 01412483 lw s1,20(sp) +8000062c: 01012903 lw s2,16(sp) +80000630: 00c12983 lw s3,12(sp) +80000634: 02010113 addi sp,sp,32 +80000638: 00008067 ret + +8000063c : +8000063c: fe010113 addi sp,sp,-32 +80000640: 00812c23 sw s0,24(sp) +80000644: 00452403 lw s0,4(a0) +80000648: 00912a23 sw s1,20(sp) +8000064c: 01212823 sw s2,16(sp) +80000650: 01312623 sw s3,12(sp) +80000654: 00c52903 lw s2,12(a0) +80000658: 00852983 lw s3,8(a0) +8000065c: 01052483 lw s1,16(a0) +80000660: 00112e23 sw ra,28(sp) +80000664: 590000ef jal ra,80000bf4 +80000668: 02850533 mul a0,a0,s0 +8000066c: 04040263 beqz s0,800006b0 +80000670: 00a40733 add a4,s0,a0 +80000674: 00251513 slli a0,a0,0x2 +80000678: 00271713 slli a4,a4,0x2 +8000067c: c281a687 flw fa3,-984(gp) # 80004a00 <__SDATA_BEGIN__> +80000680: 01370733 add a4,a4,s3 +80000684: 013507b3 add a5,a0,s3 +80000688: 413905b3 sub a1,s2,s3 +8000068c: 41348633 sub a2,s1,s3 +80000690: 00f586b3 add a3,a1,a5 +80000694: 0007a787 flw fa5,0(a5) +80000698: 0006a707 flw fa4,0(a3) +8000069c: 00f606b3 add a3,a2,a5 +800006a0: 00478793 addi a5,a5,4 +800006a4: 68e7f7cb fnmsub.s fa5,fa5,fa4,fa3 +800006a8: 00f6a027 fsw fa5,0(a3) +800006ac: fef712e3 bne a4,a5,80000690 +800006b0: 01c12083 lw ra,28(sp) +800006b4: 01812403 lw s0,24(sp) +800006b8: 01412483 lw s1,20(sp) +800006bc: 01012903 lw s2,16(sp) +800006c0: 00c12983 lw s3,12(sp) +800006c4: 02010113 addi sp,sp,32 +800006c8: 00008067 ret + +800006cc : +800006cc: fe010113 addi sp,sp,-32 +800006d0: 00812c23 sw s0,24(sp) +800006d4: 00452403 lw s0,4(a0) +800006d8: 00912a23 sw s1,20(sp) +800006dc: 01212823 sw s2,16(sp) +800006e0: 01312623 sw s3,12(sp) +800006e4: 00c52903 lw s2,12(a0) +800006e8: 00852983 lw s3,8(a0) +800006ec: 01052483 lw s1,16(a0) +800006f0: 00112e23 sw ra,28(sp) +800006f4: 500000ef jal ra,80000bf4 +800006f8: 02850533 mul a0,a0,s0 +800006fc: 04040863 beqz s0,8000074c +80000700: 00a40733 add a4,s0,a0 +80000704: c2c1a587 flw fa1,-980(gp) # 80004a04 <__SDATA_BEGIN__+0x4> +80000708: 00251513 slli a0,a0,0x2 +8000070c: 00271713 slli a4,a4,0x2 +80000710: c281a607 flw fa2,-984(gp) # 80004a00 <__SDATA_BEGIN__> +80000714: 01370733 add a4,a4,s3 +80000718: 013507b3 add a5,a0,s3 +8000071c: 413905b3 sub a1,s2,s3 +80000720: 41348633 sub a2,s1,s3 +80000724: 00f586b3 add a3,a1,a5 +80000728: 0007a787 flw fa5,0(a5) +8000072c: 0006a687 flw fa3,0(a3) +80000730: 00f606b3 add a3,a2,a5 +80000734: 00478793 addi a5,a5,4 +80000738: 58d7f74b fnmsub.s fa4,fa5,fa3,fa1 +8000073c: 60d7f7c3 fmadd.s fa5,fa5,fa3,fa2 +80000740: 00f777d3 fadd.s fa5,fa4,fa5 +80000744: 00f6a027 fsw fa5,0(a3) +80000748: fcf71ee3 bne a4,a5,80000724 +8000074c: 01c12083 lw ra,28(sp) +80000750: 01812403 lw s0,24(sp) +80000754: 01412483 lw s1,20(sp) +80000758: 01012903 lw s2,16(sp) +8000075c: 00c12983 lw s3,12(sp) +80000760: 02010113 addi sp,sp,32 +80000764: 00008067 ret + +80000768 : +80000768: fe010113 addi sp,sp,-32 +8000076c: 00812c23 sw s0,24(sp) +80000770: 00452403 lw s0,4(a0) +80000774: 00912a23 sw s1,20(sp) +80000778: 01212823 sw s2,16(sp) +8000077c: 01312623 sw s3,12(sp) +80000780: 00c52483 lw s1,12(a0) +80000784: 00852983 lw s3,8(a0) +80000788: 01052903 lw s2,16(a0) +8000078c: 00112e23 sw ra,28(sp) +80000790: 464000ef jal ra,80000bf4 +80000794: 02850533 mul a0,a0,s0 +80000798: 04040063 beqz s0,800007d8 +8000079c: 00a40733 add a4,s0,a0 +800007a0: 00271713 slli a4,a4,0x2 +800007a4: 00251513 slli a0,a0,0x2 +800007a8: 013507b3 add a5,a0,s3 +800007ac: 01370733 add a4,a4,s3 +800007b0: 413905b3 sub a1,s2,s3 +800007b4: 41348633 sub a2,s1,s3 +800007b8: 00f606b3 add a3,a2,a5 +800007bc: 0007a787 flw fa5,0(a5) +800007c0: 0006a707 flw fa4,0(a3) +800007c4: 00f586b3 add a3,a1,a5 +800007c8: 00478793 addi a5,a5,4 +800007cc: 18e7f7d3 fdiv.s fa5,fa5,fa4 +800007d0: 00f6a027 fsw fa5,0(a3) +800007d4: fef712e3 bne a4,a5,800007b8 +800007d8: 01c12083 lw ra,28(sp) +800007dc: 01812403 lw s0,24(sp) +800007e0: 01412483 lw s1,20(sp) +800007e4: 01012903 lw s2,16(sp) +800007e8: 00c12983 lw s3,12(sp) +800007ec: 02010113 addi sp,sp,32 +800007f0: 00008067 ret + +800007f4 : +800007f4: fe010113 addi sp,sp,-32 +800007f8: 00812c23 sw s0,24(sp) +800007fc: 00452403 lw s0,4(a0) +80000800: 00912a23 sw s1,20(sp) +80000804: 01212823 sw s2,16(sp) +80000808: 01312623 sw s3,12(sp) +8000080c: 00c52903 lw s2,12(a0) +80000810: 00852983 lw s3,8(a0) +80000814: 01052483 lw s1,16(a0) +80000818: 00112e23 sw ra,28(sp) +8000081c: 3d8000ef jal ra,80000bf4 +80000820: 02850533 mul a0,a0,s0 +80000824: 04040463 beqz s0,8000086c +80000828: 00a40733 add a4,s0,a0 +8000082c: 00271713 slli a4,a4,0x2 +80000830: 00251513 slli a0,a0,0x2 +80000834: 013507b3 add a5,a0,s3 +80000838: 01370733 add a4,a4,s3 +8000083c: 413905b3 sub a1,s2,s3 +80000840: 41348633 sub a2,s1,s3 +80000844: 00f586b3 add a3,a1,a5 +80000848: 0007a687 flw fa3,0(a5) +8000084c: 0006a787 flw fa5,0(a3) +80000850: 00f606b3 add a3,a2,a5 +80000854: 00478793 addi a5,a5,4 +80000858: 18f6f753 fdiv.s fa4,fa3,fa5 +8000085c: 18d7f7d3 fdiv.s fa5,fa5,fa3 +80000860: 00f777d3 fadd.s fa5,fa4,fa5 +80000864: 00f6a027 fsw fa5,0(a3) +80000868: fcf71ee3 bne a4,a5,80000844 +8000086c: 01c12083 lw ra,28(sp) +80000870: 01812403 lw s0,24(sp) +80000874: 01412483 lw s1,20(sp) +80000878: 01012903 lw s2,16(sp) +8000087c: 00c12983 lw s3,12(sp) +80000880: 02010113 addi sp,sp,32 +80000884: 00008067 ret + +80000888 : +80000888: fe010113 addi sp,sp,-32 +8000088c: 00812c23 sw s0,24(sp) +80000890: 00452403 lw s0,4(a0) +80000894: 00912a23 sw s1,20(sp) +80000898: 01212823 sw s2,16(sp) +8000089c: 01312623 sw s3,12(sp) +800008a0: 00c52483 lw s1,12(a0) +800008a4: 00852983 lw s3,8(a0) +800008a8: 01052903 lw s2,16(a0) +800008ac: 00112e23 sw ra,28(sp) +800008b0: 344000ef jal ra,80000bf4 +800008b4: 02850533 mul a0,a0,s0 +800008b8: 04040263 beqz s0,800008fc +800008bc: 00a406b3 add a3,s0,a0 +800008c0: 00269693 slli a3,a3,0x2 +800008c4: 00251513 slli a0,a0,0x2 +800008c8: 013507b3 add a5,a0,s3 +800008cc: 013686b3 add a3,a3,s3 +800008d0: 41390533 sub a0,s2,s3 +800008d4: 413485b3 sub a1,s1,s3 +800008d8: 00f58733 add a4,a1,a5 +800008dc: 0007a707 flw fa4,0(a5) +800008e0: 00072787 flw fa5,0(a4) +800008e4: 00f50633 add a2,a0,a5 +800008e8: 00478793 addi a5,a5,4 +800008ec: 00e7f7d3 fadd.s fa5,fa5,fa4 +800008f0: c0079753 fcvt.w.s a4,fa5,rtz +800008f4: 00e62023 sw a4,0(a2) +800008f8: fef690e3 bne a3,a5,800008d8 +800008fc: 01c12083 lw ra,28(sp) +80000900: 01812403 lw s0,24(sp) +80000904: 01412483 lw s1,20(sp) +80000908: 01012903 lw s2,16(sp) +8000090c: 00c12983 lw s3,12(sp) +80000910: 02010113 addi sp,sp,32 +80000914: 00008067 ret + +80000918 : +80000918: fe010113 addi sp,sp,-32 +8000091c: 00812c23 sw s0,24(sp) +80000920: 00452403 lw s0,4(a0) +80000924: 00912a23 sw s1,20(sp) +80000928: 01212823 sw s2,16(sp) +8000092c: 01312623 sw s3,12(sp) +80000930: 00c52483 lw s1,12(a0) +80000934: 00852983 lw s3,8(a0) +80000938: 01052903 lw s2,16(a0) +8000093c: 00112e23 sw ra,28(sp) +80000940: 2b4000ef jal ra,80000bf4 +80000944: 02850533 mul a0,a0,s0 +80000948: 04040263 beqz s0,8000098c +8000094c: 00a406b3 add a3,s0,a0 +80000950: 00269693 slli a3,a3,0x2 +80000954: 00251513 slli a0,a0,0x2 +80000958: 013507b3 add a5,a0,s3 +8000095c: 013686b3 add a3,a3,s3 +80000960: 41390533 sub a0,s2,s3 +80000964: 413485b3 sub a1,s1,s3 +80000968: 00f58733 add a4,a1,a5 +8000096c: 0007a707 flw fa4,0(a5) +80000970: 00072787 flw fa5,0(a4) +80000974: 00f50633 add a2,a0,a5 +80000978: 00478793 addi a5,a5,4 +8000097c: 00e7f7d3 fadd.s fa5,fa5,fa4 +80000980: c0179753 fcvt.wu.s a4,fa5,rtz +80000984: 00e62023 sw a4,0(a2) +80000988: fef690e3 bne a3,a5,80000968 +8000098c: 01c12083 lw ra,28(sp) +80000990: 01812403 lw s0,24(sp) +80000994: 01412483 lw s1,20(sp) +80000998: 01012903 lw s2,16(sp) +8000099c: 00c12983 lw s3,12(sp) +800009a0: 02010113 addi sp,sp,32 +800009a4: 00008067 ret + +800009a8 : +800009a8: fe010113 addi sp,sp,-32 +800009ac: 00812c23 sw s0,24(sp) +800009b0: 00452403 lw s0,4(a0) +800009b4: 00912a23 sw s1,20(sp) +800009b8: 01212823 sw s2,16(sp) +800009bc: 01312623 sw s3,12(sp) +800009c0: 00c52483 lw s1,12(a0) +800009c4: 00852983 lw s3,8(a0) +800009c8: 01052903 lw s2,16(a0) +800009cc: 00112e23 sw ra,28(sp) +800009d0: 224000ef jal ra,80000bf4 +800009d4: 02850533 mul a0,a0,s0 +800009d8: 04040263 beqz s0,80000a1c +800009dc: 00a406b3 add a3,s0,a0 +800009e0: 00269693 slli a3,a3,0x2 +800009e4: 00251513 slli a0,a0,0x2 +800009e8: 013507b3 add a5,a0,s3 +800009ec: 013686b3 add a3,a3,s3 +800009f0: 41390833 sub a6,s2,s3 +800009f4: 41348533 sub a0,s1,s3 +800009f8: 00f50733 add a4,a0,a5 +800009fc: 0007a583 lw a1,0(a5) +80000a00: 00072703 lw a4,0(a4) +80000a04: 00f80633 add a2,a6,a5 +80000a08: 00478793 addi a5,a5,4 +80000a0c: 00b70733 add a4,a4,a1 +80000a10: d00777d3 fcvt.s.w fa5,a4 +80000a14: 00f62027 fsw fa5,0(a2) +80000a18: fef690e3 bne a3,a5,800009f8 +80000a1c: 01c12083 lw ra,28(sp) +80000a20: 01812403 lw s0,24(sp) +80000a24: 01412483 lw s1,20(sp) +80000a28: 01012903 lw s2,16(sp) +80000a2c: 00c12983 lw s3,12(sp) +80000a30: 02010113 addi sp,sp,32 +80000a34: 00008067 ret + +80000a38 : +80000a38: fe010113 addi sp,sp,-32 +80000a3c: 00812c23 sw s0,24(sp) +80000a40: 00452403 lw s0,4(a0) +80000a44: 00912a23 sw s1,20(sp) +80000a48: 01212823 sw s2,16(sp) +80000a4c: 01312623 sw s3,12(sp) +80000a50: 00c52483 lw s1,12(a0) +80000a54: 00852983 lw s3,8(a0) +80000a58: 01052903 lw s2,16(a0) +80000a5c: 00112e23 sw ra,28(sp) +80000a60: 194000ef jal ra,80000bf4 +80000a64: 02850533 mul a0,a0,s0 +80000a68: 04040263 beqz s0,80000aac +80000a6c: 00a406b3 add a3,s0,a0 +80000a70: 00269693 slli a3,a3,0x2 +80000a74: 00251513 slli a0,a0,0x2 +80000a78: 013507b3 add a5,a0,s3 +80000a7c: 013686b3 add a3,a3,s3 +80000a80: 41390833 sub a6,s2,s3 +80000a84: 41348533 sub a0,s1,s3 +80000a88: 00f50733 add a4,a0,a5 +80000a8c: 0007a583 lw a1,0(a5) +80000a90: 00072703 lw a4,0(a4) +80000a94: 00f80633 add a2,a6,a5 +80000a98: 00478793 addi a5,a5,4 +80000a9c: 00b70733 add a4,a4,a1 +80000aa0: d01777d3 fcvt.s.wu fa5,a4 +80000aa4: 00f62027 fsw fa5,0(a2) +80000aa8: fef690e3 bne a3,a5,80000a88 +80000aac: 01c12083 lw ra,28(sp) +80000ab0: 01812403 lw s0,24(sp) +80000ab4: 01412483 lw s1,20(sp) +80000ab8: 01012903 lw s2,16(sp) +80000abc: 00c12983 lw s3,12(sp) +80000ac0: 02010113 addi sp,sp,32 +80000ac4: 00008067 ret + +80000ac8 : +80000ac8: fe010113 addi sp,sp,-32 +80000acc: 00912a23 sw s1,20(sp) +80000ad0: 00452483 lw s1,4(a0) +80000ad4: 01212823 sw s2,16(sp) +80000ad8: 01312623 sw s3,12(sp) +80000adc: 01412423 sw s4,8(sp) +80000ae0: 00852903 lw s2,8(a0) +80000ae4: 00c52a03 lw s4,12(a0) +80000ae8: 01052983 lw s3,16(a0) +80000aec: 00112e23 sw ra,28(sp) +80000af0: 00812c23 sw s0,24(sp) +80000af4: 100000ef jal ra,80000bf4 +80000af8: 02950533 mul a0,a0,s1 +80000afc: 04048863 beqz s1,80000b4c +80000b00: 00a484b3 add s1,s1,a0 +80000b04: 00249493 slli s1,s1,0x2 +80000b08: 00251513 slli a0,a0,0x2 +80000b0c: 01250433 add s0,a0,s2 +80000b10: 012484b3 add s1,s1,s2 +80000b14: 412a0a33 sub s4,s4,s2 +80000b18: 412989b3 sub s3,s3,s2 +80000b1c: 008a07b3 add a5,s4,s0 +80000b20: 0007a707 flw fa4,0(a5) +80000b24: 00042787 flw fa5,0(s0) +80000b28: 00898933 add s2,s3,s0 +80000b2c: 00440413 addi s0,s0,4 +80000b30: 10f777d3 fmul.s fa5,fa4,fa5 +80000b34: e0078553 fmv.x.w a0,fa5 +80000b38: 258020ef jal ra,80002d90 <__extendsfdf2> +80000b3c: 1a0000ef jal ra,80000cdc +80000b40: 328020ef jal ra,80002e68 <__truncdfsf2> +80000b44: 00a92023 sw a0,0(s2) +80000b48: fc849ae3 bne s1,s0,80000b1c +80000b4c: 01c12083 lw ra,28(sp) +80000b50: 01812403 lw s0,24(sp) +80000b54: 01412483 lw s1,20(sp) +80000b58: 01012903 lw s2,16(sp) +80000b5c: 00c12983 lw s3,12(sp) +80000b60: 00812a03 lw s4,8(sp) +80000b64: 02010113 addi sp,sp,32 +80000b68: 00008067 ret + +80000b6c <_exit>: +80000b6c: 00000513 li a0,0 +80000b70: 0005006b 0x5006b + +80000b74 : +80000b74: 02502573 csrr a0,0x25 +80000b78: 0005006b 0x5006b +80000b7c: 00004197 auipc gp,0x4 +80000b80: 25c18193 addi gp,gp,604 # 80004dd8 <__global_pointer$> +80000b84: 022025f3 csrr a1,0x22 +80000b88: 00a59593 slli a1,a1,0xa +80000b8c: 02002673 csrr a2,0x20 +80000b90: 00261613 slli a2,a2,0x2 +80000b94: 6ffff137 lui sp,0x6ffff +80000b98: 40b10133 sub sp,sp,a1 +80000b9c: 00c10133 add sp,sp,a2 +80000ba0: 021026f3 csrr a3,0x21 +80000ba4: 00068663 beqz a3,80000bb0 +80000ba8: 00000513 li a0,0 +80000bac: 0005006b 0x5006b + +80000bb0 : +80000bb0: 00008067 ret + +80000bb4 : +80000bb4: 00b5106b 0xb5106b +80000bb8: 00008067 ret + +80000bbc : +80000bbc: 0005006b 0x5006b +80000bc0: 00008067 ret + +80000bc4 : +80000bc4: 00b5406b 0xb5406b +80000bc8: 00008067 ret + +80000bcc : +80000bcc: 0005206b 0x5206b +80000bd0: 00008067 ret + +80000bd4 : +80000bd4: 0000306b 0x306b +80000bd8: 00008067 ret + +80000bdc : +80000bdc: 02102573 csrr a0,0x21 +80000be0: 00008067 ret + +80000be4 : +80000be4: 02302573 csrr a0,0x23 +80000be8: 00008067 ret + +80000bec : +80000bec: 02002573 csrr a0,0x20 +80000bf0: 00008067 ret + +80000bf4 : +80000bf4: 02202573 csrr a0,0x22 +80000bf8: 00008067 ret + +80000bfc : +80000bfc: 02402573 csrr a0,0x24 +80000c00: 00008067 ret + +80000c04 : +80000c04: 02502573 csrr a0,0x25 +80000c08: 00008067 ret + +80000c0c : +80000c0c: 02602573 csrr a0,0x26 +80000c10: 00008067 ret + +80000c14 : +80000c14: 02702573 csrr a0,0x27 +80000c18: 00008067 ret + +80000c1c : +80000c1c: c0002573 rdcycle a0 +80000c20: 00008067 ret + +80000c24 : +80000c24: c0202573 rdinstret a0 +80000c28: 00008067 ret + +80000c2c : +80000c2c: ff010113 addi sp,sp,-16 # 6fffeff0 <_start-0x10001010> +80000c30: 00812423 sw s0,8(sp) +80000c34: c381a783 lw a5,-968(gp) # 80004a10 +80000c38: 00112623 sw ra,12(sp) +80000c3c: 0087a503 lw a0,8(a5) +80000c40: f7dff0ef jal ra,80000bbc +80000c44: c381a783 lw a5,-968(gp) # 80004a10 +80000c48: 0047a503 lw a0,4(a5) +80000c4c: 0007a783 lw a5,0(a5) +80000c50: 000780e7 jalr a5 +80000c54: f89ff0ef jal ra,80000bdc +80000c58: 00812403 lw s0,8(sp) +80000c5c: 00c12083 lw ra,12(sp) +80000c60: 00153513 seqz a0,a0 +80000c64: 01010113 addi sp,sp,16 +80000c68: f55ff06f j 80000bbc + +80000c6c : +80000c6c: fe010113 addi sp,sp,-32 +80000c70: 00410793 addi a5,sp,4 +80000c74: 00812c23 sw s0,24(sp) +80000c78: c2f1ac23 sw a5,-968(gp) # 80004a10 +80000c7c: 00112e23 sw ra,28(sp) +80000c80: 00c12223 sw a2,4(sp) +80000c84: 00d12423 sw a3,8(sp) +80000c88: 00b12623 sw a1,12(sp) +80000c8c: 00100793 li a5,1 +80000c90: 00a7dc63 bge a5,a0,80000ca8 +80000c94: 800015b7 lui a1,0x80001 +80000c98: c2c58593 addi a1,a1,-980 # 80000c2c <__global_pointer$+0xffffbe54> +80000c9c: f19ff0ef jal ra,80000bb4 +80000ca0: c381a783 lw a5,-968(gp) # 80004a10 +80000ca4: 0087a583 lw a1,8(a5) +80000ca8: 00058513 mv a0,a1 +80000cac: f11ff0ef jal ra,80000bbc +80000cb0: c381a783 lw a5,-968(gp) # 80004a10 +80000cb4: 0047a503 lw a0,4(a5) +80000cb8: 0007a783 lw a5,0(a5) +80000cbc: 000780e7 jalr a5 +80000cc0: f1dff0ef jal ra,80000bdc +80000cc4: 00153513 seqz a0,a0 +80000cc8: ef5ff0ef jal ra,80000bbc +80000ccc: 01c12083 lw ra,28(sp) +80000cd0: 01812403 lw s0,24(sp) +80000cd4: 02010113 addi sp,sp,32 +80000cd8: 00008067 ret + +80000cdc : +80000cdc: fe010113 addi sp,sp,-32 +80000ce0: 00812c23 sw s0,24(sp) +80000ce4: 00912a23 sw s1,20(sp) +80000ce8: 01212823 sw s2,16(sp) +80000cec: 01312623 sw s3,12(sp) +80000cf0: 00112e23 sw ra,28(sp) +80000cf4: 00050493 mv s1,a0 +80000cf8: 00058413 mv s0,a1 +80000cfc: 098000ef jal ra,80000d94 <__ieee754_sqrt> +80000d00: c3c1a703 lw a4,-964(gp) # 80004a14 <__fdlib_version> +80000d04: fff00793 li a5,-1 +80000d08: 00050993 mv s3,a0 +80000d0c: 00058913 mv s2,a1 +80000d10: 02f70a63 beq a4,a5,80000d44 +80000d14: 00048613 mv a2,s1 +80000d18: 00048513 mv a0,s1 +80000d1c: 00040693 mv a3,s0 +80000d20: 00040593 mv a1,s0 +80000d24: 020020ef jal ra,80002d44 <__unorddf2> +80000d28: 00051e63 bnez a0,80000d44 +80000d2c: 00048513 mv a0,s1 +80000d30: 00040593 mv a1,s0 +80000d34: 00000613 li a2,0 +80000d38: 00000693 li a3,0 +80000d3c: 198010ef jal ra,80001ed4 <__ledf2> +80000d40: 02054463 bltz a0,80000d68 +80000d44: 01c12083 lw ra,28(sp) +80000d48: 01812403 lw s0,24(sp) +80000d4c: 01412483 lw s1,20(sp) +80000d50: 00098513 mv a0,s3 +80000d54: 00090593 mv a1,s2 +80000d58: 00c12983 lw s3,12(sp) +80000d5c: 01012903 lw s2,16(sp) +80000d60: 02010113 addi sp,sp,32 +80000d64: 00008067 ret +80000d68: 2e0020ef jal ra,80003048 <__errno> +80000d6c: 02100793 li a5,33 +80000d70: 00000613 li a2,0 +80000d74: 00000693 li a3,0 +80000d78: 00f52023 sw a5,0(a0) +80000d7c: 00068593 mv a1,a3 +80000d80: 00060513 mv a0,a2 +80000d84: 271000ef jal ra,800017f4 <__divdf3> +80000d88: 00050993 mv s3,a0 +80000d8c: 00058913 mv s2,a1 +80000d90: fb5ff06f j 80000d44 + +80000d94 <__ieee754_sqrt>: +80000d94: ff010113 addi sp,sp,-16 +80000d98: 7ff00737 lui a4,0x7ff00 +80000d9c: 00812423 sw s0,8(sp) +80000da0: 00912223 sw s1,4(sp) +80000da4: 00112623 sw ra,12(sp) +80000da8: 00b77633 and a2,a4,a1 +80000dac: 00058493 mv s1,a1 +80000db0: 00050413 mv s0,a0 +80000db4: 20e60663 beq a2,a4,80000fc0 <__ieee754_sqrt+0x22c> +80000db8: 00050693 mv a3,a0 +80000dbc: 14b05c63 blez a1,80000f14 <__ieee754_sqrt+0x180> +80000dc0: 4145d613 srai a2,a1,0x14 +80000dc4: 00058793 mv a5,a1 +80000dc8: 18060063 beqz a2,80000f48 <__ieee754_sqrt+0x1b4> +80000dcc: 00100737 lui a4,0x100 +80000dd0: fff70593 addi a1,a4,-1 # fffff <_start-0x7ff00001> +80000dd4: 00b7f7b3 and a5,a5,a1 +80000dd8: 00e7e7b3 or a5,a5,a4 +80000ddc: c0160493 addi s1,a2,-1023 +80000de0: 00179713 slli a4,a5,0x1 +80000de4: 0014f613 andi a2,s1,1 +80000de8: 01f6d793 srli a5,a3,0x1f +80000dec: 00f707b3 add a5,a4,a5 +80000df0: 00169713 slli a4,a3,0x1 +80000df4: 00060a63 beqz a2,80000e08 <__ieee754_sqrt+0x74> +80000df8: 01f75713 srli a4,a4,0x1f +80000dfc: 00179793 slli a5,a5,0x1 +80000e00: 00e787b3 add a5,a5,a4 +80000e04: 00269713 slli a4,a3,0x2 +80000e08: 4014d493 srai s1,s1,0x1 +80000e0c: 01600593 li a1,22 +80000e10: 00000e13 li t3,0 +80000e14: 00000693 li a3,0 +80000e18: 00200637 lui a2,0x200 +80000e1c: 00c68533 add a0,a3,a2 +80000e20: 01f75813 srli a6,a4,0x1f +80000e24: fff58593 addi a1,a1,-1 +80000e28: 00a7c863 blt a5,a0,80000e38 <__ieee754_sqrt+0xa4> +80000e2c: 40a787b3 sub a5,a5,a0 +80000e30: 00c506b3 add a3,a0,a2 +80000e34: 00ce0e33 add t3,t3,a2 +80000e38: 00179793 slli a5,a5,0x1 +80000e3c: 00f807b3 add a5,a6,a5 +80000e40: 00171713 slli a4,a4,0x1 +80000e44: 00165613 srli a2,a2,0x1 +80000e48: fc059ae3 bnez a1,80000e1c <__ieee754_sqrt+0x88> +80000e4c: 00000313 li t1,0 +80000e50: 02000513 li a0,32 +80000e54: 80000637 lui a2,0x80000 +80000e58: 0240006f j 80000e7c <__ieee754_sqrt+0xe8> +80000e5c: 12d78c63 beq a5,a3,80000f94 <__ieee754_sqrt+0x200> +80000e60: 01f75813 srli a6,a4,0x1f +80000e64: 00179793 slli a5,a5,0x1 +80000e68: fff50513 addi a0,a0,-1 +80000e6c: 010787b3 add a5,a5,a6 +80000e70: 00171713 slli a4,a4,0x1 +80000e74: 00165613 srli a2,a2,0x1 +80000e78: 04050663 beqz a0,80000ec4 <__ieee754_sqrt+0x130> +80000e7c: 00b60833 add a6,a2,a1 +80000e80: fcf6dee3 bge a3,a5,80000e5c <__ieee754_sqrt+0xc8> +80000e84: 00c805b3 add a1,a6,a2 +80000e88: 00068893 mv a7,a3 +80000e8c: 0e084c63 bltz a6,80000f84 <__ieee754_sqrt+0x1f0> +80000e90: 40d787b3 sub a5,a5,a3 +80000e94: 010736b3 sltu a3,a4,a6 +80000e98: 40d787b3 sub a5,a5,a3 +80000e9c: 41070733 sub a4,a4,a6 +80000ea0: 01f75813 srli a6,a4,0x1f +80000ea4: 00179793 slli a5,a5,0x1 +80000ea8: fff50513 addi a0,a0,-1 +80000eac: 00c30333 add t1,t1,a2 +80000eb0: 00088693 mv a3,a7 +80000eb4: 010787b3 add a5,a5,a6 +80000eb8: 00171713 slli a4,a4,0x1 +80000ebc: 00165613 srli a2,a2,0x1 +80000ec0: fa051ee3 bnez a0,80000e7c <__ieee754_sqrt+0xe8> +80000ec4: 00e7e7b3 or a5,a5,a4 +80000ec8: 0e079263 bnez a5,80000fac <__ieee754_sqrt+0x218> +80000ecc: 00135513 srli a0,t1,0x1 +80000ed0: 401e5793 srai a5,t3,0x1 +80000ed4: 3fe00737 lui a4,0x3fe00 +80000ed8: 001e7e13 andi t3,t3,1 +80000edc: 00e787b3 add a5,a5,a4 +80000ee0: 000e0663 beqz t3,80000eec <__ieee754_sqrt+0x158> +80000ee4: 80000737 lui a4,0x80000 +80000ee8: 00e56533 or a0,a0,a4 +80000eec: 01449493 slli s1,s1,0x14 +80000ef0: 00050413 mv s0,a0 +80000ef4: 00f484b3 add s1,s1,a5 +80000ef8: 00c12083 lw ra,12(sp) +80000efc: 00040513 mv a0,s0 +80000f00: 00812403 lw s0,8(sp) +80000f04: 00048593 mv a1,s1 +80000f08: 00412483 lw s1,4(sp) +80000f0c: 01010113 addi sp,sp,16 +80000f10: 00008067 ret +80000f14: 00159793 slli a5,a1,0x1 +80000f18: 0017d793 srli a5,a5,0x1 +80000f1c: 00a7e7b3 or a5,a5,a0 +80000f20: fc078ce3 beqz a5,80000ef8 <__ieee754_sqrt+0x164> +80000f24: 00000613 li a2,0 +80000f28: 0c059a63 bnez a1,80000ffc <__ieee754_sqrt+0x268> +80000f2c: 00b6d713 srli a4,a3,0xb +80000f30: feb60613 addi a2,a2,-21 # 7fffffeb <__global_pointer$+0xffffb213> +80000f34: 00070793 mv a5,a4 +80000f38: 01569693 slli a3,a3,0x15 +80000f3c: fe0708e3 beqz a4,80000f2c <__ieee754_sqrt+0x198> +80000f40: 01475593 srli a1,a4,0x14 +80000f44: 0e059263 bnez a1,80001028 <__ieee754_sqrt+0x294> +80000f48: 00000593 li a1,0 +80000f4c: 00179793 slli a5,a5,0x1 +80000f50: 00b79713 slli a4,a5,0xb +80000f54: 00058513 mv a0,a1 +80000f58: 00158593 addi a1,a1,1 +80000f5c: fe0758e3 bgez a4,80000f4c <__ieee754_sqrt+0x1b8> +80000f60: 02000893 li a7,32 +80000f64: 00068813 mv a6,a3 +80000f68: 40b888b3 sub a7,a7,a1 +80000f6c: 00078713 mv a4,a5 +80000f70: 00b696b3 sll a3,a3,a1 +80000f74: 011857b3 srl a5,a6,a7 +80000f78: 40a60633 sub a2,a2,a0 +80000f7c: 00e7e7b3 or a5,a5,a4 +80000f80: e4dff06f j 80000dcc <__ieee754_sqrt+0x38> +80000f84: fff5c893 not a7,a1 +80000f88: 01f8d893 srli a7,a7,0x1f +80000f8c: 011688b3 add a7,a3,a7 +80000f90: f01ff06f j 80000e90 <__ieee754_sqrt+0xfc> +80000f94: ed0766e3 bltu a4,a6,80000e60 <__ieee754_sqrt+0xcc> +80000f98: 00c805b3 add a1,a6,a2 +80000f9c: fe0844e3 bltz a6,80000f84 <__ieee754_sqrt+0x1f0> +80000fa0: 00078893 mv a7,a5 +80000fa4: 00000793 li a5,0 +80000fa8: ef5ff06f j 80000e9c <__ieee754_sqrt+0x108> +80000fac: fff00793 li a5,-1 +80000fb0: 06f30863 beq t1,a5,80001020 <__ieee754_sqrt+0x28c> +80000fb4: 00130513 addi a0,t1,1 +80000fb8: 00155513 srli a0,a0,0x1 +80000fbc: f15ff06f j 80000ed0 <__ieee754_sqrt+0x13c> +80000fc0: 00050613 mv a2,a0 +80000fc4: 00058693 mv a3,a1 +80000fc8: 7f1000ef jal ra,80001fb8 <__muldf3> +80000fcc: 00040613 mv a2,s0 +80000fd0: 00048693 mv a3,s1 +80000fd4: 064000ef jal ra,80001038 <__adddf3> +80000fd8: 00050413 mv s0,a0 +80000fdc: 00c12083 lw ra,12(sp) +80000fe0: 00040513 mv a0,s0 +80000fe4: 00812403 lw s0,8(sp) +80000fe8: 00058493 mv s1,a1 +80000fec: 00048593 mv a1,s1 +80000ff0: 00412483 lw s1,4(sp) +80000ff4: 01010113 addi sp,sp,16 +80000ff8: 00008067 ret +80000ffc: 00050613 mv a2,a0 +80001000: 00058693 mv a3,a1 +80001004: 578010ef jal ra,8000257c <__subdf3> +80001008: 00050613 mv a2,a0 +8000100c: 00058693 mv a3,a1 +80001010: 7e4000ef jal ra,800017f4 <__divdf3> +80001014: 00050413 mv s0,a0 +80001018: 00058493 mv s1,a1 +8000101c: eddff06f j 80000ef8 <__ieee754_sqrt+0x164> +80001020: 001e0e13 addi t3,t3,1 +80001024: eadff06f j 80000ed0 <__ieee754_sqrt+0x13c> +80001028: 00068813 mv a6,a3 +8000102c: 02000893 li a7,32 +80001030: fff00513 li a0,-1 +80001034: f41ff06f j 80000f74 <__ieee754_sqrt+0x1e0> + +80001038 <__adddf3>: +80001038: 00100837 lui a6,0x100 +8000103c: fff80813 addi a6,a6,-1 # fffff <_start-0x7ff00001> +80001040: fe010113 addi sp,sp,-32 +80001044: 00b877b3 and a5,a6,a1 +80001048: 0145d713 srli a4,a1,0x14 +8000104c: 00d87833 and a6,a6,a3 +80001050: 0146d893 srli a7,a3,0x14 +80001054: 00812c23 sw s0,24(sp) +80001058: 00379793 slli a5,a5,0x3 +8000105c: 7ff77413 andi s0,a4,2047 +80001060: 01d55713 srli a4,a0,0x1d +80001064: 00912a23 sw s1,20(sp) +80001068: 00f767b3 or a5,a4,a5 +8000106c: 01f5d493 srli s1,a1,0x1f +80001070: 01d65713 srli a4,a2,0x1d +80001074: 7ff8f893 andi a7,a7,2047 +80001078: 01f6d593 srli a1,a3,0x1f +8000107c: 00381813 slli a6,a6,0x3 +80001080: 00112e23 sw ra,28(sp) +80001084: 01212823 sw s2,16(sp) +80001088: 01312623 sw s3,12(sp) +8000108c: 00351513 slli a0,a0,0x3 +80001090: 01076733 or a4,a4,a6 +80001094: 00361613 slli a2,a2,0x3 +80001098: 411406b3 sub a3,s0,a7 +8000109c: 2cb49463 bne s1,a1,80001364 <__adddf3+0x32c> +800010a0: 10d05e63 blez a3,800011bc <__adddf3+0x184> +800010a4: 04089063 bnez a7,800010e4 <__adddf3+0xac> +800010a8: 00c765b3 or a1,a4,a2 +800010ac: 2a058863 beqz a1,8000135c <__adddf3+0x324> +800010b0: fff68593 addi a1,a3,-1 +800010b4: 02059063 bnez a1,800010d4 <__adddf3+0x9c> +800010b8: 00c50633 add a2,a0,a2 +800010bc: 00a63533 sltu a0,a2,a0 +800010c0: 00e787b3 add a5,a5,a4 +800010c4: 00a787b3 add a5,a5,a0 +800010c8: 00060513 mv a0,a2 +800010cc: 00100413 li s0,1 +800010d0: 0700006f j 80001140 <__adddf3+0x108> +800010d4: 7ff00813 li a6,2047 +800010d8: 03069063 bne a3,a6,800010f8 <__adddf3+0xc0> +800010dc: 7ff00413 li s0,2047 +800010e0: 20c0006f j 800012ec <__adddf3+0x2b4> +800010e4: 7ff00593 li a1,2047 +800010e8: 20b40263 beq s0,a1,800012ec <__adddf3+0x2b4> +800010ec: 008005b7 lui a1,0x800 +800010f0: 00b76733 or a4,a4,a1 +800010f4: 00068593 mv a1,a3 +800010f8: 03800693 li a3,56 +800010fc: 0ab6ca63 blt a3,a1,800011b0 <__adddf3+0x178> +80001100: 01f00693 li a3,31 +80001104: 06b6cc63 blt a3,a1,8000117c <__adddf3+0x144> +80001108: 02000813 li a6,32 +8000110c: 40b80833 sub a6,a6,a1 +80001110: 010716b3 sll a3,a4,a6 +80001114: 00b658b3 srl a7,a2,a1 +80001118: 01061633 sll a2,a2,a6 +8000111c: 0116e6b3 or a3,a3,a7 +80001120: 00c03633 snez a2,a2 +80001124: 00c6e633 or a2,a3,a2 +80001128: 00b75733 srl a4,a4,a1 +8000112c: 00a60633 add a2,a2,a0 +80001130: 00f70733 add a4,a4,a5 +80001134: 00a637b3 sltu a5,a2,a0 +80001138: 00f707b3 add a5,a4,a5 +8000113c: 00060513 mv a0,a2 +80001140: 00879713 slli a4,a5,0x8 +80001144: 1a075463 bgez a4,800012ec <__adddf3+0x2b4> +80001148: 00140413 addi s0,s0,1 +8000114c: 7ff00713 li a4,2047 +80001150: 5ce40463 beq s0,a4,80001718 <__adddf3+0x6e0> +80001154: ff8006b7 lui a3,0xff800 +80001158: fff68693 addi a3,a3,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +8000115c: 00d7f6b3 and a3,a5,a3 +80001160: 00155593 srli a1,a0,0x1 +80001164: 00157513 andi a0,a0,1 +80001168: 01f69793 slli a5,a3,0x1f +8000116c: 00a5e533 or a0,a1,a0 +80001170: 00a7e533 or a0,a5,a0 +80001174: 0016d793 srli a5,a3,0x1 +80001178: 1740006f j 800012ec <__adddf3+0x2b4> +8000117c: fe058693 addi a3,a1,-32 # 7fffe0 <_start-0x7f800020> +80001180: 02000893 li a7,32 +80001184: 00d756b3 srl a3,a4,a3 +80001188: 00000813 li a6,0 +8000118c: 01158863 beq a1,a7,8000119c <__adddf3+0x164> +80001190: 04000813 li a6,64 +80001194: 40b805b3 sub a1,a6,a1 +80001198: 00b71833 sll a6,a4,a1 +8000119c: 00c86633 or a2,a6,a2 +800011a0: 00c03633 snez a2,a2 +800011a4: 00c6e633 or a2,a3,a2 +800011a8: 00000713 li a4,0 +800011ac: f81ff06f j 8000112c <__adddf3+0xf4> +800011b0: 00c76633 or a2,a4,a2 +800011b4: 00c03633 snez a2,a2 +800011b8: ff1ff06f j 800011a8 <__adddf3+0x170> +800011bc: 0e068263 beqz a3,800012a0 <__adddf3+0x268> +800011c0: 408885b3 sub a1,a7,s0 +800011c4: 02041e63 bnez s0,80001200 <__adddf3+0x1c8> +800011c8: 00a7e6b3 or a3,a5,a0 +800011cc: 52068663 beqz a3,800016f8 <__adddf3+0x6c0> +800011d0: fff58693 addi a3,a1,-1 +800011d4: 00069c63 bnez a3,800011ec <__adddf3+0x1b4> +800011d8: 00c50533 add a0,a0,a2 +800011dc: 00e787b3 add a5,a5,a4 +800011e0: 00c53633 sltu a2,a0,a2 +800011e4: 00c787b3 add a5,a5,a2 +800011e8: ee5ff06f j 800010cc <__adddf3+0x94> +800011ec: 7ff00813 li a6,2047 +800011f0: 03059263 bne a1,a6,80001214 <__adddf3+0x1dc> +800011f4: 00070793 mv a5,a4 +800011f8: 00060513 mv a0,a2 +800011fc: ee1ff06f j 800010dc <__adddf3+0xa4> +80001200: 7ff00693 li a3,2047 +80001204: fed888e3 beq a7,a3,800011f4 <__adddf3+0x1bc> +80001208: 008006b7 lui a3,0x800 +8000120c: 00d7e7b3 or a5,a5,a3 +80001210: 00058693 mv a3,a1 +80001214: 03800593 li a1,56 +80001218: 06d5ce63 blt a1,a3,80001294 <__adddf3+0x25c> +8000121c: 01f00593 li a1,31 +80001220: 04d5c063 blt a1,a3,80001260 <__adddf3+0x228> +80001224: 02000813 li a6,32 +80001228: 40d80833 sub a6,a6,a3 +8000122c: 00d55333 srl t1,a0,a3 +80001230: 010795b3 sll a1,a5,a6 +80001234: 01051533 sll a0,a0,a6 +80001238: 0065e5b3 or a1,a1,t1 +8000123c: 00a03533 snez a0,a0 +80001240: 00a5e533 or a0,a1,a0 +80001244: 00d7d6b3 srl a3,a5,a3 +80001248: 00c50533 add a0,a0,a2 +8000124c: 00e687b3 add a5,a3,a4 +80001250: 00c53633 sltu a2,a0,a2 +80001254: 00c787b3 add a5,a5,a2 +80001258: 00088413 mv s0,a7 +8000125c: ee5ff06f j 80001140 <__adddf3+0x108> +80001260: fe068593 addi a1,a3,-32 # 7fffe0 <_start-0x7f800020> +80001264: 02000313 li t1,32 +80001268: 00b7d5b3 srl a1,a5,a1 +8000126c: 00000813 li a6,0 +80001270: 00668863 beq a3,t1,80001280 <__adddf3+0x248> +80001274: 04000813 li a6,64 +80001278: 40d806b3 sub a3,a6,a3 +8000127c: 00d79833 sll a6,a5,a3 +80001280: 00a86533 or a0,a6,a0 +80001284: 00a03533 snez a0,a0 +80001288: 00a5e533 or a0,a1,a0 +8000128c: 00000693 li a3,0 +80001290: fb9ff06f j 80001248 <__adddf3+0x210> +80001294: 00a7e533 or a0,a5,a0 +80001298: 00a03533 snez a0,a0 +8000129c: ff1ff06f j 8000128c <__adddf3+0x254> +800012a0: 00140693 addi a3,s0,1 +800012a4: 7fe6f593 andi a1,a3,2046 +800012a8: 08059663 bnez a1,80001334 <__adddf3+0x2fc> +800012ac: 00a7e6b3 or a3,a5,a0 +800012b0: 06041263 bnez s0,80001314 <__adddf3+0x2dc> +800012b4: 44068a63 beqz a3,80001708 <__adddf3+0x6d0> +800012b8: 00c766b3 or a3,a4,a2 +800012bc: 02068863 beqz a3,800012ec <__adddf3+0x2b4> +800012c0: 00c50633 add a2,a0,a2 +800012c4: 00e787b3 add a5,a5,a4 +800012c8: 00a63533 sltu a0,a2,a0 +800012cc: 00a787b3 add a5,a5,a0 +800012d0: 00879713 slli a4,a5,0x8 +800012d4: 00060513 mv a0,a2 +800012d8: 00075a63 bgez a4,800012ec <__adddf3+0x2b4> +800012dc: ff800737 lui a4,0xff800 +800012e0: fff70713 addi a4,a4,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +800012e4: 00e7f7b3 and a5,a5,a4 +800012e8: 00100413 li s0,1 +800012ec: 00757713 andi a4,a0,7 +800012f0: 42070863 beqz a4,80001720 <__adddf3+0x6e8> +800012f4: 00f57713 andi a4,a0,15 +800012f8: 00400693 li a3,4 +800012fc: 42d70263 beq a4,a3,80001720 <__adddf3+0x6e8> +80001300: 00450693 addi a3,a0,4 +80001304: 00a6b533 sltu a0,a3,a0 +80001308: 00a787b3 add a5,a5,a0 +8000130c: 00068513 mv a0,a3 +80001310: 4100006f j 80001720 <__adddf3+0x6e8> +80001314: ee0680e3 beqz a3,800011f4 <__adddf3+0x1bc> +80001318: 00c76633 or a2,a4,a2 +8000131c: dc0600e3 beqz a2,800010dc <__adddf3+0xa4> +80001320: 00000493 li s1,0 +80001324: 004007b7 lui a5,0x400 +80001328: 00000513 li a0,0 +8000132c: 7ff00413 li s0,2047 +80001330: 3f00006f j 80001720 <__adddf3+0x6e8> +80001334: 7ff00593 li a1,2047 +80001338: 3cb68e63 beq a3,a1,80001714 <__adddf3+0x6dc> +8000133c: 00c50633 add a2,a0,a2 +80001340: 00e78733 add a4,a5,a4 +80001344: 00a637b3 sltu a5,a2,a0 +80001348: 00f70733 add a4,a4,a5 +8000134c: 01f71513 slli a0,a4,0x1f +80001350: 00165613 srli a2,a2,0x1 +80001354: 00c56533 or a0,a0,a2 +80001358: 00175793 srli a5,a4,0x1 +8000135c: 00068413 mv s0,a3 +80001360: f8dff06f j 800012ec <__adddf3+0x2b4> +80001364: 0ed05c63 blez a3,8000145c <__adddf3+0x424> +80001368: 08089e63 bnez a7,80001404 <__adddf3+0x3cc> +8000136c: 00c765b3 or a1,a4,a2 +80001370: fe0586e3 beqz a1,8000135c <__adddf3+0x324> +80001374: fff68593 addi a1,a3,-1 +80001378: 02059063 bnez a1,80001398 <__adddf3+0x360> +8000137c: 40c50633 sub a2,a0,a2 +80001380: 00c53533 sltu a0,a0,a2 +80001384: 40e787b3 sub a5,a5,a4 +80001388: 40a787b3 sub a5,a5,a0 +8000138c: 00060513 mv a0,a2 +80001390: 00100413 li s0,1 +80001394: 0540006f j 800013e8 <__adddf3+0x3b0> +80001398: 7ff00813 li a6,2047 +8000139c: d50680e3 beq a3,a6,800010dc <__adddf3+0xa4> +800013a0: 03800693 li a3,56 +800013a4: 0ab6c663 blt a3,a1,80001450 <__adddf3+0x418> +800013a8: 01f00693 li a3,31 +800013ac: 06b6c863 blt a3,a1,8000141c <__adddf3+0x3e4> +800013b0: 02000813 li a6,32 +800013b4: 40b80833 sub a6,a6,a1 +800013b8: 010716b3 sll a3,a4,a6 +800013bc: 00b658b3 srl a7,a2,a1 +800013c0: 01061633 sll a2,a2,a6 +800013c4: 0116e6b3 or a3,a3,a7 +800013c8: 00c03633 snez a2,a2 +800013cc: 00c6e633 or a2,a3,a2 +800013d0: 00b75733 srl a4,a4,a1 +800013d4: 40c50633 sub a2,a0,a2 +800013d8: 40e78733 sub a4,a5,a4 +800013dc: 00c537b3 sltu a5,a0,a2 +800013e0: 40f707b3 sub a5,a4,a5 +800013e4: 00060513 mv a0,a2 +800013e8: 00879713 slli a4,a5,0x8 +800013ec: f00750e3 bgez a4,800012ec <__adddf3+0x2b4> +800013f0: 00800937 lui s2,0x800 +800013f4: fff90913 addi s2,s2,-1 # 7fffff <_start-0x7f800001> +800013f8: 0127f933 and s2,a5,s2 +800013fc: 00050993 mv s3,a0 +80001400: 20c0006f j 8000160c <__adddf3+0x5d4> +80001404: 7ff00593 li a1,2047 +80001408: eeb402e3 beq s0,a1,800012ec <__adddf3+0x2b4> +8000140c: 008005b7 lui a1,0x800 +80001410: 00b76733 or a4,a4,a1 +80001414: 00068593 mv a1,a3 +80001418: f89ff06f j 800013a0 <__adddf3+0x368> +8000141c: fe058693 addi a3,a1,-32 # 7fffe0 <_start-0x7f800020> +80001420: 02000893 li a7,32 +80001424: 00d756b3 srl a3,a4,a3 +80001428: 00000813 li a6,0 +8000142c: 01158863 beq a1,a7,8000143c <__adddf3+0x404> +80001430: 04000813 li a6,64 +80001434: 40b805b3 sub a1,a6,a1 +80001438: 00b71833 sll a6,a4,a1 +8000143c: 00c86633 or a2,a6,a2 +80001440: 00c03633 snez a2,a2 +80001444: 00c6e633 or a2,a3,a2 +80001448: 00000713 li a4,0 +8000144c: f89ff06f j 800013d4 <__adddf3+0x39c> +80001450: 00c76633 or a2,a4,a2 +80001454: 00c03633 snez a2,a2 +80001458: ff1ff06f j 80001448 <__adddf3+0x410> +8000145c: 0e068863 beqz a3,8000154c <__adddf3+0x514> +80001460: 40888833 sub a6,a7,s0 +80001464: 04041263 bnez s0,800014a8 <__adddf3+0x470> +80001468: 00a7e6b3 or a3,a5,a0 +8000146c: 34068263 beqz a3,800017b0 <__adddf3+0x778> +80001470: fff80693 addi a3,a6,-1 +80001474: 00069e63 bnez a3,80001490 <__adddf3+0x458> +80001478: 40a60533 sub a0,a2,a0 +8000147c: 40f707b3 sub a5,a4,a5 +80001480: 00a63633 sltu a2,a2,a0 +80001484: 40c787b3 sub a5,a5,a2 +80001488: 00058493 mv s1,a1 +8000148c: f05ff06f j 80001390 <__adddf3+0x358> +80001490: 7ff00313 li t1,2047 +80001494: 02681463 bne a6,t1,800014bc <__adddf3+0x484> +80001498: 00070793 mv a5,a4 +8000149c: 00060513 mv a0,a2 +800014a0: 7ff00413 li s0,2047 +800014a4: 0d00006f j 80001574 <__adddf3+0x53c> +800014a8: 7ff00693 li a3,2047 +800014ac: fed886e3 beq a7,a3,80001498 <__adddf3+0x460> +800014b0: 008006b7 lui a3,0x800 +800014b4: 00d7e7b3 or a5,a5,a3 +800014b8: 00080693 mv a3,a6 +800014bc: 03800813 li a6,56 +800014c0: 08d84063 blt a6,a3,80001540 <__adddf3+0x508> +800014c4: 01f00813 li a6,31 +800014c8: 04d84263 blt a6,a3,8000150c <__adddf3+0x4d4> +800014cc: 02000313 li t1,32 +800014d0: 40d30333 sub t1,t1,a3 +800014d4: 00d55e33 srl t3,a0,a3 +800014d8: 00679833 sll a6,a5,t1 +800014dc: 00651533 sll a0,a0,t1 +800014e0: 01c86833 or a6,a6,t3 +800014e4: 00a03533 snez a0,a0 +800014e8: 00a86533 or a0,a6,a0 +800014ec: 00d7d6b3 srl a3,a5,a3 +800014f0: 40a60533 sub a0,a2,a0 +800014f4: 40d707b3 sub a5,a4,a3 +800014f8: 00a63633 sltu a2,a2,a0 +800014fc: 40c787b3 sub a5,a5,a2 +80001500: 00088413 mv s0,a7 +80001504: 00058493 mv s1,a1 +80001508: ee1ff06f j 800013e8 <__adddf3+0x3b0> +8000150c: fe068813 addi a6,a3,-32 # 7fffe0 <_start-0x7f800020> +80001510: 02000e13 li t3,32 +80001514: 0107d833 srl a6,a5,a6 +80001518: 00000313 li t1,0 +8000151c: 01c68863 beq a3,t3,8000152c <__adddf3+0x4f4> +80001520: 04000313 li t1,64 +80001524: 40d306b3 sub a3,t1,a3 +80001528: 00d79333 sll t1,a5,a3 +8000152c: 00a36533 or a0,t1,a0 +80001530: 00a03533 snez a0,a0 +80001534: 00a86533 or a0,a6,a0 +80001538: 00000693 li a3,0 +8000153c: fb5ff06f j 800014f0 <__adddf3+0x4b8> +80001540: 00a7e533 or a0,a5,a0 +80001544: 00a03533 snez a0,a0 +80001548: ff1ff06f j 80001538 <__adddf3+0x500> +8000154c: 00140693 addi a3,s0,1 +80001550: 7fe6f693 andi a3,a3,2046 +80001554: 08069663 bnez a3,800015e0 <__adddf3+0x5a8> +80001558: 00a7e833 or a6,a5,a0 +8000155c: 00c766b3 or a3,a4,a2 +80001560: 06041063 bnez s0,800015c0 <__adddf3+0x588> +80001564: 00081c63 bnez a6,8000157c <__adddf3+0x544> +80001568: 24068c63 beqz a3,800017c0 <__adddf3+0x788> +8000156c: 00070793 mv a5,a4 +80001570: 00060513 mv a0,a2 +80001574: 00058493 mv s1,a1 +80001578: d75ff06f j 800012ec <__adddf3+0x2b4> +8000157c: d60688e3 beqz a3,800012ec <__adddf3+0x2b4> +80001580: 40c50833 sub a6,a0,a2 +80001584: 010538b3 sltu a7,a0,a6 +80001588: 40e786b3 sub a3,a5,a4 +8000158c: 411686b3 sub a3,a3,a7 +80001590: 00869893 slli a7,a3,0x8 +80001594: 0008dc63 bgez a7,800015ac <__adddf3+0x574> +80001598: 40a60533 sub a0,a2,a0 +8000159c: 40f707b3 sub a5,a4,a5 +800015a0: 00a63633 sltu a2,a2,a0 +800015a4: 40c787b3 sub a5,a5,a2 +800015a8: fcdff06f j 80001574 <__adddf3+0x53c> +800015ac: 00d86533 or a0,a6,a3 +800015b0: 22050063 beqz a0,800017d0 <__adddf3+0x798> +800015b4: 00068793 mv a5,a3 +800015b8: 00080513 mv a0,a6 +800015bc: d31ff06f j 800012ec <__adddf3+0x2b4> +800015c0: 00081c63 bnez a6,800015d8 <__adddf3+0x5a0> +800015c4: 20068a63 beqz a3,800017d8 <__adddf3+0x7a0> +800015c8: 00070793 mv a5,a4 +800015cc: 00060513 mv a0,a2 +800015d0: 00058493 mv s1,a1 +800015d4: b09ff06f j 800010dc <__adddf3+0xa4> +800015d8: b00682e3 beqz a3,800010dc <__adddf3+0xa4> +800015dc: d45ff06f j 80001320 <__adddf3+0x2e8> +800015e0: 40c509b3 sub s3,a0,a2 +800015e4: 013536b3 sltu a3,a0,s3 +800015e8: 40e78933 sub s2,a5,a4 +800015ec: 40d90933 sub s2,s2,a3 +800015f0: 00891693 slli a3,s2,0x8 +800015f4: 0806d463 bgez a3,8000167c <__adddf3+0x644> +800015f8: 40a609b3 sub s3,a2,a0 +800015fc: 40f707b3 sub a5,a4,a5 +80001600: 01363633 sltu a2,a2,s3 +80001604: 40c78933 sub s2,a5,a2 +80001608: 00058493 mv s1,a1 +8000160c: 08090263 beqz s2,80001690 <__adddf3+0x658> +80001610: 00090513 mv a0,s2 +80001614: 1d5010ef jal ra,80002fe8 <__clzsi2> +80001618: ff850713 addi a4,a0,-8 +8000161c: 01f00793 li a5,31 +80001620: 08e7c063 blt a5,a4,800016a0 <__adddf3+0x668> +80001624: 02000693 li a3,32 +80001628: 40e686b3 sub a3,a3,a4 +8000162c: 00e917b3 sll a5,s2,a4 +80001630: 00d9d6b3 srl a3,s3,a3 +80001634: 00f6e6b3 or a3,a3,a5 +80001638: 00e99533 sll a0,s3,a4 +8000163c: 0a874463 blt a4,s0,800016e4 <__adddf3+0x6ac> +80001640: 40870733 sub a4,a4,s0 +80001644: 00170793 addi a5,a4,1 +80001648: 01f00613 li a2,31 +8000164c: 06f64263 blt a2,a5,800016b0 <__adddf3+0x678> +80001650: 02000713 li a4,32 +80001654: 40f70733 sub a4,a4,a5 +80001658: 00f555b3 srl a1,a0,a5 +8000165c: 00e69633 sll a2,a3,a4 +80001660: 00e51533 sll a0,a0,a4 +80001664: 00b66633 or a2,a2,a1 +80001668: 00a03533 snez a0,a0 +8000166c: 00a66533 or a0,a2,a0 +80001670: 00f6d7b3 srl a5,a3,a5 +80001674: 00000413 li s0,0 +80001678: c75ff06f j 800012ec <__adddf3+0x2b4> +8000167c: 0129e533 or a0,s3,s2 +80001680: f80516e3 bnez a0,8000160c <__adddf3+0x5d4> +80001684: 00000793 li a5,0 +80001688: 00000413 li s0,0 +8000168c: 13c0006f j 800017c8 <__adddf3+0x790> +80001690: 00098513 mv a0,s3 +80001694: 155010ef jal ra,80002fe8 <__clzsi2> +80001698: 02050513 addi a0,a0,32 +8000169c: f7dff06f j 80001618 <__adddf3+0x5e0> +800016a0: fd850513 addi a0,a0,-40 +800016a4: 00a996b3 sll a3,s3,a0 +800016a8: 00000513 li a0,0 +800016ac: f91ff06f j 8000163c <__adddf3+0x604> +800016b0: fe170713 addi a4,a4,-31 +800016b4: 02000593 li a1,32 +800016b8: 00e6d733 srl a4,a3,a4 +800016bc: 00000613 li a2,0 +800016c0: 00b78863 beq a5,a1,800016d0 <__adddf3+0x698> +800016c4: 04000613 li a2,64 +800016c8: 40f60633 sub a2,a2,a5 +800016cc: 00c69633 sll a2,a3,a2 +800016d0: 00c56533 or a0,a0,a2 +800016d4: 00a03533 snez a0,a0 +800016d8: 00a76533 or a0,a4,a0 +800016dc: 00000793 li a5,0 +800016e0: f95ff06f j 80001674 <__adddf3+0x63c> +800016e4: ff8007b7 lui a5,0xff800 +800016e8: fff78793 addi a5,a5,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +800016ec: 40e40433 sub s0,s0,a4 +800016f0: 00f6f7b3 and a5,a3,a5 +800016f4: bf9ff06f j 800012ec <__adddf3+0x2b4> +800016f8: 00070793 mv a5,a4 +800016fc: 00060513 mv a0,a2 +80001700: 00058413 mv s0,a1 +80001704: be9ff06f j 800012ec <__adddf3+0x2b4> +80001708: 00070793 mv a5,a4 +8000170c: 00060513 mv a0,a2 +80001710: bddff06f j 800012ec <__adddf3+0x2b4> +80001714: 7ff00413 li s0,2047 +80001718: 00000793 li a5,0 +8000171c: 00000513 li a0,0 +80001720: 00879713 slli a4,a5,0x8 +80001724: 00075e63 bgez a4,80001740 <__adddf3+0x708> +80001728: 00140413 addi s0,s0,1 +8000172c: 7ff00713 li a4,2047 +80001730: 0ae40c63 beq s0,a4,800017e8 <__adddf3+0x7b0> +80001734: ff800737 lui a4,0xff800 +80001738: fff70713 addi a4,a4,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +8000173c: 00e7f7b3 and a5,a5,a4 +80001740: 01d79713 slli a4,a5,0x1d +80001744: 00355513 srli a0,a0,0x3 +80001748: 00a76533 or a0,a4,a0 +8000174c: 7ff00713 li a4,2047 +80001750: 0037d793 srli a5,a5,0x3 +80001754: 00e41e63 bne s0,a4,80001770 <__adddf3+0x738> +80001758: 00f56533 or a0,a0,a5 +8000175c: 00000793 li a5,0 +80001760: 00050863 beqz a0,80001770 <__adddf3+0x738> +80001764: 000807b7 lui a5,0x80 +80001768: 00000513 li a0,0 +8000176c: 00000493 li s1,0 +80001770: 01441713 slli a4,s0,0x14 +80001774: 7ff006b7 lui a3,0x7ff00 +80001778: 00c79793 slli a5,a5,0xc +8000177c: 01c12083 lw ra,28(sp) +80001780: 01812403 lw s0,24(sp) +80001784: 00d77733 and a4,a4,a3 +80001788: 00c7d793 srli a5,a5,0xc +8000178c: 01f49493 slli s1,s1,0x1f +80001790: 00f767b3 or a5,a4,a5 +80001794: 0097e733 or a4,a5,s1 +80001798: 01012903 lw s2,16(sp) +8000179c: 01412483 lw s1,20(sp) +800017a0: 00c12983 lw s3,12(sp) +800017a4: 00070593 mv a1,a4 +800017a8: 02010113 addi sp,sp,32 +800017ac: 00008067 ret +800017b0: 00070793 mv a5,a4 +800017b4: 00060513 mv a0,a2 +800017b8: 00080413 mv s0,a6 +800017bc: db9ff06f j 80001574 <__adddf3+0x53c> +800017c0: 00000793 li a5,0 +800017c4: 00000513 li a0,0 +800017c8: 00000493 li s1,0 +800017cc: f55ff06f j 80001720 <__adddf3+0x6e8> +800017d0: 00000793 li a5,0 +800017d4: ff5ff06f j 800017c8 <__adddf3+0x790> +800017d8: 00000513 li a0,0 +800017dc: 00000493 li s1,0 +800017e0: 004007b7 lui a5,0x400 +800017e4: b49ff06f j 8000132c <__adddf3+0x2f4> +800017e8: 00000793 li a5,0 +800017ec: 00000513 li a0,0 +800017f0: f51ff06f j 80001740 <__adddf3+0x708> + +800017f4 <__divdf3>: +800017f4: fd010113 addi sp,sp,-48 +800017f8: 0145d793 srli a5,a1,0x14 +800017fc: 02912223 sw s1,36(sp) +80001800: 03212023 sw s2,32(sp) +80001804: 01412c23 sw s4,24(sp) +80001808: 01612823 sw s6,16(sp) +8000180c: 01812423 sw s8,8(sp) +80001810: 00c59493 slli s1,a1,0xc +80001814: 02112623 sw ra,44(sp) +80001818: 02812423 sw s0,40(sp) +8000181c: 01312e23 sw s3,28(sp) +80001820: 01512a23 sw s5,20(sp) +80001824: 01712623 sw s7,12(sp) +80001828: 01579713 slli a4,a5,0x15 +8000182c: 00050913 mv s2,a0 +80001830: 00060b13 mv s6,a2 +80001834: 00068c13 mv s8,a3 +80001838: 00c4d493 srli s1,s1,0xc +8000183c: 01f5da13 srli s4,a1,0x1f +80001840: 0a070463 beqz a4,800018e8 <__divdf3+0xf4> +80001844: 7ff7fa93 andi s5,a5,2047 +80001848: 7ff00793 li a5,2047 +8000184c: 10fa8063 beq s5,a5,8000194c <__divdf3+0x158> +80001850: 01d55993 srli s3,a0,0x1d +80001854: 00349493 slli s1,s1,0x3 +80001858: 0099e4b3 or s1,s3,s1 +8000185c: 008009b7 lui s3,0x800 +80001860: 0134e9b3 or s3,s1,s3 +80001864: 00351413 slli s0,a0,0x3 +80001868: c01a8a93 addi s5,s5,-1023 +8000186c: 00000b93 li s7,0 +80001870: 014c5793 srli a5,s8,0x14 +80001874: 00cc1513 slli a0,s8,0xc +80001878: 01579713 slli a4,a5,0x15 +8000187c: 00c55493 srli s1,a0,0xc +80001880: 7ff7f593 andi a1,a5,2047 +80001884: 01fc5c13 srli s8,s8,0x1f +80001888: 10070063 beqz a4,80001988 <__divdf3+0x194> +8000188c: 7ff00793 li a5,2047 +80001890: 16f58263 beq a1,a5,800019f4 <__divdf3+0x200> +80001894: 00349513 slli a0,s1,0x3 +80001898: 01db5793 srli a5,s6,0x1d +8000189c: 00a7e533 or a0,a5,a0 +800018a0: 008004b7 lui s1,0x800 +800018a4: 009564b3 or s1,a0,s1 +800018a8: 003b1f93 slli t6,s6,0x3 +800018ac: c0158513 addi a0,a1,-1023 +800018b0: 00000613 li a2,0 +800018b4: 002b9793 slli a5,s7,0x2 +800018b8: 00c7e7b3 or a5,a5,a2 +800018bc: fff78793 addi a5,a5,-1 # 3fffff <_start-0x7fc00001> +800018c0: 00e00713 li a4,14 +800018c4: 018a46b3 xor a3,s4,s8 +800018c8: 40aa85b3 sub a1,s5,a0 +800018cc: 16f76063 bltu a4,a5,80001a2c <__divdf3+0x238> +800018d0: 80003737 lui a4,0x80003 +800018d4: 00279793 slli a5,a5,0x2 +800018d8: 45870713 addi a4,a4,1112 # 80003458 <__global_pointer$+0xffffe680> +800018dc: 00e787b3 add a5,a5,a4 +800018e0: 0007a783 lw a5,0(a5) +800018e4: 00078067 jr a5 +800018e8: 00a4e9b3 or s3,s1,a0 +800018ec: 06098e63 beqz s3,80001968 <__divdf3+0x174> +800018f0: 04048063 beqz s1,80001930 <__divdf3+0x13c> +800018f4: 00048513 mv a0,s1 +800018f8: 6f0010ef jal ra,80002fe8 <__clzsi2> +800018fc: ff550793 addi a5,a0,-11 +80001900: 01c00713 li a4,28 +80001904: 02f74c63 blt a4,a5,8000193c <__divdf3+0x148> +80001908: 01d00993 li s3,29 +8000190c: ff850413 addi s0,a0,-8 +80001910: 40f989b3 sub s3,s3,a5 +80001914: 008494b3 sll s1,s1,s0 +80001918: 013959b3 srl s3,s2,s3 +8000191c: 0099e9b3 or s3,s3,s1 +80001920: 00891433 sll s0,s2,s0 +80001924: c0d00593 li a1,-1011 +80001928: 40a58ab3 sub s5,a1,a0 +8000192c: f41ff06f j 8000186c <__divdf3+0x78> +80001930: 6b8010ef jal ra,80002fe8 <__clzsi2> +80001934: 02050513 addi a0,a0,32 +80001938: fc5ff06f j 800018fc <__divdf3+0x108> +8000193c: fd850493 addi s1,a0,-40 +80001940: 009919b3 sll s3,s2,s1 +80001944: 00000413 li s0,0 +80001948: fddff06f j 80001924 <__divdf3+0x130> +8000194c: 00a4e9b3 or s3,s1,a0 +80001950: 02098463 beqz s3,80001978 <__divdf3+0x184> +80001954: 00050413 mv s0,a0 +80001958: 00048993 mv s3,s1 +8000195c: 7ff00a93 li s5,2047 +80001960: 00300b93 li s7,3 +80001964: f0dff06f j 80001870 <__divdf3+0x7c> +80001968: 00000413 li s0,0 +8000196c: 00000a93 li s5,0 +80001970: 00100b93 li s7,1 +80001974: efdff06f j 80001870 <__divdf3+0x7c> +80001978: 00000413 li s0,0 +8000197c: 7ff00a93 li s5,2047 +80001980: 00200b93 li s7,2 +80001984: eedff06f j 80001870 <__divdf3+0x7c> +80001988: 0164efb3 or t6,s1,s6 +8000198c: 080f8063 beqz t6,80001a0c <__divdf3+0x218> +80001990: 04048263 beqz s1,800019d4 <__divdf3+0x1e0> +80001994: 00048513 mv a0,s1 +80001998: 650010ef jal ra,80002fe8 <__clzsi2> +8000199c: 00050593 mv a1,a0 +800019a0: ff558793 addi a5,a1,-11 +800019a4: 01c00713 li a4,28 +800019a8: 02f74e63 blt a4,a5,800019e4 <__divdf3+0x1f0> +800019ac: 01d00693 li a3,29 +800019b0: ff858f93 addi t6,a1,-8 +800019b4: 40f686b3 sub a3,a3,a5 +800019b8: 01f49533 sll a0,s1,t6 +800019bc: 00db56b3 srl a3,s6,a3 +800019c0: 00a6e4b3 or s1,a3,a0 +800019c4: 01fb1fb3 sll t6,s6,t6 +800019c8: c0d00713 li a4,-1011 +800019cc: 40b70533 sub a0,a4,a1 +800019d0: ee1ff06f j 800018b0 <__divdf3+0xbc> +800019d4: 000b0513 mv a0,s6 +800019d8: 610010ef jal ra,80002fe8 <__clzsi2> +800019dc: 02050593 addi a1,a0,32 +800019e0: fc1ff06f j 800019a0 <__divdf3+0x1ac> +800019e4: fd858513 addi a0,a1,-40 +800019e8: 00ab14b3 sll s1,s6,a0 +800019ec: 00000f93 li t6,0 +800019f0: fd9ff06f j 800019c8 <__divdf3+0x1d4> +800019f4: 0164efb3 or t6,s1,s6 +800019f8: 020f8263 beqz t6,80001a1c <__divdf3+0x228> +800019fc: 000b0f93 mv t6,s6 +80001a00: 7ff00513 li a0,2047 +80001a04: 00300613 li a2,3 +80001a08: eadff06f j 800018b4 <__divdf3+0xc0> +80001a0c: 00000493 li s1,0 +80001a10: 00000513 li a0,0 +80001a14: 00100613 li a2,1 +80001a18: e9dff06f j 800018b4 <__divdf3+0xc0> +80001a1c: 00000493 li s1,0 +80001a20: 7ff00513 li a0,2047 +80001a24: 00200613 li a2,2 +80001a28: e8dff06f j 800018b4 <__divdf3+0xc0> +80001a2c: 0134e663 bltu s1,s3,80001a38 <__divdf3+0x244> +80001a30: 34999c63 bne s3,s1,80001d88 <__divdf3+0x594> +80001a34: 35f46a63 bltu s0,t6,80001d88 <__divdf3+0x594> +80001a38: 01f99613 slli a2,s3,0x1f +80001a3c: 00145713 srli a4,s0,0x1 +80001a40: 01f41793 slli a5,s0,0x1f +80001a44: 0019d993 srli s3,s3,0x1 +80001a48: 00e66433 or s0,a2,a4 +80001a4c: 00849513 slli a0,s1,0x8 +80001a50: 018fd893 srli a7,t6,0x18 +80001a54: 00a8e8b3 or a7,a7,a0 +80001a58: 01055513 srli a0,a0,0x10 +80001a5c: 02a9d833 divu a6,s3,a0 +80001a60: 01089e93 slli t4,a7,0x10 +80001a64: 010ede93 srli t4,t4,0x10 +80001a68: 01045713 srli a4,s0,0x10 +80001a6c: 008f9313 slli t1,t6,0x8 +80001a70: 02a9f4b3 remu s1,s3,a0 +80001a74: 00080f93 mv t6,a6 +80001a78: 030e8633 mul a2,t4,a6 +80001a7c: 01049993 slli s3,s1,0x10 +80001a80: 01376733 or a4,a4,s3 +80001a84: 00c77e63 bgeu a4,a2,80001aa0 <__divdf3+0x2ac> +80001a88: 01170733 add a4,a4,a7 +80001a8c: fff80f93 addi t6,a6,-1 +80001a90: 01176863 bltu a4,a7,80001aa0 <__divdf3+0x2ac> +80001a94: 00c77663 bgeu a4,a2,80001aa0 <__divdf3+0x2ac> +80001a98: ffe80f93 addi t6,a6,-2 +80001a9c: 01170733 add a4,a4,a7 +80001aa0: 40c70733 sub a4,a4,a2 +80001aa4: 02a75e33 divu t3,a4,a0 +80001aa8: 01041413 slli s0,s0,0x10 +80001aac: 01045413 srli s0,s0,0x10 +80001ab0: 02a77733 remu a4,a4,a0 +80001ab4: 000e0613 mv a2,t3 +80001ab8: 03ce8833 mul a6,t4,t3 +80001abc: 01071713 slli a4,a4,0x10 +80001ac0: 00e46733 or a4,s0,a4 +80001ac4: 01077e63 bgeu a4,a6,80001ae0 <__divdf3+0x2ec> +80001ac8: 01170733 add a4,a4,a7 +80001acc: fffe0613 addi a2,t3,-1 +80001ad0: 01176863 bltu a4,a7,80001ae0 <__divdf3+0x2ec> +80001ad4: 01077663 bgeu a4,a6,80001ae0 <__divdf3+0x2ec> +80001ad8: ffee0613 addi a2,t3,-2 +80001adc: 01170733 add a4,a4,a7 +80001ae0: 41070433 sub s0,a4,a6 +80001ae4: 010f9f93 slli t6,t6,0x10 +80001ae8: 00010837 lui a6,0x10 +80001aec: 00cfefb3 or t6,t6,a2 +80001af0: fff80e13 addi t3,a6,-1 # ffff <_start-0x7fff0001> +80001af4: 010fd613 srli a2,t6,0x10 +80001af8: 01cff733 and a4,t6,t3 +80001afc: 01035f13 srli t5,t1,0x10 +80001b00: 01c37e33 and t3,t1,t3 +80001b04: 02ee03b3 mul t2,t3,a4 +80001b08: 03c604b3 mul s1,a2,t3 +80001b0c: 02ef0733 mul a4,t5,a4 +80001b10: 03e602b3 mul t0,a2,t5 +80001b14: 00970633 add a2,a4,s1 +80001b18: 0103d713 srli a4,t2,0x10 +80001b1c: 00c70733 add a4,a4,a2 +80001b20: 00977463 bgeu a4,s1,80001b28 <__divdf3+0x334> +80001b24: 010282b3 add t0,t0,a6 +80001b28: 01075613 srli a2,a4,0x10 +80001b2c: 00560633 add a2,a2,t0 +80001b30: 000102b7 lui t0,0x10 +80001b34: fff28293 addi t0,t0,-1 # ffff <_start-0x7fff0001> +80001b38: 00577833 and a6,a4,t0 +80001b3c: 01081813 slli a6,a6,0x10 +80001b40: 0053f3b3 and t2,t2,t0 +80001b44: 00780833 add a6,a6,t2 +80001b48: 00c46863 bltu s0,a2,80001b58 <__divdf3+0x364> +80001b4c: 000f8493 mv s1,t6 +80001b50: 04c41463 bne s0,a2,80001b98 <__divdf3+0x3a4> +80001b54: 0507f263 bgeu a5,a6,80001b98 <__divdf3+0x3a4> +80001b58: 006787b3 add a5,a5,t1 +80001b5c: 0067b733 sltu a4,a5,t1 +80001b60: 01170733 add a4,a4,a7 +80001b64: 00e40433 add s0,s0,a4 +80001b68: ffff8493 addi s1,t6,-1 +80001b6c: 0088e663 bltu a7,s0,80001b78 <__divdf3+0x384> +80001b70: 02889463 bne a7,s0,80001b98 <__divdf3+0x3a4> +80001b74: 0267e263 bltu a5,t1,80001b98 <__divdf3+0x3a4> +80001b78: 00c46663 bltu s0,a2,80001b84 <__divdf3+0x390> +80001b7c: 00861e63 bne a2,s0,80001b98 <__divdf3+0x3a4> +80001b80: 0107fc63 bgeu a5,a6,80001b98 <__divdf3+0x3a4> +80001b84: 006787b3 add a5,a5,t1 +80001b88: 0067b733 sltu a4,a5,t1 +80001b8c: 01170733 add a4,a4,a7 +80001b90: ffef8493 addi s1,t6,-2 +80001b94: 00e40433 add s0,s0,a4 +80001b98: 41078833 sub a6,a5,a6 +80001b9c: 40c40433 sub s0,s0,a2 +80001ba0: 0107b7b3 sltu a5,a5,a6 +80001ba4: 40f40433 sub s0,s0,a5 +80001ba8: fff00f93 li t6,-1 +80001bac: 12888463 beq a7,s0,80001cd4 <__divdf3+0x4e0> +80001bb0: 02a45fb3 divu t6,s0,a0 +80001bb4: 01085713 srli a4,a6,0x10 +80001bb8: 02a47433 remu s0,s0,a0 +80001bbc: 000f8613 mv a2,t6 +80001bc0: 03fe87b3 mul a5,t4,t6 +80001bc4: 01041413 slli s0,s0,0x10 +80001bc8: 00876433 or s0,a4,s0 +80001bcc: 00f47e63 bgeu s0,a5,80001be8 <__divdf3+0x3f4> +80001bd0: 01140433 add s0,s0,a7 +80001bd4: ffff8613 addi a2,t6,-1 +80001bd8: 01146863 bltu s0,a7,80001be8 <__divdf3+0x3f4> +80001bdc: 00f47663 bgeu s0,a5,80001be8 <__divdf3+0x3f4> +80001be0: ffef8613 addi a2,t6,-2 +80001be4: 01140433 add s0,s0,a7 +80001be8: 40f40433 sub s0,s0,a5 +80001bec: 02a45733 divu a4,s0,a0 +80001bf0: 01081813 slli a6,a6,0x10 +80001bf4: 01085813 srli a6,a6,0x10 +80001bf8: 02a47433 remu s0,s0,a0 +80001bfc: 00070793 mv a5,a4 +80001c00: 02ee8eb3 mul t4,t4,a4 +80001c04: 01041413 slli s0,s0,0x10 +80001c08: 00886433 or s0,a6,s0 +80001c0c: 01d47e63 bgeu s0,t4,80001c28 <__divdf3+0x434> +80001c10: 01140433 add s0,s0,a7 +80001c14: fff70793 addi a5,a4,-1 +80001c18: 01146863 bltu s0,a7,80001c28 <__divdf3+0x434> +80001c1c: 01d47663 bgeu s0,t4,80001c28 <__divdf3+0x434> +80001c20: ffe70793 addi a5,a4,-2 +80001c24: 01140433 add s0,s0,a7 +80001c28: 01061613 slli a2,a2,0x10 +80001c2c: 00f66633 or a2,a2,a5 +80001c30: 01061793 slli a5,a2,0x10 +80001c34: 0107d793 srli a5,a5,0x10 +80001c38: 01065713 srli a4,a2,0x10 +80001c3c: 02ef0833 mul a6,t5,a4 +80001c40: 41d40433 sub s0,s0,t4 +80001c44: 02ff0f33 mul t5,t5,a5 +80001c48: 03c78eb3 mul t4,a5,t3 +80001c4c: 03c70e33 mul t3,a4,t3 +80001c50: 010ed793 srli a5,t4,0x10 +80001c54: 01cf0f33 add t5,t5,t3 +80001c58: 01e787b3 add a5,a5,t5 +80001c5c: 01c7f663 bgeu a5,t3,80001c68 <__divdf3+0x474> +80001c60: 00010737 lui a4,0x10 +80001c64: 00e80833 add a6,a6,a4 +80001c68: 0107d713 srli a4,a5,0x10 +80001c6c: 01070733 add a4,a4,a6 +80001c70: 00010837 lui a6,0x10 +80001c74: fff80813 addi a6,a6,-1 # ffff <_start-0x7fff0001> +80001c78: 0107f533 and a0,a5,a6 +80001c7c: 01051513 slli a0,a0,0x10 +80001c80: 010efeb3 and t4,t4,a6 +80001c84: 01d50533 add a0,a0,t4 +80001c88: 00e46863 bltu s0,a4,80001c98 <__divdf3+0x4a4> +80001c8c: 24e41063 bne s0,a4,80001ecc <__divdf3+0x6d8> +80001c90: 00060f93 mv t6,a2 +80001c94: 04050063 beqz a0,80001cd4 <__divdf3+0x4e0> +80001c98: 00888433 add s0,a7,s0 +80001c9c: fff60f93 addi t6,a2,-1 +80001ca0: 03146463 bltu s0,a7,80001cc8 <__divdf3+0x4d4> +80001ca4: 00e46663 bltu s0,a4,80001cb0 <__divdf3+0x4bc> +80001ca8: 22e41063 bne s0,a4,80001ec8 <__divdf3+0x6d4> +80001cac: 02a37063 bgeu t1,a0,80001ccc <__divdf3+0x4d8> +80001cb0: 00131793 slli a5,t1,0x1 +80001cb4: 0067b333 sltu t1,a5,t1 +80001cb8: 011308b3 add a7,t1,a7 +80001cbc: ffe60f93 addi t6,a2,-2 +80001cc0: 01140433 add s0,s0,a7 +80001cc4: 00078313 mv t1,a5 +80001cc8: 00e41463 bne s0,a4,80001cd0 <__divdf3+0x4dc> +80001ccc: 00650463 beq a0,t1,80001cd4 <__divdf3+0x4e0> +80001cd0: 001fef93 ori t6,t6,1 +80001cd4: 3ff58793 addi a5,a1,1023 +80001cd8: 10f05863 blez a5,80001de8 <__divdf3+0x5f4> +80001cdc: 007ff713 andi a4,t6,7 +80001ce0: 02070063 beqz a4,80001d00 <__divdf3+0x50c> +80001ce4: 00fff713 andi a4,t6,15 +80001ce8: 00400613 li a2,4 +80001cec: 00c70a63 beq a4,a2,80001d00 <__divdf3+0x50c> +80001cf0: 004f8613 addi a2,t6,4 +80001cf4: 01f63fb3 sltu t6,a2,t6 +80001cf8: 01f484b3 add s1,s1,t6 +80001cfc: 00060f93 mv t6,a2 +80001d00: 00749713 slli a4,s1,0x7 +80001d04: 00075a63 bgez a4,80001d18 <__divdf3+0x524> +80001d08: ff0007b7 lui a5,0xff000 +80001d0c: fff78793 addi a5,a5,-1 # feffffff <__global_pointer$+0x7effb227> +80001d10: 00f4f4b3 and s1,s1,a5 +80001d14: 40058793 addi a5,a1,1024 +80001d18: 7fe00713 li a4,2046 +80001d1c: 0af74063 blt a4,a5,80001dbc <__divdf3+0x5c8> +80001d20: 003fdf93 srli t6,t6,0x3 +80001d24: 01d49713 slli a4,s1,0x1d +80001d28: 01f76733 or a4,a4,t6 +80001d2c: 0034d513 srli a0,s1,0x3 +80001d30: 01479793 slli a5,a5,0x14 +80001d34: 7ff00637 lui a2,0x7ff00 +80001d38: 00c51513 slli a0,a0,0xc +80001d3c: 02c12083 lw ra,44(sp) +80001d40: 02812403 lw s0,40(sp) +80001d44: 00c7f7b3 and a5,a5,a2 +80001d48: 00c55513 srli a0,a0,0xc +80001d4c: 00a7e533 or a0,a5,a0 +80001d50: 01f69693 slli a3,a3,0x1f +80001d54: 00d567b3 or a5,a0,a3 +80001d58: 02412483 lw s1,36(sp) +80001d5c: 02012903 lw s2,32(sp) +80001d60: 01c12983 lw s3,28(sp) +80001d64: 01812a03 lw s4,24(sp) +80001d68: 01412a83 lw s5,20(sp) +80001d6c: 01012b03 lw s6,16(sp) +80001d70: 00c12b83 lw s7,12(sp) +80001d74: 00812c03 lw s8,8(sp) +80001d78: 00070513 mv a0,a4 +80001d7c: 00078593 mv a1,a5 +80001d80: 03010113 addi sp,sp,48 +80001d84: 00008067 ret +80001d88: fff58593 addi a1,a1,-1 +80001d8c: 00000793 li a5,0 +80001d90: cbdff06f j 80001a4c <__divdf3+0x258> +80001d94: 000a0693 mv a3,s4 +80001d98: 00098493 mv s1,s3 +80001d9c: 00040f93 mv t6,s0 +80001da0: 000b8613 mv a2,s7 +80001da4: 00300793 li a5,3 +80001da8: 0ef60863 beq a2,a5,80001e98 <__divdf3+0x6a4> +80001dac: 00100793 li a5,1 +80001db0: 0ef60e63 beq a2,a5,80001eac <__divdf3+0x6b8> +80001db4: 00200793 li a5,2 +80001db8: f0f61ee3 bne a2,a5,80001cd4 <__divdf3+0x4e0> +80001dbc: 00000513 li a0,0 +80001dc0: 00000713 li a4,0 +80001dc4: 7ff00793 li a5,2047 +80001dc8: f69ff06f j 80001d30 <__divdf3+0x53c> +80001dcc: 000c0693 mv a3,s8 +80001dd0: fd5ff06f j 80001da4 <__divdf3+0x5b0> +80001dd4: 000804b7 lui s1,0x80 +80001dd8: 00000f93 li t6,0 +80001ddc: 00000693 li a3,0 +80001de0: 00300613 li a2,3 +80001de4: fc1ff06f j 80001da4 <__divdf3+0x5b0> +80001de8: 00100513 li a0,1 +80001dec: 40f50533 sub a0,a0,a5 +80001df0: 03800713 li a4,56 +80001df4: 0aa74c63 blt a4,a0,80001eac <__divdf3+0x6b8> +80001df8: 01f00713 li a4,31 +80001dfc: 06a74463 blt a4,a0,80001e64 <__divdf3+0x670> +80001e00: 41e58593 addi a1,a1,1054 +80001e04: 00b497b3 sll a5,s1,a1 +80001e08: 00afd733 srl a4,t6,a0 +80001e0c: 00bf95b3 sll a1,t6,a1 +80001e10: 00e7e7b3 or a5,a5,a4 +80001e14: 00b035b3 snez a1,a1 +80001e18: 00b7e7b3 or a5,a5,a1 +80001e1c: 00a4d533 srl a0,s1,a0 +80001e20: 0077f713 andi a4,a5,7 +80001e24: 02070063 beqz a4,80001e44 <__divdf3+0x650> +80001e28: 00f7f713 andi a4,a5,15 +80001e2c: 00400613 li a2,4 +80001e30: 00c70a63 beq a4,a2,80001e44 <__divdf3+0x650> +80001e34: 00478713 addi a4,a5,4 +80001e38: 00f737b3 sltu a5,a4,a5 +80001e3c: 00f50533 add a0,a0,a5 +80001e40: 00070793 mv a5,a4 +80001e44: 00851713 slli a4,a0,0x8 +80001e48: 06074863 bltz a4,80001eb8 <__divdf3+0x6c4> +80001e4c: 01d51713 slli a4,a0,0x1d +80001e50: 0037d793 srli a5,a5,0x3 +80001e54: 00f76733 or a4,a4,a5 +80001e58: 00355513 srli a0,a0,0x3 +80001e5c: 00000793 li a5,0 +80001e60: ed1ff06f j 80001d30 <__divdf3+0x53c> +80001e64: fe100713 li a4,-31 +80001e68: 40f707b3 sub a5,a4,a5 +80001e6c: 02000613 li a2,32 +80001e70: 00f4d7b3 srl a5,s1,a5 +80001e74: 00000713 li a4,0 +80001e78: 00c50663 beq a0,a2,80001e84 <__divdf3+0x690> +80001e7c: 43e58593 addi a1,a1,1086 +80001e80: 00b49733 sll a4,s1,a1 +80001e84: 01f76fb3 or t6,a4,t6 +80001e88: 01f03fb3 snez t6,t6 +80001e8c: 01f7e7b3 or a5,a5,t6 +80001e90: 00000513 li a0,0 +80001e94: f8dff06f j 80001e20 <__divdf3+0x62c> +80001e98: 00080537 lui a0,0x80 +80001e9c: 00000713 li a4,0 +80001ea0: 7ff00793 li a5,2047 +80001ea4: 00000693 li a3,0 +80001ea8: e89ff06f j 80001d30 <__divdf3+0x53c> +80001eac: 00000513 li a0,0 +80001eb0: 00000713 li a4,0 +80001eb4: fa9ff06f j 80001e5c <__divdf3+0x668> +80001eb8: 00000513 li a0,0 +80001ebc: 00000713 li a4,0 +80001ec0: 00100793 li a5,1 +80001ec4: e6dff06f j 80001d30 <__divdf3+0x53c> +80001ec8: 000f8613 mv a2,t6 +80001ecc: 00060f93 mv t6,a2 +80001ed0: e01ff06f j 80001cd0 <__divdf3+0x4dc> + +80001ed4 <__ledf2>: +80001ed4: 00100737 lui a4,0x100 +80001ed8: fff70713 addi a4,a4,-1 # fffff <_start-0x7ff00001> +80001edc: 0145d813 srli a6,a1,0x14 +80001ee0: 00b778b3 and a7,a4,a1 +80001ee4: 00050793 mv a5,a0 +80001ee8: 00050313 mv t1,a0 +80001eec: 7ff87813 andi a6,a6,2047 +80001ef0: 01f5d513 srli a0,a1,0x1f +80001ef4: 7ff00e93 li t4,2047 +80001ef8: 0146d593 srli a1,a3,0x14 +80001efc: 00d77733 and a4,a4,a3 +80001f00: 00060e13 mv t3,a2 +80001f04: 7ff5f593 andi a1,a1,2047 +80001f08: 01f6d693 srli a3,a3,0x1f +80001f0c: 01d81a63 bne a6,t4,80001f20 <__ledf2+0x4c> +80001f10: 00f8eeb3 or t4,a7,a5 +80001f14: 080e8a63 beqz t4,80001fa8 <__ledf2+0xd4> +80001f18: 00200513 li a0,2 +80001f1c: 00008067 ret +80001f20: 01d59663 bne a1,t4,80001f2c <__ledf2+0x58> +80001f24: 00c76eb3 or t4,a4,a2 +80001f28: fe0e98e3 bnez t4,80001f18 <__ledf2+0x44> +80001f2c: 08081063 bnez a6,80001fac <__ledf2+0xd8> +80001f30: 00f8e7b3 or a5,a7,a5 +80001f34: 0017b793 seqz a5,a5 +80001f38: 00059663 bnez a1,80001f44 <__ledf2+0x70> +80001f3c: 00c76633 or a2,a4,a2 +80001f40: 04060c63 beqz a2,80001f98 <__ledf2+0xc4> +80001f44: 00079c63 bnez a5,80001f5c <__ledf2+0x88> +80001f48: 00d51463 bne a0,a3,80001f50 <__ledf2+0x7c> +80001f4c: 0305d063 bge a1,a6,80001f6c <__ledf2+0x98> +80001f50: 04050063 beqz a0,80001f90 <__ledf2+0xbc> +80001f54: fff00513 li a0,-1 +80001f58: 00008067 ret +80001f5c: fff00513 li a0,-1 +80001f60: 00068a63 beqz a3,80001f74 <__ledf2+0xa0> +80001f64: 00068513 mv a0,a3 +80001f68: 00008067 ret +80001f6c: 00b85663 bge a6,a1,80001f78 <__ledf2+0xa4> +80001f70: fe0502e3 beqz a0,80001f54 <__ledf2+0x80> +80001f74: 00008067 ret +80001f78: fd176ce3 bltu a4,a7,80001f50 <__ledf2+0x7c> +80001f7c: 02e89263 bne a7,a4,80001fa0 <__ledf2+0xcc> +80001f80: fc6e68e3 bltu t3,t1,80001f50 <__ledf2+0x7c> +80001f84: ffc366e3 bltu t1,t3,80001f70 <__ledf2+0x9c> +80001f88: 00000513 li a0,0 +80001f8c: 00008067 ret +80001f90: 00100513 li a0,1 +80001f94: 00008067 ret +80001f98: fe0798e3 bnez a5,80001f88 <__ledf2+0xb4> +80001f9c: fb5ff06f j 80001f50 <__ledf2+0x7c> +80001fa0: fce8e8e3 bltu a7,a4,80001f70 <__ledf2+0x9c> +80001fa4: fe5ff06f j 80001f88 <__ledf2+0xb4> +80001fa8: f7058ee3 beq a1,a6,80001f24 <__ledf2+0x50> +80001fac: f8059ee3 bnez a1,80001f48 <__ledf2+0x74> +80001fb0: 00000793 li a5,0 +80001fb4: f89ff06f j 80001f3c <__ledf2+0x68> + +80001fb8 <__muldf3>: +80001fb8: fd010113 addi sp,sp,-48 +80001fbc: 0145d793 srli a5,a1,0x14 +80001fc0: 02812423 sw s0,40(sp) +80001fc4: 02912223 sw s1,36(sp) +80001fc8: 01312e23 sw s3,28(sp) +80001fcc: 01412c23 sw s4,24(sp) +80001fd0: 01512a23 sw s5,20(sp) +80001fd4: 00c59493 slli s1,a1,0xc +80001fd8: 02112623 sw ra,44(sp) +80001fdc: 03212023 sw s2,32(sp) +80001fe0: 01612823 sw s6,16(sp) +80001fe4: 01712623 sw s7,12(sp) +80001fe8: 01579713 slli a4,a5,0x15 +80001fec: 00050413 mv s0,a0 +80001ff0: 00060993 mv s3,a2 +80001ff4: 00068a93 mv s5,a3 +80001ff8: 00c4d493 srli s1,s1,0xc +80001ffc: 01f5da13 srli s4,a1,0x1f +80002000: 0a070663 beqz a4,800020ac <__muldf3+0xf4> +80002004: 7ff7fb13 andi s6,a5,2047 +80002008: 7ff00793 li a5,2047 +8000200c: 10fb0263 beq s6,a5,80002110 <__muldf3+0x158> +80002010: 01d55793 srli a5,a0,0x1d +80002014: 00349493 slli s1,s1,0x3 +80002018: 0097e4b3 or s1,a5,s1 +8000201c: 008007b7 lui a5,0x800 +80002020: 00f4e4b3 or s1,s1,a5 +80002024: 00351913 slli s2,a0,0x3 +80002028: c01b0b13 addi s6,s6,-1023 +8000202c: 00000b93 li s7,0 +80002030: 014ad793 srli a5,s5,0x14 +80002034: 00ca9413 slli s0,s5,0xc +80002038: 01579713 slli a4,a5,0x15 +8000203c: 00c45413 srli s0,s0,0xc +80002040: 7ff7f513 andi a0,a5,2047 +80002044: 01fada93 srli s5,s5,0x1f +80002048: 10070063 beqz a4,80002148 <__muldf3+0x190> +8000204c: 7ff00793 li a5,2047 +80002050: 16f50063 beq a0,a5,800021b0 <__muldf3+0x1f8> +80002054: 01d9d793 srli a5,s3,0x1d +80002058: 00341413 slli s0,s0,0x3 +8000205c: 0087e433 or s0,a5,s0 +80002060: 008007b7 lui a5,0x800 +80002064: 00f46433 or s0,s0,a5 +80002068: c0150513 addi a0,a0,-1023 # 7fc01 <_start-0x7ff803ff> +8000206c: 00399793 slli a5,s3,0x3 +80002070: 00000713 li a4,0 +80002074: 002b9693 slli a3,s7,0x2 +80002078: 00e6e6b3 or a3,a3,a4 +8000207c: 00ab0533 add a0,s6,a0 +80002080: fff68693 addi a3,a3,-1 # 7fefffff <_start-0x100001> +80002084: 00e00813 li a6,14 +80002088: 015a4633 xor a2,s4,s5 +8000208c: 00150593 addi a1,a0,1 +80002090: 14d86c63 bltu a6,a3,800021e8 <__muldf3+0x230> +80002094: 80003537 lui a0,0x80003 +80002098: 00269693 slli a3,a3,0x2 +8000209c: 49450513 addi a0,a0,1172 # 80003494 <__global_pointer$+0xffffe6bc> +800020a0: 00a686b3 add a3,a3,a0 +800020a4: 0006a683 lw a3,0(a3) +800020a8: 00068067 jr a3 +800020ac: 00a4e933 or s2,s1,a0 +800020b0: 06090c63 beqz s2,80002128 <__muldf3+0x170> +800020b4: 04048063 beqz s1,800020f4 <__muldf3+0x13c> +800020b8: 00048513 mv a0,s1 +800020bc: 72d000ef jal ra,80002fe8 <__clzsi2> +800020c0: ff550713 addi a4,a0,-11 +800020c4: 01c00793 li a5,28 +800020c8: 02e7cc63 blt a5,a4,80002100 <__muldf3+0x148> +800020cc: 01d00793 li a5,29 +800020d0: ff850913 addi s2,a0,-8 +800020d4: 40e787b3 sub a5,a5,a4 +800020d8: 012494b3 sll s1,s1,s2 +800020dc: 00f457b3 srl a5,s0,a5 +800020e0: 0097e4b3 or s1,a5,s1 +800020e4: 01241933 sll s2,s0,s2 +800020e8: c0d00b13 li s6,-1011 +800020ec: 40ab0b33 sub s6,s6,a0 +800020f0: f3dff06f j 8000202c <__muldf3+0x74> +800020f4: 6f5000ef jal ra,80002fe8 <__clzsi2> +800020f8: 02050513 addi a0,a0,32 +800020fc: fc5ff06f j 800020c0 <__muldf3+0x108> +80002100: fd850493 addi s1,a0,-40 +80002104: 009414b3 sll s1,s0,s1 +80002108: 00000913 li s2,0 +8000210c: fddff06f j 800020e8 <__muldf3+0x130> +80002110: 00a4e933 or s2,s1,a0 +80002114: 02090263 beqz s2,80002138 <__muldf3+0x180> +80002118: 00050913 mv s2,a0 +8000211c: 7ff00b13 li s6,2047 +80002120: 00300b93 li s7,3 +80002124: f0dff06f j 80002030 <__muldf3+0x78> +80002128: 00000493 li s1,0 +8000212c: 00000b13 li s6,0 +80002130: 00100b93 li s7,1 +80002134: efdff06f j 80002030 <__muldf3+0x78> +80002138: 00000493 li s1,0 +8000213c: 7ff00b13 li s6,2047 +80002140: 00200b93 li s7,2 +80002144: eedff06f j 80002030 <__muldf3+0x78> +80002148: 013467b3 or a5,s0,s3 +8000214c: 06078e63 beqz a5,800021c8 <__muldf3+0x210> +80002150: 04040063 beqz s0,80002190 <__muldf3+0x1d8> +80002154: 00040513 mv a0,s0 +80002158: 691000ef jal ra,80002fe8 <__clzsi2> +8000215c: ff550693 addi a3,a0,-11 +80002160: 01c00793 li a5,28 +80002164: 02d7ce63 blt a5,a3,800021a0 <__muldf3+0x1e8> +80002168: 01d00713 li a4,29 +8000216c: ff850793 addi a5,a0,-8 +80002170: 40d70733 sub a4,a4,a3 +80002174: 00f41433 sll s0,s0,a5 +80002178: 00e9d733 srl a4,s3,a4 +8000217c: 00876433 or s0,a4,s0 +80002180: 00f997b3 sll a5,s3,a5 +80002184: c0d00713 li a4,-1011 +80002188: 40a70533 sub a0,a4,a0 +8000218c: ee5ff06f j 80002070 <__muldf3+0xb8> +80002190: 00098513 mv a0,s3 +80002194: 655000ef jal ra,80002fe8 <__clzsi2> +80002198: 02050513 addi a0,a0,32 +8000219c: fc1ff06f j 8000215c <__muldf3+0x1a4> +800021a0: fd850413 addi s0,a0,-40 +800021a4: 00899433 sll s0,s3,s0 +800021a8: 00000793 li a5,0 +800021ac: fd9ff06f j 80002184 <__muldf3+0x1cc> +800021b0: 013467b3 or a5,s0,s3 +800021b4: 02078263 beqz a5,800021d8 <__muldf3+0x220> +800021b8: 00098793 mv a5,s3 +800021bc: 7ff00513 li a0,2047 +800021c0: 00300713 li a4,3 +800021c4: eb1ff06f j 80002074 <__muldf3+0xbc> +800021c8: 00000413 li s0,0 +800021cc: 00000513 li a0,0 +800021d0: 00100713 li a4,1 +800021d4: ea1ff06f j 80002074 <__muldf3+0xbc> +800021d8: 00000413 li s0,0 +800021dc: 7ff00513 li a0,2047 +800021e0: 00200713 li a4,2 +800021e4: e91ff06f j 80002074 <__muldf3+0xbc> +800021e8: 00010f37 lui t5,0x10 +800021ec: ffff0713 addi a4,t5,-1 # ffff <_start-0x7fff0001> +800021f0: 01095693 srli a3,s2,0x10 +800021f4: 0107d313 srli t1,a5,0x10 +800021f8: 00e97933 and s2,s2,a4 +800021fc: 00e7f7b3 and a5,a5,a4 +80002200: 032308b3 mul a7,t1,s2 +80002204: 02f90833 mul a6,s2,a5 +80002208: 02f68fb3 mul t6,a3,a5 +8000220c: 01f88eb3 add t4,a7,t6 +80002210: 01085893 srli a7,a6,0x10 +80002214: 01d888b3 add a7,a7,t4 +80002218: 02668e33 mul t3,a3,t1 +8000221c: 01f8f463 bgeu a7,t6,80002224 <__muldf3+0x26c> +80002220: 01ee0e33 add t3,t3,t5 +80002224: 0108d293 srli t0,a7,0x10 +80002228: 00e8f8b3 and a7,a7,a4 +8000222c: 00e87833 and a6,a6,a4 +80002230: 01045f13 srli t5,s0,0x10 +80002234: 01089893 slli a7,a7,0x10 +80002238: 00e47433 and s0,s0,a4 +8000223c: 010888b3 add a7,a7,a6 +80002240: 02868733 mul a4,a3,s0 +80002244: 02890833 mul a6,s2,s0 +80002248: 032f0933 mul s2,t5,s2 +8000224c: 00e90eb3 add t4,s2,a4 +80002250: 01085913 srli s2,a6,0x10 +80002254: 01d90933 add s2,s2,t4 +80002258: 03e686b3 mul a3,a3,t5 +8000225c: 00e97663 bgeu s2,a4,80002268 <__muldf3+0x2b0> +80002260: 00010737 lui a4,0x10 +80002264: 00e686b3 add a3,a3,a4 +80002268: 01095e93 srli t4,s2,0x10 +8000226c: 00de8eb3 add t4,t4,a3 +80002270: 000106b7 lui a3,0x10 +80002274: fff68f93 addi t6,a3,-1 # ffff <_start-0x7fff0001> +80002278: 01f97933 and s2,s2,t6 +8000227c: 01f87833 and a6,a6,t6 +80002280: 0104d713 srli a4,s1,0x10 +80002284: 01091913 slli s2,s2,0x10 +80002288: 01f4f4b3 and s1,s1,t6 +8000228c: 029783b3 mul t2,a5,s1 +80002290: 01090933 add s2,s2,a6 +80002294: 012282b3 add t0,t0,s2 +80002298: 02930833 mul a6,t1,s1 +8000229c: 02f707b3 mul a5,a4,a5 +800022a0: 02e30fb3 mul t6,t1,a4 +800022a4: 00f80333 add t1,a6,a5 +800022a8: 0103d813 srli a6,t2,0x10 +800022ac: 00680833 add a6,a6,t1 +800022b0: 00f87463 bgeu a6,a5,800022b8 <__muldf3+0x300> +800022b4: 00df8fb3 add t6,t6,a3 +800022b8: 01085793 srli a5,a6,0x10 +800022bc: 000106b7 lui a3,0x10 +800022c0: 01f78fb3 add t6,a5,t6 +800022c4: fff68793 addi a5,a3,-1 # ffff <_start-0x7fff0001> +800022c8: 00f87833 and a6,a6,a5 +800022cc: 00f3f7b3 and a5,t2,a5 +800022d0: 029403b3 mul t2,s0,s1 +800022d4: 01081813 slli a6,a6,0x10 +800022d8: 00f80833 add a6,a6,a5 +800022dc: 02870433 mul s0,a4,s0 +800022e0: 029f04b3 mul s1,t5,s1 +800022e4: 02ef0333 mul t1,t5,a4 +800022e8: 008484b3 add s1,s1,s0 +800022ec: 0103d713 srli a4,t2,0x10 +800022f0: 009704b3 add s1,a4,s1 +800022f4: 0084f463 bgeu s1,s0,800022fc <__muldf3+0x344> +800022f8: 00d30333 add t1,t1,a3 +800022fc: 000107b7 lui a5,0x10 +80002300: fff78793 addi a5,a5,-1 # ffff <_start-0x7fff0001> +80002304: 00f4f6b3 and a3,s1,a5 +80002308: 01069693 slli a3,a3,0x10 +8000230c: 00f3f7b3 and a5,t2,a5 +80002310: 005e0e33 add t3,t3,t0 +80002314: 00f686b3 add a3,a3,a5 +80002318: 012e3933 sltu s2,t3,s2 +8000231c: 01d686b3 add a3,a3,t4 +80002320: 01268733 add a4,a3,s2 +80002324: 010e0e33 add t3,t3,a6 +80002328: 010e3833 sltu a6,t3,a6 +8000232c: 01f70f33 add t5,a4,t6 +80002330: 010f02b3 add t0,t5,a6 +80002334: 01d6b6b3 sltu a3,a3,t4 +80002338: 01273733 sltu a4,a4,s2 +8000233c: 00e6e733 or a4,a3,a4 +80002340: 0102b833 sltu a6,t0,a6 +80002344: 0104d493 srli s1,s1,0x10 +80002348: 01ff3fb3 sltu t6,t5,t6 +8000234c: 00970733 add a4,a4,s1 +80002350: 010fe833 or a6,t6,a6 +80002354: 009e1793 slli a5,t3,0x9 +80002358: 01070733 add a4,a4,a6 +8000235c: 00670733 add a4,a4,t1 +80002360: 0117e7b3 or a5,a5,a7 +80002364: 00971713 slli a4,a4,0x9 +80002368: 00f037b3 snez a5,a5 +8000236c: 017e5e13 srli t3,t3,0x17 +80002370: 0172d413 srli s0,t0,0x17 +80002374: 01c7e7b3 or a5,a5,t3 +80002378: 00929293 slli t0,t0,0x9 +8000237c: 00771693 slli a3,a4,0x7 +80002380: 00876433 or s0,a4,s0 +80002384: 0057e7b3 or a5,a5,t0 +80002388: 1006d463 bgez a3,80002490 <__muldf3+0x4d8> +8000238c: 0017d713 srli a4,a5,0x1 +80002390: 0017f793 andi a5,a5,1 +80002394: 00f767b3 or a5,a4,a5 +80002398: 01f41713 slli a4,s0,0x1f +8000239c: 00e7e7b3 or a5,a5,a4 +800023a0: 00145413 srli s0,s0,0x1 +800023a4: 3ff58693 addi a3,a1,1023 +800023a8: 0ed05863 blez a3,80002498 <__muldf3+0x4e0> +800023ac: 0077f713 andi a4,a5,7 +800023b0: 02070063 beqz a4,800023d0 <__muldf3+0x418> +800023b4: 00f7f713 andi a4,a5,15 +800023b8: 00400513 li a0,4 +800023bc: 00a70a63 beq a4,a0,800023d0 <__muldf3+0x418> +800023c0: 00478713 addi a4,a5,4 +800023c4: 00f737b3 sltu a5,a4,a5 +800023c8: 00f40433 add s0,s0,a5 +800023cc: 00070793 mv a5,a4 +800023d0: 00741713 slli a4,s0,0x7 +800023d4: 00075a63 bgez a4,800023e8 <__muldf3+0x430> +800023d8: ff000737 lui a4,0xff000 +800023dc: fff70713 addi a4,a4,-1 # feffffff <__global_pointer$+0x7effb227> +800023e0: 00e47433 and s0,s0,a4 +800023e4: 40058693 addi a3,a1,1024 +800023e8: 7fe00713 li a4,2046 +800023ec: 16d74863 blt a4,a3,8000255c <__muldf3+0x5a4> +800023f0: 0037d713 srli a4,a5,0x3 +800023f4: 01d41793 slli a5,s0,0x1d +800023f8: 00e7e7b3 or a5,a5,a4 +800023fc: 00345413 srli s0,s0,0x3 +80002400: 01469713 slli a4,a3,0x14 +80002404: 00c41413 slli s0,s0,0xc +80002408: 7ff006b7 lui a3,0x7ff00 +8000240c: 00d77733 and a4,a4,a3 +80002410: 00c45413 srli s0,s0,0xc +80002414: 00876433 or s0,a4,s0 +80002418: 01f61613 slli a2,a2,0x1f +8000241c: 02c12083 lw ra,44(sp) +80002420: 00c46733 or a4,s0,a2 +80002424: 02812403 lw s0,40(sp) +80002428: 02412483 lw s1,36(sp) +8000242c: 02012903 lw s2,32(sp) +80002430: 01c12983 lw s3,28(sp) +80002434: 01812a03 lw s4,24(sp) +80002438: 01412a83 lw s5,20(sp) +8000243c: 01012b03 lw s6,16(sp) +80002440: 00c12b83 lw s7,12(sp) +80002444: 00078513 mv a0,a5 +80002448: 00070593 mv a1,a4 +8000244c: 03010113 addi sp,sp,48 +80002450: 00008067 ret +80002454: 000a0613 mv a2,s4 +80002458: 00048413 mv s0,s1 +8000245c: 00090793 mv a5,s2 +80002460: 000b8713 mv a4,s7 +80002464: 00200693 li a3,2 +80002468: 0ed70a63 beq a4,a3,8000255c <__muldf3+0x5a4> +8000246c: 00300693 li a3,3 +80002470: 0cd70c63 beq a4,a3,80002548 <__muldf3+0x590> +80002474: 00100693 li a3,1 +80002478: f2d716e3 bne a4,a3,800023a4 <__muldf3+0x3ec> +8000247c: 00000413 li s0,0 +80002480: 00000793 li a5,0 +80002484: 0880006f j 8000250c <__muldf3+0x554> +80002488: 000a8613 mv a2,s5 +8000248c: fd9ff06f j 80002464 <__muldf3+0x4ac> +80002490: 00050593 mv a1,a0 +80002494: f11ff06f j 800023a4 <__muldf3+0x3ec> +80002498: 00100513 li a0,1 +8000249c: 40d50533 sub a0,a0,a3 +800024a0: 03800713 li a4,56 +800024a4: fca74ce3 blt a4,a0,8000247c <__muldf3+0x4c4> +800024a8: 01f00713 li a4,31 +800024ac: 06a74463 blt a4,a0,80002514 <__muldf3+0x55c> +800024b0: 41e58593 addi a1,a1,1054 +800024b4: 00b41733 sll a4,s0,a1 +800024b8: 00a7d6b3 srl a3,a5,a0 +800024bc: 00b797b3 sll a5,a5,a1 +800024c0: 00d76733 or a4,a4,a3 +800024c4: 00f037b3 snez a5,a5 +800024c8: 00f767b3 or a5,a4,a5 +800024cc: 00a45433 srl s0,s0,a0 +800024d0: 0077f713 andi a4,a5,7 +800024d4: 02070063 beqz a4,800024f4 <__muldf3+0x53c> +800024d8: 00f7f713 andi a4,a5,15 +800024dc: 00400693 li a3,4 +800024e0: 00d70a63 beq a4,a3,800024f4 <__muldf3+0x53c> +800024e4: 00478713 addi a4,a5,4 +800024e8: 00f737b3 sltu a5,a4,a5 +800024ec: 00f40433 add s0,s0,a5 +800024f0: 00070793 mv a5,a4 +800024f4: 00841713 slli a4,s0,0x8 +800024f8: 06074a63 bltz a4,8000256c <__muldf3+0x5b4> +800024fc: 01d41713 slli a4,s0,0x1d +80002500: 0037d793 srli a5,a5,0x3 +80002504: 00f767b3 or a5,a4,a5 +80002508: 00345413 srli s0,s0,0x3 +8000250c: 00000693 li a3,0 +80002510: ef1ff06f j 80002400 <__muldf3+0x448> +80002514: fe100713 li a4,-31 +80002518: 40d70733 sub a4,a4,a3 +8000251c: 02000813 li a6,32 +80002520: 00e45733 srl a4,s0,a4 +80002524: 00000693 li a3,0 +80002528: 01050663 beq a0,a6,80002534 <__muldf3+0x57c> +8000252c: 43e58593 addi a1,a1,1086 +80002530: 00b416b3 sll a3,s0,a1 +80002534: 00f6e7b3 or a5,a3,a5 +80002538: 00f037b3 snez a5,a5 +8000253c: 00f767b3 or a5,a4,a5 +80002540: 00000413 li s0,0 +80002544: f8dff06f j 800024d0 <__muldf3+0x518> +80002548: 00080437 lui s0,0x80 +8000254c: 00000793 li a5,0 +80002550: 7ff00693 li a3,2047 +80002554: 00000613 li a2,0 +80002558: ea9ff06f j 80002400 <__muldf3+0x448> +8000255c: 00000413 li s0,0 +80002560: 00000793 li a5,0 +80002564: 7ff00693 li a3,2047 +80002568: e99ff06f j 80002400 <__muldf3+0x448> +8000256c: 00000413 li s0,0 +80002570: 00000793 li a5,0 +80002574: 00100693 li a3,1 +80002578: e89ff06f j 80002400 <__muldf3+0x448> + +8000257c <__subdf3>: +8000257c: 00100837 lui a6,0x100 +80002580: fff80813 addi a6,a6,-1 # fffff <_start-0x7ff00001> +80002584: fe010113 addi sp,sp,-32 +80002588: 00b877b3 and a5,a6,a1 +8000258c: 0145d713 srli a4,a1,0x14 +80002590: 00d87833 and a6,a6,a3 +80002594: 0146d893 srli a7,a3,0x14 +80002598: 00812c23 sw s0,24(sp) +8000259c: 00379793 slli a5,a5,0x3 +800025a0: 7ff77413 andi s0,a4,2047 +800025a4: 01d55713 srli a4,a0,0x1d +800025a8: 00912a23 sw s1,20(sp) +800025ac: 00f767b3 or a5,a4,a5 +800025b0: 01f5d493 srli s1,a1,0x1f +800025b4: 01d65713 srli a4,a2,0x1d +800025b8: 01f6d593 srli a1,a3,0x1f +800025bc: 00381813 slli a6,a6,0x3 +800025c0: 00112e23 sw ra,28(sp) +800025c4: 01212823 sw s2,16(sp) +800025c8: 01312623 sw s3,12(sp) +800025cc: 7ff8f893 andi a7,a7,2047 +800025d0: 7ff00693 li a3,2047 +800025d4: 00351513 slli a0,a0,0x3 +800025d8: 01076733 or a4,a4,a6 +800025dc: 00361613 slli a2,a2,0x3 +800025e0: 00d89663 bne a7,a3,800025ec <__subdf3+0x70> +800025e4: 00c766b3 or a3,a4,a2 +800025e8: 00069463 bnez a3,800025f0 <__subdf3+0x74> +800025ec: 0015c593 xori a1,a1,1 +800025f0: 41140833 sub a6,s0,a7 +800025f4: 2c959063 bne a1,s1,800028b4 <__subdf3+0x338> +800025f8: 13005c63 blez a6,80002730 <__subdf3+0x1b4> +800025fc: 06089063 bnez a7,8000265c <__subdf3+0xe0> +80002600: 00c766b3 or a3,a4,a2 +80002604: 02068863 beqz a3,80002634 <__subdf3+0xb8> +80002608: fff40813 addi a6,s0,-1 # 7ffff <_start-0x7ff80001> +8000260c: 02081063 bnez a6,8000262c <__subdf3+0xb0> +80002610: 00c50633 add a2,a0,a2 +80002614: 00a63533 sltu a0,a2,a0 +80002618: 00e787b3 add a5,a5,a4 +8000261c: 00a787b3 add a5,a5,a0 +80002620: 00060513 mv a0,a2 +80002624: 00100413 li s0,1 +80002628: 08c0006f j 800026b4 <__subdf3+0x138> +8000262c: 7ff00693 li a3,2047 +80002630: 02d41e63 bne s0,a3,8000266c <__subdf3+0xf0> +80002634: 00757713 andi a4,a0,7 +80002638: 62070c63 beqz a4,80002c70 <__subdf3+0x6f4> +8000263c: 00f57713 andi a4,a0,15 +80002640: 00400693 li a3,4 +80002644: 62d70663 beq a4,a3,80002c70 <__subdf3+0x6f4> +80002648: 00450693 addi a3,a0,4 +8000264c: 00a6b533 sltu a0,a3,a0 +80002650: 00a787b3 add a5,a5,a0 +80002654: 00068513 mv a0,a3 +80002658: 6180006f j 80002c70 <__subdf3+0x6f4> +8000265c: 7ff00693 li a3,2047 +80002660: fcd40ae3 beq s0,a3,80002634 <__subdf3+0xb8> +80002664: 008006b7 lui a3,0x800 +80002668: 00d76733 or a4,a4,a3 +8000266c: 03800693 li a3,56 +80002670: 0b06ca63 blt a3,a6,80002724 <__subdf3+0x1a8> +80002674: 01f00693 li a3,31 +80002678: 0706cc63 blt a3,a6,800026f0 <__subdf3+0x174> +8000267c: 02000593 li a1,32 +80002680: 410585b3 sub a1,a1,a6 +80002684: 00b716b3 sll a3,a4,a1 +80002688: 010658b3 srl a7,a2,a6 +8000268c: 00b61633 sll a2,a2,a1 +80002690: 0116e6b3 or a3,a3,a7 +80002694: 00c03633 snez a2,a2 +80002698: 00c6e633 or a2,a3,a2 +8000269c: 01075733 srl a4,a4,a6 +800026a0: 00a60633 add a2,a2,a0 +800026a4: 00f70733 add a4,a4,a5 +800026a8: 00a637b3 sltu a5,a2,a0 +800026ac: 00f707b3 add a5,a4,a5 +800026b0: 00060513 mv a0,a2 +800026b4: 00879713 slli a4,a5,0x8 +800026b8: f6075ee3 bgez a4,80002634 <__subdf3+0xb8> +800026bc: 00140413 addi s0,s0,1 +800026c0: 7ff00713 li a4,2047 +800026c4: 5ae40263 beq s0,a4,80002c68 <__subdf3+0x6ec> +800026c8: ff8006b7 lui a3,0xff800 +800026cc: fff68693 addi a3,a3,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +800026d0: 00d7f6b3 and a3,a5,a3 +800026d4: 00155593 srli a1,a0,0x1 +800026d8: 00157513 andi a0,a0,1 +800026dc: 01f69793 slli a5,a3,0x1f +800026e0: 00a5e533 or a0,a1,a0 +800026e4: 00a7e533 or a0,a5,a0 +800026e8: 0016d793 srli a5,a3,0x1 +800026ec: f49ff06f j 80002634 <__subdf3+0xb8> +800026f0: fe080693 addi a3,a6,-32 +800026f4: 02000893 li a7,32 +800026f8: 00d756b3 srl a3,a4,a3 +800026fc: 00000593 li a1,0 +80002700: 01180863 beq a6,a7,80002710 <__subdf3+0x194> +80002704: 04000593 li a1,64 +80002708: 41058833 sub a6,a1,a6 +8000270c: 010715b3 sll a1,a4,a6 +80002710: 00c5e633 or a2,a1,a2 +80002714: 00c03633 snez a2,a2 +80002718: 00c6e633 or a2,a3,a2 +8000271c: 00000713 li a4,0 +80002720: f81ff06f j 800026a0 <__subdf3+0x124> +80002724: 00c76633 or a2,a4,a2 +80002728: 00c03633 snez a2,a2 +8000272c: ff1ff06f j 8000271c <__subdf3+0x1a0> +80002730: 0e080263 beqz a6,80002814 <__subdf3+0x298> +80002734: 408885b3 sub a1,a7,s0 +80002738: 02041e63 bnez s0,80002774 <__subdf3+0x1f8> +8000273c: 00a7e6b3 or a3,a5,a0 +80002740: 50068463 beqz a3,80002c48 <__subdf3+0x6cc> +80002744: fff58693 addi a3,a1,-1 +80002748: 00069c63 bnez a3,80002760 <__subdf3+0x1e4> +8000274c: 00c50533 add a0,a0,a2 +80002750: 00e787b3 add a5,a5,a4 +80002754: 00c53633 sltu a2,a0,a2 +80002758: 00c787b3 add a5,a5,a2 +8000275c: ec9ff06f j 80002624 <__subdf3+0xa8> +80002760: 7ff00813 li a6,2047 +80002764: 03059263 bne a1,a6,80002788 <__subdf3+0x20c> +80002768: 00070793 mv a5,a4 +8000276c: 00060513 mv a0,a2 +80002770: 3b00006f j 80002b20 <__subdf3+0x5a4> +80002774: 7ff00693 li a3,2047 +80002778: fed888e3 beq a7,a3,80002768 <__subdf3+0x1ec> +8000277c: 008006b7 lui a3,0x800 +80002780: 00d7e7b3 or a5,a5,a3 +80002784: 00058693 mv a3,a1 +80002788: 03800593 li a1,56 +8000278c: 06d5ce63 blt a1,a3,80002808 <__subdf3+0x28c> +80002790: 01f00593 li a1,31 +80002794: 04d5c063 blt a1,a3,800027d4 <__subdf3+0x258> +80002798: 02000813 li a6,32 +8000279c: 40d80833 sub a6,a6,a3 +800027a0: 00d55333 srl t1,a0,a3 +800027a4: 010795b3 sll a1,a5,a6 +800027a8: 01051533 sll a0,a0,a6 +800027ac: 0065e5b3 or a1,a1,t1 +800027b0: 00a03533 snez a0,a0 +800027b4: 00a5e533 or a0,a1,a0 +800027b8: 00d7d6b3 srl a3,a5,a3 +800027bc: 00c50533 add a0,a0,a2 +800027c0: 00e687b3 add a5,a3,a4 +800027c4: 00c53633 sltu a2,a0,a2 +800027c8: 00c787b3 add a5,a5,a2 +800027cc: 00088413 mv s0,a7 +800027d0: ee5ff06f j 800026b4 <__subdf3+0x138> +800027d4: fe068593 addi a1,a3,-32 # 7fffe0 <_start-0x7f800020> +800027d8: 02000313 li t1,32 +800027dc: 00b7d5b3 srl a1,a5,a1 +800027e0: 00000813 li a6,0 +800027e4: 00668863 beq a3,t1,800027f4 <__subdf3+0x278> +800027e8: 04000813 li a6,64 +800027ec: 40d806b3 sub a3,a6,a3 +800027f0: 00d79833 sll a6,a5,a3 +800027f4: 00a86533 or a0,a6,a0 +800027f8: 00a03533 snez a0,a0 +800027fc: 00a5e533 or a0,a1,a0 +80002800: 00000693 li a3,0 +80002804: fb9ff06f j 800027bc <__subdf3+0x240> +80002808: 00a7e533 or a0,a5,a0 +8000280c: 00a03533 snez a0,a0 +80002810: ff1ff06f j 80002800 <__subdf3+0x284> +80002814: 00140693 addi a3,s0,1 +80002818: 7fe6f593 andi a1,a3,2046 +8000281c: 06059463 bnez a1,80002884 <__subdf3+0x308> +80002820: 00a7e6b3 or a3,a5,a0 +80002824: 04041063 bnez s0,80002864 <__subdf3+0x2e8> +80002828: 42068863 beqz a3,80002c58 <__subdf3+0x6dc> +8000282c: 00c766b3 or a3,a4,a2 +80002830: e00682e3 beqz a3,80002634 <__subdf3+0xb8> +80002834: 00c50633 add a2,a0,a2 +80002838: 00e787b3 add a5,a5,a4 +8000283c: 00a63533 sltu a0,a2,a0 +80002840: 00a787b3 add a5,a5,a0 +80002844: 00879713 slli a4,a5,0x8 +80002848: 00060513 mv a0,a2 +8000284c: de0754e3 bgez a4,80002634 <__subdf3+0xb8> +80002850: ff800737 lui a4,0xff800 +80002854: fff70713 addi a4,a4,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +80002858: 00e7f7b3 and a5,a5,a4 +8000285c: 00100413 li s0,1 +80002860: dd5ff06f j 80002634 <__subdf3+0xb8> +80002864: f00682e3 beqz a3,80002768 <__subdf3+0x1ec> +80002868: 00c76633 or a2,a4,a2 +8000286c: 2a060a63 beqz a2,80002b20 <__subdf3+0x5a4> +80002870: 00000493 li s1,0 +80002874: 004007b7 lui a5,0x400 +80002878: 00000513 li a0,0 +8000287c: 7ff00413 li s0,2047 +80002880: 3f00006f j 80002c70 <__subdf3+0x6f4> +80002884: 7ff00593 li a1,2047 +80002888: 3cb68e63 beq a3,a1,80002c64 <__subdf3+0x6e8> +8000288c: 00c50633 add a2,a0,a2 +80002890: 00e78733 add a4,a5,a4 +80002894: 00a637b3 sltu a5,a2,a0 +80002898: 00f70733 add a4,a4,a5 +8000289c: 01f71513 slli a0,a4,0x1f +800028a0: 00165613 srli a2,a2,0x1 +800028a4: 00c56533 or a0,a0,a2 +800028a8: 00175793 srli a5,a4,0x1 +800028ac: 00068413 mv s0,a3 +800028b0: d85ff06f j 80002634 <__subdf3+0xb8> +800028b4: 0f005a63 blez a6,800029a8 <__subdf3+0x42c> +800028b8: 08089e63 bnez a7,80002954 <__subdf3+0x3d8> +800028bc: 00c766b3 or a3,a4,a2 +800028c0: d6068ae3 beqz a3,80002634 <__subdf3+0xb8> +800028c4: fff40813 addi a6,s0,-1 +800028c8: 02081063 bnez a6,800028e8 <__subdf3+0x36c> +800028cc: 40c50633 sub a2,a0,a2 +800028d0: 00c53533 sltu a0,a0,a2 +800028d4: 40e787b3 sub a5,a5,a4 +800028d8: 40a787b3 sub a5,a5,a0 +800028dc: 00060513 mv a0,a2 +800028e0: 00100413 li s0,1 +800028e4: 0540006f j 80002938 <__subdf3+0x3bc> +800028e8: 7ff00693 li a3,2047 +800028ec: d4d404e3 beq s0,a3,80002634 <__subdf3+0xb8> +800028f0: 03800693 li a3,56 +800028f4: 0b06c463 blt a3,a6,8000299c <__subdf3+0x420> +800028f8: 01f00693 li a3,31 +800028fc: 0706c663 blt a3,a6,80002968 <__subdf3+0x3ec> +80002900: 02000593 li a1,32 +80002904: 410585b3 sub a1,a1,a6 +80002908: 00b716b3 sll a3,a4,a1 +8000290c: 010658b3 srl a7,a2,a6 +80002910: 00b61633 sll a2,a2,a1 +80002914: 0116e6b3 or a3,a3,a7 +80002918: 00c03633 snez a2,a2 +8000291c: 00c6e633 or a2,a3,a2 +80002920: 01075733 srl a4,a4,a6 +80002924: 40c50633 sub a2,a0,a2 +80002928: 40e78733 sub a4,a5,a4 +8000292c: 00c537b3 sltu a5,a0,a2 +80002930: 40f707b3 sub a5,a4,a5 +80002934: 00060513 mv a0,a2 +80002938: 00879713 slli a4,a5,0x8 +8000293c: ce075ce3 bgez a4,80002634 <__subdf3+0xb8> +80002940: 00800937 lui s2,0x800 +80002944: fff90913 addi s2,s2,-1 # 7fffff <_start-0x7f800001> +80002948: 0127f933 and s2,a5,s2 +8000294c: 00050993 mv s3,a0 +80002950: 20c0006f j 80002b5c <__subdf3+0x5e0> +80002954: 7ff00693 li a3,2047 +80002958: ccd40ee3 beq s0,a3,80002634 <__subdf3+0xb8> +8000295c: 008006b7 lui a3,0x800 +80002960: 00d76733 or a4,a4,a3 +80002964: f8dff06f j 800028f0 <__subdf3+0x374> +80002968: fe080693 addi a3,a6,-32 +8000296c: 02000893 li a7,32 +80002970: 00d756b3 srl a3,a4,a3 +80002974: 00000593 li a1,0 +80002978: 01180863 beq a6,a7,80002988 <__subdf3+0x40c> +8000297c: 04000593 li a1,64 +80002980: 41058833 sub a6,a1,a6 +80002984: 010715b3 sll a1,a4,a6 +80002988: 00c5e633 or a2,a1,a2 +8000298c: 00c03633 snez a2,a2 +80002990: 00c6e633 or a2,a3,a2 +80002994: 00000713 li a4,0 +80002998: f8dff06f j 80002924 <__subdf3+0x3a8> +8000299c: 00c76633 or a2,a4,a2 +800029a0: 00c03633 snez a2,a2 +800029a4: ff1ff06f j 80002994 <__subdf3+0x418> +800029a8: 0e080863 beqz a6,80002a98 <__subdf3+0x51c> +800029ac: 40888833 sub a6,a7,s0 +800029b0: 04041263 bnez s0,800029f4 <__subdf3+0x478> +800029b4: 00a7e6b3 or a3,a5,a0 +800029b8: 34068463 beqz a3,80002d00 <__subdf3+0x784> +800029bc: fff80693 addi a3,a6,-1 +800029c0: 00069e63 bnez a3,800029dc <__subdf3+0x460> +800029c4: 40a60533 sub a0,a2,a0 +800029c8: 40f707b3 sub a5,a4,a5 +800029cc: 00a63633 sltu a2,a2,a0 +800029d0: 40c787b3 sub a5,a5,a2 +800029d4: 00058493 mv s1,a1 +800029d8: f09ff06f j 800028e0 <__subdf3+0x364> +800029dc: 7ff00313 li t1,2047 +800029e0: 02681463 bne a6,t1,80002a08 <__subdf3+0x48c> +800029e4: 00070793 mv a5,a4 +800029e8: 00060513 mv a0,a2 +800029ec: 7ff00413 li s0,2047 +800029f0: 0d00006f j 80002ac0 <__subdf3+0x544> +800029f4: 7ff00693 li a3,2047 +800029f8: fed886e3 beq a7,a3,800029e4 <__subdf3+0x468> +800029fc: 008006b7 lui a3,0x800 +80002a00: 00d7e7b3 or a5,a5,a3 +80002a04: 00080693 mv a3,a6 +80002a08: 03800813 li a6,56 +80002a0c: 08d84063 blt a6,a3,80002a8c <__subdf3+0x510> +80002a10: 01f00813 li a6,31 +80002a14: 04d84263 blt a6,a3,80002a58 <__subdf3+0x4dc> +80002a18: 02000313 li t1,32 +80002a1c: 40d30333 sub t1,t1,a3 +80002a20: 00d55e33 srl t3,a0,a3 +80002a24: 00679833 sll a6,a5,t1 +80002a28: 00651533 sll a0,a0,t1 +80002a2c: 01c86833 or a6,a6,t3 +80002a30: 00a03533 snez a0,a0 +80002a34: 00a86533 or a0,a6,a0 +80002a38: 00d7d6b3 srl a3,a5,a3 +80002a3c: 40a60533 sub a0,a2,a0 +80002a40: 40d707b3 sub a5,a4,a3 +80002a44: 00a63633 sltu a2,a2,a0 +80002a48: 40c787b3 sub a5,a5,a2 +80002a4c: 00088413 mv s0,a7 +80002a50: 00058493 mv s1,a1 +80002a54: ee5ff06f j 80002938 <__subdf3+0x3bc> +80002a58: fe068813 addi a6,a3,-32 # 7fffe0 <_start-0x7f800020> +80002a5c: 02000e13 li t3,32 +80002a60: 0107d833 srl a6,a5,a6 +80002a64: 00000313 li t1,0 +80002a68: 01c68863 beq a3,t3,80002a78 <__subdf3+0x4fc> +80002a6c: 04000313 li t1,64 +80002a70: 40d306b3 sub a3,t1,a3 +80002a74: 00d79333 sll t1,a5,a3 +80002a78: 00a36533 or a0,t1,a0 +80002a7c: 00a03533 snez a0,a0 +80002a80: 00a86533 or a0,a6,a0 +80002a84: 00000693 li a3,0 +80002a88: fb5ff06f j 80002a3c <__subdf3+0x4c0> +80002a8c: 00a7e533 or a0,a5,a0 +80002a90: 00a03533 snez a0,a0 +80002a94: ff1ff06f j 80002a84 <__subdf3+0x508> +80002a98: 00140693 addi a3,s0,1 +80002a9c: 7fe6f693 andi a3,a3,2046 +80002aa0: 08069863 bnez a3,80002b30 <__subdf3+0x5b4> +80002aa4: 00a7e833 or a6,a5,a0 +80002aa8: 00c766b3 or a3,a4,a2 +80002aac: 06041063 bnez s0,80002b0c <__subdf3+0x590> +80002ab0: 00081c63 bnez a6,80002ac8 <__subdf3+0x54c> +80002ab4: 24068e63 beqz a3,80002d10 <__subdf3+0x794> +80002ab8: 00070793 mv a5,a4 +80002abc: 00060513 mv a0,a2 +80002ac0: 00058493 mv s1,a1 +80002ac4: b71ff06f j 80002634 <__subdf3+0xb8> +80002ac8: b60686e3 beqz a3,80002634 <__subdf3+0xb8> +80002acc: 40c50833 sub a6,a0,a2 +80002ad0: 010538b3 sltu a7,a0,a6 +80002ad4: 40e786b3 sub a3,a5,a4 +80002ad8: 411686b3 sub a3,a3,a7 +80002adc: 00869893 slli a7,a3,0x8 +80002ae0: 0008dc63 bgez a7,80002af8 <__subdf3+0x57c> +80002ae4: 40a60533 sub a0,a2,a0 +80002ae8: 40f707b3 sub a5,a4,a5 +80002aec: 00a63633 sltu a2,a2,a0 +80002af0: 40c787b3 sub a5,a5,a2 +80002af4: fcdff06f j 80002ac0 <__subdf3+0x544> +80002af8: 00d86533 or a0,a6,a3 +80002afc: 22050263 beqz a0,80002d20 <__subdf3+0x7a4> +80002b00: 00068793 mv a5,a3 +80002b04: 00080513 mv a0,a6 +80002b08: b2dff06f j 80002634 <__subdf3+0xb8> +80002b0c: 00081e63 bnez a6,80002b28 <__subdf3+0x5ac> +80002b10: 20068c63 beqz a3,80002d28 <__subdf3+0x7ac> +80002b14: 00070793 mv a5,a4 +80002b18: 00060513 mv a0,a2 +80002b1c: 00058493 mv s1,a1 +80002b20: 7ff00413 li s0,2047 +80002b24: b11ff06f j 80002634 <__subdf3+0xb8> +80002b28: fe068ce3 beqz a3,80002b20 <__subdf3+0x5a4> +80002b2c: d45ff06f j 80002870 <__subdf3+0x2f4> +80002b30: 40c509b3 sub s3,a0,a2 +80002b34: 013536b3 sltu a3,a0,s3 +80002b38: 40e78933 sub s2,a5,a4 +80002b3c: 40d90933 sub s2,s2,a3 +80002b40: 00891693 slli a3,s2,0x8 +80002b44: 0806d463 bgez a3,80002bcc <__subdf3+0x650> +80002b48: 40a609b3 sub s3,a2,a0 +80002b4c: 40f707b3 sub a5,a4,a5 +80002b50: 01363633 sltu a2,a2,s3 +80002b54: 40c78933 sub s2,a5,a2 +80002b58: 00058493 mv s1,a1 +80002b5c: 08090263 beqz s2,80002be0 <__subdf3+0x664> +80002b60: 00090513 mv a0,s2 +80002b64: 484000ef jal ra,80002fe8 <__clzsi2> +80002b68: ff850713 addi a4,a0,-8 +80002b6c: 01f00793 li a5,31 +80002b70: 08e7c063 blt a5,a4,80002bf0 <__subdf3+0x674> +80002b74: 02000693 li a3,32 +80002b78: 40e686b3 sub a3,a3,a4 +80002b7c: 00e917b3 sll a5,s2,a4 +80002b80: 00d9d6b3 srl a3,s3,a3 +80002b84: 00f6e6b3 or a3,a3,a5 +80002b88: 00e99533 sll a0,s3,a4 +80002b8c: 0a874463 blt a4,s0,80002c34 <__subdf3+0x6b8> +80002b90: 40870733 sub a4,a4,s0 +80002b94: 00170793 addi a5,a4,1 +80002b98: 01f00613 li a2,31 +80002b9c: 06f64263 blt a2,a5,80002c00 <__subdf3+0x684> +80002ba0: 02000713 li a4,32 +80002ba4: 40f70733 sub a4,a4,a5 +80002ba8: 00f555b3 srl a1,a0,a5 +80002bac: 00e69633 sll a2,a3,a4 +80002bb0: 00e51533 sll a0,a0,a4 +80002bb4: 00b66633 or a2,a2,a1 +80002bb8: 00a03533 snez a0,a0 +80002bbc: 00a66533 or a0,a2,a0 +80002bc0: 00f6d7b3 srl a5,a3,a5 +80002bc4: 00000413 li s0,0 +80002bc8: a6dff06f j 80002634 <__subdf3+0xb8> +80002bcc: 0129e533 or a0,s3,s2 +80002bd0: f80516e3 bnez a0,80002b5c <__subdf3+0x5e0> +80002bd4: 00000793 li a5,0 +80002bd8: 00000413 li s0,0 +80002bdc: 13c0006f j 80002d18 <__subdf3+0x79c> +80002be0: 00098513 mv a0,s3 +80002be4: 404000ef jal ra,80002fe8 <__clzsi2> +80002be8: 02050513 addi a0,a0,32 +80002bec: f7dff06f j 80002b68 <__subdf3+0x5ec> +80002bf0: fd850513 addi a0,a0,-40 +80002bf4: 00a996b3 sll a3,s3,a0 +80002bf8: 00000513 li a0,0 +80002bfc: f91ff06f j 80002b8c <__subdf3+0x610> +80002c00: fe170713 addi a4,a4,-31 +80002c04: 02000593 li a1,32 +80002c08: 00e6d733 srl a4,a3,a4 +80002c0c: 00000613 li a2,0 +80002c10: 00b78863 beq a5,a1,80002c20 <__subdf3+0x6a4> +80002c14: 04000613 li a2,64 +80002c18: 40f60633 sub a2,a2,a5 +80002c1c: 00c69633 sll a2,a3,a2 +80002c20: 00c56533 or a0,a0,a2 +80002c24: 00a03533 snez a0,a0 +80002c28: 00a76533 or a0,a4,a0 +80002c2c: 00000793 li a5,0 +80002c30: f95ff06f j 80002bc4 <__subdf3+0x648> +80002c34: ff8007b7 lui a5,0xff800 +80002c38: fff78793 addi a5,a5,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +80002c3c: 40e40433 sub s0,s0,a4 +80002c40: 00f6f7b3 and a5,a3,a5 +80002c44: 9f1ff06f j 80002634 <__subdf3+0xb8> +80002c48: 00070793 mv a5,a4 +80002c4c: 00060513 mv a0,a2 +80002c50: 00058413 mv s0,a1 +80002c54: 9e1ff06f j 80002634 <__subdf3+0xb8> +80002c58: 00070793 mv a5,a4 +80002c5c: 00060513 mv a0,a2 +80002c60: 9d5ff06f j 80002634 <__subdf3+0xb8> +80002c64: 7ff00413 li s0,2047 +80002c68: 00000793 li a5,0 +80002c6c: 00000513 li a0,0 +80002c70: 00879713 slli a4,a5,0x8 +80002c74: 00075e63 bgez a4,80002c90 <__subdf3+0x714> +80002c78: 00140413 addi s0,s0,1 +80002c7c: 7ff00713 li a4,2047 +80002c80: 0ae40c63 beq s0,a4,80002d38 <__subdf3+0x7bc> +80002c84: ff800737 lui a4,0xff800 +80002c88: fff70713 addi a4,a4,-1 # ff7fffff <__global_pointer$+0x7f7fb227> +80002c8c: 00e7f7b3 and a5,a5,a4 +80002c90: 01d79713 slli a4,a5,0x1d +80002c94: 00355513 srli a0,a0,0x3 +80002c98: 00a76533 or a0,a4,a0 +80002c9c: 7ff00713 li a4,2047 +80002ca0: 0037d793 srli a5,a5,0x3 +80002ca4: 00e41e63 bne s0,a4,80002cc0 <__subdf3+0x744> +80002ca8: 00f56533 or a0,a0,a5 +80002cac: 00000793 li a5,0 +80002cb0: 00050863 beqz a0,80002cc0 <__subdf3+0x744> +80002cb4: 000807b7 lui a5,0x80 +80002cb8: 00000513 li a0,0 +80002cbc: 00000493 li s1,0 +80002cc0: 01441713 slli a4,s0,0x14 +80002cc4: 7ff006b7 lui a3,0x7ff00 +80002cc8: 00c79793 slli a5,a5,0xc +80002ccc: 01c12083 lw ra,28(sp) +80002cd0: 01812403 lw s0,24(sp) +80002cd4: 00d77733 and a4,a4,a3 +80002cd8: 00c7d793 srli a5,a5,0xc +80002cdc: 01f49493 slli s1,s1,0x1f +80002ce0: 00f767b3 or a5,a4,a5 +80002ce4: 0097e733 or a4,a5,s1 +80002ce8: 01012903 lw s2,16(sp) +80002cec: 01412483 lw s1,20(sp) +80002cf0: 00c12983 lw s3,12(sp) +80002cf4: 00070593 mv a1,a4 +80002cf8: 02010113 addi sp,sp,32 +80002cfc: 00008067 ret +80002d00: 00070793 mv a5,a4 +80002d04: 00060513 mv a0,a2 +80002d08: 00080413 mv s0,a6 +80002d0c: db5ff06f j 80002ac0 <__subdf3+0x544> +80002d10: 00000793 li a5,0 +80002d14: 00000513 li a0,0 +80002d18: 00000493 li s1,0 +80002d1c: f55ff06f j 80002c70 <__subdf3+0x6f4> +80002d20: 00000793 li a5,0 +80002d24: ff5ff06f j 80002d18 <__subdf3+0x79c> +80002d28: 00000513 li a0,0 +80002d2c: 00000493 li s1,0 +80002d30: 004007b7 lui a5,0x400 +80002d34: b49ff06f j 8000287c <__subdf3+0x300> +80002d38: 00000793 li a5,0 +80002d3c: 00000513 li a0,0 +80002d40: f51ff06f j 80002c90 <__subdf3+0x714> + +80002d44 <__unorddf2>: +80002d44: 00100737 lui a4,0x100 +80002d48: fff70793 addi a5,a4,-1 # fffff <_start-0x7ff00001> +80002d4c: 00b7f733 and a4,a5,a1 +80002d50: 0145d593 srli a1,a1,0x14 +80002d54: fff5c593 not a1,a1 +80002d58: 00d7f7b3 and a5,a5,a3 +80002d5c: 01559813 slli a6,a1,0x15 +80002d60: 0146d693 srli a3,a3,0x14 +80002d64: 7ff6f693 andi a3,a3,2047 +80002d68: 00081863 bnez a6,80002d78 <__unorddf2+0x34> +80002d6c: 00a76733 or a4,a4,a0 +80002d70: 00100513 li a0,1 +80002d74: 00071c63 bnez a4,80002d8c <__unorddf2+0x48> +80002d78: 7ff00713 li a4,2047 +80002d7c: 00000513 li a0,0 +80002d80: 00e69663 bne a3,a4,80002d8c <__unorddf2+0x48> +80002d84: 00c7e7b3 or a5,a5,a2 +80002d88: 00f03533 snez a0,a5 +80002d8c: 00008067 ret + +80002d90 <__extendsfdf2>: +80002d90: 01755793 srli a5,a0,0x17 +80002d94: ff010113 addi sp,sp,-16 +80002d98: 0ff7f793 andi a5,a5,255 +80002d9c: 00812423 sw s0,8(sp) +80002da0: 00912223 sw s1,4(sp) +80002da4: 00951413 slli s0,a0,0x9 +80002da8: 01f55493 srli s1,a0,0x1f +80002dac: 00178513 addi a0,a5,1 # 400001 <_start-0x7fbfffff> +80002db0: 00112623 sw ra,12(sp) +80002db4: 0fe57513 andi a0,a0,254 +80002db8: 00945413 srli s0,s0,0x9 +80002dbc: 04050263 beqz a0,80002e00 <__extendsfdf2+0x70> +80002dc0: 38078513 addi a0,a5,896 +80002dc4: 00345793 srli a5,s0,0x3 +80002dc8: 01d41413 slli s0,s0,0x1d +80002dcc: 00c79793 slli a5,a5,0xc +80002dd0: 01451513 slli a0,a0,0x14 +80002dd4: 00c7d793 srli a5,a5,0xc +80002dd8: 00f567b3 or a5,a0,a5 +80002ddc: 01f49513 slli a0,s1,0x1f +80002de0: 00c12083 lw ra,12(sp) +80002de4: 00a7e733 or a4,a5,a0 +80002de8: 00040513 mv a0,s0 +80002dec: 00812403 lw s0,8(sp) +80002df0: 00412483 lw s1,4(sp) +80002df4: 00070593 mv a1,a4 +80002df8: 01010113 addi sp,sp,16 +80002dfc: 00008067 ret +80002e00: 04079463 bnez a5,80002e48 <__extendsfdf2+0xb8> +80002e04: fc0404e3 beqz s0,80002dcc <__extendsfdf2+0x3c> +80002e08: 00040513 mv a0,s0 +80002e0c: 1dc000ef jal ra,80002fe8 <__clzsi2> +80002e10: 00a00793 li a5,10 +80002e14: 02a7c263 blt a5,a0,80002e38 <__extendsfdf2+0xa8> +80002e18: 00b00793 li a5,11 +80002e1c: 40a787b3 sub a5,a5,a0 +80002e20: 01550713 addi a4,a0,21 +80002e24: 00f457b3 srl a5,s0,a5 +80002e28: 00e41433 sll s0,s0,a4 +80002e2c: 38900713 li a4,905 +80002e30: 40a70533 sub a0,a4,a0 +80002e34: f99ff06f j 80002dcc <__extendsfdf2+0x3c> +80002e38: ff550793 addi a5,a0,-11 +80002e3c: 00f417b3 sll a5,s0,a5 +80002e40: 00000413 li s0,0 +80002e44: fe9ff06f j 80002e2c <__extendsfdf2+0x9c> +80002e48: 00000793 li a5,0 +80002e4c: 00040a63 beqz s0,80002e60 <__extendsfdf2+0xd0> +80002e50: 00345793 srli a5,s0,0x3 +80002e54: 00080737 lui a4,0x80 +80002e58: 01d41413 slli s0,s0,0x1d +80002e5c: 00e7e7b3 or a5,a5,a4 +80002e60: 7ff00513 li a0,2047 +80002e64: f69ff06f j 80002dcc <__extendsfdf2+0x3c> + +80002e68 <__truncdfsf2>: +80002e68: 00c59613 slli a2,a1,0xc +80002e6c: 0145d813 srli a6,a1,0x14 +80002e70: 01d55793 srli a5,a0,0x1d +80002e74: 7ff87813 andi a6,a6,2047 +80002e78: 00965613 srli a2,a2,0x9 +80002e7c: 00c7e633 or a2,a5,a2 +80002e80: 00180793 addi a5,a6,1 +80002e84: 7fe7f793 andi a5,a5,2046 +80002e88: 01f5d593 srli a1,a1,0x1f +80002e8c: 00351713 slli a4,a0,0x3 +80002e90: 0a078663 beqz a5,80002f3c <__truncdfsf2+0xd4> +80002e94: c8080693 addi a3,a6,-896 +80002e98: 0fe00793 li a5,254 +80002e9c: 0cd7c263 blt a5,a3,80002f60 <__truncdfsf2+0xf8> +80002ea0: 08d04063 bgtz a3,80002f20 <__truncdfsf2+0xb8> +80002ea4: fe900793 li a5,-23 +80002ea8: 10f6ce63 blt a3,a5,80002fc4 <__truncdfsf2+0x15c> +80002eac: 008007b7 lui a5,0x800 +80002eb0: 01e00513 li a0,30 +80002eb4: 00f66633 or a2,a2,a5 +80002eb8: 40d50533 sub a0,a0,a3 +80002ebc: 01f00793 li a5,31 +80002ec0: 02a7c863 blt a5,a0,80002ef0 <__truncdfsf2+0x88> +80002ec4: c8280813 addi a6,a6,-894 +80002ec8: 010717b3 sll a5,a4,a6 +80002ecc: 00f037b3 snez a5,a5 +80002ed0: 01061633 sll a2,a2,a6 +80002ed4: 00a75533 srl a0,a4,a0 +80002ed8: 00c7e7b3 or a5,a5,a2 +80002edc: 00f567b3 or a5,a0,a5 +80002ee0: 00000693 li a3,0 +80002ee4: 0077f713 andi a4,a5,7 +80002ee8: 08070063 beqz a4,80002f68 <__truncdfsf2+0x100> +80002eec: 0e00006f j 80002fcc <__truncdfsf2+0x164> +80002ef0: ffe00793 li a5,-2 +80002ef4: 40d786b3 sub a3,a5,a3 +80002ef8: 02000793 li a5,32 +80002efc: 00d656b3 srl a3,a2,a3 +80002f00: 00000893 li a7,0 +80002f04: 00f50663 beq a0,a5,80002f10 <__truncdfsf2+0xa8> +80002f08: ca280813 addi a6,a6,-862 +80002f0c: 010618b3 sll a7,a2,a6 +80002f10: 00e8e7b3 or a5,a7,a4 +80002f14: 00f037b3 snez a5,a5 +80002f18: 00f6e7b3 or a5,a3,a5 +80002f1c: fc5ff06f j 80002ee0 <__truncdfsf2+0x78> +80002f20: 00651513 slli a0,a0,0x6 +80002f24: 00a03533 snez a0,a0 +80002f28: 00361613 slli a2,a2,0x3 +80002f2c: 01d75793 srli a5,a4,0x1d +80002f30: 00c56633 or a2,a0,a2 +80002f34: 00f667b3 or a5,a2,a5 +80002f38: fadff06f j 80002ee4 <__truncdfsf2+0x7c> +80002f3c: 00e667b3 or a5,a2,a4 +80002f40: 00081663 bnez a6,80002f4c <__truncdfsf2+0xe4> +80002f44: 00f037b3 snez a5,a5 +80002f48: f99ff06f j 80002ee0 <__truncdfsf2+0x78> +80002f4c: 0ff00693 li a3,255 +80002f50: 00078c63 beqz a5,80002f68 <__truncdfsf2+0x100> +80002f54: 00361613 slli a2,a2,0x3 +80002f58: 020007b7 lui a5,0x2000 +80002f5c: fd9ff06f j 80002f34 <__truncdfsf2+0xcc> +80002f60: 00000793 li a5,0 +80002f64: 0ff00693 li a3,255 +80002f68: 00579713 slli a4,a5,0x5 +80002f6c: 00075e63 bgez a4,80002f88 <__truncdfsf2+0x120> +80002f70: 00168693 addi a3,a3,1 # 7ff00001 <_start-0xfffff> +80002f74: 0ff00713 li a4,255 +80002f78: 06e68463 beq a3,a4,80002fe0 <__truncdfsf2+0x178> +80002f7c: fc000737 lui a4,0xfc000 +80002f80: fff70713 addi a4,a4,-1 # fbffffff <__global_pointer$+0x7bffb227> +80002f84: 00e7f7b3 and a5,a5,a4 +80002f88: 0ff00713 li a4,255 +80002f8c: 0037d793 srli a5,a5,0x3 +80002f90: 00e69863 bne a3,a4,80002fa0 <__truncdfsf2+0x138> +80002f94: 00078663 beqz a5,80002fa0 <__truncdfsf2+0x138> +80002f98: 004007b7 lui a5,0x400 +80002f9c: 00000593 li a1,0 +80002fa0: 7f800537 lui a0,0x7f800 +80002fa4: 01769693 slli a3,a3,0x17 +80002fa8: 00979793 slli a5,a5,0x9 +80002fac: 00a6f6b3 and a3,a3,a0 +80002fb0: 0097d793 srli a5,a5,0x9 +80002fb4: 00f6e7b3 or a5,a3,a5 +80002fb8: 01f59513 slli a0,a1,0x1f +80002fbc: 00a7e533 or a0,a5,a0 +80002fc0: 00008067 ret +80002fc4: 00100793 li a5,1 +80002fc8: 00000693 li a3,0 +80002fcc: 00f7f713 andi a4,a5,15 +80002fd0: 00400613 li a2,4 +80002fd4: f8c70ae3 beq a4,a2,80002f68 <__truncdfsf2+0x100> +80002fd8: 00478793 addi a5,a5,4 # 400004 <_start-0x7fbffffc> +80002fdc: f8dff06f j 80002f68 <__truncdfsf2+0x100> +80002fe0: 00000793 li a5,0 +80002fe4: fa5ff06f j 80002f88 <__truncdfsf2+0x120> + +80002fe8 <__clzsi2>: +80002fe8: 000107b7 lui a5,0x10 +80002fec: 02f57a63 bgeu a0,a5,80003020 <__clzsi2+0x38> +80002ff0: 0ff00793 li a5,255 +80002ff4: 00a7b7b3 sltu a5,a5,a0 +80002ff8: 00379793 slli a5,a5,0x3 +80002ffc: 80003737 lui a4,0x80003 +80003000: 02000693 li a3,32 +80003004: 40f686b3 sub a3,a3,a5 +80003008: 00f55533 srl a0,a0,a5 +8000300c: 4d070793 addi a5,a4,1232 # 800034d0 <__global_pointer$+0xffffe6f8> +80003010: 00a78533 add a0,a5,a0 +80003014: 00054503 lbu a0,0(a0) # 7f800000 <_start-0x800000> +80003018: 40a68533 sub a0,a3,a0 +8000301c: 00008067 ret +80003020: 01000737 lui a4,0x1000 +80003024: 01000793 li a5,16 +80003028: fce56ae3 bltu a0,a4,80002ffc <__clzsi2+0x14> +8000302c: 01800793 li a5,24 +80003030: fcdff06f j 80002ffc <__clzsi2+0x14> + +80003034 : +80003034: 00050593 mv a1,a0 +80003038: 00000693 li a3,0 +8000303c: 00000613 li a2,0 +80003040: 00000513 li a0,0 +80003044: 2100006f j 80003254 <__register_exitproc> + +80003048 <__errno>: +80003048: c341a503 lw a0,-972(gp) # 80004a0c <_impure_ptr> +8000304c: 00008067 ret + +80003050 : +80003050: ff010113 addi sp,sp,-16 +80003054: 00000593 li a1,0 +80003058: 00812423 sw s0,8(sp) +8000305c: 00112623 sw ra,12(sp) +80003060: 00050413 mv s0,a0 +80003064: 288000ef jal ra,800032ec <__call_exitprocs> +80003068: c301a503 lw a0,-976(gp) # 80004a08 <_global_impure_ptr> +8000306c: 03c52783 lw a5,60(a0) +80003070: 00078463 beqz a5,80003078 +80003074: 000780e7 jalr a5 # 10000 <_start-0x7fff0000> +80003078: 00040513 mv a0,s0 +8000307c: af1fd0ef jal ra,80000b6c <_exit> + +80003080 <__libc_fini_array>: +80003080: ff010113 addi sp,sp,-16 +80003084: 00812423 sw s0,8(sp) +80003088: 800047b7 lui a5,0x80004 +8000308c: 80004437 lui s0,0x80004 +80003090: 5d440413 addi s0,s0,1492 # 800045d4 <__global_pointer$+0xfffff7fc> +80003094: 5d478793 addi a5,a5,1492 # 800045d4 <__global_pointer$+0xfffff7fc> +80003098: 408787b3 sub a5,a5,s0 +8000309c: 00912223 sw s1,4(sp) +800030a0: 00112623 sw ra,12(sp) +800030a4: 4027d493 srai s1,a5,0x2 +800030a8: 02048063 beqz s1,800030c8 <__libc_fini_array+0x48> +800030ac: ffc78793 addi a5,a5,-4 +800030b0: 00878433 add s0,a5,s0 +800030b4: 00042783 lw a5,0(s0) +800030b8: fff48493 addi s1,s1,-1 # 7ffff <_start-0x7ff80001> +800030bc: ffc40413 addi s0,s0,-4 +800030c0: 000780e7 jalr a5 +800030c4: fe0498e3 bnez s1,800030b4 <__libc_fini_array+0x34> +800030c8: 00c12083 lw ra,12(sp) +800030cc: 00812403 lw s0,8(sp) +800030d0: 00412483 lw s1,4(sp) +800030d4: 01010113 addi sp,sp,16 +800030d8: 00008067 ret + +800030dc <__libc_init_array>: +800030dc: ff010113 addi sp,sp,-16 +800030e0: 00812423 sw s0,8(sp) +800030e4: 01212023 sw s2,0(sp) +800030e8: 80004437 lui s0,0x80004 +800030ec: 80004937 lui s2,0x80004 +800030f0: 5d040793 addi a5,s0,1488 # 800045d0 <__global_pointer$+0xfffff7f8> +800030f4: 5d090913 addi s2,s2,1488 # 800045d0 <__global_pointer$+0xfffff7f8> +800030f8: 40f90933 sub s2,s2,a5 +800030fc: 00112623 sw ra,12(sp) +80003100: 00912223 sw s1,4(sp) +80003104: 40295913 srai s2,s2,0x2 +80003108: 02090063 beqz s2,80003128 <__libc_init_array+0x4c> +8000310c: 5d040413 addi s0,s0,1488 +80003110: 00000493 li s1,0 +80003114: 00042783 lw a5,0(s0) +80003118: 00148493 addi s1,s1,1 +8000311c: 00440413 addi s0,s0,4 +80003120: 000780e7 jalr a5 +80003124: fe9918e3 bne s2,s1,80003114 <__libc_init_array+0x38> +80003128: 80004437 lui s0,0x80004 +8000312c: 80004937 lui s2,0x80004 +80003130: 5d040793 addi a5,s0,1488 # 800045d0 <__global_pointer$+0xfffff7f8> +80003134: 5d490913 addi s2,s2,1492 # 800045d4 <__global_pointer$+0xfffff7fc> +80003138: 40f90933 sub s2,s2,a5 +8000313c: 40295913 srai s2,s2,0x2 +80003140: 02090063 beqz s2,80003160 <__libc_init_array+0x84> +80003144: 5d040413 addi s0,s0,1488 +80003148: 00000493 li s1,0 +8000314c: 00042783 lw a5,0(s0) +80003150: 00148493 addi s1,s1,1 +80003154: 00440413 addi s0,s0,4 +80003158: 000780e7 jalr a5 +8000315c: fe9918e3 bne s2,s1,8000314c <__libc_init_array+0x70> +80003160: 00c12083 lw ra,12(sp) +80003164: 00812403 lw s0,8(sp) +80003168: 00412483 lw s1,4(sp) +8000316c: 00012903 lw s2,0(sp) +80003170: 01010113 addi sp,sp,16 +80003174: 00008067 ret + +80003178 : +80003178: 00f00313 li t1,15 +8000317c: 00050713 mv a4,a0 +80003180: 02c37e63 bgeu t1,a2,800031bc +80003184: 00f77793 andi a5,a4,15 +80003188: 0a079063 bnez a5,80003228 +8000318c: 08059263 bnez a1,80003210 +80003190: ff067693 andi a3,a2,-16 +80003194: 00f67613 andi a2,a2,15 +80003198: 00e686b3 add a3,a3,a4 +8000319c: 00b72023 sw a1,0(a4) # 1000000 <_start-0x7f000000> +800031a0: 00b72223 sw a1,4(a4) +800031a4: 00b72423 sw a1,8(a4) +800031a8: 00b72623 sw a1,12(a4) +800031ac: 01070713 addi a4,a4,16 +800031b0: fed766e3 bltu a4,a3,8000319c +800031b4: 00061463 bnez a2,800031bc +800031b8: 00008067 ret +800031bc: 40c306b3 sub a3,t1,a2 +800031c0: 00269693 slli a3,a3,0x2 +800031c4: 00000297 auipc t0,0x0 +800031c8: 005686b3 add a3,a3,t0 +800031cc: 00c68067 jr 12(a3) +800031d0: 00b70723 sb a1,14(a4) +800031d4: 00b706a3 sb a1,13(a4) +800031d8: 00b70623 sb a1,12(a4) +800031dc: 00b705a3 sb a1,11(a4) +800031e0: 00b70523 sb a1,10(a4) +800031e4: 00b704a3 sb a1,9(a4) +800031e8: 00b70423 sb a1,8(a4) +800031ec: 00b703a3 sb a1,7(a4) +800031f0: 00b70323 sb a1,6(a4) +800031f4: 00b702a3 sb a1,5(a4) +800031f8: 00b70223 sb a1,4(a4) +800031fc: 00b701a3 sb a1,3(a4) +80003200: 00b70123 sb a1,2(a4) +80003204: 00b700a3 sb a1,1(a4) +80003208: 00b70023 sb a1,0(a4) +8000320c: 00008067 ret +80003210: 0ff5f593 andi a1,a1,255 +80003214: 00859693 slli a3,a1,0x8 +80003218: 00d5e5b3 or a1,a1,a3 +8000321c: 01059693 slli a3,a1,0x10 +80003220: 00d5e5b3 or a1,a1,a3 +80003224: f6dff06f j 80003190 +80003228: 00279693 slli a3,a5,0x2 +8000322c: 00000297 auipc t0,0x0 +80003230: 005686b3 add a3,a3,t0 +80003234: 00008293 mv t0,ra +80003238: fa0680e7 jalr -96(a3) +8000323c: 00028093 mv ra,t0 +80003240: ff078793 addi a5,a5,-16 +80003244: 40f70733 sub a4,a4,a5 +80003248: 00f60633 add a2,a2,a5 +8000324c: f6c378e3 bgeu t1,a2,800031bc +80003250: f3dff06f j 8000318c + +80003254 <__register_exitproc>: +80003254: c301a703 lw a4,-976(gp) # 80004a08 <_global_impure_ptr> +80003258: 14872783 lw a5,328(a4) +8000325c: 04078c63 beqz a5,800032b4 <__register_exitproc+0x60> +80003260: 0047a703 lw a4,4(a5) +80003264: 01f00813 li a6,31 +80003268: 06e84e63 blt a6,a4,800032e4 <__register_exitproc+0x90> +8000326c: 00271813 slli a6,a4,0x2 +80003270: 02050663 beqz a0,8000329c <__register_exitproc+0x48> +80003274: 01078333 add t1,a5,a6 +80003278: 08c32423 sw a2,136(t1) +8000327c: 1887a883 lw a7,392(a5) +80003280: 00100613 li a2,1 +80003284: 00e61633 sll a2,a2,a4 +80003288: 00c8e8b3 or a7,a7,a2 +8000328c: 1917a423 sw a7,392(a5) +80003290: 10d32423 sw a3,264(t1) +80003294: 00200693 li a3,2 +80003298: 02d50463 beq a0,a3,800032c0 <__register_exitproc+0x6c> +8000329c: 00170713 addi a4,a4,1 +800032a0: 00e7a223 sw a4,4(a5) +800032a4: 010787b3 add a5,a5,a6 +800032a8: 00b7a423 sw a1,8(a5) +800032ac: 00000513 li a0,0 +800032b0: 00008067 ret +800032b4: 14c70793 addi a5,a4,332 +800032b8: 14f72423 sw a5,328(a4) +800032bc: fa5ff06f j 80003260 <__register_exitproc+0xc> +800032c0: 18c7a683 lw a3,396(a5) +800032c4: 00170713 addi a4,a4,1 +800032c8: 00e7a223 sw a4,4(a5) +800032cc: 00c6e633 or a2,a3,a2 +800032d0: 18c7a623 sw a2,396(a5) +800032d4: 010787b3 add a5,a5,a6 +800032d8: 00b7a423 sw a1,8(a5) +800032dc: 00000513 li a0,0 +800032e0: 00008067 ret +800032e4: fff00513 li a0,-1 +800032e8: 00008067 ret + +800032ec <__call_exitprocs>: +800032ec: fd010113 addi sp,sp,-48 +800032f0: 01412c23 sw s4,24(sp) +800032f4: c301aa03 lw s4,-976(gp) # 80004a08 <_global_impure_ptr> +800032f8: 03212023 sw s2,32(sp) +800032fc: 02112623 sw ra,44(sp) +80003300: 148a2903 lw s2,328(s4) +80003304: 02812423 sw s0,40(sp) +80003308: 02912223 sw s1,36(sp) +8000330c: 01312e23 sw s3,28(sp) +80003310: 01512a23 sw s5,20(sp) +80003314: 01612823 sw s6,16(sp) +80003318: 01712623 sw s7,12(sp) +8000331c: 01812423 sw s8,8(sp) +80003320: 04090063 beqz s2,80003360 <__call_exitprocs+0x74> +80003324: 00050b13 mv s6,a0 +80003328: 00058b93 mv s7,a1 +8000332c: 00100a93 li s5,1 +80003330: fff00993 li s3,-1 +80003334: 00492483 lw s1,4(s2) +80003338: fff48413 addi s0,s1,-1 +8000333c: 02044263 bltz s0,80003360 <__call_exitprocs+0x74> +80003340: 00249493 slli s1,s1,0x2 +80003344: 009904b3 add s1,s2,s1 +80003348: 040b8463 beqz s7,80003390 <__call_exitprocs+0xa4> +8000334c: 1044a783 lw a5,260(s1) +80003350: 05778063 beq a5,s7,80003390 <__call_exitprocs+0xa4> +80003354: fff40413 addi s0,s0,-1 +80003358: ffc48493 addi s1,s1,-4 +8000335c: ff3416e3 bne s0,s3,80003348 <__call_exitprocs+0x5c> +80003360: 02c12083 lw ra,44(sp) +80003364: 02812403 lw s0,40(sp) +80003368: 02412483 lw s1,36(sp) +8000336c: 02012903 lw s2,32(sp) +80003370: 01c12983 lw s3,28(sp) +80003374: 01812a03 lw s4,24(sp) +80003378: 01412a83 lw s5,20(sp) +8000337c: 01012b03 lw s6,16(sp) +80003380: 00c12b83 lw s7,12(sp) +80003384: 00812c03 lw s8,8(sp) +80003388: 03010113 addi sp,sp,48 +8000338c: 00008067 ret +80003390: 00492783 lw a5,4(s2) +80003394: 0044a683 lw a3,4(s1) +80003398: fff78793 addi a5,a5,-1 +8000339c: 04878e63 beq a5,s0,800033f8 <__call_exitprocs+0x10c> +800033a0: 0004a223 sw zero,4(s1) +800033a4: fa0688e3 beqz a3,80003354 <__call_exitprocs+0x68> +800033a8: 18892783 lw a5,392(s2) +800033ac: 008a9733 sll a4,s5,s0 +800033b0: 00492c03 lw s8,4(s2) +800033b4: 00f777b3 and a5,a4,a5 +800033b8: 02079263 bnez a5,800033dc <__call_exitprocs+0xf0> +800033bc: 000680e7 jalr a3 +800033c0: 00492703 lw a4,4(s2) +800033c4: 148a2783 lw a5,328(s4) +800033c8: 01871463 bne a4,s8,800033d0 <__call_exitprocs+0xe4> +800033cc: f8f904e3 beq s2,a5,80003354 <__call_exitprocs+0x68> +800033d0: f80788e3 beqz a5,80003360 <__call_exitprocs+0x74> +800033d4: 00078913 mv s2,a5 +800033d8: f5dff06f j 80003334 <__call_exitprocs+0x48> +800033dc: 18c92783 lw a5,396(s2) +800033e0: 0844a583 lw a1,132(s1) +800033e4: 00f77733 and a4,a4,a5 +800033e8: 00071c63 bnez a4,80003400 <__call_exitprocs+0x114> +800033ec: 000b0513 mv a0,s6 +800033f0: 000680e7 jalr a3 +800033f4: fcdff06f j 800033c0 <__call_exitprocs+0xd4> +800033f8: 00892223 sw s0,4(s2) +800033fc: fa9ff06f j 800033a4 <__call_exitprocs+0xb8> +80003400: 00058513 mv a0,a1 +80003404: 000680e7 jalr a3 +80003408: fb9ff06f j 800033c0 <__call_exitprocs+0xd4> + +Disassembly of section .rodata: + +8000340c : +8000340c: 00b0 addi a2,sp,72 +8000340e: 8000 0x8000 +80003410: 013c addi a5,sp,136 +80003412: 8000 0x8000 +80003414: 01c8 addi a0,sp,196 +80003416: 8000 0x8000 +80003418: 0254 addi a3,sp,260 +8000341a: 8000 0x8000 +8000341c: 02e8 addi a0,sp,332 +8000341e: 8000 0x8000 +80003420: 0374 addi a3,sp,396 +80003422: 8000 0x8000 +80003424: 0400 addi s0,sp,512 +80003426: 8000 0x8000 +80003428: 048c addi a1,sp,576 +8000342a: 8000 0x8000 +8000342c: 051c addi a5,sp,640 +8000342e: 8000 0x8000 +80003430: 05ac addi a1,sp,712 +80003432: 8000 0x8000 +80003434: 063c addi a5,sp,776 +80003436: 8000 0x8000 +80003438: 06cc addi a1,sp,836 +8000343a: 8000 0x8000 +8000343c: 0768 addi a0,sp,908 +8000343e: 8000 0x8000 +80003440: 07f4 addi a3,sp,972 +80003442: 8000 0x8000 +80003444: 0ac8 addi a0,sp,340 +80003446: 8000 0x8000 +80003448: 0888 addi a0,sp,80 +8000344a: 8000 0x8000 +8000344c: 0918 addi a4,sp,144 +8000344e: 8000 0x8000 +80003450: 09a8 addi a0,sp,216 +80003452: 8000 0x8000 +80003454: 0a38 addi a4,sp,280 +80003456: 8000 0x8000 +80003458: 1dbc addi a5,sp,760 +8000345a: 8000 0x8000 +8000345c: 1eac addi a1,sp,888 +8000345e: 8000 0x8000 +80003460: 1dcc addi a1,sp,756 +80003462: 8000 0x8000 +80003464: 1eac addi a1,sp,888 +80003466: 8000 0x8000 +80003468: 1e98 addi a4,sp,880 +8000346a: 8000 0x8000 +8000346c: 1eac addi a1,sp,888 +8000346e: 8000 0x8000 +80003470: 1dcc addi a1,sp,756 +80003472: 8000 0x8000 +80003474: 1dbc addi a5,sp,760 +80003476: 8000 0x8000 +80003478: 1dbc addi a5,sp,760 +8000347a: 8000 0x8000 +8000347c: 1e98 addi a4,sp,880 +8000347e: 8000 0x8000 +80003480: 1dcc addi a1,sp,756 +80003482: 8000 0x8000 +80003484: 1d94 addi a3,sp,752 +80003486: 8000 0x8000 +80003488: 1d94 addi a3,sp,752 +8000348a: 8000 0x8000 +8000348c: 1d94 addi a3,sp,752 +8000348e: 8000 0x8000 +80003490: 1dd4 addi a3,sp,756 +80003492: 8000 0x8000 +80003494: 2464 fld fs1,200(s0) +80003496: 8000 0x8000 +80003498: 2464 fld fs1,200(s0) +8000349a: 8000 0x8000 +8000349c: 2488 fld fa0,8(s1) +8000349e: 8000 0x8000 +800034a0: 2458 fld fa4,136(s0) +800034a2: 8000 0x8000 +800034a4: 2458 fld fa4,136(s0) +800034a6: 8000 0x8000 +800034a8: 2548 fld fa0,136(a0) +800034aa: 8000 0x8000 +800034ac: 2488 fld fa0,8(s1) +800034ae: 8000 0x8000 +800034b0: 2458 fld fa4,136(s0) +800034b2: 8000 0x8000 +800034b4: 2548 fld fa0,136(a0) +800034b6: 8000 0x8000 +800034b8: 2458 fld fa4,136(s0) +800034ba: 8000 0x8000 +800034bc: 2488 fld fa0,8(s1) +800034be: 8000 0x8000 +800034c0: 2454 fld fa3,136(s0) +800034c2: 8000 0x8000 +800034c4: 2454 fld fa3,136(s0) +800034c6: 8000 0x8000 +800034c8: 2454 fld fa3,136(s0) +800034ca: 8000 0x8000 +800034cc: 2548 fld fa0,136(a0) +800034ce: 8000 0x8000 + +800034d0 <__clz_tab>: +800034d0: 0100 addi s0,sp,128 +800034d2: 0202 c.slli64 tp +800034d4: 03030303 lb t1,48(t1) +800034d8: 0404 addi s1,sp,512 +800034da: 0404 addi s1,sp,512 +800034dc: 0404 addi s1,sp,512 +800034de: 0404 addi s1,sp,512 +800034e0: 0505 addi a0,a0,1 +800034e2: 0505 addi a0,a0,1 +800034e4: 0505 addi a0,a0,1 +800034e6: 0505 addi a0,a0,1 +800034e8: 0505 addi a0,a0,1 +800034ea: 0505 addi a0,a0,1 +800034ec: 0505 addi a0,a0,1 +800034ee: 0505 addi a0,a0,1 +800034f0: 0606 slli a2,a2,0x1 +800034f2: 0606 slli a2,a2,0x1 +800034f4: 0606 slli a2,a2,0x1 +800034f6: 0606 slli a2,a2,0x1 +800034f8: 0606 slli a2,a2,0x1 +800034fa: 0606 slli a2,a2,0x1 +800034fc: 0606 slli a2,a2,0x1 +800034fe: 0606 slli a2,a2,0x1 +80003500: 0606 slli a2,a2,0x1 +80003502: 0606 slli a2,a2,0x1 +80003504: 0606 slli a2,a2,0x1 +80003506: 0606 slli a2,a2,0x1 +80003508: 0606 slli a2,a2,0x1 +8000350a: 0606 slli a2,a2,0x1 +8000350c: 0606 slli a2,a2,0x1 +8000350e: 0606 slli a2,a2,0x1 +80003510: 07070707 0x7070707 +80003514: 07070707 0x7070707 +80003518: 07070707 0x7070707 +8000351c: 07070707 0x7070707 +80003520: 07070707 0x7070707 +80003524: 07070707 0x7070707 +80003528: 07070707 0x7070707 +8000352c: 07070707 0x7070707 +80003530: 07070707 0x7070707 +80003534: 07070707 0x7070707 +80003538: 07070707 0x7070707 +8000353c: 07070707 0x7070707 +80003540: 07070707 0x7070707 +80003544: 07070707 0x7070707 +80003548: 07070707 0x7070707 +8000354c: 07070707 0x7070707 +80003550: 0808 addi a0,sp,16 +80003552: 0808 addi a0,sp,16 +80003554: 0808 addi a0,sp,16 +80003556: 0808 addi a0,sp,16 +80003558: 0808 addi a0,sp,16 +8000355a: 0808 addi a0,sp,16 +8000355c: 0808 addi a0,sp,16 +8000355e: 0808 addi a0,sp,16 +80003560: 0808 addi a0,sp,16 +80003562: 0808 addi a0,sp,16 +80003564: 0808 addi a0,sp,16 +80003566: 0808 addi a0,sp,16 +80003568: 0808 addi a0,sp,16 +8000356a: 0808 addi a0,sp,16 +8000356c: 0808 addi a0,sp,16 +8000356e: 0808 addi a0,sp,16 +80003570: 0808 addi a0,sp,16 +80003572: 0808 addi a0,sp,16 +80003574: 0808 addi a0,sp,16 +80003576: 0808 addi a0,sp,16 +80003578: 0808 addi a0,sp,16 +8000357a: 0808 addi a0,sp,16 +8000357c: 0808 addi a0,sp,16 +8000357e: 0808 addi a0,sp,16 +80003580: 0808 addi a0,sp,16 +80003582: 0808 addi a0,sp,16 +80003584: 0808 addi a0,sp,16 +80003586: 0808 addi a0,sp,16 +80003588: 0808 addi a0,sp,16 +8000358a: 0808 addi a0,sp,16 +8000358c: 0808 addi a0,sp,16 +8000358e: 0808 addi a0,sp,16 +80003590: 0808 addi a0,sp,16 +80003592: 0808 addi a0,sp,16 +80003594: 0808 addi a0,sp,16 +80003596: 0808 addi a0,sp,16 +80003598: 0808 addi a0,sp,16 +8000359a: 0808 addi a0,sp,16 +8000359c: 0808 addi a0,sp,16 +8000359e: 0808 addi a0,sp,16 +800035a0: 0808 addi a0,sp,16 +800035a2: 0808 addi a0,sp,16 +800035a4: 0808 addi a0,sp,16 +800035a6: 0808 addi a0,sp,16 +800035a8: 0808 addi a0,sp,16 +800035aa: 0808 addi a0,sp,16 +800035ac: 0808 addi a0,sp,16 +800035ae: 0808 addi a0,sp,16 +800035b0: 0808 addi a0,sp,16 +800035b2: 0808 addi a0,sp,16 +800035b4: 0808 addi a0,sp,16 +800035b6: 0808 addi a0,sp,16 +800035b8: 0808 addi a0,sp,16 +800035ba: 0808 addi a0,sp,16 +800035bc: 0808 addi a0,sp,16 +800035be: 0808 addi a0,sp,16 +800035c0: 0808 addi a0,sp,16 +800035c2: 0808 addi a0,sp,16 +800035c4: 0808 addi a0,sp,16 +800035c6: 0808 addi a0,sp,16 +800035c8: 0808 addi a0,sp,16 +800035ca: 0808 addi a0,sp,16 +800035cc: 0808 addi a0,sp,16 +800035ce: 0808 addi a0,sp,16 + +Disassembly of section .init_array: + +800045d0 <__init_array_start>: +800045d0: 0098 addi a4,sp,64 +800045d2: 8000 0x8000 + +Disassembly of section .data: + +800045d8 : +800045d8: 0000 unimp +800045da: 0000 unimp +800045dc: 48c4 lw s1,20(s1) +800045de: 8000 0x8000 +800045e0: 492c lw a1,80(a0) +800045e2: 8000 0x8000 +800045e4: 4994 lw a3,16(a1) +800045e6: 8000 0x8000 + ... +80004680: 0001 nop +80004682: 0000 unimp +80004684: 0000 unimp +80004686: 0000 unimp +80004688: 330e fld ft6,224(sp) +8000468a: abcd j 80004c7c <__BSS_END__+0x264> +8000468c: 1234 addi a3,sp,296 +8000468e: e66d bnez a2,80004778 +80004690: deec sw a1,124(a3) +80004692: 0005 c.nop 1 +80004694: 0000000b 0xb + ... + +Disassembly of section .sdata: + +80004a00 <__SDATA_BEGIN__>: +80004a00: 0000 unimp +80004a02: 3f00 fld fs0,56(a4) +80004a04: 0000 unimp +80004a06: bf00 fsd fs0,56(a4) + +80004a08 <_global_impure_ptr>: +80004a08: 45d8 lw a4,12(a1) +80004a0a: 8000 0x8000 + +80004a0c <_impure_ptr>: +80004a0c: 45d8 lw a4,12(a1) +80004a0e: 8000 0x8000 + +Disassembly of section .sbss: + +80004a10 : +80004a10: 0000 unimp + ... + +80004a14 <__fdlib_version>: +80004a14: 0000 unimp + ... + +Disassembly of section .comment: + +00000000 <.comment>: + 0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm + 4: 2820 fld fs0,80(s0) + 6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm + a: 3920 fld fs0,112(a0) + c: 322e fld ft4,232(sp) + e: 302e fld ft0,232(sp) + ... + +Disassembly of section .riscv.attributes: + +00000000 <.riscv.attributes>: + 0: 2541 jal 680 <_start-0x7ffff980> + 2: 0000 unimp + 4: 7200 flw fs0,32(a2) + 6: 7369 lui t1,0xffffa + 8: 01007663 bgeu zero,a6,14 <_start-0x7fffffec> + c: 0000001b 0x1b + 10: 1004 addi s1,sp,32 + 12: 7205 lui tp,0xfffe1 + 14: 3376 fld ft6,376(sp) + 16: 6932 flw fs2,12(sp) + 18: 7032 flw ft0,44(sp) + 1a: 5f30 lw a2,120(a4) + 1c: 326d jal fffff9c6 <__global_pointer$+0x7fffabee> + 1e: 3070 fld fa2,224(s0) + 20: 665f 7032 0030 0x307032665f + +Disassembly of section .debug_aranges: + +00000000 <.debug_aranges>: + 0: 001c 0x1c + 2: 0000 unimp + 4: 0002 c.slli64 zero + 6: 0000 unimp + 8: 0000 unimp + a: 0004 0x4 + c: 0000 unimp + e: 0000 unimp + 10: 1038 addi a4,sp,40 + 12: 8000 0x8000 + 14: 07bc addi a5,sp,968 + ... + 1e: 0000 unimp + 20: 001c 0x1c + 22: 0000 unimp + 24: 0002 c.slli64 zero + 26: 0599 addi a1,a1,6 + 28: 0000 unimp + 2a: 0004 0x4 + 2c: 0000 unimp + 2e: 0000 unimp + 30: 17f4 addi a3,sp,1004 + 32: 8000 0x8000 + 34: 06e0 addi s0,sp,844 + ... + 3e: 0000 unimp + 40: 001c 0x1c + 42: 0000 unimp + 44: 0002 c.slli64 zero + 46: 0cc9 addi s9,s9,18 + 48: 0000 unimp + 4a: 0004 0x4 + 4c: 0000 unimp + 4e: 0000 unimp + 50: 1ed4 addi a3,sp,884 + 52: 8000 0x8000 + 54: 00e4 addi s1,sp,76 + ... + 5e: 0000 unimp + 60: 001c 0x1c + 62: 0000 unimp + 64: 0002 c.slli64 zero + 66: 00000f4f fnmadd.s ft10,ft0,ft0,ft0,rne + 6a: 0004 0x4 + 6c: 0000 unimp + 6e: 0000 unimp + 70: 1fb8 addi a4,sp,1016 + 72: 8000 0x8000 + 74: 05c4 addi s1,sp,708 + ... + 7e: 0000 unimp + 80: 001c 0x1c + 82: 0000 unimp + 84: 0002 c.slli64 zero + 86: 000016ab 0x16ab + 8a: 0004 0x4 + 8c: 0000 unimp + 8e: 0000 unimp + 90: 257c fld fa5,200(a0) + 92: 8000 0x8000 + 94: 07c8 addi a0,sp,964 + ... + 9e: 0000 unimp + a0: 001c 0x1c + a2: 0000 unimp + a4: 0002 c.slli64 zero + a6: 1c44 addi s1,sp,564 + a8: 0000 unimp + aa: 0004 0x4 + ac: 0000 unimp + ae: 0000 unimp + b0: 2d44 fld fs1,152(a0) + b2: 8000 0x8000 + b4: 004c addi a1,sp,4 + ... + be: 0000 unimp + c0: 001c 0x1c + c2: 0000 unimp + c4: 0002 c.slli64 zero + c6: 1ecd addi t4,t4,-13 + c8: 0000 unimp + ca: 0004 0x4 + cc: 0000 unimp + ce: 0000 unimp + d0: 2d90 fld fa2,24(a1) + d2: 8000 0x8000 + d4: 00d8 addi a4,sp,68 + ... + de: 0000 unimp + e0: 001c 0x1c + e2: 0000 unimp + e4: 0002 c.slli64 zero + e6: 2179 jal 574 <_start-0x7ffffa8c> + e8: 0000 unimp + ea: 0004 0x4 + ec: 0000 unimp + ee: 0000 unimp + f0: 2e68 fld fa0,216(a2) + f2: 8000 0x8000 + f4: 0180 addi s0,sp,192 + ... + fe: 0000 unimp + 100: 001c 0x1c + 102: 0000 unimp + 104: 0002 c.slli64 zero + 106: 2455 jal 3aa <_start-0x7ffffc56> + 108: 0000 unimp + 10a: 0004 0x4 + 10c: 0000 unimp + 10e: 0000 unimp + 110: 2fe8 fld fa0,216(a5) + 112: 8000 0x8000 + 114: 004c addi a1,sp,4 + ... + 11e: 0000 unimp + 120: 0014 0x14 + 122: 0000 unimp + 124: 0002 c.slli64 zero + 126: 302c fld fa1,96(s0) + 128: 0000 unimp + 12a: 0004 0x4 + ... + +Disassembly of section .debug_info: + +00000000 <.debug_info>: + 0: 0595 addi a1,a1,5 + 2: 0000 unimp + 4: 0004 0x4 + 6: 0000 unimp + 8: 0000 unimp + a: 0104 addi s1,sp,128 + c: 01e5 addi gp,gp,25 + e: 0000 unimp + 10: 0e0c addi a1,sp,784 + 12: 0000 unimp + 14: 4c00 lw s0,24(s0) + 16: 0001 nop + 18: 3800 fld fs0,48(s0) + 1a: 0010 0x10 + 1c: bc80 fsd fs0,56(s1) + 1e: 00000007 0x7 + 22: 0000 unimp + 24: 0200 addi s0,sp,256 + 26: 0408 addi a0,sp,512 + 28: 000008a3 sb zero,17(zero) # 11 <_start-0x7fffffef> + 2c: 69050403 lb s0,1680(a0) + 30: 746e flw fs0,248(sp) + 32: 0200 addi s0,sp,256 + 34: 0601 addi a2,a2,0 + 36: 00000077 0x77 + 3a: 0802 c.slli64 a6 + 3c: c105 beqz a0,5c <_start-0x7fffffa4> + 3e: 0001 nop + 40: 0400 addi s0,sp,512 + 42: 0108 addi a0,sp,128 + 44: 0000 unimp + 46: 4a02 lw s4,0(sp) + 48: 1601 addi a2,a2,-32 + 4a: 00000053 fadd.s ft0,ft0,ft0,rne + 4e: 4105 li sp,1 + 50: 0000 unimp + 52: 0200 addi s0,sp,256 + 54: 0801 addi a6,a6,0 + 56: 0075 c.nop 29 + 58: 0000 unimp + 5a: 0402 c.slli64 s0 + 5c: 00012907 flw fs2,0(sp) + 60: 0200 addi s0,sp,256 + 62: 0708 addi a0,sp,896 + 64: 011f 0000 0202 0x2020000011f + 6a: 0000ad07 flw fs10,0(ra) + 6e: 0600 addi s0,sp,768 + 70: 004e c.slli zero,0x13 + 72: 0000 unimp + 74: 007f 0x7f + 76: 0000 unimp + 78: 00005a07 0x5a07 + 7c: ff00 fsw fs0,56(a4) + 7e: 0500 addi s0,sp,640 + 80: 0000006f j 80 <_start-0x7fffff80> + 84: 1008 addi a0,sp,32 + 86: 0001 nop + 88: 0400 addi s0,sp,512 + 8a: 163c addi a5,sp,808 + 8c: 007f 0x7f + 8e: 0000 unimp + 90: 5b09 li s6,-30 + 92: 0000 unimp + 94: 0300 addi s0,sp,384 + 96: 0f48 addi a0,sp,916 + 98: 0025 c.nop 9 + 9a: 0000 unimp + 9c: 080a slli a6,a6,0x2 + 9e: e6034f03 lbu t5,-416(t1) # ffff9e60 <__global_pointer$+0x7fff5088> + a2: 0000 unimp + a4: 0b00 addi s0,sp,400 + a6: 003c addi a5,sp,8 + a8: 0000 unimp + aa: 5a0e5703 lhu a4,1440(t3) + ae: 0000 unimp + b0: 0400 addi s0,sp,512 + b2: 0020 addi s0,sp,8 + b4: 0b00 addi s0,sp,400 + b6: 0042 c.slli zero,0x10 + b8: 0000 unimp + ba: 5a0e5803 lhu a6,1440(t3) + be: 0000 unimp + c0: 0400 addi s0,sp,512 + c2: 0c14 addi a3,sp,528 + c4: 0c04 addi s1,sp,528 + c6: 7865 lui a6,0xffff9 + c8: 0070 addi a2,sp,12 + ca: 5a0e5903 lhu s2,1440(t3) + ce: 0000 unimp + d0: 0400 addi s0,sp,512 + d2: 0b04010b 0xb04010b + d6: 09d1 addi s3,s3,20 + d8: 0000 unimp + da: 5a0e5a03 lhu s4,1440(t3) + de: 0000 unimp + e0: 0400 addi s0,sp,512 + e2: 0001 nop + e4: 0004 0x4 + e6: 9c0d 0x9c0d + e8: 0002 c.slli64 zero + ea: 0800 addi s0,sp,16 + ec: 0c074c03 lbu s8,192(a4) + f0: 0001 nop + f2: 0e00 addi s0,sp,784 + f4: 6c66 flw fs8,88(sp) + f6: 0074 addi a3,sp,12 + f8: 900a4e03 lbu t3,-1792(s4) + fc: 0000 unimp + fe: 0f00 addi s0,sp,912 + 100: 02d9 addi t0,t0,22 + 102: 0000 unimp + 104: 9c055c03 lhu s8,-1600(a0) + 108: 0000 unimp + 10a: 0000 unimp + 10c: 0510 addi a2,sp,640 + 10e: 0000 unimp + 110: 0100 addi s0,sp,128 + 112: 00900123 sb s1,2(zero) # 2 <_start-0x7ffffffe> + 116: 0000 unimp + 118: 1038 addi a4,sp,40 + 11a: 8000 0x8000 + 11c: 07bc addi a5,sp,968 + 11e: 0000 unimp + 120: 9c01 0x9c01 + 122: 058a slli a1,a1,0x2 + 124: 0000 unimp + 126: 6111 addi sp,sp,256 + 128: 0100 addi s0,sp,128 + 12a: 00901223 sh s1,4(zero) # 4 <_start-0x7ffffffc> + 12e: 0000 unimp + 130: 0000 unimp + 132: 0000 unimp + 134: 6211 lui tp,0x4 + 136: 0100 addi s0,sp,128 + 138: 00901c23 sh s1,24(zero) # 18 <_start-0x7fffffe8> + 13c: 0000 unimp + 13e: 0028 addi a0,sp,8 + 140: 0000 unimp + 142: df12 sw tp,188(sp) + 144: 0000 unimp + 146: 0100 addi s0,sp,128 + 148: 0325 addi t1,t1,9 + 14a: 002c addi a1,sp,8 + 14c: 0000 unimp + 14e: 0050 addi a2,sp,4 + 150: 0000 unimp + 152: 0002de13 srli t3,t0,0x0 + 156: 0100 addi s0,sp,128 + 158: 0325 addi t1,t1,9 + 15a: 002c addi a1,sp,8 + 15c: 0000 unimp + 15e: 1400 addi s0,sp,544 + 160: 5f41 li t5,-16 + 162: 26010063 beqz sp,3c2 <_start-0x7ffffc3e> + 166: 00058a03 lb s4,0(a1) + 16a: 1500 addi s0,sp,672 + 16c: 5f41 li t5,-16 + 16e: 26010073 0x26010073 + 172: 00058a03 lb s4,0(a1) + 176: a000 fsd fs0,0(s0) + 178: 0000 unimp + 17a: 1500 addi s0,sp,672 + 17c: 5f41 li t5,-16 + 17e: 0065 c.nop 25 + 180: 2601 jal 480 <_start-0x7ffffb80> + 182: 00058a03 lb s4,0(a1) + 186: 4200 lw s0,0(a2) + 188: 0001 nop + 18a: 1200 addi s0,sp,288 + 18c: 00000103 lb sp,0(zero) # 0 <_start-0x80000000> + 190: 2601 jal 490 <_start-0x7ffffb70> + 192: 00059103 lh sp,0(a1) + 196: 1b00 addi s0,sp,432 + 198: 0002 c.slli64 zero + 19a: 1200 addi s0,sp,288 + 19c: 00c0 addi s0,sp,68 + 19e: 0000 unimp + 1a0: 2601 jal 4a0 <_start-0x7ffffb60> + 1a2: 00059103 lh sp,0(a1) + 1a6: 8300 0x8300 + 1a8: 14000003 lb zero,320(zero) # 140 <_start-0x7ffffec0> + 1ac: 5f42 lw t5,48(sp) + 1ae: 27010063 beq sp,a6,40e <_start-0x7ffffbf2> + 1b2: 00058a03 lb s4,0(a1) + 1b6: 1500 addi s0,sp,672 + 1b8: 5f42 lw t5,48(sp) + 1ba: 27010073 0x27010073 + 1be: 00058a03 lb s4,0(a1) + 1c2: fe00 fsw fs0,56(a2) + 1c4: 0004 0x4 + 1c6: 1500 addi s0,sp,672 + 1c8: 5f42 lw t5,48(sp) + 1ca: 0065 c.nop 25 + 1cc: 2701 jal 8cc <_start-0x7ffff734> + 1ce: 00058a03 lb s4,0(a1) + 1d2: 6900 flw fs0,16(a0) + 1d4: 0005 c.nop 1 + 1d6: 1200 addi s0,sp,288 + 1d8: 011a slli sp,sp,0x6 + 1da: 0000 unimp + 1dc: 2701 jal 8dc <_start-0x7ffff724> + 1de: 00059103 lh sp,0(a1) + 1e2: f500 fsw fs0,40(a0) + 1e4: 0005 c.nop 1 + 1e6: 1200 addi s0,sp,288 + 1e8: 0062 c.slli zero,0x18 + 1ea: 0000 unimp + 1ec: 2701 jal 8ec <_start-0x7ffff714> + 1ee: 00059103 lh sp,0(a1) + 1f2: 0500 addi s0,sp,640 + 1f4: 14000007 0x14000007 + 1f8: 5f52 lw t5,52(sp) + 1fa: 28010063 beqz sp,47a <_start-0x7ffffb86> + 1fe: 00058a03 lb s4,0(a1) + 202: 1500 addi s0,sp,672 + 204: 5f52 lw t5,52(sp) + 206: 28010073 0x28010073 + 20a: 00058a03 lb s4,0(a1) + 20e: 7b00 flw fs0,48(a4) + 210: 15000007 0x15000007 + 214: 5f52 lw t5,52(sp) + 216: 0065 c.nop 25 + 218: 2801 jal 228 <_start-0x7ffffdd8> + 21a: 00058a03 lb s4,0(a1) + 21e: 1d00 addi s0,sp,688 + 220: 0008 0x8 + 222: 1200 addi s0,sp,288 + 224: 0070 addi a2,sp,12 + 226: 0000 unimp + 228: 2801 jal 238 <_start-0x7ffffdc8> + 22a: 00059103 lh sp,0(a1) + 22e: 7700 flw fs0,40(a4) + 230: 0009 c.nop 2 + 232: 1200 addi s0,sp,288 + 234: 000002e3 beqz zero,a38 <_start-0x7ffff5c8> + 238: 2801 jal 248 <_start-0x7ffffdb8> + 23a: 00059103 lh sp,0(a1) + 23e: fd00 fsw fs0,56(a0) + 240: 1400000b 0x1400000b + 244: 0072 c.slli zero,0x1c + 246: 2901 jal 656 <_start-0x7ffff9aa> + 248: 900a c.add zero,sp + 24a: 0000 unimp + 24c: 1600 addi s0,sp,800 + 24e: 0000 unimp + 250: 0000 unimp + 252: 00000263 beqz zero,256 <_start-0x7ffffdaa> + 256: 00008317 auipc t1,0x8 + 25a: 0100 addi s0,sp,128 + 25c: 032c addi a1,sp,392 + 25e: 00e6 slli ra,ra,0x19 + 260: 0000 unimp + 262: 1600 addi s0,sp,800 + 264: 0028 addi a0,sp,8 + 266: 0000 unimp + 268: 0279 addi tp,tp,30 + 26a: 0000 unimp + 26c: 00008317 auipc t1,0x8 + 270: 0100 addi s0,sp,128 + 272: 032d addi t1,t1,11 + 274: 00e6 slli ra,ra,0x19 + 276: 0000 unimp + 278: 1600 addi s0,sp,800 + 27a: 0068 addi a0,sp,12 + 27c: 0000 unimp + 27e: 035f 0000 ca18 0xca180000035f + 284: 0002 c.slli64 zero + 286: 0100 addi s0,sp,128 + 288: 032e slli t1,t1,0xb + 28a: 10f8 addi a4,sp,108 + 28c: 8000 0x8000 + 28e: cf18 sw a4,24(a4) + 290: 0002 c.slli64 zero + 292: 0100 addi s0,sp,128 + 294: 032e slli t1,t1,0xb + 296: 1214 addi a3,sp,288 + 298: 8000 0x8000 + 29a: d418 sw a4,40(s0) + 29c: 0002 c.slli64 zero + 29e: 0100 addi s0,sp,128 + 2a0: 032e slli t1,t1,0xb + 2a2: 1140 addi s0,sp,164 + 2a4: 8000 0x8000 + 2a6: 6718 flw fa4,8(a4) + 2a8: 0000 unimp + 2aa: 0100 addi s0,sp,128 + 2ac: 032e slli t1,t1,0xb + 2ae: 12ec addi a1,sp,364 + 2b0: 8000 0x8000 + 2b2: 8512 mv a0,tp + 2b4: 0002 c.slli64 zero + 2b6: 0100 addi s0,sp,128 + 2b8: 032e slli t1,t1,0xb + 2ba: 002c addi a1,sp,8 + 2bc: 0000 unimp + 2be: 0df6 slli s11,s11,0x1d + 2c0: 0000 unimp + 2c2: b816 fsd ft5,48(sp) + 2c4: 0000 unimp + 2c6: dc00 sw s0,56(s0) + 2c8: 0002 c.slli64 zero + 2ca: 1500 addi s0,sp,672 + 2cc: 5f5f 0078 2e01 0x2e0100785f5f + 2d2: 00059103 lh sp,0(a1) + 2d6: e300 fsw fs0,0(a4) + 2d8: 000e c.slli zero,0x3 + 2da: 0000 unimp + 2dc: e816 fsw ft5,16(sp) + 2de: 0000 unimp + 2e0: f600 fsw fs0,40(a2) + 2e2: 0002 c.slli64 zero + 2e4: 1500 addi s0,sp,672 + 2e6: 5f5f 0078 2e01 0x2e0100785f5f + 2ec: 00059103 lh sp,0(a1) + 2f0: f600 fsw fs0,40(a2) + 2f2: 000e c.slli zero,0x3 + 2f4: 0000 unimp + 2f6: d016 sw t0,32(sp) + 2f8: 0000 unimp + 2fa: 1000 addi s0,sp,32 + 2fc: 15000003 lb zero,336(zero) # 150 <_start-0x7ffffeb0> + 300: 5f5f 0078 2e01 0x2e0100785f5f + 306: 00059103 lh sp,0(a1) + 30a: 0900 addi s0,sp,144 + 30c: 0000000f fence unknown,unknown + 310: 4819 li a6,6 + 312: 0012 c.slli zero,0x4 + 314: 1080 addi s0,sp,96 + 316: 0000 unimp + 318: 2e00 fld fs0,24(a2) + 31a: 15000003 lb zero,336(zero) # 150 <_start-0x7ffffeb0> + 31e: 5f5f 0078 2e01 0x2e0100785f5f + 324: 00059103 lh sp,0(a1) + 328: 1c00 addi s0,sp,560 + 32a: 0000000f fence unknown,unknown + 32e: 0016 c.slli zero,0x5 + 330: 0001 nop + 332: 4800 lw s0,16(s0) + 334: 15000003 lb zero,336(zero) # 150 <_start-0x7ffffeb0> + 338: 5f5f 0078 2e01 0x2e0100785f5f + 33e: 00059103 lh sp,0(a1) + 342: 2f00 fld fs0,24(a4) + 344: 0000000f fence unknown,unknown + 348: 181a slli a6,a6,0x26 + 34a: 0001 nop + 34c: 1500 addi s0,sp,672 + 34e: 5f5f 0078 2e01 0x2e0100785f5f + 354: 00059103 lh sp,0(a1) + 358: 4200 lw s0,0(a2) + 35a: 0000000f fence unknown,unknown + 35e: 1600 addi s0,sp,800 + 360: 0130 addi a2,sp,136 + 362: 0000 unimp + 364: 000004af 0x4af + 368: da18 sw a4,48(a2) + 36a: 0000 unimp + 36c: 0100 addi s0,sp,128 + 36e: 032e slli t1,t1,0xb + 370: 13a0 addi s0,sp,488 + 372: 8000 0x8000 + 374: 0018 0x18 + 376: 0000 unimp + 378: 0100 addi s0,sp,128 + 37a: 032e slli t1,t1,0xb + 37c: 14bc addi a5,sp,616 + 37e: 8000 0x8000 + 380: e418 fsw fa4,8(s0) + 382: 0000 unimp + 384: 0100 addi s0,sp,128 + 386: 032e slli t1,t1,0xb + 388: 13e8 addi a0,sp,492 + 38a: 8000 0x8000 + 38c: fe18 fsw fa4,56(a2) + 38e: 0000 unimp + 390: 0100 addi s0,sp,128 + 392: 032e slli t1,t1,0xb + 394: 160c addi a1,sp,800 + 396: 8000 0x8000 + 398: c118 sw a4,0(a0) + 39a: 0002 c.slli64 zero + 39c: 0100 addi s0,sp,128 + 39e: 032e slli t1,t1,0xb + 3a0: 12ec addi a1,sp,364 + 3a2: 8000 0x8000 + 3a4: 8512 mv a0,tp + 3a6: 0002 c.slli64 zero + 3a8: 0100 addi s0,sp,128 + 3aa: 032e slli t1,t1,0xb + 3ac: 002c addi a1,sp,8 + 3ae: 0000 unimp + 3b0: 0f75 addi t5,t5,29 + 3b2: 0000 unimp + 3b4: 8816 mv a6,t0 + 3b6: 0001 nop + 3b8: ce00 sw s0,24(a2) + 3ba: 15000003 lb zero,336(zero) # 150 <_start-0x7ffffeb0> + 3be: 5f5f 0078 2e01 0x2e0100785f5f + 3c4: 00059103 lh sp,0(a1) + 3c8: 7700 flw fs0,40(a4) + 3ca: 0010 0x10 + 3cc: 0000 unimp + 3ce: a016 fsd ft5,0(sp) + 3d0: 0001 nop + 3d2: e800 fsw fs0,16(s0) + 3d4: 15000003 lb zero,336(zero) # 150 <_start-0x7ffffeb0> + 3d8: 5f5f 0078 2e01 0x2e0100785f5f + 3de: 00059103 lh sp,0(a1) + 3e2: 8a00 0x8a00 + 3e4: 0010 0x10 + 3e6: 0000 unimp + 3e8: 7819 lui a6,0xfffe6 + 3ea: 0014 0x14 + 3ec: 1080 addi s0,sp,96 + 3ee: 0000 unimp + 3f0: 0600 addi s0,sp,768 + 3f2: 0004 0x4 + 3f4: 1500 addi s0,sp,672 + 3f6: 5f5f 0078 2e01 0x2e0100785f5f + 3fc: 00059103 lh sp,0(a1) + 400: 9d00 0x9d00 + 402: 0010 0x10 + 404: 0000 unimp + 406: f019 bnez s0,30c <_start-0x7ffffcf4> + 408: 0014 0x14 + 40a: 1080 addi s0,sp,96 + 40c: 0000 unimp + 40e: 2400 fld fs0,8(s0) + 410: 0004 0x4 + 412: 1500 addi s0,sp,672 + 414: 5f5f 0078 2e01 0x2e0100785f5f + 41a: 00059103 lh sp,0(a1) + 41e: b000 fsd fs0,32(s0) + 420: 0010 0x10 + 422: 0000 unimp + 424: d816 sw t0,48(sp) + 426: 0001 nop + 428: 3e00 fld fs0,56(a2) + 42a: 0004 0x4 + 42c: 1500 addi s0,sp,672 + 42e: 5f5f 0078 2e01 0x2e0100785f5f + 434: 00059103 lh sp,0(a1) + 438: c300 sw s0,0(a4) + 43a: 0010 0x10 + 43c: 0000 unimp + 43e: 9819 andi s0,s0,-26 + 440: 0015 c.nop 5 + 442: 1080 addi s0,sp,96 + 444: 0000 unimp + 446: 5c00 lw s0,56(s0) + 448: 0004 0x4 + 44a: 1500 addi s0,sp,672 + 44c: 5f5f 0078 2e01 0x2e0100785f5f + 452: 00059103 lh sp,0(a1) + 456: e100 fsw fs0,0(a0) + 458: 0010 0x10 + 45a: 0000 unimp + 45c: e019 bnez s0,462 <_start-0x7ffffb9e> + 45e: 0015 c.nop 5 + 460: 1080 addi s0,sp,96 + 462: 0000 unimp + 464: 7a00 flw fs0,48(a2) + 466: 0004 0x4 + 468: 1500 addi s0,sp,672 + 46a: 5f5f 0078 2e01 0x2e0100785f5f + 470: 00059103 lh sp,0(a1) + 474: f400 fsw fs0,40(s0) + 476: 0010 0x10 + 478: 0000 unimp + 47a: f819 bnez s0,390 <_start-0x7ffffc70> + 47c: 0015 c.nop 5 + 47e: 1080 addi s0,sp,96 + 480: 0000 unimp + 482: 9800 0x9800 + 484: 0004 0x4 + 486: 1500 addi s0,sp,672 + 488: 5f5f 0078 2e01 0x2e0100785f5f + 48e: 00059103 lh sp,0(a1) + 492: 2200 fld fs0,0(a2) + 494: 0011 c.nop 4 + 496: 0000 unimp + 498: b81a fsd ft6,48(sp) + 49a: 0001 nop + 49c: 1200 addi s0,sp,288 + 49e: 0136 slli sp,sp,0xd + 4a0: 0000 unimp + 4a2: 2e01 jal 7b2 <_start-0x7ffff84e> + 4a4: 00002c03 lw s8,0(zero) # 0 <_start-0x80000000> + 4a8: 3500 fld fs0,40(a0) + 4aa: 0011 c.nop 4 + 4ac: 0000 unimp + 4ae: 1600 addi s0,sp,800 + 4b0: 01f0 addi a2,sp,204 + 4b2: 0000 unimp + 4b4: 00000577 0x577 + 4b8: 0002a817 auipc a6,0x2a + 4bc: 0100 addi s0,sp,128 + 4be: 002c032f 0x2c032f + 4c2: 0000 unimp + 4c4: 0005381b 0x5381b + 4c8: 1700 addi s0,sp,928 + 4ca: 00c5 addi ra,ra,17 + 4cc: 0000 unimp + 4ce: 2f01 jal bde <_start-0x7ffff422> + 4d0: 00058a03 lb s4,0(a1) + 4d4: 1700 addi s0,sp,928 + 4d6: 0098 addi a4,sp,64 + 4d8: 0000 unimp + 4da: 2f01 jal bea <_start-0x7ffff416> + 4dc: 00058a03 lb s4,0(a1) + 4e0: 1700 addi s0,sp,928 + 4e2: 00e9 addi ra,ra,26 + 4e4: 0000 unimp + 4e6: 2f01 jal bf6 <_start-0x7ffff40a> + 4e8: 00058a03 lb s4,0(a1) + 4ec: 1700 addi s0,sp,928 + 4ee: 000001ab 0x1ab + 4f2: 2f01 jal c02 <_start-0x7ffff3fe> + 4f4: 00059103 lh sp,0(a1) + 4f8: 1700 addi s0,sp,928 + 4fa: 000001cf fnmadd.s ft3,ft0,ft0,ft0,rne + 4fe: 2f01 jal c0e <_start-0x7ffff3f2> + 500: 00059103 lh sp,0(a1) + 504: 1b00 addi s0,sp,432 + 506: 00000517 auipc a0,0x0 + 50a: 5f14 lw a3,56(a4) + 50c: 785f 0100 032f 0x32f0100785f + 512: 0591 addi a1,a1,4 + 514: 0000 unimp + 516: 1b00 addi s0,sp,432 + 518: 0529 addi a0,a0,10 + 51a: 0000 unimp + 51c: 5f14 lw a3,56(a4) + 51e: 785f 0100 032f 0x32f0100785f + 524: 0591 addi a1,a1,4 + 526: 0000 unimp + 528: 1c00 addi s0,sp,560 + 52a: 5f14 lw a3,56(a4) + 52c: 785f 0100 032f 0x32f0100785f + 532: 0591 addi a1,a1,4 + 534: 0000 unimp + 536: 0000 unimp + 538: 0019 c.nop 6 + 53a: 14800013 li zero,328 + 53e: 0000 unimp + 540: 5600 lw s0,40(a2) + 542: 0005 c.nop 1 + 544: 1500 addi s0,sp,672 + 546: 5f5f 0078 2f01 0x2f0100785f5f + 54c: 00059103 lh sp,0(a1) + 550: 8a00 0x8a00 + 552: 0011 c.nop 4 + 554: 0000 unimp + 556: 0005681b 0x5681b + 55a: 1400 addi s0,sp,544 + 55c: 5f5f 0078 2f01 0x2f0100785f5f + 562: 00059103 lh sp,0(a1) + 566: 0000 unimp + 568: 141c addi a5,sp,544 + 56a: 5f5f 0078 2f01 0x2f0100785f5f + 570: 00059103 lh sp,0(a1) + 574: 0000 unimp + 576: 1a00 addi s0,sp,304 + 578: 0210 addi a2,sp,256 + 57a: 0000 unimp + 57c: 00004817 auipc a6,0x4 + 580: 0100 addi s0,sp,128 + 582: 00e6032f 0xe6032f + 586: 0000 unimp + 588: 0000 unimp + 58a: 0402 c.slli64 s0 + 58c: c605 beqz a2,5b4 <_start-0x7ffffa4c> + 58e: 0001 nop + 590: 0200 addi s0,sp,256 + 592: 0704 addi s1,sp,896 + 594: 0124 addi s1,sp,136 + 596: 0000 unimp + 598: 2c00 fld fs0,24(s0) + 59a: 04000007 0x4000007 + 59e: 9600 0x9600 + 5a0: 0001 nop + 5a2: 0400 addi s0,sp,512 + 5a4: e501 bnez a0,5ac <_start-0x7ffffa54> + 5a6: 0001 nop + 5a8: 0c00 addi s0,sp,528 + 5aa: 0464 addi s1,sp,524 + 5ac: 0000 unimp + 5ae: 014c addi a1,sp,132 + 5b0: 0000 unimp + 5b2: 17f4 addi a3,sp,1004 + 5b4: 8000 0x8000 + 5b6: 06e0 addi s0,sp,844 + 5b8: 0000 unimp + 5ba: 1045 c.nop -15 + 5bc: 0000 unimp + 5be: 0802 c.slli64 a6 + 5c0: a304 fsd fs1,0(a4) + 5c2: 0008 0x8 + 5c4: 0300 addi s0,sp,384 + 5c6: 0504 addi s1,sp,640 + 5c8: 6e69 lui t3,0x1a + 5ca: 0074 addi a3,sp,12 + 5cc: 0102 c.slli64 sp + 5ce: 7706 flw fa4,96(sp) + 5d0: 0000 unimp + 5d2: 0200 addi s0,sp,256 + 5d4: 0508 addi a0,sp,640 + 5d6: 01c1 addi gp,gp,16 + 5d8: 0000 unimp + 5da: 0804 addi s1,sp,16 + 5dc: 0001 nop + 5de: 0200 addi s0,sp,256 + 5e0: 014a slli sp,sp,0x12 + 5e2: 5316 lw t1,100(sp) + 5e4: 0000 unimp + 5e6: 0500 addi s0,sp,640 + 5e8: 0041 c.nop 16 + 5ea: 0000 unimp + 5ec: 0102 c.slli64 sp + 5ee: 7508 flw fa0,40(a0) + 5f0: 0000 unimp + 5f2: 0200 addi s0,sp,256 + 5f4: 0704 addi s1,sp,896 + 5f6: 0129 addi sp,sp,10 + 5f8: 0000 unimp + 5fa: 0802 c.slli64 a6 + 5fc: 00011f07 0x11f07 + 600: 0400 addi s0,sp,512 + 602: 034e slli t1,t1,0x13 + 604: 0000 unimp + 606: 4e02 lw t3,0(sp) + 608: 1601 addi a2,a2,-32 + 60a: 0075 c.nop 29 + 60c: 0000 unimp + 60e: 0202 c.slli64 tp + 610: 0000ad07 flw fs10,0(ra) + 614: 0600 addi s0,sp,768 + 616: 004e c.slli zero,0x13 + 618: 0000 unimp + 61a: 008c addi a1,sp,64 + 61c: 0000 unimp + 61e: 00005a07 0x5a07 + 622: ff00 fsw fs0,56(a4) + 624: 0500 addi s0,sp,640 + 626: 007c addi a5,sp,12 + 628: 0000 unimp + 62a: 1008 addi a0,sp,32 + 62c: 0001 nop + 62e: 0400 addi s0,sp,512 + 630: 163c addi a5,sp,808 + 632: 008c addi a1,sp,64 + 634: 0000 unimp + 636: 5b09 li s6,-30 + 638: 0000 unimp + 63a: 0300 addi s0,sp,384 + 63c: 0f48 addi a0,sp,916 + 63e: 0025 c.nop 9 + 640: 0000 unimp + 642: 080a slli a6,a6,0x2 + 644: f3034f03 lbu t5,-208(t1) # 819c <_start-0x7fff7e64> + 648: 0000 unimp + 64a: 0b00 addi s0,sp,400 + 64c: 003c addi a5,sp,8 + 64e: 0000 unimp + 650: 5a0e5703 lhu a4,1440(t3) # 1a5a0 <_start-0x7ffe5a60> + 654: 0000 unimp + 656: 0400 addi s0,sp,512 + 658: 0020 addi s0,sp,8 + 65a: 0b00 addi s0,sp,400 + 65c: 0042 c.slli zero,0x10 + 65e: 0000 unimp + 660: 5a0e5803 lhu a6,1440(t3) + 664: 0000 unimp + 666: 0400 addi s0,sp,512 + 668: 0c14 addi a3,sp,528 + 66a: 0c04 addi s1,sp,528 + 66c: 7865 lui a6,0xffff9 + 66e: 0070 addi a2,sp,12 + 670: 5a0e5903 lhu s2,1440(t3) + 674: 0000 unimp + 676: 0400 addi s0,sp,512 + 678: 0b04010b 0xb04010b + 67c: 09d1 addi s3,s3,20 + 67e: 0000 unimp + 680: 5a0e5a03 lhu s4,1440(t3) + 684: 0000 unimp + 686: 0400 addi s0,sp,512 + 688: 0001 nop + 68a: 0004 0x4 + 68c: 9c0d 0x9c0d + 68e: 0002 c.slli64 zero + 690: 0800 addi s0,sp,16 + 692: 19074c03 lbu s8,400(a4) + 696: 0001 nop + 698: 0e00 addi s0,sp,784 + 69a: 6c66 flw fs8,88(sp) + 69c: 0074 addi a3,sp,12 + 69e: 9d0a4e03 lbu t3,-1584(s4) + 6a2: 0000 unimp + 6a4: 0f00 addi s0,sp,912 + 6a6: 02d9 addi t0,t0,22 + 6a8: 0000 unimp + 6aa: a9055c03 lhu s8,-1392(a0) # ffffff96 <__global_pointer$+0x7fffb1be> + 6ae: 0000 unimp + 6b0: 0000 unimp + 6b2: 4510 lw a2,8(a0) + 6b4: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 6b8: 009d0123 sb s1,2(s10) + 6bc: 0000 unimp + 6be: 17f4 addi a3,sp,1004 + 6c0: 8000 0x8000 + 6c2: 06e0 addi s0,sp,844 + 6c4: 0000 unimp + 6c6: 9c01 0x9c01 + 6c8: 0721 addi a4,a4,8 + 6ca: 0000 unimp + 6cc: 6111 addi sp,sp,256 + 6ce: 0100 addi s0,sp,128 + 6d0: 009d1223 sh s1,4(s10) + 6d4: 0000 unimp + 6d6: 119d addi gp,gp,-25 + 6d8: 0000 unimp + 6da: 6211 lui tp,0x4 + 6dc: 0100 addi s0,sp,128 + 6de: 009d1c23 sh s1,24(s10) + 6e2: 0000 unimp + 6e4: 1225 addi tp,tp,-23 + 6e6: 0000 unimp + 6e8: df12 sw tp,188(sp) + 6ea: 0000 unimp + 6ec: 0100 addi s0,sp,128 + 6ee: 0325 addi t1,t1,9 + 6f0: 002c addi a1,sp,8 + 6f2: 0000 unimp + 6f4: 12ad addi t0,t0,-21 + 6f6: 0000 unimp + 6f8: 0002de13 srli t3,t0,0x0 + 6fc: 0100 addi s0,sp,128 + 6fe: 0325 addi t1,t1,9 + 700: 002c addi a1,sp,8 + 702: 0000 unimp + 704: 1400 addi s0,sp,544 + 706: 5f41 li t5,-16 + 708: 26010063 beqz sp,968 <_start-0x7ffff698> + 70c: 00072103 lw sp,0(a4) + 710: cd00 sw s0,24(a0) + 712: 0012 c.slli zero,0x4 + 714: 1400 addi s0,sp,544 + 716: 5f41 li t5,-16 + 718: 26010073 0x26010073 + 71c: 00072103 lw sp,0(a4) + 720: 0200 addi s0,sp,256 + 722: 14000013 li zero,320 + 726: 5f41 li t5,-16 + 728: 0065 c.nop 25 + 72a: 2601 jal a2a <_start-0x7ffff5d6> + 72c: 00072103 lw sp,0(a4) + 730: 2a00 fld fs0,16(a2) + 732: 12000013 li zero,288 + 736: 00000103 lb sp,0(zero) # 0 <_start-0x80000000> + 73a: 2601 jal a3a <_start-0x7ffff5c6> + 73c: 00072803 lw a6,0(a4) + 740: d000 sw s0,32(s0) + 742: 12000013 li zero,288 + 746: 00c0 addi s0,sp,68 + 748: 0000 unimp + 74a: 2601 jal a4a <_start-0x7ffff5b6> + 74c: 00072803 lw a6,0(a4) + 750: 6800 flw fs0,16(s0) + 752: 0014 0x14 + 754: 1400 addi s0,sp,544 + 756: 5f42 lw t5,48(sp) + 758: 27010063 beq sp,a6,9b8 <_start-0x7ffff648> + 75c: 00072103 lw sp,0(a4) + 760: 0f00 addi s0,sp,912 + 762: 0015 c.nop 5 + 764: 1400 addi s0,sp,544 + 766: 5f42 lw t5,48(sp) + 768: 27010073 0x27010073 + 76c: 00072103 lw sp,0(a4) + 770: 4f00 lw s0,24(a4) + 772: 0015 c.nop 5 + 774: 1400 addi s0,sp,544 + 776: 5f42 lw t5,48(sp) + 778: 0065 c.nop 25 + 77a: 2701 jal e7a <_start-0x7ffff186> + 77c: 00072103 lw sp,0(a4) + 780: 8700 0x8700 + 782: 0015 c.nop 5 + 784: 1200 addi s0,sp,288 + 786: 011a slli sp,sp,0x6 + 788: 0000 unimp + 78a: 2701 jal e8a <_start-0x7ffff176> + 78c: 00072803 lw a6,0(a4) + 790: 0a00 addi s0,sp,272 + 792: 0016 c.slli zero,0x5 + 794: 1200 addi s0,sp,288 + 796: 0062 c.slli zero,0x18 + 798: 0000 unimp + 79a: 2701 jal e9a <_start-0x7ffff166> + 79c: 00072803 lw a6,0(a4) + 7a0: 9700 0x9700 + 7a2: 0016 c.slli zero,0x5 + 7a4: 1400 addi s0,sp,544 + 7a6: 5f52 lw t5,52(sp) + 7a8: 28010063 beqz sp,a28 <_start-0x7ffff5d8> + 7ac: 00072103 lw sp,0(a4) + 7b0: 3100 fld fs0,32(a0) + 7b2: 14000017 auipc zero,0x14000 + 7b6: 5f52 lw t5,52(sp) + 7b8: 28010073 0x28010073 + 7bc: 00072103 lw sp,0(a4) + 7c0: 7e00 flw fs0,56(a2) + 7c2: 14000017 auipc zero,0x14000 + 7c6: 5f52 lw t5,52(sp) + 7c8: 0065 c.nop 25 + 7ca: 2801 jal 7da <_start-0x7ffff826> + 7cc: 00072103 lw sp,0(a4) + 7d0: 0300 addi s0,sp,384 + 7d2: 0018 0x18 + 7d4: 1200 addi s0,sp,288 + 7d6: 0070 addi a2,sp,12 + 7d8: 0000 unimp + 7da: 2801 jal 7ea <_start-0x7ffff816> + 7dc: 00072803 lw a6,0(a4) + 7e0: 9e00 0x9e00 + 7e2: 0018 0x18 + 7e4: 1200 addi s0,sp,288 + 7e6: 000002e3 beqz zero,fea <_start-0x7ffff016> + 7ea: 2801 jal 7fa <_start-0x7ffff806> + 7ec: 00072803 lw a6,0(a4) + 7f0: ce00 sw s0,24(a2) + 7f2: 0019 c.nop 6 + 7f4: 1500 addi s0,sp,672 + 7f6: 0072 c.slli zero,0x1c + 7f8: 2901 jal c08 <_start-0x7ffff3f8> + 7fa: 9d0a add s10,s10,sp + 7fc: 0000 unimp + 7fe: 1600 addi s0,sp,800 + 800: 0228 addi a0,sp,264 + 802: 0000 unimp + 804: 027c addi a5,sp,268 + 806: 0000 unimp + 808: 00008317 auipc t1,0x8 + 80c: 0100 addi s0,sp,128 + 80e: 032c addi a1,sp,392 + 810: 000000f3 0xf3 + 814: 1600 addi s0,sp,800 + 816: 0260 addi s0,sp,268 + 818: 0000 unimp + 81a: 0296 slli t0,t0,0x5 + 81c: 0000 unimp + 81e: 7412 flw fs0,36(sp) + 820: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 824: 032c addi a1,sp,392 + 826: 0721 addi a4,a4,8 + 828: 0000 unimp + 82a: 1a80 addi s0,sp,368 + 82c: 0000 unimp + 82e: 1600 addi s0,sp,800 + 830: 0278 addi a4,sp,268 + 832: 0000 unimp + 834: 02ac addi a1,sp,328 + 836: 0000 unimp + 838: 00008317 auipc t1,0x8 + 83c: 0100 addi s0,sp,128 + 83e: 032d addi t1,t1,11 + 840: 000000f3 0xf3 + 844: 1600 addi s0,sp,800 + 846: 0298 addi a4,sp,320 + 848: 0000 unimp + 84a: 02c6 slli t0,t0,0x11 + 84c: 0000 unimp + 84e: 7412 flw fs0,36(sp) + 850: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 854: 032d addi t1,t1,11 + 856: 0721 addi a4,a4,8 + 858: 0000 unimp + 85a: 1ab4 addi a3,sp,376 + 85c: 0000 unimp + 85e: 1600 addi s0,sp,800 + 860: 02b0 addi a2,sp,328 + 862: 0000 unimp + 864: 05ce slli a1,a1,0x13 + 866: 0000 unimp + 868: f812 fsw ft4,48(sp) + 86a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 86e: 032e slli t1,t1,0xb + 870: 0728 addi a0,sp,904 + 872: 0000 unimp + 874: 00001af3 csrrw s5,ustatus,zero + 878: df12 sw tp,188(sp) + 87a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 87e: 032e slli t1,t1,0xb + 880: 0728 addi a0,sp,904 + 882: 0000 unimp + 884: 1b20 addi s0,sp,440 + 886: 0000 unimp + 888: c612 sw tp,12(sp) + 88a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 88e: 032e slli t1,t1,0xb + 890: 0728 addi a0,sp,904 + 892: 0000 unimp + 894: 1b4e slli s6,s6,0x33 + 896: 0000 unimp + 898: a812 fsd ft4,16(sp) + 89a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 89e: 032e slli t1,t1,0xb + 8a0: 0728 addi a0,sp,904 + 8a2: 0000 unimp + 8a4: 1b6d addi s6,s6,-5 + 8a6: 0000 unimp + 8a8: 8f12 mv t5,tp + 8aa: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 8ae: 032e slli t1,t1,0xb + 8b0: 0728 addi a0,sp,904 + 8b2: 0000 unimp + 8b4: 1bc2 slli s7,s7,0x30 + 8b6: 0000 unimp + 8b8: 5612 lw a2,36(sp) + 8ba: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 8be: 032e slli t1,t1,0xb + 8c0: 0728 addi a0,sp,904 + 8c2: 0000 unimp + 8c4: 1c2e slli s8,s8,0x2b + 8c6: 0000 unimp + 8c8: 2212 fld ft4,256(sp) + 8ca: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 8ce: 032e slli t1,t1,0xb + 8d0: 0728 addi a0,sp,904 + 8d2: 0000 unimp + 8d4: 00001c57 0x1c57 + 8d8: d016 sw t0,32(sp) + 8da: 0002 c.slli64 zero + 8dc: b900 fsd fs0,48(a0) + 8de: 12000003 lb zero,288(zero) # 120 <_start-0x7ffffee0> + 8e2: 04bd addi s1,s1,15 + 8e4: 0000 unimp + 8e6: 2e01 jal bf6 <_start-0x7ffff40a> + 8e8: 00072803 lw a6,0(a4) + 8ec: ae00 fsd fs0,24(a2) + 8ee: 001c 0x1c + 8f0: 1200 addi s0,sp,288 + 8f2: 049c addi a5,sp,576 + 8f4: 0000 unimp + 8f6: 2e01 jal c06 <_start-0x7ffff3fa> + 8f8: 00072803 lw a6,0(a4) + 8fc: c100 sw s0,0(a0) + 8fe: 001c 0x1c + 900: 1200 addi s0,sp,288 + 902: 0340 addi s0,sp,388 + 904: 0000 unimp + 906: 2e01 jal c16 <_start-0x7ffff3ea> + 908: 00072803 lw a6,0(a4) + 90c: f600 fsw fs0,40(a2) + 90e: 001c 0x1c + 910: 1200 addi s0,sp,288 + 912: 0000033b 0x33b + 916: 2e01 jal c26 <_start-0x7ffff3da> + 918: 00072803 lw a6,0(a4) + 91c: 1400 addi s0,sp,544 + 91e: 001d c.nop 7 + 920: 1200 addi s0,sp,288 + 922: 031d addi t1,t1,7 + 924: 0000 unimp + 926: 2e01 jal c36 <_start-0x7ffff3ca> + 928: 00072803 lw a6,0(a4) + 92c: 3200 fld fs0,32(a2) + 92e: 001d c.nop 7 + 930: 1200 addi s0,sp,288 + 932: 0318 addi a4,sp,384 + 934: 0000 unimp + 936: 2e01 jal c46 <_start-0x7ffff3ba> + 938: 00072803 lw a6,0(a4) + 93c: 7d00 flw fs0,56(a0) + 93e: 001d c.nop 7 + 940: 1400 addi s0,sp,544 + 942: 5f5f 006d 2e01 0x2e01006d5f5f + 948: 00072803 lw a6,0(a4) + 94c: c100 sw s0,0(a0) + 94e: 001d c.nop 7 + 950: 0000 unimp + 952: f018 fsw fa4,32(s0) + 954: 001a c.slli zero,0x6 + 956: 5880 lw s0,48(s1) + 958: 0000 unimp + 95a: 4700 lw s0,8(a4) + 95c: 0004 0x4 + 95e: 1200 addi s0,sp,288 + 960: 04b8 addi a4,sp,584 + 962: 0000 unimp + 964: 2e01 jal c74 <_start-0x7ffff38c> + 966: 00072803 lw a6,0(a4) + 96a: ff00 fsw fs0,56(a4) + 96c: 001d c.nop 7 + 96e: 1200 addi s0,sp,288 + 970: 045f 0000 2e01 0x2e010000045f + 976: 00072803 lw a6,0(a4) + 97a: 4b00 lw s0,16(a4) + 97c: 001e c.slli zero,0x7 + 97e: 1200 addi s0,sp,288 + 980: 0000036f jal t1,980 <_start-0x7ffff680> + 984: 2e01 jal c94 <_start-0x7ffff36c> + 986: 00072803 lw a6,0(a4) + 98a: 9f00 0x9f00 + 98c: 001e c.slli zero,0x7 + 98e: 1200 addi s0,sp,288 + 990: 04c2 slli s1,s1,0x10 + 992: 0000 unimp + 994: 2e01 jal ca4 <_start-0x7ffff35c> + 996: 00072803 lw a6,0(a4) + 99a: e800 fsw fs0,16(s0) + 99c: 001e c.slli zero,0x7 + 99e: 1200 addi s0,sp,288 + 9a0: 00000443 fmadd.s fs0,ft0,ft0,ft0,rne + 9a4: 2e01 jal cb4 <_start-0x7ffff34c> + 9a6: 00006803 0x6803 + 9aa: fb00 fsw fs0,48(a4) + 9ac: 001e c.slli zero,0x7 + 9ae: 1200 addi s0,sp,288 + 9b0: 00000497 auipc s1,0x0 + 9b4: 2e01 jal cc4 <_start-0x7ffff33c> + 9b6: 00006803 0x6803 + 9ba: 0e00 addi s0,sp,784 + 9bc: 001f 1200 03c1 0x3c11200001f + 9c2: 0000 unimp + 9c4: 2e01 jal cd4 <_start-0x7ffff32c> + 9c6: 00006803 0x6803 + 9ca: 2c00 fld fs0,24(s0) + 9cc: 001f 1200 0492 0x4921200001f + 9d2: 0000 unimp + 9d4: 2e01 jal ce4 <_start-0x7ffff31c> + 9d6: 00006803 0x6803 + 9da: 6c00 flw fs0,24(s0) + 9dc: 001f 0000 f016 0xf0160000001f + 9e2: 0002 c.slli64 zero + 9e4: 6100 flw fs0,0(a0) + 9e6: 0004 0x4 + 9e8: 1400 addi s0,sp,544 + 9ea: 5f5f 0078 2e01 0x2e0100785f5f + 9f0: 00072803 lw a6,0(a4) + 9f4: 9d00 0x9d00 + 9f6: 001f 0000 0816 0x8160000001f + 9fc: 7b000003 lb zero,1968(zero) # 7b0 <_start-0x7ffff850> + a00: 0004 0x4 + a02: 1400 addi s0,sp,544 + a04: 5f5f 0078 2e01 0x2e0100785f5f + a0a: 00072803 lw a6,0(a4) + a0e: b000 fsd fs0,32(s0) + a10: 001f 0000 9818 0x98180000001f + a16: 1080001b 0x1080001b + a1a: 0000 unimp + a1c: 9900 0x9900 + a1e: 0004 0x4 + a20: 1400 addi s0,sp,544 + a22: 5f5f 0078 2e01 0x2e0100785f5f + a28: 00072803 lw a6,0(a4) + a2c: c300 sw s0,0(a4) + a2e: 001f 0000 2016 0x20160000001f + a34: 13000003 lb zero,304(zero) # 130 <_start-0x7ffffed0> + a38: 0005 c.nop 1 + a3a: 1200 addi s0,sp,288 + a3c: 04bd addi s1,s1,15 + a3e: 0000 unimp + a40: 2e01 jal d50 <_start-0x7ffff2b0> + a42: 00072803 lw a6,0(a4) + a46: d600 sw s0,40(a2) + a48: 001f 1200 049c 0x49c1200001f + a4e: 0000 unimp + a50: 2e01 jal d60 <_start-0x7ffff2a0> + a52: 00072803 lw a6,0(a4) + a56: e900 fsw fs0,16(a0) + a58: 001f 1200 0340 0x3401200001f + a5e: 0000 unimp + a60: 2e01 jal d70 <_start-0x7ffff290> + a62: 00072803 lw a6,0(a4) + a66: 1e00 addi s0,sp,816 + a68: 0020 addi s0,sp,8 + a6a: 1200 addi s0,sp,288 + a6c: 0000033b 0x33b + a70: 2e01 jal d80 <_start-0x7ffff280> + a72: 00072803 lw a6,0(a4) + a76: 3c00 fld fs0,56(s0) + a78: 0020 addi s0,sp,8 + a7a: 1200 addi s0,sp,288 + a7c: 031d addi t1,t1,7 + a7e: 0000 unimp + a80: 2e01 jal d90 <_start-0x7ffff270> + a82: 00072803 lw a6,0(a4) + a86: 5a00 lw s0,48(a2) + a88: 0020 addi s0,sp,8 + a8a: 1200 addi s0,sp,288 + a8c: 0318 addi a4,sp,384 + a8e: 0000 unimp + a90: 2e01 jal da0 <_start-0x7ffff260> + a92: 00072803 lw a6,0(a4) + a96: 9300 0x9300 + a98: 0020 addi s0,sp,8 + a9a: 1400 addi s0,sp,544 + a9c: 5f5f 006d 2e01 0x2e01006d5f5f + aa2: 00072803 lw a6,0(a4) + aa6: cc00 sw s0,24(s0) + aa8: 0020 addi s0,sp,8 + aaa: 0000 unimp + aac: 4016 0x4016 + aae: 9d000003 lb zero,-1584(zero) # fffff9d0 <__global_pointer$+0x7fffabf8> + ab2: 0005 c.nop 1 + ab4: 1200 addi s0,sp,288 + ab6: 04b8 addi a4,sp,584 + ab8: 0000 unimp + aba: 2e01 jal dca <_start-0x7ffff236> + abc: 00072803 lw a6,0(a4) + ac0: fa00 fsw fs0,48(a2) + ac2: 0020 addi s0,sp,8 + ac4: 1200 addi s0,sp,288 + ac6: 045f 0000 2e01 0x2e010000045f + acc: 00072803 lw a6,0(a4) + ad0: 3b00 fld fs0,48(a4) + ad2: 0021 c.nop 8 + ad4: 1200 addi s0,sp,288 + ad6: 0000036f jal t1,ad6 <_start-0x7ffff52a> + ada: 2e01 jal dea <_start-0x7ffff216> + adc: 00072803 lw a6,0(a4) + ae0: 7500 flw fs0,40(a0) + ae2: 0021 c.nop 8 + ae4: 1200 addi s0,sp,288 + ae6: 04c2 slli s1,s1,0x10 + ae8: 0000 unimp + aea: 2e01 jal dfa <_start-0x7ffff206> + aec: 00072803 lw a6,0(a4) + af0: 9300 0x9300 + af2: 0021 c.nop 8 + af4: 1200 addi s0,sp,288 + af6: 00000443 fmadd.s fs0,ft0,ft0,ft0,rne + afa: 2e01 jal e0a <_start-0x7ffff1f6> + afc: 00006803 0x6803 + b00: a600 fsd fs0,8(a2) + b02: 0021 c.nop 8 + b04: 1200 addi s0,sp,288 + b06: 00000497 auipc s1,0x0 + b0a: 2e01 jal e1a <_start-0x7ffff1e6> + b0c: 00006803 0x6803 + b10: c400 sw s0,8(s0) + b12: 0021 c.nop 8 + b14: 1200 addi s0,sp,288 + b16: 03c1 addi t2,t2,16 + b18: 0000 unimp + b1a: 2e01 jal e2a <_start-0x7ffff1d6> + b1c: 00006803 0x6803 + b20: e200 fsw fs0,0(a2) + b22: 0021 c.nop 8 + b24: 1200 addi s0,sp,288 + b26: 0492 slli s1,s1,0x4 + b28: 0000 unimp + b2a: 2e01 jal e3a <_start-0x7ffff1c6> + b2c: 00006803 0x6803 + b30: 1300 addi s0,sp,416 + b32: 0022 c.slli zero,0x8 + b34: 0000 unimp + b36: 5816 lw a6,100(sp) + b38: b7000003 lb zero,-1168(zero) # fffffb70 <__global_pointer$+0x7fffad98> + b3c: 0005 c.nop 1 + b3e: 1400 addi s0,sp,544 + b40: 5f5f 0078 2e01 0x2e0100785f5f + b46: 00072803 lw a6,0(a4) + b4a: 4400 lw s0,8(s0) + b4c: 0022 c.slli zero,0x8 + b4e: 0000 unimp + b50: 7019 c.lui zero,0xfffe6 + b52: 14000003 lb zero,320(zero) # 140 <_start-0x7ffffec0> + b56: 5f5f 0078 2e01 0x2e0100785f5f + b5c: 00072803 lw a6,0(a4) + b60: 6200 flw fs0,0(a2) + b62: 0022 c.slli zero,0x8 + b64: 0000 unimp + b66: 1800 addi s0,sp,48 + b68: 1cf0 addi a2,sp,636 + b6a: 8000 0x8000 + b6c: 0010 0x10 + b6e: 0000 unimp + b70: 05ec addi a1,sp,716 + b72: 0000 unimp + b74: 5f14 lw a3,56(a4) + b76: 785f 0100 032f 0x32f0100785f + b7c: 0728 addi a0,sp,904 + b7e: 0000 unimp + b80: 2275 jal d2c <_start-0x7ffff2d4> + b82: 0000 unimp + b84: 1a00 addi s0,sp,304 + b86: 05fe slli a1,a1,0x1f + b88: 0000 unimp + b8a: 5f15 li t5,-27 + b8c: 785f 0100 032f 0x32f0100785f + b92: 0728 addi a0,sp,904 + b94: 0000 unimp + b96: 1a00 addi s0,sp,304 + b98: 0610 addi a2,sp,768 + b9a: 0000 unimp + b9c: 5f15 li t5,-27 + b9e: 785f 0100 032f 0x32f0100785f + ba4: 0728 addi a0,sp,904 + ba6: 0000 unimp + ba8: 1600 addi s0,sp,800 + baa: 03a8 addi a0,sp,456 + bac: 0000 unimp + bae: 070e slli a4,a4,0x3 + bb0: 0000 unimp + bb2: 00042817 auipc a6,0x42 + bb6: 0100 addi s0,sp,128 + bb8: 002c032f 0x2c032f + bbc: 0000 unimp + bbe: 991a add s2,s2,t1 + bc0: 0006 c.slli zero,0x1 + bc2: 1700 addi s0,sp,928 + bc4: 0448 addi a0,sp,516 + bc6: 0000 unimp + bc8: 2f01 jal 12d8 <_start-0x7fffed28> + bca: 00072103 lw sp,0(a4) + bce: 1700 addi s0,sp,928 + bd0: 0411 addi s0,s0,4 + bd2: 0000 unimp + bd4: 2f01 jal 12e4 <_start-0x7fffed1c> + bd6: 00072103 lw sp,0(a4) + bda: 1700 addi s0,sp,928 + bdc: 04a1 addi s1,s1,8 + bde: 0000 unimp + be0: 2f01 jal 12f0 <_start-0x7fffed10> + be2: 00072103 lw sp,0(a4) + be6: 1700 addi s0,sp,928 + be8: 02e8 addi a0,sp,332 + bea: 0000 unimp + bec: 2f01 jal 12fc <_start-0x7fffed04> + bee: 00072803 lw a6,0(a4) + bf2: 1700 addi s0,sp,928 + bf4: 0300 addi s0,sp,384 + bf6: 0000 unimp + bf8: 2f01 jal 1308 <_start-0x7fffecf8> + bfa: 00072803 lw a6,0(a4) + bfe: 1a00 addi s0,sp,304 + c00: 0678 addi a4,sp,780 + c02: 0000 unimp + c04: 5f15 li t5,-27 + c06: 785f 0100 032f 0x32f0100785f + c0c: 0728 addi a0,sp,904 + c0e: 0000 unimp + c10: 1a00 addi s0,sp,304 + c12: 068a slli a3,a3,0x2 + c14: 0000 unimp + c16: 5f15 li t5,-27 + c18: 785f 0100 032f 0x32f0100785f + c1e: 0728 addi a0,sp,904 + c20: 0000 unimp + c22: 1b00 addi s0,sp,432 + c24: 5f15 li t5,-27 + c26: 785f 0100 032f 0x32f0100785f + c2c: 0728 addi a0,sp,904 + c2e: 0000 unimp + c30: 0000 unimp + c32: 3418 fld fa4,40(s0) + c34: 001e c.slli zero,0x7 + c36: 1080 addi s0,sp,96 + c38: 0000 unimp + c3a: b700 fsd fs0,40(a4) + c3c: 0006 c.slli zero,0x1 + c3e: 1400 addi s0,sp,544 + c40: 5f5f 0078 2f01 0x2f0100785f5f + c46: 00072803 lw a6,0(a4) + c4a: 8800 0x8800 + c4c: 0022 c.slli zero,0x8 + c4e: 0000 unimp + c50: c91a sw t1,144(sp) + c52: 0006 c.slli zero,0x1 + c54: 1500 addi s0,sp,672 + c56: 5f5f 0078 2f01 0x2f0100785f5f + c5c: 00072803 lw a6,0(a4) + c60: 0000 unimp + c62: db1a sw t1,180(sp) + c64: 0006 c.slli zero,0x1 + c66: 1500 addi s0,sp,672 + c68: 5f5f 0078 2f01 0x2f0100785f5f + c6e: 00072803 lw a6,0(a4) + c72: 0000 unimp + c74: ed1a fsw ft6,152(sp) + c76: 0006 c.slli zero,0x1 + c78: 1500 addi s0,sp,672 + c7a: 5f5f 0078 2f01 0x2f0100785f5f + c80: 00072803 lw a6,0(a4) + c84: 0000 unimp + c86: ff1a fsw ft6,188(sp) + c88: 0006 c.slli zero,0x1 + c8a: 1500 addi s0,sp,672 + c8c: 5f5f 0078 2f01 0x2f0100785f5f + c92: 00072803 lw a6,0(a4) + c96: 0000 unimp + c98: 5f5f151b 0x5f5f151b + c9c: 0078 addi a4,sp,12 + c9e: 2f01 jal 13ae <_start-0x7fffec52> + ca0: 00072803 lw a6,0(a4) + ca4: 0000 unimp + ca6: 1900 addi s0,sp,176 + ca8: 0390 addi a2,sp,448 + caa: 0000 unimp + cac: 00004817 auipc a6,0x4 + cb0: 0100 addi s0,sp,128 + cb2: 00f3032f 0xf3032f + cb6: 0000 unimp + cb8: 0000 unimp + cba: 0402 c.slli64 s0 + cbc: c605 beqz a2,ce4 <_start-0x7ffff31c> + cbe: 0001 nop + cc0: 0200 addi s0,sp,256 + cc2: 0704 addi s1,sp,896 + cc4: 0124 addi s1,sp,136 + cc6: 0000 unimp + cc8: 8200 0x8200 + cca: 0002 c.slli64 zero + ccc: 0400 addi s0,sp,512 + cce: 1d00 addi s0,sp,688 + cd0: 04000003 lb zero,64(zero) # 40 <_start-0x7fffffc0> + cd4: e501 bnez a0,cdc <_start-0x7ffff324> + cd6: 0001 nop + cd8: 0c00 addi s0,sp,528 + cda: 000004c7 fmsub.s fs1,ft0,ft0,ft0,rne + cde: 014c addi a1,sp,132 + ce0: 0000 unimp + ce2: 1ed4 addi a3,sp,884 + ce4: 8000 0x8000 + ce6: 00e4 addi s1,sp,76 + ce8: 0000 unimp + cea: 1fe0 addi s0,sp,1020 + cec: 0000 unimp + cee: 0802 c.slli64 a6 + cf0: a304 fsd fs1,0(a4) + cf2: 0008 0x8 + cf4: 0300 addi s0,sp,384 + cf6: 04fc addi a5,sp,588 + cf8: 0000 unimp + cfa: 5002 0x5002 + cfc: 380d jal 52e <_start-0x7ffffad2> + cfe: 0000 unimp + d00: 0400 addi s0,sp,512 + d02: 0504 addi s1,sp,640 + d04: 6e69 lui t3,0x1a + d06: 0074 addi a3,sp,12 + d08: 0102 c.slli64 sp + d0a: 7706 flw fa4,96(sp) + d0c: 0000 unimp + d0e: 0200 addi s0,sp,256 + d10: 0508 addi a0,sp,640 + d12: 01c1 addi gp,gp,16 + d14: 0000 unimp + d16: 0805 addi a6,a6,1 + d18: 0001 nop + d1a: 0300 addi s0,sp,384 + d1c: 014a slli sp,sp,0x12 + d1e: 5f16 lw t5,100(sp) + d20: 0000 unimp + d22: 0600 addi s0,sp,768 + d24: 004d c.nop 19 + d26: 0000 unimp + d28: 0102 c.slli64 sp + d2a: 7508 flw fa0,40(a0) + d2c: 0000 unimp + d2e: 0200 addi s0,sp,256 + d30: 0704 addi s1,sp,896 + d32: 0129 addi sp,sp,10 + d34: 0000 unimp + d36: 0802 c.slli64 a6 + d38: 00011f07 0x11f07 + d3c: 0200 addi s0,sp,256 + d3e: 0702 c.slli64 a4 + d40: 00ad addi ra,ra,11 + d42: 0000 unimp + d44: 00005a07 0x5a07 + d48: 8b00 0x8b00 + d4a: 0000 unimp + d4c: 0800 addi s0,sp,16 + d4e: 0066 c.slli zero,0x19 + d50: 0000 unimp + d52: 00ff 0xff + d54: 7b06 flw fs6,96(sp) + d56: 0000 unimp + d58: 0900 addi s0,sp,144 + d5a: 0110 addi a2,sp,128 + d5c: 0000 unimp + d5e: 3c05 jal 78e <_start-0x7ffff872> + d60: 8b16 mv s6,t0 + d62: 0000 unimp + d64: 0300 addi s0,sp,384 + d66: 0000005b 0x5b + d6a: 4804 lw s1,16(s0) + d6c: 0000250f 0x250f + d70: 0a00 addi s0,sp,272 + d72: 0408 addi a0,sp,512 + d74: 00f2034f fnmadd.s ft6,ft4,fa5,ft0,rne + d78: 0000 unimp + d7a: 00003c0b 0x3c0b + d7e: 0400 addi s0,sp,512 + d80: 00660e57 0x660e57 + d84: 0000 unimp + d86: 2004 fld fs1,0(s0) + d88: 0000 unimp + d8a: 0000420b 0x420b + d8e: 0400 addi s0,sp,512 + d90: 0e58 addi a4,sp,788 + d92: 0066 c.slli zero,0x19 + d94: 0000 unimp + d96: 1404 addi s1,sp,544 + d98: 040c addi a1,sp,512 + d9a: 650c flw fa1,8(a0) + d9c: 7078 flw fa4,100(s0) + d9e: 0400 addi s0,sp,512 + da0: 0e59 addi t3,t3,22 + da2: 0066 c.slli zero,0x19 + da4: 0000 unimp + da6: 0b04 addi s1,sp,400 + da8: 0401 addi s0,s0,0 + daa: 0009d10b 0x9d10b + dae: 0400 addi s0,sp,512 + db0: 0e5a slli t3,t3,0x16 + db2: 0066 c.slli zero,0x19 + db4: 0000 unimp + db6: 0104 addi s1,sp,128 + db8: 0400 addi s0,sp,512 + dba: 0d00 addi s0,sp,656 + dbc: 029c addi a5,sp,320 + dbe: 0000 unimp + dc0: 0408 addi a0,sp,512 + dc2: 074c addi a1,sp,900 + dc4: 0118 addi a4,sp,128 + dc6: 0000 unimp + dc8: 660e flw fa2,192(sp) + dca: 746c flw fa1,108(s0) + dcc: 0400 addi s0,sp,512 + dce: 0a4e slli s4,s4,0x13 + dd0: 009c addi a5,sp,64 + dd2: 0000 unimp + dd4: 0002d90f 0x2d90f + dd8: 0400 addi s0,sp,512 + dda: 055c addi a5,sp,644 + ddc: 00a8 addi a0,sp,72 + dde: 0000 unimp + de0: 1000 addi s0,sp,32 + de2: 04f4 addi a3,sp,588 + de4: 0000 unimp + de6: 2301 jal 12e6 <_start-0x7fffed1a> + de8: 2c01 jal ff8 <_start-0x7ffff008> + dea: 0000 unimp + dec: d400 sw s0,40(s0) + dee: 001e c.slli zero,0x7 + df0: e480 fsw fs0,8(s1) + df2: 0000 unimp + df4: 0100 addi s0,sp,128 + df6: 779c flw fa5,40(a5) + df8: 0002 c.slli64 zero + dfa: 1100 addi s0,sp,160 + dfc: 0061 c.nop 24 + dfe: 2301 jal 12fe <_start-0x7fffed02> + e00: 9c11 0x9c11 + e02: 0000 unimp + e04: 9b00 0x9b00 + e06: 0022 c.slli zero,0x8 + e08: 1100 addi s0,sp,160 + e0a: 0062 c.slli zero,0x18 + e0c: 2301 jal 130c <_start-0x7fffecf4> + e0e: 00009c1b 0x9c1b + e12: c300 sw s0,0(a4) + e14: 0022 c.slli zero,0x8 + e16: 1200 addi s0,sp,288 + e18: 00df 0000 2501 0x2501000000df + e1e: 00003803 0x3803 + e22: 0000 unimp + e24: de12 sw tp,60(sp) + e26: 0002 c.slli64 zero + e28: 0100 addi s0,sp,128 + e2a: 0325 addi t1,t1,9 + e2c: 0038 addi a4,sp,8 + e2e: 0000 unimp + e30: 1300 addi s0,sp,416 + e32: 5f41 li t5,-16 + e34: 26010063 beqz sp,1094 <_start-0x7fffef6c> + e38: 00027703 0x27703 + e3c: 1400 addi s0,sp,544 + e3e: 5f41 li t5,-16 + e40: 26010073 0x26010073 + e44: 00027703 0x27703 + e48: fb00 fsw fs0,48(a4) + e4a: 0022 c.slli zero,0x8 + e4c: 1500 addi s0,sp,672 + e4e: 5f41 li t5,-16 + e50: 0065 c.nop 25 + e52: 2601 jal 1152 <_start-0x7fffeeae> + e54: 00027703 0x27703 + e58: 0100 addi s0,sp,128 + e5a: 1660 addi s0,sp,812 + e5c: 00000103 lb sp,0(zero) # 0 <_start-0x80000000> + e60: 2601 jal 1160 <_start-0x7fffeea0> + e62: 00027e03 0x27e03 + e66: 0100 addi s0,sp,128 + e68: 1656 slli a2,a2,0x35 + e6a: 00c0 addi s0,sp,68 + e6c: 0000 unimp + e6e: 2601 jal 116e <_start-0x7fffee92> + e70: 00027e03 0x27e03 + e74: 0100 addi s0,sp,128 + e76: 1361 addi t1,t1,-8 + e78: 5f42 lw t5,48(sp) + e7a: 27010063 beq sp,a6,10da <_start-0x7fffef26> + e7e: 00027703 0x27703 + e82: 1500 addi s0,sp,672 + e84: 5f42 lw t5,48(sp) + e86: 27010073 0x27010073 + e8a: 00027703 0x27703 + e8e: 0100 addi s0,sp,128 + e90: 155d addi a0,a0,-9 + e92: 5f42 lw t5,48(sp) + e94: 0065 c.nop 25 + e96: 2701 jal 1596 <_start-0x7fffea6a> + e98: 00027703 0x27703 + e9c: 0100 addi s0,sp,128 + e9e: 011a175b 0x11a175b + ea2: 0000 unimp + ea4: 2701 jal 15a4 <_start-0x7fffea5c> + ea6: 00027e03 0x27e03 + eaa: 5000 lw s0,32(s0) + eac: 16000023 sb zero,352(zero) # 160 <_start-0x7ffffea0> + eb0: 0062 c.slli zero,0x18 + eb2: 0000 unimp + eb4: 2701 jal 15b4 <_start-0x7fffea4c> + eb6: 00027e03 0x27e03 + eba: 0100 addi s0,sp,128 + ebc: 155e slli a0,a0,0x37 + ebe: 0072 c.slli zero,0x1c + ec0: 2801 jal ed0 <_start-0x7ffff130> + ec2: 00002c0b 0x2c0b + ec6: 0100 addi s0,sp,128 + ec8: 185a slli a6,a6,0x36 + eca: 03c0 addi s0,sp,452 + ecc: 0000 unimp + ece: 0216 slli tp,tp,0x5 + ed0: 0000 unimp + ed2: 8319 srli a4,a4,0x6 + ed4: 0000 unimp + ed6: 0100 addi s0,sp,128 + ed8: 00f2032b 0xf2032b + edc: 0000 unimp + ede: 1800 addi s0,sp,48 + ee0: 03d8 addi a4,sp,452 + ee2: 0000 unimp + ee4: 022c addi a1,sp,264 + ee6: 0000 unimp + ee8: 8319 srli a4,a4,0x6 + eea: 0000 unimp + eec: 0100 addi s0,sp,128 + eee: 032c addi a1,sp,392 + ef0: 00f2 slli ra,ra,0x1c + ef2: 0000 unimp + ef4: 1a00 addi s0,sp,304 + ef6: 023e slli tp,tp,0xf + ef8: 0000 unimp + efa: 0a19 addi s4,s4,6 + efc: 0005 c.nop 1 + efe: 0100 addi s0,sp,128 + f00: 032d addi t1,t1,11 + f02: 0038 addi a4,sp,8 + f04: 0000 unimp + f06: 1a00 addi s0,sp,304 + f08: 0250 addi a2,sp,260 + f0a: 0000 unimp + f0c: 0a19 addi s4,s4,6 + f0e: 0005 c.nop 1 + f10: 0100 addi s0,sp,128 + f12: 032d addi t1,t1,11 + f14: 0038 addi a4,sp,8 + f16: 0000 unimp + f18: 1b00 addi s0,sp,432 + f1a: 03f0 addi a2,sp,460 + f1c: 0000 unimp + f1e: 00051b17 auipc s6,0x51 + f22: 0100 addi s0,sp,128 + f24: 032d addi t1,t1,11 + f26: 0038 addi a4,sp,8 + f28: 0000 unimp + f2a: 2379 jal 14b8 <_start-0x7fffeb48> + f2c: 0000 unimp + f2e: 00052d17 auipc s10,0x52 + f32: 0100 addi s0,sp,128 + f34: 032d addi t1,t1,11 + f36: 0038 addi a4,sp,8 + f38: 0000 unimp + f3a: 2398 fld fa4,0(a5) + f3c: 0000 unimp + f3e: 0000 unimp + f40: 0402 c.slli64 s0 + f42: c605 beqz a2,f6a <_start-0x7ffff096> + f44: 0001 nop + f46: 0200 addi s0,sp,256 + f48: 0704 addi s1,sp,896 + f4a: 0124 addi s1,sp,136 + f4c: 0000 unimp + f4e: 5800 lw s0,48(s0) + f50: 04000007 0x4000007 + f54: b600 fsd fs0,40(a2) + f56: 0004 0x4 + f58: 0400 addi s0,sp,512 + f5a: e501 bnez a0,f62 <_start-0x7ffff09e> + f5c: 0001 nop + f5e: 0c00 addi s0,sp,528 + f60: 0619 addi a2,a2,6 + f62: 0000 unimp + f64: 014c addi a1,sp,132 + f66: 0000 unimp + f68: 1fb8 addi a4,sp,1016 + f6a: 8000 0x8000 + f6c: 05c4 addi s1,sp,708 + f6e: 0000 unimp + f70: 00002303 lw t1,0(zero) # 0 <_start-0x80000000> + f74: 0802 c.slli64 a6 + f76: a304 fsd fs1,0(a4) + f78: 0008 0x8 + f7a: 0300 addi s0,sp,384 + f7c: 0504 addi s1,sp,640 + f7e: 6e69 lui t3,0x1a + f80: 0074 addi a3,sp,12 + f82: 0102 c.slli64 sp + f84: 7706 flw fa4,96(sp) + f86: 0000 unimp + f88: 0200 addi s0,sp,256 + f8a: 0508 addi a0,sp,640 + f8c: 01c1 addi gp,gp,16 + f8e: 0000 unimp + f90: 0804 addi s1,sp,16 + f92: 0001 nop + f94: 0200 addi s0,sp,256 + f96: 014a slli sp,sp,0x12 + f98: 5316 lw t1,100(sp) + f9a: 0000 unimp + f9c: 0500 addi s0,sp,640 + f9e: 0041 c.nop 16 + fa0: 0000 unimp + fa2: 0102 c.slli64 sp + fa4: 7508 flw fa0,40(a0) + fa6: 0000 unimp + fa8: 0200 addi s0,sp,256 + faa: 0704 addi s1,sp,896 + fac: 0129 addi sp,sp,10 + fae: 0000 unimp + fb0: 0802 c.slli64 a6 + fb2: 00011f07 0x11f07 + fb6: 0400 addi s0,sp,512 + fb8: 034e slli t1,t1,0x13 + fba: 0000 unimp + fbc: 4e02 lw t3,0(sp) + fbe: 1601 addi a2,a2,-32 + fc0: 0075 c.nop 29 + fc2: 0000 unimp + fc4: 0202 c.slli64 tp + fc6: 0000ad07 flw fs10,0(ra) + fca: 0600 addi s0,sp,768 + fcc: 004e c.slli zero,0x13 + fce: 0000 unimp + fd0: 008c addi a1,sp,64 + fd2: 0000 unimp + fd4: 00005a07 0x5a07 + fd8: ff00 fsw fs0,56(a4) + fda: 0500 addi s0,sp,640 + fdc: 007c addi a5,sp,12 + fde: 0000 unimp + fe0: 1008 addi a0,sp,32 + fe2: 0001 nop + fe4: 0400 addi s0,sp,512 + fe6: 163c addi a5,sp,808 + fe8: 008c addi a1,sp,64 + fea: 0000 unimp + fec: 5b09 li s6,-30 + fee: 0000 unimp + ff0: 0300 addi s0,sp,384 + ff2: 0f48 addi a0,sp,916 + ff4: 0025 c.nop 9 + ff6: 0000 unimp + ff8: 080a slli a6,a6,0x2 + ffa: f3034f03 lbu t5,-208(t1) # 8768 <_start-0x7fff7898> + ffe: 0000 unimp + 1000: 0b00 addi s0,sp,400 + 1002: 003c addi a5,sp,8 + 1004: 0000 unimp + 1006: 5a0e5703 lhu a4,1440(t3) # 1a5a0 <_start-0x7ffe5a60> + 100a: 0000 unimp + 100c: 0400 addi s0,sp,512 + 100e: 0020 addi s0,sp,8 + 1010: 0b00 addi s0,sp,400 + 1012: 0042 c.slli zero,0x10 + 1014: 0000 unimp + 1016: 5a0e5803 lhu a6,1440(t3) + 101a: 0000 unimp + 101c: 0400 addi s0,sp,512 + 101e: 0c14 addi a3,sp,528 + 1020: 0c04 addi s1,sp,528 + 1022: 7865 lui a6,0xffff9 + 1024: 0070 addi a2,sp,12 + 1026: 5a0e5903 lhu s2,1440(t3) + 102a: 0000 unimp + 102c: 0400 addi s0,sp,512 + 102e: 0b04010b 0xb04010b + 1032: 09d1 addi s3,s3,20 + 1034: 0000 unimp + 1036: 5a0e5a03 lhu s4,1440(t3) + 103a: 0000 unimp + 103c: 0400 addi s0,sp,512 + 103e: 0001 nop + 1040: 0004 0x4 + 1042: 9c0d 0x9c0d + 1044: 0002 c.slli64 zero + 1046: 0800 addi s0,sp,16 + 1048: 19074c03 lbu s8,400(a4) + 104c: 0001 nop + 104e: 0e00 addi s0,sp,784 + 1050: 6c66 flw fs8,88(sp) + 1052: 0074 addi a3,sp,12 + 1054: 9d0a4e03 lbu t3,-1584(s4) + 1058: 0000 unimp + 105a: 0f00 addi s0,sp,912 + 105c: 02d9 addi t0,t0,22 + 105e: 0000 unimp + 1060: a9055c03 lhu s8,-1392(a0) + 1064: 0000 unimp + 1066: 0000 unimp + 1068: 9210 0x9210 + 106a: 0006 c.slli zero,0x1 + 106c: 0100 addi s0,sp,128 + 106e: 009d0123 sb s1,2(s10) # 52f30 <_start-0x7ffad0d0> + 1072: 0000 unimp + 1074: 1fb8 addi a4,sp,1016 + 1076: 8000 0x8000 + 1078: 05c4 addi s1,sp,708 + 107a: 0000 unimp + 107c: 9c01 0x9c01 + 107e: 0741 addi a4,a4,16 + 1080: 0000 unimp + 1082: 6111 addi sp,sp,256 + 1084: 0100 addi s0,sp,128 + 1086: 009d1223 sh s1,4(s10) + 108a: 0000 unimp + 108c: 23d0 fld fa2,128(a5) + 108e: 0000 unimp + 1090: 6211 lui tp,0x4 + 1092: 0100 addi s0,sp,128 + 1094: 009d1c23 sh s1,24(s10) + 1098: 0000 unimp + 109a: 2458 fld fa4,136(s0) + 109c: 0000 unimp + 109e: df12 sw tp,188(sp) + 10a0: 0000 unimp + 10a2: 0100 addi s0,sp,128 + 10a4: 0325 addi t1,t1,9 + 10a6: 002c addi a1,sp,8 + 10a8: 0000 unimp + 10aa: 24e0 fld fs0,200(s1) + 10ac: 0000 unimp + 10ae: 0002de13 srli t3,t0,0x0 + 10b2: 0100 addi s0,sp,128 + 10b4: 0325 addi t1,t1,9 + 10b6: 002c addi a1,sp,8 + 10b8: 0000 unimp + 10ba: 1400 addi s0,sp,544 + 10bc: 5f41 li t5,-16 + 10be: 26010063 beqz sp,131e <_start-0x7fffece2> + 10c2: 00074103 lbu sp,0(a4) + 10c6: 0000 unimp + 10c8: 0025 c.nop 9 + 10ca: 1400 addi s0,sp,544 + 10cc: 5f41 li t5,-16 + 10ce: 26010073 0x26010073 + 10d2: 00074103 lbu sp,0(a4) + 10d6: 3500 fld fs0,40(a0) + 10d8: 0025 c.nop 9 + 10da: 1400 addi s0,sp,544 + 10dc: 5f41 li t5,-16 + 10de: 0065 c.nop 25 + 10e0: 2601 jal 13e0 <_start-0x7fffec20> + 10e2: 00074103 lbu sp,0(a4) + 10e6: 5d00 lw s0,56(a0) + 10e8: 0025 c.nop 9 + 10ea: 1200 addi s0,sp,288 + 10ec: 00000103 lb sp,0(zero) # 0 <_start-0x80000000> + 10f0: 2601 jal 13f0 <_start-0x7fffec10> + 10f2: 00074803 lbu a6,0(a4) + 10f6: 0300 addi s0,sp,384 + 10f8: 0026 c.slli zero,0x9 + 10fa: 1200 addi s0,sp,288 + 10fc: 00c0 addi s0,sp,68 + 10fe: 0000 unimp + 1100: 2601 jal 1400 <_start-0x7fffec00> + 1102: 00074803 lbu a6,0(a4) + 1106: 8500 0x8500 + 1108: 0026 c.slli zero,0x9 + 110a: 1400 addi s0,sp,544 + 110c: 5f42 lw t5,48(sp) + 110e: 27010063 beq sp,a6,136e <_start-0x7fffec92> + 1112: 00074103 lbu sp,0(a4) + 1116: 3800 fld fs0,48(s0) + 1118: 14000027 0x14000027 + 111c: 5f42 lw t5,48(sp) + 111e: 27010073 0x27010073 + 1122: 00074103 lbu sp,0(a4) + 1126: 7800 flw fs0,48(s0) + 1128: 14000027 0x14000027 + 112c: 5f42 lw t5,48(sp) + 112e: 0065 c.nop 25 + 1130: 2701 jal 1830 <_start-0x7fffe7d0> + 1132: 00074103 lbu sp,0(a4) + 1136: b000 fsd fs0,32(s0) + 1138: 12000027 0x12000027 + 113c: 011a slli sp,sp,0x6 + 113e: 0000 unimp + 1140: 2701 jal 1840 <_start-0x7fffe7c0> + 1142: 00074803 lbu a6,0(a4) + 1146: 3b00 fld fs0,48(a4) + 1148: 0028 addi a0,sp,8 + 114a: 1200 addi s0,sp,288 + 114c: 0062 c.slli zero,0x18 + 114e: 0000 unimp + 1150: 2701 jal 1850 <_start-0x7fffe7b0> + 1152: 00074803 lbu a6,0(a4) + 1156: b200 fsd fs0,32(a2) + 1158: 0028 addi a0,sp,8 + 115a: 1400 addi s0,sp,544 + 115c: 5f52 lw t5,52(sp) + 115e: 28010063 beqz sp,13de <_start-0x7fffec22> + 1162: 00074103 lbu sp,0(a4) + 1166: 2e00 fld fs0,24(a2) + 1168: 0029 c.nop 10 + 116a: 1400 addi s0,sp,544 + 116c: 5f52 lw t5,52(sp) + 116e: 28010073 0x28010073 + 1172: 00074103 lbu sp,0(a4) + 1176: 5900 lw s0,48(a0) + 1178: 0029 c.nop 10 + 117a: 1400 addi s0,sp,544 + 117c: 5f52 lw t5,52(sp) + 117e: 0065 c.nop 25 + 1180: 2801 jal 1190 <_start-0x7fffee70> + 1182: 00074103 lbu sp,0(a4) + 1186: c300 sw s0,0(a4) + 1188: 0029 c.nop 10 + 118a: 1200 addi s0,sp,288 + 118c: 0070 addi a2,sp,12 + 118e: 0000 unimp + 1190: 2801 jal 11a0 <_start-0x7fffee60> + 1192: 00074803 lbu a6,0(a4) + 1196: 5200 lw s0,32(a2) + 1198: 002a c.slli zero,0xa + 119a: 1200 addi s0,sp,288 + 119c: 000002e3 beqz zero,19a0 <_start-0x7fffe660> + 11a0: 2801 jal 11b0 <_start-0x7fffee50> + 11a2: 00074803 lbu a6,0(a4) + 11a6: 5600 lw s0,40(a2) + 11a8: 1500002b 0x1500002b + 11ac: 0072 c.slli zero,0x1c + 11ae: 2901 jal 15be <_start-0x7fffea42> + 11b0: 9d0a add s10,s10,sp + 11b2: 0000 unimp + 11b4: 1600 addi s0,sp,800 + 11b6: 0410 addi a2,sp,512 + 11b8: 0000 unimp + 11ba: 027c addi a5,sp,268 + 11bc: 0000 unimp + 11be: 00008317 auipc t1,0x8 + 11c2: 0100 addi s0,sp,128 + 11c4: 032c addi a1,sp,392 + 11c6: 000000f3 0xf3 + 11ca: 1600 addi s0,sp,800 + 11cc: 0440 addi s0,sp,516 + 11ce: 0000 unimp + 11d0: 0296 slli t0,t0,0x5 + 11d2: 0000 unimp + 11d4: 7412 flw fs0,36(sp) + 11d6: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 11da: 032c addi a1,sp,392 + 11dc: 0741 addi a4,a4,16 + 11de: 0000 unimp + 11e0: 00002bbb 0x2bbb + 11e4: 1600 addi s0,sp,800 + 11e6: 0458 addi a4,sp,516 + 11e8: 0000 unimp + 11ea: 02ac addi a1,sp,328 + 11ec: 0000 unimp + 11ee: 00008317 auipc t1,0x8 + 11f2: 0100 addi s0,sp,128 + 11f4: 032d addi t1,t1,11 + 11f6: 000000f3 0xf3 + 11fa: 1600 addi s0,sp,800 + 11fc: 0478 addi a4,sp,524 + 11fe: 0000 unimp + 1200: 02c6 slli t0,t0,0x11 + 1202: 0000 unimp + 1204: 7412 flw fs0,36(sp) + 1206: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 120a: 032d addi t1,t1,11 + 120c: 0741 addi a4,a4,16 + 120e: 0000 unimp + 1210: 00002bef jal s7,3210 <_start-0x7fffcdf0> + 1214: 1600 addi s0,sp,800 + 1216: 0490 addi a2,sp,576 + 1218: 0000 unimp + 121a: 05ee slli a1,a1,0x1b + 121c: 0000 unimp + 121e: 00060117 auipc sp,0x60 + 1222: 0100 addi s0,sp,128 + 1224: 032e slli t1,t1,0xb + 1226: 0000074f fnmadd.s fa4,ft0,ft0,ft0,rne + 122a: a816 fsd ft5,16(sp) + 122c: 0004 0x4 + 122e: 8500 0x8500 + 1230: 0005 c.nop 1 + 1232: 1200 addi s0,sp,288 + 1234: 065a slli a2,a2,0x16 + 1236: 0000 unimp + 1238: 2e01 jal 1548 <_start-0x7fffeab8> + 123a: 00074803 lbu a6,0(a4) + 123e: 2300 fld fs0,0(a4) + 1240: 002c addi a1,sp,8 + 1242: 1200 addi s0,sp,288 + 1244: 0676 slli a2,a2,0x1d + 1246: 0000 unimp + 1248: 2e01 jal 1558 <_start-0x7fffeaa8> + 124a: 00074803 lbu a6,0(a4) + 124e: 3600 fld fs0,40(a2) + 1250: 002c addi a1,sp,8 + 1252: 1200 addi s0,sp,288 + 1254: 05b6 slli a1,a1,0xd + 1256: 0000 unimp + 1258: 2e01 jal 1568 <_start-0x7fffea98> + 125a: 00074803 lbu a6,0(a4) + 125e: 5400 lw s0,40(s0) + 1260: 002c addi a1,sp,8 + 1262: 1200 addi s0,sp,288 + 1264: 05d2 slli a1,a1,0x14 + 1266: 0000 unimp + 1268: 2e01 jal 1578 <_start-0x7fffea88> + 126a: 00074803 lbu a6,0(a4) + 126e: 6700 flw fs0,8(a4) + 1270: 002c addi a1,sp,8 + 1272: 1600 addi s0,sp,800 + 1274: 04c8 addi a0,sp,580 + 1276: 0000 unimp + 1278: 03ae slli t2,t2,0xb + 127a: 0000 unimp + 127c: b812 fsd ft4,48(sp) + 127e: 0004 0x4 + 1280: 0100 addi s0,sp,128 + 1282: 032e slli t1,t1,0xb + 1284: 0748 addi a0,sp,900 + 1286: 0000 unimp + 1288: 2c7a fld fs8,408(sp) + 128a: 0000 unimp + 128c: 5f12 lw t5,36(sp) + 128e: 0004 0x4 + 1290: 0100 addi s0,sp,128 + 1292: 032e slli t1,t1,0xb + 1294: 0748 addi a0,sp,900 + 1296: 0000 unimp + 1298: 2c9d jal 150e <_start-0x7fffeaf2> + 129a: 0000 unimp + 129c: 6f12 flw ft10,4(sp) + 129e: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 12a2: 032e slli t1,t1,0xb + 12a4: 0748 addi a0,sp,900 + 12a6: 0000 unimp + 12a8: 2cf2 fld fs9,280(sp) + 12aa: 0000 unimp + 12ac: c212 sw tp,4(sp) + 12ae: 0004 0x4 + 12b0: 0100 addi s0,sp,128 + 12b2: 032e slli t1,t1,0xb + 12b4: 0748 addi a0,sp,900 + 12b6: 0000 unimp + 12b8: 2d05 jal 18e8 <_start-0x7fffe718> + 12ba: 0000 unimp + 12bc: 4312 lw t1,4(sp) + 12be: 0004 0x4 + 12c0: 0100 addi s0,sp,128 + 12c2: 032e slli t1,t1,0xb + 12c4: 0068 addi a0,sp,12 + 12c6: 0000 unimp + 12c8: 2d18 fld fa4,24(a0) + 12ca: 0000 unimp + 12cc: 9712 add a4,a4,tp + 12ce: 0004 0x4 + 12d0: 0100 addi s0,sp,128 + 12d2: 032e slli t1,t1,0xb + 12d4: 0068 addi a0,sp,12 + 12d6: 0000 unimp + 12d8: 00002d2b 0x2d2b + 12dc: c112 sw tp,128(sp) + 12de: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 12e2: 032e slli t1,t1,0xb + 12e4: 0068 addi a0,sp,12 + 12e6: 0000 unimp + 12e8: 2d3e fld fs10,456(sp) + 12ea: 0000 unimp + 12ec: 9212 add tp,tp,tp + 12ee: 0004 0x4 + 12f0: 0100 addi s0,sp,128 + 12f2: 032e slli t1,t1,0xb + 12f4: 0068 addi a0,sp,12 + 12f6: 0000 unimp + 12f8: 2d51 jal 198c <_start-0x7fffe674> + 12fa: 0000 unimp + 12fc: 1600 addi s0,sp,800 + 12fe: 04e0 addi s0,sp,588 + 1300: 0000 unimp + 1302: 0430 addi a2,sp,520 + 1304: 0000 unimp + 1306: b812 fsd ft4,48(sp) + 1308: 0004 0x4 + 130a: 0100 addi s0,sp,128 + 130c: 032e slli t1,t1,0xb + 130e: 0748 addi a0,sp,900 + 1310: 0000 unimp + 1312: 2d64 fld fs1,216(a0) + 1314: 0000 unimp + 1316: 5f12 lw t5,36(sp) + 1318: 0004 0x4 + 131a: 0100 addi s0,sp,128 + 131c: 032e slli t1,t1,0xb + 131e: 0748 addi a0,sp,900 + 1320: 0000 unimp + 1322: 00002d77 0x2d77 + 1326: 6f12 flw ft10,4(sp) + 1328: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 132c: 032e slli t1,t1,0xb + 132e: 0748 addi a0,sp,900 + 1330: 0000 unimp + 1332: 2da5 jal 19aa <_start-0x7fffe656> + 1334: 0000 unimp + 1336: c212 sw tp,4(sp) + 1338: 0004 0x4 + 133a: 0100 addi s0,sp,128 + 133c: 032e slli t1,t1,0xb + 133e: 0748 addi a0,sp,900 + 1340: 0000 unimp + 1342: 2db8 fld fa4,88(a1) + 1344: 0000 unimp + 1346: 00044317 auipc t1,0x44 + 134a: 0100 addi s0,sp,128 + 134c: 032e slli t1,t1,0xb + 134e: 0068 addi a0,sp,12 + 1350: 0000 unimp + 1352: 00049717 auipc a4,0x49 + 1356: 0100 addi s0,sp,128 + 1358: 032e slli t1,t1,0xb + 135a: 0068 addi a0,sp,12 + 135c: 0000 unimp + 135e: c112 sw tp,128(sp) + 1360: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1364: 032e slli t1,t1,0xb + 1366: 0068 addi a0,sp,12 + 1368: 0000 unimp + 136a: 00002dcb fnmsub.s fs11,ft0,ft0,ft0,rdn + 136e: 9212 add tp,tp,tp + 1370: 0004 0x4 + 1372: 0100 addi s0,sp,128 + 1374: 032e slli t1,t1,0xb + 1376: 0068 addi a0,sp,12 + 1378: 0000 unimp + 137a: 2dde fld fs11,464(sp) + 137c: 0000 unimp + 137e: 1600 addi s0,sp,800 + 1380: 0508 addi a0,sp,640 + 1382: 0000 unimp + 1384: 04b2 slli s1,s1,0xc + 1386: 0000 unimp + 1388: b812 fsd ft4,48(sp) + 138a: 0004 0x4 + 138c: 0100 addi s0,sp,128 + 138e: 032e slli t1,t1,0xb + 1390: 0748 addi a0,sp,900 + 1392: 0000 unimp + 1394: 2df1 jal 1a70 <_start-0x7fffe590> + 1396: 0000 unimp + 1398: 5f12 lw t5,36(sp) + 139a: 0004 0x4 + 139c: 0100 addi s0,sp,128 + 139e: 032e slli t1,t1,0xb + 13a0: 0748 addi a0,sp,900 + 13a2: 0000 unimp + 13a4: 2e04 fld fs1,24(a2) + 13a6: 0000 unimp + 13a8: 6f12 flw ft10,4(sp) + 13aa: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 13ae: 032e slli t1,t1,0xb + 13b0: 0748 addi a0,sp,900 + 13b2: 0000 unimp + 13b4: 2e56 fld ft8,336(sp) + 13b6: 0000 unimp + 13b8: c212 sw tp,4(sp) + 13ba: 0004 0x4 + 13bc: 0100 addi s0,sp,128 + 13be: 032e slli t1,t1,0xb + 13c0: 0748 addi a0,sp,900 + 13c2: 0000 unimp + 13c4: 2e69 jal 175e <_start-0x7fffe8a2> + 13c6: 0000 unimp + 13c8: 00044317 auipc t1,0x44 + 13cc: 0100 addi s0,sp,128 + 13ce: 032e slli t1,t1,0xb + 13d0: 0068 addi a0,sp,12 + 13d2: 0000 unimp + 13d4: 00049717 auipc a4,0x49 + 13d8: 0100 addi s0,sp,128 + 13da: 032e slli t1,t1,0xb + 13dc: 0068 addi a0,sp,12 + 13de: 0000 unimp + 13e0: c112 sw tp,128(sp) + 13e2: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 13e6: 032e slli t1,t1,0xb + 13e8: 0068 addi a0,sp,12 + 13ea: 0000 unimp + 13ec: 2e7c fld fa5,216(a2) + 13ee: 0000 unimp + 13f0: 9212 add tp,tp,tp + 13f2: 0004 0x4 + 13f4: 0100 addi s0,sp,128 + 13f6: 032e slli t1,t1,0xb + 13f8: 0068 addi a0,sp,12 + 13fa: 0000 unimp + 13fc: 00002e8f 0x2e8f + 1400: 1600 addi s0,sp,800 + 1402: 0530 addi a2,sp,648 + 1404: 0000 unimp + 1406: 0534 addi a3,sp,648 + 1408: 0000 unimp + 140a: b812 fsd ft4,48(sp) + 140c: 0004 0x4 + 140e: 0100 addi s0,sp,128 + 1410: 032e slli t1,t1,0xb + 1412: 0748 addi a0,sp,900 + 1414: 0000 unimp + 1416: 2ea2 fld ft9,8(sp) + 1418: 0000 unimp + 141a: 5f12 lw t5,36(sp) + 141c: 0004 0x4 + 141e: 0100 addi s0,sp,128 + 1420: 032e slli t1,t1,0xb + 1422: 0748 addi a0,sp,900 + 1424: 0000 unimp + 1426: 2ec0 fld fs0,152(a3) + 1428: 0000 unimp + 142a: 6f12 flw ft10,4(sp) + 142c: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1430: 032e slli t1,t1,0xb + 1432: 0748 addi a0,sp,900 + 1434: 0000 unimp + 1436: 2eee fld ft9,216(sp) + 1438: 0000 unimp + 143a: c212 sw tp,4(sp) + 143c: 0004 0x4 + 143e: 0100 addi s0,sp,128 + 1440: 032e slli t1,t1,0xb + 1442: 0748 addi a0,sp,900 + 1444: 0000 unimp + 1446: 2f01 jal 1b56 <_start-0x7fffe4aa> + 1448: 0000 unimp + 144a: 00044317 auipc t1,0x44 + 144e: 0100 addi s0,sp,128 + 1450: 032e slli t1,t1,0xb + 1452: 0068 addi a0,sp,12 + 1454: 0000 unimp + 1456: 00049717 auipc a4,0x49 + 145a: 0100 addi s0,sp,128 + 145c: 032e slli t1,t1,0xb + 145e: 0068 addi a0,sp,12 + 1460: 0000 unimp + 1462: c112 sw tp,128(sp) + 1464: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1468: 032e slli t1,t1,0xb + 146a: 0068 addi a0,sp,12 + 146c: 0000 unimp + 146e: 2f1f 0000 9212 0x921200002f1f + 1474: 0004 0x4 + 1476: 0100 addi s0,sp,128 + 1478: 032e slli t1,t1,0xb + 147a: 0068 addi a0,sp,12 + 147c: 0000 unimp + 147e: 2f32 fld ft10,264(sp) + 1480: 0000 unimp + 1482: 1600 addi s0,sp,800 + 1484: 0560 addi s0,sp,652 + 1486: 0000 unimp + 1488: 055e slli a0,a0,0x17 + 148a: 0000 unimp + 148c: 4712 lw a4,4(sp) + 148e: 0006 c.slli zero,0x1 + 1490: 0100 addi s0,sp,128 + 1492: 032e slli t1,t1,0xb + 1494: 0748 addi a0,sp,900 + 1496: 0000 unimp + 1498: 2f45 jal 1c48 <_start-0x7fffe3b8> + 149a: 0000 unimp + 149c: ee12 fsw ft4,28(sp) + 149e: 0005 c.nop 1 + 14a0: 0100 addi s0,sp,128 + 14a2: 032e slli t1,t1,0xb + 14a4: 0748 addi a0,sp,900 + 14a6: 0000 unimp + 14a8: 00002f63 0x2f63 + 14ac: 1800 addi s0,sp,48 + 14ae: 0588 addi a0,sp,704 + 14b0: 0000 unimp + 14b2: 4712 lw a4,4(sp) + 14b4: 0006 c.slli zero,0x1 + 14b6: 0100 addi s0,sp,128 + 14b8: 032e slli t1,t1,0xb + 14ba: 0748 addi a0,sp,900 + 14bc: 0000 unimp + 14be: 303a fld ft0,424(sp) + 14c0: 0000 unimp + 14c2: ee12 fsw ft4,28(sp) + 14c4: 0005 c.nop 1 + 14c6: 0100 addi s0,sp,128 + 14c8: 032e slli t1,t1,0xb + 14ca: 0748 addi a0,sp,900 + 14cc: 0000 unimp + 14ce: 304d jal d70 <_start-0x7ffff290> + 14d0: 0000 unimp + 14d2: 0000 unimp + 14d4: b018 fsd fa4,32(s0) + 14d6: 0005 c.nop 1 + 14d8: 1700 addi s0,sp,928 + 14da: 0000053f 2c032e01 0x2c032e010000053f + 14e2: 0000 unimp + 14e4: 1800 addi s0,sp,48 + 14e6: 05d8 addi a4,sp,708 + 14e8: 0000 unimp + 14ea: a312 fsd ft4,384(sp) + 14ec: 0005 c.nop 1 + 14ee: 0100 addi s0,sp,128 + 14f0: 032e slli t1,t1,0xb + 14f2: 0741 addi a4,a4,16 + 14f4: 0000 unimp + 14f6: 3099 jal d3c <_start-0x7ffff2c4> + 14f8: 0000 unimp + 14fa: 5512 lw a0,36(sp) + 14fc: 0005 c.nop 1 + 14fe: 0100 addi s0,sp,128 + 1500: 032e slli t1,t1,0xb + 1502: 0741 addi a4,a4,16 + 1504: 0000 unimp + 1506: 30b9 jal d54 <_start-0x7ffff2ac> + 1508: 0000 unimp + 150a: 7c12 flw fs8,36(sp) + 150c: 0005 c.nop 1 + 150e: 0100 addi s0,sp,128 + 1510: 032e slli t1,t1,0xb + 1512: 0741 addi a4,a4,16 + 1514: 0000 unimp + 1516: 30d9 jal ddc <_start-0x7ffff224> + 1518: 0000 unimp + 151a: 6a12 flw fs4,4(sp) + 151c: 0005 c.nop 1 + 151e: 0100 addi s0,sp,128 + 1520: 032e slli t1,t1,0xb + 1522: 0741 addi a4,a4,16 + 1524: 0000 unimp + 1526: 30f9 jal df4 <_start-0x7ffff20c> + 1528: 0000 unimp + 152a: 9112 add sp,sp,tp + 152c: 0005 c.nop 1 + 152e: 0100 addi s0,sp,128 + 1530: 032e slli t1,t1,0xb + 1532: 0748 addi a0,sp,900 + 1534: 0000 unimp + 1536: 310d jal 1158 <_start-0x7fffeea8> + 1538: 0000 unimp + 153a: 0000 unimp + 153c: 1900 addi s0,sp,176 + 153e: 23c0 fld fs0,128(a5) + 1540: 8000 0x8000 + 1542: 0010 0x10 + 1544: 0000 unimp + 1546: 060c addi a1,sp,768 + 1548: 0000 unimp + 154a: 5f14 lw a3,56(a4) + 154c: 785f 0100 032f 0x32f0100785f + 1552: 0748 addi a0,sp,900 + 1554: 0000 unimp + 1556: 3144 fld fs1,160(a0) + 1558: 0000 unimp + 155a: 1a00 addi s0,sp,304 + 155c: 061e slli a2,a2,0x7 + 155e: 0000 unimp + 1560: 5f15 li t5,-27 + 1562: 785f 0100 032f 0x32f0100785f + 1568: 0748 addi a0,sp,900 + 156a: 0000 unimp + 156c: 1a00 addi s0,sp,304 + 156e: 0630 addi a2,sp,776 + 1570: 0000 unimp + 1572: 5f15 li t5,-27 + 1574: 785f 0100 032f 0x32f0100785f + 157a: 0748 addi a0,sp,900 + 157c: 0000 unimp + 157e: 1600 addi s0,sp,800 + 1580: 0620 addi s0,sp,776 + 1582: 0000 unimp + 1584: 072e slli a4,a4,0xb + 1586: 0000 unimp + 1588: 00042817 auipc a6,0x42 + 158c: 0100 addi s0,sp,128 + 158e: 002c032f 0x2c032f + 1592: 0000 unimp + 1594: b91a fsd ft6,176(sp) + 1596: 0006 c.slli zero,0x1 + 1598: 1700 addi s0,sp,928 + 159a: 0448 addi a0,sp,516 + 159c: 0000 unimp + 159e: 2f01 jal 1cae <_start-0x7fffe352> + 15a0: 00074103 lbu sp,0(a4) # 4a456 <_start-0x7ffb5baa> + 15a4: 1700 addi s0,sp,928 + 15a6: 0411 addi s0,s0,4 + 15a8: 0000 unimp + 15aa: 2f01 jal 1cba <_start-0x7fffe346> + 15ac: 00074103 lbu sp,0(a4) + 15b0: 1700 addi s0,sp,928 + 15b2: 04a1 addi s1,s1,8 + 15b4: 0000 unimp + 15b6: 2f01 jal 1cc6 <_start-0x7fffe33a> + 15b8: 00074103 lbu sp,0(a4) + 15bc: 1700 addi s0,sp,928 + 15be: 02e8 addi a0,sp,332 + 15c0: 0000 unimp + 15c2: 2f01 jal 1cd2 <_start-0x7fffe32e> + 15c4: 00074803 lbu a6,0(a4) + 15c8: 1700 addi s0,sp,928 + 15ca: 0300 addi s0,sp,384 + 15cc: 0000 unimp + 15ce: 2f01 jal 1cde <_start-0x7fffe322> + 15d0: 00074803 lbu a6,0(a4) + 15d4: 1a00 addi s0,sp,304 + 15d6: 0698 addi a4,sp,832 + 15d8: 0000 unimp + 15da: 5f15 li t5,-27 + 15dc: 785f 0100 032f 0x32f0100785f + 15e2: 0748 addi a0,sp,900 + 15e4: 0000 unimp + 15e6: 1a00 addi s0,sp,304 + 15e8: 06aa slli a3,a3,0xa + 15ea: 0000 unimp + 15ec: 5f15 li t5,-27 + 15ee: 785f 0100 032f 0x32f0100785f + 15f4: 0748 addi a0,sp,900 + 15f6: 0000 unimp + 15f8: 1b00 addi s0,sp,432 + 15fa: 5f15 li t5,-27 + 15fc: 785f 0100 032f 0x32f0100785f + 1602: 0748 addi a0,sp,900 + 1604: 0000 unimp + 1606: 0000 unimp + 1608: e419 bnez s0,1616 <_start-0x7fffe9ea> + 160a: 0024 addi s1,sp,8 + 160c: 1080 addi s0,sp,96 + 160e: 0000 unimp + 1610: d700 sw s0,40(a4) + 1612: 0006 c.slli zero,0x1 + 1614: 1400 addi s0,sp,544 + 1616: 5f5f 0078 2f01 0x2f0100785f5f + 161c: 00074803 lbu a6,0(a4) + 1620: 5700 lw s0,40(a4) + 1622: 0031 c.nop 12 + 1624: 0000 unimp + 1626: e91a fsw ft6,144(sp) + 1628: 0006 c.slli zero,0x1 + 162a: 1500 addi s0,sp,672 + 162c: 5f5f 0078 2f01 0x2f0100785f5f + 1632: 00074803 lbu a6,0(a4) + 1636: 0000 unimp + 1638: fb1a fsw ft6,180(sp) + 163a: 0006 c.slli zero,0x1 + 163c: 1500 addi s0,sp,672 + 163e: 5f5f 0078 2f01 0x2f0100785f5f + 1644: 00074803 lbu a6,0(a4) + 1648: 0000 unimp + 164a: 0d1a slli s10,s10,0x6 + 164c: 15000007 0x15000007 + 1650: 5f5f 0078 2f01 0x2f0100785f5f + 1656: 00074803 lbu a6,0(a4) + 165a: 0000 unimp + 165c: 1f1a slli t5,t5,0x26 + 165e: 15000007 0x15000007 + 1662: 5f5f 0078 2f01 0x2f0100785f5f + 1668: 00074803 lbu a6,0(a4) + 166c: 0000 unimp + 166e: 5f5f151b 0x5f5f151b + 1672: 0078 addi a4,sp,12 + 1674: 2f01 jal 1d84 <_start-0x7fffe27c> + 1676: 00074803 lbu a6,0(a4) + 167a: 0000 unimp + 167c: 1800 addi s0,sp,48 + 167e: 0608 addi a0,sp,768 + 1680: 0000 unimp + 1682: 00004817 auipc a6,0x4 + 1686: 0100 addi s0,sp,128 + 1688: 00f3032f 0xf3032f + 168c: 0000 unimp + 168e: 0000 unimp + 1690: 0402 c.slli64 s0 + 1692: c605 beqz a2,16ba <_start-0x7fffe946> + 1694: 0001 nop + 1696: 0200 addi s0,sp,256 + 1698: 0704 addi s1,sp,896 + 169a: 0124 addi s1,sp,136 + 169c: 0000 unimp + 169e: 481c lw a5,16(s0) + 16a0: 07000007 0x7000007 + 16a4: 005a c.slli zero,0x16 + 16a6: 0000 unimp + 16a8: 95000003 lb zero,-1712(zero) # fffff950 <__global_pointer$+0x7fffab78> + 16ac: 0005 c.nop 1 + 16ae: 0400 addi s0,sp,512 + 16b0: 4400 lw s0,8(s0) + 16b2: 0006 c.slli zero,0x1 + 16b4: 0400 addi s0,sp,512 + 16b6: e501 bnez a0,16be <_start-0x7fffe942> + 16b8: 0001 nop + 16ba: 0c00 addi s0,sp,528 + 16bc: 06a4 addi s1,sp,840 + 16be: 0000 unimp + 16c0: 014c addi a1,sp,132 + 16c2: 0000 unimp + 16c4: 257c fld fa5,200(a0) + 16c6: 8000 0x8000 + 16c8: 07c8 addi a0,sp,964 + 16ca: 0000 unimp + 16cc: 30d9 jal f92 <_start-0x7ffff06e> + 16ce: 0000 unimp + 16d0: 0802 c.slli64 a6 + 16d2: a304 fsd fs1,0(a4) + 16d4: 0008 0x8 + 16d6: 0300 addi s0,sp,384 + 16d8: 0504 addi s1,sp,640 + 16da: 6e69 lui t3,0x1a + 16dc: 0074 addi a3,sp,12 + 16de: 0102 c.slli64 sp + 16e0: 7706 flw fa4,96(sp) + 16e2: 0000 unimp + 16e4: 0200 addi s0,sp,256 + 16e6: 0508 addi a0,sp,640 + 16e8: 01c1 addi gp,gp,16 + 16ea: 0000 unimp + 16ec: 0804 addi s1,sp,16 + 16ee: 0001 nop + 16f0: 0200 addi s0,sp,256 + 16f2: 014a slli sp,sp,0x12 + 16f4: 5316 lw t1,100(sp) + 16f6: 0000 unimp + 16f8: 0500 addi s0,sp,640 + 16fa: 0041 c.nop 16 + 16fc: 0000 unimp + 16fe: 0102 c.slli64 sp + 1700: 7508 flw fa0,40(a0) + 1702: 0000 unimp + 1704: 0200 addi s0,sp,256 + 1706: 0704 addi s1,sp,896 + 1708: 0129 addi sp,sp,10 + 170a: 0000 unimp + 170c: 0802 c.slli64 a6 + 170e: 00011f07 0x11f07 + 1712: 0200 addi s0,sp,256 + 1714: 0702 c.slli64 a4 + 1716: 00ad addi ra,ra,11 + 1718: 0000 unimp + 171a: 4e06 lw t3,64(sp) + 171c: 0000 unimp + 171e: 7f00 flw fs0,56(a4) + 1720: 0000 unimp + 1722: 0700 addi s0,sp,896 + 1724: 005a c.slli zero,0x16 + 1726: 0000 unimp + 1728: 00ff 0xff + 172a: 6f05 lui t5,0x1 + 172c: 0000 unimp + 172e: 0800 addi s0,sp,16 + 1730: 0110 addi a2,sp,128 + 1732: 0000 unimp + 1734: 3c04 fld fs1,56(s0) + 1736: 7f16 flw ft10,100(sp) + 1738: 0000 unimp + 173a: 0900 addi s0,sp,144 + 173c: 0000005b 0x5b + 1740: 250f4803 lbu a6,592(t5) # 1250 <_start-0x7fffedb0> + 1744: 0000 unimp + 1746: 0a00 addi s0,sp,272 + 1748: 0308 addi a0,sp,384 + 174a: 00e6034f fnmadd.s ft6,fa2,fa4,ft0,rne + 174e: 0000 unimp + 1750: 00003c0b 0x3c0b + 1754: 0300 addi s0,sp,384 + 1756: 005a0e57 0x5a0e57 + 175a: 0000 unimp + 175c: 2004 fld fs1,0(s0) + 175e: 0000 unimp + 1760: 0000420b 0x420b + 1764: 0300 addi s0,sp,384 + 1766: 0e58 addi a4,sp,788 + 1768: 005a c.slli zero,0x16 + 176a: 0000 unimp + 176c: 1404 addi s1,sp,544 + 176e: 040c addi a1,sp,512 + 1770: 650c flw fa1,8(a0) + 1772: 7078 flw fa4,100(s0) + 1774: 0300 addi s0,sp,384 + 1776: 0e59 addi t3,t3,22 + 1778: 005a c.slli zero,0x16 + 177a: 0000 unimp + 177c: 0b04 addi s1,sp,400 + 177e: 0401 addi s0,s0,0 + 1780: 0009d10b 0x9d10b + 1784: 0300 addi s0,sp,384 + 1786: 0e5a slli t3,t3,0x16 + 1788: 005a c.slli zero,0x16 + 178a: 0000 unimp + 178c: 0104 addi s1,sp,128 + 178e: 0400 addi s0,sp,512 + 1790: 0d00 addi s0,sp,656 + 1792: 029c addi a5,sp,320 + 1794: 0000 unimp + 1796: 0308 addi a0,sp,384 + 1798: 074c addi a1,sp,900 + 179a: 010c addi a1,sp,128 + 179c: 0000 unimp + 179e: 660e flw fa2,192(sp) + 17a0: 746c flw fa1,108(s0) + 17a2: 0300 addi s0,sp,384 + 17a4: 0a4e slli s4,s4,0x13 + 17a6: 0090 addi a2,sp,64 + 17a8: 0000 unimp + 17aa: 0002d90f 0x2d90f + 17ae: 0300 addi s0,sp,384 + 17b0: 055c addi a5,sp,644 + 17b2: 009c addi a5,sp,64 + 17b4: 0000 unimp + 17b6: 1000 addi s0,sp,32 + 17b8: 0000069b 0x69b + 17bc: 2301 jal 1cbc <_start-0x7fffe344> + 17be: 9001 srli s0,s0,0x20 + 17c0: 0000 unimp + 17c2: 7c00 flw fs0,56(s0) + 17c4: 0025 c.nop 9 + 17c6: c880 sw s0,16(s1) + 17c8: 01000007 0x1000007 + 17cc: 8a9c 0x8a9c + 17ce: 0005 c.nop 1 + 17d0: 1100 addi s0,sp,160 + 17d2: 0061 c.nop 24 + 17d4: 2301 jal 1cd4 <_start-0x7fffe32c> + 17d6: 9012 c.add zero,tp + 17d8: 0000 unimp + 17da: 6a00 flw fs0,16(a2) + 17dc: 0031 c.nop 12 + 17de: 1100 addi s0,sp,160 + 17e0: 0062 c.slli zero,0x18 + 17e2: 2301 jal 1ce2 <_start-0x7fffe31e> + 17e4: 901c 0x901c + 17e6: 0000 unimp + 17e8: 9200 0x9200 + 17ea: 0031 c.nop 12 + 17ec: 1200 addi s0,sp,288 + 17ee: 00df 0000 2501 0x2501000000df + 17f4: 00002c03 lw s8,0(zero) # 0 <_start-0x80000000> + 17f8: ba00 fsd fs0,48(a2) + 17fa: 0031 c.nop 12 + 17fc: 1300 addi s0,sp,416 + 17fe: 02de slli t0,t0,0x17 + 1800: 0000 unimp + 1802: 2501 jal 1e02 <_start-0x7fffe1fe> + 1804: 00002c03 lw s8,0(zero) # 0 <_start-0x80000000> + 1808: 0000 unimp + 180a: 4114 lw a3,0(a0) + 180c: 635f 0100 0326 0x3260100635f + 1812: 058a slli a1,a1,0x2 + 1814: 0000 unimp + 1816: 4115 li sp,5 + 1818: 735f 0100 0326 0x3260100735f + 181e: 058a slli a1,a1,0x2 + 1820: 0000 unimp + 1822: 320a fld ft4,160(sp) + 1824: 0000 unimp + 1826: 4115 li sp,5 + 1828: 655f 0100 0326 0x3260100655f + 182e: 058a slli a1,a1,0x2 + 1830: 0000 unimp + 1832: 32a1 jal 117a <_start-0x7fffee86> + 1834: 0000 unimp + 1836: 0312 slli t1,t1,0x4 + 1838: 0001 nop + 183a: 0100 addi s0,sp,128 + 183c: 0326 slli t1,t1,0x9 + 183e: 0591 addi a1,a1,4 + 1840: 0000 unimp + 1842: 3392 fld ft7,288(sp) + 1844: 0000 unimp + 1846: c012 sw tp,0(sp) + 1848: 0000 unimp + 184a: 0100 addi s0,sp,128 + 184c: 0326 slli t1,t1,0x9 + 184e: 0591 addi a1,a1,4 + 1850: 0000 unimp + 1852: 34fa fld fs1,440(sp) + 1854: 0000 unimp + 1856: 4214 lw a3,0(a2) + 1858: 635f 0100 0327 0x3270100635f + 185e: 058a slli a1,a1,0x2 + 1860: 0000 unimp + 1862: 4215 li tp,5 + 1864: 735f 0100 0327 0x3270100735f + 186a: 058a slli a1,a1,0x2 + 186c: 0000 unimp + 186e: 3675 jal 141a <_start-0x7fffebe6> + 1870: 0000 unimp + 1872: 4215 li tp,5 + 1874: 655f 0100 0327 0x3270100655f + 187a: 058a slli a1,a1,0x2 + 187c: 0000 unimp + 187e: 3711 jal 1782 <_start-0x7fffe87e> + 1880: 0000 unimp + 1882: 1a12 slli s4,s4,0x24 + 1884: 0001 nop + 1886: 0100 addi s0,sp,128 + 1888: 05910327 0x5910327 + 188c: 0000 unimp + 188e: 379d jal 17f4 <_start-0x7fffe80c> + 1890: 0000 unimp + 1892: 6212 flw ft4,4(sp) + 1894: 0000 unimp + 1896: 0100 addi s0,sp,128 + 1898: 05910327 0x5910327 + 189c: 0000 unimp + 189e: 38b8 fld fa4,112(s1) + 18a0: 0000 unimp + 18a2: 5214 lw a3,32(a2) + 18a4: 635f 0100 0328 0x3280100635f + 18aa: 058a slli a1,a1,0x2 + 18ac: 0000 unimp + 18ae: 5215 li tp,-27 + 18b0: 735f 0100 0328 0x3280100735f + 18b6: 058a slli a1,a1,0x2 + 18b8: 0000 unimp + 18ba: 3939 jal 14d8 <_start-0x7fffeb28> + 18bc: 0000 unimp + 18be: 5215 li tp,-27 + 18c0: 655f 0100 0328 0x3280100655f + 18c6: 058a slli a1,a1,0x2 + 18c8: 0000 unimp + 18ca: 39d0 fld fa2,176(a1) + 18cc: 0000 unimp + 18ce: 7012 flw ft0,36(sp) + 18d0: 0000 unimp + 18d2: 0100 addi s0,sp,128 + 18d4: 0328 addi a0,sp,392 + 18d6: 0591 addi a1,a1,4 + 18d8: 0000 unimp + 18da: 3b22 fld fs6,40(sp) + 18dc: 0000 unimp + 18de: e312 fsw ft4,132(sp) + 18e0: 0002 c.slli64 zero + 18e2: 0100 addi s0,sp,128 + 18e4: 0328 addi a0,sp,392 + 18e6: 0591 addi a1,a1,4 + 18e8: 0000 unimp + 18ea: 3da8 fld fa0,120(a1) + 18ec: 0000 unimp + 18ee: 7214 flw fa3,32(a2) + 18f0: 0100 addi s0,sp,128 + 18f2: 0a29 addi s4,s4,10 + 18f4: 0090 addi a2,sp,64 + 18f6: 0000 unimp + 18f8: 4016 0x4016 + 18fa: 0006 c.slli zero,0x1 + 18fc: 6300 flw fs0,0(a4) + 18fe: 0002 c.slli64 zero + 1900: 1700 addi s0,sp,928 + 1902: 00000083 lb ra,0(zero) # 0 <_start-0x80000000> + 1906: 2c01 jal 1b16 <_start-0x7fffe4ea> + 1908: 0000e603 0xe603 + 190c: 0000 unimp + 190e: 6816 flw fa6,68(sp) + 1910: 0006 c.slli zero,0x1 + 1912: 7900 flw fs0,48(a0) + 1914: 0002 c.slli64 zero + 1916: 1700 addi s0,sp,928 + 1918: 00000083 lb ra,0(zero) # 0 <_start-0x80000000> + 191c: 2d01 jal 1f2c <_start-0x7fffe0d4> + 191e: 0000e603 0xe603 + 1922: 0000 unimp + 1924: b016 fsd ft5,32(sp) + 1926: 0006 c.slli zero,0x1 + 1928: 5f00 lw s0,56(a4) + 192a: 18000003 lb zero,384(zero) # 180 <_start-0x7ffffe80> + 192e: 02ca slli t0,t0,0x12 + 1930: 0000 unimp + 1932: 2e01 jal 1c42 <_start-0x7fffe3be> + 1934: 00266c03 0x266c03 + 1938: 1880 addi s0,sp,112 + 193a: 000002cf fnmadd.s ft5,ft0,ft0,ft0,rne + 193e: 2e01 jal 1c4e <_start-0x7fffe3b2> + 1940: 00278803 lb a6,2(a5) + 1944: 1880 addi s0,sp,112 + 1946: 02d4 addi a3,sp,324 + 1948: 0000 unimp + 194a: 2e01 jal 1c5a <_start-0x7fffe3a6> + 194c: 0026b403 0x26b403 + 1950: 1880 addi s0,sp,112 + 1952: 00000067 jr zero # 0 <_start-0x80000000> + 1956: 2e01 jal 1c66 <_start-0x7fffe39a> + 1958: 00263403 0x263403 + 195c: 1280 addi s0,sp,352 + 195e: 0285 addi t0,t0,1 + 1960: 0000 unimp + 1962: 2e01 jal 1c72 <_start-0x7fffe38e> + 1964: 00002c03 lw s8,0(zero) # 0 <_start-0x80000000> + 1968: ac00 fsd fs0,24(s0) + 196a: 1600003f 000006f8 0x6f81600003f + 1972: 02dc addi a5,sp,324 + 1974: 0000 unimp + 1976: 5f15 li t5,-27 + 1978: 785f 0100 032e 0x32e0100785f + 197e: 0591 addi a1,a1,4 + 1980: 0000 unimp + 1982: 4099 li ra,6 + 1984: 0000 unimp + 1986: 1600 addi s0,sp,800 + 1988: 0728 addi a0,sp,904 + 198a: 0000 unimp + 198c: 02f6 slli t0,t0,0x1d + 198e: 0000 unimp + 1990: 5f15 li t5,-27 + 1992: 785f 0100 032e 0x32e0100785f + 1998: 0591 addi a1,a1,4 + 199a: 0000 unimp + 199c: 40ac lw a1,64(s1) + 199e: 0000 unimp + 19a0: 1600 addi s0,sp,800 + 19a2: 0710 addi a2,sp,896 + 19a4: 0000 unimp + 19a6: 0310 addi a2,sp,384 + 19a8: 0000 unimp + 19aa: 5f15 li t5,-27 + 19ac: 785f 0100 032e 0x32e0100785f + 19b2: 0591 addi a1,a1,4 + 19b4: 0000 unimp + 19b6: 000040bf 27bc1900 0x27bc1900000040bf + 19be: 8000 0x8000 + 19c0: 0010 0x10 + 19c2: 0000 unimp + 19c4: 032e slli t1,t1,0xb + 19c6: 0000 unimp + 19c8: 5f15 li t5,-27 + 19ca: 785f 0100 032e 0x32e0100785f + 19d0: 0591 addi a1,a1,4 + 19d2: 0000 unimp + 19d4: 40d2 lw ra,20(sp) + 19d6: 0000 unimp + 19d8: 1600 addi s0,sp,800 + 19da: 0740 addi s0,sp,900 + 19dc: 0000 unimp + 19de: 0348 addi a0,sp,388 + 19e0: 0000 unimp + 19e2: 5f15 li t5,-27 + 19e4: 785f 0100 032e 0x32e0100785f + 19ea: 0591 addi a1,a1,4 + 19ec: 0000 unimp + 19ee: 40e5 li ra,25 + 19f0: 0000 unimp + 19f2: 1a00 addi s0,sp,304 + 19f4: 0758 addi a4,sp,900 + 19f6: 0000 unimp + 19f8: 5f15 li t5,-27 + 19fa: 785f 0100 032e 0x32e0100785f + 1a00: 0591 addi a1,a1,4 + 1a02: 0000 unimp + 1a04: 40f8 lw a4,68(s1) + 1a06: 0000 unimp + 1a08: 0000 unimp + 1a0a: 7016 flw ft0,100(sp) + 1a0c: af000007 0xaf000007 + 1a10: 0004 0x4 + 1a12: 1800 addi s0,sp,48 + 1a14: 00da slli ra,ra,0x16 + 1a16: 0000 unimp + 1a18: 2e01 jal 1d28 <_start-0x7fffe2d8> + 1a1a: 0028f003 0x28f003 + 1a1e: 1880 addi s0,sp,112 + 1a20: 0000 unimp + 1a22: 0000 unimp + 1a24: 2e01 jal 1d34 <_start-0x7fffe2cc> + 1a26: 002a0803 lb a6,2(s4) + 1a2a: 1880 addi s0,sp,112 + 1a2c: 00e4 addi s1,sp,76 + 1a2e: 0000 unimp + 1a30: 2e01 jal 1d40 <_start-0x7fffe2c0> + 1a32: 00293803 0x293803 + 1a36: 1880 addi s0,sp,112 + 1a38: 00fe slli ra,ra,0x1f + 1a3a: 0000 unimp + 1a3c: 2e01 jal 1d4c <_start-0x7fffe2b4> + 1a3e: 002b5c03 lhu s8,2(s6) # 51f20 <_start-0x7ffae0e0> + 1a42: 1880 addi s0,sp,112 + 1a44: 02c1 addi t0,t0,16 + 1a46: 0000 unimp + 1a48: 2e01 jal 1d58 <_start-0x7fffe2a8> + 1a4a: 00263403 0x263403 + 1a4e: 1280 addi s0,sp,352 + 1a50: 0285 addi t0,t0,1 + 1a52: 0000 unimp + 1a54: 2e01 jal 1d64 <_start-0x7fffe29c> + 1a56: 00002c03 lw s8,0(zero) # 0 <_start-0x80000000> + 1a5a: 2b00 fld fs0,16(a4) + 1a5c: 0041 c.nop 16 + 1a5e: 1600 addi s0,sp,800 + 1a60: 07c0 addi s0,sp,964 + 1a62: 0000 unimp + 1a64: 03ce slli t2,t2,0x13 + 1a66: 0000 unimp + 1a68: 5f15 li t5,-27 + 1a6a: 785f 0100 032e 0x32e0100785f + 1a70: 0591 addi a1,a1,4 + 1a72: 0000 unimp + 1a74: 424c lw a1,4(a2) + 1a76: 0000 unimp + 1a78: 1600 addi s0,sp,800 + 1a7a: 07d8 addi a4,sp,964 + 1a7c: 0000 unimp + 1a7e: 03e8 addi a0,sp,460 + 1a80: 0000 unimp + 1a82: 5f15 li t5,-27 + 1a84: 785f 0100 032e 0x32e0100785f + 1a8a: 0591 addi a1,a1,4 + 1a8c: 0000 unimp + 1a8e: 425f 0000 1900 0x19000000425f + 1a94: 29c4 fld fs1,144(a1) + 1a96: 8000 0x8000 + 1a98: 0010 0x10 + 1a9a: 0000 unimp + 1a9c: 0406 slli s0,s0,0x1 + 1a9e: 0000 unimp + 1aa0: 5f15 li t5,-27 + 1aa2: 785f 0100 032e 0x32e0100785f + 1aa8: 0591 addi a1,a1,4 + 1aaa: 0000 unimp + 1aac: 4272 lw tp,28(sp) + 1aae: 0000 unimp + 1ab0: 1900 addi s0,sp,176 + 1ab2: 2a3c fld fa5,80(a2) + 1ab4: 8000 0x8000 + 1ab6: 0010 0x10 + 1ab8: 0000 unimp + 1aba: 0424 addi s1,sp,520 + 1abc: 0000 unimp + 1abe: 5f15 li t5,-27 + 1ac0: 785f 0100 032e 0x32e0100785f + 1ac6: 0591 addi a1,a1,4 + 1ac8: 0000 unimp + 1aca: 4285 li t0,1 + 1acc: 0000 unimp + 1ace: 1600 addi s0,sp,800 + 1ad0: 0810 addi a2,sp,16 + 1ad2: 0000 unimp + 1ad4: 043e slli s0,s0,0xf + 1ad6: 0000 unimp + 1ad8: 5f15 li t5,-27 + 1ada: 785f 0100 032e 0x32e0100785f + 1ae0: 0591 addi a1,a1,4 + 1ae2: 0000 unimp + 1ae4: 4298 lw a4,0(a3) + 1ae6: 0000 unimp + 1ae8: 1900 addi s0,sp,176 + 1aea: 2ae4 fld fs1,208(a3) + 1aec: 8000 0x8000 + 1aee: 0010 0x10 + 1af0: 0000 unimp + 1af2: 045c addi a5,sp,516 + 1af4: 0000 unimp + 1af6: 5f15 li t5,-27 + 1af8: 785f 0100 032e 0x32e0100785f + 1afe: 0591 addi a1,a1,4 + 1b00: 0000 unimp + 1b02: 42b6 lw t0,76(sp) + 1b04: 0000 unimp + 1b06: 1900 addi s0,sp,176 + 1b08: 2b30 fld fa2,80(a4) + 1b0a: 8000 0x8000 + 1b0c: 0010 0x10 + 1b0e: 0000 unimp + 1b10: 047a slli s0,s0,0x1e + 1b12: 0000 unimp + 1b14: 5f15 li t5,-27 + 1b16: 785f 0100 032e 0x32e0100785f + 1b1c: 0591 addi a1,a1,4 + 1b1e: 0000 unimp + 1b20: 42c9 li t0,18 + 1b22: 0000 unimp + 1b24: 1900 addi s0,sp,176 + 1b26: 2b48 fld fa0,144(a4) + 1b28: 8000 0x8000 + 1b2a: 0010 0x10 + 1b2c: 0000 unimp + 1b2e: 0498 addi a4,sp,576 + 1b30: 0000 unimp + 1b32: 5f15 li t5,-27 + 1b34: 785f 0100 032e 0x32e0100785f + 1b3a: 0591 addi a1,a1,4 + 1b3c: 0000 unimp + 1b3e: 000042f7 0x42f7 + 1b42: 1a00 addi s0,sp,304 + 1b44: 07f0 addi a2,sp,972 + 1b46: 0000 unimp + 1b48: 3612 fld fa2,288(sp) + 1b4a: 0001 nop + 1b4c: 0100 addi s0,sp,128 + 1b4e: 032e slli t1,t1,0xb + 1b50: 002c addi a1,sp,8 + 1b52: 0000 unimp + 1b54: 430a lw t1,128(sp) + 1b56: 0000 unimp + 1b58: 0000 unimp + 1b5a: 2816 fld fa6,320(sp) + 1b5c: 0008 0x8 + 1b5e: 7700 flw fs0,40(a4) + 1b60: 0005 c.nop 1 + 1b62: 1700 addi s0,sp,928 + 1b64: 02a8 addi a0,sp,328 + 1b66: 0000 unimp + 1b68: 2f01 jal 2278 <_start-0x7fffdd88> + 1b6a: 00002c03 lw s8,0(zero) # 0 <_start-0x80000000> + 1b6e: 1b00 addi s0,sp,432 + 1b70: 0538 addi a4,sp,648 + 1b72: 0000 unimp + 1b74: 0000c517 auipc a0,0xc + 1b78: 0100 addi s0,sp,128 + 1b7a: 058a032f 0x58a032f + 1b7e: 0000 unimp + 1b80: 00009817 auipc a6,0x9 + 1b84: 0100 addi s0,sp,128 + 1b86: 058a032f 0x58a032f + 1b8a: 0000 unimp + 1b8c: 0000e917 auipc s2,0xe + 1b90: 0100 addi s0,sp,128 + 1b92: 058a032f 0x58a032f + 1b96: 0000 unimp + 1b98: 0001ab17 auipc s6,0x1a + 1b9c: 0100 addi s0,sp,128 + 1b9e: 0591032f 0x591032f + 1ba2: 0000 unimp + 1ba4: 0001cf17 auipc t5,0x1c + 1ba8: 0100 addi s0,sp,128 + 1baa: 0591032f 0x591032f + 1bae: 0000 unimp + 1bb0: 0005171b 0x5171b + 1bb4: 1400 addi s0,sp,544 + 1bb6: 5f5f 0078 2f01 0x2f0100785f5f + 1bbc: 00059103 lh sp,0(a1) + 1bc0: 0000 unimp + 1bc2: 0005291b 0x5291b + 1bc6: 1400 addi s0,sp,544 + 1bc8: 5f5f 0078 2f01 0x2f0100785f5f + 1bce: 00059103 lh sp,0(a1) + 1bd2: 0000 unimp + 1bd4: 141c addi a5,sp,544 + 1bd6: 5f5f 0078 2f01 0x2f0100785f5f + 1bdc: 00059103 lh sp,0(a1) + 1be0: 0000 unimp + 1be2: 1900 addi s0,sp,176 + 1be4: 2648 fld fa0,136(a2) + 1be6: 8000 0x8000 + 1be8: 0014 0x14 + 1bea: 0000 unimp + 1bec: 0556 slli a0,a0,0x15 + 1bee: 0000 unimp + 1bf0: 5f15 li t5,-27 + 1bf2: 785f 0100 032f 0x32f0100785f + 1bf8: 0591 addi a1,a1,4 + 1bfa: 0000 unimp + 1bfc: 435f 0000 1b00 0x1b000000435f + 1c02: 0568 addi a0,sp,652 + 1c04: 0000 unimp + 1c06: 5f14 lw a3,56(a4) + 1c08: 785f 0100 032f 0x32f0100785f + 1c0e: 0591 addi a1,a1,4 + 1c10: 0000 unimp + 1c12: 1c00 addi s0,sp,560 + 1c14: 5f14 lw a3,56(a4) + 1c16: 785f 0100 032f 0x32f0100785f + 1c1c: 0591 addi a1,a1,4 + 1c1e: 0000 unimp + 1c20: 0000 unimp + 1c22: 481a lw a6,132(sp) + 1c24: 0008 0x8 + 1c26: 1700 addi s0,sp,928 + 1c28: 0048 addi a0,sp,4 + 1c2a: 0000 unimp + 1c2c: 2f01 jal 233c <_start-0x7fffdcc4> + 1c2e: 0000e603 0xe603 + 1c32: 0000 unimp + 1c34: 0200 addi s0,sp,256 + 1c36: 0504 addi s1,sp,640 + 1c38: 01c6 slli gp,gp,0x11 + 1c3a: 0000 unimp + 1c3c: 0402 c.slli64 s0 + 1c3e: 00012407 flw fs0,0(sp) # 6121e <_start-0x7ff9ede2> + 1c42: 0000 unimp + 1c44: 0285 addi t0,t0,1 + 1c46: 0000 unimp + 1c48: 0004 0x4 + 1c4a: 07da slli a5,a5,0x16 + 1c4c: 0000 unimp + 1c4e: 0104 addi s1,sp,128 + 1c50: 01e5 addi gp,gp,25 + 1c52: 0000 unimp + 1c54: dd0c sw a1,56(a0) + 1c56: 0006 c.slli zero,0x1 + 1c58: 4c00 lw s0,24(s0) + 1c5a: 0001 nop + 1c5c: 4400 lw s0,8(s0) + 1c5e: 002d c.nop 11 + 1c60: 4c80 lw s0,24(s1) + 1c62: 0000 unimp + 1c64: 7d00 flw fs0,56(a0) + 1c66: 0041 c.nop 16 + 1c68: 0200 addi s0,sp,256 + 1c6a: 0408 addi a0,sp,512 + 1c6c: 000008a3 sb zero,17(zero) # 11 <_start-0x7fffffef> + 1c70: 0004fc03 0x4fc03 + 1c74: 0200 addi s0,sp,256 + 1c76: 0d50 addi a2,sp,660 + 1c78: 0038 addi a4,sp,8 + 1c7a: 0000 unimp + 1c7c: 0404 addi s1,sp,512 + 1c7e: 6905 lui s2,0x1 + 1c80: 746e flw fs0,248(sp) + 1c82: 0200 addi s0,sp,256 + 1c84: 0601 addi a2,a2,0 + 1c86: 00000077 0x77 + 1c8a: 0802 c.slli64 a6 + 1c8c: c105 beqz a0,1cac <_start-0x7fffe354> + 1c8e: 0001 nop + 1c90: 0500 addi s0,sp,640 + 1c92: 0108 addi a0,sp,128 + 1c94: 0000 unimp + 1c96: 16014a03 lbu s4,352(sp) + 1c9a: 005f 0000 4d06 0x4d060000005f + 1ca0: 0000 unimp + 1ca2: 0200 addi s0,sp,256 + 1ca4: 0801 addi a6,a6,0 + 1ca6: 0075 c.nop 29 + 1ca8: 0000 unimp + 1caa: 0402 c.slli64 s0 + 1cac: 00012907 flw fs2,0(sp) + 1cb0: 0200 addi s0,sp,256 + 1cb2: 0708 addi a0,sp,896 + 1cb4: 011f 0000 0202 0x2020000011f + 1cba: 0000ad07 flw fs10,0(ra) + 1cbe: 0700 addi s0,sp,896 + 1cc0: 005a c.slli zero,0x16 + 1cc2: 0000 unimp + 1cc4: 0000008b 0x8b + 1cc8: 6608 flw fa0,8(a2) + 1cca: 0000 unimp + 1ccc: ff00 fsw fs0,56(a4) + 1cce: 0600 addi s0,sp,768 + 1cd0: 0000007b 0x7b + 1cd4: 1009 c.nop -30 + 1cd6: 0001 nop + 1cd8: 0500 addi s0,sp,640 + 1cda: 163c addi a5,sp,808 + 1cdc: 0000008b 0x8b + 1ce0: 00005b03 lhu s6,0(zero) # 0 <_start-0x80000000> + 1ce4: 0400 addi s0,sp,512 + 1ce6: 0f48 addi a0,sp,916 + 1ce8: 0025 c.nop 9 + 1cea: 0000 unimp + 1cec: 080a slli a6,a6,0x2 + 1cee: 4f04 lw s1,24(a4) + 1cf0: 0000f203 0xf203 + 1cf4: 0b00 addi s0,sp,400 + 1cf6: 003c addi a5,sp,8 + 1cf8: 0000 unimp + 1cfa: 5704 lw s1,40(a4) + 1cfc: 660e flw fa2,192(sp) + 1cfe: 0000 unimp + 1d00: 0400 addi s0,sp,512 + 1d02: 0020 addi s0,sp,8 + 1d04: 0b00 addi s0,sp,400 + 1d06: 0042 c.slli zero,0x10 + 1d08: 0000 unimp + 1d0a: 5804 lw s1,48(s0) + 1d0c: 660e flw fa2,192(sp) + 1d0e: 0000 unimp + 1d10: 0400 addi s0,sp,512 + 1d12: 0c14 addi a3,sp,528 + 1d14: 0c04 addi s1,sp,528 + 1d16: 7865 lui a6,0xffff9 + 1d18: 0070 addi a2,sp,12 + 1d1a: 5904 lw s1,48(a0) + 1d1c: 660e flw fa2,192(sp) + 1d1e: 0000 unimp + 1d20: 0400 addi s0,sp,512 + 1d22: 0b04010b 0xb04010b + 1d26: 09d1 addi s3,s3,20 + 1d28: 0000 unimp + 1d2a: 5a04 lw s1,48(a2) + 1d2c: 660e flw fa2,192(sp) + 1d2e: 0000 unimp + 1d30: 0400 addi s0,sp,512 + 1d32: 0001 nop + 1d34: 0004 0x4 + 1d36: 9c0d 0x9c0d + 1d38: 0002 c.slli64 zero + 1d3a: 0800 addi s0,sp,16 + 1d3c: 4c04 lw s1,24(s0) + 1d3e: 00011807 0x11807 + 1d42: 0e00 addi s0,sp,784 + 1d44: 6c66 flw fs8,88(sp) + 1d46: 0074 addi a3,sp,12 + 1d48: 4e04 lw s1,24(a2) + 1d4a: 9c0a add s8,s8,sp + 1d4c: 0000 unimp + 1d4e: 0f00 addi s0,sp,912 + 1d50: 02d9 addi t0,t0,22 + 1d52: 0000 unimp + 1d54: 5c04 lw s1,56(s0) + 1d56: a805 j 1d86 <_start-0x7fffe27a> + 1d58: 0000 unimp + 1d5a: 0000 unimp + 1d5c: d210 sw a2,32(a2) + 1d5e: 0006 c.slli zero,0x1 + 1d60: 0100 addi s0,sp,128 + 1d62: 0122 slli sp,sp,0x8 + 1d64: 002c addi a1,sp,8 + 1d66: 0000 unimp + 1d68: 2d44 fld fs1,152(a0) + 1d6a: 8000 0x8000 + 1d6c: 004c addi a1,sp,4 + 1d6e: 0000 unimp + 1d70: 9c01 0x9c01 + 1d72: 027a slli tp,tp,0x1e + 1d74: 0000 unimp + 1d76: 6111 addi sp,sp,256 + 1d78: 0100 addi s0,sp,128 + 1d7a: 1422 slli s0,s0,0x28 + 1d7c: 009c addi a5,sp,64 + 1d7e: 0000 unimp + 1d80: 4372 lw t1,28(sp) + 1d82: 0000 unimp + 1d84: 6212 flw ft4,4(sp) + 1d86: 0100 addi s0,sp,128 + 1d88: 1e22 slli t3,t3,0x28 + 1d8a: 009c addi a5,sp,64 + 1d8c: 0000 unimp + 1d8e: 5c06 lw s8,96(sp) + 1d90: 935d0493 addi s1,s10,-1739 + 1d94: 1304 addi s1,sp,416 + 1d96: 00df 0000 2401 0x2401000000df + 1d9c: 00003803 0x3803 + 1da0: 0000 unimp + 1da2: 0002de13 srli t3,t0,0x0 + 1da6: 0100 addi s0,sp,128 + 1da8: 0324 addi s1,sp,392 + 1daa: 0038 addi a4,sp,8 + 1dac: 0000 unimp + 1dae: 1400 addi s0,sp,544 + 1db0: 5f41 li t5,-16 + 1db2: 25010063 beq sp,a6,1ff2 <_start-0x7fffe00e> + 1db6: 00027a03 0x27a03 + 1dba: 1400 addi s0,sp,544 + 1dbc: 5f41 li t5,-16 + 1dbe: 25010073 0x25010073 + 1dc2: 00027a03 0x27a03 + 1dc6: 1500 addi s0,sp,672 + 1dc8: 5f41 li t5,-16 + 1dca: 0065 c.nop 25 + 1dcc: 2501 jal 23cc <_start-0x7fffdc34> + 1dce: 00027a03 0x27a03 + 1dd2: 9a00 0x9a00 + 1dd4: 16000043 fmadd.q ft0,ft0,ft0,ft2,rne + 1dd8: 00000103 lb sp,0(zero) # 0 <_start-0x80000000> + 1ddc: 2501 jal 23dc <_start-0x7fffdc24> + 1dde: 00028103 lb sp,0(t0) # 8000322c + 1de2: c500 sw s0,8(a0) + 1de4: 16000043 fmadd.q ft0,ft0,ft0,ft2,rne + 1de8: 00c0 addi s0,sp,68 + 1dea: 0000 unimp + 1dec: 2501 jal 23ec <_start-0x7fffdc14> + 1dee: 00028103 lb sp,0(t0) + 1df2: d800 sw s0,48(s0) + 1df4: 14000043 0x14000043 + 1df8: 5f42 lw t5,48(sp) + 1dfa: 26010063 beqz sp,205a <_start-0x7fffdfa6> + 1dfe: 00027a03 0x27a03 + 1e02: 1400 addi s0,sp,544 + 1e04: 5f42 lw t5,48(sp) + 1e06: 26010073 0x26010073 + 1e0a: 00027a03 0x27a03 + 1e0e: 1700 addi s0,sp,928 + 1e10: 5f42 lw t5,48(sp) + 1e12: 0065 c.nop 25 + 1e14: 2601 jal 2114 <_start-0x7fffdeec> + 1e16: 00027a03 0x27a03 + 1e1a: 0700 addi s0,sp,896 + 1e1c: 007d c.nop 31 + 1e1e: ff0a fsw ft2,188(sp) + 1e20: 1aff 0x1aff + 1e22: 189f 011a 0000 0x11a189f + 1e28: 2601 jal 2128 <_start-0x7fffded8> + 1e2a: 00028103 lb sp,0(t0) + 1e2e: 1600 addi s0,sp,800 + 1e30: 0062 c.slli zero,0x18 + 1e32: 0000 unimp + 1e34: 2601 jal 2134 <_start-0x7fffdecc> + 1e36: 00028103 lb sp,0(t0) + 1e3a: eb00 fsw fs0,16(a4) + 1e3c: 14000043 0x14000043 + 1e40: 0072 c.slli zero,0x1c + 1e42: 2701 jal 2542 <_start-0x7fffdabe> + 1e44: 00002c0b 0x2c0b + 1e48: 1900 addi s0,sp,176 + 1e4a: 2d44 fld fs1,152(a0) + 1e4c: 8000 0x8000 + 1e4e: 0010 0x10 + 1e50: 0000 unimp + 1e52: 021f 0000 8318 0x83180000021f + 1e58: 0000 unimp + 1e5a: 0100 addi s0,sp,128 + 1e5c: 032a slli t1,t1,0xa + 1e5e: 00f2 slli ra,ra,0x1c + 1e60: 0000 unimp + 1e62: 1a00 addi s0,sp,304 + 1e64: 0860 addi s0,sp,28 + 1e66: 0000 unimp + 1e68: 0235 addi tp,tp,13 + 1e6a: 0000 unimp + 1e6c: 8318 0x8318 + 1e6e: 0000 unimp + 1e70: 0100 addi s0,sp,128 + 1e72: 00f2032b 0xf2032b + 1e76: 0000 unimp + 1e78: 1b00 addi s0,sp,432 + 1e7a: 00000247 fmsub.s ft4,ft0,ft0,ft0,rne + 1e7e: 0a18 addi a4,sp,272 + 1e80: 0005 c.nop 1 + 1e82: 0100 addi s0,sp,128 + 1e84: 032c addi a1,sp,392 + 1e86: 0038 addi a4,sp,8 + 1e88: 0000 unimp + 1e8a: 1b00 addi s0,sp,432 + 1e8c: 0259 addi tp,tp,22 + 1e8e: 0000 unimp + 1e90: 0a18 addi a4,sp,272 + 1e92: 0005 c.nop 1 + 1e94: 0100 addi s0,sp,128 + 1e96: 032c addi a1,sp,392 + 1e98: 0038 addi a4,sp,8 + 1e9a: 0000 unimp + 1e9c: 1b00 addi s0,sp,432 + 1e9e: 0000026b 0x26b + 1ea2: 0a18 addi a4,sp,272 + 1ea4: 0005 c.nop 1 + 1ea6: 0100 addi s0,sp,128 + 1ea8: 032c addi a1,sp,392 + 1eaa: 0038 addi a4,sp,8 + 1eac: 0000 unimp + 1eae: 1c00 addi s0,sp,560 + 1eb0: 0a18 addi a4,sp,272 + 1eb2: 0005 c.nop 1 + 1eb4: 0100 addi s0,sp,128 + 1eb6: 032c addi a1,sp,392 + 1eb8: 0038 addi a4,sp,8 + 1eba: 0000 unimp + 1ebc: 0000 unimp + 1ebe: 0402 c.slli64 s0 + 1ec0: c605 beqz a2,1ee8 <_start-0x7fffe118> + 1ec2: 0001 nop + 1ec4: 0200 addi s0,sp,256 + 1ec6: 0704 addi s1,sp,896 + 1ec8: 0124 addi s1,sp,136 + 1eca: 0000 unimp + 1ecc: a800 fsd fs0,16(s0) + 1ece: 0002 c.slli64 zero + 1ed0: 0400 addi s0,sp,512 + 1ed2: 7c00 flw fs0,56(s0) + 1ed4: 0009 c.nop 2 + 1ed6: 0400 addi s0,sp,512 + 1ed8: e501 bnez a0,1ee0 <_start-0x7fffe120> + 1eda: 0001 nop + 1edc: 0c00 addi s0,sp,528 + 1ede: 070d addi a4,a4,3 + 1ee0: 0000 unimp + 1ee2: 014c addi a1,sp,132 + 1ee4: 0000 unimp + 1ee6: 2d90 fld fa2,24(a1) + 1ee8: 8000 0x8000 + 1eea: 00d8 addi a4,sp,68 + 1eec: 0000 unimp + 1eee: 4356 lw t1,84(sp) + 1ef0: 0000 unimp + 1ef2: 0402 c.slli64 s0 + 1ef4: 1b04 addi s1,sp,432 + 1ef6: 0300000b 0x300000b + 1efa: 0504 addi s1,sp,640 + 1efc: 6e69 lui t3,0x1a + 1efe: 0074 addi a3,sp,12 + 1f00: 0102 c.slli64 sp + 1f02: 7706 flw fa4,96(sp) + 1f04: 0000 unimp + 1f06: 0200 addi s0,sp,256 + 1f08: 0508 addi a0,sp,640 + 1f0a: 01c1 addi gp,gp,16 + 1f0c: 0000 unimp + 1f0e: 0804 addi s1,sp,16 + 1f10: 0001 nop + 1f12: 0200 addi s0,sp,256 + 1f14: 014a slli sp,sp,0x12 + 1f16: 5316 lw t1,100(sp) + 1f18: 0000 unimp + 1f1a: 0500 addi s0,sp,640 + 1f1c: 0041 c.nop 16 + 1f1e: 0000 unimp + 1f20: 0102 c.slli64 sp + 1f22: 7508 flw fa0,40(a0) + 1f24: 0000 unimp + 1f26: 0200 addi s0,sp,256 + 1f28: 0704 addi s1,sp,896 + 1f2a: 0129 addi sp,sp,10 + 1f2c: 0000 unimp + 1f2e: 0802 c.slli64 a6 + 1f30: 00011f07 0x11f07 + 1f34: 0200 addi s0,sp,256 + 1f36: 0702 c.slli64 a4 + 1f38: 00ad addi ra,ra,11 + 1f3a: 0000 unimp + 1f3c: 4e06 lw t3,64(sp) + 1f3e: 0000 unimp + 1f40: 7f00 flw fs0,56(a4) + 1f42: 0000 unimp + 1f44: 0700 addi s0,sp,896 + 1f46: 005a c.slli zero,0x16 + 1f48: 0000 unimp + 1f4a: 00ff 0xff + 1f4c: 6f05 lui t5,0x1 + 1f4e: 0000 unimp + 1f50: 0800 addi s0,sp,16 + 1f52: 0110 addi a2,sp,128 + 1f54: 0000 unimp + 1f56: 3c05 jal 1986 <_start-0x7fffe67a> + 1f58: 7f16 flw ft10,100(sp) + 1f5a: 0000 unimp + 1f5c: 0900 addi s0,sp,144 + 1f5e: 00000773 0x773 + 1f62: 250f4503 lbu a0,592(t5) # 1250 <_start-0x7fffedb0> + 1f66: 0000 unimp + 1f68: 0a00 addi s0,sp,272 + 1f6a: 0304 addi s1,sp,384 + 1f6c: 034a slli t1,t1,0x12 + 1f6e: 00d6 slli ra,ra,0x15 + 1f70: 0000 unimp + 1f72: 0007620b 0x7620b + 1f76: 0300 addi s0,sp,384 + 1f78: 0e51 addi t3,t3,20 + 1f7a: 005a c.slli zero,0x16 + 1f7c: 0000 unimp + 1f7e: 1704 addi s1,sp,928 + 1f80: 0009 c.nop 2 + 1f82: 650c flw fa1,8(a0) + 1f84: 7078 flw fa4,100(s0) + 1f86: 0300 addi s0,sp,384 + 1f88: 0e52 slli t3,t3,0x14 + 1f8a: 005a c.slli zero,0x16 + 1f8c: 0000 unimp + 1f8e: 0804 addi s1,sp,16 + 1f90: 0001 nop + 1f92: 0009d10b 0x9d10b + 1f96: 0300 addi s0,sp,384 + 1f98: 005a0e53 fadd.s ft8,fs4,ft5,rne + 1f9c: 0000 unimp + 1f9e: 0104 addi s1,sp,128 + 1fa0: 0000 unimp + 1fa2: 0d00 addi s0,sp,656 + 1fa4: 00000767 jalr a4,zero # 0 <_start-0x80000000> + 1fa8: 0304 addi s1,sp,384 + 1faa: 00fc0747 fmsub.s fa4,fs8,fa5,ft0,rne + 1fae: 0000 unimp + 1fb0: 660e flw fa2,192(sp) + 1fb2: 746c flw fa1,108(s0) + 1fb4: 0300 addi s0,sp,384 + 1fb6: 0a49 addi s4,s4,18 + 1fb8: 0090 addi a2,sp,64 + 1fba: 0000 unimp + 1fbc: 0002d90f 0x2d90f + 1fc0: 0300 addi s0,sp,384 + 1fc2: 0555 addi a0,a0,21 + 1fc4: 009c addi a5,sp,64 + 1fc6: 0000 unimp + 1fc8: 0900 addi s0,sp,144 + 1fca: 0000005b 0x5b + 1fce: 4804 lw s1,16(s0) + 1fd0: 0001080f 0x1080f + 1fd4: 0200 addi s0,sp,256 + 1fd6: 0408 addi a0,sp,512 + 1fd8: 000008a3 sb zero,17(zero) # 11 <_start-0x7fffffef> + 1fdc: 080a slli a6,a6,0x2 + 1fde: 4f04 lw s1,24(a4) + 1fe0: 00015903 lhu s2,0(sp) + 1fe4: 0b00 addi s0,sp,400 + 1fe6: 003c addi a5,sp,8 + 1fe8: 0000 unimp + 1fea: 5704 lw s1,40(a4) + 1fec: 5a0e lw s4,224(sp) + 1fee: 0000 unimp + 1ff0: 0400 addi s0,sp,512 + 1ff2: 0020 addi s0,sp,8 + 1ff4: 0b00 addi s0,sp,400 + 1ff6: 0042 c.slli zero,0x10 + 1ff8: 0000 unimp + 1ffa: 5804 lw s1,48(s0) + 1ffc: 5a0e lw s4,224(sp) + 1ffe: 0000 unimp + 2000: 0400 addi s0,sp,512 + 2002: 0c14 addi a3,sp,528 + 2004: 0c04 addi s1,sp,528 + 2006: 7865 lui a6,0xffff9 + 2008: 0070 addi a2,sp,12 + 200a: 5904 lw s1,48(a0) + 200c: 5a0e lw s4,224(sp) + 200e: 0000 unimp + 2010: 0400 addi s0,sp,512 + 2012: 0b04010b 0xb04010b + 2016: 09d1 addi s3,s3,20 + 2018: 0000 unimp + 201a: 5a04 lw s1,48(a2) + 201c: 5a0e lw s4,224(sp) + 201e: 0000 unimp + 2020: 0400 addi s0,sp,512 + 2022: 0001 nop + 2024: 0004 0x4 + 2026: 9c0d 0x9c0d + 2028: 0002 c.slli64 zero + 202a: 0800 addi s0,sp,16 + 202c: 4c04 lw s1,24(s0) + 202e: 00017f07 0x17f07 + 2032: 0e00 addi s0,sp,784 + 2034: 6c66 flw fs8,88(sp) + 2036: 0074 addi a3,sp,12 + 2038: 4e04 lw s1,24(a2) + 203a: fc0a fsw ft2,56(sp) + 203c: 0000 unimp + 203e: 0f00 addi s0,sp,912 + 2040: 02d9 addi t0,t0,22 + 2042: 0000 unimp + 2044: 5c04 lw s1,56(s0) + 2046: 0f05 addi t5,t5,1 + 2048: 0001 nop + 204a: 0000 unimp + 204c: 7a10 flw fa2,48(a2) + 204e: 01000007 0x1000007 + 2052: 0125 addi sp,sp,9 + 2054: 00fc addi a5,sp,76 + 2056: 0000 unimp + 2058: 2d90 fld fa2,24(a1) + 205a: 8000 0x8000 + 205c: 00d8 addi a4,sp,68 + 205e: 0000 unimp + 2060: 9c01 0x9c01 + 2062: 029d addi t0,t0,7 + 2064: 0000 unimp + 2066: 6111 addi sp,sp,256 + 2068: 0100 addi s0,sp,128 + 206a: 1725 addi a4,a4,-23 + 206c: 0090 addi a2,sp,64 + 206e: 0000 unimp + 2070: 43fe lw t2,220(sp) + 2072: 0000 unimp + 2074: df12 sw tp,188(sp) + 2076: 0000 unimp + 2078: 0100 addi s0,sp,128 + 207a: 002c0327 0x2c0327 + 207e: 0000 unimp + 2080: 4421 li s0,8 + 2082: 0000 unimp + 2084: 0002de13 srli t3,t0,0x0 + 2088: 0100 addi s0,sp,128 + 208a: 002c0327 0x2c0327 + 208e: 0000 unimp + 2090: 1400 addi s0,sp,544 + 2092: 5f41 li t5,-16 + 2094: 28010063 beqz sp,2314 <_start-0x7fffdcec> + 2098: 00029d03 lh s10,0(t0) + 209c: 1500 addi s0,sp,672 + 209e: 5f41 li t5,-16 + 20a0: 28010073 0x28010073 + 20a4: 00029d03 lh s10,0(t0) + 20a8: 4100 lw s0,0(a0) + 20aa: 0044 addi s1,sp,4 + 20ac: 1500 addi s0,sp,672 + 20ae: 5f41 li t5,-16 + 20b0: 0065 c.nop 25 + 20b2: 2801 jal 20c2 <_start-0x7fffdf3e> + 20b4: 00029d03 lh s10,0(t0) + 20b8: 6900 flw fs0,16(a0) + 20ba: 0044 addi s1,sp,4 + 20bc: 1500 addi s0,sp,672 + 20be: 5f41 li t5,-16 + 20c0: 0066 c.slli zero,0x19 + 20c2: 2801 jal 20d2 <_start-0x7fffdf2e> + 20c4: 0002a403 lw s0,0(t0) + 20c8: a000 fsd fs0,0(s0) + 20ca: 0044 addi s1,sp,4 + 20cc: 1400 addi s0,sp,544 + 20ce: 5f52 lw t5,52(sp) + 20d0: 29010063 beq sp,a6,2350 <_start-0x7fffdcb0> + 20d4: 00029d03 lh s10,0(t0) + 20d8: 1500 addi s0,sp,672 + 20da: 5f52 lw t5,52(sp) + 20dc: 29010073 0x29010073 + 20e0: 00029d03 lh s10,0(t0) + 20e4: 4100 lw s0,0(a0) + 20e6: 0044 addi s1,sp,4 + 20e8: 1500 addi s0,sp,672 + 20ea: 5f52 lw t5,52(sp) + 20ec: 0065 c.nop 25 + 20ee: 2901 jal 24fe <_start-0x7fffdb02> + 20f0: 00029d03 lh s10,0(t0) + 20f4: d400 sw s0,40(s0) + 20f6: 0044 addi s1,sp,4 + 20f8: 1200 addi s0,sp,288 + 20fa: 0070 addi a2,sp,12 + 20fc: 0000 unimp + 20fe: 2901 jal 250e <_start-0x7fffdaf2> + 2100: 0002a403 lw s0,0(t0) + 2104: 0000 unimp + 2106: 0045 c.nop 17 + 2108: 1200 addi s0,sp,288 + 210a: 000002e3 beqz zero,290e <_start-0x7fffd6f2> + 210e: 2901 jal 251e <_start-0x7fffdae2> + 2110: 0002a403 lw s0,0(t0) + 2114: 4000 lw s0,0(s0) + 2116: 0045 c.nop 17 + 2118: 1400 addi s0,sp,544 + 211a: 0072 c.slli zero,0x1c + 211c: 2a01 jal 222c <_start-0x7fffddd4> + 211e: fc0a fsw ft2,56(sp) + 2120: 0000 unimp + 2122: 1600 addi s0,sp,800 + 2124: 0880 addi s0,sp,80 + 2126: 0000 unimp + 2128: 026c addi a1,sp,268 + 212a: 0000 unimp + 212c: 00074d17 auipc s10,0x74 + 2130: 0100 addi s0,sp,128 + 2132: 032d addi t1,t1,11 + 2134: 00d6 slli ra,ra,0x15 + 2136: 0000 unimp + 2138: 1800 addi s0,sp,48 + 213a: 2e08 fld fa0,24(a2) + 213c: 8000 0x8000 + 213e: 0040 addi s0,sp,4 + 2140: 0000 unimp + 2142: 028a slli t0,t0,0x2 + 2144: 0000 unimp + 2146: 4012 0x4012 + 2148: 01000007 0x1000007 + 214c: 002c032f 0x2c032f + 2150: 0000 unimp + 2152: 45a4 lw s1,72(a1) + 2154: 0000 unimp + 2156: 1900 addi s0,sp,176 + 2158: 08a0 addi s0,sp,88 + 215a: 0000 unimp + 215c: 00004817 auipc a6,0x4 + 2160: 0100 addi s0,sp,128 + 2162: 01590333 add t1,s2,s5 + 2166: 0000 unimp + 2168: 0000 unimp + 216a: 0402 c.slli64 s0 + 216c: c605 beqz a2,2194 <_start-0x7fffde6c> + 216e: 0001 nop + 2170: 0200 addi s0,sp,256 + 2172: 0704 addi s1,sp,896 + 2174: 0124 addi s1,sp,136 + 2176: 0000 unimp + 2178: d800 sw s0,48(s0) + 217a: 0002 c.slli64 zero + 217c: 0400 addi s0,sp,512 + 217e: f700 fsw fs0,40(a4) + 2180: 000a c.slli zero,0x2 + 2182: 0400 addi s0,sp,512 + 2184: e501 bnez a0,218c <_start-0x7fffde74> + 2186: 0001 nop + 2188: 0c00 addi s0,sp,528 + 218a: 07bd addi a5,a5,15 + 218c: 0000 unimp + 218e: 014c addi a1,sp,132 + 2190: 0000 unimp + 2192: 2e68 fld fa0,216(a2) + 2194: 8000 0x8000 + 2196: 0180 addi s0,sp,192 + 2198: 0000 unimp + 219a: 0000472f 0x472f + 219e: 0802 c.slli64 a6 + 21a0: a304 fsd fs1,0(a4) + 21a2: 0008 0x8 + 21a4: 0200 addi s0,sp,256 + 21a6: 0404 addi s1,sp,512 + 21a8: 00000b1b 0xb1b + 21ac: 69050403 lb s0,1680(a0) # e204 <_start-0x7fff1dfc> + 21b0: 746e flw fs0,248(sp) + 21b2: 0200 addi s0,sp,256 + 21b4: 0601 addi a2,a2,0 + 21b6: 00000077 0x77 + 21ba: 0802 c.slli64 a6 + 21bc: c105 beqz a0,21dc <_start-0x7fffde24> + 21be: 0001 nop + 21c0: 0400 addi s0,sp,512 + 21c2: 0108 addi a0,sp,128 + 21c4: 0000 unimp + 21c6: 4a02 lw s4,0(sp) + 21c8: 1601 addi a2,a2,-32 + 21ca: 005a c.slli zero,0x16 + 21cc: 0000 unimp + 21ce: 4805 li a6,1 + 21d0: 0000 unimp + 21d2: 0200 addi s0,sp,256 + 21d4: 0801 addi a6,a6,0 + 21d6: 0075 c.nop 29 + 21d8: 0000 unimp + 21da: 0402 c.slli64 s0 + 21dc: 00012907 flw fs2,0(sp) + 21e0: 0200 addi s0,sp,256 + 21e2: 0708 addi a0,sp,896 + 21e4: 011f 0000 0202 0x2020000011f + 21ea: 0000ad07 flw fs10,0(ra) + 21ee: 0600 addi s0,sp,768 + 21f0: 0055 c.nop 21 + 21f2: 0000 unimp + 21f4: 0086 slli ra,ra,0x1 + 21f6: 0000 unimp + 21f8: 00006107 0x6107 + 21fc: ff00 fsw fs0,56(a4) + 21fe: 0500 addi s0,sp,640 + 2200: 0076 c.slli zero,0x1d + 2202: 0000 unimp + 2204: 1008 addi a0,sp,32 + 2206: 0001 nop + 2208: 0500 addi s0,sp,640 + 220a: 163c addi a5,sp,808 + 220c: 0086 slli ra,ra,0x1 + 220e: 0000 unimp + 2210: 7309 lui t1,0xfffe2 + 2212: 03000007 0x3000007 + 2216: 0f45 addi t5,t5,17 + 2218: 002c addi a1,sp,8 + 221a: 0000 unimp + 221c: 040a slli s0,s0,0x2 + 221e: dd034a03 lbu s4,-560(t1) # fffe1dd0 <__global_pointer$+0x7ffdcff8> + 2222: 0000 unimp + 2224: 0b00 addi s0,sp,400 + 2226: 0762 slli a4,a4,0x18 + 2228: 0000 unimp + 222a: 610e5103 lhu sp,1552(t3) # 1a610 <_start-0x7ffe59f0> + 222e: 0000 unimp + 2230: 0400 addi s0,sp,512 + 2232: 0c000917 auipc s2,0xc000 + 2236: 7865 lui a6,0xffff9 + 2238: 0070 addi a2,sp,12 + 223a: 610e5203 lhu tp,1552(t3) + 223e: 0000 unimp + 2240: 0400 addi s0,sp,512 + 2242: 0108 addi a0,sp,128 + 2244: 0b00 addi s0,sp,400 + 2246: 09d1 addi s3,s3,20 + 2248: 0000 unimp + 224a: 610e5303 lhu t1,1552(t3) + 224e: 0000 unimp + 2250: 0400 addi s0,sp,512 + 2252: 0001 nop + 2254: 0000 unimp + 2256: 670d lui a4,0x3 + 2258: 04000007 0x4000007 + 225c: 03074703 lbu a4,48(a4) # 3030 <_start-0x7fffcfd0> + 2260: 0001 nop + 2262: 0e00 addi s0,sp,784 + 2264: 6c66 flw fs8,88(sp) + 2266: 0074 addi a3,sp,12 + 2268: 970a4903 lbu s2,-1680(s4) + 226c: 0000 unimp + 226e: 0f00 addi s0,sp,912 + 2270: 02d9 addi t0,t0,22 + 2272: 0000 unimp + 2274: a3055503 lhu a0,-1488(a0) + 2278: 0000 unimp + 227a: 0000 unimp + 227c: 5b09 li s6,-30 + 227e: 0000 unimp + 2280: 0400 addi s0,sp,512 + 2282: 0f48 addi a0,sp,916 + 2284: 0025 c.nop 9 + 2286: 0000 unimp + 2288: 080a slli a6,a6,0x2 + 228a: 4f04 lw s1,24(a4) + 228c: 00015903 lhu s2,0(sp) + 2290: 0b00 addi s0,sp,400 + 2292: 003c addi a5,sp,8 + 2294: 0000 unimp + 2296: 5704 lw s1,40(a4) + 2298: 610e flw ft2,192(sp) + 229a: 0000 unimp + 229c: 0400 addi s0,sp,512 + 229e: 0020 addi s0,sp,8 + 22a0: 0b00 addi s0,sp,400 + 22a2: 0042 c.slli zero,0x10 + 22a4: 0000 unimp + 22a6: 5804 lw s1,48(s0) + 22a8: 610e flw ft2,192(sp) + 22aa: 0000 unimp + 22ac: 0400 addi s0,sp,512 + 22ae: 0c14 addi a3,sp,528 + 22b0: 0c04 addi s1,sp,528 + 22b2: 7865 lui a6,0xffff9 + 22b4: 0070 addi a2,sp,12 + 22b6: 5904 lw s1,48(a0) + 22b8: 610e flw ft2,192(sp) + 22ba: 0000 unimp + 22bc: 0400 addi s0,sp,512 + 22be: 0b04010b 0xb04010b + 22c2: 09d1 addi s3,s3,20 + 22c4: 0000 unimp + 22c6: 5a04 lw s1,48(a2) + 22c8: 610e flw ft2,192(sp) + 22ca: 0000 unimp + 22cc: 0400 addi s0,sp,512 + 22ce: 0001 nop + 22d0: 0004 0x4 + 22d2: 9c0d 0x9c0d + 22d4: 0002 c.slli64 zero + 22d6: 0800 addi s0,sp,16 + 22d8: 4c04 lw s1,24(s0) + 22da: 00017f07 0x17f07 + 22de: 0e00 addi s0,sp,784 + 22e0: 6c66 flw fs8,88(sp) + 22e2: 0074 addi a3,sp,12 + 22e4: 4e04 lw s1,24(a2) + 22e6: 030a slli t1,t1,0x2 + 22e8: 0001 nop + 22ea: 0f00 addi s0,sp,912 + 22ec: 02d9 addi t0,t0,22 + 22ee: 0000 unimp + 22f0: 5c04 lw s1,56(s0) + 22f2: 0f05 addi t5,t5,1 + 22f4: 0001 nop + 22f6: 0000 unimp + 22f8: 9b10 0x9b10 + 22fa: 01000007 0x1000007 + 22fe: 0124 addi s1,sp,136 + 2300: 00000097 auipc ra,0x0 + 2304: 2e68 fld fa0,216(a2) + 2306: 8000 0x8000 + 2308: 0180 addi s0,sp,192 + 230a: 0000 unimp + 230c: 9c01 0x9c01 + 230e: 02cd addi t0,t0,19 + 2310: 0000 unimp + 2312: 6111 addi sp,sp,256 + 2314: 0100 addi s0,sp,128 + 2316: 1624 addi s1,sp,808 + 2318: 00000103 lb sp,0(zero) # 0 <_start-0x80000000> + 231c: 45c2 lw a1,16(sp) + 231e: 0000 unimp + 2320: df12 sw tp,188(sp) + 2322: 0000 unimp + 2324: 0100 addi s0,sp,128 + 2326: 0326 slli t1,t1,0x9 + 2328: 00000033 add zero,zero,zero + 232c: 464a lw a2,144(sp) + 232e: 0000 unimp + 2330: 0002de13 srli t3,t0,0x0 + 2334: 0100 addi s0,sp,128 + 2336: 0326 slli t1,t1,0x9 + 2338: 00000033 add zero,zero,zero + 233c: 1400 addi s0,sp,544 + 233e: 5f41 li t5,-16 + 2340: 27010063 beq sp,a6,25a0 <_start-0x7fffda60> + 2344: 0002cd03 lbu s10,0(t0) + 2348: 1500 addi s0,sp,672 + 234a: 5f41 li t5,-16 + 234c: 27010073 0x27010073 + 2350: 0002cd03 lbu s10,0(t0) + 2354: 8e00 0x8e00 + 2356: 0046 c.slli zero,0x11 + 2358: 1500 addi s0,sp,672 + 235a: 5f41 li t5,-16 + 235c: 0065 c.nop 25 + 235e: 2701 jal 2a5e <_start-0x7fffd5a2> + 2360: 0002cd03 lbu s10,0(t0) + 2364: ac00 fsd fs0,24(s0) + 2366: 0046 c.slli zero,0x11 + 2368: 1200 addi s0,sp,288 + 236a: 00000103 lb sp,0(zero) # 0 <_start-0x80000000> + 236e: 2701 jal 2a6e <_start-0x7fffd592> + 2370: 0002d403 lhu s0,0(t0) + 2374: fc00 fsw fs0,56(s0) + 2376: 0046 c.slli zero,0x11 + 2378: 1200 addi s0,sp,288 + 237a: 00c0 addi s0,sp,68 + 237c: 0000 unimp + 237e: 2701 jal 2a7e <_start-0x7fffd582> + 2380: 0002d403 lhu s0,0(t0) + 2384: 5c00 lw s0,56(s0) + 2386: 14000047 0x14000047 + 238a: 5f52 lw t5,52(sp) + 238c: 28010063 beqz sp,260c <_start-0x7fffd9f4> + 2390: 0002cd03 lbu s10,0(t0) + 2394: 1600 addi s0,sp,800 + 2396: 5f52 lw t5,52(sp) + 2398: 28010073 0x28010073 + 239c: 0002cd03 lbu s10,0(t0) + 23a0: 0100 addi s0,sp,128 + 23a2: 5f52155b 0x5f52155b + 23a6: 0065 c.nop 25 + 23a8: 2801 jal 23b8 <_start-0x7fffdc48> + 23aa: 0002cd03 lbu s10,0(t0) + 23ae: de00 sw s0,56(a2) + 23b0: 15000047 0x15000047 + 23b4: 5f52 lw t5,52(sp) + 23b6: 0066 c.slli zero,0x19 + 23b8: 2801 jal 23c8 <_start-0x7fffdc38> + 23ba: 0002d403 lhu s0,0(t0) + 23be: 6900 flw fs0,16(a0) + 23c0: 0048 addi a0,sp,4 + 23c2: 1500 addi s0,sp,672 + 23c4: 0072 c.slli zero,0x1c + 23c6: 2901 jal 27d6 <_start-0x7fffd82a> + 23c8: 970a add a4,a4,sp + 23ca: 0000 unimp + 23cc: e400 fsw fs0,8(s0) + 23ce: 0048 addi a0,sp,4 + 23d0: 1700 addi s0,sp,928 + 23d2: 08b8 addi a4,sp,88 + 23d4: 0000 unimp + 23d6: 026e slli tp,tp,0x1b + 23d8: 0000 unimp + 23da: 8318 0x8318 + 23dc: 0000 unimp + 23de: 0100 addi s0,sp,128 + 23e0: 032c addi a1,sp,392 + 23e2: 0159 addi sp,sp,22 + 23e4: 0000 unimp + 23e6: 1700 addi s0,sp,928 + 23e8: 08d8 addi a4,sp,84 + 23ea: 0000 unimp + 23ec: 02b6 slli t0,t0,0xd + 23ee: 0000 unimp + 23f0: a818 fsd fa4,16(s0) + 23f2: 0002 c.slli64 zero + 23f4: 0100 addi s0,sp,128 + 23f6: 0332 slli t1,t1,0xc + 23f8: 00000033 add zero,zero,zero + 23fc: 1819 addi a6,a6,-26 + 23fe: 00c5 addi ra,ra,17 + 2400: 0000 unimp + 2402: 3201 jal 1d02 <_start-0x7fffe2fe> + 2404: 0002cd03 lbu s10,0(t0) + 2408: 1800 addi s0,sp,48 + 240a: 0098 addi a4,sp,64 + 240c: 0000 unimp + 240e: 3201 jal 1d0e <_start-0x7fffe2f2> + 2410: 0002cd03 lbu s10,0(t0) + 2414: 1800 addi s0,sp,48 + 2416: 00e9 addi ra,ra,26 + 2418: 0000 unimp + 241a: 3201 jal 1d1a <_start-0x7fffe2e6> + 241c: 0002cd03 lbu s10,0(t0) + 2420: 1800 addi s0,sp,48 + 2422: 07a8 addi a0,sp,968 + 2424: 0000 unimp + 2426: 3201 jal 1d26 <_start-0x7fffe2da> + 2428: 0002d403 lhu s0,0(t0) + 242c: 0000 unimp + 242e: 1a00 addi s0,sp,304 + 2430: 2fa0 fld fs0,88(a5) + 2432: 8000 0x8000 + 2434: 001c 0x1c + 2436: 0000 unimp + 2438: 8818 0x8818 + 243a: 01000007 0x1000007 + 243e: 0332 slli t1,t1,0xc + 2440: 00dd addi ra,ra,23 + 2442: 0000 unimp + 2444: 0000 unimp + 2446: 0402 c.slli64 s0 + 2448: c605 beqz a2,2470 <_start-0x7fffdb90> + 244a: 0001 nop + 244c: 0200 addi s0,sp,256 + 244e: 0704 addi s1,sp,896 + 2450: 0124 addi s1,sp,136 + 2452: 0000 unimp + 2454: d300 sw s0,32(a4) + 2456: 0400000b 0x400000b + 245a: 7f00 flw fs0,56(a4) + 245c: 000c 0xc + 245e: 0400 addi s0,sp,512 + 2460: e501 bnez a0,2468 <_start-0x7fffdb98> + 2462: 0001 nop + 2464: 0c00 addi s0,sp,528 + 2466: 0b85 addi s7,s7,1 + 2468: 0000 unimp + 246a: 014c addi a1,sp,132 + 246c: 0000 unimp + 246e: 2fe8 fld fa0,216(a5) + 2470: 8000 0x8000 + 2472: 004c addi a1,sp,4 + 2474: 0000 unimp + 2476: 4bba lw s7,140(sp) + 2478: 0000 unimp + 247a: 0402 c.slli64 s0 + 247c: 6905 lui s2,0x1 + 247e: 746e flw fs0,248(sp) + 2480: 0300 addi s0,sp,384 + 2482: 0704 addi s1,sp,896 + 2484: 0129 addi sp,sp,10 + 2486: 0000 unimp + 2488: c1050803 lb a6,-1008(a0) + 248c: 0001 nop + 248e: 0300 addi s0,sp,384 + 2490: 0410 addi a2,sp,512 + 2492: 089e slli a7,a7,0x7 + 2494: 0000 unimp + 2496: 77060103 lb sp,1904(a2) # 7ff00770 <_start-0xff890> + 249a: 0000 unimp + 249c: 0300 addi s0,sp,384 + 249e: 0801 addi a6,a6,0 + 24a0: 0075 c.nop 29 + 24a2: 0000 unimp + 24a4: ef050203 lb tp,-272(a0) + 24a8: 03000007 0x3000007 + 24ac: 0702 c.slli64 a4 + 24ae: 00ad addi ra,ra,11 + 24b0: 0000 unimp + 24b2: c6050403 lb s0,-928(a0) + 24b6: 0001 nop + 24b8: 0300 addi s0,sp,384 + 24ba: 0704 addi s1,sp,896 + 24bc: 0124 addi s1,sp,136 + 24be: 0000 unimp + 24c0: 1f070803 lb a6,496(a4) + 24c4: 0001 nop + 24c6: 0400 addi s0,sp,512 + 24c8: 0a82 c.slli64 s5 + 24ca: 0000 unimp + 24cc: 5e02 lw t3,32(sp) + 24ce: 1701 addi a4,a4,-32 + 24d0: 002c addi a1,sp,8 + 24d2: 0000 unimp + 24d4: 4705 li a4,1 + 24d6: 0300000b 0x300000b + 24da: 0e2e slli t3,t3,0xb + 24dc: 005d c.nop 23 + 24de: 0000 unimp + 24e0: a905 j 2910 <_start-0x7fffd6f0> + 24e2: 000c 0xc + 24e4: 0300 addi s0,sp,384 + 24e6: 0e74 addi a3,sp,796 + 24e8: 005d c.nop 23 + 24ea: 0000 unimp + 24ec: 4305 li t1,1 + 24ee: 000d c.nop 3 + 24f0: 0300 addi s0,sp,384 + 24f2: 00251793 slli a5,a0,0x2 + 24f6: 0000 unimp + 24f8: 0406 slli s0,s0,0x1 + 24fa: c503a503 lw a0,-944(t2) + 24fe: 0000 unimp + 2500: 0700 addi s0,sp,896 + 2502: 0a74 addi a3,sp,284 + 2504: 0000 unimp + 2506: 720ca703 lw a4,1824(s9) + 250a: 0000 unimp + 250c: 0700 addi s0,sp,896 + 250e: 00000a1b 0xa1b + 2512: c513a803 lw a6,-943(t2) + 2516: 0000 unimp + 2518: 0000 unimp + 251a: 4808 lw a0,16(s0) + 251c: 0000 unimp + 251e: d500 sw s0,40(a0) + 2520: 0000 unimp + 2522: 0900 addi s0,sp,144 + 2524: 002c addi a1,sp,8 + 2526: 0000 unimp + 2528: 080a0003 lb zero,128(s4) + 252c: f909a203 lw tp,-112(s3) # 7fff90 <_start-0x7f800070> + 2530: 0000 unimp + 2532: 0b00 addi s0,sp,400 + 2534: 00000c93 li s9,0 + 2538: 2507a403 lw s0,592(a5) + 253c: 0000 unimp + 253e: 0000 unimp + 2540: 000c9b0b 0xc9b0b + 2544: 0300 addi s0,sp,384 + 2546: 05a9 addi a1,a1,10 + 2548: 000000a3 sb zero,1(zero) # 1 <_start-0x7fffffff> + 254c: 0004 0x4 + 254e: 6205 lui tp,0x1 + 2550: 0300000b 0x300000b + 2554: 03aa slli t2,t2,0xa + 2556: 00d5 addi ra,ra,21 + 2558: 0000 unimp + 255a: 040c addi a1,sp,512 + 255c: f405 bnez s0,2484 <_start-0x7fffdb7c> + 255e: 000c 0xc + 2560: 0400 addi s0,sp,512 + 2562: 1916 slli s2,s2,0x25 + 2564: 0064 addi s1,sp,12 + 2566: 0000 unimp + 2568: 6d05 lui s10,0x1 + 256a: 0500000b 0x500000b + 256e: 0d0c addi a1,sp,656 + 2570: 0025 c.nop 9 + 2572: 0000 unimp + 2574: e305 bnez a4,2594 <_start-0x7fffda6c> + 2576: 0400000b 0x400000b + 257a: 01131b23 sh a7,22(t1) + 257e: 0000 unimp + 2580: de0d beqz a2,24ba <_start-0x7fffdb46> + 2582: 0009 c.nop 2 + 2584: 1800 addi s0,sp,48 + 2586: 3404 fld fs1,40(s0) + 2588: 8508 0x8508 + 258a: 0001 nop + 258c: 0b00 addi s0,sp,400 + 258e: 0c36 slli s8,s8,0xd + 2590: 0000 unimp + 2592: 3604 fld fs1,40(a2) + 2594: 00018513 mv a0,gp + 2598: 0000 unimp + 259a: 5f0e lw t5,224(sp) + 259c: 3704006b 0x3704006b + 25a0: 00002507 flw fa0,0(zero) # 0 <_start-0x80000000> + 25a4: 0400 addi s0,sp,512 + 25a6: 000c7e0b 0xc7e0b + 25aa: 0400 addi s0,sp,512 + 25ac: 00250b37 lui s6,0x250 + 25b0: 0000 unimp + 25b2: 0b08 addi a0,sp,400 + 25b4: 09d0 addi a2,sp,212 + 25b6: 0000 unimp + 25b8: 3704 fld fs1,40(a4) + 25ba: 2514 fld fa3,8(a0) + 25bc: 0000 unimp + 25be: 0c00 addi s0,sp,528 + 25c0: 00094c0b 0x94c0b + 25c4: 0400 addi s0,sp,512 + 25c6: 00251b37 lui s6,0x251 + 25ca: 0000 unimp + 25cc: 0e10 addi a2,sp,784 + 25ce: 785f 0400 0b38 0xb380400785f + 25d4: 0000018b 0x18b + 25d8: 0014 0x14 + 25da: 012b040f 0x12b040f + 25de: 0000 unimp + 25e0: 0708 addi a0,sp,896 + 25e2: 0001 nop + 25e4: 9b00 0x9b00 + 25e6: 0001 nop + 25e8: 0900 addi s0,sp,144 + 25ea: 002c addi a1,sp,8 + 25ec: 0000 unimp + 25ee: 0000 unimp + 25f0: fe0d bnez a2,252a <_start-0x7fffdad6> + 25f2: 0009 c.nop 2 + 25f4: 2400 fld fs0,8(s0) + 25f6: 3c04 fld fs1,56(s0) + 25f8: 1e08 addi a0,sp,816 + 25fa: 0002 c.slli64 zero + 25fc: 0b00 addi s0,sp,400 + 25fe: 08e4 addi s1,sp,92 + 2600: 0000 unimp + 2602: 3e04 fld fs1,56(a2) + 2604: 2509 jal 2c06 <_start-0x7fffd3fa> + 2606: 0000 unimp + 2608: 0000 unimp + 260a: 000d970b 0xd970b + 260e: 0400 addi s0,sp,512 + 2610: 0025093f 0b040000 0xb0400000025093f + 2618: 0900 addi s0,sp,144 + 261a: 0000 unimp + 261c: 4004 lw s1,0(s0) + 261e: 2509 jal 2c20 <_start-0x7fffd3e0> + 2620: 0000 unimp + 2622: 0800 addi s0,sp,16 + 2624: 000dd30b 0xdd30b + 2628: 0400 addi s0,sp,512 + 262a: 0941 addi s2,s2,16 + 262c: 0025 c.nop 9 + 262e: 0000 unimp + 2630: 0b0c addi a1,sp,400 + 2632: 0b21 addi s6,s6,8 + 2634: 0000 unimp + 2636: 4204 lw s1,0(a2) + 2638: 2509 jal 2c3a <_start-0x7fffd3c6> + 263a: 0000 unimp + 263c: 1000 addi s0,sp,32 + 263e: 000aca0b 0xaca0b + 2642: 0400 addi s0,sp,512 + 2644: 00250943 fmadd.s fs2,fa0,ft2,ft0,rne + 2648: 0000 unimp + 264a: 0b14 addi a3,sp,400 + 264c: 0d2c addi a1,sp,664 + 264e: 0000 unimp + 2650: 4404 lw s1,8(s0) + 2652: 2509 jal 2c54 <_start-0x7fffd3ac> + 2654: 0000 unimp + 2656: 1800 addi s0,sp,48 + 2658: 000bec0b 0xbec0b + 265c: 0400 addi s0,sp,512 + 265e: 0945 addi s2,s2,17 + 2660: 0025 c.nop 9 + 2662: 0000 unimp + 2664: 0b1c addi a5,sp,400 + 2666: 0d7d addi s10,s10,31 + 2668: 0000 unimp + 266a: 4604 lw s1,8(a2) + 266c: 2509 jal 2c6e <_start-0x7fffd392> + 266e: 0000 unimp + 2670: 2000 fld fs0,0(s0) + 2672: 1000 addi s0,sp,32 + 2674: 091f 0000 0108 0x1080000091f + 267a: 4f04 lw s1,24(a4) + 267c: 6308 flw fa0,0(a4) + 267e: 0002 c.slli64 zero + 2680: 0b00 addi s0,sp,400 + 2682: 000009c3 fmadd.s fs3,ft0,ft0,ft0,rne + 2686: 5004 lw s1,32(s0) + 2688: 630a flw ft6,128(sp) + 268a: 0002 c.slli64 zero + 268c: 0000 unimp + 268e: 000bbf0b 0xbbf0b + 2692: 0400 addi s0,sp,512 + 2694: 0951 addi s2,s2,20 + 2696: 00000263 beqz zero,269a <_start-0x7fffd966> + 269a: 1180 addi s0,sp,224 + 269c: 0ce6 slli s9,s9,0x19 + 269e: 0000 unimp + 26a0: 5304 lw s1,32(a4) + 26a2: 070a slli a4,a4,0x2 + 26a4: 0001 nop + 26a6: 0000 unimp + 26a8: 1101 addi sp,sp,-32 + 26aa: 0944 addi s1,sp,148 + 26ac: 0000 unimp + 26ae: 5604 lw s1,40(a2) + 26b0: 070a slli a4,a4,0x2 + 26b2: 0001 nop + 26b4: 0400 addi s0,sp,512 + 26b6: 0001 nop + 26b8: 0508 addi a0,sp,640 + 26ba: 0001 nop + 26bc: 7300 flw fs0,32(a4) + 26be: 0002 c.slli64 zero + 26c0: 0900 addi s0,sp,144 + 26c2: 002c addi a1,sp,8 + 26c4: 0000 unimp + 26c6: 001f 2a10 000b 0xb2a10001f + 26cc: 9000 0x9000 + 26ce: 0401 addi s0,s0,0 + 26d0: 0862 slli a6,a6,0x18 + 26d2: 02b6 slli t0,t0,0xd + 26d4: 0000 unimp + 26d6: 000c360b 0xc360b + 26da: 0400 addi s0,sp,512 + 26dc: 02b61263 bne a2,a1,2700 <_start-0x7fffd900> + 26e0: 0000 unimp + 26e2: 0b00 addi s0,sp,400 + 26e4: 0c4e slli s8,s8,0x13 + 26e6: 0000 unimp + 26e8: 6404 flw fs1,8(s0) + 26ea: 2506 fld fa0,64(sp) + 26ec: 0000 unimp + 26ee: 0400 addi s0,sp,512 + 26f0: 0009cb0b 0x9cb0b + 26f4: 0400 addi s0,sp,512 + 26f6: 0966 slli s2,s2,0x19 + 26f8: 02bc addi a5,sp,328 + 26fa: 0000 unimp + 26fc: 0b08 addi a0,sp,400 + 26fe: 091f 0000 6704 0x67040000091f + 2704: 1e1e slli t3,t3,0x27 + 2706: 0002 c.slli64 zero + 2708: 8800 0x8800 + 270a: 0f00 addi s0,sp,912 + 270c: 7304 flw fs1,32(a4) + 270e: 0002 c.slli64 zero + 2710: 0800 addi s0,sp,16 + 2712: 02cc addi a1,sp,324 + 2714: 0000 unimp + 2716: 02cc addi a1,sp,324 + 2718: 0000 unimp + 271a: 2c09 jal 292c <_start-0x7fffd6d4> + 271c: 0000 unimp + 271e: 1f00 addi s0,sp,944 + 2720: 0f00 addi s0,sp,912 + 2722: d204 sw s1,32(a2) + 2724: 0002 c.slli64 zero + 2726: 1200 addi s0,sp,288 + 2728: f60d bnez a2,2652 <_start-0x7fffd9ae> + 272a: 0800000b 0x800000b + 272e: 7a04 flw fs1,48(a2) + 2730: fb08 fsw fa0,48(a4) + 2732: 0002 c.slli64 zero + 2734: 0b00 addi s0,sp,400 + 2736: 08fa slli a7,a7,0x1e + 2738: 0000 unimp + 273a: 7b04 flw fs1,48(a4) + 273c: fb11 bnez a4,2650 <_start-0x7fffd9b0> + 273e: 0002 c.slli64 zero + 2740: 0000 unimp + 2742: 00080b0b 0x80b0b + 2746: 0400 addi s0,sp,512 + 2748: 067c addi a5,sp,780 + 274a: 0025 c.nop 9 + 274c: 0000 unimp + 274e: 0004 0x4 + 2750: 0048040f 0x48040f + 2754: 0000 unimp + 2756: 1f0d addi t5,t5,-29 + 2758: 000c 0xc + 275a: 6800 flw fs0,16(s0) + 275c: ba04 fsd fs1,48(a2) + 275e: 4408 lw a0,8(s0) + 2760: 0004 0x4 + 2762: 0e00 addi s0,sp,784 + 2764: 705f 0400 12bb 0x12bb0400705f + 276a: 000002fb 0x2fb + 276e: 0e00 addi s0,sp,784 + 2770: 725f 0400 07bc 0x7bc0400725f + 2776: 0025 c.nop 9 + 2778: 0000 unimp + 277a: 0e04 addi s1,sp,784 + 277c: 775f 0400 07bd 0x7bd0400775f + 2782: 0025 c.nop 9 + 2784: 0000 unimp + 2786: 0b08 addi a0,sp,400 + 2788: 093d addi s2,s2,15 + 278a: 0000 unimp + 278c: be04 fsd fs1,56(a2) + 278e: 4f09 li t5,2 + 2790: 0000 unimp + 2792: 0c00 addi s0,sp,528 + 2794: 000a2a0b 0xa2a0b + 2798: 0400 addi s0,sp,512 + 279a: 004f09bf 0e0e0000 0xe0e0000004f09bf + 27a2: 625f 0066 c004 0xc0040066625f + 27a8: d311 beqz a4,26ac <_start-0x7fffd954> + 27aa: 0002 c.slli64 zero + 27ac: 1000 addi s0,sp,32 + 27ae: 00088d0b 0x88d0b + 27b2: 0400 addi s0,sp,512 + 27b4: 07c1 addi a5,a5,16 + 27b6: 0025 c.nop 9 + 27b8: 0000 unimp + 27ba: 0b18 addi a4,sp,400 + 27bc: 092d addi s2,s2,11 + 27be: 0000 unimp + 27c0: c804 sw s1,16(s0) + 27c2: 050a slli a0,a0,0x2 + 27c4: 0001 nop + 27c6: 1c00 addi s0,sp,560 + 27c8: 000b7f0b 0xb7f0b + 27cc: 0400 addi s0,sp,512 + 27ce: 1dca slli s11,s11,0x32 + 27d0: 05c8 addi a0,sp,708 + 27d2: 0000 unimp + 27d4: 0b20 addi s0,sp,408 + 27d6: 00000ac3 fmadd.s fs5,ft0,ft0,ft0,rne + 27da: cc04 sw s1,24(s0) + 27dc: f71d bnez a4,270a <_start-0x7fffd8f6> + 27de: 0005 c.nop 1 + 27e0: 2400 fld fs0,8(s0) + 27e2: 000ca30b 0xca30b + 27e6: 0400 addi s0,sp,512 + 27e8: 061b0dcf fnmadd.q fs11,fs6,ft1,ft0,rne + 27ec: 0000 unimp + 27ee: 0b28 addi a0,sp,408 + 27f0: 08ed addi a7,a7,27 + 27f2: 0000 unimp + 27f4: d004 sw s1,32(s0) + 27f6: 3509 jal 25f8 <_start-0x7fffda08> + 27f8: 0006 c.slli zero,0x1 + 27fa: 2c00 fld fs0,24(s0) + 27fc: 5f0e lw t5,224(sp) + 27fe: 6275 lui tp,0x1d + 2800: 0400 addi s0,sp,512 + 2802: 02d311d3 fadd.d ft3,ft6,fa3,rtz + 2806: 0000 unimp + 2808: 0e30 addi a2,sp,792 + 280a: 755f 0070 d404 0xd4040070755f + 2810: fb12 fsw ft4,180(sp) + 2812: 0002 c.slli64 zero + 2814: 3800 fld fs0,48(s0) + 2816: 5f0e lw t5,224(sp) + 2818: 7275 lui tp,0xffffd + 281a: 0400 addi s0,sp,512 + 281c: 07d5 addi a5,a5,21 + 281e: 0025 c.nop 9 + 2820: 0000 unimp + 2822: 0b3c addi a5,sp,408 + 2824: 08f4 addi a3,sp,92 + 2826: 0000 unimp + 2828: d804 sw s1,48(s0) + 282a: 3b11 jal 253e <_start-0x7fffdac2> + 282c: 0006 c.slli zero,0x1 + 282e: 4000 lw s0,0(s0) + 2830: 000d6f0b 0xd6f0b + 2834: 0400 addi s0,sp,512 + 2836: 11d9 addi gp,gp,-10 + 2838: 0000064b fnmsub.s fa2,ft0,ft0,ft0,rne + 283c: 6c5f0e43 0x6c5f0e43 + 2840: 0062 c.slli zero,0x18 + 2842: dc04 sw s1,56(s0) + 2844: d311 beqz a4,2748 <_start-0x7fffd8b8> + 2846: 0002 c.slli64 zero + 2848: 4400 lw s0,8(s0) + 284a: 000cba0b 0xcba0b + 284e: 0400 addi s0,sp,512 + 2850: 07df 0025 0000 0x2507df + 2856: 0b4c addi a1,sp,404 + 2858: 0afd addi s5,s5,31 + 285a: 0000 unimp + 285c: e004 fsw fs1,0(s0) + 285e: 7f0a flw ft10,160(sp) + 2860: 0000 unimp + 2862: 5000 lw s0,32(s0) + 2864: 00084a0b 0x84a0b + 2868: 0400 addi s0,sp,512 + 286a: 046212e3 bne tp,t1,30ae <_start-0x7fffcf52> + 286e: 0000 unimp + 2870: 0b54 addi a3,sp,404 + 2872: 0a89 addi s5,s5,2 + 2874: 0000 unimp + 2876: e704 fsw fs1,8(a4) + 2878: 1f0c addi a1,sp,944 + 287a: 0001 nop + 287c: 5800 lw s0,48(s0) + 287e: 000a120b 0xa120b + 2882: 0400 addi s0,sp,512 + 2884: 0ee9 addi t4,t4,26 + 2886: 00f9 addi ra,ra,30 + 2888: 0000 unimp + 288a: 0b5c addi a5,sp,404 + 288c: 0bfd addi s7,s7,31 + 288e: 0000 unimp + 2890: ea04 fsw fs1,16(a2) + 2892: 2509 jal 2e94 <_start-0x7fffd16c> + 2894: 0000 unimp + 2896: 6400 flw fs0,8(s0) + 2898: 1300 addi s0,sp,416 + 289a: 00000097 auipc ra,0x0 + 289e: 0462 slli s0,s0,0x18 + 28a0: 0000 unimp + 28a2: 6214 flw fa3,0(a2) + 28a4: 0004 0x4 + 28a6: 1400 addi s0,sp,544 + 28a8: 0105 addi sp,sp,1 + 28aa: 0000 unimp + 28ac: b614 fsd fa3,40(a2) + 28ae: 0005 c.nop 1 + 28b0: 1400 addi s0,sp,544 + 28b2: 0025 c.nop 9 + 28b4: 0000 unimp + 28b6: 0f00 addi s0,sp,912 + 28b8: 6d04 flw fs1,24(a0) + 28ba: 0004 0x4 + 28bc: 1500 addi s0,sp,672 + 28be: 0462 slli s0,s0,0x18 + 28c0: 0000 unimp + 28c2: 8616 mv a2,t0 + 28c4: 000c 0xc + 28c6: 2800 fld fs0,16(s0) + 28c8: 0404 addi s1,sp,512 + 28ca: 0265 addi tp,tp,25 + 28cc: b608 fsd fa0,40(a2) + 28ce: 0005 c.nop 1 + 28d0: 1700 addi s0,sp,928 + 28d2: 0bdc addi a5,sp,468 + 28d4: 0000 unimp + 28d6: 6704 flw fs1,8(a4) + 28d8: 0702 c.slli64 a4 + 28da: 0025 c.nop 9 + 28dc: 0000 unimp + 28de: 1700 addi s0,sp,928 + 28e0: 0d3c addi a5,sp,664 + 28e2: 0000 unimp + 28e4: 6c04 flw fs1,24(s0) + 28e6: 0b02 c.slli64 s6 + 28e8: 000006a7 0x6a7 + 28ec: 1704 addi s1,sp,928 + 28ee: 0d24 addi s1,sp,664 + 28f0: 0000 unimp + 28f2: 6c04 flw fs1,24(s0) + 28f4: 1402 slli s0,s0,0x20 + 28f6: 000006a7 0x6a7 + 28fa: 1708 addi a0,sp,928 + 28fc: 09d6 slli s3,s3,0x15 + 28fe: 0000 unimp + 2900: 6c04 flw fs1,24(s0) + 2902: 1e02 slli t3,t3,0x20 + 2904: 000006a7 0x6a7 + 2908: 170c addi a1,sp,928 + 290a: 0c49 addi s8,s8,18 + 290c: 0000 unimp + 290e: 6e04 flw fs1,24(a2) + 2910: 0802 c.slli64 a6 + 2912: 0025 c.nop 9 + 2914: 0000 unimp + 2916: 1710 addi a2,sp,928 + 2918: 0819 addi a6,a6,6 + 291a: 0000 unimp + 291c: 6f04 flw fs1,24(a4) + 291e: 0802 c.slli64 a6 + 2920: 000008a7 0x8a7 + 2924: 1714 addi a3,sp,928 + 2926: 0c65 addi s8,s8,25 + 2928: 0000 unimp + 292a: 7204 flw fs1,32(a2) + 292c: 0702 c.slli64 a4 + 292e: 0025 c.nop 9 + 2930: 0000 unimp + 2932: 1730 addi a2,sp,936 + 2934: 00000c53 fadd.s fs8,ft0,ft0,rne + 2938: 7304 flw fs1,32(a4) + 293a: 1602 slli a2,a2,0x20 + 293c: 08bc addi a5,sp,88 + 293e: 0000 unimp + 2940: 1734 addi a3,sp,936 + 2942: 0b3c addi a5,sp,408 + 2944: 0000 unimp + 2946: 7504 flw fs1,40(a0) + 2948: 0702 c.slli64 a4 + 294a: 0025 c.nop 9 + 294c: 0000 unimp + 294e: 1738 addi a4,sp,936 + 2950: 00000c5b 0xc5b + 2954: 7704 flw fs1,40(a4) + 2956: 0a02 c.slli64 s4 + 2958: 08cd addi a7,a7,19 + 295a: 0000 unimp + 295c: 173c addi a5,sp,936 + 295e: 0a6c addi a1,sp,284 + 2960: 0000 unimp + 2962: 7a04 flw fs1,48(a2) + 2964: 1302 slli t1,t1,0x20 + 2966: 0185 addi gp,gp,1 + 2968: 0000 unimp + 296a: 1740 addi s0,sp,932 + 296c: 0958 addi a4,sp,148 + 296e: 0000 unimp + 2970: 7b04 flw fs1,48(a4) + 2972: 0702 c.slli64 a4 + 2974: 0025 c.nop 9 + 2976: 0000 unimp + 2978: 1744 addi s1,sp,932 + 297a: 0dce slli s11,s11,0x13 + 297c: 0000 unimp + 297e: 7c04 flw fs1,56(s0) + 2980: 1302 slli t1,t1,0x20 + 2982: 0185 addi gp,gp,1 + 2984: 0000 unimp + 2986: 1748 addi a0,sp,932 + 2988: 0b4e slli s6,s6,0x13 + 298a: 0000 unimp + 298c: 7d04 flw fs1,56(a0) + 298e: 1402 slli s0,s0,0x20 + 2990: 000008d3 fadd.s fa7,ft0,ft0,rne + 2994: 174c addi a1,sp,932 + 2996: 0a22 slli s4,s4,0x8 + 2998: 0000 unimp + 299a: 8004 0x8004 + 299c: 0702 c.slli64 a4 + 299e: 0025 c.nop 9 + 29a0: 0000 unimp + 29a2: 1750 addi a2,sp,932 + 29a4: 0000098f 0x98f + 29a8: 8104 0x8104 + 29aa: 0902 c.slli64 s2 + 29ac: 05b6 slli a1,a1,0xd + 29ae: 0000 unimp + 29b0: 1754 addi a3,sp,932 + 29b2: 0bd5 addi s7,s7,21 + 29b4: 0000 unimp + 29b6: a404 fsd fs1,8(s0) + 29b8: 0702 c.slli64 a4 + 29ba: 0882 c.slli64 a7 + 29bc: 0000 unimp + 29be: 1858 addi a4,sp,52 + 29c0: 0b2a slli s6,s6,0xa + 29c2: 0000 unimp + 29c4: a804 fsd fs1,16(s0) + 29c6: 1302 slli t1,t1,0x20 + 29c8: 02b6 slli t0,t0,0xd + 29ca: 0000 unimp + 29cc: 0148 addi a0,sp,132 + 29ce: 4a18 lw a4,16(a2) + 29d0: 000a c.slli zero,0x2 + 29d2: 0400 addi s0,sp,512 + 29d4: 02a9 addi t0,t0,10 + 29d6: 7312 flw ft6,36(sp) + 29d8: 0002 c.slli64 zero + 29da: 4c00 lw s0,24(s0) + 29dc: 1801 addi a6,a6,-32 + 29de: 0d56 slli s10,s10,0x15 + 29e0: 0000 unimp + 29e2: ad04 fsd fs1,24(a0) + 29e4: 0c02 c.slli64 s8 + 29e6: 08e4 addi s1,sp,92 + 29e8: 0000 unimp + 29ea: 02dc addi a5,sp,324 + 29ec: 3518 fld fa4,40(a0) + 29ee: 0009 c.nop 2 + 29f0: 0400 addi s0,sp,512 + 29f2: 02b2 slli t0,t0,0xc + 29f4: 6810 flw fa2,16(s0) + 29f6: 0006 c.slli zero,0x1 + 29f8: e000 fsw fs0,0(s0) + 29fa: 1802 slli a6,a6,0x20 + 29fc: 091a slli s2,s2,0x6 + 29fe: 0000 unimp + 2a00: b404 fsd fs1,40(s0) + 2a02: 0a02 c.slli64 s4 + 2a04: 08f0 addi a2,sp,92 + 2a06: 0000 unimp + 2a08: 02ec addi a1,sp,332 + 2a0a: 0f00 addi s0,sp,912 + 2a0c: bc04 fsd fs1,56(s0) + 2a0e: 0005 c.nop 1 + 2a10: 0300 addi s0,sp,384 + 2a12: 0801 addi a6,a6,0 + 2a14: 007e c.slli zero,0x1f + 2a16: 0000 unimp + 2a18: bc15 j 244c <_start-0x7fffdbb4> + 2a1a: 0005 c.nop 1 + 2a1c: 0f00 addi s0,sp,912 + 2a1e: 4404 lw s1,8(s0) + 2a20: 0004 0x4 + 2a22: 1300 addi s0,sp,416 + 2a24: 00000097 auipc ra,0x0 + 2a28: 05ec addi a1,sp,716 + 2a2a: 0000 unimp + 2a2c: 6214 flw fa3,0(a2) + 2a2e: 0004 0x4 + 2a30: 1400 addi s0,sp,544 + 2a32: 0105 addi sp,sp,1 + 2a34: 0000 unimp + 2a36: ec14 fsw fa3,24(s0) + 2a38: 0005 c.nop 1 + 2a3a: 1400 addi s0,sp,544 + 2a3c: 0025 c.nop 9 + 2a3e: 0000 unimp + 2a40: 0f00 addi s0,sp,912 + 2a42: c304 sw s1,0(a4) + 2a44: 0005 c.nop 1 + 2a46: 1500 addi s0,sp,672 + 2a48: 05ec addi a1,sp,716 + 2a4a: 0000 unimp + 2a4c: 05ce040f 0x5ce040f + 2a50: 0000 unimp + 2a52: 00008b13 mv s6,ra + 2a56: 1b00 addi s0,sp,432 + 2a58: 0006 c.slli zero,0x1 + 2a5a: 1400 addi s0,sp,544 + 2a5c: 0462 slli s0,s0,0x18 + 2a5e: 0000 unimp + 2a60: 0514 addi a3,sp,640 + 2a62: 0001 nop + 2a64: 1400 addi s0,sp,544 + 2a66: 0000008b 0x8b + 2a6a: 2514 fld fa3,8(a0) + 2a6c: 0000 unimp + 2a6e: 0000 unimp + 2a70: 05fd040f 0x5fd040f + 2a74: 0000 unimp + 2a76: 00002513 slti a0,zero,0 + 2a7a: 3500 fld fs0,40(a0) + 2a7c: 0006 c.slli zero,0x1 + 2a7e: 1400 addi s0,sp,544 + 2a80: 0462 slli s0,s0,0x18 + 2a82: 0000 unimp + 2a84: 0514 addi a3,sp,640 + 2a86: 0001 nop + 2a88: 0000 unimp + 2a8a: 0621040f 0x621040f + 2a8e: 0000 unimp + 2a90: 4808 lw a0,16(s0) + 2a92: 0000 unimp + 2a94: 4b00 lw s0,16(a4) + 2a96: 0006 c.slli zero,0x1 + 2a98: 0900 addi s0,sp,144 + 2a9a: 002c addi a1,sp,8 + 2a9c: 0000 unimp + 2a9e: 0002 c.slli64 zero + 2aa0: 4808 lw a0,16(s0) + 2aa2: 0000 unimp + 2aa4: 5b00 lw s0,48(a4) + 2aa6: 0006 c.slli zero,0x1 + 2aa8: 0900 addi s0,sp,144 + 2aaa: 002c addi a1,sp,8 + 2aac: 0000 unimp + 2aae: 0000 unimp + 2ab0: 5104 lw s1,32(a0) + 2ab2: 0009 c.nop 2 + 2ab4: 0400 addi s0,sp,512 + 2ab6: 0124 addi s1,sp,136 + 2ab8: 011a slli sp,sp,0x6 + 2aba: 19000003 lb zero,400(zero) # 190 <_start-0x7ffffe70> + 2abe: 0d36 slli s10,s10,0xd + 2ac0: 0000 unimp + 2ac2: 040c addi a1,sp,512 + 2ac4: 0128 addi a0,sp,136 + 2ac6: a108 fsd fa0,0(a0) + 2ac8: 0006 c.slli zero,0x1 + 2aca: 1700 addi s0,sp,928 + 2acc: 0c36 slli s8,s8,0xd + 2ace: 0000 unimp + 2ad0: 2a04 fld fs1,16(a2) + 2ad2: 1101 addi sp,sp,-32 + 2ad4: 06a1 addi a3,a3,8 + 2ad6: 0000 unimp + 2ad8: 1700 addi s0,sp,928 + 2ada: 0a3a slli s4,s4,0xe + 2adc: 0000 unimp + 2ade: 2b04 fld fs1,16(a4) + 2ae0: 0701 addi a4,a4,0 + 2ae2: 0025 c.nop 9 + 2ae4: 0000 unimp + 2ae6: 1704 addi s1,sp,928 + 2ae8: 0c05 addi s8,s8,1 + 2aea: 0000 unimp + 2aec: 2c04 fld fs1,24(s0) + 2aee: 0b01 addi s6,s6,0 + 2af0: 000006a7 0x6a7 + 2af4: 0008 0x8 + 2af6: 0668040f 0x668040f + 2afa: 0000 unimp + 2afc: 065b040f 0x65b040f + 2b00: 0000 unimp + 2b02: 1119 addi sp,sp,-26 + 2b04: 0008 0x8 + 2b06: 0e00 addi s0,sp,784 + 2b08: 4404 lw s1,8(s0) + 2b0a: 0801 addi a6,a6,0 + 2b0c: 06e6 slli a3,a3,0x19 + 2b0e: 0000 unimp + 2b10: 000c8d17 auipc s10,0xc8 + 2b14: 0400 addi s0,sp,512 + 2b16: 0145 addi sp,sp,17 + 2b18: e612 fsw ft4,12(sp) + 2b1a: 0006 c.slli zero,0x1 + 2b1c: 0000 unimp + 2b1e: 000aa517 auipc a0,0xaa + 2b22: 0400 addi s0,sp,512 + 2b24: 0146 slli sp,sp,0x11 + 2b26: e612 fsw ft4,12(sp) + 2b28: 0006 c.slli zero,0x1 + 2b2a: 0600 addi s0,sp,768 + 2b2c: 000cef17 auipc t5,0xce + 2b30: 0400 addi s0,sp,512 + 2b32: 56120147 fmsub.q ft2,ft4,ft1,fa0,rne + 2b36: 0000 unimp + 2b38: 0c00 addi s0,sp,528 + 2b3a: 0800 addi s0,sp,16 + 2b3c: 0056 c.slli zero,0x15 + 2b3e: 0000 unimp + 2b40: 06f6 slli a3,a3,0x1d + 2b42: 0000 unimp + 2b44: 2c09 jal 2d56 <_start-0x7fffd2aa> + 2b46: 0000 unimp + 2b48: 0200 addi s0,sp,256 + 2b4a: 1a00 addi s0,sp,304 + 2b4c: 04d0 addi a2,sp,580 + 2b4e: 0285 addi t0,t0,1 + 2b50: 00080b07 0x80b07 + 2b54: 1700 addi s0,sp,928 + 2b56: 0adf 0000 8704 0x870400000adf + 2b5c: 1802 slli a6,a6,0x20 + 2b5e: 002c addi a1,sp,8 + 2b60: 0000 unimp + 2b62: 1700 addi s0,sp,928 + 2b64: 0cd2 slli s9,s9,0x14 + 2b66: 0000 unimp + 2b68: 8804 0x8804 + 2b6a: 1202 slli tp,tp,0x20 + 2b6c: 05b6 slli a1,a1,0xd + 2b6e: 0000 unimp + 2b70: 1704 addi s1,sp,928 + 2b72: 0a5f 0000 8904 0x890400000a5f + 2b78: 1002 c.slli zero,0x20 + 2b7a: 0000080b 0x80b + 2b7e: 1708 addi a0,sp,928 + 2b80: 0d88 addi a0,sp,720 + 2b82: 0000 unimp + 2b84: 8a04 0x8a04 + 2b86: 1702 slli a4,a4,0x20 + 2b88: 0000019b 0x19b + 2b8c: 1724 addi s1,sp,936 + 2b8e: 09e6 slli s3,s3,0x19 + 2b90: 0000 unimp + 2b92: 8b04 0x8b04 + 2b94: 0f02 c.slli64 t5 + 2b96: 0025 c.nop 9 + 2b98: 0000 unimp + 2b9a: 1748 addi a0,sp,932 + 2b9c: 0c31 addi s8,s8,12 + 2b9e: 0000 unimp + 2ba0: 8c04 0x8c04 + 2ba2: 2c02 fld fs8,0(sp) + 2ba4: 0000006b 0x6b + 2ba8: 1750 addi a2,sp,932 + 2baa: 0da0 addi s0,sp,728 + 2bac: 0000 unimp + 2bae: 8d04 0x8d04 + 2bb0: 1a02 slli s4,s4,0x20 + 2bb2: 06ad addi a3,a3,11 + 2bb4: 0000 unimp + 2bb6: 1758 addi a4,sp,932 + 2bb8: 0c3c addi a5,sp,536 + 2bba: 0000 unimp + 2bbc: 8e04 0x8e04 + 2bbe: 1602 slli a2,a2,0x20 + 2bc0: 00f9 addi ra,ra,30 + 2bc2: 0000 unimp + 2bc4: 1768 addi a0,sp,940 + 2bc6: 0dc0 addi s0,sp,724 + 2bc8: 0000 unimp + 2bca: 8f04 0x8f04 + 2bcc: 1602 slli a2,a2,0x20 + 2bce: 00f9 addi ra,ra,30 + 2bd0: 0000 unimp + 2bd2: 1770 addi a2,sp,940 + 2bd4: 08d6 slli a7,a7,0x15 + 2bd6: 0000 unimp + 2bd8: 9004 0x9004 + 2bda: 1602 slli a2,a2,0x20 + 2bdc: 00f9 addi ra,ra,30 + 2bde: 0000 unimp + 2be0: 1778 addi a4,sp,940 + 2be2: 0d4c addi a1,sp,660 + 2be4: 0000 unimp + 2be6: 9104 0x9104 + 2be8: 1002 c.slli zero,0x20 + 2bea: 0000081b 0x81b + 2bee: 1780 addi s0,sp,992 + 2bf0: 00000a53 fadd.s fs4,ft0,ft0,rne + 2bf4: 9204 0x9204 + 2bf6: 1002 c.slli zero,0x20 + 2bf8: 0000082b 0x82b + 2bfc: 1788 addi a0,sp,992 + 2bfe: 083d addi a6,a6,15 + 2c00: 0000 unimp + 2c02: 9304 0x9304 + 2c04: 0f02 c.slli64 t5 + 2c06: 0025 c.nop 9 + 2c08: 0000 unimp + 2c0a: 17a0 addi s0,sp,1000 + 2c0c: 09a8 addi a0,sp,216 + 2c0e: 0000 unimp + 2c10: 9404 0x9404 + 2c12: 1602 slli a2,a2,0x20 + 2c14: 00f9 addi ra,ra,30 + 2c16: 0000 unimp + 2c18: 17a4 addi s1,sp,1000 + 2c1a: 000008bf 16029504 0x16029504000008bf + 2c22: 00f9 addi ra,ra,30 + 2c24: 0000 unimp + 2c26: 17ac addi a1,sp,1000 + 2c28: 00000997 auipc s3,0x0 + 2c2c: 9604 0x9604 + 2c2e: 1602 slli a2,a2,0x20 + 2c30: 00f9 addi ra,ra,30 + 2c32: 0000 unimp + 2c34: 17b4 addi a3,sp,1000 + 2c36: 0850 addi a2,sp,20 + 2c38: 0000 unimp + 2c3a: 9704 0x9704 + 2c3c: 1602 slli a2,a2,0x20 + 2c3e: 00f9 addi ra,ra,30 + 2c40: 0000 unimp + 2c42: 17bc addi a5,sp,1000 + 2c44: 087c addi a5,sp,28 + 2c46: 0000 unimp + 2c48: 9804 0x9804 + 2c4a: 1602 slli a2,a2,0x20 + 2c4c: 00f9 addi ra,ra,30 + 2c4e: 0000 unimp + 2c50: 17c4 addi s1,sp,996 + 2c52: 0bda slli s7,s7,0x16 + 2c54: 0000 unimp + 2c56: 9904 0x9904 + 2c58: 0802 c.slli64 a6 + 2c5a: 0025 c.nop 9 + 2c5c: 0000 unimp + 2c5e: 00cc addi a1,sp,68 + 2c60: bc08 fsd fa0,56(s0) + 2c62: 0005 c.nop 1 + 2c64: 1b00 addi s0,sp,432 + 2c66: 0008 0x8 + 2c68: 0900 addi s0,sp,144 + 2c6a: 002c addi a1,sp,8 + 2c6c: 0000 unimp + 2c6e: 0019 c.nop 6 + 2c70: bc08 fsd fa0,56(s0) + 2c72: 0005 c.nop 1 + 2c74: 2b00 fld fs0,16(a4) + 2c76: 0008 0x8 + 2c78: 0900 addi s0,sp,144 + 2c7a: 002c addi a1,sp,8 + 2c7c: 0000 unimp + 2c7e: bc080007 0xbc080007 + 2c82: 0005 c.nop 1 + 2c84: 3b00 fld fs0,48(a4) + 2c86: 0008 0x8 + 2c88: 0900 addi s0,sp,144 + 2c8a: 002c addi a1,sp,8 + 2c8c: 0000 unimp + 2c8e: f01a0017 auipc zero,0xf01a0 + 2c92: 9e04 0x9e04 + 2c94: 0702 c.slli64 a4 + 2c96: 0862 slli a6,a6,0x18 + 2c98: 0000 unimp + 2c9a: 000b0c17 auipc s8,0xb0 + 2c9e: 0400 addi s0,sp,512 + 2ca0: 02a1 addi t0,t0,8 + 2ca2: 0008621b 0x8621b + 2ca6: 0000 unimp + 2ca8: 0009f517 auipc a0,0x9f + 2cac: 0400 addi s0,sp,512 + 2cae: 02a2 slli t0,t0,0x8 + 2cb0: 7218 flw fa4,32(a2) + 2cb2: 0008 0x8 + 2cb4: 7800 flw fs0,48(s0) + 2cb6: 0800 addi s0,sp,16 + 2cb8: 000002fb 0x2fb + 2cbc: 0872 slli a6,a6,0x1c + 2cbe: 0000 unimp + 2cc0: 2c09 jal 2ed2 <_start-0x7fffd12e> + 2cc2: 0000 unimp + 2cc4: 1d00 addi s0,sp,688 + 2cc6: 0800 addi s0,sp,16 + 2cc8: 002c addi a1,sp,8 + 2cca: 0000 unimp + 2ccc: 0882 c.slli64 a7 + 2cce: 0000 unimp + 2cd0: 2c09 jal 2ee2 <_start-0x7fffd11e> + 2cd2: 0000 unimp + 2cd4: 1d00 addi s0,sp,688 + 2cd6: 1b00 addi s0,sp,432 + 2cd8: 04f0 addi a2,sp,588 + 2cda: a7030283 lb t0,-1424(t1) + 2cde: 0008 0x8 + 2ce0: 1c00 addi s0,sp,560 + 2ce2: 0c86 slli s9,s9,0x1 + 2ce4: 0000 unimp + 2ce6: 9a04 0x9a04 + 2ce8: 0b02 c.slli64 s6 + 2cea: 06f6 slli a3,a3,0x1d + 2cec: 0000 unimp + 2cee: 751c flw fa5,40(a0) + 2cf0: 000d c.nop 3 + 2cf2: 0400 addi s0,sp,512 + 2cf4: 3b0b02a3 sb a6,933(s6) # 2513a5 <_start-0x7fdaec5b> + 2cf8: 0008 0x8 + 2cfa: 0000 unimp + 2cfc: bc08 fsd fa0,56(s0) + 2cfe: 0005 c.nop 1 + 2d00: b700 fsd fs0,40(a4) + 2d02: 0008 0x8 + 2d04: 0900 addi s0,sp,144 + 2d06: 002c addi a1,sp,8 + 2d08: 0000 unimp + 2d0a: 0018 0x18 + 2d0c: b41d j 2732 <_start-0x7fffd8ce> + 2d0e: 0008 0x8 + 2d10: 0f00 addi s0,sp,912 + 2d12: b704 fsd fs1,40(a4) + 2d14: 0008 0x8 + 2d16: 1e00 addi s0,sp,816 + 2d18: 08cd addi a7,a7,19 + 2d1a: 0000 unimp + 2d1c: 6214 flw fa3,0(a2) + 2d1e: 0004 0x4 + 2d20: 0000 unimp + 2d22: 08c2040f 0x8c2040f + 2d26: 0000 unimp + 2d28: 0185040f 0x185040f + 2d2c: 0000 unimp + 2d2e: e41e fsw ft7,8(sp) + 2d30: 0008 0x8 + 2d32: 1400 addi s0,sp,544 + 2d34: 0025 c.nop 9 + 2d36: 0000 unimp + 2d38: 0f00 addi s0,sp,912 + 2d3a: ea04 fsw fs1,16(a2) + 2d3c: 0008 0x8 + 2d3e: 0f00 addi s0,sp,912 + 2d40: d904 sw s1,48(a0) + 2d42: 0008 0x8 + 2d44: 0800 addi s0,sp,16 + 2d46: 0000065b 0x65b + 2d4a: 0900 addi s0,sp,144 + 2d4c: 0000 unimp + 2d4e: 2c09 jal 2f60 <_start-0x7fffd0a0> + 2d50: 0000 unimp + 2d52: 0200 addi s0,sp,256 + 2d54: 1f00 addi s0,sp,944 + 2d56: 0d18 addi a4,sp,656 + 2d58: 0000 unimp + 2d5a: 3304 fld fs1,32(a4) + 2d5c: 04621703 lh a4,70(tp) # ffffd046 <__global_pointer$+0x7fff826e> + 2d60: 0000 unimp + 2d62: 111f 000d 0400 0x400000d111f + 2d68: 0334 addi a3,sp,392 + 2d6a: 681d lui a6,0x7 + 2d6c: 0004 0x4 + 2d6e: 0800 addi s0,sp,16 + 2d70: 05f2 slli a1,a1,0x1c + 2d72: 0000 unimp + 2d74: 0925 addi s2,s2,9 + 2d76: 0000 unimp + 2d78: 0020 addi s0,sp,8 + 2d7a: 1a15 addi s4,s4,-27 + 2d7c: 0009 c.nop 2 + 2d7e: 2100 fld fs0,0(a0) + 2d80: 0982 c.slli64 s3 + 2d82: 0000 unimp + 2d84: 1406 slli s0,s0,0x21 + 2d86: 2524 fld fs1,72(a0) + 2d88: 0009 c.nop 2 + 2d8a: 2100 fld fs0,0(a0) + 2d8c: 00000c27 0xc27 + 2d90: 1506 slli a0,a0,0x21 + 2d92: 2515 jal 33b6 <_start-0x7fffcc4a> + 2d94: 0000 unimp + 2d96: 0f00 addi s0,sp,912 + 2d98: 4804 lw s1,16(s0) + 2d9a: 0009 c.nop 2 + 2d9c: 1300 addi s0,sp,416 + 2d9e: 0025 c.nop 9 + 2da0: 0000 unimp + 2da2: 095c addi a5,sp,148 + 2da4: 0000 unimp + 2da6: 5c14 lw a3,56(s0) + 2da8: 0009 c.nop 2 + 2daa: 1400 addi s0,sp,544 + 2dac: 095c addi a5,sp,148 + 2dae: 0000 unimp + 2db0: 0f00 addi s0,sp,912 + 2db2: 6204 flw fs1,0(a2) + 2db4: 0009 c.nop 2 + 2db6: 2200 fld fs0,0(a2) + 2db8: 3221 jal 26c0 <_start-0x7fffd940> + 2dba: 0700000b 0x700000b + 2dbe: 05b60e67 jalr t3,91(a2) + 2dc2: 0000 unimp + 2dc4: 7a21 lui s4,0xfffe8 + 2dc6: 000a c.slli zero,0x2 + 2dc8: 0800 addi s0,sp,16 + 2dca: 0f10 addi a2,sp,912 + 2dcc: 0000097b 0x97b + 2dd0: 05b6040f 0x5b6040f + 2dd4: 0000 unimp + 2dd6: 3521 jal 2bde <_start-0x7fffd422> + 2dd8: 0800000b 0x800000b + 2ddc: 0efc addi a5,sp,860 + 2dde: 05b6 slli a1,a1,0xd + 2de0: 0000 unimp + 2de2: 0521 addi a0,a0,8 + 2de4: 0800000b 0x800000b + 2de8: 0cfd addi s9,s9,31 + 2dea: 0025 c.nop 9 + 2dec: 0000 unimp + 2dee: cb21 beqz a4,2e3e <_start-0x7fffd1c2> + 2df0: 000c 0xc + 2df2: 0800 addi s0,sp,16 + 2df4: 14fd addi s1,s1,-1 + 2df6: 0025 c.nop 9 + 2df8: 0000 unimp + 2dfa: af21 j 3512 <_start-0x7fffcaee> + 2dfc: 000d c.nop 3 + 2dfe: 0800 addi s0,sp,16 + 2e00: 1cfd addi s9,s9,-1 + 2e02: 0025 c.nop 9 + 2e04: 0000 unimp + 2e06: ba21 j 271e <_start-0x7fffd8e2> + 2e08: 000a c.slli zero,0x2 + 2e0a: 0800 addi s0,sp,16 + 2e0c: 0cff 0xcff + 2e0e: 0025 c.nop 9 + 2e10: 0000 unimp + 2e12: 5821 li a6,-24 + 2e14: 0900000b 0x900000b + 2e18: 169a slli a3,a3,0x26 + 2e1a: 005d c.nop 23 + 2e1c: 0000 unimp + 2e1e: 2421 jal 3026 <_start-0x7fffcfda> + 2e20: 0008 0x8 + 2e22: 0900 addi s0,sp,144 + 2e24: 0025159b 0x25159b + 2e28: 0000 unimp + 2e2a: b608 fsd fa0,40(a2) + 2e2c: 0005 c.nop 1 + 2e2e: e500 fsw fs0,8(a0) + 2e30: 0009 c.nop 2 + 2e32: 0900 addi s0,sp,144 + 2e34: 002c addi a1,sp,8 + 2e36: 0000 unimp + 2e38: 0001 nop + 2e3a: ce21 beqz a2,2e92 <_start-0x7fffd16e> + 2e3c: 0008 0x8 + 2e3e: 0900 addi s0,sp,144 + 2e40: 179e slli a5,a5,0x27 + 2e42: 09d5 addi s3,s3,21 + 2e44: 0000 unimp + 2e46: 3005 jal 2666 <_start-0x7fffd99a> + 2e48: 000a c.slli zero,0x2 + 2e4a: 0a00 addi s0,sp,272 + 2e4c: 162a slli a2,a2,0x2a + 2e4e: 002c addi a1,sp,8 + 2e50: 0000 unimp + 2e52: 1505 addi a0,a0,-31 + 2e54: 000c 0xc + 2e56: 0a00 addi s0,sp,272 + 2e58: 0a09152f 0xa09152f + 2e5c: 0000 unimp + 2e5e: 0a0f040f 0xa0f040f + 2e62: 0000 unimp + 2e64: 0009f113 andi sp,s3,0 + 2e68: 1e00 addi s0,sp,816 + 2e6a: 000a c.slli zero,0x2 + 2e6c: 1400 addi s0,sp,544 + 2e6e: 095c addi a5,sp,148 + 2e70: 0000 unimp + 2e72: 0500 addi s0,sp,640 + 2e74: 0ddd addi s11,s11,23 + 2e76: 0000 unimp + 2e78: 360a fld fa2,160(sp) + 2e7a: 0009420f 0x9420f + 2e7e: 2100 fld fs0,0(a0) + 2e80: 07f9 addi a5,a5,30 + 2e82: 0000 unimp + 2e84: bb0a fsd ft2,432(sp) + 2e86: fd12 fsw ft4,184(sp) + 2e88: 0009 c.nop 2 + 2e8a: 2100 fld fs0,0(a0) + 2e8c: 0cfc addi a5,sp,604 + 2e8e: 0000 unimp + 2e90: be0a fsd ft2,312(sp) + 2e92: 1e10 addi a2,sp,816 + 2e94: 000a c.slli zero,0x2 + 2e96: 2300 fld fs0,0(a4) + 2e98: 00000a03 lb s4,0(zero) # 0 <_start-0x80000000> + 2e9c: 002c0407 0x2c0407 + 2ea0: 0000 unimp + 2ea2: 7f06180b 0x7f06180b + 2ea6: 000a c.slli zero,0x2 + 2ea8: 2400 fld fs0,8(s0) + 2eaa: 0bb5 addi s7,s7,13 + 2eac: 0000 unimp + 2eae: 2400 fld fs0,8(s0) + 2eb0: 0a9a slli s5,s5,0x6 + 2eb2: 0000 unimp + 2eb4: 2401 jal 30b4 <_start-0x7fffcf4c> + 2eb6: 0ad4 addi a3,sp,340 + 2eb8: 0000 unimp + 2eba: 2402 fld fs0,0(sp) + 2ebc: 00000a8f 0xa8f + 2ec0: 0bac2403 lw s0,186(s8) # b2d54 <_start-0x7ff4d2ac> + 2ec4: 0000 unimp + 2ec6: 2404 fld fs1,8(s0) + 2ec8: 0db6 slli s11,s11,0xd + 2eca: 0000 unimp + 2ecc: 2405 jal 30ec <_start-0x7fffcf14> + 2ece: 0da5 addi s11,s11,9 + 2ed0: 0000 unimp + 2ed2: 0006 c.slli zero,0x1 + 2ed4: aa21 j 2fec <_start-0x7fffd014> + 2ed6: 0008 0x8 + 2ed8: 0b00 addi s0,sp,400 + 2eda: 1c21 addi s8,s8,-24 + 2edc: 0a42 slli s4,s4,0x10 + 2ede: 0000 unimp + 2ee0: 000aec23 0xaec23 + 2ee4: 0700 addi s0,sp,896 + 2ee6: 2c04 fld fs1,24(s0) + 2ee8: 0000 unimp + 2eea: 0b00 addi s0,sp,400 + 2eec: 0ab00623 sb a1,172(zero) # ac <_start-0x7fffff54> + 2ef0: 0000 unimp + 2ef2: 0b24 addi s1,sp,408 + 2ef4: 000c 0xc + 2ef6: 0000 unimp + 2ef8: cb24 sw s1,80(a4) + 2efa: 0100000b 0x100000b + 2efe: df24 sw s1,120(a4) + 2f00: 000c 0xc + 2f02: 0200 addi s0,sp,256 + 2f04: 2100 fld fs0,0(a0) + 2f06: 09b6 slli s3,s3,0xd + 2f08: 0000 unimp + 2f0a: 8b1e280b 0x8b1e280b + 2f0e: 000a c.slli zero,0x2 + 2f10: 2300 fld fs0,0(a4) + 2f12: 085f 0000 0407 0x4070000085f + 2f18: 002c addi a1,sp,8 + 2f1a: 0000 unimp + 2f1c: db062b0b 0xdb062b0b + 2f20: 000a c.slli zero,0x2 + 2f22: 2400 fld fs0,8(s0) + 2f24: 00000cc3 fmadd.s fs9,ft0,ft0,ft0,rne + 2f28: 2400 fld fs0,8(s0) + 2f2a: 0cb1 addi s9,s9,12 + 2f2c: 0000 unimp + 2f2e: 0001 nop + 2f30: 6a21 lui s4,0x8 + 2f32: 0009 c.nop 2 + 2f34: 0b00 addi s0,sp,400 + 2f36: 0abc2a2f amoswap.w.rl s4,a1,(s8) + 2f3a: 0000 unimp + 2f3c: ab21 j 3454 <_start-0x7fffcbac> + 2f3e: 000a c.slli zero,0x2 + 2f40: 0c00 addi s0,sp,528 + 2f42: 1a29 addi s4,s4,-22 + 2f44: 0925 addi s2,s2,9 + 2f46: 0000 unimp + 2f48: 0a21 addi s4,s4,8 + 2f4a: 0009 c.nop 2 + 2f4c: 0c00 addi s0,sp,528 + 2f4e: 1a38 addi a4,sp,312 + 2f50: 0925 addi s2,s2,9 + 2f52: 0000 unimp + 2f54: 0805 addi a6,a6,1 + 2f56: 0001 nop + 2f58: 0d00 addi s0,sp,656 + 2f5a: 0048167b 0x48167b + 2f5e: 0000 unimp + 2f60: ff15 bnez a4,2e9c <_start-0x7fffd164> + 2f62: 000a c.slli zero,0x2 + 2f64: 0500 addi s0,sp,640 + 2f66: 00000963 beqz zero,2f78 <_start-0x7fffd088> + 2f6a: 800d srli s0,s0,0x3 + 2f6c: 0000250f 0x250f + 2f70: 0500 addi s0,sp,640 + 2f72: 0962 slli s2,s2,0x18 + 2f74: 0000 unimp + 2f76: 810d srli a0,a0,0x3 + 2f78: 2c16 fld fs8,320(sp) + 2f7a: 0000 unimp + 2f7c: 0300 addi s0,sp,384 + 2f7e: 0404 addi s1,sp,512 + 2f80: 00000b1b 0xb1b + 2f84: 13030803 lb a6,304(t1) + 2f88: 0300000b 0x300000b + 2f8c: 0408 addi a0,sp,512 + 2f8e: 000008a3 sb zero,17(zero) # 11 <_start-0x7fffffef> + 2f92: 2e031003 lh zero,736(t1) + 2f96: 0008 0x8 + 2f98: 0300 addi s0,sp,384 + 2f9a: 0320 addi s0,sp,392 + 2f9c: 0896 slli a7,a7,0x5 + 2f9e: 0000 unimp + 2fa0: 0b08 addi a0,sp,400 + 2fa2: 5b00000b 0x5b00000b + 2fa6: 0900000b 0x900000b + 2faa: 002c addi a1,sp,8 + 2fac: 0000 unimp + 2fae: 00ff 0xff + 2fb0: 4b15 li s6,5 + 2fb2: 1f00000b 0x1f00000b + 2fb6: 0d60 addi s0,sp,668 + 2fb8: 0000 unimp + 2fba: fc0d bnez s0,2ef4 <_start-0x7fffd10c> + 2fbc: 1601 addi a2,a2,-32 + 2fbe: 00000b5b 0xb5b + 2fc2: 101f 0001 0d00 0xd000001101f + 2fc8: 0202 c.slli64 tp + 2fca: 5b16 lw s6,100(sp) + 2fcc: 2500000b 0x2500000b + 2fd0: 0a41 addi s4,s4,16 + 2fd2: 0000 unimp + 2fd4: c201 beqz a2,2fd4 <_start-0x7fffd02c> + 2fd6: 0102 c.slli64 sp + 2fd8: 0025 c.nop 9 + 2fda: 0000 unimp + 2fdc: 2fe8 fld fa0,216(a5) + 2fde: 8000 0x8000 + 2fe0: 004c addi a1,sp,4 + 2fe2: 0000 unimp + 2fe4: 9c01 0x9c01 + 2fe6: 7826 flw fa6,104(sp) + 2fe8: 0100 addi s0,sp,128 + 2fea: 02c2 slli t0,t0,0x10 + 2fec: 1c12 slli s8,s8,0x24 + 2fee: 0900000b 0x900000b + 2ff2: 0049 c.nop 18 + 2ff4: 2700 fld fs0,8(a4) + 2ff6: 6572 flw fa0,28(sp) + 2ff8: 0074 addi a3,sp,12 + 2ffa: c401 beqz s0,3002 <_start-0x7fffcffe> + 2ffc: 0902 c.slli64 s2 + 2ffe: 0b10 addi a2,sp,400 + 3000: 0000 unimp + 3002: f828 fsw fa0,112(s0) + 3004: 0008 0x8 + 3006: 2900 fld fs0,16(a0) + 3008: 0d0c addi a1,sp,656 + 300a: 0000 unimp + 300c: c601 beqz a2,3014 <_start-0x7fffcfec> + 300e: 0302 c.slli64 t1 + 3010: 0b1c addi a5,sp,400 + 3012: 0000 unimp + 3014: 4935 li s2,13 + 3016: 0000 unimp + 3018: 5f2a lw t5,168(sp) + 301a: 615f 0100 02c6 0x2c60100615f + 3020: 000b1c03 lh s8,0(s6) + 3024: 6100 flw fs0,0(a0) + 3026: 0049 c.nop 18 + 3028: 0000 unimp + 302a: 0000 unimp + 302c: 0b66 slli s6,s6,0x19 + 302e: 0000 unimp + 3030: 0004 0x4 + 3032: 0ec1 addi t4,t4,16 + 3034: 0000 unimp + 3036: 0104 addi s1,sp,128 + 3038: 01e5 addi gp,gp,25 + 303a: 0000 unimp + 303c: 850c 0x850c + 303e: 4c00000b 0x4c00000b + 3042: 0001 nop + 3044: 6e00 flw fs0,24(a2) + 3046: 004e c.slli zero,0x13 + 3048: 0200 addi s0,sp,256 + 304a: 0504 addi s1,sp,640 + 304c: 6e69 lui t3,0x1a + 304e: 0074 addi a3,sp,12 + 3050: 29070403 lb s0,656(a4) + 3054: 0001 nop + 3056: 0300 addi s0,sp,384 + 3058: 0508 addi a0,sp,640 + 305a: 01c1 addi gp,gp,16 + 305c: 0000 unimp + 305e: 9e041003 lh zero,-1568(s0) + 3062: 0008 0x8 + 3064: 0300 addi s0,sp,384 + 3066: 0601 addi a2,a2,0 + 3068: 00000077 0x77 + 306c: 75080103 lb sp,1872(a6) # 7750 <_start-0x7fff88b0> + 3070: 0000 unimp + 3072: 0300 addi s0,sp,384 + 3074: 0502 c.slli64 a0 + 3076: 000007ef jal a5,3076 <_start-0x7fffcf8a> + 307a: ad070203 lb tp,-1328(a4) + 307e: 0000 unimp + 3080: 0300 addi s0,sp,384 + 3082: 0504 addi s1,sp,640 + 3084: 01c6 slli gp,gp,0x11 + 3086: 0000 unimp + 3088: 24070403 lb s0,576(a4) + 308c: 0001 nop + 308e: 0300 addi s0,sp,384 + 3090: 0708 addi a0,sp,896 + 3092: 011f 0000 8204 0x82040000011f + 3098: 000a c.slli zero,0x2 + 309a: 0100 addi s0,sp,128 + 309c: 015e slli sp,sp,0x17 + 309e: 00002417 auipc s0,0x2 + 30a2: 0500 addi s0,sp,640 + 30a4: 00000b47 fmsub.s fs6,ft0,ft0,ft0,rne + 30a8: 2e02 fld ft8,0(sp) + 30aa: 550e lw a0,224(sp) + 30ac: 0000 unimp + 30ae: 0500 addi s0,sp,640 + 30b0: 0ca9 addi s9,s9,10 + 30b2: 0000 unimp + 30b4: 7402 flw fs0,32(sp) + 30b6: 550e lw a0,224(sp) + 30b8: 0000 unimp + 30ba: 0500 addi s0,sp,640 + 30bc: 00000d43 fmadd.s fs10,ft0,ft0,ft0,rne + 30c0: 9302 jalr t1 + 30c2: 00001d17 auipc s10,0x1 + 30c6: 0600 addi s0,sp,768 + 30c8: 0204 addi s1,sp,256 + 30ca: 03a5 addi t2,t2,9 + 30cc: 00bd addi ra,ra,15 + 30ce: 0000 unimp + 30d0: 000a7407 0xa7407 + 30d4: 0200 addi s0,sp,256 + 30d6: 006a0ca7 0x6a0ca7 + 30da: 0000 unimp + 30dc: 000a1b07 0xa1b07 + 30e0: 0200 addi s0,sp,256 + 30e2: 13a8 addi a0,sp,488 + 30e4: 00bd addi ra,ra,15 + 30e6: 0000 unimp + 30e8: 0800 addi s0,sp,16 + 30ea: 0040 addi s0,sp,4 + 30ec: 0000 unimp + 30ee: 00cd addi ra,ra,19 + 30f0: 0000 unimp + 30f2: 2409 jal 32f4 <_start-0x7fffcd0c> + 30f4: 0000 unimp + 30f6: 0300 addi s0,sp,384 + 30f8: 0a00 addi s0,sp,272 + 30fa: 0208 addi a0,sp,256 + 30fc: 09a2 slli s3,s3,0x8 + 30fe: 00f1 addi ra,ra,28 + 3100: 0000 unimp + 3102: 000c930b 0xc930b + 3106: 0200 addi s0,sp,256 + 3108: 07a4 addi s1,sp,968 + 310a: 001d c.nop 7 + 310c: 0000 unimp + 310e: 0b00 addi s0,sp,400 + 3110: 00000c9b 0xc9b + 3114: a902 fsd ft0,144(sp) + 3116: 9b05 andi a4,a4,-31 + 3118: 0000 unimp + 311a: 0400 addi s0,sp,512 + 311c: 0500 addi s0,sp,640 + 311e: 0b62 slli s6,s6,0x18 + 3120: 0000 unimp + 3122: aa02 fsd ft0,272(sp) + 3124: 0000cd03 lbu s10,0(ra) # 2a24 <_start-0x7fffd5dc> + 3128: 0c00 addi s0,sp,528 + 312a: 0504 addi s1,sp,640 + 312c: 0cf4 addi a3,sp,604 + 312e: 0000 unimp + 3130: 5c191603 lh a2,1473(s2) # 15c1 <_start-0x7fffea3f> + 3134: 0000 unimp + 3136: 0500 addi s0,sp,640 + 3138: 0b6d addi s6,s6,27 + 313a: 0000 unimp + 313c: 0c04 addi s1,sp,528 + 313e: 1d0d addi s10,s10,-29 + 3140: 0000 unimp + 3142: 0500 addi s0,sp,640 + 3144: 00000be3 beqz zero,395a <_start-0x7fffc6a6> + 3148: 0b1b2303 lw t1,177(s6) + 314c: 0001 nop + 314e: 0d00 addi s0,sp,656 + 3150: 09de slli s3,s3,0x17 + 3152: 0000 unimp + 3154: 0318 addi a4,sp,384 + 3156: 0834 addi a3,sp,24 + 3158: 017d addi sp,sp,31 + 315a: 0000 unimp + 315c: 000c360b 0xc360b + 3160: 0300 addi s0,sp,384 + 3162: 1336 slli t1,t1,0x2d + 3164: 017d addi sp,sp,31 + 3166: 0000 unimp + 3168: 0e00 addi s0,sp,784 + 316a: 6b5f 0300 0737 0x73703006b5f + 3170: 001d c.nop 7 + 3172: 0000 unimp + 3174: 0b04 addi s1,sp,400 + 3176: 0c7e slli s8,s8,0x1f + 3178: 0000 unimp + 317a: 1d0b3703 0x1d0b3703 + 317e: 0000 unimp + 3180: 0800 addi s0,sp,16 + 3182: 0009d00b 0x9d00b + 3186: 0300 addi s0,sp,384 + 3188: 001d1437 lui s0,0x1d1 + 318c: 0000 unimp + 318e: 0b0c addi a1,sp,400 + 3190: 094c addi a1,sp,148 + 3192: 0000 unimp + 3194: 1d1b3703 0x1d1b3703 + 3198: 0000 unimp + 319a: 1000 addi s0,sp,32 + 319c: 5f0e lw t5,224(sp) + 319e: 0078 addi a4,sp,12 + 31a0: 830b3803 0x830b3803 + 31a4: 0001 nop + 31a6: 1400 addi s0,sp,544 + 31a8: 0f00 addi s0,sp,912 + 31aa: 2304 fld fs1,0(a4) + 31ac: 0001 nop + 31ae: 0800 addi s0,sp,16 + 31b0: 00ff 0xff + 31b2: 0000 unimp + 31b4: 00000193 li gp,0 + 31b8: 2409 jal 33ba <_start-0x7fffcc46> + 31ba: 0000 unimp + 31bc: 0000 unimp + 31be: 0d00 addi s0,sp,656 + 31c0: 09fe slli s3,s3,0x1f + 31c2: 0000 unimp + 31c4: 0324 addi s1,sp,392 + 31c6: 083c addi a5,sp,24 + 31c8: 0216 slli tp,tp,0x5 + 31ca: 0000 unimp + 31cc: 0008e40b 0x8e40b + 31d0: 0300 addi s0,sp,384 + 31d2: 093e slli s2,s2,0xf + 31d4: 001d c.nop 7 + 31d6: 0000 unimp + 31d8: 0b00 addi s0,sp,400 + 31da: 00000d97 auipc s11,0x0 + 31de: 1d093f03 0x1d093f03 + 31e2: 0000 unimp + 31e4: 0400 addi s0,sp,512 + 31e6: 0009000b 0x9000b + 31ea: 0300 addi s0,sp,384 + 31ec: 0940 addi s0,sp,148 + 31ee: 001d c.nop 7 + 31f0: 0000 unimp + 31f2: 0b08 addi a0,sp,400 + 31f4: 00000dd3 fadd.s fs11,ft0,ft0,rne + 31f8: 1d094103 lbu sp,464(s2) + 31fc: 0000 unimp + 31fe: 0c00 addi s0,sp,528 + 3200: 000b210b 0xb210b + 3204: 0300 addi s0,sp,384 + 3206: 0942 slli s2,s2,0x10 + 3208: 001d c.nop 7 + 320a: 0000 unimp + 320c: 0b10 addi a2,sp,400 + 320e: 0aca slli s5,s5,0x12 + 3210: 0000 unimp + 3212: 1d094303 lbu t1,464(s2) + 3216: 0000 unimp + 3218: 1400 addi s0,sp,544 + 321a: 000d2c0b 0xd2c0b + 321e: 0300 addi s0,sp,384 + 3220: 0944 addi s1,sp,148 + 3222: 001d c.nop 7 + 3224: 0000 unimp + 3226: 0b18 addi a4,sp,400 + 3228: 0bec addi a1,sp,476 + 322a: 0000 unimp + 322c: 1d094503 lbu a0,464(s2) + 3230: 0000 unimp + 3232: 1c00 addi s0,sp,560 + 3234: 000d7d0b 0xd7d0b + 3238: 0300 addi s0,sp,384 + 323a: 0946 slli s2,s2,0x11 + 323c: 001d c.nop 7 + 323e: 0000 unimp + 3240: 0020 addi s0,sp,8 + 3242: 1f10 addi a2,sp,944 + 3244: 0009 c.nop 2 + 3246: 0800 addi s0,sp,16 + 3248: 0301 addi t1,t1,0 + 324a: 025b084f fnmadd.d fa6,fs6,ft5,ft0,rne + 324e: 0000 unimp + 3250: 0009c30b 0x9c30b + 3254: 0300 addi s0,sp,384 + 3256: 0a50 addi a2,sp,276 + 3258: 0000025b 0x25b + 325c: 0b00 addi s0,sp,400 + 325e: 00000bbf 5b095103 0x5b09510300000bbf + 3266: 0002 c.slli64 zero + 3268: 8000 0x8000 + 326a: e611 bnez a2,3276 <_start-0x7fffcd8a> + 326c: 000c 0xc + 326e: 0300 addi s0,sp,384 + 3270: 00ff0a53 fadd.s fs4,ft10,fa5,rne + 3274: 0000 unimp + 3276: 0100 addi s0,sp,128 + 3278: 4411 li s0,4 + 327a: 0009 c.nop 2 + 327c: 0300 addi s0,sp,384 + 327e: 0a56 slli s4,s4,0x15 + 3280: 00ff 0xff + 3282: 0000 unimp + 3284: 0104 addi s1,sp,128 + 3286: 0800 addi s0,sp,16 + 3288: 00fd addi ra,ra,31 + 328a: 0000 unimp + 328c: 0000026b 0x26b + 3290: 2409 jal 3492 <_start-0x7fffcb6e> + 3292: 0000 unimp + 3294: 1f00 addi s0,sp,944 + 3296: 1000 addi s0,sp,32 + 3298: 0b2a slli s6,s6,0xa + 329a: 0000 unimp + 329c: 0190 addi a2,sp,192 + 329e: ae086203 0xae086203 + 32a2: 0002 c.slli64 zero + 32a4: 0b00 addi s0,sp,400 + 32a6: 0c36 slli s8,s8,0xd + 32a8: 0000 unimp + 32aa: ae126303 0xae126303 + 32ae: 0002 c.slli64 zero + 32b0: 0000 unimp + 32b2: 000c4e0b 0xc4e0b + 32b6: 0300 addi s0,sp,384 + 32b8: 0664 addi s1,sp,780 + 32ba: 001d c.nop 7 + 32bc: 0000 unimp + 32be: 0b04 addi s1,sp,400 + 32c0: 000009cb fnmsub.s fs3,ft0,ft0,ft0,rne + 32c4: b4096603 0xb4096603 + 32c8: 0002 c.slli64 zero + 32ca: 0800 addi s0,sp,16 + 32cc: 00091f0b 0x91f0b + 32d0: 0300 addi s0,sp,384 + 32d2: 02161e67 0x2161e67 + 32d6: 0000 unimp + 32d8: 0088 addi a0,sp,64 + 32da: 026b040f 0x26b040f + 32de: 0000 unimp + 32e0: c408 sw a0,8(s0) + 32e2: 0002 c.slli64 zero + 32e4: c400 sw s0,8(s0) + 32e6: 0002 c.slli64 zero + 32e8: 0900 addi s0,sp,144 + 32ea: 0024 addi s1,sp,8 + 32ec: 0000 unimp + 32ee: 001f 040f 02ca 0x2ca040f001f + 32f4: 0000 unimp + 32f6: 0d12 slli s10,s10,0x4 + 32f8: 0bf6 slli s7,s7,0x1d + 32fa: 0000 unimp + 32fc: 0308 addi a0,sp,384 + 32fe: 087a slli a6,a6,0x1e + 3300: 000002f3 0x2f3 + 3304: 0008fa0b 0x8fa0b + 3308: 0300 addi s0,sp,384 + 330a: 02f3117b 0x2f3117b + 330e: 0000 unimp + 3310: 0b00 addi s0,sp,400 + 3312: 0000080b 0x80b + 3316: 1d067c03 0x1d067c03 + 331a: 0000 unimp + 331c: 0400 addi s0,sp,512 + 331e: 0f00 addi s0,sp,912 + 3320: 4004 lw s1,0(s0) + 3322: 0000 unimp + 3324: 0d00 addi s0,sp,656 + 3326: 0c1f 0000 0368 0x36800000c1f + 332c: 08ba slli a7,a7,0xe + 332e: 043c addi a5,sp,520 + 3330: 0000 unimp + 3332: 5f0e lw t5,224(sp) + 3334: 0070 addi a2,sp,12 + 3336: f312bb03 0xf312bb03 + 333a: 0002 c.slli64 zero + 333c: 0000 unimp + 333e: 5f0e lw t5,224(sp) + 3340: 0072 c.slli zero,0x1c + 3342: 1d07bc03 0x1d07bc03 + 3346: 0000 unimp + 3348: 0400 addi s0,sp,512 + 334a: 5f0e lw t5,224(sp) + 334c: bd030077 0xbd030077 + 3350: 00001d07 0x1d07 + 3354: 0800 addi s0,sp,16 + 3356: 00093d0b 0x93d0b + 335a: 0300 addi s0,sp,384 + 335c: 09be slli s3,s3,0xf + 335e: 00000047 fmsub.s ft0,ft0,ft0,ft0,rne + 3362: 0b0c addi a1,sp,400 + 3364: 0a2a slli s4,s4,0xa + 3366: 0000 unimp + 3368: 4709bf03 0x4709bf03 + 336c: 0000 unimp + 336e: 0e00 addi s0,sp,784 + 3370: 5f0e lw t5,224(sp) + 3372: 6662 flw fa2,24(sp) + 3374: 0300 addi s0,sp,384 + 3376: 11c0 addi s0,sp,228 + 3378: 000002cb fnmsub.s ft5,ft0,ft0,ft0,rne + 337c: 0b10 addi a2,sp,400 + 337e: 088d addi a7,a7,3 + 3380: 0000 unimp + 3382: 1d07c103 lbu sp,464(a5) + 3386: 0000 unimp + 3388: 1800 addi s0,sp,48 + 338a: 00092d0b 0x92d0b + 338e: 0300 addi s0,sp,384 + 3390: 0ac8 addi a0,sp,340 + 3392: 00fd addi ra,ra,31 + 3394: 0000 unimp + 3396: 0b1c addi a5,sp,400 + 3398: 0b7f 0xb7f + 339a: 0000 unimp + 339c: c01dca03 lbu s4,-1023(s11) # 2ddb <_start-0x7fffd225> + 33a0: 0005 c.nop 1 + 33a2: 2000 fld fs0,0(s0) + 33a4: 000ac30b 0xac30b + 33a8: 0300 addi s0,sp,384 + 33aa: 1dcc addi a1,sp,756 + 33ac: 000005ef jal a1,33ac <_start-0x7fffcc54> + 33b0: 0b24 addi s1,sp,408 + 33b2: 00000ca3 sb zero,25(zero) # 19 <_start-0x7fffffe7> + 33b6: 130dcf03 lbu t5,304(s11) + 33ba: 0006 c.slli zero,0x1 + 33bc: 2800 fld fs0,16(s0) + 33be: 0008ed0b 0x8ed0b + 33c2: 0300 addi s0,sp,384 + 33c4: 09d0 addi a2,sp,212 + 33c6: 062d addi a2,a2,11 + 33c8: 0000 unimp + 33ca: 0e2c addi a1,sp,792 + 33cc: 755f 0062 d303 0xd3030062755f + 33d2: cb11 beqz a4,33e6 <_start-0x7fffcc1a> + 33d4: 0002 c.slli64 zero + 33d6: 3000 fld fs0,32(s0) + 33d8: 5f0e lw t5,224(sp) + 33da: 7075 c.lui zero,0xffffd + 33dc: 0300 addi s0,sp,384 + 33de: 12d4 addi a3,sp,356 + 33e0: 000002f3 0x2f3 + 33e4: 0e38 addi a4,sp,792 + 33e6: 755f 0072 d503 0xd5030072755f + 33ec: 00001d07 0x1d07 + 33f0: 3c00 fld fs0,56(s0) + 33f2: 0008f40b 0x8f40b + 33f6: 0300 addi s0,sp,384 + 33f8: 11d8 addi a4,sp,228 + 33fa: 00000633 add a2,zero,zero + 33fe: 0b40 addi s0,sp,404 + 3400: 00000d6f jal s10,3400 <_start-0x7fffcc00> + 3404: 4311d903 lhu s2,1073(gp) # 80005209 <__global_pointer$+0x431> + 3408: 0006 c.slli zero,0x1 + 340a: 4300 lw s0,0(a4) + 340c: 5f0e lw t5,224(sp) + 340e: 626c flw fa1,68(a2) + 3410: 0300 addi s0,sp,384 + 3412: 11dc addi a5,sp,228 + 3414: 000002cb fnmsub.s ft5,ft0,ft0,ft0,rne + 3418: 0b44 addi s1,sp,404 + 341a: 0cba slli s9,s9,0xe + 341c: 0000 unimp + 341e: 1d07df03 lhu t5,464(a5) + 3422: 0000 unimp + 3424: 4c00 lw s0,24(s0) + 3426: 000afd0b 0xafd0b + 342a: 0300 addi s0,sp,384 + 342c: 0ae0 addi s0,sp,348 + 342e: 00000077 0x77 + 3432: 0b50 addi a2,sp,404 + 3434: 084a slli a6,a6,0x12 + 3436: 0000 unimp + 3438: 5a12e303 0x5a12e303 + 343c: 0004 0x4 + 343e: 5400 lw s0,40(s0) + 3440: 000a890b 0xa890b + 3444: 0300 addi s0,sp,384 + 3446: 01170ce7 jalr s9,17(a4) + 344a: 0000 unimp + 344c: 0b58 addi a4,sp,404 + 344e: 0a12 slli s4,s4,0x4 + 3450: 0000 unimp + 3452: f10ee903 0xf10ee903 + 3456: 0000 unimp + 3458: 5c00 lw s0,56(s0) + 345a: 000bfd0b 0xbfd0b + 345e: 0300 addi s0,sp,384 + 3460: 09ea slli s3,s3,0x1a + 3462: 001d c.nop 7 + 3464: 0000 unimp + 3466: 0064 addi s1,sp,12 + 3468: 00008f13 mv t5,ra + 346c: 5a00 lw s0,48(a2) + 346e: 0004 0x4 + 3470: 1400 addi s0,sp,544 + 3472: 045a slli s0,s0,0x16 + 3474: 0000 unimp + 3476: fd14 fsw fa3,56(a0) + 3478: 0000 unimp + 347a: 1400 addi s0,sp,544 + 347c: 05ae slli a1,a1,0xb + 347e: 0000 unimp + 3480: 1d14 addi a3,sp,688 + 3482: 0000 unimp + 3484: 0000 unimp + 3486: 0465040f 0x465040f + 348a: 0000 unimp + 348c: 5a15 li s4,-27 + 348e: 0004 0x4 + 3490: 1600 addi s0,sp,800 + 3492: 0c86 slli s9,s9,0x1 + 3494: 0000 unimp + 3496: 0428 addi a0,sp,520 + 3498: 08026503 0x8026503 + 349c: 05ae slli a1,a1,0xb + 349e: 0000 unimp + 34a0: 000bdc17 auipc s8,0xbd + 34a4: 0300 addi s0,sp,384 + 34a6: 1d070267 jalr tp,464(a4) + 34aa: 0000 unimp + 34ac: 0000 unimp + 34ae: 000d3c17 auipc s8,0xd3 + 34b2: 0300 addi s0,sp,384 + 34b4: 026c addi a1,sp,268 + 34b6: 00069f0b 0x69f0b + 34ba: 0400 addi s0,sp,512 + 34bc: 000d2417 auipc s0,0xd2 + 34c0: 0300 addi s0,sp,384 + 34c2: 026c addi a1,sp,268 + 34c4: 9f14 0x9f14 + 34c6: 0006 c.slli zero,0x1 + 34c8: 0800 addi s0,sp,16 + 34ca: 0009d617 auipc a2,0x9d + 34ce: 0300 addi s0,sp,384 + 34d0: 026c addi a1,sp,268 + 34d2: 9f1e add t5,t5,t2 + 34d4: 0006 c.slli zero,0x1 + 34d6: 0c00 addi s0,sp,528 + 34d8: 000c4917 auipc s2,0xc4 + 34dc: 0300 addi s0,sp,384 + 34de: 026e slli tp,tp,0x1b + 34e0: 1d08 addi a0,sp,688 + 34e2: 0000 unimp + 34e4: 1000 addi s0,sp,32 + 34e6: 00081917 auipc s2,0x81 + 34ea: 0300 addi s0,sp,384 + 34ec: 9f08026f jal tp,fff836dc <__global_pointer$+0x7ff7e904> + 34f0: 0008 0x8 + 34f2: 1400 addi s0,sp,544 + 34f4: 000c6517 auipc a0,0xc6 + 34f8: 0300 addi s0,sp,384 + 34fa: 0272 slli tp,tp,0x1c + 34fc: 00001d07 0x1d07 + 3500: 3000 fld fs0,32(s0) + 3502: 000c5317 auipc t1,0xc5 + 3506: 0300 addi s0,sp,384 + 3508: b4160273 0xb4160273 + 350c: 0008 0x8 + 350e: 3400 fld fs0,40(s0) + 3510: 000b3c17 auipc s8,0xb3 + 3514: 0300 addi s0,sp,384 + 3516: 0275 addi tp,tp,29 + 3518: 00001d07 0x1d07 + 351c: 3800 fld fs0,48(s0) + 351e: 000c5b17 auipc s6,0xc5 + 3522: 0300 addi s0,sp,384 + 3524: c50a0277 0xc50a0277 + 3528: 0008 0x8 + 352a: 3c00 fld fs0,56(s0) + 352c: 000a6c17 auipc s8,0xa6 + 3530: 0300 addi s0,sp,384 + 3532: 027a slli tp,tp,0x1e + 3534: 00017d13 andi s10,sp,0 + 3538: 4000 lw s0,0(s0) + 353a: 00095817 auipc a6,0x95 + 353e: 0300 addi s0,sp,384 + 3540: 1d07027b 0x1d07027b + 3544: 0000 unimp + 3546: 4400 lw s0,8(s0) + 3548: 000dce17 auipc t3,0xdc + 354c: 0300 addi s0,sp,384 + 354e: 027c addi a5,sp,268 + 3550: 00017d13 andi s10,sp,0 + 3554: 4800 lw s0,16(s0) + 3556: 000b4e17 auipc t3,0xb4 + 355a: 0300 addi s0,sp,384 + 355c: 027d addi tp,tp,31 + 355e: cb14 sw a3,16(a4) + 3560: 0008 0x8 + 3562: 4c00 lw s0,24(s0) + 3564: 000a2217 auipc tp,0xa2 + 3568: 0300 addi s0,sp,384 + 356a: 0280 addi s0,sp,320 + 356c: 00001d07 0x1d07 + 3570: 5000 lw s0,32(s0) + 3572: 00098f17 auipc t5,0x98 + 3576: 0300 addi s0,sp,384 + 3578: 0281 addi t0,t0,0 + 357a: ae09 j 388c <_start-0x7fffc774> + 357c: 0005 c.nop 1 + 357e: 5400 lw s0,40(s0) + 3580: 000bd517 auipc a0,0xbd + 3584: 0300 addi s0,sp,384 + 3586: 02a4 addi s1,sp,328 + 3588: 00087a07 0x87a07 + 358c: 5800 lw s0,48(s0) + 358e: 2a18 fld fa4,16(a2) + 3590: 0300000b 0x300000b + 3594: 02a8 addi a0,sp,328 + 3596: 0002ae13 slti t3,t0,0 + 359a: 4800 lw s0,16(s0) + 359c: 1801 addi a6,a6,-32 + 359e: 0a4a slli s4,s4,0x12 + 35a0: 0000 unimp + 35a2: 1202a903 lw s2,288(t0) + 35a6: 0000026b 0x26b + 35aa: 014c addi a1,sp,132 + 35ac: 5618 lw a4,40(a2) + 35ae: 000d c.nop 3 + 35b0: 0300 addi s0,sp,384 + 35b2: 02ad addi t0,t0,11 + 35b4: dc0c sw a1,56(s0) + 35b6: 0008 0x8 + 35b8: dc00 sw s0,56(s0) + 35ba: 1802 slli a6,a6,0x20 + 35bc: 0935 addi s2,s2,13 + 35be: 0000 unimp + 35c0: 1002b203 0x1002b203 + 35c4: 0660 addi s0,sp,780 + 35c6: 0000 unimp + 35c8: 02e0 addi s0,sp,332 + 35ca: 1a18 addi a4,sp,304 + 35cc: 0009 c.nop 2 + 35ce: 0300 addi s0,sp,384 + 35d0: 02b4 addi a3,sp,328 + 35d2: e80a fsw ft2,16(sp) + 35d4: 0008 0x8 + 35d6: ec00 fsw fs0,24(s0) + 35d8: 0002 c.slli64 zero + 35da: 05b4040f 0x5b4040f + 35de: 0000 unimp + 35e0: 7e080103 lb sp,2016(a6) # 98d1a <_start-0x7ff672e6> + 35e4: 0000 unimp + 35e6: 1500 addi s0,sp,672 + 35e8: 05b4 addi a3,sp,712 + 35ea: 0000 unimp + 35ec: 043c040f 0x43c040f + 35f0: 0000 unimp + 35f2: 00008f13 mv t5,ra + 35f6: e400 fsw fs0,8(s0) + 35f8: 0005 c.nop 1 + 35fa: 1400 addi s0,sp,544 + 35fc: 045a slli s0,s0,0x16 + 35fe: 0000 unimp + 3600: fd14 fsw fa3,56(a0) + 3602: 0000 unimp + 3604: 1400 addi s0,sp,544 + 3606: 05e4 addi s1,sp,716 + 3608: 0000 unimp + 360a: 1d14 addi a3,sp,688 + 360c: 0000 unimp + 360e: 0000 unimp + 3610: 05bb040f 0x5bb040f + 3614: 0000 unimp + 3616: e415 bnez s0,3642 <_start-0x7fffc9be> + 3618: 0005 c.nop 1 + 361a: 0f00 addi s0,sp,912 + 361c: c604 sw s1,8(a2) + 361e: 0005 c.nop 1 + 3620: 1300 addi s0,sp,416 + 3622: 00000083 lb ra,0(zero) # 0 <_start-0x80000000> + 3626: 00000613 li a2,0 + 362a: 5a14 lw a3,48(a2) + 362c: 0004 0x4 + 362e: 1400 addi s0,sp,544 + 3630: 00fd addi ra,ra,31 + 3632: 0000 unimp + 3634: 8314 0x8314 + 3636: 0000 unimp + 3638: 1400 addi s0,sp,544 + 363a: 001d c.nop 7 + 363c: 0000 unimp + 363e: 0f00 addi s0,sp,912 + 3640: f504 fsw fs1,40(a0) + 3642: 0005 c.nop 1 + 3644: 1300 addi s0,sp,416 + 3646: 001d c.nop 7 + 3648: 0000 unimp + 364a: 062d addi a2,a2,11 + 364c: 0000 unimp + 364e: 5a14 lw a3,48(a2) + 3650: 0004 0x4 + 3652: 1400 addi s0,sp,544 + 3654: 00fd addi ra,ra,31 + 3656: 0000 unimp + 3658: 0f00 addi s0,sp,912 + 365a: 1904 addi s1,sp,176 + 365c: 0006 c.slli zero,0x1 + 365e: 0800 addi s0,sp,16 + 3660: 0040 addi s0,sp,4 + 3662: 0000 unimp + 3664: 00000643 fmadd.s fa2,ft0,ft0,ft0,rne + 3668: 2409 jal 386a <_start-0x7fffc796> + 366a: 0000 unimp + 366c: 0200 addi s0,sp,256 + 366e: 0800 addi s0,sp,16 + 3670: 0040 addi s0,sp,4 + 3672: 0000 unimp + 3674: 00000653 fadd.s fa2,ft0,ft0,rne + 3678: 2409 jal 387a <_start-0x7fffc786> + 367a: 0000 unimp + 367c: 0000 unimp + 367e: 0400 addi s0,sp,512 + 3680: 0951 addi s2,s2,20 + 3682: 0000 unimp + 3684: 1a012403 lw s0,416(sp) + 3688: 02f9 addi t0,t0,30 + 368a: 0000 unimp + 368c: 3619 jal 3192 <_start-0x7fffce6e> + 368e: 000d c.nop 3 + 3690: 0c00 addi s0,sp,528 + 3692: 08012803 lw a6,128(sp) + 3696: 0699 addi a3,a3,6 + 3698: 0000 unimp + 369a: 000c3617 auipc a2,0xc3 + 369e: 0300 addi s0,sp,384 + 36a0: 012a slli sp,sp,0xa + 36a2: 9911 andi a0,a0,-28 + 36a4: 0006 c.slli zero,0x1 + 36a6: 0000 unimp + 36a8: 000a3a17 auipc s4,0xa3 + 36ac: 0300 addi s0,sp,384 + 36ae: 1d07012b 0x1d07012b + 36b2: 0000 unimp + 36b4: 0400 addi s0,sp,512 + 36b6: 000c0517 auipc a0,0xc0 + 36ba: 0300 addi s0,sp,384 + 36bc: 012c addi a1,sp,136 + 36be: 00069f0b 0x69f0b + 36c2: 0800 addi s0,sp,16 + 36c4: 0f00 addi s0,sp,912 + 36c6: 6004 flw fs1,0(s0) + 36c8: 0006 c.slli zero,0x1 + 36ca: 0f00 addi s0,sp,912 + 36cc: 5304 lw s1,32(a4) + 36ce: 0006 c.slli zero,0x1 + 36d0: 1900 addi s0,sp,176 + 36d2: 0811 addi a6,a6,4 + 36d4: 0000 unimp + 36d6: 030e slli t1,t1,0x3 + 36d8: 0144 addi s1,sp,132 + 36da: de08 sw a0,56(a2) + 36dc: 0006 c.slli zero,0x1 + 36de: 1700 addi s0,sp,928 + 36e0: 0c8d addi s9,s9,3 + 36e2: 0000 unimp + 36e4: 12014503 lbu a0,288(sp) + 36e8: 06de slli a3,a3,0x17 + 36ea: 0000 unimp + 36ec: 1700 addi s0,sp,928 + 36ee: 0aa5 addi s5,s5,9 + 36f0: 0000 unimp + 36f2: 12014603 lbu a2,288(sp) + 36f6: 06de slli a3,a3,0x17 + 36f8: 0000 unimp + 36fa: 1706 slli a4,a4,0x21 + 36fc: 00000cef jal s9,36fc <_start-0x7fffc904> + 3700: 12014703 lbu a4,288(sp) + 3704: 004e c.slli zero,0x13 + 3706: 0000 unimp + 3708: 000c 0xc + 370a: 4e08 lw a0,24(a2) + 370c: 0000 unimp + 370e: ee00 fsw fs0,24(a2) + 3710: 0006 c.slli zero,0x1 + 3712: 0900 addi s0,sp,144 + 3714: 0024 addi s1,sp,8 + 3716: 0000 unimp + 3718: 0002 c.slli64 zero + 371a: d01a sw t1,32(sp) + 371c: 07028503 lb a0,112(t0) + 3720: 00000803 lb a6,0(zero) # 0 <_start-0x80000000> + 3724: 000adf17 auipc t5,0xad + 3728: 0300 addi s0,sp,384 + 372a: 24180287 0x24180287 + 372e: 0000 unimp + 3730: 0000 unimp + 3732: 000cd217 auipc tp,0xcd + 3736: 0300 addi s0,sp,384 + 3738: 0288 addi a0,sp,320 + 373a: ae12 fsd ft4,280(sp) + 373c: 0005 c.nop 1 + 373e: 0400 addi s0,sp,512 + 3740: 000a5f17 auipc t5,0xa5 + 3744: 0300 addi s0,sp,384 + 3746: 0289 addi t0,t0,2 + 3748: 0310 addi a2,sp,384 + 374a: 0008 0x8 + 374c: 0800 addi s0,sp,16 + 374e: 000d8817 auipc a6,0xd8 + 3752: 0300 addi s0,sp,384 + 3754: 028a slli t0,t0,0x2 + 3756: 00019317 auipc t1,0x19 + 375a: 2400 fld fs0,8(s0) + 375c: 0009e617 auipc a2,0x9e + 3760: 0300 addi s0,sp,384 + 3762: 1d0f028b 0x1d0f028b + 3766: 0000 unimp + 3768: 4800 lw s0,16(s0) + 376a: 000c3117 auipc sp,0xc3 + 376e: 0300 addi s0,sp,384 + 3770: 028c addi a1,sp,320 + 3772: 632c flw fa1,64(a4) + 3774: 0000 unimp + 3776: 5000 lw s0,32(s0) + 3778: 000da017 auipc zero,0xda + 377c: 0300 addi s0,sp,384 + 377e: 028d addi t0,t0,3 + 3780: a51a fsd ft6,136(sp) + 3782: 0006 c.slli zero,0x1 + 3784: 5800 lw s0,48(s0) + 3786: 000c3c17 auipc s8,0xc3 + 378a: 0300 addi s0,sp,384 + 378c: 028e slli t0,t0,0x3 + 378e: f116 fsw ft5,160(sp) + 3790: 0000 unimp + 3792: 6800 flw fs0,16(s0) + 3794: 000dc017 auipc zero,0xdc + 3798: 0300 addi s0,sp,384 + 379a: f116028f 0xf116028f + 379e: 0000 unimp + 37a0: 7000 flw fs0,32(s0) + 37a2: 0008d617 auipc a2,0x8d + 37a6: 0300 addi s0,sp,384 + 37a8: 0290 addi a2,sp,320 + 37aa: f116 fsw ft5,160(sp) + 37ac: 0000 unimp + 37ae: 7800 flw fs0,48(s0) + 37b0: 000d4c17 auipc s8,0xd4 + 37b4: 0300 addi s0,sp,384 + 37b6: 0291 addi t0,t0,4 + 37b8: 1310 addi a2,sp,416 + 37ba: 0008 0x8 + 37bc: 8000 0x8000 + 37be: 000a5317 auipc t1,0xa5 + 37c2: 0300 addi s0,sp,384 + 37c4: 0292 slli t0,t0,0x4 + 37c6: 2310 fld fa2,0(a4) + 37c8: 0008 0x8 + 37ca: 8800 0x8800 + 37cc: 00083d17 auipc s10,0x83 + 37d0: 0300 addi s0,sp,384 + 37d2: 1d0f0293 addi t0,t5,464 # a8910 <_start-0x7ff576f0> + 37d6: 0000 unimp + 37d8: a000 fsd fs0,0(s0) + 37da: 0009a817 auipc a6,0x9a + 37de: 0300 addi s0,sp,384 + 37e0: 0294 addi a3,sp,320 + 37e2: f116 fsw ft5,160(sp) + 37e4: 0000 unimp + 37e6: a400 fsd fs0,8(s0) + 37e8: 0008bf17 auipc t5,0x8b + 37ec: 0300 addi s0,sp,384 + 37ee: 0295 addi t0,t0,5 + 37f0: f116 fsw ft5,160(sp) + 37f2: 0000 unimp + 37f4: ac00 fsd fs0,24(s0) + 37f6: 00099717 auipc a4,0x99 + 37fa: 0300 addi s0,sp,384 + 37fc: 0296 slli t0,t0,0x5 + 37fe: f116 fsw ft5,160(sp) + 3800: 0000 unimp + 3802: b400 fsd fs0,40(s0) + 3804: 00085017 auipc zero,0x85 + 3808: 0300 addi s0,sp,384 + 380a: f1160297 auipc t0,0xf1160 + 380e: 0000 unimp + 3810: bc00 fsd fs0,56(s0) + 3812: 00087c17 auipc s8,0x87 + 3816: 0300 addi s0,sp,384 + 3818: 0298 addi a4,sp,320 + 381a: f116 fsw ft5,160(sp) + 381c: 0000 unimp + 381e: c400 sw s0,8(s0) + 3820: 000bda17 auipc s4,0xbd + 3824: 0300 addi s0,sp,384 + 3826: 0299 addi t0,t0,6 + 3828: 1d08 addi a0,sp,688 + 382a: 0000 unimp + 382c: cc00 sw s0,24(s0) + 382e: 0800 addi s0,sp,16 + 3830: 05b4 addi a3,sp,712 + 3832: 0000 unimp + 3834: 00000813 li a6,0 + 3838: 2409 jal 3a3a <_start-0x7fffc5c6> + 383a: 0000 unimp + 383c: 1900 addi s0,sp,176 + 383e: 0800 addi s0,sp,16 + 3840: 05b4 addi a3,sp,712 + 3842: 0000 unimp + 3844: 00000823 sb zero,16(zero) # 10 <_start-0x7ffffff0> + 3848: 2409 jal 3a4a <_start-0x7fffc5b6> + 384a: 0000 unimp + 384c: 0700 addi s0,sp,896 + 384e: 0800 addi s0,sp,16 + 3850: 05b4 addi a3,sp,712 + 3852: 0000 unimp + 3854: 00000833 add a6,zero,zero + 3858: 2409 jal 3a5a <_start-0x7fffc5a6> + 385a: 0000 unimp + 385c: 1700 addi s0,sp,928 + 385e: 1a00 addi s0,sp,304 + 3860: 03f0 addi a2,sp,460 + 3862: 029e slli t0,t0,0x7 + 3864: 00085a07 0x85a07 + 3868: 1700 addi s0,sp,928 + 386a: 0b0c addi a1,sp,400 + 386c: 0000 unimp + 386e: 1b02a103 lw sp,432(t0) # f11639ba <__global_pointer$+0x7115ebe2> + 3872: 085a slli a6,a6,0x16 + 3874: 0000 unimp + 3876: 1700 addi s0,sp,928 + 3878: 09f5 addi s3,s3,29 + 387a: 0000 unimp + 387c: 1802a203 lw tp,384(t0) + 3880: 086a slli a6,a6,0x1a + 3882: 0000 unimp + 3884: 0078 addi a4,sp,12 + 3886: f308 fsw fa0,32(a4) + 3888: 0002 c.slli64 zero + 388a: 6a00 flw fs0,16(a2) + 388c: 0008 0x8 + 388e: 0900 addi s0,sp,144 + 3890: 0024 addi s1,sp,8 + 3892: 0000 unimp + 3894: 001d c.nop 7 + 3896: 2408 fld fa0,8(s0) + 3898: 0000 unimp + 389a: 7a00 flw fs0,48(a2) + 389c: 0008 0x8 + 389e: 0900 addi s0,sp,144 + 38a0: 0024 addi s1,sp,8 + 38a2: 0000 unimp + 38a4: 001d c.nop 7 + 38a6: 8303f01b 0x8303f01b + 38aa: 0302 c.slli64 t1 + 38ac: 089f 0000 861c 0x861c0000089f + 38b2: 000c 0xc + 38b4: 0300 addi s0,sp,384 + 38b6: 029a slli t0,t0,0x6 + 38b8: 0006ee0b 0x6ee0b + 38bc: 1c00 addi s0,sp,560 + 38be: 0d75 addi s10,s10,29 + 38c0: 0000 unimp + 38c2: 0b02a303 lw t1,176(t0) + 38c6: 00000833 add a6,zero,zero + 38ca: 0800 addi s0,sp,16 + 38cc: 05b4 addi a3,sp,712 + 38ce: 0000 unimp + 38d0: 000008af 0x8af + 38d4: 2409 jal 3ad6 <_start-0x7fffc52a> + 38d6: 0000 unimp + 38d8: 1800 addi s0,sp,48 + 38da: 1d00 addi s0,sp,688 + 38dc: 08b4 addi a3,sp,88 + 38de: 0000 unimp + 38e0: 08af040f 0x8af040f + 38e4: 0000 unimp + 38e6: c51e sw t2,136(sp) + 38e8: 0008 0x8 + 38ea: 1400 addi s0,sp,544 + 38ec: 045a slli s0,s0,0x16 + 38ee: 0000 unimp + 38f0: 0f00 addi s0,sp,912 + 38f2: ba04 fsd fs1,48(a2) + 38f4: 0008 0x8 + 38f6: 0f00 addi s0,sp,912 + 38f8: 7d04 flw fs1,56(a0) + 38fa: 0001 nop + 38fc: 1e00 addi s0,sp,816 + 38fe: 08dc addi a5,sp,84 + 3900: 0000 unimp + 3902: 1d14 addi a3,sp,688 + 3904: 0000 unimp + 3906: 0000 unimp + 3908: 08e2040f 0x8e2040f + 390c: 0000 unimp + 390e: 08d1040f 0x8d1040f + 3912: 0000 unimp + 3914: 5308 lw a0,32(a4) + 3916: 0006 c.slli zero,0x1 + 3918: f800 fsw fs0,48(s0) + 391a: 0008 0x8 + 391c: 0900 addi s0,sp,144 + 391e: 0024 addi s1,sp,8 + 3920: 0000 unimp + 3922: 0002 c.slli64 zero + 3924: 181f 000d 0300 0x300000d181f + 392a: 5a170333 0x5a170333 + 392e: 0004 0x4 + 3930: 1f00 addi s0,sp,944 + 3932: 0d11 addi s10,s10,4 + 3934: 0000 unimp + 3936: 1d033403 0x1d033403 + 393a: 0460 addi s0,sp,524 + 393c: 0000 unimp + 393e: ea08 fsw fa0,16(a2) + 3940: 0005 c.nop 1 + 3942: 1d00 addi s0,sp,688 + 3944: 0009 c.nop 2 + 3946: 2000 fld fs0,0(s0) + 3948: 1500 addi s0,sp,672 + 394a: 0912 slli s2,s2,0x4 + 394c: 0000 unimp + 394e: 8221 srli a2,a2,0x8 + 3950: 0009 c.nop 2 + 3952: 0500 addi s0,sp,640 + 3954: 2414 fld fa3,8(s0) + 3956: 091d addi s2,s2,7 + 3958: 0000 unimp + 395a: 2721 jal 4062 <_start-0x7fffbf9e> + 395c: 000c 0xc + 395e: 0500 addi s0,sp,640 + 3960: 1515 addi a0,a0,-27 + 3962: 001d c.nop 7 + 3964: 0000 unimp + 3966: 0940040f 0x940040f + 396a: 0000 unimp + 396c: 00001d13 slli s10,zero,0x0 + 3970: 5400 lw s0,40(s0) + 3972: 0009 c.nop 2 + 3974: 1400 addi s0,sp,544 + 3976: 0954 addi a3,sp,148 + 3978: 0000 unimp + 397a: 5414 lw a3,40(s0) + 397c: 0009 c.nop 2 + 397e: 0000 unimp + 3980: 095a040f 0x95a040f + 3984: 0000 unimp + 3986: 2122 fld ft2,8(sp) + 3988: 0b32 slli s6,s6,0xc + 398a: 0000 unimp + 398c: 6706 flw fa4,64(sp) + 398e: ae0e fsd ft3,280(sp) + 3990: 0005 c.nop 1 + 3992: 2100 fld fs0,0(a0) + 3994: 0a7a slli s4,s4,0x1e + 3996: 0000 unimp + 3998: 730f1007 0x730f1007 + 399c: 0009 c.nop 2 + 399e: 0f00 addi s0,sp,912 + 39a0: ae04 fsd fs1,24(a2) + 39a2: 0005 c.nop 1 + 39a4: 2100 fld fs0,0(a0) + 39a6: 0b35 addi s6,s6,13 + 39a8: 0000 unimp + 39aa: ae0efc07 0xae0efc07 + 39ae: 0005 c.nop 1 + 39b0: 2100 fld fs0,0(a0) + 39b2: 0b05 addi s6,s6,1 + 39b4: 0000 unimp + 39b6: 1d0cfd07 0x1d0cfd07 + 39ba: 0000 unimp + 39bc: 2100 fld fs0,0(a0) + 39be: 00000ccb fnmsub.s fs9,ft0,ft0,ft0,rne + 39c2: 1d14fd07 0x1d14fd07 + 39c6: 0000 unimp + 39c8: 2100 fld fs0,0(a0) + 39ca: 00000daf 0xdaf + 39ce: 1d1cfd07 0x1d1cfd07 + 39d2: 0000 unimp + 39d4: 2100 fld fs0,0(a0) + 39d6: 0aba slli s5,s5,0xe + 39d8: 0000 unimp + 39da: 1d0cff07 0x1d0cff07 + 39de: 0000 unimp + 39e0: 2100 fld fs0,0(a0) + 39e2: 0b58 addi a4,sp,404 + 39e4: 0000 unimp + 39e6: 9a08 0x9a08 + 39e8: 5516 lw a0,100(sp) + 39ea: 0000 unimp + 39ec: 2100 fld fs0,0(a0) + 39ee: 0824 addi s1,sp,24 + 39f0: 0000 unimp + 39f2: 9b08 0x9b08 + 39f4: 1d15 addi s10,s10,-27 + 39f6: 0000 unimp + 39f8: 0800 addi s0,sp,16 + 39fa: 05ae slli a1,a1,0xb + 39fc: 0000 unimp + 39fe: 09dd addi s3,s3,23 + 3a00: 0000 unimp + 3a02: 2409 jal 3c04 <_start-0x7fffc3fc> + 3a04: 0000 unimp + 3a06: 0100 addi s0,sp,128 + 3a08: 2100 fld fs0,0(a0) + 3a0a: 08ce slli a7,a7,0x13 + 3a0c: 0000 unimp + 3a0e: 9e08 0x9e08 + 3a10: 0009cd17 auipc s10,0x9c + 3a14: 0500 addi s0,sp,640 + 3a16: 0a30 addi a2,sp,280 + 3a18: 0000 unimp + 3a1a: 2a09 jal 3b2c <_start-0x7fffc4d4> + 3a1c: 2416 fld fs0,320(sp) + 3a1e: 0000 unimp + 3a20: 0500 addi s0,sp,640 + 3a22: 0c15 addi s8,s8,5 + 3a24: 0000 unimp + 3a26: 2f09 jal 4138 <_start-0x7fffbec8> + 3a28: 0115 addi sp,sp,5 + 3a2a: 000a c.slli zero,0x2 + 3a2c: 0f00 addi s0,sp,912 + 3a2e: 0704 addi s1,sp,896 + 3a30: 000a c.slli zero,0x2 + 3a32: 1300 addi s0,sp,416 + 3a34: 09e9 addi s3,s3,26 + 3a36: 0000 unimp + 3a38: 0a16 slli s4,s4,0x5 + 3a3a: 0000 unimp + 3a3c: 5414 lw a3,40(s0) + 3a3e: 0009 c.nop 2 + 3a40: 0000 unimp + 3a42: dd05 beqz a0,397a <_start-0x7fffc686> + 3a44: 000d c.nop 3 + 3a46: 0900 addi s0,sp,144 + 3a48: 0f36 slli t5,t5,0xd + 3a4a: 093a slli s2,s2,0xe + 3a4c: 0000 unimp + 3a4e: f921 bnez a0,399e <_start-0x7fffc662> + 3a50: 09000007 0x9000007 + 3a54: 09f512bb 0x9f512bb + 3a58: 0000 unimp + 3a5a: fc21 bnez s0,39b2 <_start-0x7fffc64e> + 3a5c: 000c 0xc + 3a5e: 0900 addi s0,sp,144 + 3a60: 10be slli ra,ra,0x2f + 3a62: 0a16 slli s4,s4,0x5 + 3a64: 0000 unimp + 3a66: 000a0323 sb zero,6(s4) # c0826 <_start-0x7ff3f7da> + 3a6a: 0700 addi s0,sp,896 + 3a6c: 2404 fld fs1,8(s0) + 3a6e: 0000 unimp + 3a70: 0a00 addi s0,sp,272 + 3a72: 0618 addi a4,sp,768 + 3a74: 00000a77 0xa77 + 3a78: b524 fsd fs1,104(a0) + 3a7a: 0000000b 0xb + 3a7e: 9a24 0x9a24 + 3a80: 000a c.slli zero,0x2 + 3a82: 0100 addi s0,sp,128 + 3a84: d424 sw s1,104(s0) + 3a86: 000a c.slli zero,0x2 + 3a88: 0200 addi s0,sp,256 + 3a8a: 8f24 0x8f24 + 3a8c: 000a c.slli zero,0x2 + 3a8e: 0300 addi s0,sp,384 + 3a90: ac24 fsd fs1,88(s0) + 3a92: 0400000b 0x400000b + 3a96: b624 fsd fs1,104(a2) + 3a98: 000d c.nop 3 + 3a9a: 0500 addi s0,sp,640 + 3a9c: a524 fsd fs1,72(a0) + 3a9e: 000d c.nop 3 + 3aa0: 0600 addi s0,sp,768 + 3aa2: 2100 fld fs0,0(a0) + 3aa4: 08aa slli a7,a7,0xa + 3aa6: 0000 unimp + 3aa8: 210a fld ft2,128(sp) + 3aaa: 3a1c fld fa5,48(a2) + 3aac: 000a c.slli zero,0x2 + 3aae: 2300 fld fs0,0(a4) + 3ab0: 0aec addi a1,sp,348 + 3ab2: 0000 unimp + 3ab4: 00240407 0x240407 + 3ab8: 0000 unimp + 3aba: 230a fld ft6,128(sp) + 3abc: a806 fsd ft1,16(sp) + 3abe: 000a c.slli zero,0x2 + 3ac0: 2400 fld fs0,8(s0) + 3ac2: 00000c0b 0xc0b + 3ac6: 2400 fld fs0,8(s0) + 3ac8: 00000bcb fnmsub.s fs7,ft0,ft0,ft0,rne + 3acc: 2401 jal 3ccc <_start-0x7fffc334> + 3ace: 0cdf 0000 0002 0x200000cdf + 3ad4: b621 j 35dc <_start-0x7fffca24> + 3ad6: 0009 c.nop 2 + 3ad8: 0a00 addi s0,sp,272 + 3ada: 1e28 addi a0,sp,824 + 3adc: 00000a83 lb s5,0(zero) # 0 <_start-0x80000000> + 3ae0: 00085f23 0x85f23 + 3ae4: 0700 addi s0,sp,896 + 3ae6: 2404 fld fs1,8(s0) + 3ae8: 0000 unimp + 3aea: 0a00 addi s0,sp,272 + 3aec: 0ad3062b 0xad3062b + 3af0: 0000 unimp + 3af2: c324 sw s1,64(a4) + 3af4: 000c 0xc + 3af6: 0000 unimp + 3af8: b124 fsd fs1,96(a0) + 3afa: 000c 0xc + 3afc: 0100 addi s0,sp,128 + 3afe: 2100 fld fs0,0(a0) + 3b00: 096a slli s2,s2,0x1a + 3b02: 0000 unimp + 3b04: 2f0a fld ft10,128(sp) + 3b06: b42a fsd fa0,40(sp) + 3b08: 000a c.slli zero,0x2 + 3b0a: 2100 fld fs0,0(a0) + 3b0c: 00000aab 0xaab + 3b10: 1d1a290b 0x1d1a290b + 3b14: 0009 c.nop 2 + 3b16: 2100 fld fs0,0(a0) + 3b18: 090a slli s2,s2,0x2 + 3b1a: 0000 unimp + 3b1c: 1d1a380b 0x1d1a380b + 3b20: 0009 c.nop 2 + 3b22: 0500 addi s0,sp,640 + 3b24: 0108 addi a0,sp,128 + 3b26: 0000 unimp + 3b28: 7b0c flw fa1,48(a4) + 3b2a: 4016 0x4016 + 3b2c: 0000 unimp + 3b2e: 1500 addi s0,sp,672 + 3b30: 00000af7 0xaf7 + 3b34: 1b040403 lb s0,432(s0) # d566c <_start-0x7ff2a994> + 3b38: 0300000b 0x300000b + 3b3c: 0308 addi a0,sp,384 + 3b3e: 00000b13 li s6,0 + 3b42: a3040803 lb a6,-1488(s0) + 3b46: 0008 0x8 + 3b48: 0300 addi s0,sp,384 + 3b4a: 0310 addi a2,sp,384 + 3b4c: 082e slli a6,a6,0xb + 3b4e: 0000 unimp + 3b50: 96032003 lw zero,-1696(t1) # a811e <_start-0x7ff57ee2> + 3b54: 0008 0x8 + 3b56: 0800 addi s0,sp,16 + 3b58: 00000b03 lb s6,0(zero) # 0 <_start-0x80000000> + 3b5c: 00000b3b 0xb3b + 3b60: 2409 jal 3d62 <_start-0x7fffc29e> + 3b62: 0000 unimp + 3b64: ff00 fsw fs0,56(a4) + 3b66: 1500 addi s0,sp,672 + 3b68: 00000b2b 0xb2b + 3b6c: 601f 000d 0c00 0xc00000d601f + 3b72: 01fc addi a5,sp,204 + 3b74: 3b16 fld fs6,352(sp) + 3b76: 1f00000b 0x1f00000b + 3b7a: 0110 addi a2,sp,128 + 3b7c: 0000 unimp + 3b7e: 020c addi a1,sp,256 + 3b80: 1602 slli a2,a2,0x20 + 3b82: 00000b3b 0xb3b + 3b86: 4d25 li s10,9 + 3b88: 0d00000b 0xd00000b + 3b8c: 02b2 slli t0,t0,0xc + 3b8e: d003050f 0xd003050f + 3b92: 0034 addi a3,sp,8 + 3b94: 0080 addi s0,sp,64 + +Disassembly of section .debug_abbrev: + +00000000 <.debug_abbrev>: + 0: 1101 addi sp,sp,-32 + 2: 2501 jal 602 <_start-0x7ffff9fe> + 4: 130e slli t1,t1,0x23 + 6: 1b0e030b 0x1b0e030b + a: 110e slli sp,sp,0x23 + c: 1201 addi tp,tp,-32 + e: 1006 c.slli zero,0x21 + 10: 02000017 auipc zero,0x2000 + 14: 0024 addi s1,sp,8 + 16: 0b3e0b0b 0xb3e0b0b + 1a: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + 1e: 0b002403 lw s0,176(zero) # b0 <_start-0x7fffff50> + 22: 030b3e0b 0x30b3e0b + 26: 0008 0x8 + 28: 0400 addi s0,sp,512 + 2a: 0016 c.slli zero,0x5 + 2c: 0b3a0e03 lb t3,179(s4) + 30: 0b39053b 0xb39053b + 34: 1349 addi t1,t1,-14 + 36: 0000 unimp + 38: 2605 jal 358 <_start-0x7ffffca8> + 3a: 4900 lw s0,16(a0) + 3c: 06000013 li zero,96 + 40: 0101 addi sp,sp,0 + 42: 1349 addi t1,t1,-14 + 44: 1301 addi t1,t1,-32 + 46: 0000 unimp + 48: 49002107 flw ft2,1168(zero) # 490 <_start-0x7ffffb70> + 4c: 000b2f13 slti t5,s6,0 + 50: 0800 addi s0,sp,16 + 52: 0034 addi a3,sp,8 + 54: 0b3a0e03 lb t3,179(s4) + 58: 0b390b3b 0xb390b3b + 5c: 1349 addi t1,t1,-14 + 5e: 193c193f 16090000 0x16090000193c193f + 66: 0300 addi s0,sp,384 + 68: 3a0e fld fs4,224(sp) + 6a: 390b3b0b 0x390b3b0b + 6e: 0013490b 0x13490b + 72: 0a00 addi s0,sp,272 + 74: 0b0b0113 addi sp,s6,176 # c85ce <_start-0x7ff37a32> + 78: 0b3a slli s6,s6,0xe + 7a: 0b390b3b 0xb390b3b + 7e: 1301 addi t1,t1,-32 + 80: 0000 unimp + 82: 03000d0b 0x3000d0b + 86: 3a0e fld fs4,224(sp) + 88: 390b3b0b 0x390b3b0b + 8c: 0b13490b 0xb13490b + 90: 0c0b0d0b 0xc0b0d0b + 94: 000b380b 0xb380b + 98: 0c00 addi s0,sp,528 + 9a: 000d c.nop 3 + 9c: 0b3a0803 lb a6,179(s4) + a0: 0b390b3b 0xb390b3b + a4: 1349 addi t1,t1,-14 + a6: 0b0d0b0b 0xb0d0b0b + aa: 0b0c addi a1,sp,400 + ac: 0b38 addi a4,sp,408 + ae: 0000 unimp + b0: 170d addi a4,a4,-29 + b2: 0301 addi t1,t1,0 + b4: 0b0e slli s6,s6,0x3 + b6: 3b0b3a0b 0x3b0b3a0b + ba: 010b390b 0x10b390b + be: 0e000013 li zero,224 + c2: 000d c.nop 3 + c4: 0b3a0803 lb a6,179(s4) + c8: 0b390b3b 0xb390b3b + cc: 1349 addi t1,t1,-14 + ce: 0000 unimp + d0: 03000d0f 0x3000d0f + d4: 3a0e fld fs4,224(sp) + d6: 390b3b0b 0x390b3b0b + da: 0013490b 0x13490b + de: 1000 addi s0,sp,32 + e0: 012e slli sp,sp,0xb + e2: 0e03193f 0b3b0b3a 0xb3b0b3a0e03193f + ea: 0b39 addi s6,s6,14 + ec: 13491927 0x13491927 + f0: 0111 addi sp,sp,4 + f2: 0612 slli a2,a2,0x4 + f4: 1840 addi s0,sp,52 + f6: 4296 lw t0,68(sp) + f8: 0119 addi sp,sp,6 + fa: 11000013 li zero,272 + fe: 0005 c.nop 1 + 100: 0b3a0803 lb a6,179(s4) + 104: 0b390b3b 0xb390b3b + 108: 1349 addi t1,t1,-14 + 10a: 1702 slli a4,a4,0x20 + 10c: 0000 unimp + 10e: 3412 fld fs0,288(sp) + 110: 0300 addi s0,sp,384 + 112: 3a0e fld fs4,224(sp) + 114: 390b3b0b 0x390b3b0b + 118: 0213490b 0x213490b + 11c: 13000017 auipc zero,0x13000 + 120: 0034 addi a3,sp,8 + 122: 0b3a0e03 lb t3,179(s4) + 126: 0b390b3b 0xb390b3b + 12a: 1349 addi t1,t1,-14 + 12c: 0b1c addi a5,sp,400 + 12e: 0000 unimp + 130: 3414 fld fa3,40(s0) + 132: 0300 addi s0,sp,384 + 134: 3a08 fld fa0,48(a2) + 136: 390b3b0b 0x390b3b0b + 13a: 0013490b 0x13490b + 13e: 1500 addi s0,sp,672 + 140: 0034 addi a3,sp,8 + 142: 0b3a0803 lb a6,179(s4) + 146: 0b390b3b 0xb390b3b + 14a: 1349 addi t1,t1,-14 + 14c: 1702 slli a4,a4,0x20 + 14e: 0000 unimp + 150: 0b16 slli s6,s6,0x5 + 152: 5501 li a0,-32 + 154: 00130117 auipc sp,0x130 + 158: 1700 addi s0,sp,928 + 15a: 0034 addi a3,sp,8 + 15c: 0b3a0e03 lb t3,179(s4) + 160: 0b390b3b 0xb390b3b + 164: 1349 addi t1,t1,-14 + 166: 0000 unimp + 168: 0a18 addi a4,sp,272 + 16a: 0300 addi s0,sp,384 + 16c: 3a0e fld fs4,224(sp) + 16e: 390b3b0b 0x390b3b0b + 172: 0001110b 0x1110b + 176: 1900 addi s0,sp,176 + 178: 0111010b 0x111010b + 17c: 0612 slli a2,a2,0x4 + 17e: 1301 addi t1,t1,-32 + 180: 0000 unimp + 182: 0b1a slli s6,s6,0x6 + 184: 5501 li a0,-32 + 186: 1b000017 auipc zero,0x1b000 + 18a: 1301010b 0x1301010b + 18e: 0000 unimp + 190: 0b1c addi a5,sp,400 + 192: 0001 nop + 194: 0000 unimp + 196: 1101 addi sp,sp,-32 + 198: 2501 jal 798 <_start-0x7ffff868> + 19a: 130e slli t1,t1,0x23 + 19c: 1b0e030b 0x1b0e030b + 1a0: 110e slli sp,sp,0x23 + 1a2: 1201 addi tp,tp,-32 + 1a4: 1006 c.slli zero,0x21 + 1a6: 02000017 auipc zero,0x2000 + 1aa: 0024 addi s1,sp,8 + 1ac: 0b3e0b0b 0xb3e0b0b + 1b0: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + 1b4: 0b002403 lw s0,176(zero) # b0 <_start-0x7fffff50> + 1b8: 030b3e0b 0x30b3e0b + 1bc: 0008 0x8 + 1be: 0400 addi s0,sp,512 + 1c0: 0016 c.slli zero,0x5 + 1c2: 0b3a0e03 lb t3,179(s4) + 1c6: 0b39053b 0xb39053b + 1ca: 1349 addi t1,t1,-14 + 1cc: 0000 unimp + 1ce: 2605 jal 4ee <_start-0x7ffffb12> + 1d0: 4900 lw s0,16(a0) + 1d2: 06000013 li zero,96 + 1d6: 0101 addi sp,sp,0 + 1d8: 1349 addi t1,t1,-14 + 1da: 1301 addi t1,t1,-32 + 1dc: 0000 unimp + 1de: 49002107 flw ft2,1168(zero) # 490 <_start-0x7ffffb70> + 1e2: 000b2f13 slti t5,s6,0 + 1e6: 0800 addi s0,sp,16 + 1e8: 0034 addi a3,sp,8 + 1ea: 0b3a0e03 lb t3,179(s4) + 1ee: 0b390b3b 0xb390b3b + 1f2: 1349 addi t1,t1,-14 + 1f4: 193c193f 16090000 0x16090000193c193f + 1fc: 0300 addi s0,sp,384 + 1fe: 3a0e fld fs4,224(sp) + 200: 390b3b0b 0x390b3b0b + 204: 0013490b 0x13490b + 208: 0a00 addi s0,sp,272 + 20a: 0b0b0113 addi sp,s6,176 + 20e: 0b3a slli s6,s6,0xe + 210: 0b390b3b 0xb390b3b + 214: 1301 addi t1,t1,-32 + 216: 0000 unimp + 218: 03000d0b 0x3000d0b + 21c: 3a0e fld fs4,224(sp) + 21e: 390b3b0b 0x390b3b0b + 222: 0b13490b 0xb13490b + 226: 0c0b0d0b 0xc0b0d0b + 22a: 000b380b 0xb380b + 22e: 0c00 addi s0,sp,528 + 230: 000d c.nop 3 + 232: 0b3a0803 lb a6,179(s4) + 236: 0b390b3b 0xb390b3b + 23a: 1349 addi t1,t1,-14 + 23c: 0b0d0b0b 0xb0d0b0b + 240: 0b0c addi a1,sp,400 + 242: 0b38 addi a4,sp,408 + 244: 0000 unimp + 246: 170d addi a4,a4,-29 + 248: 0301 addi t1,t1,0 + 24a: 0b0e slli s6,s6,0x3 + 24c: 3b0b3a0b 0x3b0b3a0b + 250: 010b390b 0x10b390b + 254: 0e000013 li zero,224 + 258: 000d c.nop 3 + 25a: 0b3a0803 lb a6,179(s4) + 25e: 0b390b3b 0xb390b3b + 262: 1349 addi t1,t1,-14 + 264: 0000 unimp + 266: 03000d0f 0x3000d0f + 26a: 3a0e fld fs4,224(sp) + 26c: 390b3b0b 0x390b3b0b + 270: 0013490b 0x13490b + 274: 1000 addi s0,sp,32 + 276: 012e slli sp,sp,0xb + 278: 0e03193f 0b3b0b3a 0xb3b0b3a0e03193f + 280: 0b39 addi s6,s6,14 + 282: 13491927 0x13491927 + 286: 0111 addi sp,sp,4 + 288: 0612 slli a2,a2,0x4 + 28a: 1840 addi s0,sp,52 + 28c: 4296 lw t0,68(sp) + 28e: 0119 addi sp,sp,6 + 290: 11000013 li zero,272 + 294: 0005 c.nop 1 + 296: 0b3a0803 lb a6,179(s4) + 29a: 0b390b3b 0xb390b3b + 29e: 1349 addi t1,t1,-14 + 2a0: 1702 slli a4,a4,0x20 + 2a2: 0000 unimp + 2a4: 3412 fld fs0,288(sp) + 2a6: 0300 addi s0,sp,384 + 2a8: 3a0e fld fs4,224(sp) + 2aa: 390b3b0b 0x390b3b0b + 2ae: 0213490b 0x213490b + 2b2: 13000017 auipc zero,0x13000 + 2b6: 0034 addi a3,sp,8 + 2b8: 0b3a0e03 lb t3,179(s4) + 2bc: 0b390b3b 0xb390b3b + 2c0: 1349 addi t1,t1,-14 + 2c2: 0b1c addi a5,sp,400 + 2c4: 0000 unimp + 2c6: 3414 fld fa3,40(s0) + 2c8: 0300 addi s0,sp,384 + 2ca: 3a08 fld fa0,48(a2) + 2cc: 390b3b0b 0x390b3b0b + 2d0: 0213490b 0x213490b + 2d4: 15000017 auipc zero,0x15000 + 2d8: 0034 addi a3,sp,8 + 2da: 0b3a0803 lb a6,179(s4) + 2de: 0b390b3b 0xb390b3b + 2e2: 1349 addi t1,t1,-14 + 2e4: 0000 unimp + 2e6: 0b16 slli s6,s6,0x5 + 2e8: 5501 li a0,-32 + 2ea: 00130117 auipc sp,0x130 + 2ee: 1700 addi s0,sp,928 + 2f0: 0034 addi a3,sp,8 + 2f2: 0b3a0e03 lb t3,179(s4) + 2f6: 0b390b3b 0xb390b3b + 2fa: 1349 addi t1,t1,-14 + 2fc: 0000 unimp + 2fe: 0b18 addi a4,sp,400 + 300: 1101 addi sp,sp,-32 + 302: 1201 addi tp,tp,-32 + 304: 0106 slli sp,sp,0x1 + 306: 19000013 li zero,400 + 30a: 1755010b 0x1755010b + 30e: 0000 unimp + 310: 0b1a slli s6,s6,0x6 + 312: 0101 addi sp,sp,0 + 314: 1b000013 li zero,432 + 318: 0000010b 0x10b + 31c: 0100 addi s0,sp,128 + 31e: 0111 addi sp,sp,4 + 320: 0e25 addi t3,t3,9 + 322: 0e030b13 addi s6,t1,224 + 326: 01110e1b 0x1110e1b + 32a: 0612 slli a2,a2,0x4 + 32c: 1710 addi a2,sp,928 + 32e: 0000 unimp + 330: 2402 fld fs0,0(sp) + 332: 0b00 addi s0,sp,400 + 334: 030b3e0b 0x30b3e0b + 338: 000e c.slli zero,0x3 + 33a: 0300 addi s0,sp,384 + 33c: 0016 c.slli zero,0x5 + 33e: 0b3a0e03 lb t3,179(s4) + 342: 0b390b3b 0xb390b3b + 346: 1349 addi t1,t1,-14 + 348: 0000 unimp + 34a: 2404 fld fs1,8(s0) + 34c: 0b00 addi s0,sp,400 + 34e: 030b3e0b 0x30b3e0b + 352: 0008 0x8 + 354: 0500 addi s0,sp,640 + 356: 0016 c.slli zero,0x5 + 358: 0b3a0e03 lb t3,179(s4) + 35c: 0b39053b 0xb39053b + 360: 1349 addi t1,t1,-14 + 362: 0000 unimp + 364: 2606 fld fa2,64(sp) + 366: 4900 lw s0,16(a0) + 368: 07000013 li zero,112 + 36c: 0101 addi sp,sp,0 + 36e: 1349 addi t1,t1,-14 + 370: 1301 addi t1,t1,-32 + 372: 0000 unimp + 374: 2108 fld fa0,0(a0) + 376: 4900 lw s0,16(a0) + 378: 000b2f13 slti t5,s6,0 + 37c: 0900 addi s0,sp,144 + 37e: 0034 addi a3,sp,8 + 380: 0b3a0e03 lb t3,179(s4) + 384: 0b390b3b 0xb390b3b + 388: 1349 addi t1,t1,-14 + 38a: 193c193f 130a0000 0x130a0000193c193f + 392: 0b01 addi s6,s6,0 + 394: 3b0b3a0b 0x3b0b3a0b + 398: 010b390b 0x10b390b + 39c: 0b000013 li zero,176 + 3a0: 000d c.nop 3 + 3a2: 0b3a0e03 lb t3,179(s4) + 3a6: 0b390b3b 0xb390b3b + 3aa: 1349 addi t1,t1,-14 + 3ac: 0b0d0b0b 0xb0d0b0b + 3b0: 0b0c addi a1,sp,400 + 3b2: 0b38 addi a4,sp,408 + 3b4: 0000 unimp + 3b6: 0d0c addi a1,sp,656 + 3b8: 0300 addi s0,sp,384 + 3ba: 3a08 fld fa0,48(a2) + 3bc: 390b3b0b 0x390b3b0b + 3c0: 0b13490b 0xb13490b + 3c4: 0c0b0d0b 0xc0b0d0b + 3c8: 000b380b 0xb380b + 3cc: 0d00 addi s0,sp,656 + 3ce: 0e030117 auipc sp,0xe030 + 3d2: 0b3a0b0b 0xb3a0b0b + 3d6: 0b390b3b 0xb390b3b + 3da: 1301 addi t1,t1,-32 + 3dc: 0000 unimp + 3de: 0d0e slli s10,s10,0x3 + 3e0: 0300 addi s0,sp,384 + 3e2: 3a08 fld fa0,48(a2) + 3e4: 390b3b0b 0x390b3b0b + 3e8: 0013490b 0x13490b + 3ec: 0f00 addi s0,sp,912 + 3ee: 000d c.nop 3 + 3f0: 0b3a0e03 lb t3,179(s4) + 3f4: 0b390b3b 0xb390b3b + 3f8: 1349 addi t1,t1,-14 + 3fa: 0000 unimp + 3fc: 2e10 fld fa2,24(a2) + 3fe: 3f01 jal 30e <_start-0x7ffffcf2> + 400: 0319 addi t1,t1,6 + 402: 3a0e fld fs4,224(sp) + 404: 390b3b0b 0x390b3b0b + 408: 4919270b 0x4919270b + 40c: 12011113 0x12011113 + 410: 4006 0x4006 + 412: 9718 0x9718 + 414: 1942 slli s2,s2,0x30 + 416: 1301 addi t1,t1,-32 + 418: 0000 unimp + 41a: 0511 addi a0,a0,4 + 41c: 0300 addi s0,sp,384 + 41e: 3a08 fld fa0,48(a2) + 420: 390b3b0b 0x390b3b0b + 424: 0213490b 0x213490b + 428: 12000017 auipc zero,0x12000 + 42c: 0034 addi a3,sp,8 + 42e: 0b3a0e03 lb t3,179(s4) + 432: 0b390b3b 0xb390b3b + 436: 1349 addi t1,t1,-14 + 438: 0b1c addi a5,sp,400 + 43a: 0000 unimp + 43c: 03003413 sltiu s0,zero,48 + 440: 3a08 fld fa0,48(a2) + 442: 390b3b0b 0x390b3b0b + 446: 0013490b 0x13490b + 44a: 1400 addi s0,sp,544 + 44c: 0034 addi a3,sp,8 + 44e: 0b3a0803 lb a6,179(s4) + 452: 0b390b3b 0xb390b3b + 456: 1349 addi t1,t1,-14 + 458: 1702 slli a4,a4,0x20 + 45a: 0000 unimp + 45c: 3415 jal fffffe80 <__global_pointer$+0x7fffb0a8> + 45e: 0300 addi s0,sp,384 + 460: 3a08 fld fa0,48(a2) + 462: 390b3b0b 0x390b3b0b + 466: 0213490b 0x213490b + 46a: 0018 0x18 + 46c: 1600 addi s0,sp,800 + 46e: 0034 addi a3,sp,8 + 470: 0b3a0e03 lb t3,179(s4) + 474: 0b390b3b 0xb390b3b + 478: 1349 addi t1,t1,-14 + 47a: 1802 slli a6,a6,0x20 + 47c: 0000 unimp + 47e: 03003417 auipc s0,0x3003 + 482: 3a0e fld fs4,224(sp) + 484: 390b3b0b 0x390b3b0b + 488: 0213490b 0x213490b + 48c: 18000017 auipc zero,0x18000 + 490: 1755010b 0x1755010b + 494: 1301 addi t1,t1,-32 + 496: 0000 unimp + 498: 3419 jal fffffe9e <__global_pointer$+0x7fffb0c6> + 49a: 0300 addi s0,sp,384 + 49c: 3a0e fld fs4,224(sp) + 49e: 390b3b0b 0x390b3b0b + 4a2: 0013490b 0x13490b + 4a6: 1a00 addi s0,sp,304 + 4a8: 1301010b 0x1301010b + 4ac: 0000 unimp + 4ae: 55010b1b 0x55010b1b + 4b2: 00000017 auipc zero,0x0 + 4b6: 1101 addi sp,sp,-32 + 4b8: 2501 jal ab8 <_start-0x7ffff548> + 4ba: 130e slli t1,t1,0x23 + 4bc: 1b0e030b 0x1b0e030b + 4c0: 110e slli sp,sp,0x23 + 4c2: 1201 addi tp,tp,-32 + 4c4: 1006 c.slli zero,0x21 + 4c6: 02000017 auipc zero,0x2000 + 4ca: 0024 addi s1,sp,8 + 4cc: 0b3e0b0b 0xb3e0b0b + 4d0: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + 4d4: 0b002403 lw s0,176(zero) # b0 <_start-0x7fffff50> + 4d8: 030b3e0b 0x30b3e0b + 4dc: 0008 0x8 + 4de: 0400 addi s0,sp,512 + 4e0: 0016 c.slli zero,0x5 + 4e2: 0b3a0e03 lb t3,179(s4) + 4e6: 0b39053b 0xb39053b + 4ea: 1349 addi t1,t1,-14 + 4ec: 0000 unimp + 4ee: 2605 jal 80e <_start-0x7ffff7f2> + 4f0: 4900 lw s0,16(a0) + 4f2: 06000013 li zero,96 + 4f6: 0101 addi sp,sp,0 + 4f8: 1349 addi t1,t1,-14 + 4fa: 1301 addi t1,t1,-32 + 4fc: 0000 unimp + 4fe: 49002107 flw ft2,1168(zero) # 490 <_start-0x7ffffb70> + 502: 000b2f13 slti t5,s6,0 + 506: 0800 addi s0,sp,16 + 508: 0034 addi a3,sp,8 + 50a: 0b3a0e03 lb t3,179(s4) + 50e: 0b390b3b 0xb390b3b + 512: 1349 addi t1,t1,-14 + 514: 193c193f 16090000 0x16090000193c193f + 51c: 0300 addi s0,sp,384 + 51e: 3a0e fld fs4,224(sp) + 520: 390b3b0b 0x390b3b0b + 524: 0013490b 0x13490b + 528: 0a00 addi s0,sp,272 + 52a: 0b0b0113 addi sp,s6,176 + 52e: 0b3a slli s6,s6,0xe + 530: 0b390b3b 0xb390b3b + 534: 1301 addi t1,t1,-32 + 536: 0000 unimp + 538: 03000d0b 0x3000d0b + 53c: 3a0e fld fs4,224(sp) + 53e: 390b3b0b 0x390b3b0b + 542: 0b13490b 0xb13490b + 546: 0c0b0d0b 0xc0b0d0b + 54a: 000b380b 0xb380b + 54e: 0c00 addi s0,sp,528 + 550: 000d c.nop 3 + 552: 0b3a0803 lb a6,179(s4) + 556: 0b390b3b 0xb390b3b + 55a: 1349 addi t1,t1,-14 + 55c: 0b0d0b0b 0xb0d0b0b + 560: 0b0c addi a1,sp,400 + 562: 0b38 addi a4,sp,408 + 564: 0000 unimp + 566: 170d addi a4,a4,-29 + 568: 0301 addi t1,t1,0 + 56a: 0b0e slli s6,s6,0x3 + 56c: 3b0b3a0b 0x3b0b3a0b + 570: 010b390b 0x10b390b + 574: 0e000013 li zero,224 + 578: 000d c.nop 3 + 57a: 0b3a0803 lb a6,179(s4) + 57e: 0b390b3b 0xb390b3b + 582: 1349 addi t1,t1,-14 + 584: 0000 unimp + 586: 03000d0f 0x3000d0f + 58a: 3a0e fld fs4,224(sp) + 58c: 390b3b0b 0x390b3b0b + 590: 0013490b 0x13490b + 594: 1000 addi s0,sp,32 + 596: 012e slli sp,sp,0xb + 598: 0e03193f 0b3b0b3a 0xb3b0b3a0e03193f + 5a0: 0b39 addi s6,s6,14 + 5a2: 13491927 0x13491927 + 5a6: 0111 addi sp,sp,4 + 5a8: 0612 slli a2,a2,0x4 + 5aa: 1840 addi s0,sp,52 + 5ac: 4296 lw t0,68(sp) + 5ae: 0119 addi sp,sp,6 + 5b0: 11000013 li zero,272 + 5b4: 0005 c.nop 1 + 5b6: 0b3a0803 lb a6,179(s4) + 5ba: 0b390b3b 0xb390b3b + 5be: 1349 addi t1,t1,-14 + 5c0: 1702 slli a4,a4,0x20 + 5c2: 0000 unimp + 5c4: 3412 fld fs0,288(sp) + 5c6: 0300 addi s0,sp,384 + 5c8: 3a0e fld fs4,224(sp) + 5ca: 390b3b0b 0x390b3b0b + 5ce: 0213490b 0x213490b + 5d2: 13000017 auipc zero,0x13000 + 5d6: 0034 addi a3,sp,8 + 5d8: 0b3a0e03 lb t3,179(s4) + 5dc: 0b390b3b 0xb390b3b + 5e0: 1349 addi t1,t1,-14 + 5e2: 0b1c addi a5,sp,400 + 5e4: 0000 unimp + 5e6: 3414 fld fa3,40(s0) + 5e8: 0300 addi s0,sp,384 + 5ea: 3a08 fld fa0,48(a2) + 5ec: 390b3b0b 0x390b3b0b + 5f0: 0213490b 0x213490b + 5f4: 15000017 auipc zero,0x15000 + 5f8: 0034 addi a3,sp,8 + 5fa: 0b3a0803 lb a6,179(s4) + 5fe: 0b390b3b 0xb390b3b + 602: 1349 addi t1,t1,-14 + 604: 0000 unimp + 606: 0b16 slli s6,s6,0x5 + 608: 5501 li a0,-32 + 60a: 00130117 auipc sp,0x130 + 60e: 1700 addi s0,sp,928 + 610: 0034 addi a3,sp,8 + 612: 0b3a0e03 lb t3,179(s4) + 616: 0b390b3b 0xb390b3b + 61a: 1349 addi t1,t1,-14 + 61c: 0000 unimp + 61e: 0b18 addi a4,sp,400 + 620: 5501 li a0,-32 + 622: 19000017 auipc zero,0x19000 + 626: 0111010b 0x111010b + 62a: 0612 slli a2,a2,0x4 + 62c: 1301 addi t1,t1,-32 + 62e: 0000 unimp + 630: 0b1a slli s6,s6,0x6 + 632: 0101 addi sp,sp,0 + 634: 1b000013 li zero,432 + 638: 0000010b 0x10b + 63c: 011c addi a5,sp,128 + 63e: 4901 li s2,0 + 640: 00000013 nop + 644: 1101 addi sp,sp,-32 + 646: 2501 jal c46 <_start-0x7ffff3ba> + 648: 130e slli t1,t1,0x23 + 64a: 1b0e030b 0x1b0e030b + 64e: 110e slli sp,sp,0x23 + 650: 1201 addi tp,tp,-32 + 652: 1006 c.slli zero,0x21 + 654: 02000017 auipc zero,0x2000 + 658: 0024 addi s1,sp,8 + 65a: 0b3e0b0b 0xb3e0b0b + 65e: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + 662: 0b002403 lw s0,176(zero) # b0 <_start-0x7fffff50> + 666: 030b3e0b 0x30b3e0b + 66a: 0008 0x8 + 66c: 0400 addi s0,sp,512 + 66e: 0016 c.slli zero,0x5 + 670: 0b3a0e03 lb t3,179(s4) + 674: 0b39053b 0xb39053b + 678: 1349 addi t1,t1,-14 + 67a: 0000 unimp + 67c: 2605 jal 99c <_start-0x7ffff664> + 67e: 4900 lw s0,16(a0) + 680: 06000013 li zero,96 + 684: 0101 addi sp,sp,0 + 686: 1349 addi t1,t1,-14 + 688: 1301 addi t1,t1,-32 + 68a: 0000 unimp + 68c: 49002107 flw ft2,1168(zero) # 490 <_start-0x7ffffb70> + 690: 000b2f13 slti t5,s6,0 + 694: 0800 addi s0,sp,16 + 696: 0034 addi a3,sp,8 + 698: 0b3a0e03 lb t3,179(s4) + 69c: 0b390b3b 0xb390b3b + 6a0: 1349 addi t1,t1,-14 + 6a2: 193c193f 16090000 0x16090000193c193f + 6aa: 0300 addi s0,sp,384 + 6ac: 3a0e fld fs4,224(sp) + 6ae: 390b3b0b 0x390b3b0b + 6b2: 0013490b 0x13490b + 6b6: 0a00 addi s0,sp,272 + 6b8: 0b0b0113 addi sp,s6,176 + 6bc: 0b3a slli s6,s6,0xe + 6be: 0b390b3b 0xb390b3b + 6c2: 1301 addi t1,t1,-32 + 6c4: 0000 unimp + 6c6: 03000d0b 0x3000d0b + 6ca: 3a0e fld fs4,224(sp) + 6cc: 390b3b0b 0x390b3b0b + 6d0: 0b13490b 0xb13490b + 6d4: 0c0b0d0b 0xc0b0d0b + 6d8: 000b380b 0xb380b + 6dc: 0c00 addi s0,sp,528 + 6de: 000d c.nop 3 + 6e0: 0b3a0803 lb a6,179(s4) + 6e4: 0b390b3b 0xb390b3b + 6e8: 1349 addi t1,t1,-14 + 6ea: 0b0d0b0b 0xb0d0b0b + 6ee: 0b0c addi a1,sp,400 + 6f0: 0b38 addi a4,sp,408 + 6f2: 0000 unimp + 6f4: 170d addi a4,a4,-29 + 6f6: 0301 addi t1,t1,0 + 6f8: 0b0e slli s6,s6,0x3 + 6fa: 3b0b3a0b 0x3b0b3a0b + 6fe: 010b390b 0x10b390b + 702: 0e000013 li zero,224 + 706: 000d c.nop 3 + 708: 0b3a0803 lb a6,179(s4) + 70c: 0b390b3b 0xb390b3b + 710: 1349 addi t1,t1,-14 + 712: 0000 unimp + 714: 03000d0f 0x3000d0f + 718: 3a0e fld fs4,224(sp) + 71a: 390b3b0b 0x390b3b0b + 71e: 0013490b 0x13490b + 722: 1000 addi s0,sp,32 + 724: 012e slli sp,sp,0xb + 726: 0e03193f 0b3b0b3a 0xb3b0b3a0e03193f + 72e: 0b39 addi s6,s6,14 + 730: 13491927 0x13491927 + 734: 0111 addi sp,sp,4 + 736: 0612 slli a2,a2,0x4 + 738: 1840 addi s0,sp,52 + 73a: 4296 lw t0,68(sp) + 73c: 0119 addi sp,sp,6 + 73e: 11000013 li zero,272 + 742: 0005 c.nop 1 + 744: 0b3a0803 lb a6,179(s4) + 748: 0b390b3b 0xb390b3b + 74c: 1349 addi t1,t1,-14 + 74e: 1702 slli a4,a4,0x20 + 750: 0000 unimp + 752: 3412 fld fs0,288(sp) + 754: 0300 addi s0,sp,384 + 756: 3a0e fld fs4,224(sp) + 758: 390b3b0b 0x390b3b0b + 75c: 0213490b 0x213490b + 760: 13000017 auipc zero,0x13000 + 764: 0034 addi a3,sp,8 + 766: 0b3a0e03 lb t3,179(s4) + 76a: 0b390b3b 0xb390b3b + 76e: 1349 addi t1,t1,-14 + 770: 0b1c addi a5,sp,400 + 772: 0000 unimp + 774: 3414 fld fa3,40(s0) + 776: 0300 addi s0,sp,384 + 778: 3a08 fld fa0,48(a2) + 77a: 390b3b0b 0x390b3b0b + 77e: 0013490b 0x13490b + 782: 1500 addi s0,sp,672 + 784: 0034 addi a3,sp,8 + 786: 0b3a0803 lb a6,179(s4) + 78a: 0b390b3b 0xb390b3b + 78e: 1349 addi t1,t1,-14 + 790: 1702 slli a4,a4,0x20 + 792: 0000 unimp + 794: 0b16 slli s6,s6,0x5 + 796: 5501 li a0,-32 + 798: 00130117 auipc sp,0x130 + 79c: 1700 addi s0,sp,928 + 79e: 0034 addi a3,sp,8 + 7a0: 0b3a0e03 lb t3,179(s4) + 7a4: 0b390b3b 0xb390b3b + 7a8: 1349 addi t1,t1,-14 + 7aa: 0000 unimp + 7ac: 0a18 addi a4,sp,272 + 7ae: 0300 addi s0,sp,384 + 7b0: 3a0e fld fs4,224(sp) + 7b2: 390b3b0b 0x390b3b0b + 7b6: 0001110b 0x1110b + 7ba: 1900 addi s0,sp,176 + 7bc: 0111010b 0x111010b + 7c0: 0612 slli a2,a2,0x4 + 7c2: 1301 addi t1,t1,-32 + 7c4: 0000 unimp + 7c6: 0b1a slli s6,s6,0x6 + 7c8: 5501 li a0,-32 + 7ca: 1b000017 auipc zero,0x1b000 + 7ce: 1301010b 0x1301010b + 7d2: 0000 unimp + 7d4: 0b1c addi a5,sp,400 + 7d6: 0001 nop + 7d8: 0000 unimp + 7da: 1101 addi sp,sp,-32 + 7dc: 2501 jal ddc <_start-0x7ffff224> + 7de: 130e slli t1,t1,0x23 + 7e0: 1b0e030b 0x1b0e030b + 7e4: 110e slli sp,sp,0x23 + 7e6: 1201 addi tp,tp,-32 + 7e8: 1006 c.slli zero,0x21 + 7ea: 02000017 auipc zero,0x2000 + 7ee: 0024 addi s1,sp,8 + 7f0: 0b3e0b0b 0xb3e0b0b + 7f4: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + 7f8: 03001603 lh a2,48(zero) # 30 <_start-0x7fffffd0> + 7fc: 3a0e fld fs4,224(sp) + 7fe: 390b3b0b 0x390b3b0b + 802: 0013490b 0x13490b + 806: 0400 addi s0,sp,512 + 808: 0024 addi s1,sp,8 + 80a: 0b3e0b0b 0xb3e0b0b + 80e: 00000803 lb a6,0(zero) # 0 <_start-0x80000000> + 812: 1605 addi a2,a2,-31 + 814: 0300 addi s0,sp,384 + 816: 3a0e fld fs4,224(sp) + 818: 39053b0b 0x39053b0b + 81c: 0013490b 0x13490b + 820: 0600 addi s0,sp,768 + 822: 0026 c.slli zero,0x9 + 824: 1349 addi t1,t1,-14 + 826: 0000 unimp + 828: 49010107 0x49010107 + 82c: 00130113 addi sp,t1,1 + 830: 0800 addi s0,sp,16 + 832: 0021 c.nop 8 + 834: 1349 addi t1,t1,-14 + 836: 00000b2f 0xb2f + 83a: 3409 jal 23c <_start-0x7ffffdc4> + 83c: 0300 addi s0,sp,384 + 83e: 3a0e fld fs4,224(sp) + 840: 390b3b0b 0x390b3b0b + 844: 3f13490b 0x3f13490b + 848: 3c19 jal 25e <_start-0x7ffffda2> + 84a: 0019 c.nop 6 + 84c: 0a00 addi s0,sp,272 + 84e: 0b0b0113 addi sp,s6,176 + 852: 0b3a slli s6,s6,0xe + 854: 0b390b3b 0xb390b3b + 858: 1301 addi t1,t1,-32 + 85a: 0000 unimp + 85c: 03000d0b 0x3000d0b + 860: 3a0e fld fs4,224(sp) + 862: 390b3b0b 0x390b3b0b + 866: 0b13490b 0xb13490b + 86a: 0c0b0d0b 0xc0b0d0b + 86e: 000b380b 0xb380b + 872: 0c00 addi s0,sp,528 + 874: 000d c.nop 3 + 876: 0b3a0803 lb a6,179(s4) + 87a: 0b390b3b 0xb390b3b + 87e: 1349 addi t1,t1,-14 + 880: 0b0d0b0b 0xb0d0b0b + 884: 0b0c addi a1,sp,400 + 886: 0b38 addi a4,sp,408 + 888: 0000 unimp + 88a: 170d addi a4,a4,-29 + 88c: 0301 addi t1,t1,0 + 88e: 0b0e slli s6,s6,0x3 + 890: 3b0b3a0b 0x3b0b3a0b + 894: 010b390b 0x10b390b + 898: 0e000013 li zero,224 + 89c: 000d c.nop 3 + 89e: 0b3a0803 lb a6,179(s4) + 8a2: 0b390b3b 0xb390b3b + 8a6: 1349 addi t1,t1,-14 + 8a8: 0000 unimp + 8aa: 03000d0f 0x3000d0f + 8ae: 3a0e fld fs4,224(sp) + 8b0: 390b3b0b 0x390b3b0b + 8b4: 0013490b 0x13490b + 8b8: 1000 addi s0,sp,32 + 8ba: 012e slli sp,sp,0xb + 8bc: 0e03193f 0b3b0b3a 0xb3b0b3a0e03193f + 8c4: 0b39 addi s6,s6,14 + 8c6: 13491927 0x13491927 + 8ca: 0111 addi sp,sp,4 + 8cc: 0612 slli a2,a2,0x4 + 8ce: 1840 addi s0,sp,52 + 8d0: 01194297 auipc t0,0x1194 + 8d4: 11000013 li zero,272 + 8d8: 0005 c.nop 1 + 8da: 0b3a0803 lb a6,179(s4) + 8de: 0b390b3b 0xb390b3b + 8e2: 1349 addi t1,t1,-14 + 8e4: 1702 slli a4,a4,0x20 + 8e6: 0000 unimp + 8e8: 0512 slli a0,a0,0x4 + 8ea: 0300 addi s0,sp,384 + 8ec: 3a08 fld fa0,48(a2) + 8ee: 390b3b0b 0x390b3b0b + 8f2: 0213490b 0x213490b + 8f6: 0018 0x18 + 8f8: 1300 addi s0,sp,416 + 8fa: 0034 addi a3,sp,8 + 8fc: 0b3a0e03 lb t3,179(s4) + 900: 0b390b3b 0xb390b3b + 904: 1349 addi t1,t1,-14 + 906: 0b1c addi a5,sp,400 + 908: 0000 unimp + 90a: 3414 fld fa3,40(s0) + 90c: 0300 addi s0,sp,384 + 90e: 3a08 fld fa0,48(a2) + 910: 390b3b0b 0x390b3b0b + 914: 0013490b 0x13490b + 918: 1500 addi s0,sp,672 + 91a: 0034 addi a3,sp,8 + 91c: 0b3a0803 lb a6,179(s4) + 920: 0b390b3b 0xb390b3b + 924: 1349 addi t1,t1,-14 + 926: 1702 slli a4,a4,0x20 + 928: 0000 unimp + 92a: 3416 fld fs0,352(sp) + 92c: 0300 addi s0,sp,384 + 92e: 3a0e fld fs4,224(sp) + 930: 390b3b0b 0x390b3b0b + 934: 0213490b 0x213490b + 938: 17000017 auipc zero,0x17000 + 93c: 0034 addi a3,sp,8 + 93e: 0b3a0803 lb a6,179(s4) + 942: 0b390b3b 0xb390b3b + 946: 1349 addi t1,t1,-14 + 948: 1802 slli a6,a6,0x20 + 94a: 0000 unimp + 94c: 3418 fld fa4,40(s0) + 94e: 0300 addi s0,sp,384 + 950: 3a0e fld fs4,224(sp) + 952: 390b3b0b 0x390b3b0b + 956: 0013490b 0x13490b + 95a: 1900 addi s0,sp,176 + 95c: 0111010b 0x111010b + 960: 0612 slli a2,a2,0x4 + 962: 1301 addi t1,t1,-32 + 964: 0000 unimp + 966: 0b1a slli s6,s6,0x6 + 968: 5501 li a0,-32 + 96a: 00130117 auipc sp,0x130 + 96e: 1b00 addi s0,sp,432 + 970: 1301010b 0x1301010b + 974: 0000 unimp + 976: 0b1c addi a5,sp,400 + 978: 0001 nop + 97a: 0000 unimp + 97c: 1101 addi sp,sp,-32 + 97e: 2501 jal f7e <_start-0x7ffff082> + 980: 130e slli t1,t1,0x23 + 982: 1b0e030b 0x1b0e030b + 986: 110e slli sp,sp,0x23 + 988: 1201 addi tp,tp,-32 + 98a: 1006 c.slli zero,0x21 + 98c: 02000017 auipc zero,0x2000 + 990: 0024 addi s1,sp,8 + 992: 0b3e0b0b 0xb3e0b0b + 996: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + 99a: 0b002403 lw s0,176(zero) # b0 <_start-0x7fffff50> + 99e: 030b3e0b 0x30b3e0b + 9a2: 0008 0x8 + 9a4: 0400 addi s0,sp,512 + 9a6: 0016 c.slli zero,0x5 + 9a8: 0b3a0e03 lb t3,179(s4) + 9ac: 0b39053b 0xb39053b + 9b0: 1349 addi t1,t1,-14 + 9b2: 0000 unimp + 9b4: 2605 jal cd4 <_start-0x7ffff32c> + 9b6: 4900 lw s0,16(a0) + 9b8: 06000013 li zero,96 + 9bc: 0101 addi sp,sp,0 + 9be: 1349 addi t1,t1,-14 + 9c0: 1301 addi t1,t1,-32 + 9c2: 0000 unimp + 9c4: 49002107 flw ft2,1168(zero) # 490 <_start-0x7ffffb70> + 9c8: 000b2f13 slti t5,s6,0 + 9cc: 0800 addi s0,sp,16 + 9ce: 0034 addi a3,sp,8 + 9d0: 0b3a0e03 lb t3,179(s4) + 9d4: 0b390b3b 0xb390b3b + 9d8: 1349 addi t1,t1,-14 + 9da: 193c193f 16090000 0x16090000193c193f + 9e2: 0300 addi s0,sp,384 + 9e4: 3a0e fld fs4,224(sp) + 9e6: 390b3b0b 0x390b3b0b + 9ea: 0013490b 0x13490b + 9ee: 0a00 addi s0,sp,272 + 9f0: 0b0b0113 addi sp,s6,176 + 9f4: 0b3a slli s6,s6,0xe + 9f6: 0b390b3b 0xb390b3b + 9fa: 1301 addi t1,t1,-32 + 9fc: 0000 unimp + 9fe: 03000d0b 0x3000d0b + a02: 3a0e fld fs4,224(sp) + a04: 390b3b0b 0x390b3b0b + a08: 0b13490b 0xb13490b + a0c: 0c0b0d0b 0xc0b0d0b + a10: 000b380b 0xb380b + a14: 0c00 addi s0,sp,528 + a16: 000d c.nop 3 + a18: 0b3a0803 lb a6,179(s4) + a1c: 0b390b3b 0xb390b3b + a20: 1349 addi t1,t1,-14 + a22: 0b0d0b0b 0xb0d0b0b + a26: 0b0c addi a1,sp,400 + a28: 0b38 addi a4,sp,408 + a2a: 0000 unimp + a2c: 170d addi a4,a4,-29 + a2e: 0301 addi t1,t1,0 + a30: 0b0e slli s6,s6,0x3 + a32: 3b0b3a0b 0x3b0b3a0b + a36: 010b390b 0x10b390b + a3a: 0e000013 li zero,224 + a3e: 000d c.nop 3 + a40: 0b3a0803 lb a6,179(s4) + a44: 0b390b3b 0xb390b3b + a48: 1349 addi t1,t1,-14 + a4a: 0000 unimp + a4c: 03000d0f 0x3000d0f + a50: 3a0e fld fs4,224(sp) + a52: 390b3b0b 0x390b3b0b + a56: 0013490b 0x13490b + a5a: 1000 addi s0,sp,32 + a5c: 012e slli sp,sp,0xb + a5e: 0e03193f 0b3b0b3a 0xb3b0b3a0e03193f + a66: 0b39 addi s6,s6,14 + a68: 13491927 0x13491927 + a6c: 0111 addi sp,sp,4 + a6e: 0612 slli a2,a2,0x4 + a70: 1840 addi s0,sp,52 + a72: 4296 lw t0,68(sp) + a74: 0119 addi sp,sp,6 + a76: 11000013 li zero,272 + a7a: 0005 c.nop 1 + a7c: 0b3a0803 lb a6,179(s4) + a80: 0b390b3b 0xb390b3b + a84: 1349 addi t1,t1,-14 + a86: 1702 slli a4,a4,0x20 + a88: 0000 unimp + a8a: 3412 fld fs0,288(sp) + a8c: 0300 addi s0,sp,384 + a8e: 3a0e fld fs4,224(sp) + a90: 390b3b0b 0x390b3b0b + a94: 0213490b 0x213490b + a98: 13000017 auipc zero,0x13000 + a9c: 0034 addi a3,sp,8 + a9e: 0b3a0e03 lb t3,179(s4) + aa2: 0b390b3b 0xb390b3b + aa6: 1349 addi t1,t1,-14 + aa8: 0b1c addi a5,sp,400 + aaa: 0000 unimp + aac: 3414 fld fa3,40(s0) + aae: 0300 addi s0,sp,384 + ab0: 3a08 fld fa0,48(a2) + ab2: 390b3b0b 0x390b3b0b + ab6: 0013490b 0x13490b + aba: 1500 addi s0,sp,672 + abc: 0034 addi a3,sp,8 + abe: 0b3a0803 lb a6,179(s4) + ac2: 0b390b3b 0xb390b3b + ac6: 1349 addi t1,t1,-14 + ac8: 1702 slli a4,a4,0x20 + aca: 0000 unimp + acc: 0b16 slli s6,s6,0x5 + ace: 5501 li a0,-32 + ad0: 00130117 auipc sp,0x130 + ad4: 1700 addi s0,sp,928 + ad6: 0034 addi a3,sp,8 + ad8: 0b3a0e03 lb t3,179(s4) + adc: 0b390b3b 0xb390b3b + ae0: 1349 addi t1,t1,-14 + ae2: 0000 unimp + ae4: 0b18 addi a4,sp,400 + ae6: 1101 addi sp,sp,-32 + ae8: 1201 addi tp,tp,-32 + aea: 0106 slli sp,sp,0x1 + aec: 19000013 li zero,400 + af0: 1755010b 0x1755010b + af4: 0000 unimp + af6: 0100 addi s0,sp,128 + af8: 0111 addi sp,sp,4 + afa: 0e25 addi t3,t3,9 + afc: 0e030b13 addi s6,t1,224 + b00: 01110e1b 0x1110e1b + b04: 0612 slli a2,a2,0x4 + b06: 1710 addi a2,sp,928 + b08: 0000 unimp + b0a: 2402 fld fs0,0(sp) + b0c: 0b00 addi s0,sp,400 + b0e: 030b3e0b 0x30b3e0b + b12: 000e c.slli zero,0x3 + b14: 0300 addi s0,sp,384 + b16: 0024 addi s1,sp,8 + b18: 0b3e0b0b 0xb3e0b0b + b1c: 00000803 lb a6,0(zero) # 0 <_start-0x80000000> + b20: 1604 addi s1,sp,800 + b22: 0300 addi s0,sp,384 + b24: 3a0e fld fs4,224(sp) + b26: 39053b0b 0x39053b0b + b2a: 0013490b 0x13490b + b2e: 0500 addi s0,sp,640 + b30: 0026 c.slli zero,0x9 + b32: 1349 addi t1,t1,-14 + b34: 0000 unimp + b36: 0106 slli sp,sp,0x1 + b38: 4901 li s2,0 + b3a: 00130113 addi sp,t1,1 + b3e: 0700 addi s0,sp,896 + b40: 0021 c.nop 8 + b42: 1349 addi t1,t1,-14 + b44: 00000b2f 0xb2f + b48: 3408 fld fa0,40(s0) + b4a: 0300 addi s0,sp,384 + b4c: 3a0e fld fs4,224(sp) + b4e: 390b3b0b 0x390b3b0b + b52: 3f13490b 0x3f13490b + b56: 3c19 jal 56c <_start-0x7ffffa94> + b58: 0019 c.nop 6 + b5a: 0900 addi s0,sp,144 + b5c: 0016 c.slli zero,0x5 + b5e: 0b3a0e03 lb t3,179(s4) + b62: 0b390b3b 0xb390b3b + b66: 1349 addi t1,t1,-14 + b68: 0000 unimp + b6a: 130a slli t1,t1,0x22 + b6c: 0b01 addi s6,s6,0 + b6e: 3b0b3a0b 0x3b0b3a0b + b72: 010b390b 0x10b390b + b76: 0b000013 li zero,176 + b7a: 000d c.nop 3 + b7c: 0b3a0e03 lb t3,179(s4) + b80: 0b390b3b 0xb390b3b + b84: 1349 addi t1,t1,-14 + b86: 0b0d0b0b 0xb0d0b0b + b8a: 0b0c addi a1,sp,400 + b8c: 0b38 addi a4,sp,408 + b8e: 0000 unimp + b90: 0d0c addi a1,sp,656 + b92: 0300 addi s0,sp,384 + b94: 3a08 fld fa0,48(a2) + b96: 390b3b0b 0x390b3b0b + b9a: 0b13490b 0xb13490b + b9e: 0c0b0d0b 0xc0b0d0b + ba2: 000b380b 0xb380b + ba6: 0d00 addi s0,sp,656 + ba8: 0e030117 auipc sp,0xe030 + bac: 0b3a0b0b 0xb3a0b0b + bb0: 0b390b3b 0xb390b3b + bb4: 1301 addi t1,t1,-32 + bb6: 0000 unimp + bb8: 0d0e slli s10,s10,0x3 + bba: 0300 addi s0,sp,384 + bbc: 3a08 fld fa0,48(a2) + bbe: 390b3b0b 0x390b3b0b + bc2: 0013490b 0x13490b + bc6: 0f00 addi s0,sp,912 + bc8: 000d c.nop 3 + bca: 0b3a0e03 lb t3,179(s4) + bce: 0b390b3b 0xb390b3b + bd2: 1349 addi t1,t1,-14 + bd4: 0000 unimp + bd6: 2e10 fld fa2,24(a2) + bd8: 3f01 jal ae8 <_start-0x7ffff518> + bda: 0319 addi t1,t1,6 + bdc: 3a0e fld fs4,224(sp) + bde: 390b3b0b 0x390b3b0b + be2: 4919270b 0x4919270b + be6: 12011113 0x12011113 + bea: 4006 0x4006 + bec: 9718 0x9718 + bee: 1942 slli s2,s2,0x30 + bf0: 1301 addi t1,t1,-32 + bf2: 0000 unimp + bf4: 0511 addi a0,a0,4 + bf6: 0300 addi s0,sp,384 + bf8: 3a08 fld fa0,48(a2) + bfa: 390b3b0b 0x390b3b0b + bfe: 0213490b 0x213490b + c02: 12000017 auipc zero,0x12000 + c06: 0034 addi a3,sp,8 + c08: 0b3a0e03 lb t3,179(s4) + c0c: 0b390b3b 0xb390b3b + c10: 1349 addi t1,t1,-14 + c12: 1702 slli a4,a4,0x20 + c14: 0000 unimp + c16: 03003413 sltiu s0,zero,48 + c1a: 3a0e fld fs4,224(sp) + c1c: 390b3b0b 0x390b3b0b + c20: 1c13490b 0x1c13490b + c24: 1400000b 0x1400000b + c28: 0034 addi a3,sp,8 + c2a: 0b3a0803 lb a6,179(s4) + c2e: 0b390b3b 0xb390b3b + c32: 1349 addi t1,t1,-14 + c34: 0000 unimp + c36: 3415 jal 65a <_start-0x7ffff9a6> + c38: 0300 addi s0,sp,384 + c3a: 3a08 fld fa0,48(a2) + c3c: 390b3b0b 0x390b3b0b + c40: 0213490b 0x213490b + c44: 16000017 auipc zero,0x16000 + c48: 0034 addi a3,sp,8 + c4a: 0b3a0803 lb a6,179(s4) + c4e: 0b390b3b 0xb390b3b + c52: 1349 addi t1,t1,-14 + c54: 1802 slli a6,a6,0x20 + c56: 0000 unimp + c58: 55010b17 auipc s6,0x55010 + c5c: 00130117 auipc sp,0x130 + c60: 1800 addi s0,sp,48 + c62: 0034 addi a3,sp,8 + c64: 0b3a0e03 lb t3,179(s4) + c68: 0b390b3b 0xb390b3b + c6c: 1349 addi t1,t1,-14 + c6e: 0000 unimp + c70: 0b19 addi s6,s6,6 + c72: 0001 nop + c74: 1a00 addi s0,sp,304 + c76: 0111010b 0x111010b + c7a: 0612 slli a2,a2,0x4 + c7c: 0000 unimp + c7e: 0100 addi s0,sp,128 + c80: 0111 addi sp,sp,4 + c82: 0e25 addi t3,t3,9 + c84: 0e030b13 addi s6,t1,224 + c88: 01110e1b 0x1110e1b + c8c: 0612 slli a2,a2,0x4 + c8e: 1710 addi a2,sp,928 + c90: 0000 unimp + c92: 2402 fld fs0,0(sp) + c94: 0b00 addi s0,sp,400 + c96: 030b3e0b 0x30b3e0b + c9a: 0008 0x8 + c9c: 0300 addi s0,sp,384 + c9e: 0024 addi s1,sp,8 + ca0: 0b3e0b0b 0xb3e0b0b + ca4: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + ca8: 1604 addi s1,sp,800 + caa: 0300 addi s0,sp,384 + cac: 3a0e fld fs4,224(sp) + cae: 39053b0b 0x39053b0b + cb2: 0013490b 0x13490b + cb6: 0500 addi s0,sp,640 + cb8: 0016 c.slli zero,0x5 + cba: 0b3a0e03 lb t3,179(s4) + cbe: 0b390b3b 0xb390b3b + cc2: 1349 addi t1,t1,-14 + cc4: 0000 unimp + cc6: 1706 slli a4,a4,0x21 + cc8: 0b01 addi s6,s6,0 + cca: 3b0b3a0b 0x3b0b3a0b + cce: 010b390b 0x10b390b + cd2: 07000013 li zero,112 + cd6: 000d c.nop 3 + cd8: 0b3a0e03 lb t3,179(s4) + cdc: 0b390b3b 0xb390b3b + ce0: 1349 addi t1,t1,-14 + ce2: 0000 unimp + ce4: 0108 addi a0,sp,128 + ce6: 4901 li s2,0 + ce8: 00130113 addi sp,t1,1 + cec: 0900 addi s0,sp,144 + cee: 0021 c.nop 8 + cf0: 1349 addi t1,t1,-14 + cf2: 00000b2f 0xb2f + cf6: 130a slli t1,t1,0x22 + cf8: 0b01 addi s6,s6,0 + cfa: 3b0b3a0b 0x3b0b3a0b + cfe: 010b390b 0x10b390b + d02: 0b000013 li zero,176 + d06: 000d c.nop 3 + d08: 0b3a0e03 lb t3,179(s4) + d0c: 0b390b3b 0xb390b3b + d10: 1349 addi t1,t1,-14 + d12: 0b38 addi a4,sp,408 + d14: 0000 unimp + d16: 0f0c addi a1,sp,912 + d18: 0b00 addi s0,sp,400 + d1a: 0d00000b 0xd00000b + d1e: 0e030113 addi sp,t1,224 + d22: 0b3a0b0b 0xb3a0b0b + d26: 0b390b3b 0xb390b3b + d2a: 1301 addi t1,t1,-32 + d2c: 0000 unimp + d2e: 0d0e slli s10,s10,0x3 + d30: 0300 addi s0,sp,384 + d32: 3a08 fld fa0,48(a2) + d34: 390b3b0b 0x390b3b0b + d38: 3813490b 0x3813490b + d3c: 0f00000b 0xf00000b + d40: 0b0b000f 0xb0b000f + d44: 1349 addi t1,t1,-14 + d46: 0000 unimp + d48: 1310 addi a2,sp,416 + d4a: 0301 addi t1,t1,0 + d4c: 0b0e slli s6,s6,0x3 + d4e: 3a05 jal 67e <_start-0x7ffff982> + d50: 390b3b0b 0x390b3b0b + d54: 0013010b 0x13010b + d58: 1100 addi s0,sp,160 + d5a: 000d c.nop 3 + d5c: 0b3a0e03 lb t3,179(s4) + d60: 0b390b3b 0xb390b3b + d64: 1349 addi t1,t1,-14 + d66: 0538 addi a4,sp,648 + d68: 0000 unimp + d6a: 1512 slli a0,a0,0x24 + d6c: 2700 fld fs0,8(a4) + d6e: 0019 c.nop 6 + d70: 1300 addi s0,sp,416 + d72: 0115 addi sp,sp,5 + d74: 13491927 0x13491927 + d78: 1301 addi t1,t1,-32 + d7a: 0000 unimp + d7c: 0514 addi a3,sp,640 + d7e: 4900 lw s0,16(a0) + d80: 15000013 li zero,336 + d84: 0026 c.slli zero,0x9 + d86: 1349 addi t1,t1,-14 + d88: 0000 unimp + d8a: 1316 slli t1,t1,0x25 + d8c: 0301 addi t1,t1,0 + d8e: 0b0e slli s6,s6,0x3 + d90: 3a05 jal 6c0 <_start-0x7ffff940> + d92: 39053b0b 0x39053b0b + d96: 0013010b 0x13010b + d9a: 1700 addi s0,sp,928 + d9c: 000d c.nop 3 + d9e: 0b3a0e03 lb t3,179(s4) + da2: 0b39053b 0xb39053b + da6: 1349 addi t1,t1,-14 + da8: 0b38 addi a4,sp,408 + daa: 0000 unimp + dac: 0d18 addi a4,sp,656 + dae: 0300 addi s0,sp,384 + db0: 3a0e fld fs4,224(sp) + db2: 39053b0b 0x39053b0b + db6: 3813490b 0x3813490b + dba: 0005 c.nop 1 + dbc: 1900 addi s0,sp,176 + dbe: 0e030113 addi sp,t1,224 + dc2: 0b3a0b0b 0xb3a0b0b + dc6: 0b39053b 0xb39053b + dca: 1301 addi t1,t1,-32 + dcc: 0000 unimp + dce: 131a slli t1,t1,0x26 + dd0: 0b01 addi s6,s6,0 + dd2: 3b0b3a0b 0x3b0b3a0b + dd6: 3905 jal a06 <_start-0x7ffff5fa> + dd8: 0013010b 0x13010b + ddc: 1b00 addi s0,sp,432 + dde: 0b0b0117 auipc sp,0xb0b0 + de2: 0b3a slli s6,s6,0xe + de4: 0b39053b 0xb39053b + de8: 1301 addi t1,t1,-32 + dea: 0000 unimp + dec: 0d1c addi a5,sp,656 + dee: 0300 addi s0,sp,384 + df0: 3a0e fld fs4,224(sp) + df2: 39053b0b 0x39053b0b + df6: 0013490b 0x13490b + dfa: 1d00 addi s0,sp,688 + dfc: 0e030013 addi zero,t1,224 + e00: 193c addi a5,sp,184 + e02: 0000 unimp + e04: 151e slli a0,a0,0x27 + e06: 2701 jal 1506 <_start-0x7fffeafa> + e08: 0119 addi sp,sp,6 + e0a: 1f000013 li zero,496 + e0e: 0034 addi a3,sp,8 + e10: 0b3a0e03 lb t3,179(s4) + e14: 0b39053b 0xb39053b + e18: 1349 addi t1,t1,-14 + e1a: 193c193f 21200000 0x21200000193c193f + e22: 0000 unimp + e24: 2100 fld fs0,0(a0) + e26: 0034 addi a3,sp,8 + e28: 0b3a0e03 lb t3,179(s4) + e2c: 0b390b3b 0xb390b3b + e30: 1349 addi t1,t1,-14 + e32: 193c193f 26220000 0x26220000193c193f + e3a: 0000 unimp + e3c: 2300 fld fs0,0(a4) + e3e: 0104 addi s1,sp,128 + e40: 0b3e0e03 lb t3,179(t3) # b7609 <_start-0x7ff489f7> + e44: 13490b0b 0x13490b0b + e48: 0b3a slli s6,s6,0xe + e4a: 0b390b3b 0xb390b3b + e4e: 1301 addi t1,t1,-32 + e50: 0000 unimp + e52: 2824 fld fs1,80(s0) + e54: 0300 addi s0,sp,384 + e56: 1c0e slli s8,s8,0x23 + e58: 2500000b 0x2500000b + e5c: 012e slli sp,sp,0xb + e5e: 0e03193f 053b0b3a 0x53b0b3a0e03193f + e66: 0b39 addi s6,s6,14 + e68: 13491927 0x13491927 + e6c: 0111 addi sp,sp,4 + e6e: 0612 slli a2,a2,0x4 + e70: 1840 addi s0,sp,52 + e72: 00194297 auipc t0,0x194 + e76: 2600 fld fs0,8(a2) + e78: 0005 c.nop 1 + e7a: 0b3a0803 lb a6,179(s4) + e7e: 0b39053b 0xb39053b + e82: 1349 addi t1,t1,-14 + e84: 1702 slli a4,a4,0x20 + e86: 0000 unimp + e88: 03003427 fsd fa6,40(zero) # 28 <_start-0x7fffffd8> + e8c: 3a08 fld fa0,48(a2) + e8e: 39053b0b 0x39053b0b + e92: 0013490b 0x13490b + e96: 2800 fld fs0,16(s0) + e98: 1755010b 0x1755010b + e9c: 0000 unimp + e9e: 3429 jal 8a8 <_start-0x7ffff758> + ea0: 0300 addi s0,sp,384 + ea2: 3a0e fld fs4,224(sp) + ea4: 39053b0b 0x39053b0b + ea8: 0213490b 0x213490b + eac: 2a000017 auipc zero,0x2a000 + eb0: 0034 addi a3,sp,8 + eb2: 0b3a0803 lb a6,179(s4) + eb6: 0b39053b 0xb39053b + eba: 1349 addi t1,t1,-14 + ebc: 1702 slli a4,a4,0x20 + ebe: 0000 unimp + ec0: 0100 addi s0,sp,128 + ec2: 0111 addi sp,sp,4 + ec4: 0e25 addi t3,t3,9 + ec6: 0e030b13 addi s6,t1,224 + eca: 17100e1b 0x17100e1b + ece: 0000 unimp + ed0: 2402 fld fs0,0(sp) + ed2: 0b00 addi s0,sp,400 + ed4: 030b3e0b 0x30b3e0b + ed8: 0008 0x8 + eda: 0300 addi s0,sp,384 + edc: 0024 addi s1,sp,8 + ede: 0b3e0b0b 0xb3e0b0b + ee2: 00000e03 lb t3,0(zero) # 0 <_start-0x80000000> + ee6: 1604 addi s1,sp,800 + ee8: 0300 addi s0,sp,384 + eea: 3a0e fld fs4,224(sp) + eec: 39053b0b 0x39053b0b + ef0: 0013490b 0x13490b + ef4: 0500 addi s0,sp,640 + ef6: 0016 c.slli zero,0x5 + ef8: 0b3a0e03 lb t3,179(s4) + efc: 0b390b3b 0xb390b3b + f00: 1349 addi t1,t1,-14 + f02: 0000 unimp + f04: 1706 slli a4,a4,0x21 + f06: 0b01 addi s6,s6,0 + f08: 3b0b3a0b 0x3b0b3a0b + f0c: 010b390b 0x10b390b + f10: 07000013 li zero,112 + f14: 000d c.nop 3 + f16: 0b3a0e03 lb t3,179(s4) + f1a: 0b390b3b 0xb390b3b + f1e: 1349 addi t1,t1,-14 + f20: 0000 unimp + f22: 0108 addi a0,sp,128 + f24: 4901 li s2,0 + f26: 00130113 addi sp,t1,1 + f2a: 0900 addi s0,sp,144 + f2c: 0021 c.nop 8 + f2e: 1349 addi t1,t1,-14 + f30: 00000b2f 0xb2f + f34: 130a slli t1,t1,0x22 + f36: 0b01 addi s6,s6,0 + f38: 3b0b3a0b 0x3b0b3a0b + f3c: 010b390b 0x10b390b + f40: 0b000013 li zero,176 + f44: 000d c.nop 3 + f46: 0b3a0e03 lb t3,179(s4) + f4a: 0b390b3b 0xb390b3b + f4e: 1349 addi t1,t1,-14 + f50: 0b38 addi a4,sp,408 + f52: 0000 unimp + f54: 0f0c addi a1,sp,912 + f56: 0b00 addi s0,sp,400 + f58: 0d00000b 0xd00000b + f5c: 0e030113 addi sp,t1,224 + f60: 0b3a0b0b 0xb3a0b0b + f64: 0b390b3b 0xb390b3b + f68: 1301 addi t1,t1,-32 + f6a: 0000 unimp + f6c: 0d0e slli s10,s10,0x3 + f6e: 0300 addi s0,sp,384 + f70: 3a08 fld fa0,48(a2) + f72: 390b3b0b 0x390b3b0b + f76: 3813490b 0x3813490b + f7a: 0f00000b 0xf00000b + f7e: 0b0b000f 0xb0b000f + f82: 1349 addi t1,t1,-14 + f84: 0000 unimp + f86: 1310 addi a2,sp,416 + f88: 0301 addi t1,t1,0 + f8a: 0b0e slli s6,s6,0x3 + f8c: 3a05 jal 8bc <_start-0x7ffff744> + f8e: 390b3b0b 0x390b3b0b + f92: 0013010b 0x13010b + f96: 1100 addi s0,sp,160 + f98: 000d c.nop 3 + f9a: 0b3a0e03 lb t3,179(s4) + f9e: 0b390b3b 0xb390b3b + fa2: 1349 addi t1,t1,-14 + fa4: 0538 addi a4,sp,648 + fa6: 0000 unimp + fa8: 1512 slli a0,a0,0x24 + faa: 2700 fld fs0,8(a4) + fac: 0019 c.nop 6 + fae: 1300 addi s0,sp,416 + fb0: 0115 addi sp,sp,5 + fb2: 13491927 0x13491927 + fb6: 1301 addi t1,t1,-32 + fb8: 0000 unimp + fba: 0514 addi a3,sp,640 + fbc: 4900 lw s0,16(a0) + fbe: 15000013 li zero,336 + fc2: 0026 c.slli zero,0x9 + fc4: 1349 addi t1,t1,-14 + fc6: 0000 unimp + fc8: 1316 slli t1,t1,0x25 + fca: 0301 addi t1,t1,0 + fcc: 0b0e slli s6,s6,0x3 + fce: 3a05 jal 8fe <_start-0x7ffff702> + fd0: 39053b0b 0x39053b0b + fd4: 0013010b 0x13010b + fd8: 1700 addi s0,sp,928 + fda: 000d c.nop 3 + fdc: 0b3a0e03 lb t3,179(s4) + fe0: 0b39053b 0xb39053b + fe4: 1349 addi t1,t1,-14 + fe6: 0b38 addi a4,sp,408 + fe8: 0000 unimp + fea: 0d18 addi a4,sp,656 + fec: 0300 addi s0,sp,384 + fee: 3a0e fld fs4,224(sp) + ff0: 39053b0b 0x39053b0b + ff4: 3813490b 0x3813490b + ff8: 0005 c.nop 1 + ffa: 1900 addi s0,sp,176 + ffc: 0e030113 addi sp,t1,224 + 1000: 0b3a0b0b 0xb3a0b0b + 1004: 0b39053b 0xb39053b + 1008: 1301 addi t1,t1,-32 + 100a: 0000 unimp + 100c: 131a slli t1,t1,0x26 + 100e: 0b01 addi s6,s6,0 + 1010: 3b0b3a0b 0x3b0b3a0b + 1014: 3905 jal c44 <_start-0x7ffff3bc> + 1016: 0013010b 0x13010b + 101a: 1b00 addi s0,sp,432 + 101c: 0b0b0117 auipc sp,0xb0b0 + 1020: 0b3a slli s6,s6,0xe + 1022: 0b39053b 0xb39053b + 1026: 1301 addi t1,t1,-32 + 1028: 0000 unimp + 102a: 0d1c addi a5,sp,656 + 102c: 0300 addi s0,sp,384 + 102e: 3a0e fld fs4,224(sp) + 1030: 39053b0b 0x39053b0b + 1034: 0013490b 0x13490b + 1038: 1d00 addi s0,sp,688 + 103a: 0e030013 addi zero,t1,224 + 103e: 193c addi a5,sp,184 + 1040: 0000 unimp + 1042: 151e slli a0,a0,0x27 + 1044: 2701 jal 1744 <_start-0x7fffe8bc> + 1046: 0119 addi sp,sp,6 + 1048: 1f000013 li zero,496 + 104c: 0034 addi a3,sp,8 + 104e: 0b3a0e03 lb t3,179(s4) + 1052: 0b39053b 0xb39053b + 1056: 1349 addi t1,t1,-14 + 1058: 193c193f 21200000 0x21200000193c193f + 1060: 0000 unimp + 1062: 2100 fld fs0,0(a0) + 1064: 0034 addi a3,sp,8 + 1066: 0b3a0e03 lb t3,179(s4) + 106a: 0b390b3b 0xb390b3b + 106e: 1349 addi t1,t1,-14 + 1070: 193c193f 26220000 0x26220000193c193f + 1078: 0000 unimp + 107a: 2300 fld fs0,0(a4) + 107c: 0104 addi s1,sp,128 + 107e: 0b3e0e03 lb t3,179(t3) + 1082: 13490b0b 0x13490b0b + 1086: 0b3a slli s6,s6,0xe + 1088: 0b390b3b 0xb390b3b + 108c: 1301 addi t1,t1,-32 + 108e: 0000 unimp + 1090: 2824 fld fs1,80(s0) + 1092: 0300 addi s0,sp,384 + 1094: 1c0e slli s8,s8,0x23 + 1096: 2500000b 0x2500000b + 109a: 0034 addi a3,sp,8 + 109c: 0b3a1347 fmsub.d ft6,fs4,fs3,ft1,rtz + 10a0: 0b39053b 0xb39053b + 10a4: 1802 slli a6,a6,0x20 + 10a6: 0000 unimp + ... + +Disassembly of section .debug_line: + +00000000 <.debug_line>: + 0: 1041 c.nop -16 + 2: 0000 unimp + 4: 00930003 lb zero,9(t1) + 8: 0000 unimp + a: 0101 addi sp,sp,0 + c: 000d0efb 0xd0efb + 10: 0101 addi sp,sp,0 + 12: 0101 addi sp,sp,0 + 14: 0000 unimp + 16: 0100 addi s0,sp,128 + 18: 0000 unimp + 1a: 2e01 jal 32a <_start-0x7ffffcd6> + 1c: 2f2e fld ft10,200(sp) + 1e: 2e2e fld ft8,200(sp) + 20: 2f2e2e2f 0x2f2e2e2f + 24: 2e2e fld ft8,200(sp) + 26: 7369722f 0x7369722f + 2a: 672d7663 bgeu s10,s2,696 <_start-0x7ffff96a> + 2e: 6c2f6363 bltu t5,sp,6f4 <_start-0x7ffff90c> + 32: 6269 lui tp,0x1a + 34: 2f636367 0x2f636367 + 38: 74666f73 csrrsi t5,0x746,12 + 3c: 662d lui a2,0xb + 3e: 0070 addi a2,sp,12 + 40: 2e2e fld ft8,200(sp) + 42: 2f2e2e2f 0x2f2e2e2f + 46: 2e2e fld ft8,200(sp) + 48: 2f2e2e2f 0x2f2e2e2f + 4c: 6972 flw fs2,28(sp) + 4e: 2d766373 csrrsi t1,0x2d7,12 + 52: 2f636367 0x2f636367 + 56: 696c flw fa1,84(a0) + 58: 6762 flw fa4,24(sp) + 5a: 2e2f6363 bltu t5,sp,340 <_start-0x7ffffcc0> + 5e: 2f2e fld ft10,200(sp) + 60: 6e69 lui t3,0x1a + 62: 64756c63 bltu a0,t2,6ba <_start-0x7ffff946> + 66: 0065 c.nop 25 + 68: 6100 flw fs0,0(a0) + 6a: 6464 flw fs1,76(s0) + 6c: 6664 flw fs1,76(a2) + 6e: 00632e33 slt t3,t1,t1 + 72: 0001 nop + 74: 7300 flw fs0,32(a4) + 76: 2d74666f jal a2,46b4c <_start-0x7ffb94b4> + 7a: 7066 flw ft0,120(sp) + 7c: 682e flw fa6,200(sp) + 7e: 0100 addi s0,sp,128 + 80: 0000 unimp + 82: 6f64 flw fs1,92(a4) + 84: 6275 lui tp,0x1d + 86: 656c flw fa1,76(a0) + 88: 682e flw fa6,200(sp) + 8a: 0100 addi s0,sp,128 + 8c: 0000 unimp + 8e: 6f6c flw fa1,92(a4) + 90: 676e flw fa4,216(sp) + 92: 6f6c flw fa1,92(a4) + 94: 676e flw fa4,216(sp) + 96: 682e flw fa6,200(sp) + 98: 0200 addi s0,sp,256 + 9a: 0000 unimp + 9c: 0500 addi s0,sp,640 + 9e: 0001 nop + a0: 0205 addi tp,tp,1 + a2: 1038 addi a4,sp,40 + a4: 8000 0x8000 + a6: 05012303 lw t1,80(sp) # b0b106c <_start-0x74f4ef94> + aa: 09010303 lb t1,144(sp) + ae: 0000 unimp + b0: 0301 addi t1,t1,0 + b2: 0900 addi s0,sp,144 + b4: 0000 unimp + b6: 0501 addi a0,a0,0 + b8: 030d addi t1,t1,3 + ba: 0900 addi s0,sp,144 + bc: 0000 unimp + be: 0501 addi a0,a0,0 + c0: 09010303 lb t1,144(sp) + c4: 0000 unimp + c6: 0301 addi t1,t1,0 + c8: 0900 addi s0,sp,144 + ca: 0000 unimp + cc: 0301 addi t1,t1,0 + ce: 0900 addi s0,sp,144 + d0: 0000 unimp + d2: 0301 addi t1,t1,0 + d4: 0900 addi s0,sp,144 + d6: 0000 unimp + d8: 0301 addi t1,t1,0 + da: 0901 addi s2,s2,0 + dc: 0000 unimp + de: 0301 addi t1,t1,0 + e0: 0900 addi s0,sp,144 + e2: 0000 unimp + e4: 0301 addi t1,t1,0 + e6: 0900 addi s0,sp,144 + e8: 0000 unimp + ea: 0301 addi t1,t1,0 + ec: 0900 addi s0,sp,144 + ee: 0000 unimp + f0: 0301 addi t1,t1,0 + f2: 0901 addi s2,s2,0 + f4: 0000 unimp + f6: 0301 addi t1,t1,0 + f8: 0900 addi s0,sp,144 + fa: 0000 unimp + fc: 0301 addi t1,t1,0 + fe: 0900 addi s0,sp,144 + 100: 0000 unimp + 102: 0301 addi t1,t1,0 + 104: 0900 addi s0,sp,144 + 106: 0000 unimp + 108: 0301 addi t1,t1,0 + 10a: 0901 addi s2,s2,0 + 10c: 0000 unimp + 10e: 0301 addi t1,t1,0 + 110: 0902 c.slli64 s2 + 112: 0000 unimp + 114: 0301 addi t1,t1,0 + 116: 0901 addi s2,s2,0 + 118: 0000 unimp + 11a: 0301 addi t1,t1,0 + 11c: 0900 addi s0,sp,144 + 11e: 0000 unimp + 120: 0301 addi t1,t1,0 + 122: 0900 addi s0,sp,144 + 124: 0000 unimp + 126: 0301 addi t1,t1,0 + 128: 0900 addi s0,sp,144 + 12a: 0000 unimp + 12c: 0301 addi t1,t1,0 + 12e: 0900 addi s0,sp,144 + 130: 0000 unimp + 132: 0301 addi t1,t1,0 + 134: 0900 addi s0,sp,144 + 136: 0000 unimp + 138: 0501 addi a0,a0,0 + 13a: 0601 addi a2,a2,0 + 13c: 08097803 0x8097803 + 140: 0100 addi s0,sp,128 + 142: 0305 addi t1,t1,1 + 144: 04090803 lb a6,64(s2) # 84526 <_start-0x7ff7bada> + 148: 0100 addi s0,sp,128 + 14a: 0306 slli t1,t1,0x1 + 14c: 0900 addi s0,sp,144 + 14e: 0004 0x4 + 150: 0601 addi a2,a2,0 + 152: 04090103 lb sp,64(s2) + 156: 0100 addi s0,sp,128 + 158: 0105 addi sp,sp,1 + 15a: 08097703 0x8097703 + 15e: 0100 addi s0,sp,128 + 160: 0305 addi t1,t1,1 + 162: 04090803 lb a6,64(s2) + 166: 0100 addi s0,sp,128 + 168: 0306 slli t1,t1,0x1 + 16a: 0900 addi s0,sp,144 + 16c: 0008 0x8 + 16e: 0501 addi a0,a0,0 + 170: 0601 addi a2,a2,0 + 172: 04097803 0x4097803 + 176: 0100 addi s0,sp,128 + 178: 0305 addi t1,t1,1 + 17a: 04090803 lb a6,64(s2) + 17e: 0100 addi s0,sp,128 + 180: 0306 slli t1,t1,0x1 + 182: 0900 addi s0,sp,144 + 184: 0008 0x8 + 186: 0301 addi t1,t1,0 + 188: 0900 addi s0,sp,144 + 18a: 0000 unimp + 18c: 0301 addi t1,t1,0 + 18e: 0900 addi s0,sp,144 + 190: 0000 unimp + 192: 0301 addi t1,t1,0 + 194: 0900 addi s0,sp,144 + 196: 0000 unimp + 198: 0301 addi t1,t1,0 + 19a: 0900 addi s0,sp,144 + 19c: 0000 unimp + 19e: 0601 addi a2,a2,0 + 1a0: 00090103 lb sp,0(s2) + 1a4: 0100 addi s0,sp,128 + 1a6: 0105 addi sp,sp,1 + 1a8: 10097703 0x10097703 + 1ac: 0100 addi s0,sp,128 + 1ae: 0305 addi t1,t1,1 + 1b0: 0c090803 lb a6,192(s2) + 1b4: 0100 addi s0,sp,128 + 1b6: 0306 slli t1,t1,0x1 + 1b8: 0900 addi s0,sp,144 + 1ba: 0004 0x4 + 1bc: 0301 addi t1,t1,0 + 1be: 0900 addi s0,sp,144 + 1c0: 0000 unimp + 1c2: 0301 addi t1,t1,0 + 1c4: 0901 addi s2,s2,0 + 1c6: 0000 unimp + 1c8: 0301 addi t1,t1,0 + 1ca: 0900 addi s0,sp,144 + 1cc: 0000 unimp + 1ce: 0301 addi t1,t1,0 + 1d0: 0900 addi s0,sp,144 + 1d2: 0000 unimp + 1d4: 0301 addi t1,t1,0 + 1d6: 0900 addi s0,sp,144 + 1d8: 0000 unimp + 1da: 0301 addi t1,t1,0 + 1dc: 0900 addi s0,sp,144 + 1de: 0000 unimp + 1e0: 0301 addi t1,t1,0 + 1e2: 0900 addi s0,sp,144 + 1e4: 0000 unimp + 1e6: 0301 addi t1,t1,0 + 1e8: 0900 addi s0,sp,144 + 1ea: 0000 unimp + 1ec: 0301 addi t1,t1,0 + 1ee: 0900 addi s0,sp,144 + 1f0: 0000 unimp + 1f2: 0301 addi t1,t1,0 + 1f4: 0900 addi s0,sp,144 + 1f6: 0000 unimp + 1f8: 0301 addi t1,t1,0 + 1fa: 0900 addi s0,sp,144 + 1fc: 0000 unimp + 1fe: 0301 addi t1,t1,0 + 200: 0900 addi s0,sp,144 + 202: 0000 unimp + 204: 0301 addi t1,t1,0 + 206: 0900 addi s0,sp,144 + 208: 0000 unimp + 20a: 0301 addi t1,t1,0 + 20c: 0900 addi s0,sp,144 + 20e: 0004 0x4 + 210: 0301 addi t1,t1,0 + 212: 0900 addi s0,sp,144 + 214: 0004 0x4 + 216: 0301 addi t1,t1,0 + 218: 0900 addi s0,sp,144 + 21a: 0000 unimp + 21c: 0301 addi t1,t1,0 + 21e: 0901 addi s2,s2,0 + 220: 0000 unimp + 222: 0301 addi t1,t1,0 + 224: 0900 addi s0,sp,144 + 226: 0000 unimp + 228: 0301 addi t1,t1,0 + 22a: 0900 addi s0,sp,144 + 22c: 0000 unimp + 22e: 0301 addi t1,t1,0 + 230: 0900 addi s0,sp,144 + 232: 0000 unimp + 234: 0301 addi t1,t1,0 + 236: 0900 addi s0,sp,144 + 238: 0000 unimp + 23a: 0301 addi t1,t1,0 + 23c: 0900 addi s0,sp,144 + 23e: 0000 unimp + 240: 0301 addi t1,t1,0 + 242: 0900 addi s0,sp,144 + 244: 0000 unimp + 246: 0301 addi t1,t1,0 + 248: 0900 addi s0,sp,144 + 24a: 0000 unimp + 24c: 0001 nop + 24e: 0402 c.slli64 s0 + 250: 09000307 0x9000307 + 254: 0008 0x8 + 256: 0001 nop + 258: 0402 c.slli64 s0 + 25a: 09000307 0x9000307 + 25e: 0000 unimp + 260: 0001 nop + 262: 0402 c.slli64 s0 + 264: 09000307 0x9000307 + 268: 0000 unimp + 26a: 0001 nop + 26c: 0402 c.slli64 s0 + 26e: 0309 addi t1,t1,2 + 270: 0900 addi s0,sp,144 + 272: 0004 0x4 + 274: 0001 nop + 276: 0402 c.slli64 s0 + 278: 0309 addi t1,t1,2 + 27a: 0900 addi s0,sp,144 + 27c: 0000 unimp + 27e: 0001 nop + 280: 0402 c.slli64 s0 + 282: 0900030b 0x900030b + 286: 0004 0x4 + 288: 0001 nop + 28a: 0402 c.slli64 s0 + 28c: 030e slli t1,t1,0x3 + 28e: 0900 addi s0,sp,144 + 290: 0008 0x8 + 292: 0001 nop + 294: 0402 c.slli64 s0 + 296: 030e slli t1,t1,0x3 + 298: 0900 addi s0,sp,144 + 29a: 0000 unimp + 29c: 0001 nop + 29e: 0402 c.slli64 s0 + 2a0: 030e slli t1,t1,0x3 + 2a2: 0900 addi s0,sp,144 + 2a4: 0004 0x4 + 2a6: 0001 nop + 2a8: 0402 c.slli64 s0 + 2aa: 09000317 auipc t1,0x9000 + 2ae: 0004 0x4 + 2b0: 0001 nop + 2b2: 0402 c.slli64 s0 + 2b4: 09000317 auipc t1,0x9000 + 2b8: 0000 unimp + 2ba: 0001 nop + 2bc: 0402 c.slli64 s0 + 2be: 09000317 auipc t1,0x9000 + 2c2: 0000 unimp + 2c4: 0001 nop + 2c6: 0402 c.slli64 s0 + 2c8: 09000317 auipc t1,0x9000 + 2cc: 0004 0x4 + 2ce: 0001 nop + 2d0: 0402 c.slli64 s0 + 2d2: 09000317 auipc t1,0x9000 + 2d6: 000c 0xc + 2d8: 0001 nop + 2da: 0402 c.slli64 s0 + 2dc: 09000317 auipc t1,0x9000 + 2e0: 0000 unimp + 2e2: 0001 nop + 2e4: 0402 c.slli64 s0 + 2e6: 09000317 auipc t1,0x9000 + 2ea: 0000 unimp + 2ec: 0001 nop + 2ee: 0402 c.slli64 s0 + 2f0: 0350 addi a2,sp,388 + 2f2: 0900 addi s0,sp,144 + 2f4: 0004 0x4 + 2f6: 0001 nop + 2f8: 0402 c.slli64 s0 + 2fa: 0350 addi a2,sp,388 + 2fc: 0900 addi s0,sp,144 + 2fe: 0000 unimp + 300: 0001 nop + 302: 0402 c.slli64 s0 + 304: 0350 addi a2,sp,388 + 306: 0900 addi s0,sp,144 + 308: 0000 unimp + 30a: 0001 nop + 30c: 0402 c.slli64 s0 + 30e: 0650 addi a2,sp,772 + 310: 00097f03 0x97f03 + 314: 0100 addi s0,sp,128 + 316: 0200 addi s0,sp,256 + 318: 5004 lw s1,32(s0) + 31a: 04090103 lb sp,64(s2) + 31e: 0100 addi s0,sp,128 + 320: 0200 addi s0,sp,256 + 322: 1804 addi s1,sp,48 + 324: 0306 slli t1,t1,0x1 + 326: 0900 addi s0,sp,144 + 328: 0004 0x4 + 32a: 0601 addi a2,a2,0 + 32c: 08090003 lb zero,128(s2) + 330: 0100 addi s0,sp,128 + 332: 0200 addi s0,sp,256 + 334: 0c04 addi s1,sp,528 + 336: 0306 slli t1,t1,0x1 + 338: 0900 addi s0,sp,144 + 33a: 0008 0x8 + 33c: 0001 nop + 33e: 0402 c.slli64 s0 + 340: 0326 slli t1,t1,0x9 + 342: 0900 addi s0,sp,144 + 344: 0008 0x8 + 346: 0001 nop + 348: 0402 c.slli64 s0 + 34a: 0900032f 0x900032f + 34e: 000c 0xc + 350: 0001 nop + 352: 0402 c.slli64 s0 + 354: 0330 addi a2,sp,392 + 356: 0900 addi s0,sp,144 + 358: 0008 0x8 + 35a: 0001 nop + 35c: 0402 c.slli64 s0 + 35e: 0332 slli t1,t1,0xc + 360: 0900 addi s0,sp,144 + 362: 0008 0x8 + 364: 0001 nop + 366: 0402 c.slli64 s0 + 368: 0332 slli t1,t1,0xc + 36a: 0900 addi s0,sp,144 + 36c: 0020 addi s0,sp,8 + 36e: 0001 nop + 370: 0402 c.slli64 s0 + 372: 0340 addi s0,sp,388 + 374: 0900 addi s0,sp,144 + 376: 0004 0x4 + 378: 0001 nop + 37a: 0402 c.slli64 s0 + 37c: 0340 addi s0,sp,388 + 37e: 0900 addi s0,sp,144 + 380: 0000 unimp + 382: 0001 nop + 384: 0402 c.slli64 s0 + 386: 0340 addi s0,sp,388 + 388: 0900 addi s0,sp,144 + 38a: 0000 unimp + 38c: 0001 nop + 38e: 0402 c.slli64 s0 + 390: 0340 addi s0,sp,388 + 392: 0900 addi s0,sp,144 + 394: 0004 0x4 + 396: 0001 nop + 398: 0402 c.slli64 s0 + 39a: 0340 addi s0,sp,388 + 39c: 0900 addi s0,sp,144 + 39e: 000c 0xc + 3a0: 0001 nop + 3a2: 0402 c.slli64 s0 + 3a4: 0340 addi s0,sp,388 + 3a6: 0900 addi s0,sp,144 + 3a8: 0000 unimp + 3aa: 0001 nop + 3ac: 0402 c.slli64 s0 + 3ae: 037a slli t1,t1,0x1e + 3b0: 0900 addi s0,sp,144 + 3b2: 0004 0x4 + 3b4: 0001 nop + 3b6: 01b60403 lb s0,27(a2) # b01b <_start-0x7fff4fe5> + 3ba: 08090003 lb zero,128(s2) + 3be: 0100 addi s0,sp,128 + 3c0: 0300 addi s0,sp,384 + 3c2: b604 fsd fs1,40(a2) + 3c4: 0301 addi t1,t1,0 + 3c6: 0900 addi s0,sp,144 + 3c8: 0000 unimp + 3ca: 0001 nop + 3cc: 01b60403 lb s0,27(a2) + 3d0: 04090003 lb zero,64(s2) + 3d4: 0100 addi s0,sp,128 + 3d6: 0300 addi s0,sp,384 + 3d8: b604 fsd fs1,40(a2) + 3da: 0301 addi t1,t1,0 + 3dc: 0900 addi s0,sp,144 + 3de: 0000 unimp + 3e0: 0001 nop + 3e2: 01b60403 lb s0,27(a2) + 3e6: 00090003 lb zero,0(s2) + 3ea: 0100 addi s0,sp,128 + 3ec: 0300 addi s0,sp,384 + 3ee: b604 fsd fs1,40(a2) + 3f0: 0301 addi t1,t1,0 + 3f2: 0900 addi s0,sp,144 + 3f4: 0000 unimp + 3f6: 0601 addi a2,a2,0 + 3f8: 08090003 lb zero,128(s2) + 3fc: 0100 addi s0,sp,128 + 3fe: 0200 addi s0,sp,256 + 400: 3304 fld fs1,32(a4) + 402: 0306 slli t1,t1,0x1 + 404: 0900 addi s0,sp,144 + 406: 0028 addi a0,sp,8 + 408: 0001 nop + 40a: 0402 c.slli64 s0 + 40c: 063a slli a2,a2,0xe + 40e: 14090003 lb zero,320(s2) + 412: 0100 addi s0,sp,128 + 414: 0200 addi s0,sp,256 + 416: 3d04 fld fs1,56(a0) + 418: 0c090003 lb zero,192(s2) + 41c: 0100 addi s0,sp,128 + 41e: 0200 addi s0,sp,256 + 420: 3d04 fld fs1,56(a0) + 422: 0306 slli t1,t1,0x1 + 424: 0900 addi s0,sp,144 + 426: 000c 0xc + 428: 0001 nop + 42a: 0402 c.slli64 s0 + 42c: 0631 addi a2,a2,12 + 42e: 00090003 lb zero,0(s2) + 432: 0100 addi s0,sp,128 + 434: 0200 addi s0,sp,256 + 436: 3104 fld fs1,32(a0) + 438: 0306 slli t1,t1,0x1 + 43a: 0900 addi s0,sp,144 + 43c: 0008 0x8 + 43e: 0001 nop + 440: 0402 c.slli64 s0 + 442: 030a slli t1,t1,0x2 + 444: 0900 addi s0,sp,144 + 446: 000c 0xc + 448: 0001 nop + 44a: 0402 c.slli64 s0 + 44c: 0342 slli t1,t1,0x10 + 44e: 0900 addi s0,sp,144 + 450: 0004 0x4 + 452: 0001 nop + 454: 0402 c.slli64 s0 + 456: 0342 slli t1,t1,0x10 + 458: 0900 addi s0,sp,144 + 45a: 0004 0x4 + 45c: 0001 nop + 45e: 0402 c.slli64 s0 + 460: 0342 slli t1,t1,0x10 + 462: 0900 addi s0,sp,144 + 464: 0000 unimp + 466: 0001 nop + 468: 0402 c.slli64 s0 + 46a: 0344 addi s1,sp,388 + 46c: 0900 addi s0,sp,144 + 46e: 0004 0x4 + 470: 0001 nop + 472: 0402 c.slli64 s0 + 474: 09000347 fmsub.s ft6,ft0,fa6,ft1,rne + 478: 0008 0x8 + 47a: 0001 nop + 47c: 0402 c.slli64 s0 + 47e: 09000347 fmsub.s ft6,ft0,fa6,ft1,rne + 482: 0000 unimp + 484: 0001 nop + 486: 0402 c.slli64 s0 + 488: 09000347 fmsub.s ft6,ft0,fa6,ft1,rne + 48c: 0004 0x4 + 48e: 0001 nop + 490: 0402 c.slli64 s0 + 492: 0350 addi a2,sp,388 + 494: 0900 addi s0,sp,144 + 496: 0004 0x4 + 498: 0001 nop + 49a: 0402 c.slli64 s0 + 49c: 0350 addi a2,sp,388 + 49e: 0900 addi s0,sp,144 + 4a0: 0000 unimp + 4a2: 0001 nop + 4a4: 0402 c.slli64 s0 + 4a6: 0350 addi a2,sp,388 + 4a8: 0900 addi s0,sp,144 + 4aa: 0000 unimp + 4ac: 0001 nop + 4ae: 0402 c.slli64 s0 + 4b0: 0350 addi a2,sp,388 + 4b2: 0900 addi s0,sp,144 + 4b4: 0004 0x4 + 4b6: 0001 nop + 4b8: 0402 c.slli64 s0 + 4ba: 0351 addi t1,t1,20 + 4bc: 0900 addi s0,sp,144 + 4be: 0010 0x10 + 4c0: 0601 addi a2,a2,0 + 4c2: 08097f03 0x8097f03 + 4c6: 0100 addi s0,sp,128 + 4c8: 0200 addi s0,sp,256 + 4ca: 4504 lw s1,8(a0) + 4cc: 0306 slli t1,t1,0x1 + 4ce: 0901 addi s2,s2,0 + 4d0: 000c 0xc + 4d2: 0001 nop + 4d4: 0402 c.slli64 s0 + 4d6: 035f 0900 0008 0x80900035f + 4dc: 0001 nop + 4de: 0402 c.slli64 s0 + 4e0: 0368 addi a0,sp,396 + 4e2: 0900 addi s0,sp,144 + 4e4: 000c 0xc + 4e6: 0001 nop + 4e8: 0402 c.slli64 s0 + 4ea: 0369 addi t1,t1,26 + 4ec: 0900 addi s0,sp,144 + 4ee: 0008 0x8 + 4f0: 0001 nop + 4f2: 0402 c.slli64 s0 + 4f4: 0900036b 0x900036b + 4f8: 0008 0x8 + 4fa: 0001 nop + 4fc: 0402 c.slli64 s0 + 4fe: 0900036b 0x900036b + 502: 0020 addi s0,sp,8 + 504: 0001 nop + 506: 0402 c.slli64 s0 + 508: 0379 addi t1,t1,30 + 50a: 0900 addi s0,sp,144 + 50c: 0004 0x4 + 50e: 0001 nop + 510: 0402 c.slli64 s0 + 512: 0379 addi t1,t1,30 + 514: 0900 addi s0,sp,144 + 516: 0000 unimp + 518: 0001 nop + 51a: 0402 c.slli64 s0 + 51c: 0379 addi t1,t1,30 + 51e: 0900 addi s0,sp,144 + 520: 0000 unimp + 522: 0001 nop + 524: 0402 c.slli64 s0 + 526: 0379 addi t1,t1,30 + 528: 0900 addi s0,sp,144 + 52a: 0004 0x4 + 52c: 0001 nop + 52e: 0402 c.slli64 s0 + 530: 0379 addi t1,t1,30 + 532: 0900 addi s0,sp,144 + 534: 000c 0xc + 536: 0001 nop + 538: 0402 c.slli64 s0 + 53a: 0379 addi t1,t1,30 + 53c: 0900 addi s0,sp,144 + 53e: 0000 unimp + 540: 0001 nop + 542: 0402 c.slli64 s0 + 544: 0679 addi a2,a2,30 + 546: 00097f03 0x97f03 + 54a: 0100 addi s0,sp,128 + 54c: 0200 addi s0,sp,256 + 54e: 6c04 flw fs1,24(s0) + 550: 0306 slli t1,t1,0x1 + 552: 0901 addi s2,s2,0 + 554: 0008 0x8 + 556: 0001 nop + 558: 0402 c.slli64 s0 + 55a: 00030673 0x30673 + 55e: 1409 addi s0,s0,-30 + 560: 0100 addi s0,sp,128 + 562: 0200 addi s0,sp,256 + 564: 7604 flw fs1,40(a2) + 566: 0c090003 lb zero,192(s2) + 56a: 0100 addi s0,sp,128 + 56c: 0200 addi s0,sp,256 + 56e: 7604 flw fs1,40(a2) + 570: 0306 slli t1,t1,0x1 + 572: 0900 addi s0,sp,144 + 574: 000c 0xc + 576: 0001 nop + 578: 0402 c.slli64 s0 + 57a: 066a slli a2,a2,0x1a + 57c: 00090003 lb zero,0(s2) + 580: 0100 addi s0,sp,128 + 582: 0200 addi s0,sp,256 + 584: 6a04 flw fs1,16(a2) + 586: 0306 slli t1,t1,0x1 + 588: 0900 addi s0,sp,144 + 58a: 0008 0x8 + 58c: 0001 nop + 58e: 0402 c.slli64 s0 + 590: 09000343 fmadd.s ft6,ft0,fa6,ft1,rne + 594: 000c 0xc + 596: 0001 nop + 598: 0402 c.slli64 s0 + 59a: 0900037b 0x900037b + 59e: 000c 0xc + 5a0: 0001 nop + 5a2: 0402 c.slli64 s0 + 5a4: 037d addi t1,t1,31 + 5a6: 0900 addi s0,sp,144 + 5a8: 0008 0x8 + 5aa: 0001 nop + 5ac: 0402 c.slli64 s0 + 5ae: 037d addi t1,t1,31 + 5b0: 0900 addi s0,sp,144 + 5b2: 0000 unimp + 5b4: 0001 nop + 5b6: 01800403 lb s0,24(zero) # 18 <_start-0x7fffffe8> + 5ba: 04090003 lb zero,64(s2) + 5be: 0100 addi s0,sp,128 + 5c0: 0300 addi s0,sp,384 + 5c2: 8604 0x8604 + 5c4: 0301 addi t1,t1,0 + 5c6: 0900 addi s0,sp,144 + 5c8: 0008 0x8 + 5ca: 0001 nop + 5cc: 01860403 lb s0,24(a2) + 5d0: 00090003 lb zero,0(s2) + 5d4: 0100 addi s0,sp,128 + 5d6: 0300 addi s0,sp,384 + 5d8: 8604 0x8604 + 5da: 0301 addi t1,t1,0 + 5dc: 0900 addi s0,sp,144 + 5de: 0000 unimp + 5e0: 0001 nop + 5e2: 01860403 lb s0,24(a2) + 5e6: 00090003 lb zero,0(s2) + 5ea: 0100 addi s0,sp,128 + 5ec: 0300 addi s0,sp,384 + 5ee: 8604 0x8604 + 5f0: 0301 addi t1,t1,0 + 5f2: 0900 addi s0,sp,144 + 5f4: 0004 0x4 + 5f6: 0001 nop + 5f8: 01860403 lb s0,24(a2) + 5fc: 0c090003 lb zero,192(s2) + 600: 0100 addi s0,sp,128 + 602: 0300 addi s0,sp,384 + 604: 8604 0x8604 + 606: 0301 addi t1,t1,0 + 608: 0900 addi s0,sp,144 + 60a: 0000 unimp + 60c: 0001 nop + 60e: 01860403 lb s0,24(a2) + 612: 00090003 lb zero,0(s2) + 616: 0100 addi s0,sp,128 + 618: 0300 addi s0,sp,384 + 61a: 8804 0x8804 + 61c: 0301 addi t1,t1,0 + 61e: 0900 addi s0,sp,144 + 620: 000c 0xc + 622: 0001 nop + 624: 01880403 lb s0,24(a6) # 9d7f2 <_start-0x7ff6280e> + 628: 0c090003 lb zero,192(s2) + 62c: 0100 addi s0,sp,128 + 62e: 0300 addi s0,sp,384 + 630: a404 fsd fs1,8(s0) + 632: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 636: 0004 0x4 + 638: 0001 nop + 63a: 03a40403 lb s0,58(s0) # 30034b8 <_start-0x7cffcb48> + 63e: 00090003 lb zero,0(s2) + 642: 0100 addi s0,sp,128 + 644: 0300 addi s0,sp,384 + 646: a404 fsd fs1,8(s0) + 648: 09010303 lb t1,144(sp) + 64c: 0000 unimp + 64e: 0001 nop + 650: 03a40403 lb s0,58(s0) + 654: 00090003 lb zero,0(s2) + 658: 0100 addi s0,sp,128 + 65a: 0300 addi s0,sp,384 + 65c: a404 fsd fs1,8(s0) + 65e: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 662: 0000 unimp + 664: 0001 nop + 666: 03a40403 lb s0,58(s0) + 66a: 00090003 lb zero,0(s2) + 66e: 0100 addi s0,sp,128 + 670: 0300 addi s0,sp,384 + 672: a404 fsd fs1,8(s0) + 674: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 678: 0000 unimp + 67a: 0001 nop + 67c: 0402 c.slli64 s0 + 67e: 0325 addi t1,t1,9 + 680: 0900 addi s0,sp,144 + 682: 0008 0x8 + 684: 0001 nop + 686: 0402 c.slli64 s0 + 688: 0325 addi t1,t1,9 + 68a: 0900 addi s0,sp,144 + 68c: 0000 unimp + 68e: 0001 nop + 690: 0402 c.slli64 s0 + 692: 0325 addi t1,t1,9 + 694: 0900 addi s0,sp,144 + 696: 0000 unimp + 698: 0001 nop + 69a: 0402 c.slli64 s0 + 69c: 0325 addi t1,t1,9 + 69e: 0900 addi s0,sp,144 + 6a0: 0000 unimp + 6a2: 0001 nop + 6a4: 0402 c.slli64 s0 + 6a6: 032c addi a1,sp,392 + 6a8: 0900 addi s0,sp,144 + 6aa: 000c 0xc + 6ac: 0001 nop + 6ae: 0402 c.slli64 s0 + 6b0: 032c addi a1,sp,392 + 6b2: 0900 addi s0,sp,144 + 6b4: 0000 unimp + 6b6: 0001 nop + 6b8: 0402 c.slli64 s0 + 6ba: 032c addi a1,sp,392 + 6bc: 0900 addi s0,sp,144 + 6be: 0000 unimp + 6c0: 0001 nop + 6c2: 0402 c.slli64 s0 + 6c4: 032c addi a1,sp,392 + 6c6: 0900 addi s0,sp,144 + 6c8: 0004 0x4 + 6ca: 0001 nop + 6cc: 0402 c.slli64 s0 + 6ce: 032c addi a1,sp,392 + 6d0: 0900 addi s0,sp,144 + 6d2: 0008 0x8 + 6d4: 0001 nop + 6d6: 01990403 lb s0,25(s2) + 6da: 08097f03 0x8097f03 + 6de: 0100 addi s0,sp,128 + 6e0: 0300 addi s0,sp,384 + 6e2: 9904 0x9904 + 6e4: 0301 addi t1,t1,0 + 6e6: 0900 addi s0,sp,144 + 6e8: 0000 unimp + 6ea: 0001 nop + 6ec: 01990403 lb s0,25(s2) + 6f0: 00090003 lb zero,0(s2) + 6f4: 0100 addi s0,sp,128 + 6f6: 0300 addi s0,sp,384 + 6f8: 9904 0x9904 + 6fa: 0301 addi t1,t1,0 + 6fc: 0900 addi s0,sp,144 + 6fe: 0000 unimp + 700: 0001 nop + 702: 01990403 lb s0,25(s2) + 706: 00090003 lb zero,0(s2) + 70a: 0100 addi s0,sp,128 + 70c: 0300 addi s0,sp,384 + 70e: 9904 0x9904 + 710: 0301 addi t1,t1,0 + 712: 0900 addi s0,sp,144 + 714: 0000 unimp + 716: 0001 nop + 718: 01990403 lb s0,25(s2) + 71c: 00090003 lb zero,0(s2) + 720: 0100 addi s0,sp,128 + 722: 0300 addi s0,sp,384 + 724: 9904 0x9904 + 726: 0301 addi t1,t1,0 + 728: 0900 addi s0,sp,144 + 72a: 0000 unimp + 72c: 0001 nop + 72e: 019b0403 lb s0,25(s6) # 55010c71 <_start-0x2afef38f> + 732: 04090003 lb zero,64(s2) + 736: 0100 addi s0,sp,128 + 738: 0306 slli t1,t1,0x1 + 73a: 0900 addi s0,sp,144 + 73c: 0008 0x8 + 73e: 0001 nop + 740: 0402 c.slli64 s0 + 742: 067c addi a5,sp,780 + 744: 14090003 lb zero,320(s2) + 748: 0100 addi s0,sp,128 + 74a: 0200 addi s0,sp,256 + 74c: 7c04 flw fs1,56(s0) + 74e: 00090003 lb zero,0(s2) + 752: 0100 addi s0,sp,128 + 754: 0200 addi s0,sp,256 + 756: 7c04 flw fs1,56(s0) + 758: 00090003 lb zero,0(s2) + 75c: 0100 addi s0,sp,128 + 75e: 0200 addi s0,sp,256 + 760: 7c04 flw fs1,56(s0) + 762: 00090003 lb zero,0(s2) + 766: 0100 addi s0,sp,128 + 768: 0200 addi s0,sp,256 + 76a: 7c04 flw fs1,56(s0) + 76c: 00090003 lb zero,0(s2) + 770: 0100 addi s0,sp,128 + 772: 0200 addi s0,sp,256 + 774: 7c04 flw fs1,56(s0) + 776: 00090003 lb zero,0(s2) + 77a: 0100 addi s0,sp,128 + 77c: 0200 addi s0,sp,256 + 77e: 7c04 flw fs1,56(s0) + 780: 00090003 lb zero,0(s2) + 784: 0100 addi s0,sp,128 + 786: 0200 addi s0,sp,256 + 788: 7c04 flw fs1,56(s0) + 78a: 00090003 lb zero,0(s2) + 78e: 0100 addi s0,sp,128 + 790: 0200 addi s0,sp,256 + 792: 7c04 flw fs1,56(s0) + 794: 00090003 lb zero,0(s2) + 798: 0100 addi s0,sp,128 + 79a: 0200 addi s0,sp,256 + 79c: 7c04 flw fs1,56(s0) + 79e: 00090003 lb zero,0(s2) + 7a2: 0100 addi s0,sp,128 + 7a4: 0200 addi s0,sp,256 + 7a6: 7c04 flw fs1,56(s0) + 7a8: 00090003 lb zero,0(s2) + 7ac: 0100 addi s0,sp,128 + 7ae: 0306 slli t1,t1,0x1 + 7b0: 0900 addi s0,sp,144 + 7b2: 0008 0x8 + 7b4: 0001 nop + 7b6: 0402 c.slli64 s0 + 7b8: 0608 addi a0,sp,768 + 7ba: 28090003 lb zero,640(s2) + 7be: 0100 addi s0,sp,128 + 7c0: 0200 addi s0,sp,256 + 7c2: 0804 addi s1,sp,16 + 7c4: 00090003 lb zero,0(s2) + 7c8: 0100 addi s0,sp,128 + 7ca: 0300 addi s0,sp,384 + 7cc: c804 sw s1,16(s0) + 7ce: 0301 addi t1,t1,0 + 7d0: 0900 addi s0,sp,144 + 7d2: 0004 0x4 + 7d4: 0001 nop + 7d6: 01c80403 lb s0,28(a6) + 7da: 00090003 lb zero,0(s2) + 7de: 0100 addi s0,sp,128 + 7e0: 0300 addi s0,sp,384 + 7e2: c804 sw s1,16(s0) + 7e4: 0301 addi t1,t1,0 + 7e6: 0900 addi s0,sp,144 + 7e8: 0000 unimp + 7ea: 0001 nop + 7ec: 01ca0403 lb s0,28(s4) + 7f0: 04090003 lb zero,64(s2) + 7f4: 0100 addi s0,sp,128 + 7f6: 0300 addi s0,sp,384 + 7f8: cd04 sw s1,24(a0) + 7fa: 0301 addi t1,t1,0 + 7fc: 0900 addi s0,sp,144 + 7fe: 0008 0x8 + 800: 0001 nop + 802: 01cd0403 lb s0,28(s10) # 9fa2c <_start-0x7ff605d4> + 806: 00090003 lb zero,0(s2) + 80a: 0100 addi s0,sp,128 + 80c: 0300 addi s0,sp,384 + 80e: cd04 sw s1,24(a0) + 810: 0301 addi t1,t1,0 + 812: 0900 addi s0,sp,144 + 814: 0004 0x4 + 816: 0001 nop + 818: 01d60403 lb s0,29(a2) + 81c: 04090003 lb zero,64(s2) + 820: 0100 addi s0,sp,128 + 822: 0300 addi s0,sp,384 + 824: d604 sw s1,40(a2) + 826: 0301 addi t1,t1,0 + 828: 0900 addi s0,sp,144 + 82a: 0000 unimp + 82c: 0001 nop + 82e: 01d60403 lb s0,29(a2) + 832: 00090003 lb zero,0(s2) + 836: 0100 addi s0,sp,128 + 838: 0300 addi s0,sp,384 + 83a: d604 sw s1,40(a2) + 83c: 0301 addi t1,t1,0 + 83e: 0900 addi s0,sp,144 + 840: 0004 0x4 + 842: 0001 nop + 844: 01d60403 lb s0,29(a2) + 848: 0c090003 lb zero,192(s2) + 84c: 0100 addi s0,sp,128 + 84e: 0300 addi s0,sp,384 + 850: d604 sw s1,40(a2) + 852: 0301 addi t1,t1,0 + 854: 0900 addi s0,sp,144 + 856: 0000 unimp + 858: 0001 nop + 85a: 01d60403 lb s0,29(a2) + 85e: 00090003 lb zero,0(s2) + 862: 0100 addi s0,sp,128 + 864: 0300 addi s0,sp,384 + 866: 8f04 0x8f04 + 868: 0602 c.slli64 a2 + 86a: 04097f03 0x4097f03 + 86e: 0100 addi s0,sp,128 + 870: 0300 addi s0,sp,384 + 872: 8f04 0x8f04 + 874: 0302 c.slli64 t1 + 876: 0901 addi s2,s2,0 + 878: 0004 0x4 + 87a: 0001 nop + 87c: 01d70403 lb s0,29(a4) # 9c813 <_start-0x7ff637ed> + 880: 0306 slli t1,t1,0x1 + 882: 0900 addi s0,sp,144 + 884: 0004 0x4 + 886: 0001 nop + 888: 01ee0403 lb s0,30(t3) # 1a01e <_start-0x7ffe5fe2> + 88c: 08090003 lb zero,128(s2) + 890: 0100 addi s0,sp,128 + 892: 0300 addi s0,sp,384 + 894: ef04 fsw fs1,24(a4) + 896: 0301 addi t1,t1,0 + 898: 0900 addi s0,sp,144 + 89a: 0008 0x8 + 89c: 0001 nop + 89e: 01f10403 lb s0,31(sp) + 8a2: 08090003 lb zero,128(s2) + 8a6: 0100 addi s0,sp,128 + 8a8: 0300 addi s0,sp,384 + 8aa: f104 fsw fs1,32(a0) + 8ac: 0301 addi t1,t1,0 + 8ae: 0900 addi s0,sp,144 + 8b0: 0020 addi s0,sp,8 + 8b2: 0001 nop + 8b4: 01ff0403 lb s0,31(t5) # 8e807 <_start-0x7ff717f9> + 8b8: 04090003 lb zero,64(s2) + 8bc: 0100 addi s0,sp,128 + 8be: 0300 addi s0,sp,384 + 8c0: ff04 fsw fs1,56(a4) + 8c2: 0301 addi t1,t1,0 + 8c4: 0900 addi s0,sp,144 + 8c6: 0000 unimp + 8c8: 0001 nop + 8ca: 01ff0403 lb s0,31(t5) + 8ce: 00090003 lb zero,0(s2) + 8d2: 0100 addi s0,sp,128 + 8d4: 0300 addi s0,sp,384 + 8d6: ff04 fsw fs1,56(a4) + 8d8: 0301 addi t1,t1,0 + 8da: 0900 addi s0,sp,144 + 8dc: 0004 0x4 + 8de: 0001 nop + 8e0: 01ff0403 lb s0,31(t5) + 8e4: 0c090003 lb zero,192(s2) + 8e8: 0100 addi s0,sp,128 + 8ea: 0300 addi s0,sp,384 + 8ec: ff04 fsw fs1,56(a4) + 8ee: 0301 addi t1,t1,0 + 8f0: 0900 addi s0,sp,144 + 8f2: 0000 unimp + 8f4: 0001 nop + 8f6: 02b90403 lb s0,43(s2) + 8fa: 04090003 lb zero,64(s2) + 8fe: 0100 addi s0,sp,128 + 900: 0300 addi s0,sp,384 + 902: f504 fsw fs1,40(a0) + 904: 0302 c.slli64 t1 + 906: 0900 addi s0,sp,144 + 908: 0008 0x8 + 90a: 0001 nop + 90c: 02f50403 lb s0,47(a0) # c36e5 <_start-0x7ff3c91b> + 910: 00090003 lb zero,0(s2) + 914: 0100 addi s0,sp,128 + 916: 0300 addi s0,sp,384 + 918: cb04 sw s1,16(a4) + 91a: 0301 addi t1,t1,0 + 91c: 0900 addi s0,sp,144 + 91e: 0014 0x14 + 920: 0001 nop + 922: 01e50403 lb s0,30(a0) + 926: 08090003 lb zero,128(s2) + 92a: 0100 addi s0,sp,128 + 92c: 0300 addi s0,sp,384 + 92e: f204 fsw fs1,32(a2) + 930: 0301 addi t1,t1,0 + 932: 0900 addi s0,sp,144 + 934: 0010 0x10 + 936: 0001 nop + 938: 01f90403 lb s0,31(s2) + 93c: 0306 slli t1,t1,0x1 + 93e: 0900 addi s0,sp,144 + 940: 0014 0x14 + 942: 0001 nop + 944: 01fc0403 lb s0,31(s8) # 8a831 <_start-0x7ff757cf> + 948: 0c090003 lb zero,192(s2) + 94c: 0100 addi s0,sp,128 + 94e: 0300 addi s0,sp,384 + 950: fc04 fsw fs1,56(s0) + 952: 0601 addi a2,a2,0 + 954: 0c090003 lb zero,192(s2) + 958: 0100 addi s0,sp,128 + 95a: 0300 addi s0,sp,384 + 95c: f004 fsw fs1,32(s0) + 95e: 0601 addi a2,a2,0 + 960: 00090003 lb zero,0(s2) + 964: 0100 addi s0,sp,128 + 966: 0300 addi s0,sp,384 + 968: f004 fsw fs1,32(s0) + 96a: 0601 addi a2,a2,0 + 96c: 08090003 lb zero,128(s2) + 970: 0100 addi s0,sp,128 + 972: 0300 addi s0,sp,384 + 974: c904 sw s1,16(a0) + 976: 0301 addi t1,t1,0 + 978: 0900 addi s0,sp,144 + 97a: 000c 0xc + 97c: 0001 nop + 97e: 02810403 lb s0,40(sp) + 982: 04090003 lb zero,64(s2) + 986: 0100 addi s0,sp,128 + 988: 0300 addi s0,sp,384 + 98a: 8104 0x8104 + 98c: 0302 c.slli64 t1 + 98e: 0900 addi s0,sp,144 + 990: 0004 0x4 + 992: 0001 nop + 994: 02810403 lb s0,40(sp) + 998: 00090003 lb zero,0(s2) + 99c: 0100 addi s0,sp,128 + 99e: 0300 addi s0,sp,384 + 9a0: 8104 0x8104 + 9a2: 0302 c.slli64 t1 + 9a4: 0900 addi s0,sp,144 + 9a6: 0000 unimp + 9a8: 0001 nop + 9aa: 02830403 lb s0,40(t1) # 900030e <_start-0x76fffcf2> + 9ae: 04090003 lb zero,64(s2) + 9b2: 0100 addi s0,sp,128 + 9b4: 0300 addi s0,sp,384 + 9b6: 8604 0x8604 + 9b8: 0302 c.slli64 t1 + 9ba: 0900 addi s0,sp,144 + 9bc: 0008 0x8 + 9be: 0001 nop + 9c0: 02860403 lb s0,40(a2) + 9c4: 00090003 lb zero,0(s2) + 9c8: 0100 addi s0,sp,128 + 9ca: 0300 addi s0,sp,384 + 9cc: 8604 0x8604 + 9ce: 0302 c.slli64 t1 + 9d0: 0900 addi s0,sp,144 + 9d2: 0004 0x4 + 9d4: 0001 nop + 9d6: 028f0403 lb s0,40(t5) + 9da: 04090003 lb zero,64(s2) + 9de: 0100 addi s0,sp,128 + 9e0: 0300 addi s0,sp,384 + 9e2: 8f04 0x8f04 + 9e4: 0302 c.slli64 t1 + 9e6: 0900 addi s0,sp,144 + 9e8: 0000 unimp + 9ea: 0001 nop + 9ec: 028f0403 lb s0,40(t5) + 9f0: 00090003 lb zero,0(s2) + 9f4: 0100 addi s0,sp,128 + 9f6: 0300 addi s0,sp,384 + 9f8: 8f04 0x8f04 + 9fa: 0302 c.slli64 t1 + 9fc: 0900 addi s0,sp,144 + 9fe: 0004 0x4 + a00: 0001 nop + a02: 028f0403 lb s0,40(t5) + a06: 0c090003 lb zero,192(s2) + a0a: 0100 addi s0,sp,128 + a0c: 0300 addi s0,sp,384 + a0e: 8f04 0x8f04 + a10: 0302 c.slli64 t1 + a12: 0900 addi s0,sp,144 + a14: 0000 unimp + a16: 0001 nop + a18: 028f0403 lb s0,40(t5) + a1c: 00090003 lb zero,0(s2) + a20: 0100 addi s0,sp,128 + a22: 0300 addi s0,sp,384 + a24: 9004 0x9004 + a26: 0302 c.slli64 t1 + a28: 0900 addi s0,sp,144 + a2a: 0008 0x8 + a2c: 0601 addi a2,a2,0 + a2e: 08097f03 0x8097f03 + a32: 0100 addi s0,sp,128 + a34: 08090103 lb sp,128(s2) + a38: 0100 addi s0,sp,128 + a3a: 0300 addi s0,sp,384 + a3c: 8404 0x8404 + a3e: 0602 c.slli64 a2 + a40: 08090003 lb zero,128(s2) + a44: 0100 addi s0,sp,128 + a46: 0300 addi s0,sp,384 + a48: 9e04 0x9e04 + a4a: 0302 c.slli64 t1 + a4c: 0900 addi s0,sp,144 + a4e: 0008 0x8 + a50: 0001 nop + a52: 02a70403 lb s0,42(a4) + a56: 0c090003 lb zero,192(s2) + a5a: 0100 addi s0,sp,128 + a5c: 0300 addi s0,sp,384 + a5e: a804 fsd fs1,16(s0) + a60: 0302 c.slli64 t1 + a62: 0900 addi s0,sp,144 + a64: 0008 0x8 + a66: 0001 nop + a68: 02aa0403 lb s0,42(s4) + a6c: 08090003 lb zero,128(s2) + a70: 0100 addi s0,sp,128 + a72: 0300 addi s0,sp,384 + a74: aa04 fsd fs1,16(a2) + a76: 0302 c.slli64 t1 + a78: 0900 addi s0,sp,144 + a7a: 0020 addi s0,sp,8 + a7c: 0001 nop + a7e: 02b80403 lb s0,43(a6) + a82: 04090003 lb zero,64(s2) + a86: 0100 addi s0,sp,128 + a88: 0300 addi s0,sp,384 + a8a: b804 fsd fs1,48(s0) + a8c: 0302 c.slli64 t1 + a8e: 0900 addi s0,sp,144 + a90: 0000 unimp + a92: 0001 nop + a94: 02b80403 lb s0,43(a6) + a98: 00090003 lb zero,0(s2) + a9c: 0100 addi s0,sp,128 + a9e: 0300 addi s0,sp,384 + aa0: b804 fsd fs1,48(s0) + aa2: 0302 c.slli64 t1 + aa4: 0900 addi s0,sp,144 + aa6: 0004 0x4 + aa8: 0001 nop + aaa: 02b80403 lb s0,43(a6) + aae: 0c090003 lb zero,192(s2) + ab2: 0100 addi s0,sp,128 + ab4: 0300 addi s0,sp,384 + ab6: b804 fsd fs1,48(s0) + ab8: 0302 c.slli64 t1 + aba: 0900 addi s0,sp,144 + abc: 0000 unimp + abe: 0001 nop + ac0: 02b80403 lb s0,43(a6) + ac4: 0306 slli t1,t1,0x1 + ac6: 097f 0x97f + ac8: 0000 unimp + aca: 0001 nop + acc: 02ab0403 lb s0,42(s6) + ad0: 0306 slli t1,t1,0x1 + ad2: 0901 addi s2,s2,0 + ad4: 000c 0xc + ad6: 0001 nop + ad8: 02b20403 lb s0,43(tp) # 1d02b <_start-0x7ffe2fd5> + adc: 0306 slli t1,t1,0x1 + ade: 0900 addi s0,sp,144 + ae0: 0014 0x14 + ae2: 0001 nop + ae4: 02b50403 lb s0,43(a0) + ae8: 0c090003 lb zero,192(s2) + aec: 0100 addi s0,sp,128 + aee: 0300 addi s0,sp,384 + af0: b504 fsd fs1,40(a0) + af2: 0602 c.slli64 a2 + af4: 0c090003 lb zero,192(s2) + af8: 0100 addi s0,sp,128 + afa: 0300 addi s0,sp,384 + afc: a904 fsd fs1,16(a0) + afe: 0602 c.slli64 a2 + b00: 00090003 lb zero,0(s2) + b04: 0100 addi s0,sp,128 + b06: 0300 addi s0,sp,384 + b08: a904 fsd fs1,16(a0) + b0a: 0602 c.slli64 a2 + b0c: 08090003 lb zero,128(s2) + b10: 0100 addi s0,sp,128 + b12: 0300 addi s0,sp,384 + b14: 8204 0x8204 + b16: 0302 c.slli64 t1 + b18: 0900 addi s0,sp,144 + b1a: 000c 0xc + b1c: 0001 nop + b1e: 02ba0403 lb s0,43(s4) + b22: 0c090003 lb zero,192(s2) + b26: 0100 addi s0,sp,128 + b28: 0300 addi s0,sp,384 + b2a: bc04 fsd fs1,56(s0) + b2c: 0302 c.slli64 t1 + b2e: 0900 addi s0,sp,144 + b30: 000c 0xc + b32: 0001 nop + b34: 02bc0403 lb s0,43(s8) + b38: 00090003 lb zero,0(s2) + b3c: 0100 addi s0,sp,128 + b3e: 0300 addi s0,sp,384 + b40: be04 fsd fs1,56(a2) + b42: 0302 c.slli64 t1 + b44: 0900 addi s0,sp,144 + b46: 0004 0x4 + b48: 0001 nop + b4a: 02be0403 lb s0,43(t3) + b4e: 00090003 lb zero,0(s2) + b52: 0100 addi s0,sp,128 + b54: 0306 slli t1,t1,0x1 + b56: 097f 0x97f + b58: 0004 0x4 + b5a: 0001 nop + b5c: 02bf0403 lb s0,43(t5) + b60: 0306 slli t1,t1,0x1 + b62: 0901 addi s2,s2,0 + b64: 0010 0x10 + b66: 0001 nop + b68: 02c60403 lb s0,44(a2) + b6c: 04090003 lb zero,64(s2) + b70: 0100 addi s0,sp,128 + b72: 0300 addi s0,sp,384 + b74: c604 sw s1,8(a2) + b76: 0302 c.slli64 t1 + b78: 0900 addi s0,sp,144 + b7a: 0000 unimp + b7c: 0001 nop + b7e: 02c60403 lb s0,44(a2) + b82: 00090003 lb zero,0(s2) + b86: 0100 addi s0,sp,128 + b88: 0300 addi s0,sp,384 + b8a: c604 sw s1,8(a2) + b8c: 0302 c.slli64 t1 + b8e: 0900 addi s0,sp,144 + b90: 0000 unimp + b92: 0001 nop + b94: 02c60403 lb s0,44(a2) + b98: 04090003 lb zero,64(s2) + b9c: 0100 addi s0,sp,128 + b9e: 0300 addi s0,sp,384 + ba0: c604 sw s1,8(a2) + ba2: 0302 c.slli64 t1 + ba4: 0900 addi s0,sp,144 + ba6: 000c 0xc + ba8: 0001 nop + baa: 02c60403 lb s0,44(a2) + bae: 00090003 lb zero,0(s2) + bb2: 0100 addi s0,sp,128 + bb4: 0300 addi s0,sp,384 + bb6: c604 sw s1,8(a2) + bb8: 0302 c.slli64 t1 + bba: 0900 addi s0,sp,144 + bbc: 0000 unimp + bbe: 0001 nop + bc0: 02c60403 lb s0,44(a2) + bc4: 00090003 lb zero,0(s2) + bc8: 0100 addi s0,sp,128 + bca: 0300 addi s0,sp,384 + bcc: c804 sw s1,16(s0) + bce: 0302 c.slli64 t1 + bd0: 0900 addi s0,sp,144 + bd2: 0008 0x8 + bd4: 0001 nop + bd6: 02c80403 lb s0,44(a6) + bda: 00090003 lb zero,0(s2) + bde: 0100 addi s0,sp,128 + be0: 0300 addi s0,sp,384 + be2: c804 sw s1,16(s0) + be4: 0302 c.slli64 t1 + be6: 0900 addi s0,sp,144 + be8: 0000 unimp + bea: 0001 nop + bec: 02c80403 lb s0,44(a6) + bf0: 04090003 lb zero,64(s2) + bf4: 0100 addi s0,sp,128 + bf6: 0300 addi s0,sp,384 + bf8: c804 sw s1,16(s0) + bfa: 0302 c.slli64 t1 + bfc: 0900 addi s0,sp,144 + bfe: 000c 0xc + c00: 0001 nop + c02: 02c80403 lb s0,44(a6) + c06: 00090003 lb zero,0(s2) + c0a: 0100 addi s0,sp,128 + c0c: 0300 addi s0,sp,384 + c0e: c804 sw s1,16(s0) + c10: 0302 c.slli64 t1 + c12: 0900 addi s0,sp,144 + c14: 0000 unimp + c16: 0001 nop + c18: 02c90403 lb s0,44(s2) + c1c: 04090003 lb zero,64(s2) + c20: 0100 addi s0,sp,128 + c22: 0306 slli t1,t1,0x1 + c24: 0900 addi s0,sp,144 + c26: 0008 0x8 + c28: 0001 nop + c2a: 02dc0403 lb s0,45(s8) + c2e: 0306 slli t1,t1,0x1 + c30: 0900 addi s0,sp,144 + c32: 000c 0xc + c34: 0001 nop + c36: 02dc0403 lb s0,45(s8) + c3a: 00090003 lb zero,0(s2) + c3e: 0100 addi s0,sp,128 + c40: 0300 addi s0,sp,384 + c42: dc04 sw s1,56(s0) + c44: 0302 c.slli64 t1 + c46: 0900 addi s0,sp,144 + c48: 0000 unimp + c4a: 0001 nop + c4c: 02dc0403 lb s0,45(s8) + c50: 00090003 lb zero,0(s2) + c54: 0100 addi s0,sp,128 + c56: 0300 addi s0,sp,384 + c58: dc04 sw s1,56(s0) + c5a: 0302 c.slli64 t1 + c5c: 0900 addi s0,sp,144 + c5e: 0000 unimp + c60: 0001 nop + c62: 02dc0403 lb s0,45(s8) + c66: 00090003 lb zero,0(s2) + c6a: 0100 addi s0,sp,128 + c6c: 0300 addi s0,sp,384 + c6e: dc04 sw s1,56(s0) + c70: 0302 c.slli64 t1 + c72: 0900 addi s0,sp,144 + c74: 0000 unimp + c76: 0001 nop + c78: 02dc0403 lb s0,45(s8) + c7c: 00090003 lb zero,0(s2) + c80: 0100 addi s0,sp,128 + c82: 0300 addi s0,sp,384 + c84: dd04 sw s1,56(a0) + c86: 0302 c.slli64 t1 + c88: 0900 addi s0,sp,144 + c8a: 0004 0x4 + c8c: 0601 addi a2,a2,0 + c8e: 04097f03 0x4097f03 + c92: 0100 addi s0,sp,128 + c94: 08090103 lb sp,128(s2) + c98: 0100 addi s0,sp,128 + c9a: 0300 addi s0,sp,384 + c9c: de04 sw s1,56(a2) + c9e: 0602 c.slli64 a2 + ca0: 08090003 lb zero,128(s2) + ca4: 0100 addi s0,sp,128 + ca6: 0300 addi s0,sp,384 + ca8: bb04 fsd fs1,48(a4) + caa: 0302 c.slli64 t1 + cac: 0900 addi s0,sp,144 + cae: 0008 0x8 + cb0: 0001 nop + cb2: 02bb0403 lb s0,43(s6) + cb6: 00090003 lb zero,0(s2) + cba: 0100 addi s0,sp,128 + cbc: 0300 addi s0,sp,384 + cbe: bb04 fsd fs1,48(a4) + cc0: 0302 c.slli64 t1 + cc2: 0900 addi s0,sp,144 + cc4: 0000 unimp + cc6: 0001 nop + cc8: 02bb0403 lb s0,43(s6) + ccc: 00090003 lb zero,0(s2) + cd0: 0100 addi s0,sp,128 + cd2: 0300 addi s0,sp,384 + cd4: bb04 fsd fs1,48(a4) + cd6: 0302 c.slli64 t1 + cd8: 0900 addi s0,sp,144 + cda: 0004 0x4 + cdc: 0001 nop + cde: 02bb0403 lb s0,43(s6) + ce2: 0c090003 lb zero,192(s2) + ce6: 0100 addi s0,sp,128 + ce8: 0300 addi s0,sp,384 + cea: bb04 fsd fs1,48(a4) + cec: 0302 c.slli64 t1 + cee: 0900 addi s0,sp,144 + cf0: 0000 unimp + cf2: 0001 nop + cf4: 02bb0403 lb s0,43(s6) + cf8: 00090003 lb zero,0(s2) + cfc: 0100 addi s0,sp,128 + cfe: 0300 addi s0,sp,384 + d00: bb04 fsd fs1,48(a4) + d02: 0302 c.slli64 t1 + d04: 0900 addi s0,sp,144 + d06: 0000 unimp + d08: 0001 nop + d0a: 02ee0403 lb s0,46(t3) + d0e: 08090003 lb zero,128(s2) + d12: 0100 addi s0,sp,128 + d14: 0300 addi s0,sp,384 + d16: ee04 fsw fs1,24(a2) + d18: 0302 c.slli64 t1 + d1a: 0900 addi s0,sp,144 + d1c: 0000 unimp + d1e: 0001 nop + d20: 02ee0403 lb s0,46(t3) + d24: 00090003 lb zero,0(s2) + d28: 0100 addi s0,sp,128 + d2a: 0300 addi s0,sp,384 + d2c: ee04 fsw fs1,24(a2) + d2e: 0302 c.slli64 t1 + d30: 0900 addi s0,sp,144 + d32: 0004 0x4 + d34: 0001 nop + d36: 02ee0403 lb s0,46(t3) + d3a: 0c090003 lb zero,192(s2) + d3e: 0100 addi s0,sp,128 + d40: 0300 addi s0,sp,384 + d42: ee04 fsw fs1,24(a2) + d44: 0302 c.slli64 t1 + d46: 0900 addi s0,sp,144 + d48: 0000 unimp + d4a: 0001 nop + d4c: 02ee0403 lb s0,46(t3) + d50: 00090003 lb zero,0(s2) + d54: 0100 addi s0,sp,128 + d56: 0300 addi s0,sp,384 + d58: f704 fsw fs1,40(a4) + d5a: 0302 c.slli64 t1 + d5c: 0900 addi s0,sp,144 + d5e: 0004 0x4 + d60: 0001 nop + d62: 02f70403 lb s0,47(a4) + d66: 00090003 lb zero,0(s2) + d6a: 0100 addi s0,sp,128 + d6c: 0300 addi s0,sp,384 + d6e: fa04 fsw fs1,48(a2) + d70: 0302 c.slli64 t1 + d72: 0900 addi s0,sp,144 + d74: 0004 0x4 + d76: 0001 nop + d78: 02fa0403 lb s0,47(s4) + d7c: 00090003 lb zero,0(s2) + d80: 0100 addi s0,sp,128 + d82: 0300 addi s0,sp,384 + d84: fa04 fsw fs1,48(a2) + d86: 0302 c.slli64 t1 + d88: 0900 addi s0,sp,144 + d8a: 0000 unimp + d8c: 0001 nop + d8e: 02fa0403 lb s0,47(s4) + d92: 00090003 lb zero,0(s2) + d96: 0100 addi s0,sp,128 + d98: 0300 addi s0,sp,384 + d9a: fa04 fsw fs1,48(a2) + d9c: 0302 c.slli64 t1 + d9e: 0900 addi s0,sp,144 + da0: 0008 0x8 + da2: 0001 nop + da4: 03880403 lb s0,56(a6) + da8: 00090003 lb zero,0(s2) + dac: 0100 addi s0,sp,128 + dae: 0300 addi s0,sp,384 + db0: 8804 0x8804 + db2: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + db6: 0000 unimp + db8: 0001 nop + dba: 03880403 lb s0,56(a6) + dbe: 04090003 lb zero,64(s2) + dc2: 0100 addi s0,sp,128 + dc4: 0300 addi s0,sp,384 + dc6: 8904 0x8904 + dc8: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + dcc: 0008 0x8 + dce: 0001 nop + dd0: 03890403 lb s0,56(s2) + dd4: 00090003 lb zero,0(s2) + dd8: 0100 addi s0,sp,128 + dda: 0300 addi s0,sp,384 + ddc: 8904 0x8904 + dde: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + de2: 0014 0x14 + de4: 0001 nop + de6: 03920403 lb s0,57(tp) # 39 <_start-0x7fffffc7> + dea: 04090003 lb zero,64(s2) + dee: 0100 addi s0,sp,128 + df0: 0300 addi s0,sp,384 + df2: 9304 0x9304 + df4: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + df8: 0004 0x4 + dfa: 0001 nop + dfc: 03930403 lb s0,57(t1) + e00: 08090003 lb zero,128(s2) + e04: 0100 addi s0,sp,128 + e06: 0300 addi s0,sp,384 + e08: 9504 0x9504 + e0a: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + e0e: 0008 0x8 + e10: 0001 nop + e12: 03950403 lb s0,57(a0) + e16: 20090003 lb zero,512(s2) + e1a: 0100 addi s0,sp,128 + e1c: 0300 addi s0,sp,384 + e1e: a104 fsd fs1,0(a0) + e20: 00030603 lb a2,0(t1) + e24: 0409 addi s0,s0,2 + e26: 0100 addi s0,sp,128 + e28: 0300 addi s0,sp,384 + e2a: ef04 fsw fs1,24(a4) + e2c: 0602 c.slli64 a2 + e2e: 08090003 lb zero,128(s2) + e32: 0100 addi s0,sp,128 + e34: 0306 slli t1,t1,0x1 + e36: 0900 addi s0,sp,144 + e38: 000c 0xc + e3a: 0001 nop + e3c: 03810403 lb s0,56(sp) + e40: 0306 slli t1,t1,0x1 + e42: 0900 addi s0,sp,144 + e44: 0008 0x8 + e46: 0001 nop + e48: 03810403 lb s0,56(sp) + e4c: 00090003 lb zero,0(s2) + e50: 0100 addi s0,sp,128 + e52: 0300 addi s0,sp,384 + e54: 8104 0x8104 + e56: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + e5a: 0000 unimp + e5c: 0001 nop + e5e: 03810403 lb s0,56(sp) + e62: 00090003 lb zero,0(s2) + e66: 0100 addi s0,sp,128 + e68: 0300 addi s0,sp,384 + e6a: 8104 0x8104 + e6c: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + e70: 0008 0x8 + e72: 0001 nop + e74: 03810403 lb s0,56(sp) + e78: 00090003 lb zero,0(s2) + e7c: 0100 addi s0,sp,128 + e7e: 0300 addi s0,sp,384 + e80: 8a04 0x8a04 + e82: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + e86: 0008 0x8 + e88: 0001 nop + e8a: 038a0403 lb s0,56(s4) + e8e: 08090003 lb zero,128(s2) + e92: 0100 addi s0,sp,128 + e94: 0300 addi s0,sp,384 + e96: 9604 0x9604 + e98: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + e9c: 0008 0x8 + e9e: 0001 nop + ea0: 039e0403 lb s0,57(t3) + ea4: 0306 slli t1,t1,0x1 + ea6: 0900 addi s0,sp,144 + ea8: 0014 0x14 + eaa: 0001 nop + eac: 03a10403 lb s0,58(sp) + eb0: 0c090003 lb zero,192(s2) + eb4: 0100 addi s0,sp,128 + eb6: 0300 addi s0,sp,384 + eb8: a104 fsd fs1,0(a0) + eba: 00030603 lb a2,0(t1) + ebe: 0c09 addi s8,s8,2 + ec0: 0100 addi s0,sp,128 + ec2: 0300 addi s0,sp,384 + ec4: 9404 0x9404 + ec6: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + eca: 0008 0x8 + ecc: 0001 nop + ece: 03940403 lb s0,57(s0) + ed2: 0c090003 lb zero,192(s2) + ed6: 0100 addi s0,sp,128 + ed8: 0306 slli t1,t1,0x1 + eda: 097f 0x97f + edc: 0008 0x8 + ede: 0301 addi t1,t1,0 + ee0: 0901 addi s2,s2,0 + ee2: 0008 0x8 + ee4: 0301 addi t1,t1,0 + ee6: 097f 0x97f + ee8: 0008 0x8 + eea: 0001 nop + eec: 0402 c.slli64 s0 + eee: 0203062f 0x203062f + ef2: 1809 addi a6,a6,-30 + ef4: 0100 addi s0,sp,128 + ef6: 0200 addi s0,sp,256 + ef8: 2f04 fld fs1,24(a4) + efa: 00090003 lb zero,0(s2) + efe: 0100 addi s0,sp,128 + f00: 0200 addi s0,sp,256 + f02: 2f04 fld fs1,24(a4) + f04: 00090003 lb zero,0(s2) + f08: 0100 addi s0,sp,128 + f0a: 0200 addi s0,sp,256 + f0c: 3f04 fld fs1,56(a4) + f0e: 08090003 lb zero,128(s2) + f12: 0100 addi s0,sp,128 + f14: 0200 addi s0,sp,256 + f16: 3f04 fld fs1,56(a4) + f18: 00090003 lb zero,0(s2) + f1c: 0100 addi s0,sp,128 + f1e: 0200 addi s0,sp,256 + f20: 3f04 fld fs1,56(a4) + f22: 04090003 lb zero,64(s2) + f26: 0100 addi s0,sp,128 + f28: 0306 slli t1,t1,0x1 + f2a: 0900 addi s0,sp,144 + f2c: 0008 0x8 + f2e: 0001 nop + f30: 0402 c.slli64 s0 + f32: 0003064f fnmadd.s fa2,ft6,ft0,ft0,rne + f36: 0c09 addi s8,s8,2 + f38: 0100 addi s0,sp,128 + f3a: 0200 addi s0,sp,256 + f3c: 4f04 lw s1,24(a4) + f3e: 00090003 lb zero,0(s2) + f42: 0100 addi s0,sp,128 + f44: 0200 addi s0,sp,256 + f46: 4f04 lw s1,24(a4) + f48: 00090003 lb zero,0(s2) + f4c: 0100 addi s0,sp,128 + f4e: 0200 addi s0,sp,256 + f50: 4f04 lw s1,24(a4) + f52: 0c090003 lb zero,192(s2) + f56: 0100 addi s0,sp,128 + f58: 0200 addi s0,sp,256 + f5a: 4f04 lw s1,24(a4) + f5c: 08090003 lb zero,128(s2) + f60: 0100 addi s0,sp,128 + f62: 0200 addi s0,sp,256 + f64: 5004 lw s1,32(s0) + f66: 0306 slli t1,t1,0x1 + f68: 0900 addi s0,sp,144 + f6a: 0004 0x4 + f6c: 0301 addi t1,t1,0 + f6e: 0900 addi s0,sp,144 + f70: 000c 0xc + f72: 0001 nop + f74: 0402 c.slli64 s0 + f76: 065a slli a2,a2,0x16 + f78: 0c090003 lb zero,192(s2) + f7c: 0100 addi s0,sp,128 + f7e: 0200 addi s0,sp,256 + f80: 5a04 lw s1,48(a2) + f82: 00090003 lb zero,0(s2) + f86: 0100 addi s0,sp,128 + f88: 0200 addi s0,sp,256 + f8a: 5a04 lw s1,48(a2) + f8c: 00090003 lb zero,0(s2) + f90: 0100 addi s0,sp,128 + f92: 0200 addi s0,sp,256 + f94: 5a04 lw s1,48(a2) + f96: 00090003 lb zero,0(s2) + f9a: 0100 addi s0,sp,128 + f9c: 0200 addi s0,sp,256 + f9e: 5a04 lw s1,48(a2) + fa0: 00090003 lb zero,0(s2) + fa4: 0100 addi s0,sp,128 + fa6: 0200 addi s0,sp,256 + fa8: 5a04 lw s1,48(a2) + faa: 00090003 lb zero,0(s2) + fae: 0100 addi s0,sp,128 + fb0: 0200 addi s0,sp,256 + fb2: 5a04 lw s1,48(a2) + fb4: 00090003 lb zero,0(s2) + fb8: 0100 addi s0,sp,128 + fba: 0200 addi s0,sp,256 + fbc: 5a04 lw s1,48(a2) + fbe: 00090003 lb zero,0(s2) + fc2: 0100 addi s0,sp,128 + fc4: 0200 addi s0,sp,256 + fc6: 5a04 lw s1,48(a2) + fc8: 00090003 lb zero,0(s2) + fcc: 0100 addi s0,sp,128 + fce: 0105 addi sp,sp,1 + fd0: 0200 addi s0,sp,256 + fd2: 5a04 lw s1,48(a2) + fd4: 0306 slli t1,t1,0x1 + fd6: 0904 addi s1,sp,144 + fd8: 000c 0xc + fda: 0501 addi a0,a0,0 + fdc: 04020003 lb zero,64(tp) # 40 <_start-0x7fffffc0> + fe0: 035a slli t1,t1,0x16 + fe2: 097c addi a5,sp,156 + fe4: 0008 0x8 + fe6: 0001 nop + fe8: 0402 c.slli64 s0 + fea: 065a slli a2,a2,0x16 + fec: 14090003 lb zero,320(s2) + ff0: 0100 addi s0,sp,128 + ff2: 0200 addi s0,sp,256 + ff4: 5a04 lw s1,48(a2) + ff6: 00090003 lb zero,0(s2) + ffa: 0100 addi s0,sp,128 + ffc: 0200 addi s0,sp,256 + ffe: 5a04 lw s1,48(a2) + 1000: 00090103 lb sp,0(s2) + 1004: 0100 addi s0,sp,128 + 1006: 0200 addi s0,sp,256 + 1008: 5a04 lw s1,48(a2) + 100a: 00090003 lb zero,0(s2) + 100e: 0100 addi s0,sp,128 + 1010: 0200 addi s0,sp,256 + 1012: 5a04 lw s1,48(a2) + 1014: 00090003 lb zero,0(s2) + 1018: 0100 addi s0,sp,128 + 101a: 0200 addi s0,sp,256 + 101c: 5a04 lw s1,48(a2) + 101e: 00090203 lb tp,0(s2) + 1022: 0100 addi s0,sp,128 + 1024: 0105 addi sp,sp,1 + 1026: 0200 addi s0,sp,256 + 1028: 5a04 lw s1,48(a2) + 102a: 0306 slli t1,t1,0x1 + 102c: 0901 addi s2,s2,0 + 102e: 0000 unimp + 1030: 0501 addi a0,a0,0 + 1032: 097a0303 lb t1,151(s4) + 1036: 0018 0x18 + 1038: 0301 addi t1,t1,0 + 103a: 0901 addi s2,s2,0 + 103c: 0008 0x8 + 103e: 0901 addi s2,s2,0 + 1040: 003c addi a5,sp,8 + 1042: 0100 addi s0,sp,128 + 1044: 9701 srai a4,a4,0x20 + 1046: 0300000f fence rw,unknown + 104a: 9300 0x9300 + 104c: 0000 unimp + 104e: 0100 addi s0,sp,128 + 1050: fb01 bnez a4,f60 <_start-0x7ffff0a0> + 1052: 0d0e slli s10,s10,0x3 + 1054: 0100 addi s0,sp,128 + 1056: 0101 addi sp,sp,0 + 1058: 0001 nop + 105a: 0000 unimp + 105c: 0001 nop + 105e: 0100 addi s0,sp,128 + 1060: 2e2e fld ft8,200(sp) + 1062: 2f2e2e2f 0x2f2e2e2f + 1066: 2e2e fld ft8,200(sp) + 1068: 2f2e2e2f 0x2f2e2e2f + 106c: 6972 flw fs2,28(sp) + 106e: 2d766373 csrrsi t1,0x2d7,12 + 1072: 2f636367 0x2f636367 + 1076: 696c flw fa1,84(a0) + 1078: 6762 flw fa4,24(sp) + 107a: 732f6363 bltu t5,s2,17a0 <_start-0x7fffe860> + 107e: 2d74666f jal a2,47b54 <_start-0x7ffb84ac> + 1082: 7066 flw ft0,120(sp) + 1084: 2e00 fld fs0,24(a2) + 1086: 2f2e fld ft10,200(sp) + 1088: 2e2e fld ft8,200(sp) + 108a: 2f2e2e2f 0x2f2e2e2f + 108e: 2e2e fld ft8,200(sp) + 1090: 7369722f 0x7369722f + 1094: 672d7663 bgeu s10,s2,1700 <_start-0x7fffe900> + 1098: 6c2f6363 bltu t5,sp,175e <_start-0x7fffe8a2> + 109c: 6269 lui tp,0x1a + 109e: 2f636367 0x2f636367 + 10a2: 2e2e fld ft8,200(sp) + 10a4: 636e692f 0x636e692f + 10a8: 756c flw fa1,108(a0) + 10aa: 6564 flw fs1,76(a0) + 10ac: 0000 unimp + 10ae: 6964 flw fs1,84(a0) + 10b0: 6476 flw fs0,92(sp) + 10b2: 3366 fld ft6,120(sp) + 10b4: 632e flw ft6,200(sp) + 10b6: 0100 addi s0,sp,128 + 10b8: 0000 unimp + 10ba: 74666f73 csrrsi t5,0x746,12 + 10be: 662d lui a2,0xb + 10c0: 2e70 fld fa2,216(a2) + 10c2: 0068 addi a0,sp,12 + 10c4: 0001 nop + 10c6: 6400 flw fs0,8(s0) + 10c8: 6c62756f jal a0,2878e <_start-0x7ffd7872> + 10cc: 2e65 jal 1484 <_start-0x7fffeb7c> + 10ce: 0068 addi a0,sp,12 + 10d0: 0001 nop + 10d2: 6c00 flw fs0,24(s0) + 10d4: 6c676e6f jal t3,7779a <_start-0x7ff88866> + 10d8: 2e676e6f jal t3,773be <_start-0x7ff88c42> + 10dc: 0068 addi a0,sp,12 + 10de: 0002 c.slli64 zero + 10e0: 0000 unimp + 10e2: 0105 addi sp,sp,1 + 10e4: 0500 addi s0,sp,640 + 10e6: f402 fsw ft0,40(sp) + 10e8: 03800017 auipc zero,0x3800 + 10ec: 03050123 sb a6,34(a0) + 10f0: 00090103 lb sp,0(s2) + 10f4: 0100 addi s0,sp,128 + 10f6: 00090003 lb zero,0(s2) + 10fa: 0100 addi s0,sp,128 + 10fc: 0d05 addi s10,s10,1 + 10fe: 00090003 lb zero,0(s2) + 1102: 0100 addi s0,sp,128 + 1104: 0305 addi t1,t1,1 + 1106: 00090103 lb sp,0(s2) + 110a: 0100 addi s0,sp,128 + 110c: 00090003 lb zero,0(s2) + 1110: 0100 addi s0,sp,128 + 1112: 00090003 lb zero,0(s2) + 1116: 0100 addi s0,sp,128 + 1118: 00090003 lb zero,0(s2) + 111c: 0100 addi s0,sp,128 + 111e: 00090103 lb sp,0(s2) + 1122: 0100 addi s0,sp,128 + 1124: 00090003 lb zero,0(s2) + 1128: 0100 addi s0,sp,128 + 112a: 00090003 lb zero,0(s2) + 112e: 0100 addi s0,sp,128 + 1130: 00090003 lb zero,0(s2) + 1134: 0100 addi s0,sp,128 + 1136: 00090103 lb sp,0(s2) + 113a: 0100 addi s0,sp,128 + 113c: 00090003 lb zero,0(s2) + 1140: 0100 addi s0,sp,128 + 1142: 00090003 lb zero,0(s2) + 1146: 0100 addi s0,sp,128 + 1148: 00090003 lb zero,0(s2) + 114c: 0100 addi s0,sp,128 + 114e: 00090103 lb sp,0(s2) + 1152: 0100 addi s0,sp,128 + 1154: 00090203 lb tp,0(s2) + 1158: 0100 addi s0,sp,128 + 115a: 00090103 lb sp,0(s2) + 115e: 0100 addi s0,sp,128 + 1160: 00090003 lb zero,0(s2) + 1164: 0100 addi s0,sp,128 + 1166: 00090003 lb zero,0(s2) + 116a: 0100 addi s0,sp,128 + 116c: 00090003 lb zero,0(s2) + 1170: 0100 addi s0,sp,128 + 1172: 00090003 lb zero,0(s2) + 1176: 0100 addi s0,sp,128 + 1178: 00090003 lb zero,0(s2) + 117c: 0100 addi s0,sp,128 + 117e: 0105 addi sp,sp,1 + 1180: 0306 slli t1,t1,0x1 + 1182: 0978 addi a4,sp,156 + 1184: 0000 unimp + 1186: 0501 addi a0,a0,0 + 1188: 09080303 lb t1,144(a6) + 118c: 0004 0x4 + 118e: 0501 addi a0,a0,0 + 1190: 0301 addi t1,t1,0 + 1192: 0978 addi a4,sp,156 + 1194: 0004 0x4 + 1196: 0501 addi a0,a0,0 + 1198: 09080303 lb t1,144(a6) + 119c: 0014 0x14 + 119e: 0501 addi a0,a0,0 + 11a0: 0301 addi t1,t1,0 + 11a2: 0978 addi a4,sp,156 + 11a4: 0004 0x4 + 11a6: 0501 addi a0,a0,0 + 11a8: 09080303 lb t1,144(a6) + 11ac: 0014 0x14 + 11ae: 0501 addi a0,a0,0 + 11b0: 0301 addi t1,t1,0 + 11b2: 0978 addi a4,sp,156 + 11b4: 0004 0x4 + 11b6: 0501 addi a0,a0,0 + 11b8: 09080303 lb t1,144(a6) + 11bc: 000c 0xc + 11be: 0601 addi a2,a2,0 + 11c0: 04090003 lb zero,64(s2) + 11c4: 0100 addi s0,sp,128 + 11c6: 00090003 lb zero,0(s2) + 11ca: 0100 addi s0,sp,128 + 11cc: 04090003 lb zero,64(s2) + 11d0: 0100 addi s0,sp,128 + 11d2: 00090003 lb zero,0(s2) + 11d6: 0100 addi s0,sp,128 + 11d8: 00090003 lb zero,0(s2) + 11dc: 0100 addi s0,sp,128 + 11de: 0200 addi s0,sp,256 + 11e0: 0104 addi s1,sp,128 + 11e2: 10090003 lb zero,256(s2) + 11e6: 0100 addi s0,sp,128 + 11e8: 0200 addi s0,sp,256 + 11ea: 0104 addi s1,sp,128 + 11ec: 00090003 lb zero,0(s2) + 11f0: 0100 addi s0,sp,128 + 11f2: 0200 addi s0,sp,256 + 11f4: 0104 addi s1,sp,128 + 11f6: 00090003 lb zero,0(s2) + 11fa: 0100 addi s0,sp,128 + 11fc: 0200 addi s0,sp,256 + 11fe: 0104 addi s1,sp,128 + 1200: 00090003 lb zero,0(s2) + 1204: 0100 addi s0,sp,128 + 1206: 0200 addi s0,sp,256 + 1208: 0104 addi s1,sp,128 + 120a: 14090003 lb zero,320(s2) + 120e: 0100 addi s0,sp,128 + 1210: 0200 addi s0,sp,256 + 1212: 0104 addi s1,sp,128 + 1214: 04090003 lb zero,64(s2) + 1218: 0100 addi s0,sp,128 + 121a: 0200 addi s0,sp,256 + 121c: 0104 addi s1,sp,128 + 121e: 00090003 lb zero,0(s2) + 1222: 0100 addi s0,sp,128 + 1224: 0200 addi s0,sp,256 + 1226: 0104 addi s1,sp,128 + 1228: 04090003 lb zero,64(s2) + 122c: 0100 addi s0,sp,128 + 122e: 0200 addi s0,sp,256 + 1230: 0104 addi s1,sp,128 + 1232: 00090003 lb zero,0(s2) + 1236: 0100 addi s0,sp,128 + 1238: 0200 addi s0,sp,256 + 123a: 2904 fld fs1,16(a0) + 123c: 00090003 lb zero,0(s2) + 1240: 0100 addi s0,sp,128 + 1242: 0200 addi s0,sp,256 + 1244: 2904 fld fs1,16(a0) + 1246: 00090003 lb zero,0(s2) + 124a: 0100 addi s0,sp,128 + 124c: 0200 addi s0,sp,256 + 124e: 0804 addi s1,sp,16 + 1250: 04090003 lb zero,64(s2) + 1254: 0100 addi s0,sp,128 + 1256: 0200 addi s0,sp,256 + 1258: 0804 addi s1,sp,16 + 125a: 00090003 lb zero,0(s2) + 125e: 0100 addi s0,sp,128 + 1260: 0200 addi s0,sp,256 + 1262: 0804 addi s1,sp,16 + 1264: 00090103 lb sp,0(s2) + 1268: 0100 addi s0,sp,128 + 126a: 0200 addi s0,sp,256 + 126c: 0804 addi s1,sp,16 + 126e: 00090003 lb zero,0(s2) + 1272: 0100 addi s0,sp,128 + 1274: 0200 addi s0,sp,256 + 1276: 0804 addi s1,sp,16 + 1278: 00090003 lb zero,0(s2) + 127c: 0100 addi s0,sp,128 + 127e: 0200 addi s0,sp,256 + 1280: 0804 addi s1,sp,16 + 1282: 00090003 lb zero,0(s2) + 1286: 0100 addi s0,sp,128 + 1288: 0200 addi s0,sp,256 + 128a: 0804 addi s1,sp,16 + 128c: 00090003 lb zero,0(s2) + 1290: 0100 addi s0,sp,128 + 1292: 0200 addi s0,sp,256 + 1294: 0804 addi s1,sp,16 + 1296: 00090003 lb zero,0(s2) + 129a: 0100 addi s0,sp,128 + 129c: 0200 addi s0,sp,256 + 129e: 0804 addi s1,sp,16 + 12a0: 10090003 lb zero,256(s2) + 12a4: 0100 addi s0,sp,128 + 12a6: 0200 addi s0,sp,256 + 12a8: 0804 addi s1,sp,16 + 12aa: 04090003 lb zero,64(s2) + 12ae: 0100 addi s0,sp,128 + 12b0: 0200 addi s0,sp,256 + 12b2: 0804 addi s1,sp,16 + 12b4: 04090003 lb zero,64(s2) + 12b8: 0100 addi s0,sp,128 + 12ba: 0200 addi s0,sp,256 + 12bc: 0804 addi s1,sp,16 + 12be: 00090003 lb zero,0(s2) + 12c2: 0100 addi s0,sp,128 + 12c4: 0200 addi s0,sp,256 + 12c6: 0804 addi s1,sp,16 + 12c8: 00090003 lb zero,0(s2) + 12cc: 0100 addi s0,sp,128 + 12ce: 0306 slli t1,t1,0x1 + 12d0: 0900 addi s0,sp,144 + 12d2: 0004 0x4 + 12d4: 0001 nop + 12d6: 0402 c.slli64 s0 + 12d8: 0601 addi a2,a2,0 + 12da: 08090003 lb zero,128(s2) + 12de: 0100 addi s0,sp,128 + 12e0: 0200 addi s0,sp,256 + 12e2: 0104 addi s1,sp,128 + 12e4: 00090003 lb zero,0(s2) + 12e8: 0100 addi s0,sp,128 + 12ea: 0200 addi s0,sp,256 + 12ec: 0104 addi s1,sp,128 + 12ee: 00090003 lb zero,0(s2) + 12f2: 0100 addi s0,sp,128 + 12f4: 0200 addi s0,sp,256 + 12f6: 0104 addi s1,sp,128 + 12f8: 00090003 lb zero,0(s2) + 12fc: 0100 addi s0,sp,128 + 12fe: 0200 addi s0,sp,256 + 1300: 0104 addi s1,sp,128 + 1302: 14090003 lb zero,320(s2) + 1306: 0100 addi s0,sp,128 + 1308: 0200 addi s0,sp,256 + 130a: 0104 addi s1,sp,128 + 130c: 04090003 lb zero,64(s2) + 1310: 0100 addi s0,sp,128 + 1312: 0200 addi s0,sp,256 + 1314: 0104 addi s1,sp,128 + 1316: 00090003 lb zero,0(s2) + 131a: 0100 addi s0,sp,128 + 131c: 0200 addi s0,sp,256 + 131e: 0104 addi s1,sp,128 + 1320: 04090003 lb zero,64(s2) + 1324: 0100 addi s0,sp,128 + 1326: 0200 addi s0,sp,256 + 1328: 0104 addi s1,sp,128 + 132a: 00090003 lb zero,0(s2) + 132e: 0100 addi s0,sp,128 + 1330: 0200 addi s0,sp,256 + 1332: 2904 fld fs1,16(a0) + 1334: 00090003 lb zero,0(s2) + 1338: 0100 addi s0,sp,128 + 133a: 0200 addi s0,sp,256 + 133c: 2904 fld fs1,16(a0) + 133e: 00090003 lb zero,0(s2) + 1342: 0100 addi s0,sp,128 + 1344: 0200 addi s0,sp,256 + 1346: 0804 addi s1,sp,16 + 1348: 04090003 lb zero,64(s2) + 134c: 0100 addi s0,sp,128 + 134e: 0200 addi s0,sp,256 + 1350: 0804 addi s1,sp,16 + 1352: 00090003 lb zero,0(s2) + 1356: 0100 addi s0,sp,128 + 1358: 0200 addi s0,sp,256 + 135a: 0804 addi s1,sp,16 + 135c: 00090103 lb sp,0(s2) + 1360: 0100 addi s0,sp,128 + 1362: 0200 addi s0,sp,256 + 1364: 0804 addi s1,sp,16 + 1366: 00090003 lb zero,0(s2) + 136a: 0100 addi s0,sp,128 + 136c: 0200 addi s0,sp,256 + 136e: 0804 addi s1,sp,16 + 1370: 14090003 lb zero,320(s2) + 1374: 0100 addi s0,sp,128 + 1376: 0200 addi s0,sp,256 + 1378: 0804 addi s1,sp,16 + 137a: 04090003 lb zero,64(s2) + 137e: 0100 addi s0,sp,128 + 1380: 0200 addi s0,sp,256 + 1382: 0204 addi s1,sp,256 + 1384: 1c097e03 0x1c097e03 + 1388: 0100 addi s0,sp,128 + 138a: 0200 addi s0,sp,256 + 138c: 0d04 addi s1,sp,656 + 138e: 08090003 lb zero,128(s2) + 1392: 0100 addi s0,sp,128 + 1394: 0200 addi s0,sp,256 + 1396: 0d04 addi s1,sp,656 + 1398: 00090003 lb zero,0(s2) + 139c: 0100 addi s0,sp,128 + 139e: 0200 addi s0,sp,256 + 13a0: 0d04 addi s1,sp,656 + 13a2: 00090003 lb zero,0(s2) + 13a6: 0100 addi s0,sp,128 + 13a8: 0200 addi s0,sp,256 + 13aa: 0d04 addi s1,sp,656 + 13ac: 00090003 lb zero,0(s2) + 13b0: 0100 addi s0,sp,128 + 13b2: 0200 addi s0,sp,256 + 13b4: 1104 addi s1,sp,160 + 13b6: 04090003 lb zero,64(s2) + 13ba: 0100 addi s0,sp,128 + 13bc: 0200 addi s0,sp,256 + 13be: 1104 addi s1,sp,160 + 13c0: 00090003 lb zero,0(s2) + 13c4: 0100 addi s0,sp,128 + 13c6: 0200 addi s0,sp,256 + 13c8: 1104 addi s1,sp,160 + 13ca: 00090003 lb zero,0(s2) + 13ce: 0100 addi s0,sp,128 + 13d0: 0200 addi s0,sp,256 + 13d2: 1104 addi s1,sp,160 + 13d4: 00090003 lb zero,0(s2) + 13d8: 0100 addi s0,sp,128 + 13da: 0200 addi s0,sp,256 + 13dc: 1104 addi s1,sp,160 + 13de: 08090003 lb zero,128(s2) + 13e2: 0100 addi s0,sp,128 + 13e4: 0200 addi s0,sp,256 + 13e6: 1f04 addi s1,sp,944 + 13e8: 00090003 lb zero,0(s2) + 13ec: 0100 addi s0,sp,128 + 13ee: 0200 addi s0,sp,256 + 13f0: 1f04 addi s1,sp,944 + 13f2: 00090003 lb zero,0(s2) + 13f6: 0100 addi s0,sp,128 + 13f8: 0200 addi s0,sp,256 + 13fa: 1f04 addi s1,sp,944 + 13fc: 04090003 lb zero,64(s2) + 1400: 0100 addi s0,sp,128 + 1402: 0200 addi s0,sp,256 + 1404: 2004 fld fs1,0(s0) + 1406: 08090003 lb zero,128(s2) + 140a: 0100 addi s0,sp,128 + 140c: 0200 addi s0,sp,256 + 140e: 2004 fld fs1,0(s0) + 1410: 08090003 lb zero,128(s2) + 1414: 0100 addi s0,sp,128 + 1416: 0200 addi s0,sp,256 + 1418: 2004 fld fs1,0(s0) + 141a: 10090003 lb zero,256(s2) + 141e: 0100 addi s0,sp,128 + 1420: 0200 addi s0,sp,256 + 1422: 2004 fld fs1,0(s0) + 1424: 04090003 lb zero,64(s2) + 1428: 0100 addi s0,sp,128 + 142a: 0200 addi s0,sp,256 + 142c: 2904 fld fs1,16(a0) + 142e: 00090003 lb zero,0(s2) + 1432: 0100 addi s0,sp,128 + 1434: 0200 addi s0,sp,256 + 1436: 1804 addi s1,sp,48 + 1438: 0c090003 lb zero,192(s2) + 143c: 0100 addi s0,sp,128 + 143e: 0200 addi s0,sp,256 + 1440: 1804 addi s1,sp,48 + 1442: 00090003 lb zero,0(s2) + 1446: 0100 addi s0,sp,128 + 1448: 0200 addi s0,sp,256 + 144a: 1804 addi s1,sp,48 + 144c: 00090003 lb zero,0(s2) + 1450: 0100 addi s0,sp,128 + 1452: 0200 addi s0,sp,256 + 1454: 1804 addi s1,sp,48 + 1456: 00090003 lb zero,0(s2) + 145a: 0100 addi s0,sp,128 + 145c: 0200 addi s0,sp,256 + 145e: 1804 addi s1,sp,48 + 1460: 04090003 lb zero,64(s2) + 1464: 0100 addi s0,sp,128 + 1466: 0200 addi s0,sp,256 + 1468: 1804 addi s1,sp,48 + 146a: 00090003 lb zero,0(s2) + 146e: 0100 addi s0,sp,128 + 1470: 0200 addi s0,sp,256 + 1472: 2104 fld fs1,0(a0) + 1474: 08090003 lb zero,128(s2) + 1478: 0100 addi s0,sp,128 + 147a: 0200 addi s0,sp,256 + 147c: 2104 fld fs1,0(a0) + 147e: 08090003 lb zero,128(s2) + 1482: 0100 addi s0,sp,128 + 1484: 0200 addi s0,sp,256 + 1486: 0304 addi s1,sp,384 + 1488: 08090003 lb zero,128(s2) + 148c: 0100 addi s0,sp,128 + 148e: 0306 slli t1,t1,0x1 + 1490: 0900 addi s0,sp,144 + 1492: 000c 0xc + 1494: 0001 nop + 1496: 0402 c.slli64 s0 + 1498: 0602 c.slli64 a2 + 149a: 30090103 lb sp,768(s2) + 149e: 0100 addi s0,sp,128 + 14a0: 0200 addi s0,sp,256 + 14a2: 0d04 addi s1,sp,656 + 14a4: 08090003 lb zero,128(s2) + 14a8: 0100 addi s0,sp,128 + 14aa: 0200 addi s0,sp,256 + 14ac: 0d04 addi s1,sp,656 + 14ae: 00090003 lb zero,0(s2) + 14b2: 0100 addi s0,sp,128 + 14b4: 0200 addi s0,sp,256 + 14b6: 0d04 addi s1,sp,656 + 14b8: 00090003 lb zero,0(s2) + 14bc: 0100 addi s0,sp,128 + 14be: 0200 addi s0,sp,256 + 14c0: 0d04 addi s1,sp,656 + 14c2: 00090003 lb zero,0(s2) + 14c6: 0100 addi s0,sp,128 + 14c8: 0200 addi s0,sp,256 + 14ca: 1104 addi s1,sp,160 + 14cc: 04090003 lb zero,64(s2) + 14d0: 0100 addi s0,sp,128 + 14d2: 0200 addi s0,sp,256 + 14d4: 1104 addi s1,sp,160 + 14d6: 00090003 lb zero,0(s2) + 14da: 0100 addi s0,sp,128 + 14dc: 0200 addi s0,sp,256 + 14de: 1104 addi s1,sp,160 + 14e0: 00090003 lb zero,0(s2) + 14e4: 0100 addi s0,sp,128 + 14e6: 0200 addi s0,sp,256 + 14e8: 1104 addi s1,sp,160 + 14ea: 00090003 lb zero,0(s2) + 14ee: 0100 addi s0,sp,128 + 14f0: 0200 addi s0,sp,256 + 14f2: 1104 addi s1,sp,160 + 14f4: 0c090003 lb zero,192(s2) + 14f8: 0100 addi s0,sp,128 + 14fa: 0200 addi s0,sp,256 + 14fc: 1f04 addi s1,sp,944 + 14fe: 00090003 lb zero,0(s2) + 1502: 0100 addi s0,sp,128 + 1504: 0200 addi s0,sp,256 + 1506: 1f04 addi s1,sp,944 + 1508: 00090003 lb zero,0(s2) + 150c: 0100 addi s0,sp,128 + 150e: 0200 addi s0,sp,256 + 1510: 1f04 addi s1,sp,944 + 1512: 04090003 lb zero,64(s2) + 1516: 0100 addi s0,sp,128 + 1518: 0200 addi s0,sp,256 + 151a: 2004 fld fs1,0(s0) + 151c: 08090003 lb zero,128(s2) + 1520: 0100 addi s0,sp,128 + 1522: 0200 addi s0,sp,256 + 1524: 2004 fld fs1,0(s0) + 1526: 08090003 lb zero,128(s2) + 152a: 0100 addi s0,sp,128 + 152c: 0200 addi s0,sp,256 + 152e: 2004 fld fs1,0(s0) + 1530: 10090003 lb zero,256(s2) + 1534: 0100 addi s0,sp,128 + 1536: 0200 addi s0,sp,256 + 1538: 2004 fld fs1,0(s0) + 153a: 04090003 lb zero,64(s2) + 153e: 0100 addi s0,sp,128 + 1540: 0200 addi s0,sp,256 + 1542: 2904 fld fs1,16(a0) + 1544: 00090003 lb zero,0(s2) + 1548: 0100 addi s0,sp,128 + 154a: 0200 addi s0,sp,256 + 154c: 1804 addi s1,sp,48 + 154e: 0c090003 lb zero,192(s2) + 1552: 0100 addi s0,sp,128 + 1554: 0200 addi s0,sp,256 + 1556: 1804 addi s1,sp,48 + 1558: 00090003 lb zero,0(s2) + 155c: 0100 addi s0,sp,128 + 155e: 0200 addi s0,sp,256 + 1560: 1804 addi s1,sp,48 + 1562: 00090003 lb zero,0(s2) + 1566: 0100 addi s0,sp,128 + 1568: 0200 addi s0,sp,256 + 156a: 1804 addi s1,sp,48 + 156c: 00090003 lb zero,0(s2) + 1570: 0100 addi s0,sp,128 + 1572: 0200 addi s0,sp,256 + 1574: 1804 addi s1,sp,48 + 1576: 08090003 lb zero,128(s2) + 157a: 0100 addi s0,sp,128 + 157c: 0200 addi s0,sp,256 + 157e: 1804 addi s1,sp,48 + 1580: 00090003 lb zero,0(s2) + 1584: 0100 addi s0,sp,128 + 1586: 0200 addi s0,sp,256 + 1588: 2104 fld fs1,0(a0) + 158a: 08090003 lb zero,128(s2) + 158e: 0100 addi s0,sp,128 + 1590: 0200 addi s0,sp,256 + 1592: 2104 fld fs1,0(a0) + 1594: 08090003 lb zero,128(s2) + 1598: 0100 addi s0,sp,128 + 159a: 0200 addi s0,sp,256 + 159c: 0304 addi s1,sp,384 + 159e: 08090003 lb zero,128(s2) + 15a2: 0100 addi s0,sp,128 + 15a4: 0306 slli t1,t1,0x1 + 15a6: 0900 addi s0,sp,144 + 15a8: 0008 0x8 + 15aa: 0001 nop + 15ac: 0402 c.slli64 s0 + 15ae: 0602 c.slli64 a2 + 15b0: 30090103 lb sp,768(s2) + 15b4: 0100 addi s0,sp,128 + 15b6: 0200 addi s0,sp,256 + 15b8: 0204 addi s1,sp,256 + 15ba: 00090003 lb zero,0(s2) + 15be: 0100 addi s0,sp,128 + 15c0: 0200 addi s0,sp,256 + 15c2: 0204 addi s1,sp,256 + 15c4: 00090003 lb zero,0(s2) + 15c8: 0100 addi s0,sp,128 + 15ca: 0200 addi s0,sp,256 + 15cc: 0204 addi s1,sp,256 + 15ce: 00090003 lb zero,0(s2) + 15d2: 0100 addi s0,sp,128 + 15d4: 0200 addi s0,sp,256 + 15d6: 0204 addi s1,sp,256 + 15d8: 00090003 lb zero,0(s2) + 15dc: 0100 addi s0,sp,128 + 15de: 0200 addi s0,sp,256 + 15e0: 0204 addi s1,sp,256 + 15e2: 00090003 lb zero,0(s2) + 15e6: 0100 addi s0,sp,128 + 15e8: 0200 addi s0,sp,256 + 15ea: 0204 addi s1,sp,256 + 15ec: 00090003 lb zero,0(s2) + 15f0: 0100 addi s0,sp,128 + 15f2: 0200 addi s0,sp,256 + 15f4: 0204 addi s1,sp,256 + 15f6: 00090003 lb zero,0(s2) + 15fa: 0100 addi s0,sp,128 + 15fc: 0200 addi s0,sp,256 + 15fe: 0204 addi s1,sp,256 + 1600: 00090003 lb zero,0(s2) + 1604: 0100 addi s0,sp,128 + 1606: 0200 addi s0,sp,256 + 1608: 0204 addi s1,sp,256 + 160a: 00090003 lb zero,0(s2) + 160e: 0100 addi s0,sp,128 + 1610: 0200 addi s0,sp,256 + 1612: 0b04 addi s1,sp,400 + 1614: 0306 slli t1,t1,0x1 + 1616: 0900 addi s0,sp,144 + 1618: 0004 0x4 + 161a: 0001 nop + 161c: 0402 c.slli64 s0 + 161e: 030c addi a1,sp,384 + 1620: 0900 addi s0,sp,144 + 1622: 0004 0x4 + 1624: 0001 nop + 1626: 0402 c.slli64 s0 + 1628: 060e slli a2,a2,0x3 + 162a: 04090003 lb zero,64(s2) + 162e: 0100 addi s0,sp,128 + 1630: 0200 addi s0,sp,256 + 1632: 0e04 addi s1,sp,784 + 1634: 00090003 lb zero,0(s2) + 1638: 0100 addi s0,sp,128 + 163a: 0200 addi s0,sp,256 + 163c: 0e04 addi s1,sp,784 + 163e: 08090003 lb zero,128(s2) + 1642: 0100 addi s0,sp,128 + 1644: 0200 addi s0,sp,256 + 1646: 1304 addi s1,sp,416 + 1648: 0c090003 lb zero,192(s2) + 164c: 0100 addi s0,sp,128 + 164e: 0200 addi s0,sp,256 + 1650: 1304 addi s1,sp,416 + 1652: 00090003 lb zero,0(s2) + 1656: 0100 addi s0,sp,128 + 1658: 0200 addi s0,sp,256 + 165a: 1304 addi s1,sp,416 + 165c: 00090003 lb zero,0(s2) + 1660: 0100 addi s0,sp,128 + 1662: 0200 addi s0,sp,256 + 1664: 1304 addi s1,sp,416 + 1666: 0c090003 lb zero,192(s2) + 166a: 0100 addi s0,sp,128 + 166c: 0200 addi s0,sp,256 + 166e: 1304 addi s1,sp,416 + 1670: 18090003 lb zero,384(s2) + 1674: 0100 addi s0,sp,128 + 1676: 0200 addi s0,sp,256 + 1678: 1304 addi s1,sp,416 + 167a: 00090003 lb zero,0(s2) + 167e: 0100 addi s0,sp,128 + 1680: 0200 addi s0,sp,256 + 1682: 1304 addi s1,sp,416 + 1684: 00090003 lb zero,0(s2) + 1688: 0100 addi s0,sp,128 + 168a: 0200 addi s0,sp,256 + 168c: 1304 addi s1,sp,416 + 168e: 00090003 lb zero,0(s2) + 1692: 0100 addi s0,sp,128 + 1694: 0200 addi s0,sp,256 + 1696: 1304 addi s1,sp,416 + 1698: 00090003 lb zero,0(s2) + 169c: 0100 addi s0,sp,128 + 169e: 0200 addi s0,sp,256 + 16a0: 1304 addi s1,sp,416 + 16a2: 00090003 lb zero,0(s2) + 16a6: 0100 addi s0,sp,128 + 16a8: 0200 addi s0,sp,256 + 16aa: 1304 addi s1,sp,416 + 16ac: 00090003 lb zero,0(s2) + 16b0: 0100 addi s0,sp,128 + 16b2: 0200 addi s0,sp,256 + 16b4: 1304 addi s1,sp,416 + 16b6: 00090003 lb zero,0(s2) + 16ba: 0100 addi s0,sp,128 + 16bc: 0200 addi s0,sp,256 + 16be: 1304 addi s1,sp,416 + 16c0: 00090003 lb zero,0(s2) + 16c4: 0100 addi s0,sp,128 + 16c6: 0200 addi s0,sp,256 + 16c8: 1304 addi s1,sp,416 + 16ca: 0c090003 lb zero,192(s2) + 16ce: 0100 addi s0,sp,128 + 16d0: 0200 addi s0,sp,256 + 16d2: 1304 addi s1,sp,416 + 16d4: 08090003 lb zero,128(s2) + 16d8: 0100 addi s0,sp,128 + 16da: 0200 addi s0,sp,256 + 16dc: 1604 addi s1,sp,800 + 16de: 04090003 lb zero,64(s2) + 16e2: 0100 addi s0,sp,128 + 16e4: 0200 addi s0,sp,256 + 16e6: 1604 addi s1,sp,800 + 16e8: 08090003 lb zero,128(s2) + 16ec: 0100 addi s0,sp,128 + 16ee: 0200 addi s0,sp,256 + 16f0: 1804 addi s1,sp,48 + 16f2: 04090003 lb zero,64(s2) + 16f6: 0100 addi s0,sp,128 + 16f8: 0200 addi s0,sp,256 + 16fa: 1a04 addi s1,sp,304 + 16fc: 04090003 lb zero,64(s2) + 1700: 0100 addi s0,sp,128 + 1702: 0200 addi s0,sp,256 + 1704: 1c04 addi s1,sp,560 + 1706: 08090003 lb zero,128(s2) + 170a: 0100 addi s0,sp,128 + 170c: 0200 addi s0,sp,256 + 170e: 1c04 addi s1,sp,560 + 1710: 04090003 lb zero,64(s2) + 1714: 0100 addi s0,sp,128 + 1716: 0200 addi s0,sp,256 + 1718: 1c04 addi s1,sp,560 + 171a: 00090003 lb zero,0(s2) + 171e: 0100 addi s0,sp,128 + 1720: 0200 addi s0,sp,256 + 1722: 1c04 addi s1,sp,560 + 1724: 04090003 lb zero,64(s2) + 1728: 0100 addi s0,sp,128 + 172a: 0200 addi s0,sp,256 + 172c: 1c04 addi s1,sp,560 + 172e: 14090003 lb zero,320(s2) + 1732: 0100 addi s0,sp,128 + 1734: 0200 addi s0,sp,256 + 1736: 1c04 addi s1,sp,560 + 1738: 08090003 lb zero,128(s2) + 173c: 0100 addi s0,sp,128 + 173e: 0200 addi s0,sp,256 + 1740: 1d04 addi s1,sp,688 + 1742: 04090003 lb zero,64(s2) + 1746: 0100 addi s0,sp,128 + 1748: 0200 addi s0,sp,256 + 174a: 1d04 addi s1,sp,688 + 174c: 08090003 lb zero,128(s2) + 1750: 0100 addi s0,sp,128 + 1752: 0200 addi s0,sp,256 + 1754: 1f04 addi s1,sp,944 + 1756: 04090003 lb zero,64(s2) + 175a: 0100 addi s0,sp,128 + 175c: 0200 addi s0,sp,256 + 175e: 2104 fld fs1,0(a0) + 1760: 04090003 lb zero,64(s2) + 1764: 0100 addi s0,sp,128 + 1766: 0200 addi s0,sp,256 + 1768: 2304 fld fs1,0(a4) + 176a: 08090003 lb zero,128(s2) + 176e: 0100 addi s0,sp,128 + 1770: 0200 addi s0,sp,256 + 1772: 2304 fld fs1,0(a4) + 1774: 04090003 lb zero,64(s2) + 1778: 0100 addi s0,sp,128 + 177a: 0200 addi s0,sp,256 + 177c: 2304 fld fs1,0(a4) + 177e: 0c090003 lb zero,192(s2) + 1782: 0100 addi s0,sp,128 + 1784: 0200 addi s0,sp,256 + 1786: 2304 fld fs1,0(a4) + 1788: 00090003 lb zero,0(s2) + 178c: 0100 addi s0,sp,128 + 178e: 0200 addi s0,sp,256 + 1790: 2304 fld fs1,0(a4) + 1792: 00090003 lb zero,0(s2) + 1796: 0100 addi s0,sp,128 + 1798: 0200 addi s0,sp,256 + 179a: 2304 fld fs1,0(a4) + 179c: 00090003 lb zero,0(s2) + 17a0: 0100 addi s0,sp,128 + 17a2: 0200 addi s0,sp,256 + 17a4: 2304 fld fs1,0(a4) + 17a6: 00090003 lb zero,0(s2) + 17aa: 0100 addi s0,sp,128 + 17ac: 0200 addi s0,sp,256 + 17ae: 2304 fld fs1,0(a4) + 17b0: 00090003 lb zero,0(s2) + 17b4: 0100 addi s0,sp,128 + 17b6: 0200 addi s0,sp,256 + 17b8: 2304 fld fs1,0(a4) + 17ba: 00090003 lb zero,0(s2) + 17be: 0100 addi s0,sp,128 + 17c0: 0200 addi s0,sp,256 + 17c2: 2304 fld fs1,0(a4) + 17c4: 08090003 lb zero,128(s2) + 17c8: 0100 addi s0,sp,128 + 17ca: 0200 addi s0,sp,256 + 17cc: 2304 fld fs1,0(a4) + 17ce: 00090003 lb zero,0(s2) + 17d2: 0100 addi s0,sp,128 + 17d4: 0200 addi s0,sp,256 + 17d6: 2304 fld fs1,0(a4) + 17d8: 08090003 lb zero,128(s2) + 17dc: 0100 addi s0,sp,128 + 17de: 0200 addi s0,sp,256 + 17e0: 2304 fld fs1,0(a4) + 17e2: 08090003 lb zero,128(s2) + 17e6: 0100 addi s0,sp,128 + 17e8: 0200 addi s0,sp,256 + 17ea: 2304 fld fs1,0(a4) + 17ec: 00090003 lb zero,0(s2) + 17f0: 0100 addi s0,sp,128 + 17f2: 0200 addi s0,sp,256 + 17f4: 2304 fld fs1,0(a4) + 17f6: 04090003 lb zero,64(s2) + 17fa: 0100 addi s0,sp,128 + 17fc: 0200 addi s0,sp,256 + 17fe: 2304 fld fs1,0(a4) + 1800: 08090003 lb zero,128(s2) + 1804: 0100 addi s0,sp,128 + 1806: 0200 addi s0,sp,256 + 1808: 2304 fld fs1,0(a4) + 180a: 04090003 lb zero,64(s2) + 180e: 0100 addi s0,sp,128 + 1810: 0200 addi s0,sp,256 + 1812: 2304 fld fs1,0(a4) + 1814: 08090003 lb zero,128(s2) + 1818: 0100 addi s0,sp,128 + 181a: 0200 addi s0,sp,256 + 181c: 2404 fld fs1,8(s0) + 181e: 04090003 lb zero,64(s2) + 1822: 0100 addi s0,sp,128 + 1824: 0200 addi s0,sp,256 + 1826: 2604 fld fs1,8(a2) + 1828: 04090003 lb zero,64(s2) + 182c: 0100 addi s0,sp,128 + 182e: 0200 addi s0,sp,256 + 1830: 2604 fld fs1,8(a2) + 1832: 08090003 lb zero,128(s2) + 1836: 0100 addi s0,sp,128 + 1838: 0200 addi s0,sp,256 + 183a: 2604 fld fs1,8(a2) + 183c: 18090003 lb zero,384(s2) + 1840: 0100 addi s0,sp,128 + 1842: 0200 addi s0,sp,256 + 1844: 2604 fld fs1,8(a2) + 1846: 00090003 lb zero,0(s2) + 184a: 0100 addi s0,sp,128 + 184c: 0200 addi s0,sp,256 + 184e: 2604 fld fs1,8(a2) + 1850: 00090003 lb zero,0(s2) + 1854: 0100 addi s0,sp,128 + 1856: 0200 addi s0,sp,256 + 1858: 2804 fld fs1,16(s0) + 185a: 0306 slli t1,t1,0x1 + 185c: 0900 addi s0,sp,144 + 185e: 0004 0x4 + 1860: 0001 nop + 1862: 0402 c.slli64 s0 + 1864: 0329 addi t1,t1,10 + 1866: 0900 addi s0,sp,144 + 1868: 0008 0x8 + 186a: 0001 nop + 186c: 0402 c.slli64 s0 + 186e: 0003062b 0x3062b + 1872: 0409 addi s0,s0,2 + 1874: 0100 addi s0,sp,128 + 1876: 0200 addi s0,sp,256 + 1878: 2b04 fld fs1,16(a4) + 187a: 14090003 lb zero,320(s2) + 187e: 0100 addi s0,sp,128 + 1880: 0200 addi s0,sp,256 + 1882: 2b04 fld fs1,16(a4) + 1884: 00090003 lb zero,0(s2) + 1888: 0100 addi s0,sp,128 + 188a: 0200 addi s0,sp,256 + 188c: 2b04 fld fs1,16(a4) + 188e: 00090003 lb zero,0(s2) + 1892: 0100 addi s0,sp,128 + 1894: 0200 addi s0,sp,256 + 1896: 2b04 fld fs1,16(a4) + 1898: 00090003 lb zero,0(s2) + 189c: 0100 addi s0,sp,128 + 189e: 0200 addi s0,sp,256 + 18a0: 2b04 fld fs1,16(a4) + 18a2: 00090003 lb zero,0(s2) + 18a6: 0100 addi s0,sp,128 + 18a8: 0200 addi s0,sp,256 + 18aa: 2b04 fld fs1,16(a4) + 18ac: 00090003 lb zero,0(s2) + 18b0: 0100 addi s0,sp,128 + 18b2: 0200 addi s0,sp,256 + 18b4: 2b04 fld fs1,16(a4) + 18b6: 00090003 lb zero,0(s2) + 18ba: 0100 addi s0,sp,128 + 18bc: 0200 addi s0,sp,256 + 18be: 2e04 fld fs1,24(a2) + 18c0: 0306 slli t1,t1,0x1 + 18c2: 0900 addi s0,sp,144 + 18c4: 0004 0x4 + 18c6: 0001 nop + 18c8: 0402 c.slli64 s0 + 18ca: 0900032f 0x900032f + 18ce: 0004 0x4 + 18d0: 0001 nop + 18d2: 0402 c.slli64 s0 + 18d4: 0331 addi t1,t1,12 + 18d6: 0900 addi s0,sp,144 + 18d8: 0004 0x4 + 18da: 0001 nop + 18dc: 0402 c.slli64 s0 + 18de: 0334 addi a3,sp,392 + 18e0: 0900 addi s0,sp,144 + 18e2: 0004 0x4 + 18e4: 0001 nop + 18e6: 0402 c.slli64 s0 + 18e8: 0335 addi t1,t1,13 + 18ea: 0900 addi s0,sp,144 + 18ec: 0004 0x4 + 18ee: 0001 nop + 18f0: 0402 c.slli64 s0 + 18f2: 00030637 lui a2,0x30 + 18f6: 0409 addi s0,s0,2 + 18f8: 0100 addi s0,sp,128 + 18fa: 0200 addi s0,sp,256 + 18fc: 3704 fld fs1,40(a4) + 18fe: 10090003 lb zero,256(s2) + 1902: 0100 addi s0,sp,128 + 1904: 0200 addi s0,sp,256 + 1906: 3704 fld fs1,40(a4) + 1908: 00090003 lb zero,0(s2) + 190c: 0100 addi s0,sp,128 + 190e: 0200 addi s0,sp,256 + 1910: 3704 fld fs1,40(a4) + 1912: 00090003 lb zero,0(s2) + 1916: 0100 addi s0,sp,128 + 1918: 0200 addi s0,sp,256 + 191a: 3704 fld fs1,40(a4) + 191c: 00090003 lb zero,0(s2) + 1920: 0100 addi s0,sp,128 + 1922: 0200 addi s0,sp,256 + 1924: 3704 fld fs1,40(a4) + 1926: 04090003 lb zero,64(s2) + 192a: 0100 addi s0,sp,128 + 192c: 0200 addi s0,sp,256 + 192e: 3904 fld fs1,48(a0) + 1930: 00090003 lb zero,0(s2) + 1934: 0100 addi s0,sp,128 + 1936: 0200 addi s0,sp,256 + 1938: 3904 fld fs1,48(a0) + 193a: 00090003 lb zero,0(s2) + 193e: 0100 addi s0,sp,128 + 1940: 0200 addi s0,sp,256 + 1942: 3904 fld fs1,48(a0) + 1944: 00090003 lb zero,0(s2) + 1948: 0100 addi s0,sp,128 + 194a: 0200 addi s0,sp,256 + 194c: 3904 fld fs1,48(a0) + 194e: 00090003 lb zero,0(s2) + 1952: 0100 addi s0,sp,128 + 1954: 0200 addi s0,sp,256 + 1956: 3904 fld fs1,48(a0) + 1958: 04090003 lb zero,64(s2) + 195c: 0100 addi s0,sp,128 + 195e: 0200 addi s0,sp,256 + 1960: 3904 fld fs1,48(a0) + 1962: 0c090003 lb zero,192(s2) + 1966: 0100 addi s0,sp,128 + 1968: 0200 addi s0,sp,256 + 196a: 3904 fld fs1,48(a0) + 196c: 00090003 lb zero,0(s2) + 1970: 0100 addi s0,sp,128 + 1972: 0200 addi s0,sp,256 + 1974: 3904 fld fs1,48(a0) + 1976: 00090003 lb zero,0(s2) + 197a: 0100 addi s0,sp,128 + 197c: 0200 addi s0,sp,256 + 197e: 3b04 fld fs1,48(a4) + 1980: 08090003 lb zero,128(s2) + 1984: 0100 addi s0,sp,128 + 1986: 0200 addi s0,sp,256 + 1988: 3b04 fld fs1,48(a4) + 198a: 00090003 lb zero,0(s2) + 198e: 0100 addi s0,sp,128 + 1990: 0200 addi s0,sp,256 + 1992: 3b04 fld fs1,48(a4) + 1994: 00090003 lb zero,0(s2) + 1998: 0100 addi s0,sp,128 + 199a: 0200 addi s0,sp,256 + 199c: 3b04 fld fs1,48(a4) + 199e: 00090003 lb zero,0(s2) + 19a2: 0100 addi s0,sp,128 + 19a4: 0200 addi s0,sp,256 + 19a6: 3b04 fld fs1,48(a4) + 19a8: 00090003 lb zero,0(s2) + 19ac: 0100 addi s0,sp,128 + 19ae: 0200 addi s0,sp,256 + 19b0: 3b04 fld fs1,48(a4) + 19b2: 00090003 lb zero,0(s2) + 19b6: 0100 addi s0,sp,128 + 19b8: 0200 addi s0,sp,256 + 19ba: 3b04 fld fs1,48(a4) + 19bc: 00090003 lb zero,0(s2) + 19c0: 0100 addi s0,sp,128 + 19c2: 0200 addi s0,sp,256 + 19c4: 3b04 fld fs1,48(a4) + 19c6: 04090003 lb zero,64(s2) + 19ca: 0100 addi s0,sp,128 + 19cc: 0200 addi s0,sp,256 + 19ce: 3b04 fld fs1,48(a4) + 19d0: 10090003 lb zero,256(s2) + 19d4: 0100 addi s0,sp,128 + 19d6: 0200 addi s0,sp,256 + 19d8: 3b04 fld fs1,48(a4) + 19da: 08090003 lb zero,128(s2) + 19de: 0100 addi s0,sp,128 + 19e0: 0200 addi s0,sp,256 + 19e2: 3d04 fld fs1,56(a0) + 19e4: 04090003 lb zero,64(s2) + 19e8: 0100 addi s0,sp,128 + 19ea: 0200 addi s0,sp,256 + 19ec: 3d04 fld fs1,56(a0) + 19ee: 08090003 lb zero,128(s2) + 19f2: 0100 addi s0,sp,128 + 19f4: 0200 addi s0,sp,256 + 19f6: 3f04 fld fs1,56(a4) + 19f8: 04090003 lb zero,64(s2) + 19fc: 0100 addi s0,sp,128 + 19fe: 0200 addi s0,sp,256 + 1a00: 4104 lw s1,0(a0) + 1a02: 04090003 lb zero,64(s2) + 1a06: 0100 addi s0,sp,128 + 1a08: 0200 addi s0,sp,256 + 1a0a: 4304 lw s1,0(a4) + 1a0c: 08090003 lb zero,128(s2) + 1a10: 0100 addi s0,sp,128 + 1a12: 0200 addi s0,sp,256 + 1a14: 4304 lw s1,0(a4) + 1a16: 04090003 lb zero,64(s2) + 1a1a: 0100 addi s0,sp,128 + 1a1c: 0200 addi s0,sp,256 + 1a1e: 4304 lw s1,0(a4) + 1a20: 00090003 lb zero,0(s2) + 1a24: 0100 addi s0,sp,128 + 1a26: 0200 addi s0,sp,256 + 1a28: 4304 lw s1,0(a4) + 1a2a: 04090003 lb zero,64(s2) + 1a2e: 0100 addi s0,sp,128 + 1a30: 0200 addi s0,sp,256 + 1a32: 4304 lw s1,0(a4) + 1a34: 14090003 lb zero,320(s2) + 1a38: 0100 addi s0,sp,128 + 1a3a: 0200 addi s0,sp,256 + 1a3c: 4304 lw s1,0(a4) + 1a3e: 08090003 lb zero,128(s2) + 1a42: 0100 addi s0,sp,128 + 1a44: 0200 addi s0,sp,256 + 1a46: 4404 lw s1,8(s0) + 1a48: 04090003 lb zero,64(s2) + 1a4c: 0100 addi s0,sp,128 + 1a4e: 0200 addi s0,sp,256 + 1a50: 4404 lw s1,8(s0) + 1a52: 08090003 lb zero,128(s2) + 1a56: 0100 addi s0,sp,128 + 1a58: 0200 addi s0,sp,256 + 1a5a: 4604 lw s1,8(a2) + 1a5c: 04090003 lb zero,64(s2) + 1a60: 0100 addi s0,sp,128 + 1a62: 0200 addi s0,sp,256 + 1a64: 4804 lw s1,16(s0) + 1a66: 04090003 lb zero,64(s2) + 1a6a: 0100 addi s0,sp,128 + 1a6c: 0200 addi s0,sp,256 + 1a6e: 4a04 lw s1,16(a2) + 1a70: 08090003 lb zero,128(s2) + 1a74: 0100 addi s0,sp,128 + 1a76: 0200 addi s0,sp,256 + 1a78: 4a04 lw s1,16(a2) + 1a7a: 1c090003 lb zero,448(s2) + 1a7e: 0100 addi s0,sp,128 + 1a80: 0200 addi s0,sp,256 + 1a82: 4a04 lw s1,16(a2) + 1a84: 00090003 lb zero,0(s2) + 1a88: 0100 addi s0,sp,128 + 1a8a: 0200 addi s0,sp,256 + 1a8c: 4a04 lw s1,16(a2) + 1a8e: 00090003 lb zero,0(s2) + 1a92: 0100 addi s0,sp,128 + 1a94: 0200 addi s0,sp,256 + 1a96: 4a04 lw s1,16(a2) + 1a98: 00090003 lb zero,0(s2) + 1a9c: 0100 addi s0,sp,128 + 1a9e: 0200 addi s0,sp,256 + 1aa0: 4a04 lw s1,16(a2) + 1aa2: 00090003 lb zero,0(s2) + 1aa6: 0100 addi s0,sp,128 + 1aa8: 0200 addi s0,sp,256 + 1aaa: 4a04 lw s1,16(a2) + 1aac: 00090003 lb zero,0(s2) + 1ab0: 0100 addi s0,sp,128 + 1ab2: 0200 addi s0,sp,256 + 1ab4: 4a04 lw s1,16(a2) + 1ab6: 00090003 lb zero,0(s2) + 1aba: 0100 addi s0,sp,128 + 1abc: 0200 addi s0,sp,256 + 1abe: 4a04 lw s1,16(a2) + 1ac0: 00090003 lb zero,0(s2) + 1ac4: 0100 addi s0,sp,128 + 1ac6: 0200 addi s0,sp,256 + 1ac8: 4a04 lw s1,16(a2) + 1aca: 00090003 lb zero,0(s2) + 1ace: 0100 addi s0,sp,128 + 1ad0: 0200 addi s0,sp,256 + 1ad2: 4a04 lw s1,16(a2) + 1ad4: 00090003 lb zero,0(s2) + 1ad8: 0100 addi s0,sp,128 + 1ada: 0200 addi s0,sp,256 + 1adc: 4a04 lw s1,16(a2) + 1ade: 00090003 lb zero,0(s2) + 1ae2: 0100 addi s0,sp,128 + 1ae4: 0200 addi s0,sp,256 + 1ae6: 4a04 lw s1,16(a2) + 1ae8: 08090003 lb zero,128(s2) + 1aec: 0100 addi s0,sp,128 + 1aee: 0200 addi s0,sp,256 + 1af0: 4a04 lw s1,16(a2) + 1af2: 00090003 lb zero,0(s2) + 1af6: 0100 addi s0,sp,128 + 1af8: 0200 addi s0,sp,256 + 1afa: 4a04 lw s1,16(a2) + 1afc: 04090003 lb zero,64(s2) + 1b00: 0100 addi s0,sp,128 + 1b02: 0200 addi s0,sp,256 + 1b04: 4a04 lw s1,16(a2) + 1b06: 00090003 lb zero,0(s2) + 1b0a: 0100 addi s0,sp,128 + 1b0c: 0200 addi s0,sp,256 + 1b0e: 4a04 lw s1,16(a2) + 1b10: 08090003 lb zero,128(s2) + 1b14: 0100 addi s0,sp,128 + 1b16: 0200 addi s0,sp,256 + 1b18: 4a04 lw s1,16(a2) + 1b1a: 04090003 lb zero,64(s2) + 1b1e: 0100 addi s0,sp,128 + 1b20: 0200 addi s0,sp,256 + 1b22: 4b04 lw s1,16(a4) + 1b24: 04090003 lb zero,64(s2) + 1b28: 0100 addi s0,sp,128 + 1b2a: 0200 addi s0,sp,256 + 1b2c: 4d04 lw s1,24(a0) + 1b2e: 08090003 lb zero,128(s2) + 1b32: 0100 addi s0,sp,128 + 1b34: 0200 addi s0,sp,256 + 1b36: 4d04 lw s1,24(a0) + 1b38: 08090003 lb zero,128(s2) + 1b3c: 0100 addi s0,sp,128 + 1b3e: 0200 addi s0,sp,256 + 1b40: 4d04 lw s1,24(a0) + 1b42: 18090003 lb zero,384(s2) + 1b46: 0100 addi s0,sp,128 + 1b48: 0200 addi s0,sp,256 + 1b4a: 4d04 lw s1,24(a0) + 1b4c: 00090003 lb zero,0(s2) + 1b50: 0100 addi s0,sp,128 + 1b52: 0200 addi s0,sp,256 + 1b54: 4d04 lw s1,24(a0) + 1b56: 00090003 lb zero,0(s2) + 1b5a: 0100 addi s0,sp,128 + 1b5c: 0200 addi s0,sp,256 + 1b5e: 4f04 lw s1,24(a4) + 1b60: 0306 slli t1,t1,0x1 + 1b62: 0900 addi s0,sp,144 + 1b64: 0004 0x4 + 1b66: 0001 nop + 1b68: 0402 c.slli64 s0 + 1b6a: 0350 addi a2,sp,388 + 1b6c: 0900 addi s0,sp,144 + 1b6e: 0004 0x4 + 1b70: 0001 nop + 1b72: 0402 c.slli64 s0 + 1b74: 0652 slli a2,a2,0x14 + 1b76: 08090003 lb zero,128(s2) + 1b7a: 0100 addi s0,sp,128 + 1b7c: 0200 addi s0,sp,256 + 1b7e: 5204 lw s1,32(a2) + 1b80: 08090003 lb zero,128(s2) + 1b84: 0100 addi s0,sp,128 + 1b86: 0200 addi s0,sp,256 + 1b88: 5204 lw s1,32(a2) + 1b8a: 00090003 lb zero,0(s2) + 1b8e: 0100 addi s0,sp,128 + 1b90: 0200 addi s0,sp,256 + 1b92: 5204 lw s1,32(a2) + 1b94: 00090003 lb zero,0(s2) + 1b98: 0100 addi s0,sp,128 + 1b9a: 0200 addi s0,sp,256 + 1b9c: 5204 lw s1,32(a2) + 1b9e: 00090003 lb zero,0(s2) + 1ba2: 0100 addi s0,sp,128 + 1ba4: 0200 addi s0,sp,256 + 1ba6: 5204 lw s1,32(a2) + 1ba8: 00090003 lb zero,0(s2) + 1bac: 0100 addi s0,sp,128 + 1bae: 0200 addi s0,sp,256 + 1bb0: 5204 lw s1,32(a2) + 1bb2: 00090003 lb zero,0(s2) + 1bb6: 0100 addi s0,sp,128 + 1bb8: 0200 addi s0,sp,256 + 1bba: 5204 lw s1,32(a2) + 1bbc: 00090003 lb zero,0(s2) + 1bc0: 0100 addi s0,sp,128 + 1bc2: 0200 addi s0,sp,256 + 1bc4: 5804 lw s1,48(s0) + 1bc6: 0306 slli t1,t1,0x1 + 1bc8: 0900 addi s0,sp,144 + 1bca: 0004 0x4 + 1bcc: 0001 nop + 1bce: 0402 c.slli64 s0 + 1bd0: 0900035b 0x900035b + 1bd4: 0004 0x4 + 1bd6: 0001 nop + 1bd8: 0402 c.slli64 s0 + 1bda: 035c addi a5,sp,388 + 1bdc: 0900 addi s0,sp,144 + 1bde: 0004 0x4 + 1be0: 0001 nop + 1be2: 0402 c.slli64 s0 + 1be4: 065e slli a2,a2,0x17 + 1be6: 04090003 lb zero,64(s2) + 1bea: 0100 addi s0,sp,128 + 1bec: 0200 addi s0,sp,256 + 1bee: 5e04 lw s1,56(a2) + 1bf0: 10090003 lb zero,256(s2) + 1bf4: 0100 addi s0,sp,128 + 1bf6: 0200 addi s0,sp,256 + 1bf8: 5e04 lw s1,56(a2) + 1bfa: 00090003 lb zero,0(s2) + 1bfe: 0100 addi s0,sp,128 + 1c00: 0200 addi s0,sp,256 + 1c02: 5e04 lw s1,56(a2) + 1c04: 00090003 lb zero,0(s2) + 1c08: 0100 addi s0,sp,128 + 1c0a: 0200 addi s0,sp,256 + 1c0c: 5e04 lw s1,56(a2) + 1c0e: 00090003 lb zero,0(s2) + 1c12: 0100 addi s0,sp,128 + 1c14: 0200 addi s0,sp,256 + 1c16: 5e04 lw s1,56(a2) + 1c18: 04090003 lb zero,64(s2) + 1c1c: 0100 addi s0,sp,128 + 1c1e: 0200 addi s0,sp,256 + 1c20: 6004 flw fs1,0(s0) + 1c22: 04090003 lb zero,64(s2) + 1c26: 0100 addi s0,sp,128 + 1c28: 0200 addi s0,sp,256 + 1c2a: 6004 flw fs1,0(s0) + 1c2c: 00090003 lb zero,0(s2) + 1c30: 0100 addi s0,sp,128 + 1c32: 0200 addi s0,sp,256 + 1c34: 6204 flw fs1,0(a2) + 1c36: 0306 slli t1,t1,0x1 + 1c38: 0900 addi s0,sp,144 + 1c3a: 0004 0x4 + 1c3c: 0001 nop + 1c3e: 0402 c.slli64 s0 + 1c40: 00030663 beqz t1,1c4c <_start-0x7fffe3b4> + 1c44: 0409 addi s0,s0,2 + 1c46: 0100 addi s0,sp,128 + 1c48: 0200 addi s0,sp,256 + 1c4a: 0204 addi s1,sp,256 + 1c4c: 04090103 lb sp,64(s2) + 1c50: 0100 addi s0,sp,128 + 1c52: 0200 addi s0,sp,256 + 1c54: 0204 addi s1,sp,256 + 1c56: 04090003 lb zero,64(s2) + 1c5a: 0100 addi s0,sp,128 + 1c5c: 0200 addi s0,sp,256 + 1c5e: 0604 addi s1,sp,768 + 1c60: 04090003 lb zero,64(s2) + 1c64: 0100 addi s0,sp,128 + 1c66: 0200 addi s0,sp,256 + 1c68: 0604 addi s1,sp,768 + 1c6a: 00090003 lb zero,0(s2) + 1c6e: 0100 addi s0,sp,128 + 1c70: 0200 addi s0,sp,256 + 1c72: 0804 addi s1,sp,16 + 1c74: 08090003 lb zero,128(s2) + 1c78: 0100 addi s0,sp,128 + 1c7a: 0200 addi s0,sp,256 + 1c7c: 0804 addi s1,sp,16 + 1c7e: 00090003 lb zero,0(s2) + 1c82: 0100 addi s0,sp,128 + 1c84: 0200 addi s0,sp,256 + 1c86: 0804 addi s1,sp,16 + 1c88: 00090003 lb zero,0(s2) + 1c8c: 0100 addi s0,sp,128 + 1c8e: 0200 addi s0,sp,256 + 1c90: 0804 addi s1,sp,16 + 1c92: 00090003 lb zero,0(s2) + 1c96: 0100 addi s0,sp,128 + 1c98: 0200 addi s0,sp,256 + 1c9a: 0a04 addi s1,sp,272 + 1c9c: 0c090003 lb zero,192(s2) + 1ca0: 0100 addi s0,sp,128 + 1ca2: 0200 addi s0,sp,256 + 1ca4: 0a04 addi s1,sp,272 + 1ca6: 00090003 lb zero,0(s2) + 1caa: 0100 addi s0,sp,128 + 1cac: 0200 addi s0,sp,256 + 1cae: 0a04 addi s1,sp,272 + 1cb0: 00090003 lb zero,0(s2) + 1cb4: 0100 addi s0,sp,128 + 1cb6: 0200 addi s0,sp,256 + 1cb8: 0a04 addi s1,sp,272 + 1cba: 04090003 lb zero,64(s2) + 1cbe: 0100 addi s0,sp,128 + 1cc0: 0200 addi s0,sp,256 + 1cc2: 0a04 addi s1,sp,272 + 1cc4: 08090003 lb zero,128(s2) + 1cc8: 0100 addi s0,sp,128 + 1cca: 0200 addi s0,sp,256 + 1ccc: 0904 addi s1,sp,144 + 1cce: 04090003 lb zero,64(s2) + 1cd2: 0100 addi s0,sp,128 + 1cd4: 0200 addi s0,sp,256 + 1cd6: 0904 addi s1,sp,144 + 1cd8: 00090003 lb zero,0(s2) + 1cdc: 0100 addi s0,sp,128 + 1cde: 0200 addi s0,sp,256 + 1ce0: 1804 addi s1,sp,48 + 1ce2: 08090003 lb zero,128(s2) + 1ce6: 0100 addi s0,sp,128 + 1ce8: 0200 addi s0,sp,256 + 1cea: 1804 addi s1,sp,48 + 1cec: 0c090003 lb zero,192(s2) + 1cf0: 0100 addi s0,sp,128 + 1cf2: 0200 addi s0,sp,256 + 1cf4: 1a04 addi s1,sp,304 + 1cf6: 04090003 lb zero,64(s2) + 1cfa: 0100 addi s0,sp,128 + 1cfc: 0200 addi s0,sp,256 + 1cfe: 1a04 addi s1,sp,304 + 1d00: 00090003 lb zero,0(s2) + 1d04: 0100 addi s0,sp,128 + 1d06: 0200 addi s0,sp,256 + 1d08: 1a04 addi s1,sp,304 + 1d0a: 00090003 lb zero,0(s2) + 1d0e: 0100 addi s0,sp,128 + 1d10: 0200 addi s0,sp,256 + 1d12: 1a04 addi s1,sp,304 + 1d14: 00090003 lb zero,0(s2) + 1d18: 0100 addi s0,sp,128 + 1d1a: 0306 slli t1,t1,0x1 + 1d1c: 0900 addi s0,sp,144 + 1d1e: 0008 0x8 + 1d20: 0001 nop + 1d22: 0402 c.slli64 s0 + 1d24: 00030677 0x30677 + 1d28: 1009 c.nop -30 + 1d2a: 0100 addi s0,sp,128 + 1d2c: 0200 addi s0,sp,256 + 1d2e: 7704 flw fs1,40(a4) + 1d30: 00090003 lb zero,0(s2) + 1d34: 0100 addi s0,sp,128 + 1d36: 0200 addi s0,sp,256 + 1d38: 7704 flw fs1,40(a4) + 1d3a: 00090003 lb zero,0(s2) + 1d3e: 0100 addi s0,sp,128 + 1d40: 0200 addi s0,sp,256 + 1d42: 7704 flw fs1,40(a4) + 1d44: 00090003 lb zero,0(s2) + 1d48: 0100 addi s0,sp,128 + 1d4a: 0200 addi s0,sp,256 + 1d4c: 7704 flw fs1,40(a4) + 1d4e: 00090003 lb zero,0(s2) + 1d52: 0100 addi s0,sp,128 + 1d54: 0200 addi s0,sp,256 + 1d56: 7704 flw fs1,40(a4) + 1d58: 00090003 lb zero,0(s2) + 1d5c: 0100 addi s0,sp,128 + 1d5e: 0200 addi s0,sp,256 + 1d60: 7704 flw fs1,40(a4) + 1d62: 00090003 lb zero,0(s2) + 1d66: 0100 addi s0,sp,128 + 1d68: 0200 addi s0,sp,256 + 1d6a: 7704 flw fs1,40(a4) + 1d6c: 00090003 lb zero,0(s2) + 1d70: 0100 addi s0,sp,128 + 1d72: 0105 addi sp,sp,1 + 1d74: 0200 addi s0,sp,256 + 1d76: 7704 flw fs1,40(a4) + 1d78: 0306 slli t1,t1,0x1 + 1d7a: 0904 addi s1,sp,144 + 1d7c: 000c 0xc + 1d7e: 0501 addi a0,a0,0 + 1d80: 04020003 lb zero,64(tp) # 1a040 <_start-0x7ffe5fc0> + 1d84: 097c0377 0x97c0377 + 1d88: 0008 0x8 + 1d8a: 0001 nop + 1d8c: 0402 c.slli64 s0 + 1d8e: 00030677 0x30677 + 1d92: 1409 addi s0,s0,-30 + 1d94: 0100 addi s0,sp,128 + 1d96: 0200 addi s0,sp,256 + 1d98: 7704 flw fs1,40(a4) + 1d9a: 00090003 lb zero,0(s2) + 1d9e: 0100 addi s0,sp,128 + 1da0: 0200 addi s0,sp,256 + 1da2: 7704 flw fs1,40(a4) + 1da4: 00090103 lb sp,0(s2) + 1da8: 0100 addi s0,sp,128 + 1daa: 0200 addi s0,sp,256 + 1dac: 7704 flw fs1,40(a4) + 1dae: 00090003 lb zero,0(s2) + 1db2: 0100 addi s0,sp,128 + 1db4: 0200 addi s0,sp,256 + 1db6: 7704 flw fs1,40(a4) + 1db8: 00090003 lb zero,0(s2) + 1dbc: 0100 addi s0,sp,128 + 1dbe: 0200 addi s0,sp,256 + 1dc0: 7704 flw fs1,40(a4) + 1dc2: 00090203 lb tp,0(s2) + 1dc6: 0100 addi s0,sp,128 + 1dc8: 0105 addi sp,sp,1 + 1dca: 0200 addi s0,sp,256 + 1dcc: 7704 flw fs1,40(a4) + 1dce: 0306 slli t1,t1,0x1 + 1dd0: 0901 addi s2,s2,0 + 1dd2: 0000 unimp + 1dd4: 0501 addi a0,a0,0 + 1dd6: 04020003 lb zero,64(tp) # 40 <_start-0x7fffffc0> + 1dda: 7b03060f 0x7b03060f + 1dde: 3009 jal 15e0 <_start-0x7fffea20> + 1de0: 0100 addi s0,sp,128 + 1de2: 0200 addi s0,sp,256 + 1de4: 0f04 addi s1,sp,912 + 1de6: 04090003 lb zero,64(s2) + 1dea: 0100 addi s0,sp,128 + 1dec: 0200 addi s0,sp,256 + 1dee: 0f04 addi s1,sp,912 + 1df0: 00090003 lb zero,0(s2) + 1df4: 0100 addi s0,sp,128 + 1df6: 0200 addi s0,sp,256 + 1df8: 0f04 addi s1,sp,912 + 1dfa: 00090003 lb zero,0(s2) + 1dfe: 0100 addi s0,sp,128 + 1e00: 0200 addi s0,sp,256 + 1e02: 0804 addi s1,sp,16 + 1e04: 0306 slli t1,t1,0x1 + 1e06: 097e slli s2,s2,0x1f + 1e08: 0008 0x8 + 1e0a: 0001 nop + 1e0c: 0402 c.slli64 s0 + 1e0e: 0608 addi a0,sp,768 + 1e10: 04090203 lb tp,64(s2) + 1e14: 0100 addi s0,sp,128 + 1e16: 0200 addi s0,sp,256 + 1e18: 0804 addi s1,sp,16 + 1e1a: 00090003 lb zero,0(s2) + 1e1e: 0100 addi s0,sp,128 + 1e20: 0200 addi s0,sp,256 + 1e22: 0804 addi s1,sp,16 + 1e24: 00090003 lb zero,0(s2) + 1e28: 0100 addi s0,sp,128 + 1e2a: 0200 addi s0,sp,256 + 1e2c: 0804 addi s1,sp,16 + 1e2e: 00090003 lb zero,0(s2) + 1e32: 0100 addi s0,sp,128 + 1e34: 0200 addi s0,sp,256 + 1e36: 6c04 flw fs1,24(s0) + 1e38: 0c090003 lb zero,192(s2) + 1e3c: 0100 addi s0,sp,128 + 1e3e: 0200 addi s0,sp,256 + 1e40: 6c04 flw fs1,24(s0) + 1e42: 00090103 lb sp,0(s2) + 1e46: 0100 addi s0,sp,128 + 1e48: 0200 addi s0,sp,256 + 1e4a: 6c04 flw fs1,24(s0) + 1e4c: 00090003 lb zero,0(s2) + 1e50: 0100 addi s0,sp,128 + 1e52: 0200 addi s0,sp,256 + 1e54: 6c04 flw fs1,24(s0) + 1e56: 00090003 lb zero,0(s2) + 1e5a: 0100 addi s0,sp,128 + 1e5c: 0306 slli t1,t1,0x1 + 1e5e: 0900 addi s0,sp,144 + 1e60: 0008 0x8 + 1e62: 0001 nop + 1e64: 0402 c.slli64 s0 + 1e66: 0305 addi t1,t1,1 + 1e68: 097e slli s2,s2,0x1f + 1e6a: 0020 addi s0,sp,8 + 1e6c: 0001 nop + 1e6e: 0402 c.slli64 s0 + 1e70: 0605 addi a2,a2,1 + 1e72: 04090103 lb sp,64(s2) + 1e76: 0100 addi s0,sp,128 + 1e78: 0200 addi s0,sp,256 + 1e7a: 0504 addi s1,sp,640 + 1e7c: 00090003 lb zero,0(s2) + 1e80: 0100 addi s0,sp,128 + 1e82: 0200 addi s0,sp,256 + 1e84: 0504 addi s1,sp,640 + 1e86: 00090003 lb zero,0(s2) + 1e8a: 0100 addi s0,sp,128 + 1e8c: 0200 addi s0,sp,256 + 1e8e: 0504 addi s1,sp,640 + 1e90: 00090003 lb zero,0(s2) + 1e94: 0100 addi s0,sp,128 + 1e96: 0306 slli t1,t1,0x1 + 1e98: 0900 addi s0,sp,144 + 1e9a: 0004 0x4 + 1e9c: 0001 nop + 1e9e: 0402 c.slli64 s0 + 1ea0: 0103063b 0x103063b + 1ea4: 1409 addi s0,s0,-30 + 1ea6: 0100 addi s0,sp,128 + 1ea8: 0200 addi s0,sp,256 + 1eaa: 3b04 fld fs1,48(a4) + 1eac: 00090003 lb zero,0(s2) + 1eb0: 0100 addi s0,sp,128 + 1eb2: 0200 addi s0,sp,256 + 1eb4: 3b04 fld fs1,48(a4) + 1eb6: 00090003 lb zero,0(s2) + 1eba: 0100 addi s0,sp,128 + 1ebc: 0200 addi s0,sp,256 + 1ebe: 3b04 fld fs1,48(a4) + 1ec0: 08090003 lb zero,128(s2) + 1ec4: 0100 addi s0,sp,128 + 1ec6: 0200 addi s0,sp,256 + 1ec8: 3c04 fld fs1,56(s0) + 1eca: 08090003 lb zero,128(s2) + 1ece: 0100 addi s0,sp,128 + 1ed0: 0200 addi s0,sp,256 + 1ed2: 3e04 fld fs1,56(a2) + 1ed4: 08090003 lb zero,128(s2) + 1ed8: 0100 addi s0,sp,128 + 1eda: 0200 addi s0,sp,256 + 1edc: 3e04 fld fs1,56(a2) + 1ede: 1c090003 lb zero,448(s2) + 1ee2: 0100 addi s0,sp,128 + 1ee4: 0200 addi s0,sp,256 + 1ee6: 4b04 lw s1,16(a4) + 1ee8: 04090003 lb zero,64(s2) + 1eec: 0100 addi s0,sp,128 + 1eee: 0200 addi s0,sp,256 + 1ef0: 4b04 lw s1,16(a4) + 1ef2: 00090003 lb zero,0(s2) + 1ef6: 0100 addi s0,sp,128 + 1ef8: 0200 addi s0,sp,256 + 1efa: 4c04 lw s1,24(s0) + 1efc: 08090003 lb zero,128(s2) + 1f00: 0100 addi s0,sp,128 + 1f02: 0200 addi s0,sp,256 + 1f04: 4c04 lw s1,24(s0) + 1f06: 00090003 lb zero,0(s2) + 1f0a: 0100 addi s0,sp,128 + 1f0c: 0200 addi s0,sp,256 + 1f0e: 4c04 lw s1,24(s0) + 1f10: 00090003 lb zero,0(s2) + 1f14: 0100 addi s0,sp,128 + 1f16: 0200 addi s0,sp,256 + 1f18: 4c04 lw s1,24(s0) + 1f1a: 00090003 lb zero,0(s2) + 1f1e: 0100 addi s0,sp,128 + 1f20: 0200 addi s0,sp,256 + 1f22: 4e04 lw s1,24(a2) + 1f24: 0c090003 lb zero,192(s2) + 1f28: 0100 addi s0,sp,128 + 1f2a: 0200 addi s0,sp,256 + 1f2c: 4e04 lw s1,24(a2) + 1f2e: 00090003 lb zero,0(s2) + 1f32: 0100 addi s0,sp,128 + 1f34: 0200 addi s0,sp,256 + 1f36: 4e04 lw s1,24(a2) + 1f38: 00090003 lb zero,0(s2) + 1f3c: 0100 addi s0,sp,128 + 1f3e: 0200 addi s0,sp,256 + 1f40: 4e04 lw s1,24(a2) + 1f42: 04090003 lb zero,64(s2) + 1f46: 0100 addi s0,sp,128 + 1f48: 0200 addi s0,sp,256 + 1f4a: 4e04 lw s1,24(a2) + 1f4c: 08090003 lb zero,128(s2) + 1f50: 0100 addi s0,sp,128 + 1f52: 0200 addi s0,sp,256 + 1f54: 4d04 lw s1,24(a0) + 1f56: 04090003 lb zero,64(s2) + 1f5a: 0100 addi s0,sp,128 + 1f5c: 0200 addi s0,sp,256 + 1f5e: 4d04 lw s1,24(a0) + 1f60: 00090003 lb zero,0(s2) + 1f64: 0100 addi s0,sp,128 + 1f66: 0200 addi s0,sp,256 + 1f68: 5d04 lw s1,56(a0) + 1f6a: 08090003 lb zero,128(s2) + 1f6e: 0100 addi s0,sp,128 + 1f70: 0200 addi s0,sp,256 + 1f72: 5d04 lw s1,56(a0) + 1f74: 00090003 lb zero,0(s2) + 1f78: 0100 addi s0,sp,128 + 1f7a: 0200 addi s0,sp,256 + 1f7c: 5d04 lw s1,56(a0) + 1f7e: 00090003 lb zero,0(s2) + 1f82: 0100 addi s0,sp,128 + 1f84: 0200 addi s0,sp,256 + 1f86: 5d04 lw s1,56(a0) + 1f88: 0c090003 lb zero,192(s2) + 1f8c: 0100 addi s0,sp,128 + 1f8e: 0306 slli t1,t1,0x1 + 1f90: 0900 addi s0,sp,144 + 1f92: 0004 0x4 + 1f94: 0001 nop + 1f96: 0402 c.slli64 s0 + 1f98: 0003063f 01000809 0x10008090003063f + 1fa0: 0200 addi s0,sp,256 + 1fa2: 4704 lw s1,8(a4) + 1fa4: 0306 slli t1,t1,0x1 + 1fa6: 0900 addi s0,sp,144 + 1fa8: 0018 0x18 + 1faa: 0001 nop + 1fac: 0402 c.slli64 s0 + 1fae: 034a slli t1,t1,0x12 + 1fb0: 0900 addi s0,sp,144 + 1fb2: 0008 0x8 + 1fb4: 0001 nop + 1fb6: 0402 c.slli64 s0 + 1fb8: 064a slli a2,a2,0x12 + 1fba: 0c090003 lb zero,192(s2) + 1fbe: 0100 addi s0,sp,128 + 1fc0: 0306 slli t1,t1,0x1 + 1fc2: 0900 addi s0,sp,144 + 1fc4: 0008 0x8 + 1fc6: 0301 addi t1,t1,0 + 1fc8: 097f 0x97f + 1fca: 0030 addi a2,sp,8 + 1fcc: 0601 addi a2,a2,0 + 1fce: 04090003 lb zero,64(s2) + 1fd2: 0100 addi s0,sp,128 + 1fd4: 00090003 lb zero,0(s2) + 1fd8: 0100 addi s0,sp,128 + 1fda: 0809 addi a6,a6,2 + 1fdc: 0000 unimp + 1fde: 0101 addi sp,sp,0 + 1fe0: 031f 0000 0003 0x30000031f + 1fe6: 00a5 addi ra,ra,9 + 1fe8: 0000 unimp + 1fea: 0101 addi sp,sp,0 + 1fec: 000d0efb 0xd0efb + 1ff0: 0101 addi sp,sp,0 + 1ff2: 0101 addi sp,sp,0 + 1ff4: 0000 unimp + 1ff6: 0100 addi s0,sp,128 + 1ff8: 0000 unimp + 1ffa: 2e01 jal 230a <_start-0x7fffdcf6> + 1ffc: 2f2e fld ft10,200(sp) + 1ffe: 2e2e fld ft8,200(sp) + 2000: 2f2e2e2f 0x2f2e2e2f + 2004: 2e2e fld ft8,200(sp) + 2006: 7369722f 0x7369722f + 200a: 672d7663 bgeu s10,s2,2676 <_start-0x7fffd98a> + 200e: 6c2f6363 bltu t5,sp,26d4 <_start-0x7fffd92c> + 2012: 6269 lui tp,0x1a + 2014: 2f636367 0x2f636367 + 2018: 74666f73 csrrsi t5,0x746,12 + 201c: 662d lui a2,0xb + 201e: 0070 addi a2,sp,12 + 2020: 002e c.slli zero,0xb + 2022: 2e2e fld ft8,200(sp) + 2024: 2f2e2e2f 0x2f2e2e2f + 2028: 2e2e fld ft8,200(sp) + 202a: 2f2e2e2f 0x2f2e2e2f + 202e: 6972 flw fs2,28(sp) + 2030: 2d766373 csrrsi t1,0x2d7,12 + 2034: 2f636367 0x2f636367 + 2038: 696c flw fa1,84(a0) + 203a: 6762 flw fa4,24(sp) + 203c: 2e2f6363 bltu t5,sp,2322 <_start-0x7fffdcde> + 2040: 2f2e fld ft10,200(sp) + 2042: 6e69 lui t3,0x1a + 2044: 64756c63 bltu a0,t2,269c <_start-0x7fffd964> + 2048: 0065 c.nop 25 + 204a: 6c00 flw fs0,24(s0) + 204c: 6465 lui s0,0x19 + 204e: 3266 fld ft4,120(sp) + 2050: 632e flw ft6,200(sp) + 2052: 0100 addi s0,sp,128 + 2054: 0000 unimp + 2056: 2d706673 csrrsi a2,0x2d7,0 + 205a: 616d addi sp,sp,240 + 205c: 6e696863 bltu s2,t1,274c <_start-0x7fffd8b4> + 2060: 2e65 jal 2418 <_start-0x7fffdbe8> + 2062: 0068 addi a0,sp,12 + 2064: 0002 c.slli64 zero + 2066: 7300 flw fs0,32(a4) + 2068: 2d74666f jal a2,48b3e <_start-0x7ffb74c2> + 206c: 7066 flw ft0,120(sp) + 206e: 682e flw fa6,200(sp) + 2070: 0100 addi s0,sp,128 + 2072: 0000 unimp + 2074: 6f64 flw fs1,92(a4) + 2076: 6275 lui tp,0x1d + 2078: 656c flw fa1,76(a0) + 207a: 682e flw fa6,200(sp) + 207c: 0100 addi s0,sp,128 + 207e: 0000 unimp + 2080: 6f6c flw fa1,92(a4) + 2082: 676e flw fa4,216(sp) + 2084: 6f6c flw fa1,92(a4) + 2086: 676e flw fa4,216(sp) + 2088: 682e flw fa6,200(sp) + 208a: 0300 addi s0,sp,384 + 208c: 0000 unimp + 208e: 0500 addi s0,sp,640 + 2090: 0001 nop + 2092: 0205 addi tp,tp,1 + 2094: 1ed4 addi a3,sp,884 + 2096: 8000 0x8000 + 2098: 05012303 lw t1,80(sp) + 209c: 09010303 lb t1,144(sp) + 20a0: 0000 unimp + 20a2: 0301 addi t1,t1,0 + 20a4: 0900 addi s0,sp,144 + 20a6: 0000 unimp + 20a8: 0501 addi a0,a0,0 + 20aa: 030d addi t1,t1,3 + 20ac: 0900 addi s0,sp,144 + 20ae: 0000 unimp + 20b0: 0501 addi a0,a0,0 + 20b2: 09010303 lb t1,144(sp) + 20b6: 0000 unimp + 20b8: 0301 addi t1,t1,0 + 20ba: 0900 addi s0,sp,144 + 20bc: 0000 unimp + 20be: 0301 addi t1,t1,0 + 20c0: 0900 addi s0,sp,144 + 20c2: 0000 unimp + 20c4: 0301 addi t1,t1,0 + 20c6: 0900 addi s0,sp,144 + 20c8: 0000 unimp + 20ca: 0301 addi t1,t1,0 + 20cc: 0901 addi s2,s2,0 + 20ce: 0000 unimp + 20d0: 0301 addi t1,t1,0 + 20d2: 0900 addi s0,sp,144 + 20d4: 0000 unimp + 20d6: 0301 addi t1,t1,0 + 20d8: 0900 addi s0,sp,144 + 20da: 0000 unimp + 20dc: 0301 addi t1,t1,0 + 20de: 0900 addi s0,sp,144 + 20e0: 0000 unimp + 20e2: 0301 addi t1,t1,0 + 20e4: 0901 addi s2,s2,0 + 20e6: 0000 unimp + 20e8: 0301 addi t1,t1,0 + 20ea: 0902 c.slli64 s2 + 20ec: 0000 unimp + 20ee: 0301 addi t1,t1,0 + 20f0: 0901 addi s2,s2,0 + 20f2: 0000 unimp + 20f4: 0301 addi t1,t1,0 + 20f6: 0900 addi s0,sp,144 + 20f8: 0000 unimp + 20fa: 0301 addi t1,t1,0 + 20fc: 0900 addi s0,sp,144 + 20fe: 0000 unimp + 2100: 0301 addi t1,t1,0 + 2102: 0900 addi s0,sp,144 + 2104: 0000 unimp + 2106: 0501 addi a0,a0,0 + 2108: 0601 addi a2,a2,0 + 210a: 10097903 0x10097903 + 210e: 0100 addi s0,sp,128 + 2110: 0305 addi t1,t1,1 + 2112: 0306 slli t1,t1,0x1 + 2114: 00080907 0x80907 + 2118: 0301 addi t1,t1,0 + 211a: 0900 addi s0,sp,144 + 211c: 0000 unimp + 211e: 0301 addi t1,t1,0 + 2120: 0900 addi s0,sp,144 + 2122: 0004 0x4 + 2124: 0301 addi t1,t1,0 + 2126: 0900 addi s0,sp,144 + 2128: 0004 0x4 + 212a: 0301 addi t1,t1,0 + 212c: 0901 addi s2,s2,0 + 212e: 0000 unimp + 2130: 0301 addi t1,t1,0 + 2132: 0900 addi s0,sp,144 + 2134: 0000 unimp + 2136: 0301 addi t1,t1,0 + 2138: 0900 addi s0,sp,144 + 213a: 0000 unimp + 213c: 0301 addi t1,t1,0 + 213e: 0900 addi s0,sp,144 + 2140: 0000 unimp + 2142: 0601 addi a2,a2,0 + 2144: 00090103 lb sp,0(s2) + 2148: 0100 addi s0,sp,128 + 214a: 04097f03 0x4097f03 + 214e: 0100 addi s0,sp,128 + 2150: 0306 slli t1,t1,0x1 + 2152: 0900 addi s0,sp,144 + 2154: 000c 0xc + 2156: 0301 addi t1,t1,0 + 2158: 0900 addi s0,sp,144 + 215a: 0000 unimp + 215c: 0301 addi t1,t1,0 + 215e: 0900 addi s0,sp,144 + 2160: 0004 0x4 + 2162: 0301 addi t1,t1,0 + 2164: 0900 addi s0,sp,144 + 2166: 0004 0x4 + 2168: 0301 addi t1,t1,0 + 216a: 0901 addi s2,s2,0 + 216c: 0000 unimp + 216e: 0301 addi t1,t1,0 + 2170: 0900 addi s0,sp,144 + 2172: 0000 unimp + 2174: 0301 addi t1,t1,0 + 2176: 0900 addi s0,sp,144 + 2178: 0000 unimp + 217a: 0301 addi t1,t1,0 + 217c: 0900 addi s0,sp,144 + 217e: 0000 unimp + 2180: 0301 addi t1,t1,0 + 2182: 0900 addi s0,sp,144 + 2184: 0000 unimp + 2186: 0001 nop + 2188: 0402 c.slli64 s0 + 218a: 0614 addi a3,sp,768 + 218c: 04090003 lb zero,64(s2) + 2190: 0100 addi s0,sp,128 + 2192: 08090003 lb zero,128(s2) + 2196: 0100 addi s0,sp,128 + 2198: 0200 addi s0,sp,256 + 219a: 1704 addi s1,sp,928 + 219c: 08090003 lb zero,128(s2) + 21a0: 0100 addi s0,sp,128 + 21a2: 0200 addi s0,sp,256 + 21a4: 1804 addi s1,sp,48 + 21a6: 04090003 lb zero,64(s2) + 21aa: 0100 addi s0,sp,128 + 21ac: 0200 addi s0,sp,256 + 21ae: 3e04 fld fs1,56(a2) + 21b0: 0306 slli t1,t1,0x1 + 21b2: 0900 addi s0,sp,144 + 21b4: 0008 0x8 + 21b6: 0001 nop + 21b8: 0402 c.slli64 s0 + 21ba: 033e slli t1,t1,0xf + 21bc: 0900 addi s0,sp,144 + 21be: 0000 unimp + 21c0: 0001 nop + 21c2: 0402 c.slli64 s0 + 21c4: 033e slli t1,t1,0xf + 21c6: 0900 addi s0,sp,144 + 21c8: 0000 unimp + 21ca: 0001 nop + 21cc: 0402 c.slli64 s0 + 21ce: 033e slli t1,t1,0xf + 21d0: 0900 addi s0,sp,144 + 21d2: 0000 unimp + 21d4: 0001 nop + 21d6: 0402 c.slli64 s0 + 21d8: 033e slli t1,t1,0xf + 21da: 0900 addi s0,sp,144 + 21dc: 0000 unimp + 21de: 0001 nop + 21e0: 0402 c.slli64 s0 + 21e2: 033e slli t1,t1,0xf + 21e4: 0900 addi s0,sp,144 + 21e6: 0000 unimp + 21e8: 0001 nop + 21ea: 0402 c.slli64 s0 + 21ec: 033e slli t1,t1,0xf + 21ee: 0900 addi s0,sp,144 + 21f0: 0000 unimp + 21f2: 0001 nop + 21f4: 0402 c.slli64 s0 + 21f6: 033e slli t1,t1,0xf + 21f8: 0900 addi s0,sp,144 + 21fa: 0000 unimp + 21fc: 0001 nop + 21fe: 0402 c.slli64 s0 + 2200: 033e slli t1,t1,0xf + 2202: 0900 addi s0,sp,144 + 2204: 0000 unimp + 2206: 0001 nop + 2208: 0402 c.slli64 s0 + 220a: 033e slli t1,t1,0xf + 220c: 0900 addi s0,sp,144 + 220e: 0000 unimp + 2210: 0001 nop + 2212: 0402 c.slli64 s0 + 2214: 033e slli t1,t1,0xf + 2216: 0900 addi s0,sp,144 + 2218: 0000 unimp + 221a: 0001 nop + 221c: 0402 c.slli64 s0 + 221e: 033e slli t1,t1,0xf + 2220: 0900 addi s0,sp,144 + 2222: 0000 unimp + 2224: 0001 nop + 2226: 0402 c.slli64 s0 + 2228: 0003063f 01000409 0x10004090003063f + 2230: 0200 addi s0,sp,256 + 2232: 3f04 fld fs1,56(a4) + 2234: 0306 slli t1,t1,0x1 + 2236: 0900 addi s0,sp,144 + 2238: 0008 0x8 + 223a: 0001 nop + 223c: 0402 c.slli64 s0 + 223e: 0645 addi a2,a2,17 + 2240: 04090003 lb zero,64(s2) + 2244: 0100 addi s0,sp,128 + 2246: 0306 slli t1,t1,0x1 + 2248: 0900 addi s0,sp,144 + 224a: 0008 0x8 + 224c: 0301 addi t1,t1,0 + 224e: 0900 addi s0,sp,144 + 2250: 0004 0x4 + 2252: 0301 addi t1,t1,0 + 2254: 0900 addi s0,sp,144 + 2256: 0000 unimp + 2258: 0301 addi t1,t1,0 + 225a: 0900 addi s0,sp,144 + 225c: 0000 unimp + 225e: 0001 nop + 2260: 0402 c.slli64 s0 + 2262: 035f 0900 0004 0x40900035f + 2268: 0001 nop + 226a: 0402 c.slli64 s0 + 226c: 09000377 0x9000377 + 2270: 0004 0x4 + 2272: 0601 addi a2,a2,0 + 2274: 04090003 lb zero,64(s2) + 2278: 0100 addi s0,sp,128 + 227a: 0200 addi s0,sp,256 + 227c: 5004 lw s1,32(s0) + 227e: 0306 slli t1,t1,0x1 + 2280: 0900 addi s0,sp,144 + 2282: 0008 0x8 + 2284: 0001 nop + 2286: 0402 c.slli64 s0 + 2288: 0350 addi a2,sp,388 + 228a: 0900 addi s0,sp,144 + 228c: 0000 unimp + 228e: 0601 addi a2,a2,0 + 2290: 08090003 lb zero,128(s2) + 2294: 0100 addi s0,sp,128 + 2296: 0200 addi s0,sp,256 + 2298: 6604 flw fs1,8(a2) + 229a: 0306 slli t1,t1,0x1 + 229c: 0900 addi s0,sp,144 + 229e: 0008 0x8 + 22a0: 0001 nop + 22a2: 01820403 lb s0,24(tp) # 1d018 <_start-0x7ffe2fe8> + 22a6: 04090003 lb zero,64(s2) + 22aa: 0100 addi s0,sp,128 + 22ac: 0105 addi sp,sp,1 + 22ae: 0306 slli t1,t1,0x1 + 22b0: 0904 addi s1,sp,144 + 22b2: 0004 0x4 + 22b4: 0501 addi a0,a0,0 + 22b6: 04020003 lb zero,64(tp) # 40 <_start-0x7fffffc0> + 22ba: 066d addi a2,a2,27 + 22bc: 04097c03 0x4097c03 + 22c0: 0100 addi s0,sp,128 + 22c2: 0200 addi s0,sp,256 + 22c4: 7404 flw fs1,40(s0) + 22c6: 0306 slli t1,t1,0x1 + 22c8: 0900 addi s0,sp,144 + 22ca: 0004 0x4 + 22cc: 0001 nop + 22ce: 0402 c.slli64 s0 + 22d0: 0375 addi t1,t1,29 + 22d2: 0900 addi s0,sp,144 + 22d4: 0004 0x4 + 22d6: 0001 nop + 22d8: 01800403 lb s0,24(zero) # 18 <_start-0x7fffffe8> + 22dc: 0306 slli t1,t1,0x1 + 22de: 0900 addi s0,sp,144 + 22e0: 0004 0x4 + 22e2: 0601 addi a2,a2,0 + 22e4: 04090003 lb zero,64(s2) + 22e8: 0100 addi s0,sp,128 + 22ea: 0306 slli t1,t1,0x1 + 22ec: 0900 addi s0,sp,144 + 22ee: 0010 0x10 + 22f0: 0301 addi t1,t1,0 + 22f2: 0900 addi s0,sp,144 + 22f4: 0008 0x8 + 22f6: 0301 addi t1,t1,0 + 22f8: 0900 addi s0,sp,144 + 22fa: 000c 0xc + 22fc: 0901 addi s2,s2,0 + 22fe: 000c 0xc + 2300: 0100 addi s0,sp,128 + 2302: d201 beqz a2,2202 <_start-0x7fffddfe> + 2304: 000d c.nop 3 + 2306: 0300 addi s0,sp,384 + 2308: 9300 0x9300 + 230a: 0000 unimp + 230c: 0100 addi s0,sp,128 + 230e: fb01 bnez a4,221e <_start-0x7fffdde2> + 2310: 0d0e slli s10,s10,0x3 + 2312: 0100 addi s0,sp,128 + 2314: 0101 addi sp,sp,0 + 2316: 0001 nop + 2318: 0000 unimp + 231a: 0001 nop + 231c: 0100 addi s0,sp,128 + 231e: 2e2e fld ft8,200(sp) + 2320: 2f2e2e2f 0x2f2e2e2f + 2324: 2e2e fld ft8,200(sp) + 2326: 2f2e2e2f 0x2f2e2e2f + 232a: 6972 flw fs2,28(sp) + 232c: 2d766373 csrrsi t1,0x2d7,12 + 2330: 2f636367 0x2f636367 + 2334: 696c flw fa1,84(a0) + 2336: 6762 flw fa4,24(sp) + 2338: 732f6363 bltu t5,s2,2a5e <_start-0x7fffd5a2> + 233c: 2d74666f jal a2,48e12 <_start-0x7ffb71ee> + 2340: 7066 flw ft0,120(sp) + 2342: 2e00 fld fs0,24(a2) + 2344: 2f2e fld ft10,200(sp) + 2346: 2e2e fld ft8,200(sp) + 2348: 2f2e2e2f 0x2f2e2e2f + 234c: 2e2e fld ft8,200(sp) + 234e: 7369722f 0x7369722f + 2352: 672d7663 bgeu s10,s2,29be <_start-0x7fffd642> + 2356: 6c2f6363 bltu t5,sp,2a1c <_start-0x7fffd5e4> + 235a: 6269 lui tp,0x1a + 235c: 2f636367 0x2f636367 + 2360: 2e2e fld ft8,200(sp) + 2362: 636e692f 0x636e692f + 2366: 756c flw fa1,108(a0) + 2368: 6564 flw fs1,76(a0) + 236a: 0000 unimp + 236c: 756d lui a0,0xffffb + 236e: 646c flw fa1,76(s0) + 2370: 3366 fld ft6,120(sp) + 2372: 632e flw ft6,200(sp) + 2374: 0100 addi s0,sp,128 + 2376: 0000 unimp + 2378: 74666f73 csrrsi t5,0x746,12 + 237c: 662d lui a2,0xb + 237e: 2e70 fld fa2,216(a2) + 2380: 0068 addi a0,sp,12 + 2382: 0001 nop + 2384: 6400 flw fs0,8(s0) + 2386: 6c62756f jal a0,29a4c <_start-0x7ffd65b4> + 238a: 2e65 jal 2742 <_start-0x7fffd8be> + 238c: 0068 addi a0,sp,12 + 238e: 0001 nop + 2390: 6c00 flw fs0,24(s0) + 2392: 6c676e6f jal t3,78a58 <_start-0x7ff875a8> + 2396: 2e676e6f jal t3,7867c <_start-0x7ff87984> + 239a: 0068 addi a0,sp,12 + 239c: 0002 c.slli64 zero + 239e: 0000 unimp + 23a0: 0105 addi sp,sp,1 + 23a2: 0500 addi s0,sp,640 + 23a4: b802 fsd ft0,48(sp) + 23a6: 001f 0380 0123 0x1230380001f + 23ac: 0305 addi t1,t1,1 + 23ae: 00090103 lb sp,0(s2) + 23b2: 0100 addi s0,sp,128 + 23b4: 00090003 lb zero,0(s2) + 23b8: 0100 addi s0,sp,128 + 23ba: 0d05 addi s10,s10,1 + 23bc: 00090003 lb zero,0(s2) + 23c0: 0100 addi s0,sp,128 + 23c2: 0305 addi t1,t1,1 + 23c4: 00090103 lb sp,0(s2) + 23c8: 0100 addi s0,sp,128 + 23ca: 00090003 lb zero,0(s2) + 23ce: 0100 addi s0,sp,128 + 23d0: 00090003 lb zero,0(s2) + 23d4: 0100 addi s0,sp,128 + 23d6: 00090003 lb zero,0(s2) + 23da: 0100 addi s0,sp,128 + 23dc: 00090103 lb sp,0(s2) + 23e0: 0100 addi s0,sp,128 + 23e2: 00090003 lb zero,0(s2) + 23e6: 0100 addi s0,sp,128 + 23e8: 00090003 lb zero,0(s2) + 23ec: 0100 addi s0,sp,128 + 23ee: 00090003 lb zero,0(s2) + 23f2: 0100 addi s0,sp,128 + 23f4: 00090103 lb sp,0(s2) + 23f8: 0100 addi s0,sp,128 + 23fa: 00090003 lb zero,0(s2) + 23fe: 0100 addi s0,sp,128 + 2400: 00090003 lb zero,0(s2) + 2404: 0100 addi s0,sp,128 + 2406: 00090003 lb zero,0(s2) + 240a: 0100 addi s0,sp,128 + 240c: 00090103 lb sp,0(s2) + 2410: 0100 addi s0,sp,128 + 2412: 00090203 lb tp,0(s2) + 2416: 0100 addi s0,sp,128 + 2418: 00090103 lb sp,0(s2) + 241c: 0100 addi s0,sp,128 + 241e: 00090003 lb zero,0(s2) + 2422: 0100 addi s0,sp,128 + 2424: 00090003 lb zero,0(s2) + 2428: 0100 addi s0,sp,128 + 242a: 00090003 lb zero,0(s2) + 242e: 0100 addi s0,sp,128 + 2430: 00090003 lb zero,0(s2) + 2434: 0100 addi s0,sp,128 + 2436: 00090003 lb zero,0(s2) + 243a: 0100 addi s0,sp,128 + 243c: 0105 addi sp,sp,1 + 243e: 0306 slli t1,t1,0x1 + 2440: 0978 addi a4,sp,156 + 2442: 0000 unimp + 2444: 0501 addi a0,a0,0 + 2446: 09080303 lb t1,144(a6) + 244a: 0004 0x4 + 244c: 0501 addi a0,a0,0 + 244e: 0301 addi t1,t1,0 + 2450: 0978 addi a4,sp,156 + 2452: 0004 0x4 + 2454: 0501 addi a0,a0,0 + 2456: 09080303 lb t1,144(a6) + 245a: 0014 0x14 + 245c: 0501 addi a0,a0,0 + 245e: 0301 addi t1,t1,0 + 2460: 0978 addi a4,sp,156 + 2462: 0004 0x4 + 2464: 0501 addi a0,a0,0 + 2466: 09080303 lb t1,144(a6) + 246a: 0010 0x10 + 246c: 0501 addi a0,a0,0 + 246e: 0301 addi t1,t1,0 + 2470: 0978 addi a4,sp,156 + 2472: 0004 0x4 + 2474: 0501 addi a0,a0,0 + 2476: 09080303 lb t1,144(a6) + 247a: 000c 0xc + 247c: 0601 addi a2,a2,0 + 247e: 04090003 lb zero,64(s2) + 2482: 0100 addi s0,sp,128 + 2484: 00090003 lb zero,0(s2) + 2488: 0100 addi s0,sp,128 + 248a: 04090003 lb zero,64(s2) + 248e: 0100 addi s0,sp,128 + 2490: 00090003 lb zero,0(s2) + 2494: 0100 addi s0,sp,128 + 2496: 00090003 lb zero,0(s2) + 249a: 0100 addi s0,sp,128 + 249c: 0200 addi s0,sp,256 + 249e: 0104 addi s1,sp,128 + 24a0: 10090003 lb zero,256(s2) + 24a4: 0100 addi s0,sp,128 + 24a6: 0200 addi s0,sp,256 + 24a8: 0104 addi s1,sp,128 + 24aa: 00090003 lb zero,0(s2) + 24ae: 0100 addi s0,sp,128 + 24b0: 0200 addi s0,sp,256 + 24b2: 0104 addi s1,sp,128 + 24b4: 00090003 lb zero,0(s2) + 24b8: 0100 addi s0,sp,128 + 24ba: 0200 addi s0,sp,256 + 24bc: 0104 addi s1,sp,128 + 24be: 00090003 lb zero,0(s2) + 24c2: 0100 addi s0,sp,128 + 24c4: 0200 addi s0,sp,256 + 24c6: 0104 addi s1,sp,128 + 24c8: 14090003 lb zero,320(s2) + 24cc: 0100 addi s0,sp,128 + 24ce: 0200 addi s0,sp,256 + 24d0: 0104 addi s1,sp,128 + 24d2: 04090003 lb zero,64(s2) + 24d6: 0100 addi s0,sp,128 + 24d8: 0200 addi s0,sp,256 + 24da: 0104 addi s1,sp,128 + 24dc: 00090003 lb zero,0(s2) + 24e0: 0100 addi s0,sp,128 + 24e2: 0200 addi s0,sp,256 + 24e4: 0104 addi s1,sp,128 + 24e6: 04090003 lb zero,64(s2) + 24ea: 0100 addi s0,sp,128 + 24ec: 0200 addi s0,sp,256 + 24ee: 0104 addi s1,sp,128 + 24f0: 00090003 lb zero,0(s2) + 24f4: 0100 addi s0,sp,128 + 24f6: 0200 addi s0,sp,256 + 24f8: 2904 fld fs1,16(a0) + 24fa: 00090003 lb zero,0(s2) + 24fe: 0100 addi s0,sp,128 + 2500: 0200 addi s0,sp,256 + 2502: 2904 fld fs1,16(a0) + 2504: 00090003 lb zero,0(s2) + 2508: 0100 addi s0,sp,128 + 250a: 0200 addi s0,sp,256 + 250c: 0804 addi s1,sp,16 + 250e: 04090003 lb zero,64(s2) + 2512: 0100 addi s0,sp,128 + 2514: 0200 addi s0,sp,256 + 2516: 0804 addi s1,sp,16 + 2518: 00090003 lb zero,0(s2) + 251c: 0100 addi s0,sp,128 + 251e: 0200 addi s0,sp,256 + 2520: 0804 addi s1,sp,16 + 2522: 00090103 lb sp,0(s2) + 2526: 0100 addi s0,sp,128 + 2528: 0200 addi s0,sp,256 + 252a: 0804 addi s1,sp,16 + 252c: 00090003 lb zero,0(s2) + 2530: 0100 addi s0,sp,128 + 2532: 0200 addi s0,sp,256 + 2534: 0804 addi s1,sp,16 + 2536: 00090003 lb zero,0(s2) + 253a: 0100 addi s0,sp,128 + 253c: 0200 addi s0,sp,256 + 253e: 0804 addi s1,sp,16 + 2540: 00090003 lb zero,0(s2) + 2544: 0100 addi s0,sp,128 + 2546: 0200 addi s0,sp,256 + 2548: 0804 addi s1,sp,16 + 254a: 00090003 lb zero,0(s2) + 254e: 0100 addi s0,sp,128 + 2550: 0200 addi s0,sp,256 + 2552: 0804 addi s1,sp,16 + 2554: 00090003 lb zero,0(s2) + 2558: 0100 addi s0,sp,128 + 255a: 0200 addi s0,sp,256 + 255c: 0804 addi s1,sp,16 + 255e: 10090003 lb zero,256(s2) + 2562: 0100 addi s0,sp,128 + 2564: 0200 addi s0,sp,256 + 2566: 0804 addi s1,sp,16 + 2568: 04090003 lb zero,64(s2) + 256c: 0100 addi s0,sp,128 + 256e: 0200 addi s0,sp,256 + 2570: 0804 addi s1,sp,16 + 2572: 04090003 lb zero,64(s2) + 2576: 0100 addi s0,sp,128 + 2578: 0200 addi s0,sp,256 + 257a: 0804 addi s1,sp,16 + 257c: 00090003 lb zero,0(s2) + 2580: 0100 addi s0,sp,128 + 2582: 0200 addi s0,sp,256 + 2584: 0804 addi s1,sp,16 + 2586: 00090003 lb zero,0(s2) + 258a: 0100 addi s0,sp,128 + 258c: 0306 slli t1,t1,0x1 + 258e: 0900 addi s0,sp,144 + 2590: 0004 0x4 + 2592: 0001 nop + 2594: 0402 c.slli64 s0 + 2596: 0601 addi a2,a2,0 + 2598: 08090003 lb zero,128(s2) + 259c: 0100 addi s0,sp,128 + 259e: 0200 addi s0,sp,256 + 25a0: 0104 addi s1,sp,128 + 25a2: 00090003 lb zero,0(s2) + 25a6: 0100 addi s0,sp,128 + 25a8: 0200 addi s0,sp,256 + 25aa: 0104 addi s1,sp,128 + 25ac: 00090003 lb zero,0(s2) + 25b0: 0100 addi s0,sp,128 + 25b2: 0200 addi s0,sp,256 + 25b4: 0104 addi s1,sp,128 + 25b6: 00090003 lb zero,0(s2) + 25ba: 0100 addi s0,sp,128 + 25bc: 0200 addi s0,sp,256 + 25be: 0104 addi s1,sp,128 + 25c0: 14090003 lb zero,320(s2) + 25c4: 0100 addi s0,sp,128 + 25c6: 0200 addi s0,sp,256 + 25c8: 0104 addi s1,sp,128 + 25ca: 08090003 lb zero,128(s2) + 25ce: 0100 addi s0,sp,128 + 25d0: 0200 addi s0,sp,256 + 25d2: 0104 addi s1,sp,128 + 25d4: 00090003 lb zero,0(s2) + 25d8: 0100 addi s0,sp,128 + 25da: 0200 addi s0,sp,256 + 25dc: 0104 addi s1,sp,128 + 25de: 00090003 lb zero,0(s2) + 25e2: 0100 addi s0,sp,128 + 25e4: 0200 addi s0,sp,256 + 25e6: 0104 addi s1,sp,128 + 25e8: 00090003 lb zero,0(s2) + 25ec: 0100 addi s0,sp,128 + 25ee: 0200 addi s0,sp,256 + 25f0: 2904 fld fs1,16(a0) + 25f2: 00090003 lb zero,0(s2) + 25f6: 0100 addi s0,sp,128 + 25f8: 0200 addi s0,sp,256 + 25fa: 2904 fld fs1,16(a0) + 25fc: 00090003 lb zero,0(s2) + 2600: 0100 addi s0,sp,128 + 2602: 0200 addi s0,sp,256 + 2604: 0804 addi s1,sp,16 + 2606: 04090003 lb zero,64(s2) + 260a: 0100 addi s0,sp,128 + 260c: 0200 addi s0,sp,256 + 260e: 0804 addi s1,sp,16 + 2610: 00090003 lb zero,0(s2) + 2614: 0100 addi s0,sp,128 + 2616: 0200 addi s0,sp,256 + 2618: 0804 addi s1,sp,16 + 261a: 00090103 lb sp,0(s2) + 261e: 0100 addi s0,sp,128 + 2620: 0200 addi s0,sp,256 + 2622: 0804 addi s1,sp,16 + 2624: 00090003 lb zero,0(s2) + 2628: 0100 addi s0,sp,128 + 262a: 0200 addi s0,sp,256 + 262c: 0804 addi s1,sp,16 + 262e: 18090003 lb zero,384(s2) + 2632: 0100 addi s0,sp,128 + 2634: 0200 addi s0,sp,256 + 2636: 0804 addi s1,sp,16 + 2638: 04090003 lb zero,64(s2) + 263c: 0100 addi s0,sp,128 + 263e: 0200 addi s0,sp,256 + 2640: 0204 addi s1,sp,256 + 2642: 1c097e03 0x1c097e03 + 2646: 0100 addi s0,sp,128 + 2648: 0200 addi s0,sp,256 + 264a: 0d04 addi s1,sp,656 + 264c: 08090003 lb zero,128(s2) + 2650: 0100 addi s0,sp,128 + 2652: 0200 addi s0,sp,256 + 2654: 0d04 addi s1,sp,656 + 2656: 00090003 lb zero,0(s2) + 265a: 0100 addi s0,sp,128 + 265c: 0200 addi s0,sp,256 + 265e: 0d04 addi s1,sp,656 + 2660: 00090003 lb zero,0(s2) + 2664: 0100 addi s0,sp,128 + 2666: 0200 addi s0,sp,256 + 2668: 0d04 addi s1,sp,656 + 266a: 00090003 lb zero,0(s2) + 266e: 0100 addi s0,sp,128 + 2670: 0200 addi s0,sp,256 + 2672: 1104 addi s1,sp,160 + 2674: 04090003 lb zero,64(s2) + 2678: 0100 addi s0,sp,128 + 267a: 0200 addi s0,sp,256 + 267c: 1104 addi s1,sp,160 + 267e: 00090003 lb zero,0(s2) + 2682: 0100 addi s0,sp,128 + 2684: 0200 addi s0,sp,256 + 2686: 1104 addi s1,sp,160 + 2688: 00090003 lb zero,0(s2) + 268c: 0100 addi s0,sp,128 + 268e: 0200 addi s0,sp,256 + 2690: 1104 addi s1,sp,160 + 2692: 00090003 lb zero,0(s2) + 2696: 0100 addi s0,sp,128 + 2698: 0200 addi s0,sp,256 + 269a: 1104 addi s1,sp,160 + 269c: 08090003 lb zero,128(s2) + 26a0: 0100 addi s0,sp,128 + 26a2: 0200 addi s0,sp,256 + 26a4: 1f04 addi s1,sp,944 + 26a6: 00090003 lb zero,0(s2) + 26aa: 0100 addi s0,sp,128 + 26ac: 0200 addi s0,sp,256 + 26ae: 1f04 addi s1,sp,944 + 26b0: 00090003 lb zero,0(s2) + 26b4: 0100 addi s0,sp,128 + 26b6: 0200 addi s0,sp,256 + 26b8: 1f04 addi s1,sp,944 + 26ba: 04090003 lb zero,64(s2) + 26be: 0100 addi s0,sp,128 + 26c0: 0200 addi s0,sp,256 + 26c2: 2004 fld fs1,0(s0) + 26c4: 08090003 lb zero,128(s2) + 26c8: 0100 addi s0,sp,128 + 26ca: 0200 addi s0,sp,256 + 26cc: 2004 fld fs1,0(s0) + 26ce: 08090003 lb zero,128(s2) + 26d2: 0100 addi s0,sp,128 + 26d4: 0200 addi s0,sp,256 + 26d6: 2004 fld fs1,0(s0) + 26d8: 10090003 lb zero,256(s2) + 26dc: 0100 addi s0,sp,128 + 26de: 0200 addi s0,sp,256 + 26e0: 2004 fld fs1,0(s0) + 26e2: 04090003 lb zero,64(s2) + 26e6: 0100 addi s0,sp,128 + 26e8: 0200 addi s0,sp,256 + 26ea: 2904 fld fs1,16(a0) + 26ec: 00090003 lb zero,0(s2) + 26f0: 0100 addi s0,sp,128 + 26f2: 0200 addi s0,sp,256 + 26f4: 1804 addi s1,sp,48 + 26f6: 0c090003 lb zero,192(s2) + 26fa: 0100 addi s0,sp,128 + 26fc: 0200 addi s0,sp,256 + 26fe: 1804 addi s1,sp,48 + 2700: 00090003 lb zero,0(s2) + 2704: 0100 addi s0,sp,128 + 2706: 0200 addi s0,sp,256 + 2708: 1804 addi s1,sp,48 + 270a: 00090003 lb zero,0(s2) + 270e: 0100 addi s0,sp,128 + 2710: 0200 addi s0,sp,256 + 2712: 1804 addi s1,sp,48 + 2714: 00090003 lb zero,0(s2) + 2718: 0100 addi s0,sp,128 + 271a: 0200 addi s0,sp,256 + 271c: 1804 addi s1,sp,48 + 271e: 04090003 lb zero,64(s2) + 2722: 0100 addi s0,sp,128 + 2724: 0200 addi s0,sp,256 + 2726: 1804 addi s1,sp,48 + 2728: 00090003 lb zero,0(s2) + 272c: 0100 addi s0,sp,128 + 272e: 0200 addi s0,sp,256 + 2730: 2104 fld fs1,0(a0) + 2732: 08090003 lb zero,128(s2) + 2736: 0100 addi s0,sp,128 + 2738: 0200 addi s0,sp,256 + 273a: 2104 fld fs1,0(a0) + 273c: 08090003 lb zero,128(s2) + 2740: 0100 addi s0,sp,128 + 2742: 0200 addi s0,sp,256 + 2744: 0304 addi s1,sp,384 + 2746: 08090003 lb zero,128(s2) + 274a: 0100 addi s0,sp,128 + 274c: 0306 slli t1,t1,0x1 + 274e: 0900 addi s0,sp,144 + 2750: 0008 0x8 + 2752: 0001 nop + 2754: 0402 c.slli64 s0 + 2756: 0602 c.slli64 a2 + 2758: 30090103 lb sp,768(s2) + 275c: 0100 addi s0,sp,128 + 275e: 0200 addi s0,sp,256 + 2760: 0d04 addi s1,sp,656 + 2762: 08090003 lb zero,128(s2) + 2766: 0100 addi s0,sp,128 + 2768: 0200 addi s0,sp,256 + 276a: 0d04 addi s1,sp,656 + 276c: 00090003 lb zero,0(s2) + 2770: 0100 addi s0,sp,128 + 2772: 0200 addi s0,sp,256 + 2774: 0d04 addi s1,sp,656 + 2776: 00090003 lb zero,0(s2) + 277a: 0100 addi s0,sp,128 + 277c: 0200 addi s0,sp,256 + 277e: 0d04 addi s1,sp,656 + 2780: 00090003 lb zero,0(s2) + 2784: 0100 addi s0,sp,128 + 2786: 0200 addi s0,sp,256 + 2788: 1104 addi s1,sp,160 + 278a: 04090003 lb zero,64(s2) + 278e: 0100 addi s0,sp,128 + 2790: 0200 addi s0,sp,256 + 2792: 1104 addi s1,sp,160 + 2794: 00090003 lb zero,0(s2) + 2798: 0100 addi s0,sp,128 + 279a: 0200 addi s0,sp,256 + 279c: 1104 addi s1,sp,160 + 279e: 00090003 lb zero,0(s2) + 27a2: 0100 addi s0,sp,128 + 27a4: 0200 addi s0,sp,256 + 27a6: 1104 addi s1,sp,160 + 27a8: 00090003 lb zero,0(s2) + 27ac: 0100 addi s0,sp,128 + 27ae: 0200 addi s0,sp,256 + 27b0: 1104 addi s1,sp,160 + 27b2: 08090003 lb zero,128(s2) + 27b6: 0100 addi s0,sp,128 + 27b8: 0200 addi s0,sp,256 + 27ba: 1f04 addi s1,sp,944 + 27bc: 00090003 lb zero,0(s2) + 27c0: 0100 addi s0,sp,128 + 27c2: 0200 addi s0,sp,256 + 27c4: 1f04 addi s1,sp,944 + 27c6: 00090003 lb zero,0(s2) + 27ca: 0100 addi s0,sp,128 + 27cc: 0200 addi s0,sp,256 + 27ce: 1f04 addi s1,sp,944 + 27d0: 04090003 lb zero,64(s2) + 27d4: 0100 addi s0,sp,128 + 27d6: 0200 addi s0,sp,256 + 27d8: 2004 fld fs1,0(s0) + 27da: 08090003 lb zero,128(s2) + 27de: 0100 addi s0,sp,128 + 27e0: 0200 addi s0,sp,256 + 27e2: 2004 fld fs1,0(s0) + 27e4: 08090003 lb zero,128(s2) + 27e8: 0100 addi s0,sp,128 + 27ea: 0200 addi s0,sp,256 + 27ec: 2004 fld fs1,0(s0) + 27ee: 10090003 lb zero,256(s2) + 27f2: 0100 addi s0,sp,128 + 27f4: 0200 addi s0,sp,256 + 27f6: 2004 fld fs1,0(s0) + 27f8: 04090003 lb zero,64(s2) + 27fc: 0100 addi s0,sp,128 + 27fe: 0200 addi s0,sp,256 + 2800: 2904 fld fs1,16(a0) + 2802: 00090003 lb zero,0(s2) + 2806: 0100 addi s0,sp,128 + 2808: 0200 addi s0,sp,256 + 280a: 1804 addi s1,sp,48 + 280c: 0c090003 lb zero,192(s2) + 2810: 0100 addi s0,sp,128 + 2812: 0200 addi s0,sp,256 + 2814: 1804 addi s1,sp,48 + 2816: 00090003 lb zero,0(s2) + 281a: 0100 addi s0,sp,128 + 281c: 0200 addi s0,sp,256 + 281e: 1804 addi s1,sp,48 + 2820: 00090003 lb zero,0(s2) + 2824: 0100 addi s0,sp,128 + 2826: 0200 addi s0,sp,256 + 2828: 1804 addi s1,sp,48 + 282a: 00090003 lb zero,0(s2) + 282e: 0100 addi s0,sp,128 + 2830: 0200 addi s0,sp,256 + 2832: 1804 addi s1,sp,48 + 2834: 08090003 lb zero,128(s2) + 2838: 0100 addi s0,sp,128 + 283a: 0200 addi s0,sp,256 + 283c: 1804 addi s1,sp,48 + 283e: 00090003 lb zero,0(s2) + 2842: 0100 addi s0,sp,128 + 2844: 0200 addi s0,sp,256 + 2846: 2104 fld fs1,0(a0) + 2848: 08090003 lb zero,128(s2) + 284c: 0100 addi s0,sp,128 + 284e: 0200 addi s0,sp,256 + 2850: 2104 fld fs1,0(a0) + 2852: 08090003 lb zero,128(s2) + 2856: 0100 addi s0,sp,128 + 2858: 0200 addi s0,sp,256 + 285a: 0304 addi s1,sp,384 + 285c: 08090003 lb zero,128(s2) + 2860: 0100 addi s0,sp,128 + 2862: 0306 slli t1,t1,0x1 + 2864: 0900 addi s0,sp,144 + 2866: 0008 0x8 + 2868: 0001 nop + 286a: 0402 c.slli64 s0 + 286c: 0602 c.slli64 a2 + 286e: 30090103 lb sp,768(s2) + 2872: 0100 addi s0,sp,128 + 2874: 0200 addi s0,sp,256 + 2876: 0204 addi s1,sp,256 + 2878: 00090003 lb zero,0(s2) + 287c: 0100 addi s0,sp,128 + 287e: 0200 addi s0,sp,256 + 2880: 0204 addi s1,sp,256 + 2882: 00090003 lb zero,0(s2) + 2886: 0100 addi s0,sp,128 + 2888: 0200 addi s0,sp,256 + 288a: 0204 addi s1,sp,256 + 288c: 00090003 lb zero,0(s2) + 2890: 0100 addi s0,sp,128 + 2892: 0200 addi s0,sp,256 + 2894: 0204 addi s1,sp,256 + 2896: 00090003 lb zero,0(s2) + 289a: 0100 addi s0,sp,128 + 289c: 0200 addi s0,sp,256 + 289e: 0204 addi s1,sp,256 + 28a0: 00090003 lb zero,0(s2) + 28a4: 0100 addi s0,sp,128 + 28a6: 0200 addi s0,sp,256 + 28a8: 0204 addi s1,sp,256 + 28aa: 00090003 lb zero,0(s2) + 28ae: 0100 addi s0,sp,128 + 28b0: 0200 addi s0,sp,256 + 28b2: 0204 addi s1,sp,256 + 28b4: 00090003 lb zero,0(s2) + 28b8: 0100 addi s0,sp,128 + 28ba: 0200 addi s0,sp,256 + 28bc: 0204 addi s1,sp,256 + 28be: 00090003 lb zero,0(s2) + 28c2: 0100 addi s0,sp,128 + 28c4: 0200 addi s0,sp,256 + 28c6: 0204 addi s1,sp,256 + 28c8: 00090003 lb zero,0(s2) + 28cc: 0100 addi s0,sp,128 + 28ce: 0200 addi s0,sp,256 + 28d0: 0204 addi s1,sp,256 + 28d2: 00090003 lb zero,0(s2) + 28d6: 0100 addi s0,sp,128 + 28d8: 0200 addi s0,sp,256 + 28da: 0204 addi s1,sp,256 + 28dc: 0c090003 lb zero,192(s2) + 28e0: 0100 addi s0,sp,128 + 28e2: 0200 addi s0,sp,256 + 28e4: 0204 addi s1,sp,256 + 28e6: 00090003 lb zero,0(s2) + 28ea: 0100 addi s0,sp,128 + 28ec: 0200 addi s0,sp,256 + 28ee: 0204 addi s1,sp,256 + 28f0: 04090003 lb zero,64(s2) + 28f4: 0100 addi s0,sp,128 + 28f6: 0200 addi s0,sp,256 + 28f8: 0204 addi s1,sp,256 + 28fa: 10090003 lb zero,256(s2) + 28fe: 0100 addi s0,sp,128 + 2900: 0200 addi s0,sp,256 + 2902: 0204 addi s1,sp,256 + 2904: 00090003 lb zero,0(s2) + 2908: 0100 addi s0,sp,128 + 290a: 0200 addi s0,sp,256 + 290c: 0204 addi s1,sp,256 + 290e: 04090003 lb zero,64(s2) + 2912: 0100 addi s0,sp,128 + 2914: 0200 addi s0,sp,256 + 2916: 0204 addi s1,sp,256 + 2918: 10090003 lb zero,256(s2) + 291c: 0100 addi s0,sp,128 + 291e: 0200 addi s0,sp,256 + 2920: 0204 addi s1,sp,256 + 2922: 00090003 lb zero,0(s2) + 2926: 0100 addi s0,sp,128 + 2928: 0200 addi s0,sp,256 + 292a: 0204 addi s1,sp,256 + 292c: 00090003 lb zero,0(s2) + 2930: 0100 addi s0,sp,128 + 2932: 0200 addi s0,sp,256 + 2934: 0904 addi s1,sp,144 + 2936: 04090003 lb zero,64(s2) + 293a: 0100 addi s0,sp,128 + 293c: 0200 addi s0,sp,256 + 293e: 0b04 addi s1,sp,400 + 2940: 04090003 lb zero,64(s2) + 2944: 0100 addi s0,sp,128 + 2946: 0200 addi s0,sp,256 + 2948: 0b04 addi s1,sp,400 + 294a: 04090003 lb zero,64(s2) + 294e: 0100 addi s0,sp,128 + 2950: 0200 addi s0,sp,256 + 2952: 0b04 addi s1,sp,400 + 2954: 18090003 lb zero,384(s2) + 2958: 0100 addi s0,sp,128 + 295a: 0200 addi s0,sp,256 + 295c: 0b04 addi s1,sp,400 + 295e: 00090003 lb zero,0(s2) + 2962: 0100 addi s0,sp,128 + 2964: 0200 addi s0,sp,256 + 2966: 0b04 addi s1,sp,400 + 2968: 00090003 lb zero,0(s2) + 296c: 0100 addi s0,sp,128 + 296e: 0200 addi s0,sp,256 + 2970: 0b04 addi s1,sp,400 + 2972: 00090003 lb zero,0(s2) + 2976: 0100 addi s0,sp,128 + 2978: 0200 addi s0,sp,256 + 297a: 0b04 addi s1,sp,400 + 297c: 00090003 lb zero,0(s2) + 2980: 0100 addi s0,sp,128 + 2982: 0200 addi s0,sp,256 + 2984: 0b04 addi s1,sp,400 + 2986: 00090003 lb zero,0(s2) + 298a: 0100 addi s0,sp,128 + 298c: 0200 addi s0,sp,256 + 298e: 0b04 addi s1,sp,400 + 2990: 00090003 lb zero,0(s2) + 2994: 0100 addi s0,sp,128 + 2996: 0200 addi s0,sp,256 + 2998: 0b04 addi s1,sp,400 + 299a: 00090003 lb zero,0(s2) + 299e: 0100 addi s0,sp,128 + 29a0: 0200 addi s0,sp,256 + 29a2: 0b04 addi s1,sp,400 + 29a4: 00090003 lb zero,0(s2) + 29a8: 0100 addi s0,sp,128 + 29aa: 0200 addi s0,sp,256 + 29ac: 0b04 addi s1,sp,400 + 29ae: 08090003 lb zero,128(s2) + 29b2: 0100 addi s0,sp,128 + 29b4: 0200 addi s0,sp,256 + 29b6: 0b04 addi s1,sp,400 + 29b8: 00090003 lb zero,0(s2) + 29bc: 0100 addi s0,sp,128 + 29be: 0200 addi s0,sp,256 + 29c0: 0b04 addi s1,sp,400 + 29c2: 00090003 lb zero,0(s2) + 29c6: 0100 addi s0,sp,128 + 29c8: 0200 addi s0,sp,256 + 29ca: 0b04 addi s1,sp,400 + 29cc: 14090003 lb zero,320(s2) + 29d0: 0100 addi s0,sp,128 + 29d2: 0200 addi s0,sp,256 + 29d4: 0b04 addi s1,sp,400 + 29d6: 00090003 lb zero,0(s2) + 29da: 0100 addi s0,sp,128 + 29dc: 0200 addi s0,sp,256 + 29de: 0b04 addi s1,sp,400 + 29e0: 00090003 lb zero,0(s2) + 29e4: 0100 addi s0,sp,128 + 29e6: 0200 addi s0,sp,256 + 29e8: 0c04 addi s1,sp,528 + 29ea: 04090003 lb zero,64(s2) + 29ee: 0100 addi s0,sp,128 + 29f0: 0200 addi s0,sp,256 + 29f2: 0e04 addi s1,sp,784 + 29f4: 08090003 lb zero,128(s2) + 29f8: 0100 addi s0,sp,128 + 29fa: 0200 addi s0,sp,256 + 29fc: 0e04 addi s1,sp,784 + 29fe: 08090003 lb zero,128(s2) + 2a02: 0100 addi s0,sp,128 + 2a04: 0200 addi s0,sp,256 + 2a06: 0e04 addi s1,sp,784 + 2a08: 28090003 lb zero,640(s2) + 2a0c: 0100 addi s0,sp,128 + 2a0e: 0200 addi s0,sp,256 + 2a10: 0e04 addi s1,sp,784 + 2a12: 00090003 lb zero,0(s2) + 2a16: 0100 addi s0,sp,128 + 2a18: 0200 addi s0,sp,256 + 2a1a: 0e04 addi s1,sp,784 + 2a1c: 00090003 lb zero,0(s2) + 2a20: 0100 addi s0,sp,128 + 2a22: 0200 addi s0,sp,256 + 2a24: 0e04 addi s1,sp,784 + 2a26: 00090003 lb zero,0(s2) + 2a2a: 0100 addi s0,sp,128 + 2a2c: 0200 addi s0,sp,256 + 2a2e: 0e04 addi s1,sp,784 + 2a30: 00090003 lb zero,0(s2) + 2a34: 0100 addi s0,sp,128 + 2a36: 0200 addi s0,sp,256 + 2a38: 0e04 addi s1,sp,784 + 2a3a: 00090003 lb zero,0(s2) + 2a3e: 0100 addi s0,sp,128 + 2a40: 0200 addi s0,sp,256 + 2a42: 0e04 addi s1,sp,784 + 2a44: 00090003 lb zero,0(s2) + 2a48: 0100 addi s0,sp,128 + 2a4a: 0200 addi s0,sp,256 + 2a4c: 0e04 addi s1,sp,784 + 2a4e: 00090003 lb zero,0(s2) + 2a52: 0100 addi s0,sp,128 + 2a54: 0200 addi s0,sp,256 + 2a56: 0e04 addi s1,sp,784 + 2a58: 00090003 lb zero,0(s2) + 2a5c: 0100 addi s0,sp,128 + 2a5e: 0200 addi s0,sp,256 + 2a60: 0e04 addi s1,sp,784 + 2a62: 00090003 lb zero,0(s2) + 2a66: 0100 addi s0,sp,128 + 2a68: 0200 addi s0,sp,256 + 2a6a: 0e04 addi s1,sp,784 + 2a6c: 00090003 lb zero,0(s2) + 2a70: 0100 addi s0,sp,128 + 2a72: 0200 addi s0,sp,256 + 2a74: 0e04 addi s1,sp,784 + 2a76: 08090003 lb zero,128(s2) + 2a7a: 0100 addi s0,sp,128 + 2a7c: 0200 addi s0,sp,256 + 2a7e: 0e04 addi s1,sp,784 + 2a80: 04090003 lb zero,64(s2) + 2a84: 0100 addi s0,sp,128 + 2a86: 0200 addi s0,sp,256 + 2a88: 0e04 addi s1,sp,784 + 2a8a: 04090003 lb zero,64(s2) + 2a8e: 0100 addi s0,sp,128 + 2a90: 0200 addi s0,sp,256 + 2a92: 0e04 addi s1,sp,784 + 2a94: 08090003 lb zero,128(s2) + 2a98: 0100 addi s0,sp,128 + 2a9a: 0200 addi s0,sp,256 + 2a9c: 0f04 addi s1,sp,912 + 2a9e: 04090003 lb zero,64(s2) + 2aa2: 0100 addi s0,sp,128 + 2aa4: 0200 addi s0,sp,256 + 2aa6: 1104 addi s1,sp,160 + 2aa8: 04090003 lb zero,64(s2) + 2aac: 0100 addi s0,sp,128 + 2aae: 0200 addi s0,sp,256 + 2ab0: 1104 addi s1,sp,160 + 2ab2: 0c090003 lb zero,192(s2) + 2ab6: 0100 addi s0,sp,128 + 2ab8: 0200 addi s0,sp,256 + 2aba: 1104 addi s1,sp,160 + 2abc: 18090003 lb zero,384(s2) + 2ac0: 0100 addi s0,sp,128 + 2ac2: 0200 addi s0,sp,256 + 2ac4: 1104 addi s1,sp,160 + 2ac6: 00090003 lb zero,0(s2) + 2aca: 0100 addi s0,sp,128 + 2acc: 0200 addi s0,sp,256 + 2ace: 1104 addi s1,sp,160 + 2ad0: 00090003 lb zero,0(s2) + 2ad4: 0100 addi s0,sp,128 + 2ad6: 0200 addi s0,sp,256 + 2ad8: 1104 addi s1,sp,160 + 2ada: 00090003 lb zero,0(s2) + 2ade: 0100 addi s0,sp,128 + 2ae0: 0200 addi s0,sp,256 + 2ae2: 1104 addi s1,sp,160 + 2ae4: 00090003 lb zero,0(s2) + 2ae8: 0100 addi s0,sp,128 + 2aea: 0200 addi s0,sp,256 + 2aec: 1104 addi s1,sp,160 + 2aee: 00090003 lb zero,0(s2) + 2af2: 0100 addi s0,sp,128 + 2af4: 0200 addi s0,sp,256 + 2af6: 1104 addi s1,sp,160 + 2af8: 00090003 lb zero,0(s2) + 2afc: 0100 addi s0,sp,128 + 2afe: 0200 addi s0,sp,256 + 2b00: 1104 addi s1,sp,160 + 2b02: 00090003 lb zero,0(s2) + 2b06: 0100 addi s0,sp,128 + 2b08: 0200 addi s0,sp,256 + 2b0a: 1104 addi s1,sp,160 + 2b0c: 00090003 lb zero,0(s2) + 2b10: 0100 addi s0,sp,128 + 2b12: 0200 addi s0,sp,256 + 2b14: 1104 addi s1,sp,160 + 2b16: 00090003 lb zero,0(s2) + 2b1a: 0100 addi s0,sp,128 + 2b1c: 0200 addi s0,sp,256 + 2b1e: 1104 addi s1,sp,160 + 2b20: 00090003 lb zero,0(s2) + 2b24: 0100 addi s0,sp,128 + 2b26: 0200 addi s0,sp,256 + 2b28: 1104 addi s1,sp,160 + 2b2a: 04090003 lb zero,64(s2) + 2b2e: 0100 addi s0,sp,128 + 2b30: 0200 addi s0,sp,256 + 2b32: 1104 addi s1,sp,160 + 2b34: 08090003 lb zero,128(s2) + 2b38: 0100 addi s0,sp,128 + 2b3a: 0200 addi s0,sp,256 + 2b3c: 1104 addi s1,sp,160 + 2b3e: 04090003 lb zero,64(s2) + 2b42: 0100 addi s0,sp,128 + 2b44: 0200 addi s0,sp,256 + 2b46: 1104 addi s1,sp,160 + 2b48: 08090003 lb zero,128(s2) + 2b4c: 0100 addi s0,sp,128 + 2b4e: 0200 addi s0,sp,256 + 2b50: 1204 addi s1,sp,288 + 2b52: 04090003 lb zero,64(s2) + 2b56: 0100 addi s0,sp,128 + 2b58: 0200 addi s0,sp,256 + 2b5a: 1404 addi s1,sp,544 + 2b5c: 04090003 lb zero,64(s2) + 2b60: 0100 addi s0,sp,128 + 2b62: 0200 addi s0,sp,256 + 2b64: 1404 addi s1,sp,544 + 2b66: 00090003 lb zero,0(s2) + 2b6a: 0100 addi s0,sp,128 + 2b6c: 0200 addi s0,sp,256 + 2b6e: 1404 addi s1,sp,544 + 2b70: 00090003 lb zero,0(s2) + 2b74: 0100 addi s0,sp,128 + 2b76: 0200 addi s0,sp,256 + 2b78: 1404 addi s1,sp,544 + 2b7a: 00090003 lb zero,0(s2) + 2b7e: 0100 addi s0,sp,128 + 2b80: 0200 addi s0,sp,256 + 2b82: 1404 addi s1,sp,544 + 2b84: 00090003 lb zero,0(s2) + 2b88: 0100 addi s0,sp,128 + 2b8a: 0200 addi s0,sp,256 + 2b8c: 1404 addi s1,sp,544 + 2b8e: 00090003 lb zero,0(s2) + 2b92: 0100 addi s0,sp,128 + 2b94: 0200 addi s0,sp,256 + 2b96: 1404 addi s1,sp,544 + 2b98: 18090003 lb zero,384(s2) + 2b9c: 0100 addi s0,sp,128 + 2b9e: 0200 addi s0,sp,256 + 2ba0: 1404 addi s1,sp,544 + 2ba2: 08090003 lb zero,128(s2) + 2ba6: 0100 addi s0,sp,128 + 2ba8: 0200 addi s0,sp,256 + 2baa: 1404 addi s1,sp,544 + 2bac: 04090003 lb zero,64(s2) + 2bb0: 0100 addi s0,sp,128 + 2bb2: 0200 addi s0,sp,256 + 2bb4: 1404 addi s1,sp,544 + 2bb6: 00090003 lb zero,0(s2) + 2bba: 0100 addi s0,sp,128 + 2bbc: 0200 addi s0,sp,256 + 2bbe: 1404 addi s1,sp,544 + 2bc0: 04090003 lb zero,64(s2) + 2bc4: 0100 addi s0,sp,128 + 2bc6: 0200 addi s0,sp,256 + 2bc8: 1404 addi s1,sp,544 + 2bca: 00090003 lb zero,0(s2) + 2bce: 0100 addi s0,sp,128 + 2bd0: 0200 addi s0,sp,256 + 2bd2: 1404 addi s1,sp,544 + 2bd4: 00090003 lb zero,0(s2) + 2bd8: 0100 addi s0,sp,128 + 2bda: 0200 addi s0,sp,256 + 2bdc: 1404 addi s1,sp,544 + 2bde: 00090003 lb zero,0(s2) + 2be2: 0100 addi s0,sp,128 + 2be4: 0200 addi s0,sp,256 + 2be6: 1404 addi s1,sp,544 + 2be8: 00090003 lb zero,0(s2) + 2bec: 0100 addi s0,sp,128 + 2bee: 0200 addi s0,sp,256 + 2bf0: 1404 addi s1,sp,544 + 2bf2: 00090003 lb zero,0(s2) + 2bf6: 0100 addi s0,sp,128 + 2bf8: 0200 addi s0,sp,256 + 2bfa: 1404 addi s1,sp,544 + 2bfc: 04090003 lb zero,64(s2) + 2c00: 0100 addi s0,sp,128 + 2c02: 0200 addi s0,sp,256 + 2c04: 1404 addi s1,sp,544 + 2c06: 04090003 lb zero,64(s2) + 2c0a: 0100 addi s0,sp,128 + 2c0c: 0200 addi s0,sp,256 + 2c0e: 1404 addi s1,sp,544 + 2c10: 04090003 lb zero,64(s2) + 2c14: 0100 addi s0,sp,128 + 2c16: 0200 addi s0,sp,256 + 2c18: 1404 addi s1,sp,544 + 2c1a: 00090003 lb zero,0(s2) + 2c1e: 0100 addi s0,sp,128 + 2c20: 0200 addi s0,sp,256 + 2c22: 1404 addi s1,sp,544 + 2c24: 04090003 lb zero,64(s2) + 2c28: 0100 addi s0,sp,128 + 2c2a: 0200 addi s0,sp,256 + 2c2c: 1404 addi s1,sp,544 + 2c2e: 00090003 lb zero,0(s2) + 2c32: 0100 addi s0,sp,128 + 2c34: 0200 addi s0,sp,256 + 2c36: 1404 addi s1,sp,544 + 2c38: 00090003 lb zero,0(s2) + 2c3c: 0100 addi s0,sp,128 + 2c3e: 0200 addi s0,sp,256 + 2c40: 1404 addi s1,sp,544 + 2c42: 00090003 lb zero,0(s2) + 2c46: 0100 addi s0,sp,128 + 2c48: 0200 addi s0,sp,256 + 2c4a: 1404 addi s1,sp,544 + 2c4c: 00090003 lb zero,0(s2) + 2c50: 0100 addi s0,sp,128 + 2c52: 0200 addi s0,sp,256 + 2c54: 1404 addi s1,sp,544 + 2c56: 00090003 lb zero,0(s2) + 2c5a: 0100 addi s0,sp,128 + 2c5c: 0200 addi s0,sp,256 + 2c5e: 1404 addi s1,sp,544 + 2c60: 00090003 lb zero,0(s2) + 2c64: 0100 addi s0,sp,128 + 2c66: 0200 addi s0,sp,256 + 2c68: 1404 addi s1,sp,544 + 2c6a: 00090003 lb zero,0(s2) + 2c6e: 0100 addi s0,sp,128 + 2c70: 0200 addi s0,sp,256 + 2c72: 1404 addi s1,sp,544 + 2c74: 00090003 lb zero,0(s2) + 2c78: 0100 addi s0,sp,128 + 2c7a: 0200 addi s0,sp,256 + 2c7c: 1404 addi s1,sp,544 + 2c7e: 00090003 lb zero,0(s2) + 2c82: 0100 addi s0,sp,128 + 2c84: 0200 addi s0,sp,256 + 2c86: 1404 addi s1,sp,544 + 2c88: 00090003 lb zero,0(s2) + 2c8c: 0100 addi s0,sp,128 + 2c8e: 0200 addi s0,sp,256 + 2c90: 1404 addi s1,sp,544 + 2c92: 00090003 lb zero,0(s2) + 2c96: 0100 addi s0,sp,128 + 2c98: 0200 addi s0,sp,256 + 2c9a: 1404 addi s1,sp,544 + 2c9c: 00090003 lb zero,0(s2) + 2ca0: 0100 addi s0,sp,128 + 2ca2: 0200 addi s0,sp,256 + 2ca4: 1404 addi s1,sp,544 + 2ca6: 00090003 lb zero,0(s2) + 2caa: 0100 addi s0,sp,128 + 2cac: 0200 addi s0,sp,256 + 2cae: 1404 addi s1,sp,544 + 2cb0: 00090003 lb zero,0(s2) + 2cb4: 0100 addi s0,sp,128 + 2cb6: 0200 addi s0,sp,256 + 2cb8: 1404 addi s1,sp,544 + 2cba: 00090003 lb zero,0(s2) + 2cbe: 0100 addi s0,sp,128 + 2cc0: 0200 addi s0,sp,256 + 2cc2: 1404 addi s1,sp,544 + 2cc4: 00090003 lb zero,0(s2) + 2cc8: 0100 addi s0,sp,128 + 2cca: 0200 addi s0,sp,256 + 2ccc: 1404 addi s1,sp,544 + 2cce: 00090003 lb zero,0(s2) + 2cd2: 0100 addi s0,sp,128 + 2cd4: 0200 addi s0,sp,256 + 2cd6: 1404 addi s1,sp,544 + 2cd8: 00090003 lb zero,0(s2) + 2cdc: 0100 addi s0,sp,128 + 2cde: 0200 addi s0,sp,256 + 2ce0: 1404 addi s1,sp,544 + 2ce2: 00090003 lb zero,0(s2) + 2ce6: 0100 addi s0,sp,128 + 2ce8: 0200 addi s0,sp,256 + 2cea: 1404 addi s1,sp,544 + 2cec: 00090003 lb zero,0(s2) + 2cf0: 0100 addi s0,sp,128 + 2cf2: 0200 addi s0,sp,256 + 2cf4: 1404 addi s1,sp,544 + 2cf6: 00090003 lb zero,0(s2) + 2cfa: 0100 addi s0,sp,128 + 2cfc: 0200 addi s0,sp,256 + 2cfe: 1404 addi s1,sp,544 + 2d00: 00090003 lb zero,0(s2) + 2d04: 0100 addi s0,sp,128 + 2d06: 0200 addi s0,sp,256 + 2d08: 1404 addi s1,sp,544 + 2d0a: 00090003 lb zero,0(s2) + 2d0e: 0100 addi s0,sp,128 + 2d10: 0200 addi s0,sp,256 + 2d12: 1404 addi s1,sp,544 + 2d14: 00090003 lb zero,0(s2) + 2d18: 0100 addi s0,sp,128 + 2d1a: 0200 addi s0,sp,256 + 2d1c: 1404 addi s1,sp,544 + 2d1e: 00090003 lb zero,0(s2) + 2d22: 0100 addi s0,sp,128 + 2d24: 0200 addi s0,sp,256 + 2d26: 1404 addi s1,sp,544 + 2d28: 50090003 lb zero,1280(s2) + 2d2c: 0100 addi s0,sp,128 + 2d2e: 0200 addi s0,sp,256 + 2d30: 1404 addi s1,sp,544 + 2d32: 00090003 lb zero,0(s2) + 2d36: 0100 addi s0,sp,128 + 2d38: 0200 addi s0,sp,256 + 2d3a: 1404 addi s1,sp,544 + 2d3c: 00090003 lb zero,0(s2) + 2d40: 0100 addi s0,sp,128 + 2d42: 0200 addi s0,sp,256 + 2d44: 1404 addi s1,sp,544 + 2d46: 00090003 lb zero,0(s2) + 2d4a: 0100 addi s0,sp,128 + 2d4c: 0200 addi s0,sp,256 + 2d4e: 1404 addi s1,sp,544 + 2d50: 00090003 lb zero,0(s2) + 2d54: 0100 addi s0,sp,128 + 2d56: 0200 addi s0,sp,256 + 2d58: 1404 addi s1,sp,544 + 2d5a: 00090003 lb zero,0(s2) + 2d5e: 0100 addi s0,sp,128 + 2d60: 0200 addi s0,sp,256 + 2d62: 1404 addi s1,sp,544 + 2d64: 00090003 lb zero,0(s2) + 2d68: 0100 addi s0,sp,128 + 2d6a: 0200 addi s0,sp,256 + 2d6c: 1404 addi s1,sp,544 + 2d6e: 04090003 lb zero,64(s2) + 2d72: 0100 addi s0,sp,128 + 2d74: 0200 addi s0,sp,256 + 2d76: 1404 addi s1,sp,544 + 2d78: 00090003 lb zero,0(s2) + 2d7c: 0100 addi s0,sp,128 + 2d7e: 0200 addi s0,sp,256 + 2d80: 1404 addi s1,sp,544 + 2d82: 00090003 lb zero,0(s2) + 2d86: 0100 addi s0,sp,128 + 2d88: 0200 addi s0,sp,256 + 2d8a: 1404 addi s1,sp,544 + 2d8c: 00090003 lb zero,0(s2) + 2d90: 0100 addi s0,sp,128 + 2d92: 0200 addi s0,sp,256 + 2d94: 1404 addi s1,sp,544 + 2d96: 00090003 lb zero,0(s2) + 2d9a: 0100 addi s0,sp,128 + 2d9c: 0200 addi s0,sp,256 + 2d9e: 2604 fld fs1,8(a2) + 2da0: 04090003 lb zero,64(s2) + 2da4: 0100 addi s0,sp,128 + 2da6: 0200 addi s0,sp,256 + 2da8: 2604 fld fs1,8(a2) + 2daa: 00090003 lb zero,0(s2) + 2dae: 0100 addi s0,sp,128 + 2db0: 0200 addi s0,sp,256 + 2db2: 2604 fld fs1,8(a2) + 2db4: 14090003 lb zero,320(s2) + 2db8: 0100 addi s0,sp,128 + 2dba: 0200 addi s0,sp,256 + 2dbc: 0204 addi s1,sp,256 + 2dbe: 04090103 lb sp,64(s2) + 2dc2: 0100 addi s0,sp,128 + 2dc4: 0200 addi s0,sp,256 + 2dc6: 0204 addi s1,sp,256 + 2dc8: 04090003 lb zero,64(s2) + 2dcc: 0100 addi s0,sp,128 + 2dce: 0200 addi s0,sp,256 + 2dd0: 0604 addi s1,sp,768 + 2dd2: 04090003 lb zero,64(s2) + 2dd6: 0100 addi s0,sp,128 + 2dd8: 0200 addi s0,sp,256 + 2dda: 0604 addi s1,sp,768 + 2ddc: 00090003 lb zero,0(s2) + 2de0: 0100 addi s0,sp,128 + 2de2: 0200 addi s0,sp,256 + 2de4: 0804 addi s1,sp,16 + 2de6: 08090003 lb zero,128(s2) + 2dea: 0100 addi s0,sp,128 + 2dec: 0200 addi s0,sp,256 + 2dee: 0804 addi s1,sp,16 + 2df0: 00090003 lb zero,0(s2) + 2df4: 0100 addi s0,sp,128 + 2df6: 0200 addi s0,sp,256 + 2df8: 0804 addi s1,sp,16 + 2dfa: 00090003 lb zero,0(s2) + 2dfe: 0100 addi s0,sp,128 + 2e00: 0200 addi s0,sp,256 + 2e02: 0804 addi s1,sp,16 + 2e04: 00090003 lb zero,0(s2) + 2e08: 0100 addi s0,sp,128 + 2e0a: 0200 addi s0,sp,256 + 2e0c: 0a04 addi s1,sp,272 + 2e0e: 0c090003 lb zero,192(s2) + 2e12: 0100 addi s0,sp,128 + 2e14: 0200 addi s0,sp,256 + 2e16: 0a04 addi s1,sp,272 + 2e18: 00090003 lb zero,0(s2) + 2e1c: 0100 addi s0,sp,128 + 2e1e: 0200 addi s0,sp,256 + 2e20: 0a04 addi s1,sp,272 + 2e22: 00090003 lb zero,0(s2) + 2e26: 0100 addi s0,sp,128 + 2e28: 0200 addi s0,sp,256 + 2e2a: 0a04 addi s1,sp,272 + 2e2c: 04090003 lb zero,64(s2) + 2e30: 0100 addi s0,sp,128 + 2e32: 0200 addi s0,sp,256 + 2e34: 0a04 addi s1,sp,272 + 2e36: 08090003 lb zero,128(s2) + 2e3a: 0100 addi s0,sp,128 + 2e3c: 0200 addi s0,sp,256 + 2e3e: 0904 addi s1,sp,144 + 2e40: 04090003 lb zero,64(s2) + 2e44: 0100 addi s0,sp,128 + 2e46: 0200 addi s0,sp,256 + 2e48: 0904 addi s1,sp,144 + 2e4a: 00090003 lb zero,0(s2) + 2e4e: 0100 addi s0,sp,128 + 2e50: 0200 addi s0,sp,256 + 2e52: 1804 addi s1,sp,48 + 2e54: 08090003 lb zero,128(s2) + 2e58: 0100 addi s0,sp,128 + 2e5a: 0200 addi s0,sp,256 + 2e5c: 1804 addi s1,sp,48 + 2e5e: 0c090003 lb zero,192(s2) + 2e62: 0100 addi s0,sp,128 + 2e64: 0200 addi s0,sp,256 + 2e66: 1a04 addi s1,sp,304 + 2e68: 04090003 lb zero,64(s2) + 2e6c: 0100 addi s0,sp,128 + 2e6e: 0200 addi s0,sp,256 + 2e70: 1a04 addi s1,sp,304 + 2e72: 00090003 lb zero,0(s2) + 2e76: 0100 addi s0,sp,128 + 2e78: 0200 addi s0,sp,256 + 2e7a: 1a04 addi s1,sp,304 + 2e7c: 00090003 lb zero,0(s2) + 2e80: 0100 addi s0,sp,128 + 2e82: 0200 addi s0,sp,256 + 2e84: 1a04 addi s1,sp,304 + 2e86: 00090003 lb zero,0(s2) + 2e8a: 0100 addi s0,sp,128 + 2e8c: 0306 slli t1,t1,0x1 + 2e8e: 0900 addi s0,sp,144 + 2e90: 0008 0x8 + 2e92: 0001 nop + 2e94: 0402 c.slli64 s0 + 2e96: 00030677 0x30677 + 2e9a: 1009 c.nop -30 + 2e9c: 0100 addi s0,sp,128 + 2e9e: 0200 addi s0,sp,256 + 2ea0: 7704 flw fs1,40(a4) + 2ea2: 00090003 lb zero,0(s2) + 2ea6: 0100 addi s0,sp,128 + 2ea8: 0200 addi s0,sp,256 + 2eaa: 7704 flw fs1,40(a4) + 2eac: 00090003 lb zero,0(s2) + 2eb0: 0100 addi s0,sp,128 + 2eb2: 0200 addi s0,sp,256 + 2eb4: 7704 flw fs1,40(a4) + 2eb6: 00090003 lb zero,0(s2) + 2eba: 0100 addi s0,sp,128 + 2ebc: 0200 addi s0,sp,256 + 2ebe: 7704 flw fs1,40(a4) + 2ec0: 00090003 lb zero,0(s2) + 2ec4: 0100 addi s0,sp,128 + 2ec6: 0200 addi s0,sp,256 + 2ec8: 7704 flw fs1,40(a4) + 2eca: 00090003 lb zero,0(s2) + 2ece: 0100 addi s0,sp,128 + 2ed0: 0200 addi s0,sp,256 + 2ed2: 7704 flw fs1,40(a4) + 2ed4: 00090003 lb zero,0(s2) + 2ed8: 0100 addi s0,sp,128 + 2eda: 0200 addi s0,sp,256 + 2edc: 7704 flw fs1,40(a4) + 2ede: 00090003 lb zero,0(s2) + 2ee2: 0100 addi s0,sp,128 + 2ee4: 0105 addi sp,sp,1 + 2ee6: 0200 addi s0,sp,256 + 2ee8: 7704 flw fs1,40(a4) + 2eea: 0306 slli t1,t1,0x1 + 2eec: 0904 addi s1,sp,144 + 2eee: 001c 0x1c + 2ef0: 0501 addi a0,a0,0 + 2ef2: 04020003 lb zero,64(tp) # 1a040 <_start-0x7ffe5fc0> + 2ef6: 097c0377 0x97c0377 + 2efa: 0004 0x4 + 2efc: 0001 nop + 2efe: 0402 c.slli64 s0 + 2f00: 00030677 0x30677 + 2f04: 0409 addi s0,s0,2 + 2f06: 0100 addi s0,sp,128 + 2f08: 0200 addi s0,sp,256 + 2f0a: 7704 flw fs1,40(a4) + 2f0c: 00090003 lb zero,0(s2) + 2f10: 0100 addi s0,sp,128 + 2f12: 0200 addi s0,sp,256 + 2f14: 7704 flw fs1,40(a4) + 2f16: 00090103 lb sp,0(s2) + 2f1a: 0100 addi s0,sp,128 + 2f1c: 0200 addi s0,sp,256 + 2f1e: 7704 flw fs1,40(a4) + 2f20: 00090003 lb zero,0(s2) + 2f24: 0100 addi s0,sp,128 + 2f26: 0200 addi s0,sp,256 + 2f28: 7704 flw fs1,40(a4) + 2f2a: 00090003 lb zero,0(s2) + 2f2e: 0100 addi s0,sp,128 + 2f30: 0200 addi s0,sp,256 + 2f32: 7704 flw fs1,40(a4) + 2f34: 00090203 lb tp,0(s2) + 2f38: 0100 addi s0,sp,128 + 2f3a: 0105 addi sp,sp,1 + 2f3c: 0200 addi s0,sp,256 + 2f3e: 7704 flw fs1,40(a4) + 2f40: 0306 slli t1,t1,0x1 + 2f42: 0901 addi s2,s2,0 + 2f44: 0000 unimp + 2f46: 0501 addi a0,a0,0 + 2f48: 04020003 lb zero,64(tp) # 40 <_start-0x7fffffc0> + 2f4c: 09790307 0x9790307 + 2f50: 0030 addi a2,sp,8 + 2f52: 0001 nop + 2f54: 0402 c.slli64 s0 + 2f56: 02030607 0x2030607 + 2f5a: 0409 addi s0,s0,2 + 2f5c: 0100 addi s0,sp,128 + 2f5e: 0200 addi s0,sp,256 + 2f60: 2f04 fld fs1,24(a4) + 2f62: 0c090003 lb zero,192(s2) + 2f66: 0100 addi s0,sp,128 + 2f68: 0200 addi s0,sp,256 + 2f6a: 2f04 fld fs1,24(a4) + 2f6c: 00090103 lb sp,0(s2) + 2f70: 0100 addi s0,sp,128 + 2f72: 0200 addi s0,sp,256 + 2f74: 2f04 fld fs1,24(a4) + 2f76: 00090003 lb zero,0(s2) + 2f7a: 0100 addi s0,sp,128 + 2f7c: 0200 addi s0,sp,256 + 2f7e: 2f04 fld fs1,24(a4) + 2f80: 00090003 lb zero,0(s2) + 2f84: 0100 addi s0,sp,128 + 2f86: 0306 slli t1,t1,0x1 + 2f88: 0900 addi s0,sp,144 + 2f8a: 0008 0x8 + 2f8c: 0001 nop + 2f8e: 0402 c.slli64 s0 + 2f90: 0304 addi s1,sp,384 + 2f92: 097e slli s2,s2,0x1f + 2f94: 001c 0x1c + 2f96: 0001 nop + 2f98: 0402 c.slli64 s0 + 2f9a: 0604 addi s1,sp,768 + 2f9c: 04090103 lb sp,64(s2) + 2fa0: 0100 addi s0,sp,128 + 2fa2: 0306 slli t1,t1,0x1 + 2fa4: 0900 addi s0,sp,144 + 2fa6: 0004 0x4 + 2fa8: 0001 nop + 2faa: 0402 c.slli64 s0 + 2fac: 0103063b 0x103063b + 2fb0: 0809 addi a6,a6,2 + 2fb2: 0100 addi s0,sp,128 + 2fb4: 0200 addi s0,sp,256 + 2fb6: 3b04 fld fs1,48(a4) + 2fb8: 00090003 lb zero,0(s2) + 2fbc: 0100 addi s0,sp,128 + 2fbe: 0200 addi s0,sp,256 + 2fc0: 3b04 fld fs1,48(a4) + 2fc2: 00090003 lb zero,0(s2) + 2fc6: 0100 addi s0,sp,128 + 2fc8: 0200 addi s0,sp,256 + 2fca: 3b04 fld fs1,48(a4) + 2fcc: 08090003 lb zero,128(s2) + 2fd0: 0100 addi s0,sp,128 + 2fd2: 0200 addi s0,sp,256 + 2fd4: 3c04 fld fs1,56(s0) + 2fd6: 08090003 lb zero,128(s2) + 2fda: 0100 addi s0,sp,128 + 2fdc: 0200 addi s0,sp,256 + 2fde: 3e04 fld fs1,56(a2) + 2fe0: 08090003 lb zero,128(s2) + 2fe4: 0100 addi s0,sp,128 + 2fe6: 0200 addi s0,sp,256 + 2fe8: 3e04 fld fs1,56(a2) + 2fea: 1c090003 lb zero,448(s2) + 2fee: 0100 addi s0,sp,128 + 2ff0: 0200 addi s0,sp,256 + 2ff2: 4b04 lw s1,16(a4) + 2ff4: 04090003 lb zero,64(s2) + 2ff8: 0100 addi s0,sp,128 + 2ffa: 0200 addi s0,sp,256 + 2ffc: 4b04 lw s1,16(a4) + 2ffe: 00090003 lb zero,0(s2) + 3002: 0100 addi s0,sp,128 + 3004: 0200 addi s0,sp,256 + 3006: 4c04 lw s1,24(s0) + 3008: 08090003 lb zero,128(s2) + 300c: 0100 addi s0,sp,128 + 300e: 0200 addi s0,sp,256 + 3010: 4c04 lw s1,24(s0) + 3012: 00090003 lb zero,0(s2) + 3016: 0100 addi s0,sp,128 + 3018: 0200 addi s0,sp,256 + 301a: 4c04 lw s1,24(s0) + 301c: 00090003 lb zero,0(s2) + 3020: 0100 addi s0,sp,128 + 3022: 0200 addi s0,sp,256 + 3024: 4c04 lw s1,24(s0) + 3026: 00090003 lb zero,0(s2) + 302a: 0100 addi s0,sp,128 + 302c: 0200 addi s0,sp,256 + 302e: 4e04 lw s1,24(a2) + 3030: 0c090003 lb zero,192(s2) + 3034: 0100 addi s0,sp,128 + 3036: 0200 addi s0,sp,256 + 3038: 4e04 lw s1,24(a2) + 303a: 00090003 lb zero,0(s2) + 303e: 0100 addi s0,sp,128 + 3040: 0200 addi s0,sp,256 + 3042: 4e04 lw s1,24(a2) + 3044: 00090003 lb zero,0(s2) + 3048: 0100 addi s0,sp,128 + 304a: 0200 addi s0,sp,256 + 304c: 4e04 lw s1,24(a2) + 304e: 04090003 lb zero,64(s2) + 3052: 0100 addi s0,sp,128 + 3054: 0200 addi s0,sp,256 + 3056: 4e04 lw s1,24(a2) + 3058: 08090003 lb zero,128(s2) + 305c: 0100 addi s0,sp,128 + 305e: 0200 addi s0,sp,256 + 3060: 4d04 lw s1,24(a0) + 3062: 04090003 lb zero,64(s2) + 3066: 0100 addi s0,sp,128 + 3068: 0200 addi s0,sp,256 + 306a: 4d04 lw s1,24(a0) + 306c: 00090003 lb zero,0(s2) + 3070: 0100 addi s0,sp,128 + 3072: 0200 addi s0,sp,256 + 3074: 5d04 lw s1,56(a0) + 3076: 08090003 lb zero,128(s2) + 307a: 0100 addi s0,sp,128 + 307c: 0200 addi s0,sp,256 + 307e: 5d04 lw s1,56(a0) + 3080: 00090003 lb zero,0(s2) + 3084: 0100 addi s0,sp,128 + 3086: 0200 addi s0,sp,256 + 3088: 5d04 lw s1,56(a0) + 308a: 00090003 lb zero,0(s2) + 308e: 0100 addi s0,sp,128 + 3090: 0200 addi s0,sp,256 + 3092: 5d04 lw s1,56(a0) + 3094: 0c090003 lb zero,192(s2) + 3098: 0100 addi s0,sp,128 + 309a: 0306 slli t1,t1,0x1 + 309c: 0900 addi s0,sp,144 + 309e: 0004 0x4 + 30a0: 0001 nop + 30a2: 0402 c.slli64 s0 + 30a4: 0003063f 01000809 0x10008090003063f + 30ac: 0200 addi s0,sp,256 + 30ae: 4704 lw s1,8(a4) + 30b0: 0306 slli t1,t1,0x1 + 30b2: 0900 addi s0,sp,144 + 30b4: 0018 0x18 + 30b6: 0001 nop + 30b8: 0402 c.slli64 s0 + 30ba: 034a slli t1,t1,0x12 + 30bc: 0900 addi s0,sp,144 + 30be: 0008 0x8 + 30c0: 0001 nop + 30c2: 0402 c.slli64 s0 + 30c4: 064a slli a2,a2,0x12 + 30c6: 0c090003 lb zero,192(s2) + 30ca: 0100 addi s0,sp,128 + 30cc: 0306 slli t1,t1,0x1 + 30ce: 0900 addi s0,sp,144 + 30d0: 0008 0x8 + 30d2: 0901 addi s2,s2,0 + 30d4: 0034 addi a3,sp,8 + 30d6: 0100 addi s0,sp,128 + 30d8: a001 j 30d8 <_start-0x7fffcf28> + 30da: 0010 0x10 + 30dc: 0300 addi s0,sp,384 + 30de: 9300 0x9300 + 30e0: 0000 unimp + 30e2: 0100 addi s0,sp,128 + 30e4: fb01 bnez a4,2ff4 <_start-0x7fffd00c> + 30e6: 0d0e slli s10,s10,0x3 + 30e8: 0100 addi s0,sp,128 + 30ea: 0101 addi sp,sp,0 + 30ec: 0001 nop + 30ee: 0000 unimp + 30f0: 0001 nop + 30f2: 0100 addi s0,sp,128 + 30f4: 2e2e fld ft8,200(sp) + 30f6: 2f2e2e2f 0x2f2e2e2f + 30fa: 2e2e fld ft8,200(sp) + 30fc: 2f2e2e2f 0x2f2e2e2f + 3100: 6972 flw fs2,28(sp) + 3102: 2d766373 csrrsi t1,0x2d7,12 + 3106: 2f636367 0x2f636367 + 310a: 696c flw fa1,84(a0) + 310c: 6762 flw fa4,24(sp) + 310e: 732f6363 bltu t5,s2,3834 <_start-0x7fffc7cc> + 3112: 2d74666f jal a2,49be8 <_start-0x7ffb6418> + 3116: 7066 flw ft0,120(sp) + 3118: 2e00 fld fs0,24(a2) + 311a: 2f2e fld ft10,200(sp) + 311c: 2e2e fld ft8,200(sp) + 311e: 2f2e2e2f 0x2f2e2e2f + 3122: 2e2e fld ft8,200(sp) + 3124: 7369722f 0x7369722f + 3128: 672d7663 bgeu s10,s2,3794 <_start-0x7fffc86c> + 312c: 6c2f6363 bltu t5,sp,37f2 <_start-0x7fffc80e> + 3130: 6269 lui tp,0x1a + 3132: 2f636367 0x2f636367 + 3136: 2e2e fld ft8,200(sp) + 3138: 636e692f 0x636e692f + 313c: 756c flw fa1,108(a0) + 313e: 6564 flw fs1,76(a0) + 3140: 0000 unimp + 3142: 64627573 csrrci a0,0x646,4 + 3146: 3366 fld ft6,120(sp) + 3148: 632e flw ft6,200(sp) + 314a: 0100 addi s0,sp,128 + 314c: 0000 unimp + 314e: 74666f73 csrrsi t5,0x746,12 + 3152: 662d lui a2,0xb + 3154: 2e70 fld fa2,216(a2) + 3156: 0068 addi a0,sp,12 + 3158: 0001 nop + 315a: 6400 flw fs0,8(s0) + 315c: 6c62756f jal a0,2a822 <_start-0x7ffd57de> + 3160: 2e65 jal 3518 <_start-0x7fffcae8> + 3162: 0068 addi a0,sp,12 + 3164: 0001 nop + 3166: 6c00 flw fs0,24(s0) + 3168: 6c676e6f jal t3,7982e <_start-0x7ff867d2> + 316c: 2e676e6f jal t3,79452 <_start-0x7ff86bae> + 3170: 0068 addi a0,sp,12 + 3172: 0002 c.slli64 zero + 3174: 0000 unimp + 3176: 0105 addi sp,sp,1 + 3178: 0500 addi s0,sp,640 + 317a: 7c02 flw fs8,32(sp) + 317c: 0025 c.nop 9 + 317e: 0380 addi s0,sp,448 + 3180: 03050123 sb a6,34(a0) # ffffb022 <__global_pointer$+0x7fff624a> + 3184: 00090103 lb sp,0(s2) + 3188: 0100 addi s0,sp,128 + 318a: 00090003 lb zero,0(s2) + 318e: 0100 addi s0,sp,128 + 3190: 0d05 addi s10,s10,1 + 3192: 00090003 lb zero,0(s2) + 3196: 0100 addi s0,sp,128 + 3198: 0305 addi t1,t1,1 + 319a: 00090103 lb sp,0(s2) + 319e: 0100 addi s0,sp,128 + 31a0: 00090003 lb zero,0(s2) + 31a4: 0100 addi s0,sp,128 + 31a6: 00090003 lb zero,0(s2) + 31aa: 0100 addi s0,sp,128 + 31ac: 00090003 lb zero,0(s2) + 31b0: 0100 addi s0,sp,128 + 31b2: 00090103 lb sp,0(s2) + 31b6: 0100 addi s0,sp,128 + 31b8: 00090003 lb zero,0(s2) + 31bc: 0100 addi s0,sp,128 + 31be: 00090003 lb zero,0(s2) + 31c2: 0100 addi s0,sp,128 + 31c4: 00090003 lb zero,0(s2) + 31c8: 0100 addi s0,sp,128 + 31ca: 00090103 lb sp,0(s2) + 31ce: 0100 addi s0,sp,128 + 31d0: 00090003 lb zero,0(s2) + 31d4: 0100 addi s0,sp,128 + 31d6: 00090003 lb zero,0(s2) + 31da: 0100 addi s0,sp,128 + 31dc: 00090003 lb zero,0(s2) + 31e0: 0100 addi s0,sp,128 + 31e2: 00090103 lb sp,0(s2) + 31e6: 0100 addi s0,sp,128 + 31e8: 00090203 lb tp,0(s2) + 31ec: 0100 addi s0,sp,128 + 31ee: 00090103 lb sp,0(s2) + 31f2: 0100 addi s0,sp,128 + 31f4: 00090003 lb zero,0(s2) + 31f8: 0100 addi s0,sp,128 + 31fa: 00090003 lb zero,0(s2) + 31fe: 0100 addi s0,sp,128 + 3200: 00090003 lb zero,0(s2) + 3204: 0100 addi s0,sp,128 + 3206: 00090003 lb zero,0(s2) + 320a: 0100 addi s0,sp,128 + 320c: 00090003 lb zero,0(s2) + 3210: 0100 addi s0,sp,128 + 3212: 0105 addi sp,sp,1 + 3214: 0306 slli t1,t1,0x1 + 3216: 0978 addi a4,sp,156 + 3218: 0008 0x8 + 321a: 0501 addi a0,a0,0 + 321c: 09080303 lb t1,144(a6) + 3220: 0004 0x4 + 3222: 0601 addi a2,a2,0 + 3224: 04090003 lb zero,64(s2) + 3228: 0100 addi s0,sp,128 + 322a: 0306 slli t1,t1,0x1 + 322c: 0901 addi s2,s2,0 + 322e: 0004 0x4 + 3230: 0501 addi a0,a0,0 + 3232: 0301 addi t1,t1,0 + 3234: 00080977 0x80977 + 3238: 0501 addi a0,a0,0 + 323a: 09080303 lb t1,144(a6) + 323e: 0004 0x4 + 3240: 0601 addi a2,a2,0 + 3242: 08090003 lb zero,128(s2) + 3246: 0100 addi s0,sp,128 + 3248: 0105 addi sp,sp,1 + 324a: 0306 slli t1,t1,0x1 + 324c: 0978 addi a4,sp,156 + 324e: 0004 0x4 + 3250: 0501 addi a0,a0,0 + 3252: 09080303 lb t1,144(a6) + 3256: 0004 0x4 + 3258: 0601 addi a2,a2,0 + 325a: 08090003 lb zero,128(s2) + 325e: 0100 addi s0,sp,128 + 3260: 00090003 lb zero,0(s2) + 3264: 0100 addi s0,sp,128 + 3266: 00090003 lb zero,0(s2) + 326a: 0100 addi s0,sp,128 + 326c: 00090003 lb zero,0(s2) + 3270: 0100 addi s0,sp,128 + 3272: 00090003 lb zero,0(s2) + 3276: 0100 addi s0,sp,128 + 3278: 0306 slli t1,t1,0x1 + 327a: 0901 addi s2,s2,0 + 327c: 0000 unimp + 327e: 0501 addi a0,a0,0 + 3280: 0301 addi t1,t1,0 + 3282: 000c0977 0xc0977 + 3286: 0501 addi a0,a0,0 + 3288: 09090303 lb t1,144(s2) + 328c: 000c 0xc + 328e: 0301 addi t1,t1,0 + 3290: 0901 addi s2,s2,0 + 3292: 0004 0x4 + 3294: 0301 addi t1,t1,0 + 3296: 097e slli s2,s2,0x1f + 3298: 0004 0x4 + 329a: 0601 addi a2,a2,0 + 329c: 04090003 lb zero,64(s2) + 32a0: 0100 addi s0,sp,128 + 32a2: 00090003 lb zero,0(s2) + 32a6: 0100 addi s0,sp,128 + 32a8: 00090103 lb sp,0(s2) + 32ac: 0100 addi s0,sp,128 + 32ae: 00090003 lb zero,0(s2) + 32b2: 0100 addi s0,sp,128 + 32b4: 00090003 lb zero,0(s2) + 32b8: 0100 addi s0,sp,128 + 32ba: 00090003 lb zero,0(s2) + 32be: 0100 addi s0,sp,128 + 32c0: 00090003 lb zero,0(s2) + 32c4: 0100 addi s0,sp,128 + 32c6: 00090003 lb zero,0(s2) + 32ca: 0100 addi s0,sp,128 + 32cc: 00090003 lb zero,0(s2) + 32d0: 0100 addi s0,sp,128 + 32d2: 00090003 lb zero,0(s2) + 32d6: 0100 addi s0,sp,128 + 32d8: 00090003 lb zero,0(s2) + 32dc: 0100 addi s0,sp,128 + 32de: 00090003 lb zero,0(s2) + 32e2: 0100 addi s0,sp,128 + 32e4: 00090003 lb zero,0(s2) + 32e8: 0100 addi s0,sp,128 + 32ea: 00090003 lb zero,0(s2) + 32ee: 0100 addi s0,sp,128 + 32f0: 04090003 lb zero,64(s2) + 32f4: 0100 addi s0,sp,128 + 32f6: 04090003 lb zero,64(s2) + 32fa: 0100 addi s0,sp,128 + 32fc: 00090003 lb zero,0(s2) + 3300: 0100 addi s0,sp,128 + 3302: 00090103 lb sp,0(s2) + 3306: 0100 addi s0,sp,128 + 3308: 00090003 lb zero,0(s2) + 330c: 0100 addi s0,sp,128 + 330e: 0200 addi s0,sp,256 + 3310: 0204 addi s1,sp,256 + 3312: 0306 slli t1,t1,0x1 + 3314: 0900 addi s0,sp,144 + 3316: 0004 0x4 + 3318: 0001 nop + 331a: 0402 c.slli64 s0 + 331c: 00030603 lb a2,0(t1) + 3320: 0809 addi a6,a6,2 + 3322: 0100 addi s0,sp,128 + 3324: 0200 addi s0,sp,256 + 3326: 0b04 addi s1,sp,400 + 3328: 04090003 lb zero,64(s2) + 332c: 0100 addi s0,sp,128 + 332e: 0200 addi s0,sp,256 + 3330: 0b04 addi s1,sp,400 + 3332: 00090003 lb zero,0(s2) + 3336: 0100 addi s0,sp,128 + 3338: 0200 addi s0,sp,256 + 333a: 0b04 addi s1,sp,400 + 333c: 00090003 lb zero,0(s2) + 3340: 0100 addi s0,sp,128 + 3342: 0200 addi s0,sp,256 + 3344: 0b04 addi s1,sp,400 + 3346: 00090003 lb zero,0(s2) + 334a: 0100 addi s0,sp,128 + 334c: 0200 addi s0,sp,256 + 334e: 0b04 addi s1,sp,400 + 3350: 00090003 lb zero,0(s2) + 3354: 0100 addi s0,sp,128 + 3356: 0200 addi s0,sp,256 + 3358: 0b04 addi s1,sp,400 + 335a: 00090003 lb zero,0(s2) + 335e: 0100 addi s0,sp,128 + 3360: 0200 addi s0,sp,256 + 3362: 0b04 addi s1,sp,400 + 3364: 00090003 lb zero,0(s2) + 3368: 0100 addi s0,sp,128 + 336a: 0200 addi s0,sp,256 + 336c: 0b04 addi s1,sp,400 + 336e: 00090003 lb zero,0(s2) + 3372: 0100 addi s0,sp,128 + 3374: 0200 addi s0,sp,256 + 3376: 0c04 addi s1,sp,528 + 3378: 08090003 lb zero,128(s2) + 337c: 0100 addi s0,sp,128 + 337e: 0200 addi s0,sp,256 + 3380: 0c04 addi s1,sp,528 + 3382: 00090003 lb zero,0(s2) + 3386: 0100 addi s0,sp,128 + 3388: 0200 addi s0,sp,256 + 338a: 0c04 addi s1,sp,528 + 338c: 00090003 lb zero,0(s2) + 3390: 0100 addi s0,sp,128 + 3392: 0200 addi s0,sp,256 + 3394: 0e04 addi s1,sp,784 + 3396: 04090003 lb zero,64(s2) + 339a: 0100 addi s0,sp,128 + 339c: 0200 addi s0,sp,256 + 339e: 0e04 addi s1,sp,784 + 33a0: 00090003 lb zero,0(s2) + 33a4: 0100 addi s0,sp,128 + 33a6: 0200 addi s0,sp,256 + 33a8: 1004 addi s1,sp,32 + 33aa: 04090003 lb zero,64(s2) + 33ae: 0100 addi s0,sp,128 + 33b0: 0200 addi s0,sp,256 + 33b2: 1304 addi s1,sp,416 + 33b4: 08090003 lb zero,128(s2) + 33b8: 0100 addi s0,sp,128 + 33ba: 0200 addi s0,sp,256 + 33bc: 1304 addi s1,sp,416 + 33be: 00090003 lb zero,0(s2) + 33c2: 0100 addi s0,sp,128 + 33c4: 0200 addi s0,sp,256 + 33c6: 1304 addi s1,sp,416 + 33c8: 04090003 lb zero,64(s2) + 33cc: 0100 addi s0,sp,128 + 33ce: 0200 addi s0,sp,256 + 33d0: 1c04 addi s1,sp,560 + 33d2: 04090003 lb zero,64(s2) + 33d6: 0100 addi s0,sp,128 + 33d8: 0200 addi s0,sp,256 + 33da: 1c04 addi s1,sp,560 + 33dc: 00090003 lb zero,0(s2) + 33e0: 0100 addi s0,sp,128 + 33e2: 0200 addi s0,sp,256 + 33e4: 1c04 addi s1,sp,560 + 33e6: 00090003 lb zero,0(s2) + 33ea: 0100 addi s0,sp,128 + 33ec: 0200 addi s0,sp,256 + 33ee: 1c04 addi s1,sp,560 + 33f0: 04090003 lb zero,64(s2) + 33f4: 0100 addi s0,sp,128 + 33f6: 0200 addi s0,sp,256 + 33f8: 1c04 addi s1,sp,560 + 33fa: 0c090003 lb zero,192(s2) + 33fe: 0100 addi s0,sp,128 + 3400: 0200 addi s0,sp,256 + 3402: 1c04 addi s1,sp,560 + 3404: 00090003 lb zero,0(s2) + 3408: 0100 addi s0,sp,128 + 340a: 0200 addi s0,sp,256 + 340c: 1c04 addi s1,sp,560 + 340e: 00090003 lb zero,0(s2) + 3412: 0100 addi s0,sp,128 + 3414: 0200 addi s0,sp,256 + 3416: 5504 lw s1,40(a0) + 3418: 04090003 lb zero,64(s2) + 341c: 0100 addi s0,sp,128 + 341e: 0200 addi s0,sp,256 + 3420: 5504 lw s1,40(a0) + 3422: 00090003 lb zero,0(s2) + 3426: 0100 addi s0,sp,128 + 3428: 0200 addi s0,sp,256 + 342a: 5504 lw s1,40(a0) + 342c: 00090003 lb zero,0(s2) + 3430: 0100 addi s0,sp,128 + 3432: 0200 addi s0,sp,256 + 3434: 5504 lw s1,40(a0) + 3436: 0306 slli t1,t1,0x1 + 3438: 097f 0x97f + 343a: 0000 unimp + 343c: 0001 nop + 343e: 0402 c.slli64 s0 + 3440: 0355 addi t1,t1,21 + 3442: 0901 addi s2,s2,0 + 3444: 0004 0x4 + 3446: 0001 nop + 3448: 0402 c.slli64 s0 + 344a: 061d addi a2,a2,7 + 344c: 04090003 lb zero,64(s2) + 3450: 0100 addi s0,sp,128 + 3452: 0300 addi s0,sp,384 + 3454: a904 fsd fs1,16(a0) + 3456: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 345a: 0008 0x8 + 345c: 0001 nop + 345e: 03a90403 lb s0,58(s2) + 3462: 00090003 lb zero,0(s2) + 3466: 0100 addi s0,sp,128 + 3468: 0300 addi s0,sp,384 + 346a: a904 fsd fs1,16(a0) + 346c: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3470: 0000 unimp + 3472: 0001 nop + 3474: 03a90403 lb s0,58(s2) + 3478: 00090103 lb sp,0(s2) + 347c: 0100 addi s0,sp,128 + 347e: 0300 addi s0,sp,384 + 3480: a904 fsd fs1,16(a0) + 3482: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3486: 0000 unimp + 3488: 0001 nop + 348a: 03a90403 lb s0,58(s2) + 348e: 00090003 lb zero,0(s2) + 3492: 0100 addi s0,sp,128 + 3494: 0300 addi s0,sp,384 + 3496: a904 fsd fs1,16(a0) + 3498: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 349c: 0000 unimp + 349e: 0001 nop + 34a0: 03a90403 lb s0,58(s2) + 34a4: 00090003 lb zero,0(s2) + 34a8: 0100 addi s0,sp,128 + 34aa: 0200 addi s0,sp,256 + 34ac: 2504 fld fs1,8(a0) + 34ae: 08090003 lb zero,128(s2) + 34b2: 0100 addi s0,sp,128 + 34b4: 0200 addi s0,sp,256 + 34b6: 2504 fld fs1,8(a0) + 34b8: 00090003 lb zero,0(s2) + 34bc: 0100 addi s0,sp,128 + 34be: 0200 addi s0,sp,256 + 34c0: 2504 fld fs1,8(a0) + 34c2: 00090003 lb zero,0(s2) + 34c6: 0100 addi s0,sp,128 + 34c8: 0200 addi s0,sp,256 + 34ca: 2504 fld fs1,8(a0) + 34cc: 00090003 lb zero,0(s2) + 34d0: 0100 addi s0,sp,128 + 34d2: 0200 addi s0,sp,256 + 34d4: 2c04 fld fs1,24(s0) + 34d6: 0c090003 lb zero,192(s2) + 34da: 0100 addi s0,sp,128 + 34dc: 0200 addi s0,sp,256 + 34de: 2c04 fld fs1,24(s0) + 34e0: 00090003 lb zero,0(s2) + 34e4: 0100 addi s0,sp,128 + 34e6: 0200 addi s0,sp,256 + 34e8: 2c04 fld fs1,24(s0) + 34ea: 00090003 lb zero,0(s2) + 34ee: 0100 addi s0,sp,128 + 34f0: 0200 addi s0,sp,256 + 34f2: 2c04 fld fs1,24(s0) + 34f4: 04090003 lb zero,64(s2) + 34f8: 0100 addi s0,sp,128 + 34fa: 0200 addi s0,sp,256 + 34fc: 2c04 fld fs1,24(s0) + 34fe: 08090003 lb zero,128(s2) + 3502: 0100 addi s0,sp,128 + 3504: 0200 addi s0,sp,256 + 3506: 1104 addi s1,sp,160 + 3508: 08097f03 0x8097f03 + 350c: 0100 addi s0,sp,128 + 350e: 0200 addi s0,sp,256 + 3510: 2b04 fld fs1,16(a4) + 3512: 08090003 lb zero,128(s2) + 3516: 0100 addi s0,sp,128 + 3518: 0200 addi s0,sp,256 + 351a: 3404 fld fs1,40(s0) + 351c: 08090003 lb zero,128(s2) + 3520: 0100 addi s0,sp,128 + 3522: 0200 addi s0,sp,256 + 3524: 3504 fld fs1,40(a0) + 3526: 08090003 lb zero,128(s2) + 352a: 0100 addi s0,sp,128 + 352c: 0200 addi s0,sp,256 + 352e: 3704 fld fs1,40(a4) + 3530: 08090003 lb zero,128(s2) + 3534: 0100 addi s0,sp,128 + 3536: 0200 addi s0,sp,256 + 3538: 3704 fld fs1,40(a4) + 353a: 20090003 lb zero,512(s2) + 353e: 0100 addi s0,sp,128 + 3540: 0200 addi s0,sp,256 + 3542: 4504 lw s1,8(a0) + 3544: 04090003 lb zero,64(s2) + 3548: 0100 addi s0,sp,128 + 354a: 0200 addi s0,sp,256 + 354c: 4504 lw s1,8(a0) + 354e: 00090003 lb zero,0(s2) + 3552: 0100 addi s0,sp,128 + 3554: 0200 addi s0,sp,256 + 3556: 4504 lw s1,8(a0) + 3558: 00090003 lb zero,0(s2) + 355c: 0100 addi s0,sp,128 + 355e: 0200 addi s0,sp,256 + 3560: 4504 lw s1,8(a0) + 3562: 04090003 lb zero,64(s2) + 3566: 0100 addi s0,sp,128 + 3568: 0200 addi s0,sp,256 + 356a: 4504 lw s1,8(a0) + 356c: 0c090003 lb zero,192(s2) + 3570: 0100 addi s0,sp,128 + 3572: 0200 addi s0,sp,256 + 3574: 4504 lw s1,8(a0) + 3576: 00090003 lb zero,0(s2) + 357a: 0100 addi s0,sp,128 + 357c: 0200 addi s0,sp,256 + 357e: 7f04 flw fs1,56(a4) + 3580: 04090003 lb zero,64(s2) + 3584: 0100 addi s0,sp,128 + 3586: 0300 addi s0,sp,384 + 3588: bb04 fsd fs1,48(a4) + 358a: 0301 addi t1,t1,0 + 358c: 0900 addi s0,sp,144 + 358e: 0008 0x8 + 3590: 0001 nop + 3592: 01bb0403 lb s0,27(s6) + 3596: 00090003 lb zero,0(s2) + 359a: 0100 addi s0,sp,128 + 359c: 0300 addi s0,sp,384 + 359e: bb04 fsd fs1,48(a4) + 35a0: 0301 addi t1,t1,0 + 35a2: 0900 addi s0,sp,144 + 35a4: 0004 0x4 + 35a6: 0001 nop + 35a8: 01bb0403 lb s0,27(s6) + 35ac: 00090003 lb zero,0(s2) + 35b0: 0100 addi s0,sp,128 + 35b2: 0300 addi s0,sp,384 + 35b4: bb04 fsd fs1,48(a4) + 35b6: 0301 addi t1,t1,0 + 35b8: 0900 addi s0,sp,144 + 35ba: 0000 unimp + 35bc: 0001 nop + 35be: 01bb0403 lb s0,27(s6) + 35c2: 00090003 lb zero,0(s2) + 35c6: 0100 addi s0,sp,128 + 35c8: 0306 slli t1,t1,0x1 + 35ca: 0900 addi s0,sp,144 + 35cc: 0008 0x8 + 35ce: 0001 nop + 35d0: 0402 c.slli64 s0 + 35d2: 0638 addi a4,sp,776 + 35d4: 28090003 lb zero,640(s2) + 35d8: 0100 addi s0,sp,128 + 35da: 0200 addi s0,sp,256 + 35dc: 3f04 fld fs1,56(a4) + 35de: 0306 slli t1,t1,0x1 + 35e0: 0900 addi s0,sp,144 + 35e2: 0014 0x14 + 35e4: 0001 nop + 35e6: 0402 c.slli64 s0 + 35e8: 0342 slli t1,t1,0x10 + 35ea: 0900 addi s0,sp,144 + 35ec: 000c 0xc + 35ee: 0001 nop + 35f0: 0402 c.slli64 s0 + 35f2: 0642 slli a2,a2,0x10 + 35f4: 0c090003 lb zero,192(s2) + 35f8: 0100 addi s0,sp,128 + 35fa: 0200 addi s0,sp,256 + 35fc: 3604 fld fs1,40(a2) + 35fe: 0306 slli t1,t1,0x1 + 3600: 0900 addi s0,sp,144 + 3602: 0000 unimp + 3604: 0001 nop + 3606: 0402 c.slli64 s0 + 3608: 0636 slli a2,a2,0xd + 360a: 08090003 lb zero,128(s2) + 360e: 0100 addi s0,sp,128 + 3610: 0200 addi s0,sp,256 + 3612: 0f04 addi s1,sp,912 + 3614: 0c090003 lb zero,192(s2) + 3618: 0100 addi s0,sp,128 + 361a: 0200 addi s0,sp,256 + 361c: 4704 lw s1,8(a4) + 361e: 04090003 lb zero,64(s2) + 3622: 0100 addi s0,sp,128 + 3624: 0200 addi s0,sp,256 + 3626: 4704 lw s1,8(a4) + 3628: 04090003 lb zero,64(s2) + 362c: 0100 addi s0,sp,128 + 362e: 0200 addi s0,sp,256 + 3630: 4704 lw s1,8(a4) + 3632: 00090003 lb zero,0(s2) + 3636: 0100 addi s0,sp,128 + 3638: 0200 addi s0,sp,256 + 363a: 4904 lw s1,16(a0) + 363c: 04090003 lb zero,64(s2) + 3640: 0100 addi s0,sp,128 + 3642: 0200 addi s0,sp,256 + 3644: 4c04 lw s1,24(s0) + 3646: 08090003 lb zero,128(s2) + 364a: 0100 addi s0,sp,128 + 364c: 0200 addi s0,sp,256 + 364e: 4c04 lw s1,24(s0) + 3650: 00090003 lb zero,0(s2) + 3654: 0100 addi s0,sp,128 + 3656: 0200 addi s0,sp,256 + 3658: 4c04 lw s1,24(s0) + 365a: 04090003 lb zero,64(s2) + 365e: 0100 addi s0,sp,128 + 3660: 0200 addi s0,sp,256 + 3662: 5504 lw s1,40(a0) + 3664: 04090003 lb zero,64(s2) + 3668: 0100 addi s0,sp,128 + 366a: 0200 addi s0,sp,256 + 366c: 5504 lw s1,40(a0) + 366e: 00090003 lb zero,0(s2) + 3672: 0100 addi s0,sp,128 + 3674: 0200 addi s0,sp,256 + 3676: 5504 lw s1,40(a0) + 3678: 00090003 lb zero,0(s2) + 367c: 0100 addi s0,sp,128 + 367e: 0200 addi s0,sp,256 + 3680: 5504 lw s1,40(a0) + 3682: 04090003 lb zero,64(s2) + 3686: 0100 addi s0,sp,128 + 3688: 0200 addi s0,sp,256 + 368a: 5604 lw s1,40(a2) + 368c: 10090003 lb zero,256(s2) + 3690: 0100 addi s0,sp,128 + 3692: 0306 slli t1,t1,0x1 + 3694: 097f 0x97f + 3696: 0008 0x8 + 3698: 0001 nop + 369a: 0402 c.slli64 s0 + 369c: 064a slli a2,a2,0x12 + 369e: 0c090103 lb sp,192(s2) + 36a2: 0100 addi s0,sp,128 + 36a4: 0200 addi s0,sp,256 + 36a6: 6404 flw fs1,8(s0) + 36a8: 08090003 lb zero,128(s2) + 36ac: 0100 addi s0,sp,128 + 36ae: 0200 addi s0,sp,256 + 36b0: 6d04 flw fs1,24(a0) + 36b2: 0c090003 lb zero,192(s2) + 36b6: 0100 addi s0,sp,128 + 36b8: 0200 addi s0,sp,256 + 36ba: 6e04 flw fs1,24(a2) + 36bc: 08090003 lb zero,128(s2) + 36c0: 0100 addi s0,sp,128 + 36c2: 0200 addi s0,sp,256 + 36c4: 7004 flw fs1,32(s0) + 36c6: 08090003 lb zero,128(s2) + 36ca: 0100 addi s0,sp,128 + 36cc: 0200 addi s0,sp,256 + 36ce: 7004 flw fs1,32(s0) + 36d0: 20090003 lb zero,512(s2) + 36d4: 0100 addi s0,sp,128 + 36d6: 0200 addi s0,sp,256 + 36d8: 7e04 flw fs1,56(a2) + 36da: 04090003 lb zero,64(s2) + 36de: 0100 addi s0,sp,128 + 36e0: 0200 addi s0,sp,256 + 36e2: 7e04 flw fs1,56(a2) + 36e4: 00090003 lb zero,0(s2) + 36e8: 0100 addi s0,sp,128 + 36ea: 0200 addi s0,sp,256 + 36ec: 7e04 flw fs1,56(a2) + 36ee: 00090003 lb zero,0(s2) + 36f2: 0100 addi s0,sp,128 + 36f4: 0200 addi s0,sp,256 + 36f6: 7e04 flw fs1,56(a2) + 36f8: 04090003 lb zero,64(s2) + 36fc: 0100 addi s0,sp,128 + 36fe: 0200 addi s0,sp,256 + 3700: 7e04 flw fs1,56(a2) + 3702: 0c090003 lb zero,192(s2) + 3706: 0100 addi s0,sp,128 + 3708: 0200 addi s0,sp,256 + 370a: 7e04 flw fs1,56(a2) + 370c: 00090003 lb zero,0(s2) + 3710: 0100 addi s0,sp,128 + 3712: 0200 addi s0,sp,256 + 3714: 7e04 flw fs1,56(a2) + 3716: 0306 slli t1,t1,0x1 + 3718: 097f 0x97f + 371a: 0000 unimp + 371c: 0001 nop + 371e: 0402 c.slli64 s0 + 3720: 0671 addi a2,a2,28 + 3722: 08090103 lb sp,128(s2) + 3726: 0100 addi s0,sp,128 + 3728: 0200 addi s0,sp,256 + 372a: 7804 flw fs1,48(s0) + 372c: 0306 slli t1,t1,0x1 + 372e: 0900 addi s0,sp,144 + 3730: 0014 0x14 + 3732: 0001 nop + 3734: 0402 c.slli64 s0 + 3736: 0900037b 0x900037b + 373a: 000c 0xc + 373c: 0001 nop + 373e: 0402 c.slli64 s0 + 3740: 0003067b 0x3067b + 3744: 0c09 addi s8,s8,2 + 3746: 0100 addi s0,sp,128 + 3748: 0200 addi s0,sp,256 + 374a: 6f04 flw fs1,24(a4) + 374c: 0306 slli t1,t1,0x1 + 374e: 0900 addi s0,sp,144 + 3750: 0000 unimp + 3752: 0001 nop + 3754: 0402 c.slli64 s0 + 3756: 0003066f jal a2,33756 <_start-0x7ffcc8aa> + 375a: 0809 addi a6,a6,2 + 375c: 0100 addi s0,sp,128 + 375e: 0200 addi s0,sp,256 + 3760: 4804 lw s1,16(s0) + 3762: 0c090003 lb zero,192(s2) + 3766: 0100 addi s0,sp,128 + 3768: 0300 addi s0,sp,384 + 376a: 8004 0x8004 + 376c: 0301 addi t1,t1,0 + 376e: 0900 addi s0,sp,144 + 3770: 000c 0xc + 3772: 0001 nop + 3774: 01820403 lb s0,24(tp) # 1a018 <_start-0x7ffe5fe8> + 3778: 08090003 lb zero,128(s2) + 377c: 0100 addi s0,sp,128 + 377e: 0300 addi s0,sp,384 + 3780: 8204 0x8204 + 3782: 0301 addi t1,t1,0 + 3784: 0900 addi s0,sp,144 + 3786: 0000 unimp + 3788: 0001 nop + 378a: 01850403 lb s0,24(a0) + 378e: 04090003 lb zero,64(s2) + 3792: 0100 addi s0,sp,128 + 3794: 0300 addi s0,sp,384 + 3796: 8b04 0x8b04 + 3798: 0301 addi t1,t1,0 + 379a: 0900 addi s0,sp,144 + 379c: 0008 0x8 + 379e: 0001 nop + 37a0: 018b0403 lb s0,24(s6) + 37a4: 00090003 lb zero,0(s2) + 37a8: 0100 addi s0,sp,128 + 37aa: 0300 addi s0,sp,384 + 37ac: 8b04 0x8b04 + 37ae: 0301 addi t1,t1,0 + 37b0: 0900 addi s0,sp,144 + 37b2: 0000 unimp + 37b4: 0001 nop + 37b6: 018b0403 lb s0,24(s6) + 37ba: 00090003 lb zero,0(s2) + 37be: 0100 addi s0,sp,128 + 37c0: 0300 addi s0,sp,384 + 37c2: 8b04 0x8b04 + 37c4: 0301 addi t1,t1,0 + 37c6: 0900 addi s0,sp,144 + 37c8: 0004 0x4 + 37ca: 0001 nop + 37cc: 018b0403 lb s0,24(s6) + 37d0: 0c090003 lb zero,192(s2) + 37d4: 0100 addi s0,sp,128 + 37d6: 0300 addi s0,sp,384 + 37d8: 8b04 0x8b04 + 37da: 0301 addi t1,t1,0 + 37dc: 0900 addi s0,sp,144 + 37de: 0000 unimp + 37e0: 0001 nop + 37e2: 018b0403 lb s0,24(s6) + 37e6: 00090003 lb zero,0(s2) + 37ea: 0100 addi s0,sp,128 + 37ec: 0300 addi s0,sp,384 + 37ee: 8d04 0x8d04 + 37f0: 0301 addi t1,t1,0 + 37f2: 0900 addi s0,sp,144 + 37f4: 000c 0xc + 37f6: 0001 nop + 37f8: 018d0403 lb s0,24(s10) + 37fc: 0c090003 lb zero,192(s2) + 3800: 0100 addi s0,sp,128 + 3802: 0300 addi s0,sp,384 + 3804: 9e04 0x9e04 + 3806: 0301 addi t1,t1,0 + 3808: 0900 addi s0,sp,144 + 380a: 0008 0x8 + 380c: 0001 nop + 380e: 019e0403 lb s0,25(t3) # 1a019 <_start-0x7ffe5fe7> + 3812: 00090003 lb zero,0(s2) + 3816: 0100 addi s0,sp,128 + 3818: 0300 addi s0,sp,384 + 381a: 9e04 0x9e04 + 381c: 0301 addi t1,t1,0 + 381e: 0900 addi s0,sp,144 + 3820: 0000 unimp + 3822: 0001 nop + 3824: 019e0403 lb s0,25(t3) + 3828: 00090003 lb zero,0(s2) + 382c: 0100 addi s0,sp,128 + 382e: 0300 addi s0,sp,384 + 3830: 9e04 0x9e04 + 3832: 0301 addi t1,t1,0 + 3834: 0900 addi s0,sp,144 + 3836: 0000 unimp + 3838: 0001 nop + 383a: 019e0403 lb s0,25(t3) + 383e: 00090003 lb zero,0(s2) + 3842: 0100 addi s0,sp,128 + 3844: 0300 addi s0,sp,384 + 3846: 9e04 0x9e04 + 3848: 0301 addi t1,t1,0 + 384a: 0900 addi s0,sp,144 + 384c: 0000 unimp + 384e: 0001 nop + 3850: 019e0403 lb s0,25(t3) + 3854: 00090003 lb zero,0(s2) + 3858: 0100 addi s0,sp,128 + 385a: 0300 addi s0,sp,384 + 385c: a004 fsd fs1,0(s0) + 385e: 0301 addi t1,t1,0 + 3860: 0900 addi s0,sp,144 + 3862: 0004 0x4 + 3864: 0601 addi a2,a2,0 + 3866: 08090003 lb zero,128(s2) + 386a: 0100 addi s0,sp,128 + 386c: 0300 addi s0,sp,384 + 386e: 8104 0x8104 + 3870: 0601 addi a2,a2,0 + 3872: 14090003 lb zero,320(s2) + 3876: 0100 addi s0,sp,128 + 3878: 0300 addi s0,sp,384 + 387a: 8104 0x8104 + 387c: 0301 addi t1,t1,0 + 387e: 0900 addi s0,sp,144 + 3880: 0000 unimp + 3882: 0001 nop + 3884: 01810403 lb s0,24(sp) + 3888: 00090003 lb zero,0(s2) + 388c: 0100 addi s0,sp,128 + 388e: 0300 addi s0,sp,384 + 3890: 8104 0x8104 + 3892: 0301 addi t1,t1,0 + 3894: 0900 addi s0,sp,144 + 3896: 0000 unimp + 3898: 0001 nop + 389a: 01810403 lb s0,24(sp) + 389e: 00090003 lb zero,0(s2) + 38a2: 0100 addi s0,sp,128 + 38a4: 0300 addi s0,sp,384 + 38a6: 8104 0x8104 + 38a8: 0301 addi t1,t1,0 + 38aa: 0900 addi s0,sp,144 + 38ac: 0000 unimp + 38ae: 0001 nop + 38b0: 01810403 lb s0,24(sp) + 38b4: 00090003 lb zero,0(s2) + 38b8: 0100 addi s0,sp,128 + 38ba: 0300 addi s0,sp,384 + 38bc: 8104 0x8104 + 38be: 0301 addi t1,t1,0 + 38c0: 0900 addi s0,sp,144 + 38c2: 0000 unimp + 38c4: 0001 nop + 38c6: 01810403 lb s0,24(sp) + 38ca: 00090003 lb zero,0(s2) + 38ce: 0100 addi s0,sp,128 + 38d0: 0300 addi s0,sp,384 + 38d2: 8104 0x8104 + 38d4: 0301 addi t1,t1,0 + 38d6: 0900 addi s0,sp,144 + 38d8: 0000 unimp + 38da: 0001 nop + 38dc: 01810403 lb s0,24(sp) + 38e0: 00090003 lb zero,0(s2) + 38e4: 0100 addi s0,sp,128 + 38e6: 0306 slli t1,t1,0x1 + 38e8: 0900 addi s0,sp,144 + 38ea: 0008 0x8 + 38ec: 0001 nop + 38ee: 0402 c.slli64 s0 + 38f0: 060d addi a2,a2,3 + 38f2: 28090003 lb zero,640(s2) + 38f6: 0100 addi s0,sp,128 + 38f8: 0200 addi s0,sp,256 + 38fa: 0d04 addi s1,sp,656 + 38fc: 00090003 lb zero,0(s2) + 3900: 0100 addi s0,sp,128 + 3902: 0300 addi s0,sp,384 + 3904: cd04 sw s1,24(a0) + 3906: 0301 addi t1,t1,0 + 3908: 0900 addi s0,sp,144 + 390a: 0004 0x4 + 390c: 0001 nop + 390e: 01cd0403 lb s0,28(s10) + 3912: 00090003 lb zero,0(s2) + 3916: 0100 addi s0,sp,128 + 3918: 0300 addi s0,sp,384 + 391a: cd04 sw s1,24(a0) + 391c: 0301 addi t1,t1,0 + 391e: 0900 addi s0,sp,144 + 3920: 0000 unimp + 3922: 0001 nop + 3924: 01cf0403 lb s0,28(t5) + 3928: 04090003 lb zero,64(s2) + 392c: 0100 addi s0,sp,128 + 392e: 0300 addi s0,sp,384 + 3930: d204 sw s1,32(a2) + 3932: 0301 addi t1,t1,0 + 3934: 0900 addi s0,sp,144 + 3936: 0008 0x8 + 3938: 0001 nop + 393a: 01d20403 lb s0,29(tp) # 1d <_start-0x7fffffe3> + 393e: 00090003 lb zero,0(s2) + 3942: 0100 addi s0,sp,128 + 3944: 0300 addi s0,sp,384 + 3946: d204 sw s1,32(a2) + 3948: 0301 addi t1,t1,0 + 394a: 0900 addi s0,sp,144 + 394c: 0004 0x4 + 394e: 0001 nop + 3950: 01db0403 lb s0,29(s6) + 3954: 04090003 lb zero,64(s2) + 3958: 0100 addi s0,sp,128 + 395a: 0300 addi s0,sp,384 + 395c: db04 sw s1,48(a4) + 395e: 0301 addi t1,t1,0 + 3960: 0900 addi s0,sp,144 + 3962: 0000 unimp + 3964: 0001 nop + 3966: 01db0403 lb s0,29(s6) + 396a: 00090003 lb zero,0(s2) + 396e: 0100 addi s0,sp,128 + 3970: 0300 addi s0,sp,384 + 3972: db04 sw s1,48(a4) + 3974: 0301 addi t1,t1,0 + 3976: 0900 addi s0,sp,144 + 3978: 0004 0x4 + 397a: 0001 nop + 397c: 01db0403 lb s0,29(s6) + 3980: 0c090003 lb zero,192(s2) + 3984: 0100 addi s0,sp,128 + 3986: 0300 addi s0,sp,384 + 3988: db04 sw s1,48(a4) + 398a: 0301 addi t1,t1,0 + 398c: 0900 addi s0,sp,144 + 398e: 0000 unimp + 3990: 0001 nop + 3992: 01db0403 lb s0,29(s6) + 3996: 00090003 lb zero,0(s2) + 399a: 0100 addi s0,sp,128 + 399c: 0300 addi s0,sp,384 + 399e: 9404 0x9404 + 39a0: 0602 c.slli64 a2 + 39a2: 04097f03 0x4097f03 + 39a6: 0100 addi s0,sp,128 + 39a8: 0300 addi s0,sp,384 + 39aa: 9404 0x9404 + 39ac: 0302 c.slli64 t1 + 39ae: 0901 addi s2,s2,0 + 39b0: 0004 0x4 + 39b2: 0001 nop + 39b4: 01dc0403 lb s0,29(s8) + 39b8: 0306 slli t1,t1,0x1 + 39ba: 0900 addi s0,sp,144 + 39bc: 0004 0x4 + 39be: 0001 nop + 39c0: 01f30403 lb s0,31(t1) + 39c4: 08090003 lb zero,128(s2) + 39c8: 0100 addi s0,sp,128 + 39ca: 0300 addi s0,sp,384 + 39cc: f404 fsw fs1,40(s0) + 39ce: 0301 addi t1,t1,0 + 39d0: 0900 addi s0,sp,144 + 39d2: 0008 0x8 + 39d4: 0001 nop + 39d6: 01f60403 lb s0,31(a2) # b01f <_start-0x7fff4fe1> + 39da: 08090003 lb zero,128(s2) + 39de: 0100 addi s0,sp,128 + 39e0: 0300 addi s0,sp,384 + 39e2: f604 fsw fs1,40(a2) + 39e4: 0301 addi t1,t1,0 + 39e6: 0900 addi s0,sp,144 + 39e8: 0020 addi s0,sp,8 + 39ea: 0001 nop + 39ec: 02840403 lb s0,40(s0) # 19028 <_start-0x7ffe6fd8> + 39f0: 04090003 lb zero,64(s2) + 39f4: 0100 addi s0,sp,128 + 39f6: 0300 addi s0,sp,384 + 39f8: 8404 0x8404 + 39fa: 0302 c.slli64 t1 + 39fc: 0900 addi s0,sp,144 + 39fe: 0000 unimp + 3a00: 0001 nop + 3a02: 02840403 lb s0,40(s0) + 3a06: 00090003 lb zero,0(s2) + 3a0a: 0100 addi s0,sp,128 + 3a0c: 0300 addi s0,sp,384 + 3a0e: 8404 0x8404 + 3a10: 0302 c.slli64 t1 + 3a12: 0900 addi s0,sp,144 + 3a14: 0004 0x4 + 3a16: 0001 nop + 3a18: 02840403 lb s0,40(s0) + 3a1c: 0c090003 lb zero,192(s2) + 3a20: 0100 addi s0,sp,128 + 3a22: 0300 addi s0,sp,384 + 3a24: 8404 0x8404 + 3a26: 0302 c.slli64 t1 + 3a28: 0900 addi s0,sp,144 + 3a2a: 0000 unimp + 3a2c: 0001 nop + 3a2e: 02be0403 lb s0,43(t3) + 3a32: 04090003 lb zero,64(s2) + 3a36: 0100 addi s0,sp,128 + 3a38: 0300 addi s0,sp,384 + 3a3a: fa04 fsw fs1,48(a2) + 3a3c: 0302 c.slli64 t1 + 3a3e: 0900 addi s0,sp,144 + 3a40: 0008 0x8 + 3a42: 0001 nop + 3a44: 02fa0403 lb s0,47(s4) + 3a48: 00090003 lb zero,0(s2) + 3a4c: 0100 addi s0,sp,128 + 3a4e: 0300 addi s0,sp,384 + 3a50: d004 sw s1,32(s0) + 3a52: 0301 addi t1,t1,0 + 3a54: 0900 addi s0,sp,144 + 3a56: 0014 0x14 + 3a58: 0001 nop + 3a5a: 01ea0403 lb s0,30(s4) + 3a5e: 08090003 lb zero,128(s2) + 3a62: 0100 addi s0,sp,128 + 3a64: 0300 addi s0,sp,384 + 3a66: f704 fsw fs1,40(a4) + 3a68: 0301 addi t1,t1,0 + 3a6a: 0900 addi s0,sp,144 + 3a6c: 000c 0xc + 3a6e: 0001 nop + 3a70: 01fe0403 lb s0,31(t3) + 3a74: 0306 slli t1,t1,0x1 + 3a76: 0900 addi s0,sp,144 + 3a78: 0014 0x14 + 3a7a: 0001 nop + 3a7c: 02810403 lb s0,40(sp) + 3a80: 0c090003 lb zero,192(s2) + 3a84: 0100 addi s0,sp,128 + 3a86: 0300 addi s0,sp,384 + 3a88: 8104 0x8104 + 3a8a: 0602 c.slli64 a2 + 3a8c: 0c090003 lb zero,192(s2) + 3a90: 0100 addi s0,sp,128 + 3a92: 0300 addi s0,sp,384 + 3a94: f504 fsw fs1,40(a0) + 3a96: 0601 addi a2,a2,0 + 3a98: 00090003 lb zero,0(s2) + 3a9c: 0100 addi s0,sp,128 + 3a9e: 0300 addi s0,sp,384 + 3aa0: f504 fsw fs1,40(a0) + 3aa2: 0601 addi a2,a2,0 + 3aa4: 08090003 lb zero,128(s2) + 3aa8: 0100 addi s0,sp,128 + 3aaa: 0300 addi s0,sp,384 + 3aac: ce04 sw s1,24(a2) + 3aae: 0301 addi t1,t1,0 + 3ab0: 0900 addi s0,sp,144 + 3ab2: 000c 0xc + 3ab4: 0001 nop + 3ab6: 02860403 lb s0,40(a2) + 3aba: 04090003 lb zero,64(s2) + 3abe: 0100 addi s0,sp,128 + 3ac0: 0300 addi s0,sp,384 + 3ac2: 8604 0x8604 + 3ac4: 0302 c.slli64 t1 + 3ac6: 0900 addi s0,sp,144 + 3ac8: 0004 0x4 + 3aca: 0001 nop + 3acc: 02860403 lb s0,40(a2) + 3ad0: 00090003 lb zero,0(s2) + 3ad4: 0100 addi s0,sp,128 + 3ad6: 0300 addi s0,sp,384 + 3ad8: 8604 0x8604 + 3ada: 0302 c.slli64 t1 + 3adc: 0900 addi s0,sp,144 + 3ade: 0000 unimp + 3ae0: 0001 nop + 3ae2: 02880403 lb s0,40(a6) + 3ae6: 04090003 lb zero,64(s2) + 3aea: 0100 addi s0,sp,128 + 3aec: 0300 addi s0,sp,384 + 3aee: 8b04 0x8b04 + 3af0: 0302 c.slli64 t1 + 3af2: 0900 addi s0,sp,144 + 3af4: 0008 0x8 + 3af6: 0001 nop + 3af8: 028b0403 lb s0,40(s6) + 3afc: 00090003 lb zero,0(s2) + 3b00: 0100 addi s0,sp,128 + 3b02: 0300 addi s0,sp,384 + 3b04: 8b04 0x8b04 + 3b06: 0302 c.slli64 t1 + 3b08: 0900 addi s0,sp,144 + 3b0a: 0004 0x4 + 3b0c: 0001 nop + 3b0e: 02940403 lb s0,41(s0) + 3b12: 04090003 lb zero,64(s2) + 3b16: 0100 addi s0,sp,128 + 3b18: 0300 addi s0,sp,384 + 3b1a: 9404 0x9404 + 3b1c: 0302 c.slli64 t1 + 3b1e: 0900 addi s0,sp,144 + 3b20: 0000 unimp + 3b22: 0001 nop + 3b24: 02940403 lb s0,41(s0) + 3b28: 00090003 lb zero,0(s2) + 3b2c: 0100 addi s0,sp,128 + 3b2e: 0300 addi s0,sp,384 + 3b30: 9404 0x9404 + 3b32: 0302 c.slli64 t1 + 3b34: 0900 addi s0,sp,144 + 3b36: 0004 0x4 + 3b38: 0001 nop + 3b3a: 02940403 lb s0,41(s0) + 3b3e: 0c090003 lb zero,192(s2) + 3b42: 0100 addi s0,sp,128 + 3b44: 0300 addi s0,sp,384 + 3b46: 9404 0x9404 + 3b48: 0302 c.slli64 t1 + 3b4a: 0900 addi s0,sp,144 + 3b4c: 0000 unimp + 3b4e: 0001 nop + 3b50: 02940403 lb s0,41(s0) + 3b54: 00090003 lb zero,0(s2) + 3b58: 0100 addi s0,sp,128 + 3b5a: 0300 addi s0,sp,384 + 3b5c: 9504 0x9504 + 3b5e: 0302 c.slli64 t1 + 3b60: 0900 addi s0,sp,144 + 3b62: 0008 0x8 + 3b64: 0601 addi a2,a2,0 + 3b66: 08097f03 0x8097f03 + 3b6a: 0100 addi s0,sp,128 + 3b6c: 08090103 lb sp,128(s2) + 3b70: 0100 addi s0,sp,128 + 3b72: 0300 addi s0,sp,384 + 3b74: 8904 0x8904 + 3b76: 0602 c.slli64 a2 + 3b78: 08090003 lb zero,128(s2) + 3b7c: 0100 addi s0,sp,128 + 3b7e: 0300 addi s0,sp,384 + 3b80: a304 fsd fs1,0(a4) + 3b82: 0302 c.slli64 t1 + 3b84: 0900 addi s0,sp,144 + 3b86: 0008 0x8 + 3b88: 0001 nop + 3b8a: 02ac0403 lb s0,42(s8) + 3b8e: 0c090003 lb zero,192(s2) + 3b92: 0100 addi s0,sp,128 + 3b94: 0300 addi s0,sp,384 + 3b96: ad04 fsd fs1,24(a0) + 3b98: 0302 c.slli64 t1 + 3b9a: 0900 addi s0,sp,144 + 3b9c: 0008 0x8 + 3b9e: 0001 nop + 3ba0: 02af0403 lb s0,42(t5) + 3ba4: 08090003 lb zero,128(s2) + 3ba8: 0100 addi s0,sp,128 + 3baa: 0300 addi s0,sp,384 + 3bac: af04 fsd fs1,24(a4) + 3bae: 0302 c.slli64 t1 + 3bb0: 0900 addi s0,sp,144 + 3bb2: 0020 addi s0,sp,8 + 3bb4: 0001 nop + 3bb6: 02bd0403 lb s0,43(s10) + 3bba: 04090003 lb zero,64(s2) + 3bbe: 0100 addi s0,sp,128 + 3bc0: 0300 addi s0,sp,384 + 3bc2: bd04 fsd fs1,56(a0) + 3bc4: 0302 c.slli64 t1 + 3bc6: 0900 addi s0,sp,144 + 3bc8: 0000 unimp + 3bca: 0001 nop + 3bcc: 02bd0403 lb s0,43(s10) + 3bd0: 00090003 lb zero,0(s2) + 3bd4: 0100 addi s0,sp,128 + 3bd6: 0300 addi s0,sp,384 + 3bd8: bd04 fsd fs1,56(a0) + 3bda: 0302 c.slli64 t1 + 3bdc: 0900 addi s0,sp,144 + 3bde: 0004 0x4 + 3be0: 0001 nop + 3be2: 02bd0403 lb s0,43(s10) + 3be6: 0c090003 lb zero,192(s2) + 3bea: 0100 addi s0,sp,128 + 3bec: 0300 addi s0,sp,384 + 3bee: bd04 fsd fs1,56(a0) + 3bf0: 0302 c.slli64 t1 + 3bf2: 0900 addi s0,sp,144 + 3bf4: 0000 unimp + 3bf6: 0001 nop + 3bf8: 02bd0403 lb s0,43(s10) + 3bfc: 0306 slli t1,t1,0x1 + 3bfe: 097f 0x97f + 3c00: 0000 unimp + 3c02: 0001 nop + 3c04: 02b00403 lb s0,43(zero) # 2b <_start-0x7fffffd5> + 3c08: 0306 slli t1,t1,0x1 + 3c0a: 0901 addi s2,s2,0 + 3c0c: 000c 0xc + 3c0e: 0001 nop + 3c10: 02b70403 lb s0,43(a4) + 3c14: 0306 slli t1,t1,0x1 + 3c16: 0900 addi s0,sp,144 + 3c18: 0014 0x14 + 3c1a: 0001 nop + 3c1c: 02ba0403 lb s0,43(s4) + 3c20: 0c090003 lb zero,192(s2) + 3c24: 0100 addi s0,sp,128 + 3c26: 0300 addi s0,sp,384 + 3c28: ba04 fsd fs1,48(a2) + 3c2a: 0602 c.slli64 a2 + 3c2c: 0c090003 lb zero,192(s2) + 3c30: 0100 addi s0,sp,128 + 3c32: 0300 addi s0,sp,384 + 3c34: ae04 fsd fs1,24(a2) + 3c36: 0602 c.slli64 a2 + 3c38: 00090003 lb zero,0(s2) + 3c3c: 0100 addi s0,sp,128 + 3c3e: 0300 addi s0,sp,384 + 3c40: ae04 fsd fs1,24(a2) + 3c42: 0602 c.slli64 a2 + 3c44: 08090003 lb zero,128(s2) + 3c48: 0100 addi s0,sp,128 + 3c4a: 0300 addi s0,sp,384 + 3c4c: 8704 0x8704 + 3c4e: 0302 c.slli64 t1 + 3c50: 0900 addi s0,sp,144 + 3c52: 000c 0xc + 3c54: 0001 nop + 3c56: 02bf0403 lb s0,43(t5) + 3c5a: 0c090003 lb zero,192(s2) + 3c5e: 0100 addi s0,sp,128 + 3c60: 0300 addi s0,sp,384 + 3c62: c104 sw s1,0(a0) + 3c64: 0302 c.slli64 t1 + 3c66: 0900 addi s0,sp,144 + 3c68: 000c 0xc + 3c6a: 0001 nop + 3c6c: 02c10403 lb s0,44(sp) + 3c70: 00090003 lb zero,0(s2) + 3c74: 0100 addi s0,sp,128 + 3c76: 0300 addi s0,sp,384 + 3c78: c304 sw s1,0(a4) + 3c7a: 0302 c.slli64 t1 + 3c7c: 0900 addi s0,sp,144 + 3c7e: 0004 0x4 + 3c80: 0001 nop + 3c82: 02c30403 lb s0,44(t1) + 3c86: 00090003 lb zero,0(s2) + 3c8a: 0100 addi s0,sp,128 + 3c8c: 0306 slli t1,t1,0x1 + 3c8e: 097f 0x97f + 3c90: 0004 0x4 + 3c92: 0001 nop + 3c94: 02c40403 lb s0,44(s0) + 3c98: 0306 slli t1,t1,0x1 + 3c9a: 0901 addi s2,s2,0 + 3c9c: 0010 0x10 + 3c9e: 0001 nop + 3ca0: 02cb0403 lb s0,44(s6) + 3ca4: 04090003 lb zero,64(s2) + 3ca8: 0100 addi s0,sp,128 + 3caa: 0300 addi s0,sp,384 + 3cac: cb04 sw s1,16(a4) + 3cae: 0302 c.slli64 t1 + 3cb0: 0900 addi s0,sp,144 + 3cb2: 0000 unimp + 3cb4: 0001 nop + 3cb6: 02cb0403 lb s0,44(s6) + 3cba: 00090003 lb zero,0(s2) + 3cbe: 0100 addi s0,sp,128 + 3cc0: 0300 addi s0,sp,384 + 3cc2: cb04 sw s1,16(a4) + 3cc4: 0302 c.slli64 t1 + 3cc6: 0900 addi s0,sp,144 + 3cc8: 0000 unimp + 3cca: 0001 nop + 3ccc: 02cb0403 lb s0,44(s6) + 3cd0: 04090003 lb zero,64(s2) + 3cd4: 0100 addi s0,sp,128 + 3cd6: 0300 addi s0,sp,384 + 3cd8: cb04 sw s1,16(a4) + 3cda: 0302 c.slli64 t1 + 3cdc: 0900 addi s0,sp,144 + 3cde: 000c 0xc + 3ce0: 0001 nop + 3ce2: 02cb0403 lb s0,44(s6) + 3ce6: 00090003 lb zero,0(s2) + 3cea: 0100 addi s0,sp,128 + 3cec: 0300 addi s0,sp,384 + 3cee: cb04 sw s1,16(a4) + 3cf0: 0302 c.slli64 t1 + 3cf2: 0900 addi s0,sp,144 + 3cf4: 0000 unimp + 3cf6: 0001 nop + 3cf8: 02cb0403 lb s0,44(s6) + 3cfc: 00090003 lb zero,0(s2) + 3d00: 0100 addi s0,sp,128 + 3d02: 0300 addi s0,sp,384 + 3d04: cd04 sw s1,24(a0) + 3d06: 0302 c.slli64 t1 + 3d08: 0900 addi s0,sp,144 + 3d0a: 0008 0x8 + 3d0c: 0001 nop + 3d0e: 02cd0403 lb s0,44(s10) + 3d12: 00090003 lb zero,0(s2) + 3d16: 0100 addi s0,sp,128 + 3d18: 0300 addi s0,sp,384 + 3d1a: cd04 sw s1,24(a0) + 3d1c: 0302 c.slli64 t1 + 3d1e: 0900 addi s0,sp,144 + 3d20: 0000 unimp + 3d22: 0001 nop + 3d24: 02cd0403 lb s0,44(s10) + 3d28: 04090003 lb zero,64(s2) + 3d2c: 0100 addi s0,sp,128 + 3d2e: 0300 addi s0,sp,384 + 3d30: cd04 sw s1,24(a0) + 3d32: 0302 c.slli64 t1 + 3d34: 0900 addi s0,sp,144 + 3d36: 000c 0xc + 3d38: 0001 nop + 3d3a: 02cd0403 lb s0,44(s10) + 3d3e: 00090003 lb zero,0(s2) + 3d42: 0100 addi s0,sp,128 + 3d44: 0300 addi s0,sp,384 + 3d46: cd04 sw s1,24(a0) + 3d48: 0302 c.slli64 t1 + 3d4a: 0900 addi s0,sp,144 + 3d4c: 0000 unimp + 3d4e: 0001 nop + 3d50: 02ce0403 lb s0,44(t3) + 3d54: 04090003 lb zero,64(s2) + 3d58: 0100 addi s0,sp,128 + 3d5a: 0306 slli t1,t1,0x1 + 3d5c: 0900 addi s0,sp,144 + 3d5e: 0008 0x8 + 3d60: 0001 nop + 3d62: 02e10403 lb s0,46(sp) + 3d66: 0306 slli t1,t1,0x1 + 3d68: 0900 addi s0,sp,144 + 3d6a: 000c 0xc + 3d6c: 0001 nop + 3d6e: 02e10403 lb s0,46(sp) + 3d72: 00090003 lb zero,0(s2) + 3d76: 0100 addi s0,sp,128 + 3d78: 0300 addi s0,sp,384 + 3d7a: e104 fsw fs1,0(a0) + 3d7c: 0302 c.slli64 t1 + 3d7e: 0900 addi s0,sp,144 + 3d80: 0000 unimp + 3d82: 0001 nop + 3d84: 02e10403 lb s0,46(sp) + 3d88: 00090003 lb zero,0(s2) + 3d8c: 0100 addi s0,sp,128 + 3d8e: 0300 addi s0,sp,384 + 3d90: e104 fsw fs1,0(a0) + 3d92: 0302 c.slli64 t1 + 3d94: 0900 addi s0,sp,144 + 3d96: 0000 unimp + 3d98: 0001 nop + 3d9a: 02e10403 lb s0,46(sp) + 3d9e: 00090003 lb zero,0(s2) + 3da2: 0100 addi s0,sp,128 + 3da4: 0300 addi s0,sp,384 + 3da6: e104 fsw fs1,0(a0) + 3da8: 0302 c.slli64 t1 + 3daa: 0900 addi s0,sp,144 + 3dac: 0000 unimp + 3dae: 0001 nop + 3db0: 02e10403 lb s0,46(sp) + 3db4: 00090003 lb zero,0(s2) + 3db8: 0100 addi s0,sp,128 + 3dba: 0300 addi s0,sp,384 + 3dbc: e204 fsw fs1,0(a2) + 3dbe: 0302 c.slli64 t1 + 3dc0: 0900 addi s0,sp,144 + 3dc2: 0004 0x4 + 3dc4: 0601 addi a2,a2,0 + 3dc6: 04097f03 0x4097f03 + 3dca: 0100 addi s0,sp,128 + 3dcc: 08090103 lb sp,128(s2) + 3dd0: 0100 addi s0,sp,128 + 3dd2: 0300 addi s0,sp,384 + 3dd4: e304 fsw fs1,0(a4) + 3dd6: 0602 c.slli64 a2 + 3dd8: 0c090003 lb zero,192(s2) + 3ddc: 0100 addi s0,sp,128 + 3dde: 0300 addi s0,sp,384 + 3de0: c004 sw s1,0(s0) + 3de2: 0302 c.slli64 t1 + 3de4: 0900 addi s0,sp,144 + 3de6: 0008 0x8 + 3de8: 0001 nop + 3dea: 02c00403 lb s0,44(zero) # 2c <_start-0x7fffffd4> + 3dee: 00090003 lb zero,0(s2) + 3df2: 0100 addi s0,sp,128 + 3df4: 0300 addi s0,sp,384 + 3df6: c004 sw s1,0(s0) + 3df8: 0302 c.slli64 t1 + 3dfa: 0900 addi s0,sp,144 + 3dfc: 0000 unimp + 3dfe: 0001 nop + 3e00: 02c00403 lb s0,44(zero) # 2c <_start-0x7fffffd4> + 3e04: 00090003 lb zero,0(s2) + 3e08: 0100 addi s0,sp,128 + 3e0a: 0300 addi s0,sp,384 + 3e0c: c004 sw s1,0(s0) + 3e0e: 0302 c.slli64 t1 + 3e10: 0900 addi s0,sp,144 + 3e12: 0004 0x4 + 3e14: 0001 nop + 3e16: 02c00403 lb s0,44(zero) # 2c <_start-0x7fffffd4> + 3e1a: 0c090003 lb zero,192(s2) + 3e1e: 0100 addi s0,sp,128 + 3e20: 0300 addi s0,sp,384 + 3e22: c004 sw s1,0(s0) + 3e24: 0302 c.slli64 t1 + 3e26: 0900 addi s0,sp,144 + 3e28: 0000 unimp + 3e2a: 0001 nop + 3e2c: 02c00403 lb s0,44(zero) # 2c <_start-0x7fffffd4> + 3e30: 00090003 lb zero,0(s2) + 3e34: 0100 addi s0,sp,128 + 3e36: 0300 addi s0,sp,384 + 3e38: c004 sw s1,0(s0) + 3e3a: 0302 c.slli64 t1 + 3e3c: 0900 addi s0,sp,144 + 3e3e: 0000 unimp + 3e40: 0001 nop + 3e42: 02f30403 lb s0,47(t1) + 3e46: 08090003 lb zero,128(s2) + 3e4a: 0100 addi s0,sp,128 + 3e4c: 0300 addi s0,sp,384 + 3e4e: f304 fsw fs1,32(a4) + 3e50: 0302 c.slli64 t1 + 3e52: 0900 addi s0,sp,144 + 3e54: 0000 unimp + 3e56: 0001 nop + 3e58: 02f30403 lb s0,47(t1) + 3e5c: 00090003 lb zero,0(s2) + 3e60: 0100 addi s0,sp,128 + 3e62: 0300 addi s0,sp,384 + 3e64: f304 fsw fs1,32(a4) + 3e66: 0302 c.slli64 t1 + 3e68: 0900 addi s0,sp,144 + 3e6a: 0004 0x4 + 3e6c: 0001 nop + 3e6e: 02f30403 lb s0,47(t1) + 3e72: 0c090003 lb zero,192(s2) + 3e76: 0100 addi s0,sp,128 + 3e78: 0300 addi s0,sp,384 + 3e7a: f304 fsw fs1,32(a4) + 3e7c: 0302 c.slli64 t1 + 3e7e: 0900 addi s0,sp,144 + 3e80: 0000 unimp + 3e82: 0001 nop + 3e84: 02f30403 lb s0,47(t1) + 3e88: 00090003 lb zero,0(s2) + 3e8c: 0100 addi s0,sp,128 + 3e8e: 0300 addi s0,sp,384 + 3e90: fc04 fsw fs1,56(s0) + 3e92: 0302 c.slli64 t1 + 3e94: 0900 addi s0,sp,144 + 3e96: 0004 0x4 + 3e98: 0001 nop + 3e9a: 02fc0403 lb s0,47(s8) + 3e9e: 00090003 lb zero,0(s2) + 3ea2: 0100 addi s0,sp,128 + 3ea4: 0300 addi s0,sp,384 + 3ea6: ff04 fsw fs1,56(a4) + 3ea8: 0302 c.slli64 t1 + 3eaa: 0900 addi s0,sp,144 + 3eac: 0004 0x4 + 3eae: 0001 nop + 3eb0: 02ff0403 lb s0,47(t5) + 3eb4: 00090003 lb zero,0(s2) + 3eb8: 0100 addi s0,sp,128 + 3eba: 0300 addi s0,sp,384 + 3ebc: ff04 fsw fs1,56(a4) + 3ebe: 0302 c.slli64 t1 + 3ec0: 0900 addi s0,sp,144 + 3ec2: 0000 unimp + 3ec4: 0001 nop + 3ec6: 02ff0403 lb s0,47(t5) + 3eca: 00090003 lb zero,0(s2) + 3ece: 0100 addi s0,sp,128 + 3ed0: 0300 addi s0,sp,384 + 3ed2: ff04 fsw fs1,56(a4) + 3ed4: 0302 c.slli64 t1 + 3ed6: 0900 addi s0,sp,144 + 3ed8: 0008 0x8 + 3eda: 0001 nop + 3edc: 038d0403 lb s0,56(s10) + 3ee0: 00090003 lb zero,0(s2) + 3ee4: 0100 addi s0,sp,128 + 3ee6: 0300 addi s0,sp,384 + 3ee8: 8d04 0x8d04 + 3eea: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3eee: 0000 unimp + 3ef0: 0001 nop + 3ef2: 038d0403 lb s0,56(s10) + 3ef6: 04090003 lb zero,64(s2) + 3efa: 0100 addi s0,sp,128 + 3efc: 0300 addi s0,sp,384 + 3efe: 8e04 0x8e04 + 3f00: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3f04: 0008 0x8 + 3f06: 0001 nop + 3f08: 038e0403 lb s0,56(t3) + 3f0c: 00090003 lb zero,0(s2) + 3f10: 0100 addi s0,sp,128 + 3f12: 0300 addi s0,sp,384 + 3f14: 8e04 0x8e04 + 3f16: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3f1a: 0014 0x14 + 3f1c: 0001 nop + 3f1e: 03970403 lb s0,57(a4) + 3f22: 04090003 lb zero,64(s2) + 3f26: 0100 addi s0,sp,128 + 3f28: 0300 addi s0,sp,384 + 3f2a: 9804 0x9804 + 3f2c: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3f30: 0004 0x4 + 3f32: 0001 nop + 3f34: 03980403 lb s0,57(a6) + 3f38: 08090003 lb zero,128(s2) + 3f3c: 0100 addi s0,sp,128 + 3f3e: 0300 addi s0,sp,384 + 3f40: 9a04 0x9a04 + 3f42: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3f46: 0008 0x8 + 3f48: 0001 nop + 3f4a: 039a0403 lb s0,57(s4) + 3f4e: 20090003 lb zero,512(s2) + 3f52: 0100 addi s0,sp,128 + 3f54: 0300 addi s0,sp,384 + 3f56: a604 fsd fs1,8(a2) + 3f58: 00030603 lb a2,0(t1) + 3f5c: 0409 addi s0,s0,2 + 3f5e: 0100 addi s0,sp,128 + 3f60: 0300 addi s0,sp,384 + 3f62: f404 fsw fs1,40(s0) + 3f64: 0602 c.slli64 a2 + 3f66: 08090003 lb zero,128(s2) + 3f6a: 0100 addi s0,sp,128 + 3f6c: 0306 slli t1,t1,0x1 + 3f6e: 0900 addi s0,sp,144 + 3f70: 000c 0xc + 3f72: 0001 nop + 3f74: 03860403 lb s0,56(a2) + 3f78: 0306 slli t1,t1,0x1 + 3f7a: 0900 addi s0,sp,144 + 3f7c: 0008 0x8 + 3f7e: 0001 nop + 3f80: 03860403 lb s0,56(a2) + 3f84: 00090003 lb zero,0(s2) + 3f88: 0100 addi s0,sp,128 + 3f8a: 0300 addi s0,sp,384 + 3f8c: 8604 0x8604 + 3f8e: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3f92: 0000 unimp + 3f94: 0001 nop + 3f96: 03860403 lb s0,56(a2) + 3f9a: 00090003 lb zero,0(s2) + 3f9e: 0100 addi s0,sp,128 + 3fa0: 0300 addi s0,sp,384 + 3fa2: 8604 0x8604 + 3fa4: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3fa8: 0008 0x8 + 3faa: 0001 nop + 3fac: 03860403 lb s0,56(a2) + 3fb0: 00090003 lb zero,0(s2) + 3fb4: 0100 addi s0,sp,128 + 3fb6: 0300 addi s0,sp,384 + 3fb8: 8f04 0x8f04 + 3fba: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3fbe: 0008 0x8 + 3fc0: 0001 nop + 3fc2: 038f0403 lb s0,56(t5) + 3fc6: 08090003 lb zero,128(s2) + 3fca: 0100 addi s0,sp,128 + 3fcc: 0300 addi s0,sp,384 + 3fce: 9b04 0x9b04 + 3fd0: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 3fd4: 0008 0x8 + 3fd6: 0001 nop + 3fd8: 03a30403 lb s0,58(t1) + 3fdc: 0306 slli t1,t1,0x1 + 3fde: 0900 addi s0,sp,144 + 3fe0: 0014 0x14 + 3fe2: 0001 nop + 3fe4: 03a60403 lb s0,58(a2) + 3fe8: 0c090003 lb zero,192(s2) + 3fec: 0100 addi s0,sp,128 + 3fee: 0300 addi s0,sp,384 + 3ff0: a604 fsd fs1,8(a2) + 3ff2: 00030603 lb a2,0(t1) + 3ff6: 0c09 addi s8,s8,2 + 3ff8: 0100 addi s0,sp,128 + 3ffa: 0300 addi s0,sp,384 + 3ffc: 9904 0x9904 + 3ffe: 09000303 lb t1,144(zero) # 90 <_start-0x7fffff70> + 4002: 0008 0x8 + 4004: 0001 nop + 4006: 03990403 lb s0,57(s2) + 400a: 0c090003 lb zero,192(s2) + 400e: 0100 addi s0,sp,128 + 4010: 0306 slli t1,t1,0x1 + 4012: 097f 0x97f + 4014: 0008 0x8 + 4016: 0301 addi t1,t1,0 + 4018: 0901 addi s2,s2,0 + 401a: 0008 0x8 + 401c: 0301 addi t1,t1,0 + 401e: 097f 0x97f + 4020: 0008 0x8 + 4022: 0001 nop + 4024: 0402 c.slli64 s0 + 4026: 0203062f 0x203062f + 402a: 1809 addi a6,a6,-30 + 402c: 0100 addi s0,sp,128 + 402e: 0200 addi s0,sp,256 + 4030: 2f04 fld fs1,24(a4) + 4032: 00090003 lb zero,0(s2) + 4036: 0100 addi s0,sp,128 + 4038: 0200 addi s0,sp,256 + 403a: 2f04 fld fs1,24(a4) + 403c: 00090003 lb zero,0(s2) + 4040: 0100 addi s0,sp,128 + 4042: 0200 addi s0,sp,256 + 4044: 3f04 fld fs1,56(a4) + 4046: 08090003 lb zero,128(s2) + 404a: 0100 addi s0,sp,128 + 404c: 0200 addi s0,sp,256 + 404e: 3f04 fld fs1,56(a4) + 4050: 00090003 lb zero,0(s2) + 4054: 0100 addi s0,sp,128 + 4056: 0200 addi s0,sp,256 + 4058: 3f04 fld fs1,56(a4) + 405a: 04090003 lb zero,64(s2) + 405e: 0100 addi s0,sp,128 + 4060: 0306 slli t1,t1,0x1 + 4062: 0900 addi s0,sp,144 + 4064: 0008 0x8 + 4066: 0001 nop + 4068: 0402 c.slli64 s0 + 406a: 0003064f fnmadd.s fa2,ft6,ft0,ft0,rne + 406e: 0c09 addi s8,s8,2 + 4070: 0100 addi s0,sp,128 + 4072: 0200 addi s0,sp,256 + 4074: 4f04 lw s1,24(a4) + 4076: 00090003 lb zero,0(s2) + 407a: 0100 addi s0,sp,128 + 407c: 0200 addi s0,sp,256 + 407e: 4f04 lw s1,24(a4) + 4080: 00090003 lb zero,0(s2) + 4084: 0100 addi s0,sp,128 + 4086: 0200 addi s0,sp,256 + 4088: 4f04 lw s1,24(a4) + 408a: 0c090003 lb zero,192(s2) + 408e: 0100 addi s0,sp,128 + 4090: 0200 addi s0,sp,256 + 4092: 4f04 lw s1,24(a4) + 4094: 08090003 lb zero,128(s2) + 4098: 0100 addi s0,sp,128 + 409a: 0200 addi s0,sp,256 + 409c: 5004 lw s1,32(s0) + 409e: 0306 slli t1,t1,0x1 + 40a0: 0900 addi s0,sp,144 + 40a2: 0004 0x4 + 40a4: 0301 addi t1,t1,0 + 40a6: 0900 addi s0,sp,144 + 40a8: 000c 0xc + 40aa: 0001 nop + 40ac: 0402 c.slli64 s0 + 40ae: 065a slli a2,a2,0x16 + 40b0: 0c090003 lb zero,192(s2) + 40b4: 0100 addi s0,sp,128 + 40b6: 0200 addi s0,sp,256 + 40b8: 5a04 lw s1,48(a2) + 40ba: 00090003 lb zero,0(s2) + 40be: 0100 addi s0,sp,128 + 40c0: 0200 addi s0,sp,256 + 40c2: 5a04 lw s1,48(a2) + 40c4: 00090003 lb zero,0(s2) + 40c8: 0100 addi s0,sp,128 + 40ca: 0200 addi s0,sp,256 + 40cc: 5a04 lw s1,48(a2) + 40ce: 00090003 lb zero,0(s2) + 40d2: 0100 addi s0,sp,128 + 40d4: 0200 addi s0,sp,256 + 40d6: 5a04 lw s1,48(a2) + 40d8: 00090003 lb zero,0(s2) + 40dc: 0100 addi s0,sp,128 + 40de: 0200 addi s0,sp,256 + 40e0: 5a04 lw s1,48(a2) + 40e2: 00090003 lb zero,0(s2) + 40e6: 0100 addi s0,sp,128 + 40e8: 0200 addi s0,sp,256 + 40ea: 5a04 lw s1,48(a2) + 40ec: 00090003 lb zero,0(s2) + 40f0: 0100 addi s0,sp,128 + 40f2: 0200 addi s0,sp,256 + 40f4: 5a04 lw s1,48(a2) + 40f6: 00090003 lb zero,0(s2) + 40fa: 0100 addi s0,sp,128 + 40fc: 0200 addi s0,sp,256 + 40fe: 5a04 lw s1,48(a2) + 4100: 00090003 lb zero,0(s2) + 4104: 0100 addi s0,sp,128 + 4106: 0105 addi sp,sp,1 + 4108: 0200 addi s0,sp,256 + 410a: 5a04 lw s1,48(a2) + 410c: 0306 slli t1,t1,0x1 + 410e: 0904 addi s1,sp,144 + 4110: 000c 0xc + 4112: 0501 addi a0,a0,0 + 4114: 04020003 lb zero,64(tp) # 40 <_start-0x7fffffc0> + 4118: 035a slli t1,t1,0x16 + 411a: 097c addi a5,sp,156 + 411c: 0008 0x8 + 411e: 0001 nop + 4120: 0402 c.slli64 s0 + 4122: 065a slli a2,a2,0x16 + 4124: 14090003 lb zero,320(s2) + 4128: 0100 addi s0,sp,128 + 412a: 0200 addi s0,sp,256 + 412c: 5a04 lw s1,48(a2) + 412e: 00090003 lb zero,0(s2) + 4132: 0100 addi s0,sp,128 + 4134: 0200 addi s0,sp,256 + 4136: 5a04 lw s1,48(a2) + 4138: 00090103 lb sp,0(s2) + 413c: 0100 addi s0,sp,128 + 413e: 0200 addi s0,sp,256 + 4140: 5a04 lw s1,48(a2) + 4142: 00090003 lb zero,0(s2) + 4146: 0100 addi s0,sp,128 + 4148: 0200 addi s0,sp,256 + 414a: 5a04 lw s1,48(a2) + 414c: 00090003 lb zero,0(s2) + 4150: 0100 addi s0,sp,128 + 4152: 0200 addi s0,sp,256 + 4154: 5a04 lw s1,48(a2) + 4156: 00090203 lb tp,0(s2) + 415a: 0100 addi s0,sp,128 + 415c: 0105 addi sp,sp,1 + 415e: 0200 addi s0,sp,256 + 4160: 5a04 lw s1,48(a2) + 4162: 0306 slli t1,t1,0x1 + 4164: 0901 addi s2,s2,0 + 4166: 0000 unimp + 4168: 0501 addi a0,a0,0 + 416a: 097a0303 lb t1,151(s4) + 416e: 0018 0x18 + 4170: 0301 addi t1,t1,0 + 4172: 0901 addi s2,s2,0 + 4174: 0008 0x8 + 4176: 0901 addi s2,s2,0 + 4178: 003c addi a5,sp,8 + 417a: 0100 addi s0,sp,128 + 417c: d501 beqz a0,4084 <_start-0x7fffbf7c> + 417e: 0001 nop + 4180: 0300 addi s0,sp,384 + 4182: a800 fsd fs0,16(s0) + 4184: 0000 unimp + 4186: 0100 addi s0,sp,128 + 4188: fb01 bnez a4,4098 <_start-0x7fffbf68> + 418a: 0d0e slli s10,s10,0x3 + 418c: 0100 addi s0,sp,128 + 418e: 0101 addi sp,sp,0 + 4190: 0001 nop + 4192: 0000 unimp + 4194: 0001 nop + 4196: 0100 addi s0,sp,128 + 4198: 2e2e fld ft8,200(sp) + 419a: 2f2e2e2f 0x2f2e2e2f + 419e: 2e2e fld ft8,200(sp) + 41a0: 2f2e2e2f 0x2f2e2e2f + 41a4: 6972 flw fs2,28(sp) + 41a6: 2d766373 csrrsi t1,0x2d7,12 + 41aa: 2f636367 0x2f636367 + 41ae: 696c flw fa1,84(a0) + 41b0: 6762 flw fa4,24(sp) + 41b2: 732f6363 bltu t5,s2,48d8 <_start-0x7fffb728> + 41b6: 2d74666f jal a2,4ac8c <_start-0x7ffb5374> + 41ba: 7066 flw ft0,120(sp) + 41bc: 2e00 fld fs0,24(a2) + 41be: 2e00 fld fs0,24(a2) + 41c0: 2f2e fld ft10,200(sp) + 41c2: 2e2e fld ft8,200(sp) + 41c4: 2f2e2e2f 0x2f2e2e2f + 41c8: 2e2e fld ft8,200(sp) + 41ca: 7369722f 0x7369722f + 41ce: 672d7663 bgeu s10,s2,483a <_start-0x7fffb7c6> + 41d2: 6c2f6363 bltu t5,sp,4898 <_start-0x7fffb768> + 41d6: 6269 lui tp,0x1a + 41d8: 2f636367 0x2f636367 + 41dc: 2e2e fld ft8,200(sp) + 41de: 636e692f 0x636e692f + 41e2: 756c flw fa1,108(a0) + 41e4: 6564 flw fs1,76(a0) + 41e6: 0000 unimp + 41e8: 6e75 lui t3,0x1d + 41ea: 6464726f jal tp,4b830 <_start-0x7ffb47d0> + 41ee: 3266 fld ft4,120(sp) + 41f0: 632e flw ft6,200(sp) + 41f2: 0100 addi s0,sp,128 + 41f4: 0000 unimp + 41f6: 2d706673 csrrsi a2,0x2d7,0 + 41fa: 616d addi sp,sp,240 + 41fc: 6e696863 bltu s2,t1,48ec <_start-0x7fffb714> + 4200: 2e65 jal 45b8 <_start-0x7fffba48> + 4202: 0068 addi a0,sp,12 + 4204: 0002 c.slli64 zero + 4206: 7300 flw fs0,32(a4) + 4208: 2d74666f jal a2,4acde <_start-0x7ffb5322> + 420c: 7066 flw ft0,120(sp) + 420e: 682e flw fa6,200(sp) + 4210: 0100 addi s0,sp,128 + 4212: 0000 unimp + 4214: 6f64 flw fs1,92(a4) + 4216: 6275 lui tp,0x1d + 4218: 656c flw fa1,76(a0) + 421a: 682e flw fa6,200(sp) + 421c: 0100 addi s0,sp,128 + 421e: 0000 unimp + 4220: 6f6c flw fa1,92(a4) + 4222: 676e flw fa4,216(sp) + 4224: 6f6c flw fa1,92(a4) + 4226: 676e flw fa4,216(sp) + 4228: 682e flw fa6,200(sp) + 422a: 0300 addi s0,sp,384 + 422c: 0000 unimp + 422e: 0500 addi s0,sp,640 + 4230: 0001 nop + 4232: 0205 addi tp,tp,1 + 4234: 2d44 fld fs1,152(a0) + 4236: 8000 0x8000 + 4238: 05012203 lw tp,80(sp) + 423c: 09010303 lb t1,144(sp) + 4240: 0000 unimp + 4242: 0301 addi t1,t1,0 + 4244: 0900 addi s0,sp,144 + 4246: 0000 unimp + 4248: 0501 addi a0,a0,0 + 424a: 030d addi t1,t1,3 + 424c: 0900 addi s0,sp,144 + 424e: 0000 unimp + 4250: 0501 addi a0,a0,0 + 4252: 09010303 lb t1,144(sp) + 4256: 0000 unimp + 4258: 0301 addi t1,t1,0 + 425a: 0900 addi s0,sp,144 + 425c: 0000 unimp + 425e: 0301 addi t1,t1,0 + 4260: 0900 addi s0,sp,144 + 4262: 0000 unimp + 4264: 0301 addi t1,t1,0 + 4266: 0900 addi s0,sp,144 + 4268: 0000 unimp + 426a: 0301 addi t1,t1,0 + 426c: 0901 addi s2,s2,0 + 426e: 0000 unimp + 4270: 0301 addi t1,t1,0 + 4272: 0900 addi s0,sp,144 + 4274: 0000 unimp + 4276: 0301 addi t1,t1,0 + 4278: 0900 addi s0,sp,144 + 427a: 0000 unimp + 427c: 0301 addi t1,t1,0 + 427e: 0900 addi s0,sp,144 + 4280: 0000 unimp + 4282: 0301 addi t1,t1,0 + 4284: 0901 addi s2,s2,0 + 4286: 0000 unimp + 4288: 0301 addi t1,t1,0 + 428a: 0902 c.slli64 s2 + 428c: 0000 unimp + 428e: 0301 addi t1,t1,0 + 4290: 0901 addi s2,s2,0 + 4292: 0000 unimp + 4294: 0301 addi t1,t1,0 + 4296: 0900 addi s0,sp,144 + 4298: 0000 unimp + 429a: 0301 addi t1,t1,0 + 429c: 0900 addi s0,sp,144 + 429e: 0000 unimp + 42a0: 0301 addi t1,t1,0 + 42a2: 0900 addi s0,sp,144 + 42a4: 0000 unimp + 42a6: 0301 addi t1,t1,0 + 42a8: 0900 addi s0,sp,144 + 42aa: 0000 unimp + 42ac: 0301 addi t1,t1,0 + 42ae: 0900 addi s0,sp,144 + 42b0: 000c 0xc + 42b2: 0301 addi t1,t1,0 + 42b4: 0900 addi s0,sp,144 + 42b6: 0004 0x4 + 42b8: 0301 addi t1,t1,0 + 42ba: 0900 addi s0,sp,144 + 42bc: 0000 unimp + 42be: 0301 addi t1,t1,0 + 42c0: 0901 addi s2,s2,0 + 42c2: 0000 unimp + 42c4: 0301 addi t1,t1,0 + 42c6: 0900 addi s0,sp,144 + 42c8: 0000 unimp + 42ca: 0301 addi t1,t1,0 + 42cc: 0900 addi s0,sp,144 + 42ce: 0000 unimp + 42d0: 0301 addi t1,t1,0 + 42d2: 0900 addi s0,sp,144 + 42d4: 0000 unimp + 42d6: 0301 addi t1,t1,0 + 42d8: 0900 addi s0,sp,144 + 42da: 0000 unimp + 42dc: 0601 addi a2,a2,0 + 42de: 00090103 lb sp,0(s2) + 42e2: 0100 addi s0,sp,128 + 42e4: 04097f03 0x4097f03 + 42e8: 0100 addi s0,sp,128 + 42ea: 0306 slli t1,t1,0x1 + 42ec: 0900 addi s0,sp,144 + 42ee: 0004 0x4 + 42f0: 0601 addi a2,a2,0 + 42f2: 00090103 lb sp,0(s2) + 42f6: 0100 addi s0,sp,128 + 42f8: 04097f03 0x4097f03 + 42fc: 0100 addi s0,sp,128 + 42fe: 0306 slli t1,t1,0x1 + 4300: 0900 addi s0,sp,144 + 4302: 0008 0x8 + 4304: 0301 addi t1,t1,0 + 4306: 0900 addi s0,sp,144 + 4308: 0000 unimp + 430a: 0301 addi t1,t1,0 + 430c: 0901 addi s2,s2,0 + 430e: 0000 unimp + 4310: 0301 addi t1,t1,0 + 4312: 0900 addi s0,sp,144 + 4314: 0000 unimp + 4316: 0301 addi t1,t1,0 + 4318: 0900 addi s0,sp,144 + 431a: 0000 unimp + 431c: 0301 addi t1,t1,0 + 431e: 0900 addi s0,sp,144 + 4320: 0000 unimp + 4322: 0301 addi t1,t1,0 + 4324: 0900 addi s0,sp,144 + 4326: 0000 unimp + 4328: 0001 nop + 432a: 0402 c.slli64 s0 + 432c: 0614 addi a3,sp,768 + 432e: 04090003 lb zero,64(s2) + 4332: 0100 addi s0,sp,128 + 4334: 0200 addi s0,sp,256 + 4336: 1704 addi s1,sp,928 + 4338: 0c090003 lb zero,192(s2) + 433c: 0100 addi s0,sp,128 + 433e: 0200 addi s0,sp,256 + 4340: 1804 addi s1,sp,48 + 4342: 0c090003 lb zero,192(s2) + 4346: 0100 addi s0,sp,128 + 4348: 0105 addi sp,sp,1 + 434a: 08090403 lb s0,128(s2) + 434e: 0100 addi s0,sp,128 + 4350: 0409 addi s0,s0,2 + 4352: 0000 unimp + 4354: 0101 addi sp,sp,0 + 4356: 03d5 addi t2,t2,21 + 4358: 0000 unimp + 435a: 00a40003 lb zero,10(s0) + 435e: 0000 unimp + 4360: 0101 addi sp,sp,0 + 4362: 000d0efb 0xd0efb + 4366: 0101 addi sp,sp,0 + 4368: 0101 addi sp,sp,0 + 436a: 0000 unimp + 436c: 0100 addi s0,sp,128 + 436e: 0000 unimp + 4370: 2e01 jal 4680 <_start-0x7fffb980> + 4372: 2f2e fld ft10,200(sp) + 4374: 2e2e fld ft8,200(sp) + 4376: 2f2e2e2f 0x2f2e2e2f + 437a: 2e2e fld ft8,200(sp) + 437c: 7369722f 0x7369722f + 4380: 672d7663 bgeu s10,s2,49ec <_start-0x7fffb614> + 4384: 6c2f6363 bltu t5,sp,4a4a <_start-0x7fffb5b6> + 4388: 6269 lui tp,0x1a + 438a: 2f636367 0x2f636367 + 438e: 74666f73 csrrsi t5,0x746,12 + 4392: 662d lui a2,0xb + 4394: 0070 addi a2,sp,12 + 4396: 2e2e fld ft8,200(sp) + 4398: 2f2e2e2f 0x2f2e2e2f + 439c: 2e2e fld ft8,200(sp) + 439e: 2f2e2e2f 0x2f2e2e2f + 43a2: 6972 flw fs2,28(sp) + 43a4: 2d766373 csrrsi t1,0x2d7,12 + 43a8: 2f636367 0x2f636367 + 43ac: 696c flw fa1,84(a0) + 43ae: 6762 flw fa4,24(sp) + 43b0: 2e2f6363 bltu t5,sp,4696 <_start-0x7fffb96a> + 43b4: 2f2e fld ft10,200(sp) + 43b6: 6e69 lui t3,0x1a + 43b8: 64756c63 bltu a0,t2,4a10 <_start-0x7fffb5f0> + 43bc: 0065 c.nop 25 + 43be: 6500 flw fs0,8(a0) + 43c0: 7478 flw fa4,108(s0) + 43c2: 6e65 lui t3,0x19 + 43c4: 7364 flw fs1,100(a4) + 43c6: 6466 flw fs0,88(sp) + 43c8: 3266 fld ft4,120(sp) + 43ca: 632e flw ft6,200(sp) + 43cc: 0100 addi s0,sp,128 + 43ce: 0000 unimp + 43d0: 74666f73 csrrsi t5,0x746,12 + 43d4: 662d lui a2,0xb + 43d6: 2e70 fld fa2,216(a2) + 43d8: 0068 addi a0,sp,12 + 43da: 0001 nop + 43dc: 7300 flw fs0,32(a4) + 43de: 6e69 lui t3,0x1a + 43e0: 2e656c67 0x2e656c67 + 43e4: 0068 addi a0,sp,12 + 43e6: 0001 nop + 43e8: 6400 flw fs0,8(s0) + 43ea: 6c62756f jal a0,2bab0 <_start-0x7ffd4550> + 43ee: 2e65 jal 47a6 <_start-0x7fffb85a> + 43f0: 0068 addi a0,sp,12 + 43f2: 0001 nop + 43f4: 6c00 flw fs0,24(s0) + 43f6: 6c676e6f jal t3,7aabc <_start-0x7ff85544> + 43fa: 2e676e6f jal t3,7a6e0 <_start-0x7ff85920> + 43fe: 0068 addi a0,sp,12 + 4400: 0002 c.slli64 zero + 4402: 0000 unimp + 4404: 0105 addi sp,sp,1 + 4406: 0500 addi s0,sp,640 + 4408: 9002 ebreak + 440a: 002d c.nop 11 + 440c: 0380 addi s0,sp,448 + 440e: 0125 addi sp,sp,9 + 4410: 0305 addi t1,t1,1 + 4412: 00090103 lb sp,0(s2) + 4416: 0100 addi s0,sp,128 + 4418: 00090003 lb zero,0(s2) + 441c: 0100 addi s0,sp,128 + 441e: 0d05 addi s10,s10,1 + 4420: 00090003 lb zero,0(s2) + 4424: 0100 addi s0,sp,128 + 4426: 0305 addi t1,t1,1 + 4428: 00090103 lb sp,0(s2) + 442c: 0100 addi s0,sp,128 + 442e: 00090003 lb zero,0(s2) + 4432: 0100 addi s0,sp,128 + 4434: 00090003 lb zero,0(s2) + 4438: 0100 addi s0,sp,128 + 443a: 00090003 lb zero,0(s2) + 443e: 0100 addi s0,sp,128 + 4440: 00090103 lb sp,0(s2) + 4444: 0100 addi s0,sp,128 + 4446: 00090003 lb zero,0(s2) + 444a: 0100 addi s0,sp,128 + 444c: 00090003 lb zero,0(s2) + 4450: 0100 addi s0,sp,128 + 4452: 00090003 lb zero,0(s2) + 4456: 0100 addi s0,sp,128 + 4458: 00090103 lb sp,0(s2) + 445c: 0100 addi s0,sp,128 + 445e: 00090203 lb tp,0(s2) + 4462: 0100 addi s0,sp,128 + 4464: 00090103 lb sp,0(s2) + 4468: 0100 addi s0,sp,128 + 446a: 00090003 lb zero,0(s2) + 446e: 0100 addi s0,sp,128 + 4470: 00090003 lb zero,0(s2) + 4474: 0100 addi s0,sp,128 + 4476: 00090003 lb zero,0(s2) + 447a: 0100 addi s0,sp,128 + 447c: 0105 addi sp,sp,1 + 447e: 0306 slli t1,t1,0x1 + 4480: 0979 addi s2,s2,30 + 4482: 0004 0x4 + 4484: 0501 addi a0,a0,0 + 4486: 09070303 lb t1,144(a4) + 448a: 0010 0x10 + 448c: 0301 addi t1,t1,0 + 448e: 0902 c.slli64 s2 + 4490: 0008 0x8 + 4492: 0501 addi a0,a0,0 + 4494: 0301 addi t1,t1,0 + 4496: 00040977 0x40977 + 449a: 0501 addi a0,a0,0 + 449c: 09090303 lb t1,144(s2) + 44a0: 0004 0x4 + 44a2: 0301 addi t1,t1,0 + 44a4: 097e slli s2,s2,0x1f + 44a6: 0004 0x4 + 44a8: 0601 addi a2,a2,0 + 44aa: 04090003 lb zero,64(s2) + 44ae: 0100 addi s0,sp,128 + 44b0: 00090003 lb zero,0(s2) + 44b4: 0100 addi s0,sp,128 + 44b6: 00090003 lb zero,0(s2) + 44ba: 0100 addi s0,sp,128 + 44bc: 00090203 lb tp,0(s2) + 44c0: 0100 addi s0,sp,128 + 44c2: 00090003 lb zero,0(s2) + 44c6: 0100 addi s0,sp,128 + 44c8: 00090003 lb zero,0(s2) + 44cc: 0100 addi s0,sp,128 + 44ce: 00090003 lb zero,0(s2) + 44d2: 0100 addi s0,sp,128 + 44d4: 00090003 lb zero,0(s2) + 44d8: 0100 addi s0,sp,128 + 44da: 00090003 lb zero,0(s2) + 44de: 0100 addi s0,sp,128 + 44e0: 00090003 lb zero,0(s2) + 44e4: 0100 addi s0,sp,128 + 44e6: 0200 addi s0,sp,256 + 44e8: 0104 addi s1,sp,128 + 44ea: 04090003 lb zero,64(s2) + 44ee: 0100 addi s0,sp,128 + 44f0: 0200 addi s0,sp,256 + 44f2: 0104 addi s1,sp,128 + 44f4: 04090003 lb zero,64(s2) + 44f8: 0100 addi s0,sp,128 + 44fa: 0200 addi s0,sp,256 + 44fc: 0104 addi s1,sp,128 + 44fe: 00090003 lb zero,0(s2) + 4502: 0100 addi s0,sp,128 + 4504: 0200 addi s0,sp,256 + 4506: 0104 addi s1,sp,128 + 4508: 00090003 lb zero,0(s2) + 450c: 0100 addi s0,sp,128 + 450e: 0200 addi s0,sp,256 + 4510: 0104 addi s1,sp,128 + 4512: 04090003 lb zero,64(s2) + 4516: 0100 addi s0,sp,128 + 4518: 0200 addi s0,sp,256 + 451a: 0104 addi s1,sp,128 + 451c: 04090003 lb zero,64(s2) + 4520: 0100 addi s0,sp,128 + 4522: 0200 addi s0,sp,256 + 4524: 3504 fld fs1,40(a0) + 4526: 00090003 lb zero,0(s2) + 452a: 0100 addi s0,sp,128 + 452c: 0200 addi s0,sp,256 + 452e: 3504 fld fs1,40(a0) + 4530: 00090003 lb zero,0(s2) + 4534: 0100 addi s0,sp,128 + 4536: 0200 addi s0,sp,256 + 4538: 3504 fld fs1,40(a0) + 453a: 00090403 lb s0,0(s2) + 453e: 0100 addi s0,sp,128 + 4540: 0200 addi s0,sp,256 + 4542: 3504 fld fs1,40(a0) + 4544: 00090003 lb zero,0(s2) + 4548: 0100 addi s0,sp,128 + 454a: 0200 addi s0,sp,256 + 454c: 3504 fld fs1,40(a0) + 454e: 00090003 lb zero,0(s2) + 4552: 0100 addi s0,sp,128 + 4554: 0200 addi s0,sp,256 + 4556: 3504 fld fs1,40(a0) + 4558: 00090003 lb zero,0(s2) + 455c: 0100 addi s0,sp,128 + 455e: 0200 addi s0,sp,256 + 4560: 3504 fld fs1,40(a0) + 4562: 00090003 lb zero,0(s2) + 4566: 0100 addi s0,sp,128 + 4568: 0200 addi s0,sp,256 + 456a: 3504 fld fs1,40(a0) + 456c: 00090003 lb zero,0(s2) + 4570: 0100 addi s0,sp,128 + 4572: 0200 addi s0,sp,256 + 4574: 3504 fld fs1,40(a0) + 4576: 00090003 lb zero,0(s2) + 457a: 0100 addi s0,sp,128 + 457c: 0105 addi sp,sp,1 + 457e: 0200 addi s0,sp,256 + 4580: 3504 fld fs1,40(a0) + 4582: 0306 slli t1,t1,0x1 + 4584: 0904 addi s1,sp,144 + 4586: 0014 0x14 + 4588: 0501 addi a0,a0,0 + 458a: 04020003 lb zero,64(tp) # 1a040 <_start-0x7ffe5fc0> + 458e: 0335 addi t1,t1,13 + 4590: 097c addi a5,sp,156 + 4592: 0004 0x4 + 4594: 0001 nop + 4596: 0402 c.slli64 s0 + 4598: 0635 addi a2,a2,13 + 459a: 04090003 lb zero,64(s2) + 459e: 0100 addi s0,sp,128 + 45a0: 0200 addi s0,sp,256 + 45a2: 3504 fld fs1,40(a0) + 45a4: 00090103 lb sp,0(s2) + 45a8: 0100 addi s0,sp,128 + 45aa: 0200 addi s0,sp,256 + 45ac: 3504 fld fs1,40(a0) + 45ae: 00090003 lb zero,0(s2) + 45b2: 0100 addi s0,sp,128 + 45b4: 0200 addi s0,sp,256 + 45b6: 3504 fld fs1,40(a0) + 45b8: 00090003 lb zero,0(s2) + 45bc: 0100 addi s0,sp,128 + 45be: 0200 addi s0,sp,256 + 45c0: 3504 fld fs1,40(a0) + 45c2: 00090203 lb tp,0(s2) + 45c6: 0100 addi s0,sp,128 + 45c8: 0105 addi sp,sp,1 + 45ca: 0200 addi s0,sp,256 + 45cc: 3504 fld fs1,40(a0) + 45ce: 0306 slli t1,t1,0x1 + 45d0: 0901 addi s2,s2,0 + 45d2: 0000 unimp + 45d4: 0501 addi a0,a0,0 + 45d6: 04020003 lb zero,64(tp) # 40 <_start-0x7fffffc0> + 45da: 0602 c.slli64 a2 + 45dc: 18097803 0x18097803 + 45e0: 0100 addi s0,sp,128 + 45e2: 0200 addi s0,sp,256 + 45e4: 0c04 addi s1,sp,528 + 45e6: 04090003 lb zero,64(s2) + 45ea: 0100 addi s0,sp,128 + 45ec: 0200 addi s0,sp,256 + 45ee: 0c04 addi s1,sp,528 + 45f0: 00090003 lb zero,0(s2) + 45f4: 0100 addi s0,sp,128 + 45f6: 0200 addi s0,sp,256 + 45f8: 0c04 addi s1,sp,528 + 45fa: 00090003 lb zero,0(s2) + 45fe: 0100 addi s0,sp,128 + 4600: 0200 addi s0,sp,256 + 4602: 0c04 addi s1,sp,528 + 4604: 00090003 lb zero,0(s2) + 4608: 0100 addi s0,sp,128 + 460a: 0200 addi s0,sp,256 + 460c: 1004 addi s1,sp,32 + 460e: 04090003 lb zero,64(s2) + 4612: 0100 addi s0,sp,128 + 4614: 0200 addi s0,sp,256 + 4616: 1004 addi s1,sp,32 + 4618: 00090003 lb zero,0(s2) + 461c: 0100 addi s0,sp,128 + 461e: 0200 addi s0,sp,256 + 4620: 1004 addi s1,sp,32 + 4622: 00090003 lb zero,0(s2) + 4626: 0100 addi s0,sp,128 + 4628: 0200 addi s0,sp,256 + 462a: 1004 addi s1,sp,32 + 462c: 00090003 lb zero,0(s2) + 4630: 0100 addi s0,sp,128 + 4632: 0200 addi s0,sp,256 + 4634: 1004 addi s1,sp,32 + 4636: 00090003 lb zero,0(s2) + 463a: 0100 addi s0,sp,128 + 463c: 0200 addi s0,sp,256 + 463e: 1004 addi s1,sp,32 + 4640: 00090003 lb zero,0(s2) + 4644: 0100 addi s0,sp,128 + 4646: 0200 addi s0,sp,256 + 4648: 1004 addi s1,sp,32 + 464a: 00090003 lb zero,0(s2) + 464e: 0100 addi s0,sp,128 + 4650: 0200 addi s0,sp,256 + 4652: 1004 addi s1,sp,32 + 4654: 08090003 lb zero,128(s2) + 4658: 0100 addi s0,sp,128 + 465a: 0200 addi s0,sp,256 + 465c: 1004 addi s1,sp,32 + 465e: 00090003 lb zero,0(s2) + 4662: 0100 addi s0,sp,128 + 4664: 0200 addi s0,sp,256 + 4666: 1d04 addi s1,sp,688 + 4668: 08090003 lb zero,128(s2) + 466c: 0100 addi s0,sp,128 + 466e: 0200 addi s0,sp,256 + 4670: 1d04 addi s1,sp,688 + 4672: 00090003 lb zero,0(s2) + 4676: 0100 addi s0,sp,128 + 4678: 0200 addi s0,sp,256 + 467a: 1d04 addi s1,sp,688 + 467c: 10090003 lb zero,256(s2) + 4680: 0100 addi s0,sp,128 + 4682: 0200 addi s0,sp,256 + 4684: 1d04 addi s1,sp,688 + 4686: 04090003 lb zero,64(s2) + 468a: 0100 addi s0,sp,128 + 468c: 0200 addi s0,sp,256 + 468e: 2604 fld fs1,8(a2) + 4690: 00090003 lb zero,0(s2) + 4694: 0100 addi s0,sp,128 + 4696: 0200 addi s0,sp,256 + 4698: 1e04 addi s1,sp,816 + 469a: 0c090003 lb zero,192(s2) + 469e: 0100 addi s0,sp,128 + 46a0: 0200 addi s0,sp,256 + 46a2: 1e04 addi s1,sp,816 + 46a4: 08090003 lb zero,128(s2) + 46a8: 0100 addi s0,sp,128 + 46aa: 0200 addi s0,sp,256 + 46ac: 0904 addi s1,sp,144 + 46ae: 08090003 lb zero,128(s2) + 46b2: 0100 addi s0,sp,128 + 46b4: 0200 addi s0,sp,256 + 46b6: 0904 addi s1,sp,144 + 46b8: 00090003 lb zero,0(s2) + 46bc: 0100 addi s0,sp,128 + 46be: 0200 addi s0,sp,256 + 46c0: 2704 fld fs1,8(a4) + 46c2: 08090003 lb zero,128(s2) + 46c6: 0100 addi s0,sp,128 + 46c8: 0200 addi s0,sp,256 + 46ca: 2704 fld fs1,8(a4) + 46cc: 00090003 lb zero,0(s2) + 46d0: 0100 addi s0,sp,128 + 46d2: 0200 addi s0,sp,256 + 46d4: 2704 fld fs1,8(a4) + 46d6: 00090003 lb zero,0(s2) + 46da: 0100 addi s0,sp,128 + 46dc: 0200 addi s0,sp,256 + 46de: 2704 fld fs1,8(a4) + 46e0: 00090003 lb zero,0(s2) + 46e4: 0100 addi s0,sp,128 + 46e6: 0200 addi s0,sp,256 + 46e8: 2704 fld fs1,8(a4) + 46ea: 04090003 lb zero,64(s2) + 46ee: 0100 addi s0,sp,128 + 46f0: 0200 addi s0,sp,256 + 46f2: 2704 fld fs1,8(a4) + 46f4: 08090003 lb zero,128(s2) + 46f8: 0100 addi s0,sp,128 + 46fa: 0200 addi s0,sp,256 + 46fc: 2704 fld fs1,8(a4) + 46fe: 00090003 lb zero,0(s2) + 4702: 0100 addi s0,sp,128 + 4704: 0200 addi s0,sp,256 + 4706: 2704 fld fs1,8(a4) + 4708: 00090003 lb zero,0(s2) + 470c: 0100 addi s0,sp,128 + 470e: 0200 addi s0,sp,256 + 4710: 2704 fld fs1,8(a4) + 4712: 00090003 lb zero,0(s2) + 4716: 0100 addi s0,sp,128 + 4718: 0200 addi s0,sp,256 + 471a: 2704 fld fs1,8(a4) + 471c: 00090003 lb zero,0(s2) + 4720: 0100 addi s0,sp,128 + 4722: 0306 slli t1,t1,0x1 + 4724: 0900 addi s0,sp,144 + 4726: 0004 0x4 + 4728: 0901 addi s2,s2,0 + 472a: 0008 0x8 + 472c: 0100 addi s0,sp,128 + 472e: 8701 c.srai64 a4 + 4730: 0004 0x4 + 4732: 0300 addi s0,sp,384 + 4734: a300 fsd fs0,0(a4) + 4736: 0000 unimp + 4738: 0100 addi s0,sp,128 + 473a: fb01 bnez a4,464a <_start-0x7fffb9b6> + 473c: 0d0e slli s10,s10,0x3 + 473e: 0100 addi s0,sp,128 + 4740: 0101 addi sp,sp,0 + 4742: 0001 nop + 4744: 0000 unimp + 4746: 0001 nop + 4748: 0100 addi s0,sp,128 + 474a: 2e2e fld ft8,200(sp) + 474c: 2f2e2e2f 0x2f2e2e2f + 4750: 2e2e fld ft8,200(sp) + 4752: 2f2e2e2f 0x2f2e2e2f + 4756: 6972 flw fs2,28(sp) + 4758: 2d766373 csrrsi t1,0x2d7,12 + 475c: 2f636367 0x2f636367 + 4760: 696c flw fa1,84(a0) + 4762: 6762 flw fa4,24(sp) + 4764: 732f6363 bltu t5,s2,4e8a <_start-0x7fffb176> + 4768: 2d74666f jal a2,4b23e <_start-0x7ffb4dc2> + 476c: 7066 flw ft0,120(sp) + 476e: 2e00 fld fs0,24(a2) + 4770: 2f2e fld ft10,200(sp) + 4772: 2e2e fld ft8,200(sp) + 4774: 2f2e2e2f 0x2f2e2e2f + 4778: 2e2e fld ft8,200(sp) + 477a: 7369722f 0x7369722f + 477e: 672d7663 bgeu s10,s2,4dea <_start-0x7fffb216> + 4782: 6c2f6363 bltu t5,sp,4e48 <_start-0x7fffb1b8> + 4786: 6269 lui tp,0x1a + 4788: 2f636367 0x2f636367 + 478c: 2e2e fld ft8,200(sp) + 478e: 636e692f 0x636e692f + 4792: 756c flw fa1,108(a0) + 4794: 6564 flw fs1,76(a0) + 4796: 0000 unimp + 4798: 7274 flw fa3,100(a2) + 479a: 6e75 lui t3,0x1d + 479c: 73666463 bltu a2,s6,4ec4 <_start-0x7fffb13c> + 47a0: 3266 fld ft4,120(sp) + 47a2: 632e flw ft6,200(sp) + 47a4: 0100 addi s0,sp,128 + 47a6: 0000 unimp + 47a8: 74666f73 csrrsi t5,0x746,12 + 47ac: 662d lui a2,0xb + 47ae: 2e70 fld fa2,216(a2) + 47b0: 0068 addi a0,sp,12 + 47b2: 0001 nop + 47b4: 7300 flw fs0,32(a4) + 47b6: 6e69 lui t3,0x1a + 47b8: 2e656c67 0x2e656c67 + 47bc: 0068 addi a0,sp,12 + 47be: 0001 nop + 47c0: 6400 flw fs0,8(s0) + 47c2: 6c62756f jal a0,2be88 <_start-0x7ffd4178> + 47c6: 2e65 jal 4b7e <_start-0x7fffb482> + 47c8: 0068 addi a0,sp,12 + 47ca: 0001 nop + 47cc: 6c00 flw fs0,24(s0) + 47ce: 6c676e6f jal t3,7ae94 <_start-0x7ff8516c> + 47d2: 2e676e6f jal t3,7aab8 <_start-0x7ff85548> + 47d6: 0068 addi a0,sp,12 + 47d8: 0002 c.slli64 zero + 47da: 0000 unimp + 47dc: 0105 addi sp,sp,1 + 47de: 0500 addi s0,sp,640 + 47e0: 6802 flw fa6,0(sp) + 47e2: 002e c.slli zero,0xb + 47e4: 0380 addi s0,sp,448 + 47e6: 0124 addi s1,sp,136 + 47e8: 0305 addi t1,t1,1 + 47ea: 00090103 lb sp,0(s2) + 47ee: 0100 addi s0,sp,128 + 47f0: 00090003 lb zero,0(s2) + 47f4: 0100 addi s0,sp,128 + 47f6: 0d05 addi s10,s10,1 + 47f8: 00090003 lb zero,0(s2) + 47fc: 0100 addi s0,sp,128 + 47fe: 0305 addi t1,t1,1 + 4800: 00090103 lb sp,0(s2) + 4804: 0100 addi s0,sp,128 + 4806: 00090003 lb zero,0(s2) + 480a: 0100 addi s0,sp,128 + 480c: 00090003 lb zero,0(s2) + 4810: 0100 addi s0,sp,128 + 4812: 00090003 lb zero,0(s2) + 4816: 0100 addi s0,sp,128 + 4818: 00090103 lb sp,0(s2) + 481c: 0100 addi s0,sp,128 + 481e: 00090003 lb zero,0(s2) + 4822: 0100 addi s0,sp,128 + 4824: 00090003 lb zero,0(s2) + 4828: 0100 addi s0,sp,128 + 482a: 00090003 lb zero,0(s2) + 482e: 0100 addi s0,sp,128 + 4830: 00090103 lb sp,0(s2) + 4834: 0100 addi s0,sp,128 + 4836: 00090203 lb tp,0(s2) + 483a: 0100 addi s0,sp,128 + 483c: 00090103 lb sp,0(s2) + 4840: 0100 addi s0,sp,128 + 4842: 00090003 lb zero,0(s2) + 4846: 0100 addi s0,sp,128 + 4848: 00090003 lb zero,0(s2) + 484c: 0100 addi s0,sp,128 + 484e: 00090003 lb zero,0(s2) + 4852: 0100 addi s0,sp,128 + 4854: 00090003 lb zero,0(s2) + 4858: 0100 addi s0,sp,128 + 485a: 00090003 lb zero,0(s2) + 485e: 0100 addi s0,sp,128 + 4860: 04090003 lb zero,64(s2) + 4864: 0100 addi s0,sp,128 + 4866: 0c090003 lb zero,192(s2) + 486a: 0100 addi s0,sp,128 + 486c: 0306 slli t1,t1,0x1 + 486e: 0902 c.slli64 s2 + 4870: 0008 0x8 + 4872: 0301 addi t1,t1,0 + 4874: 097e slli s2,s2,0x1f + 4876: 0008 0x8 + 4878: 0601 addi a2,a2,0 + 487a: 04090003 lb zero,64(s2) + 487e: 0100 addi s0,sp,128 + 4880: 00090003 lb zero,0(s2) + 4884: 0100 addi s0,sp,128 + 4886: 00090003 lb zero,0(s2) + 488a: 0100 addi s0,sp,128 + 488c: 00090003 lb zero,0(s2) + 4890: 0100 addi s0,sp,128 + 4892: 00090003 lb zero,0(s2) + 4896: 0100 addi s0,sp,128 + 4898: 04090003 lb zero,64(s2) + 489c: 0100 addi s0,sp,128 + 489e: 00090003 lb zero,0(s2) + 48a2: 0100 addi s0,sp,128 + 48a4: 00090203 lb tp,0(s2) + 48a8: 0100 addi s0,sp,128 + 48aa: 00090003 lb zero,0(s2) + 48ae: 0100 addi s0,sp,128 + 48b0: 00090003 lb zero,0(s2) + 48b4: 0100 addi s0,sp,128 + 48b6: 00090003 lb zero,0(s2) + 48ba: 0100 addi s0,sp,128 + 48bc: 00090003 lb zero,0(s2) + 48c0: 0100 addi s0,sp,128 + 48c2: 0200 addi s0,sp,256 + 48c4: 0104 addi s1,sp,128 + 48c6: 04090003 lb zero,64(s2) + 48ca: 0100 addi s0,sp,128 + 48cc: 0200 addi s0,sp,256 + 48ce: 0104 addi s1,sp,128 + 48d0: 04090003 lb zero,64(s2) + 48d4: 0100 addi s0,sp,128 + 48d6: 0200 addi s0,sp,256 + 48d8: 0404 addi s1,sp,512 + 48da: 08090003 lb zero,128(s2) + 48de: 0100 addi s0,sp,128 + 48e0: 0200 addi s0,sp,256 + 48e2: 1104 addi s1,sp,160 + 48e4: 04090003 lb zero,64(s2) + 48e8: 0100 addi s0,sp,128 + 48ea: 0200 addi s0,sp,256 + 48ec: 1404 addi s1,sp,544 + 48ee: 08090003 lb zero,128(s2) + 48f2: 0100 addi s0,sp,128 + 48f4: 0200 addi s0,sp,256 + 48f6: 1404 addi s1,sp,544 + 48f8: 0c090003 lb zero,192(s2) + 48fc: 0100 addi s0,sp,128 + 48fe: 0200 addi s0,sp,256 + 4900: 1604 addi s1,sp,800 + 4902: 0c090003 lb zero,192(s2) + 4906: 0100 addi s0,sp,128 + 4908: 0200 addi s0,sp,256 + 490a: 1604 addi s1,sp,800 + 490c: 1c090003 lb zero,448(s2) + 4910: 0100 addi s0,sp,128 + 4912: 0200 addi s0,sp,256 + 4914: 2a04 fld fs1,16(a2) + 4916: 0306 slli t1,t1,0x1 + 4918: 0900 addi s0,sp,144 + 491a: 0000 unimp + 491c: 0001 nop + 491e: 0402 c.slli64 s0 + 4920: 0641 addi a2,a2,16 + 4922: 04090003 lb zero,64(s2) + 4926: 0100 addi s0,sp,128 + 4928: 0200 addi s0,sp,256 + 492a: 4104 lw s1,0(a0) + 492c: 00090003 lb zero,0(s2) + 4930: 0100 addi s0,sp,128 + 4932: 0200 addi s0,sp,256 + 4934: 4104 lw s1,0(a0) + 4936: 00090403 lb s0,0(s2) + 493a: 0100 addi s0,sp,128 + 493c: 0200 addi s0,sp,256 + 493e: 4104 lw s1,0(a0) + 4940: 00090003 lb zero,0(s2) + 4944: 0100 addi s0,sp,128 + 4946: 0200 addi s0,sp,256 + 4948: 4104 lw s1,0(a0) + 494a: 00090003 lb zero,0(s2) + 494e: 0100 addi s0,sp,128 + 4950: 0200 addi s0,sp,256 + 4952: 4104 lw s1,0(a0) + 4954: 00090003 lb zero,0(s2) + 4958: 0100 addi s0,sp,128 + 495a: 0200 addi s0,sp,256 + 495c: 4104 lw s1,0(a0) + 495e: 00090003 lb zero,0(s2) + 4962: 0100 addi s0,sp,128 + 4964: 0200 addi s0,sp,256 + 4966: 1704 addi s1,sp,928 + 4968: 0c097c03 0xc097c03 + 496c: 0100 addi s0,sp,128 + 496e: 0200 addi s0,sp,256 + 4970: 1f04 addi s1,sp,944 + 4972: 0306 slli t1,t1,0x1 + 4974: 0900 addi s0,sp,144 + 4976: 0018 0x18 + 4978: 0001 nop + 497a: 0402 c.slli64 s0 + 497c: 0322 slli t1,t1,0x8 + 497e: 0900 addi s0,sp,144 + 4980: 0008 0x8 + 4982: 0001 nop + 4984: 0402 c.slli64 s0 + 4986: 0622 slli a2,a2,0x8 + 4988: 0c090003 lb zero,192(s2) + 498c: 0100 addi s0,sp,128 + 498e: 0200 addi s0,sp,256 + 4990: 1204 addi s1,sp,288 + 4992: 04090003 lb zero,64(s2) + 4996: 0100 addi s0,sp,128 + 4998: 0200 addi s0,sp,256 + 499a: 1204 addi s1,sp,288 + 499c: 00090003 lb zero,0(s2) + 49a0: 0100 addi s0,sp,128 + 49a2: 0200 addi s0,sp,256 + 49a4: 3804 fld fs1,48(s0) + 49a6: 0306 slli t1,t1,0x1 + 49a8: 0900 addi s0,sp,144 + 49aa: 0014 0x14 + 49ac: 0001 nop + 49ae: 0402 c.slli64 s0 + 49b0: 0602 c.slli64 a2 + 49b2: 08090003 lb zero,128(s2) + 49b6: 0100 addi s0,sp,128 + 49b8: 0200 addi s0,sp,256 + 49ba: 2a04 fld fs1,16(a2) + 49bc: 08090003 lb zero,128(s2) + 49c0: 0100 addi s0,sp,128 + 49c2: 0200 addi s0,sp,256 + 49c4: 2a04 fld fs1,16(a2) + 49c6: 00090003 lb zero,0(s2) + 49ca: 0100 addi s0,sp,128 + 49cc: 0200 addi s0,sp,256 + 49ce: 2a04 fld fs1,16(a2) + 49d0: 00090003 lb zero,0(s2) + 49d4: 0100 addi s0,sp,128 + 49d6: 0200 addi s0,sp,256 + 49d8: 2a04 fld fs1,16(a2) + 49da: 00090003 lb zero,0(s2) + 49de: 0100 addi s0,sp,128 + 49e0: 0200 addi s0,sp,256 + 49e2: 2a04 fld fs1,16(a2) + 49e4: 00090003 lb zero,0(s2) + 49e8: 0100 addi s0,sp,128 + 49ea: 0200 addi s0,sp,256 + 49ec: 2704 fld fs1,8(a4) + 49ee: 08090003 lb zero,128(s2) + 49f2: 0100 addi s0,sp,128 + 49f4: 0200 addi s0,sp,256 + 49f6: 2704 fld fs1,8(a4) + 49f8: 00090003 lb zero,0(s2) + 49fc: 0100 addi s0,sp,128 + 49fe: 0200 addi s0,sp,256 + 4a00: 3804 fld fs1,48(s0) + 4a02: 08090003 lb zero,128(s2) + 4a06: 0100 addi s0,sp,128 + 4a08: 0200 addi s0,sp,256 + 4a0a: 3804 fld fs1,48(s0) + 4a0c: 00090003 lb zero,0(s2) + 4a10: 0100 addi s0,sp,128 + 4a12: 0200 addi s0,sp,256 + 4a14: 3804 fld fs1,48(s0) + 4a16: 00090003 lb zero,0(s2) + 4a1a: 0100 addi s0,sp,128 + 4a1c: 0200 addi s0,sp,256 + 4a1e: 3804 fld fs1,48(s0) + 4a20: 00090003 lb zero,0(s2) + 4a24: 0100 addi s0,sp,128 + 4a26: 0200 addi s0,sp,256 + 4a28: 3804 fld fs1,48(s0) + 4a2a: 00090003 lb zero,0(s2) + 4a2e: 0100 addi s0,sp,128 + 4a30: 0200 addi s0,sp,256 + 4a32: 3804 fld fs1,48(s0) + 4a34: 00090003 lb zero,0(s2) + 4a38: 0100 addi s0,sp,128 + 4a3a: 0200 addi s0,sp,256 + 4a3c: 3804 fld fs1,48(s0) + 4a3e: 00090003 lb zero,0(s2) + 4a42: 0100 addi s0,sp,128 + 4a44: 0200 addi s0,sp,256 + 4a46: 3804 fld fs1,48(s0) + 4a48: 00090003 lb zero,0(s2) + 4a4c: 0100 addi s0,sp,128 + 4a4e: 0200 addi s0,sp,256 + 4a50: 3804 fld fs1,48(s0) + 4a52: 04090003 lb zero,64(s2) + 4a56: 0100 addi s0,sp,128 + 4a58: 0200 addi s0,sp,256 + 4a5a: 3804 fld fs1,48(s0) + 4a5c: 00090003 lb zero,0(s2) + 4a60: 0100 addi s0,sp,128 + 4a62: 0200 addi s0,sp,256 + 4a64: 3804 fld fs1,48(s0) + 4a66: 00090003 lb zero,0(s2) + 4a6a: 0100 addi s0,sp,128 + 4a6c: 0200 addi s0,sp,256 + 4a6e: 2f04 fld fs1,24(a4) + 4a70: 10090403 lb s0,256(s2) + 4a74: 0100 addi s0,sp,128 + 4a76: 0200 addi s0,sp,256 + 4a78: 2f04 fld fs1,24(a4) + 4a7a: 00090003 lb zero,0(s2) + 4a7e: 0100 addi s0,sp,128 + 4a80: 0200 addi s0,sp,256 + 4a82: 2f04 fld fs1,24(a4) + 4a84: 00090003 lb zero,0(s2) + 4a88: 0100 addi s0,sp,128 + 4a8a: 0200 addi s0,sp,256 + 4a8c: 3f04 fld fs1,56(a4) + 4a8e: 08090003 lb zero,128(s2) + 4a92: 0100 addi s0,sp,128 + 4a94: 0200 addi s0,sp,256 + 4a96: 3f04 fld fs1,56(a4) + 4a98: 00090003 lb zero,0(s2) + 4a9c: 0100 addi s0,sp,128 + 4a9e: 0200 addi s0,sp,256 + 4aa0: 3f04 fld fs1,56(a4) + 4aa2: 04090003 lb zero,64(s2) + 4aa6: 0100 addi s0,sp,128 + 4aa8: 0306 slli t1,t1,0x1 + 4aaa: 0900 addi s0,sp,144 + 4aac: 0008 0x8 + 4aae: 0001 nop + 4ab0: 0402 c.slli64 s0 + 4ab2: 0003064f fnmadd.s fa2,ft6,ft0,ft0,rne + 4ab6: 0c09 addi s8,s8,2 + 4ab8: 0100 addi s0,sp,128 + 4aba: 0200 addi s0,sp,256 + 4abc: 4f04 lw s1,24(a4) + 4abe: 00090003 lb zero,0(s2) + 4ac2: 0100 addi s0,sp,128 + 4ac4: 0200 addi s0,sp,256 + 4ac6: 4f04 lw s1,24(a4) + 4ac8: 08090003 lb zero,128(s2) + 4acc: 0100 addi s0,sp,128 + 4ace: 0200 addi s0,sp,256 + 4ad0: 5004 lw s1,32(s0) + 4ad2: 0306 slli t1,t1,0x1 + 4ad4: 0900 addi s0,sp,144 + 4ad6: 0004 0x4 + 4ad8: 0301 addi t1,t1,0 + 4ada: 0900 addi s0,sp,144 + 4adc: 0004 0x4 + 4ade: 0001 nop + 4ae0: 0402 c.slli64 s0 + 4ae2: 065a slli a2,a2,0x16 + 4ae4: 08090003 lb zero,128(s2) + 4ae8: 0100 addi s0,sp,128 + 4aea: 0200 addi s0,sp,256 + 4aec: 5a04 lw s1,48(a2) + 4aee: 00090003 lb zero,0(s2) + 4af2: 0100 addi s0,sp,128 + 4af4: 0200 addi s0,sp,256 + 4af6: 5a04 lw s1,48(a2) + 4af8: 00090003 lb zero,0(s2) + 4afc: 0100 addi s0,sp,128 + 4afe: 0200 addi s0,sp,256 + 4b00: 5a04 lw s1,48(a2) + 4b02: 00090003 lb zero,0(s2) + 4b06: 0100 addi s0,sp,128 + 4b08: 0200 addi s0,sp,256 + 4b0a: 5a04 lw s1,48(a2) + 4b0c: 00090003 lb zero,0(s2) + 4b10: 0100 addi s0,sp,128 + 4b12: 0200 addi s0,sp,256 + 4b14: 5a04 lw s1,48(a2) + 4b16: 00090003 lb zero,0(s2) + 4b1a: 0100 addi s0,sp,128 + 4b1c: 0200 addi s0,sp,256 + 4b1e: 5a04 lw s1,48(a2) + 4b20: 00090003 lb zero,0(s2) + 4b24: 0100 addi s0,sp,128 + 4b26: 0200 addi s0,sp,256 + 4b28: 5a04 lw s1,48(a2) + 4b2a: 1c090003 lb zero,448(s2) + 4b2e: 0100 addi s0,sp,128 + 4b30: 0200 addi s0,sp,256 + 4b32: 5a04 lw s1,48(a2) + 4b34: 00090003 lb zero,0(s2) + 4b38: 0100 addi s0,sp,128 + 4b3a: 0200 addi s0,sp,256 + 4b3c: 5a04 lw s1,48(a2) + 4b3e: 00090003 lb zero,0(s2) + 4b42: 0100 addi s0,sp,128 + 4b44: 0200 addi s0,sp,256 + 4b46: 5a04 lw s1,48(a2) + 4b48: 00090103 lb sp,0(s2) + 4b4c: 0100 addi s0,sp,128 + 4b4e: 0200 addi s0,sp,256 + 4b50: 5a04 lw s1,48(a2) + 4b52: 00090003 lb zero,0(s2) + 4b56: 0100 addi s0,sp,128 + 4b58: 0200 addi s0,sp,256 + 4b5a: 5a04 lw s1,48(a2) + 4b5c: 00090003 lb zero,0(s2) + 4b60: 0100 addi s0,sp,128 + 4b62: 0200 addi s0,sp,256 + 4b64: 5a04 lw s1,48(a2) + 4b66: 00090203 lb tp,0(s2) + 4b6a: 0100 addi s0,sp,128 + 4b6c: 0105 addi sp,sp,1 + 4b6e: 0200 addi s0,sp,256 + 4b70: 5a04 lw s1,48(a2) + 4b72: 0306 slli t1,t1,0x1 + 4b74: 0901 addi s2,s2,0 + 4b76: 0000 unimp + 4b78: 0501 addi a0,a0,0 + 4b7a: 09780303 lb t1,151(a6) + 4b7e: 0008 0x8 + 4b80: 0001 nop + 4b82: 0402 c.slli64 s0 + 4b84: 0625 addi a2,a2,9 + 4b86: 08090403 lb s0,128(s2) + 4b8a: 0100 addi s0,sp,128 + 4b8c: 0200 addi s0,sp,256 + 4b8e: 2504 fld fs1,8(a0) + 4b90: 00090003 lb zero,0(s2) + 4b94: 0100 addi s0,sp,128 + 4b96: 0200 addi s0,sp,256 + 4b98: 2504 fld fs1,8(a0) + 4b9a: 00090003 lb zero,0(s2) + 4b9e: 0100 addi s0,sp,128 + 4ba0: 0200 addi s0,sp,256 + 4ba2: 2504 fld fs1,8(a0) + 4ba4: 00090003 lb zero,0(s2) + 4ba8: 0100 addi s0,sp,128 + 4baa: 0200 addi s0,sp,256 + 4bac: 2c04 fld fs1,24(s0) + 4bae: 0c090003 lb zero,192(s2) + 4bb2: 0100 addi s0,sp,128 + 4bb4: 1009 c.nop -30 + 4bb6: 0000 unimp + 4bb8: 0101 addi sp,sp,0 + 4bba: 02b0 addi a2,sp,328 + 4bbc: 0000 unimp + 4bbe: 021e0003 lb zero,33(t3) # 1a021 <_start-0x7ffe5fdf> + 4bc2: 0000 unimp + 4bc4: 0101 addi sp,sp,0 + 4bc6: 000d0efb 0xd0efb + 4bca: 0101 addi sp,sp,0 + 4bcc: 0101 addi sp,sp,0 + 4bce: 0000 unimp + 4bd0: 0100 addi s0,sp,128 + 4bd2: 0000 unimp + 4bd4: 2e01 jal 4ee4 <_start-0x7fffb11c> + 4bd6: 2f2e fld ft10,200(sp) + 4bd8: 2e2e fld ft8,200(sp) + 4bda: 2f2e2e2f 0x2f2e2e2f + 4bde: 2e2e fld ft8,200(sp) + 4be0: 7369722f 0x7369722f + 4be4: 672d7663 bgeu s10,s2,5250 <_start-0x7fffadb0> + 4be8: 6c2f6363 bltu t5,sp,52ae <_start-0x7fffad52> + 4bec: 6269 lui tp,0x1a + 4bee: 00636367 0x636367 + 4bf2: 6d6f682f 0x6d6f682f + 4bf6: 2f65 jal 53ae <_start-0x7fffac52> + 4bf8: 6c62 flw fs8,24(sp) + 4bfa: 6961 lui s2,0x18 + 4bfc: 642f6573 csrrsi a0,0x642,30 + 4c00: 7665 lui a2,0xffff9 + 4c02: 7369722f 0x7369722f + 4c06: 672d7663 bgeu s10,s2,5272 <_start-0x7fffad8e> + 4c0a: 756e flw fa0,248(sp) + 4c0c: 742d lui s0,0xfffeb + 4c0e: 636c6f6f jal t5,cb244 <_start-0x7ff34dbc> + 4c12: 6168 flw fa0,68(a0) + 4c14: 6e69 lui t3,0x1a + 4c16: 2f32 fld ft10,264(sp) + 4c18: 7562 flw fa0,56(sp) + 4c1a: 6c69 lui s8,0x1a + 4c1c: 2f64 fld fs1,216(a4) + 4c1e: 7562 flw fa0,56(sp) + 4c20: 6c69 lui s8,0x1a + 4c22: 2d64 fld fs1,216(a0) + 4c24: 2d636367 0x2d636367 + 4c28: 656e flw fa0,216(sp) + 4c2a: 62696c77 0x62696c77 + 4c2e: 732d lui t1,0xfffeb + 4c30: 6174 flw fa3,68(a0) + 4c32: 2f326567 0x2f326567 + 4c36: 2f636367 0x2f636367 + 4c3a: 6e69 lui t3,0x1a + 4c3c: 64756c63 bltu a0,t2,5294 <_start-0x7fffad6c> + 4c40: 0065 c.nop 25 + 4c42: 6d6f682f 0x6d6f682f + 4c46: 2f65 jal 53fe <_start-0x7fffac02> + 4c48: 6c62 flw fs8,24(sp) + 4c4a: 6961 lui s2,0x18 + 4c4c: 642f6573 csrrsi a0,0x642,30 + 4c50: 7665 lui a2,0xffff9 + 4c52: 7369722f 0x7369722f + 4c56: 672d7663 bgeu s10,s2,52c2 <_start-0x7fffad3e> + 4c5a: 756e flw fa0,248(sp) + 4c5c: 742d lui s0,0xfffeb + 4c5e: 636c6f6f jal t5,cb294 <_start-0x7ff34d6c> + 4c62: 6168 flw fa0,68(a0) + 4c64: 6e69 lui t3,0x1a + 4c66: 2f32 fld ft10,264(sp) + 4c68: 7264 flw fs1,100(a2) + 4c6a: 2f73706f j 3c760 <_start-0x7ffc38a0> + 4c6e: 6972 flw fs2,28(sp) + 4c70: 33766373 csrrsi t1,mhpmevent23,12 + 4c74: 2d32 fld fs10,264(sp) + 4c76: 6e75 lui t3,0x1d + 4c78: 776f6e6b 0x776f6e6b + 4c7c: 2d6e fld fs10,216(sp) + 4c7e: 6c65 lui s8,0x19 + 4c80: 2f66 fld ft10,88(sp) + 4c82: 6e69 lui t3,0x1a + 4c84: 64756c63 bltu a0,t2,52dc <_start-0x7fffad24> + 4c88: 2f65 jal 5440 <_start-0x7fffabc0> + 4c8a: 00737973 csrrci s2,0x7,6 + 4c8e: 6d6f682f 0x6d6f682f + 4c92: 2f65 jal 544a <_start-0x7fffabb6> + 4c94: 6c62 flw fs8,24(sp) + 4c96: 6961 lui s2,0x18 + 4c98: 642f6573 csrrsi a0,0x642,30 + 4c9c: 7665 lui a2,0xffff9 + 4c9e: 7369722f 0x7369722f + 4ca2: 672d7663 bgeu s10,s2,530e <_start-0x7fffacf2> + 4ca6: 756e flw fa0,248(sp) + 4ca8: 742d lui s0,0xfffeb + 4caa: 636c6f6f jal t5,cb2e0 <_start-0x7ff34d20> + 4cae: 6168 flw fa0,68(a0) + 4cb0: 6e69 lui t3,0x1a + 4cb2: 2f32 fld ft10,264(sp) + 4cb4: 7264 flw fs1,100(a2) + 4cb6: 2f73706f j 3c7ac <_start-0x7ffc3854> + 4cba: 6972 flw fs2,28(sp) + 4cbc: 33766373 csrrsi t1,mhpmevent23,12 + 4cc0: 2d32 fld fs10,264(sp) + 4cc2: 6e75 lui t3,0x1d + 4cc4: 776f6e6b 0x776f6e6b + 4cc8: 2d6e fld fs10,216(sp) + 4cca: 6c65 lui s8,0x19 + 4ccc: 2f66 fld ft10,88(sp) + 4cce: 6e69 lui t3,0x1a + 4cd0: 64756c63 bltu a0,t2,5328 <_start-0x7fffacd8> + 4cd4: 0065 c.nop 25 + 4cd6: 2e2e fld ft8,200(sp) + 4cd8: 2f2e2e2f 0x2f2e2e2f + 4cdc: 2e2e fld ft8,200(sp) + 4cde: 2f2e2e2f 0x2f2e2e2f + 4ce2: 6972 flw fs2,28(sp) + 4ce4: 2d766373 csrrsi t1,0x2d7,12 + 4ce8: 2f636367 0x2f636367 + 4cec: 696c flw fa1,84(a0) + 4cee: 6762 flw fa4,24(sp) + 4cf0: 2e2f6363 bltu t5,sp,4fd6 <_start-0x7fffb02a> + 4cf4: 2f2e fld ft10,200(sp) + 4cf6: 6e69 lui t3,0x1a + 4cf8: 64756c63 bltu a0,t2,5350 <_start-0x7fffacb0> + 4cfc: 0065 c.nop 25 + 4cfe: 2e2e fld ft8,200(sp) + 4d00: 2f2e2e2f 0x2f2e2e2f + 4d04: 2e2e fld ft8,200(sp) + 4d06: 2f2e2e2f 0x2f2e2e2f + 4d0a: 6972 flw fs2,28(sp) + 4d0c: 2d766373 csrrsi t1,0x2d7,12 + 4d10: 2f636367 0x2f636367 + 4d14: 696c flw fa1,84(a0) + 4d16: 6762 flw fa4,24(sp) + 4d18: 2e2f6363 bltu t5,sp,4ffe <_start-0x7fffb002> + 4d1c: 2f2e fld ft10,200(sp) + 4d1e: 2f636367 0x2f636367 + 4d22: 666e6f63 bltu t3,t1,53a0 <_start-0x7fffac60> + 4d26: 6769 lui a4,0x1a + 4d28: 7369722f 0x7369722f + 4d2c: 2e007663 bgeu zero,zero,5018 <_start-0x7fffafe8> + 4d30: 2f2e fld ft10,200(sp) + 4d32: 2e2e fld ft8,200(sp) + 4d34: 672f2e2f amoand.w.aqrl t3,s2,(t5) + 4d38: 00006363 bltu zero,zero,4d3e <_start-0x7fffb2c2> + 4d3c: 696c flw fa1,84(a0) + 4d3e: 6762 flw fa4,24(sp) + 4d40: 2e326363 bltu tp,gp,5026 <_start-0x7fffafda> + 4d44: 00010063 beqz sp,4d44 <_start-0x7fffb2bc> + 4d48: 7300 flw fs0,32(a4) + 4d4a: 6474 flw fa3,76(s0) + 4d4c: 6564 flw fs1,76(a0) + 4d4e: 2e66 fld ft8,88(sp) + 4d50: 0068 addi a0,sp,12 + 4d52: 0002 c.slli64 zero + 4d54: 5f00 lw s0,56(a4) + 4d56: 7974 flw fa3,116(a0) + 4d58: 6570 flw fa2,76(a0) + 4d5a: 00682e73 csrrs t3,0x6,a6 + 4d5e: 72000003 lb zero,1824(zero) # 720 <_start-0x7ffff8e0> + 4d62: 6565 lui a0,0x19 + 4d64: 746e flw fs0,248(sp) + 4d66: 682e flw fa6,200(sp) + 4d68: 0300 addi s0,sp,384 + 4d6a: 0000 unimp + 4d6c: 6f6c flw fa1,92(a4) + 4d6e: 682e6b63 bltu t3,sp,5404 <_start-0x7fffabfc> + 4d72: 0300 addi s0,sp,384 + 4d74: 0000 unimp + 4d76: 7265 lui tp,0xffff9 + 4d78: 6e72 flw ft8,28(sp) + 4d7a: 00682e6f jal t3,86d80 <_start-0x7ff79280> + 4d7e: 73000003 lb zero,1840(zero) # 730 <_start-0x7ffff8d0> + 4d82: 6474 flw fa3,76(s0) + 4d84: 696c flw fa1,84(a0) + 4d86: 2e62 fld ft8,24(sp) + 4d88: 0068 addi a0,sp,12 + 4d8a: 0004 0x4 + 4d8c: 7500 flw fs0,40(a0) + 4d8e: 696e flw fs2,216(sp) + 4d90: 2e647473 csrrci s0,0x2e6,8 + 4d94: 0068 addi a0,sp,12 + 4d96: 74000003 lb zero,1856(zero) # 740 <_start-0x7ffff8c0> + 4d9a: 6d69 lui s10,0x1a + 4d9c: 2e65 jal 5154 <_start-0x7fffaeac> + 4d9e: 0068 addi a0,sp,12 + 4da0: 0004 0x4 + 4da2: 6800 flw fs0,16(s0) + 4da4: 7361 lui t1,0xffff8 + 4da6: 7468 flw fa0,108(s0) + 4da8: 6261 lui tp,0x18 + 4daa: 682e flw fa6,200(sp) + 4dac: 0500 addi s0,sp,640 + 4dae: 0000 unimp + 4db0: 6972 flw fs2,28(sp) + 4db2: 2d766373 csrrsi t1,0x2d7,12 + 4db6: 7374706f j 4ccec <_start-0x7ffb3314> + 4dba: 682e flw fa6,200(sp) + 4dbc: 0600 addi s0,sp,768 + 4dbe: 0000 unimp + 4dc0: 6e69 lui t3,0x1a + 4dc2: 632d6e73 csrrsi t3,0x632,26 + 4dc6: 74736e6f jal t3,3bd0c <_start-0x7ffc42f4> + 4dca: 6e61 lui t3,0x18 + 4dcc: 7374 flw fa3,100(a4) + 4dce: 682e flw fa6,200(sp) + 4dd0: 0700 addi s0,sp,896 + 4dd2: 0000 unimp + 4dd4: 696c flw fa1,84(a0) + 4dd6: 6762 flw fa4,24(sp) + 4dd8: 2e326363 bltu tp,gp,50be <_start-0x7fffaf42> + 4ddc: 0068 addi a0,sp,12 + 4dde: 0001 nop + 4de0: 0000 unimp + 4de2: 0105 addi sp,sp,1 + 4de4: 0500 addi s0,sp,640 + 4de6: e802 fsw ft0,16(sp) + 4de8: 0380002f 0x380002f + 4dec: 05c2 slli a1,a1,0x10 + 4dee: 0501 addi a0,a0,0 + 4df0: 09010303 lb t1,144(sp) + 4df4: 0000 unimp + 4df6: 0301 addi t1,t1,0 + 4df8: 0902 c.slli64 s2 + 4dfa: 0000 unimp + 4dfc: 0301 addi t1,t1,0 + 4dfe: 0900 addi s0,sp,144 + 4e00: 0000 unimp + 4e02: 0301 addi t1,t1,0 + 4e04: 0900 addi s0,sp,144 + 4e06: 0000 unimp + 4e08: 0301 addi t1,t1,0 + 4e0a: 0900 addi s0,sp,144 + 4e0c: 0000 unimp + 4e0e: 0301 addi t1,t1,0 + 4e10: 0900 addi s0,sp,144 + 4e12: 0000 unimp + 4e14: 0001 nop + 4e16: 0402 c.slli64 s0 + 4e18: 00030603 lb a2,0(t1) # ffff8000 <__global_pointer$+0x7fff3228> + 4e1c: 0809 addi a6,a6,2 + 4e1e: 0100 addi s0,sp,128 + 4e20: 0200 addi s0,sp,256 + 4e22: 0e04 addi s1,sp,784 + 4e24: 0306 slli t1,t1,0x1 + 4e26: 0900 addi s0,sp,144 + 4e28: 000c 0xc + 4e2a: 0001 nop + 4e2c: 0402 c.slli64 s0 + 4e2e: 030e slli t1,t1,0x3 + 4e30: 0900 addi s0,sp,144 + 4e32: 0000 unimp + 4e34: 0001 nop + 4e36: 0402 c.slli64 s0 + 4e38: 030e slli t1,t1,0x3 + 4e3a: 0902 c.slli64 s2 + 4e3c: 0000 unimp + 4e3e: 0001 nop + 4e40: 0402 c.slli64 s0 + 4e42: 060e slli a2,a2,0x3 + 4e44: 00097e03 0x97e03 + 4e48: 0100 addi s0,sp,128 + 4e4a: 0105 addi sp,sp,1 + 4e4c: 0200 addi s0,sp,256 + 4e4e: 0e04 addi s1,sp,784 + 4e50: 1c090303 lb t1,448(s2) # 181c0 <_start-0x7ffe7e40> + 4e54: 0100 addi s0,sp,128 + 4e56: 0305 addi t1,t1,1 + 4e58: 0200 addi s0,sp,256 + 4e5a: 0404 addi s1,sp,512 + 4e5c: 08097d03 0x8097d03 + 4e60: 0100 addi s0,sp,128 + 4e62: 0c090003 lb zero,192(s2) + 4e66: 0100 addi s0,sp,128 + 4e68: 0809 addi a6,a6,2 + 4e6a: 0000 unimp + 4e6c: 0101 addi sp,sp,0 + 4e6e: 0224 addi s1,sp,264 + 4e70: 0000 unimp + 4e72: 021e0003 lb zero,33(t3) # 18021 <_start-0x7ffe7fdf> + 4e76: 0000 unimp + 4e78: 0101 addi sp,sp,0 + 4e7a: 000d0efb 0xd0efb + 4e7e: 0101 addi sp,sp,0 + 4e80: 0101 addi sp,sp,0 + 4e82: 0000 unimp + 4e84: 0100 addi s0,sp,128 + 4e86: 0000 unimp + 4e88: 2f01 jal 5598 <_start-0x7fffaa68> + 4e8a: 6f68 flw fa0,92(a4) + 4e8c: 656d lui a0,0x1b + 4e8e: 616c622f 0x616c622f + 4e92: 7369 lui t1,0xffffa + 4e94: 2f65 jal 564c <_start-0x7fffa9b4> + 4e96: 6564 flw fs1,76(a0) + 4e98: 2f76 fld ft10,344(sp) + 4e9a: 6972 flw fs2,28(sp) + 4e9c: 2d766373 csrrsi t1,0x2d7,12 + 4ea0: 2d756e67 0x2d756e67 + 4ea4: 6f74 flw fa3,92(a4) + 4ea6: 68636c6f jal s8,3b52c <_start-0x7ffc4ad4> + 4eaa: 6961 lui s2,0x18 + 4eac: 326e fld ft4,248(sp) + 4eae: 6975622f 0x6975622f + 4eb2: 646c flw fa1,76(s0) + 4eb4: 6975622f 0x6975622f + 4eb8: 646c flw fa1,76(s0) + 4eba: 672d lui a4,0xb + 4ebc: 6e2d6363 bltu s10,sp,55a2 <_start-0x7fffaa5e> + 4ec0: 7765 lui a4,0xffff9 + 4ec2: 696c flw fa1,84(a0) + 4ec4: 2d62 fld fs10,24(sp) + 4ec6: 67617473 csrrci s0,0x676,2 + 4eca: 3265 jal 4872 <_start-0x7fffb78e> + 4ecc: 6363672f 0x6363672f + 4ed0: 636e692f 0x636e692f + 4ed4: 756c flw fa1,108(a0) + 4ed6: 6564 flw fs1,76(a0) + 4ed8: 2f00 fld fs0,24(a4) + 4eda: 6f68 flw fa0,92(a4) + 4edc: 656d lui a0,0x1b + 4ede: 616c622f 0x616c622f + 4ee2: 7369 lui t1,0xffffa + 4ee4: 2f65 jal 569c <_start-0x7fffa964> + 4ee6: 6564 flw fs1,76(a0) + 4ee8: 2f76 fld ft10,344(sp) + 4eea: 6972 flw fs2,28(sp) + 4eec: 2d766373 csrrsi t1,0x2d7,12 + 4ef0: 2d756e67 0x2d756e67 + 4ef4: 6f74 flw fa3,92(a4) + 4ef6: 68636c6f jal s8,3b57c <_start-0x7ffc4a84> + 4efa: 6961 lui s2,0x18 + 4efc: 326e fld ft4,248(sp) + 4efe: 6f72642f 0x6f72642f + 4f02: 7370 flw fa2,100(a4) + 4f04: 7369722f 0x7369722f + 4f08: 32337663 bgeu t1,gp,5234 <_start-0x7fffadcc> + 4f0c: 752d lui a0,0xfffeb + 4f0e: 6b6e flw fs6,216(sp) + 4f10: 6f6e flw ft10,216(sp) + 4f12: 652d6e77 0x652d6e77 + 4f16: 666c flw fa1,76(a2) + 4f18: 636e692f 0x636e692f + 4f1c: 756c flw fa1,108(a0) + 4f1e: 6564 flw fs1,76(a0) + 4f20: 7379732f 0x7379732f + 4f24: 2f00 fld fs0,24(a4) + 4f26: 6f68 flw fa0,92(a4) + 4f28: 656d lui a0,0x1b + 4f2a: 616c622f 0x616c622f + 4f2e: 7369 lui t1,0xffffa + 4f30: 2f65 jal 56e8 <_start-0x7fffa918> + 4f32: 6564 flw fs1,76(a0) + 4f34: 2f76 fld ft10,344(sp) + 4f36: 6972 flw fs2,28(sp) + 4f38: 2d766373 csrrsi t1,0x2d7,12 + 4f3c: 2d756e67 0x2d756e67 + 4f40: 6f74 flw fa3,92(a4) + 4f42: 68636c6f jal s8,3b5c8 <_start-0x7ffc4a38> + 4f46: 6961 lui s2,0x18 + 4f48: 326e fld ft4,248(sp) + 4f4a: 6f72642f 0x6f72642f + 4f4e: 7370 flw fa2,100(a4) + 4f50: 7369722f 0x7369722f + 4f54: 32337663 bgeu t1,gp,5280 <_start-0x7fffad80> + 4f58: 752d lui a0,0xfffeb + 4f5a: 6b6e flw fs6,216(sp) + 4f5c: 6f6e flw ft10,216(sp) + 4f5e: 652d6e77 0x652d6e77 + 4f62: 666c flw fa1,76(a2) + 4f64: 636e692f 0x636e692f + 4f68: 756c flw fa1,108(a0) + 4f6a: 6564 flw fs1,76(a0) + 4f6c: 2e00 fld fs0,24(a2) + 4f6e: 2f2e fld ft10,200(sp) + 4f70: 2e2e fld ft8,200(sp) + 4f72: 2f2e2e2f 0x2f2e2e2f + 4f76: 2e2e fld ft8,200(sp) + 4f78: 7369722f 0x7369722f + 4f7c: 672d7663 bgeu s10,s2,55e8 <_start-0x7fffaa18> + 4f80: 6c2f6363 bltu t5,sp,5646 <_start-0x7fffa9ba> + 4f84: 6269 lui tp,0x1a + 4f86: 2f636367 0x2f636367 + 4f8a: 2e2e fld ft8,200(sp) + 4f8c: 636e692f 0x636e692f + 4f90: 756c flw fa1,108(a0) + 4f92: 6564 flw fs1,76(a0) + 4f94: 2e00 fld fs0,24(a2) + 4f96: 2f2e fld ft10,200(sp) + 4f98: 2e2e fld ft8,200(sp) + 4f9a: 2f2e2e2f 0x2f2e2e2f + 4f9e: 2e2e fld ft8,200(sp) + 4fa0: 7369722f 0x7369722f + 4fa4: 672d7663 bgeu s10,s2,5610 <_start-0x7fffa9f0> + 4fa8: 6c2f6363 bltu t5,sp,566e <_start-0x7fffa992> + 4fac: 6269 lui tp,0x1a + 4fae: 2f636367 0x2f636367 + 4fb2: 2e2e fld ft8,200(sp) + 4fb4: 6363672f 0x6363672f + 4fb8: 6e6f632f 0x6e6f632f + 4fbc: 6966 flw fs2,88(sp) + 4fbe: 69722f67 0x69722f67 + 4fc2: 00766373 csrrsi t1,0x7,12 + 4fc6: 2e2e fld ft8,200(sp) + 4fc8: 2f2e2e2f 0x2f2e2e2f + 4fcc: 2f2e fld ft10,200(sp) + 4fce: 00636367 0x636367 + 4fd2: 2e2e fld ft8,200(sp) + 4fd4: 2f2e2e2f 0x2f2e2e2f + 4fd8: 2e2e fld ft8,200(sp) + 4fda: 2f2e2e2f 0x2f2e2e2f + 4fde: 6972 flw fs2,28(sp) + 4fe0: 2d766373 csrrsi t1,0x2d7,12 + 4fe4: 2f636367 0x2f636367 + 4fe8: 696c flw fa1,84(a0) + 4fea: 6762 flw fa4,24(sp) + 4fec: 00006363 bltu zero,zero,4ff2 <_start-0x7fffb00e> + 4ff0: 64647473 csrrci s0,0x646,8 + 4ff4: 6665 lui a2,0x19 + 4ff6: 682e flw fa6,200(sp) + 4ff8: 0100 addi s0,sp,128 + 4ffa: 0000 unimp + 4ffc: 745f 7079 7365 0x73657079745f + 5002: 682e flw fa6,200(sp) + 5004: 0200 addi s0,sp,256 + 5006: 0000 unimp + 5008: 6572 flw fa0,28(sp) + 500a: 6e65 lui t3,0x19 + 500c: 2e74 fld fa3,216(a2) + 500e: 0068 addi a0,sp,12 + 5010: 0002 c.slli64 zero + 5012: 6c00 flw fs0,24(s0) + 5014: 2e6b636f jal t1,bb2fa <_start-0x7ff44d06> + 5018: 0068 addi a0,sp,12 + 501a: 0002 c.slli64 zero + 501c: 6500 flw fs0,8(a0) + 501e: 7272 flw ft4,60(sp) + 5020: 6f6e flw ft10,216(sp) + 5022: 682e flw fa6,200(sp) + 5024: 0200 addi s0,sp,256 + 5026: 0000 unimp + 5028: 6c647473 csrrci s0,0x6c6,8 + 502c: 6269 lui tp,0x1a + 502e: 682e flw fa6,200(sp) + 5030: 0300 addi s0,sp,384 + 5032: 0000 unimp + 5034: 6e75 lui t3,0x1d + 5036: 7369 lui t1,0xffffa + 5038: 6474 flw fa3,76(s0) + 503a: 682e flw fa6,200(sp) + 503c: 0200 addi s0,sp,256 + 503e: 0000 unimp + 5040: 6974 flw fa3,84(a0) + 5042: 656d lui a0,0x1b + 5044: 682e flw fa6,200(sp) + 5046: 0300 addi s0,sp,384 + 5048: 0000 unimp + 504a: 6168 flw fa0,68(a0) + 504c: 61746873 csrrsi a6,0x617,8 + 5050: 2e62 fld ft8,24(sp) + 5052: 0068 addi a0,sp,12 + 5054: 0004 0x4 + 5056: 7200 flw fs0,32(a2) + 5058: 7369 lui t1,0xffffa + 505a: 6f2d7663 bgeu s10,s2,5746 <_start-0x7fffa8ba> + 505e: 7470 flw fa2,108(s0) + 5060: 00682e73 csrrs t3,0x6,a6 + 5064: 0005 c.nop 1 + 5066: 6900 flw fs0,16(a0) + 5068: 736e flw ft6,248(sp) + 506a: 2d6e fld fs10,216(sp) + 506c: 736e6f63 bltu t3,s6,57aa <_start-0x7fffa856> + 5070: 6174 flw fa3,68(a0) + 5072: 746e flw fs0,248(sp) + 5074: 00682e73 csrrs t3,0x6,a6 + 5078: 0006 c.slli zero,0x1 + 507a: 6c00 flw fs0,24(s0) + 507c: 6269 lui tp,0x1a + 507e: 32636367 0x32636367 + 5082: 682e flw fa6,200(sp) + 5084: 0700 addi s0,sp,896 + 5086: 0000 unimp + 5088: 696c flw fa1,84(a0) + 508a: 6762 flw fa4,24(sp) + 508c: 2e326363 bltu tp,gp,5372 <_start-0x7fffac8e> + 5090: 00070063 beqz a4,5090 <_start-0x7fffaf70> + ... + +Disassembly of section .debug_frame: + +00000000 <.debug_frame>: + 0: 000c 0xc + 2: 0000 unimp + 4: ffff 0xffff + 6: ffff 0xffff + 8: 7c010003 lb zero,1984(sp) + c: 0d01 addi s10,s10,0 + e: 0002 c.slli64 zero + 10: 0030 addi a2,sp,8 + 12: 0000 unimp + 14: 0000 unimp + 16: 0000 unimp + 18: 1038 addi a4,sp,40 + 1a: 8000 0x8000 + 1c: 07bc addi a5,sp,968 + 1e: 0000 unimp + 20: 0e4c addi a1,sp,788 + 22: 5820 lw s0,112(s0) + 24: 0288 addi a0,sp,320 + 26: 8950 0x8950 + 28: 01816003 0x1816003 + 2c: 0492 slli s1,s1,0x4 + 2e: f4030593 addi a1,t1,-192 # ffff9f40 <__global_pointer$+0x7fff5168> + 32: 0a06 slli s4,s4,0x1 + 34: 44c1 li s1,16 + 36: 58c8 lw a0,52(s1) + 38: 44d2 lw s1,20(sp) + 3a: 44c9 li s1,18 + 3c: 000e48d3 fadd.s fa7,ft8,ft0,rmm + 40: 0b44 addi s1,sp,404 + 42: 0000 unimp + 44: 000c 0xc + 46: 0000 unimp + 48: ffff 0xffff + 4a: ffff 0xffff + 4c: 7c010003 lb zero,1984(sp) + 50: 0d01 addi s10,s10,0 + 52: 0002 c.slli64 zero + 54: 0044 addi s1,sp,4 + 56: 0000 unimp + 58: 0044 addi s1,sp,4 + 5a: 0000 unimp + 5c: 17f4 addi a3,sp,1004 + 5e: 8000 0x8000 + 60: 06e0 addi s0,sp,844 + 62: 0000 unimp + 64: 0e44 addi s1,sp,788 + 66: 5830 lw a2,112(s0) + 68: 0389 addi t2,t2,2 + 6a: 0492 slli s1,s1,0x4 + 6c: 0694 addi a3,sp,832 + 6e: 0896 slli a7,a7,0x5 + 70: 0a98 addi a4,sp,336 + 72: 8158 0x8158 + 74: 8801 andi s0,s0,0 + 76: 9302 jalr t1 + 78: 9505 srai a0,a0,0x21 + 7a: 03099707 0x3099707 + 7e: 0518 addi a4,sp,640 + 80: c10a sw sp,128(sp) + 82: c844 sw s1,20(s0) + 84: c958 sw a4,20(a0) + 86: d244 sw s1,36(a2) + 88: d344 sw s1,36(a4) + 8a: d444 sw s1,44(s0) + 8c: d544 sw s1,44(a0) + 8e: d644 sw s1,44(a2) + 90: d744 sw s1,44(a4) + 92: d844 sw s1,52(s0) + 94: 0e4c addi a1,sp,788 + 96: 4400 lw s0,8(s0) + 98: 0000000b 0xb + 9c: 000c 0xc + 9e: 0000 unimp + a0: ffff 0xffff + a2: ffff 0xffff + a4: 7c010003 lb zero,1984(sp) + a8: 0d01 addi s10,s10,0 + aa: 0002 c.slli64 zero + ac: 000c 0xc + ae: 0000 unimp + b0: 009c addi a5,sp,64 + b2: 0000 unimp + b4: 1ed4 addi a3,sp,884 + b6: 8000 0x8000 + b8: 00e4 addi s1,sp,76 + ba: 0000 unimp + bc: 000c 0xc + be: 0000 unimp + c0: ffff 0xffff + c2: ffff 0xffff + c4: 7c010003 lb zero,1984(sp) + c8: 0d01 addi s10,s10,0 + ca: 0002 c.slli64 zero + cc: 0040 addi s0,sp,4 + ce: 0000 unimp + d0: 00bc addi a5,sp,72 + d2: 0000 unimp + d4: 1fb8 addi a4,sp,1016 + d6: 8000 0x8000 + d8: 05c4 addi s1,sp,708 + da: 0000 unimp + dc: 0e44 addi s1,sp,788 + de: 5830 lw a2,112(s0) + e0: 0288 addi a0,sp,320 + e2: 0389 addi t2,t2,2 + e4: 06940593 addi a1,s0,105 # fffeb069 <__global_pointer$+0x7ffe6291> + e8: 0795 addi a5,a5,5 + ea: 8154 0x8154 + ec: 9201 srli a2,a2,0x20 + ee: 9604 0x9604 + f0: 9708 0x9708 + f2: 0309 addi t1,t1,2 + f4: 0438 addi a4,sp,520 + f6: c10a sw sp,128(sp) + f8: c848 sw a0,20(s0) + fa: c944 sw s1,20(a0) + fc: d244 sw s1,36(a2) + fe: d344 sw s1,36(a4) + 100: d444 sw s1,44(s0) + 102: d544 sw s1,44(a0) + 104: d644 sw s1,44(a2) + 106: d744 sw s1,44(a4) + 108: 0e4c addi a1,sp,788 + 10a: 4400 lw s0,8(s0) + 10c: 0000000b 0xb + 110: 000c 0xc + 112: 0000 unimp + 114: ffff 0xffff + 116: ffff 0xffff + 118: 7c010003 lb zero,1984(sp) + 11c: 0d01 addi s10,s10,0 + 11e: 0002 c.slli64 zero + 120: 0030 addi a2,sp,8 + 122: 0000 unimp + 124: 0110 addi a2,sp,128 + 126: 0000 unimp + 128: 257c fld fa5,200(a0) + 12a: 8000 0x8000 + 12c: 07c8 addi a0,sp,964 + 12e: 0000 unimp + 130: 0e4c addi a1,sp,788 + 132: 5820 lw s0,112(s0) + 134: 0288 addi a0,sp,320 + 136: 8950 0x8950 + 138: 01815c03 lhu s8,24(sp) + 13c: 0492 slli s1,s1,0x4 + 13e: 04030593 addi a1,t1,64 + 142: 44c10a07 0x44c10a07 + 146: 58c8 lw a0,52(s1) + 148: 44d2 lw s1,20(sp) + 14a: 44c9 li s1,18 + 14c: 000e48d3 fadd.s fa7,ft8,ft0,rmm + 150: 0b44 addi s1,sp,404 + 152: 0000 unimp + 154: 000c 0xc + 156: 0000 unimp + 158: ffff 0xffff + 15a: ffff 0xffff + 15c: 7c010003 lb zero,1984(sp) + 160: 0d01 addi s10,s10,0 + 162: 0002 c.slli64 zero + 164: 000c 0xc + 166: 0000 unimp + 168: 0154 addi a3,sp,132 + 16a: 0000 unimp + 16c: 2d44 fld fs1,152(a0) + 16e: 8000 0x8000 + 170: 004c addi a1,sp,4 + 172: 0000 unimp + 174: 000c 0xc + 176: 0000 unimp + 178: ffff 0xffff + 17a: ffff 0xffff + 17c: 7c010003 lb zero,1984(sp) + 180: 0d01 addi s10,s10,0 + 182: 0002 c.slli64 zero + 184: 0024 addi s1,sp,8 + 186: 0000 unimp + 188: 0174 addi a3,sp,140 + 18a: 0000 unimp + 18c: 2d90 fld fa2,24(a1) + 18e: 8000 0x8000 + 190: 00d8 addi a4,sp,68 + 192: 0000 unimp + 194: 0e48 addi a0,sp,788 + 196: 4c10 lw a2,24(s0) + 198: 0288 addi a0,sp,320 + 19a: 0389 addi t2,t2,2 + 19c: 8150 0x8150 + 19e: 7001 c.lui zero,0xfffe0 + 1a0: c10a sw sp,128(sp) + 1a2: c84c sw a1,20(s0) + 1a4: c944 sw s1,20(a0) + 1a6: 0e48 addi a0,sp,788 + 1a8: 4400 lw s0,8(s0) + 1aa: 000c000b 0xc000b + 1ae: 0000 unimp + 1b0: ffff 0xffff + 1b2: ffff 0xffff + 1b4: 7c010003 lb zero,1984(sp) + 1b8: 0d01 addi s10,s10,0 + 1ba: 0002 c.slli64 zero + 1bc: 000c 0xc + 1be: 0000 unimp + 1c0: 01ac addi a1,sp,200 + 1c2: 0000 unimp + 1c4: 2e68 fld fa0,216(a2) + 1c6: 8000 0x8000 + 1c8: 0180 addi s0,sp,192 + 1ca: 0000 unimp + 1cc: 000c 0xc + 1ce: 0000 unimp + 1d0: ffff 0xffff + 1d2: ffff 0xffff + 1d4: 7c010003 lb zero,1984(sp) + 1d8: 0d01 addi s10,s10,0 + 1da: 0002 c.slli64 zero + 1dc: 000c 0xc + 1de: 0000 unimp + 1e0: 01cc addi a1,sp,196 + 1e2: 0000 unimp + 1e4: 2fe8 fld fa0,216(a5) + 1e6: 8000 0x8000 + 1e8: 004c addi a1,sp,4 + ... + +Disassembly of section .debug_str: + +00000000 <.debug_str>: + 0: 32627573 csrrci a0,mhpmevent6,4 + 4: 5f00 lw s0,56(a4) + 6: 615f 6464 6664 0x66646464615f + c: 2e2e0033 0x2e2e0033 + 10: 2f2e2e2f 0x2f2e2e2f + 14: 2e2e fld ft8,200(sp) + 16: 2f2e2e2f 0x2f2e2e2f + 1a: 6972 flw fs2,28(sp) + 1c: 2d766373 csrrsi t1,0x2d7,12 + 20: 2f636367 0x2f636367 + 24: 696c flw fa1,84(a0) + 26: 6762 flw fa4,24(sp) + 28: 732f6363 bltu t5,s2,74e <_start-0x7ffff8b2> + 2c: 2d74666f jal a2,46b02 <_start-0x7ffb94fe> + 30: 7066 flw ft0,120(sp) + 32: 6464612f 0x6464612f + 36: 6664 flw fs1,76(a2) + 38: 00632e33 slt t3,t1,t1 + 3c: 7266 flw ft4,120(sp) + 3e: 6361 lui t1,0x18 + 40: 0030 addi a2,sp,8 + 42: 7266 flw ft4,120(sp) + 44: 6361 lui t1,0x18 + 46: 0031 c.nop 12 + 48: 465f 5f50 4150 0x41505f50465f + 4e: 525f4b43 fmadd.d fs6,ft10,ft5,fa0,rmm + 52: 5741 li a4,-16 + 54: 325f 665f 6f6c 0x6f6c665f325f + 5a: 4400 lw s0,8(s0) + 5c: 7446 flw fs0,112(sp) + 5e: 7079 c.lui zero,0xffffe + 60: 0065 c.nop 25 + 62: 5f42 lw t5,48(sp) + 64: 3166 fld ft2,120(sp) + 66: 6100 flw fs0,0(a0) + 68: 6464 flw fs1,76(s0) + 6a: 645f 6e6f 0065 0x656e6f645f + 70: 5f52 lw t5,52(sp) + 72: 3066 fld ft0,120(sp) + 74: 7500 flw fs0,40(a0) + 76: 736e flw ft6,248(sp) + 78: 6769 lui a4,0x1a + 7a: 656e flw fa0,216(sp) + 7c: 2064 fld fs1,192(s0) + 7e: 72616863 bltu sp,t1,7ae <_start-0x7ffff852> + 82: 5f00 lw s0,56(a4) + 84: 5046 0x5046 + 86: 555f 504e 4341 0x4341504e555f + 8c: 41525f4b fnmsub.s ft10,ft4,fs5,fs0,unknown + 90: 5f325f57 0x5f325f57 + 94: 6c66 flw fs8,88(sp) + 96: 465f006f j f0cfa <_start-0x7ff0f306> + 9a: 5f50 lw a2,60(a4) + 9c: 4150 lw a2,4(a0) + 9e: 535f4b43 fmadd.d fs6,ft10,fs5,fa0,rmm + a2: 4d45 li s10,17 + a4: 5249 li tp,-14 + a6: 5741 li a4,-16 + a8: 545f 735f 7300 0x7300735f545f + ae: 6f68 flw fa0,92(a4) + b0: 7472 flw fs0,60(sp) + b2: 7520 flw fs0,104(a0) + b4: 736e flw ft6,248(sp) + b6: 6769 lui a4,0x1a + b8: 656e flw fa0,216(sp) + ba: 2064 fld fs1,192(s0) + bc: 6e69 lui t3,0x1a + be: 0074 addi a3,sp,12 + c0: 5f41 li t5,-16 + c2: 3166 fld ft2,120(sp) + c4: 5f00 lw s0,56(a4) + c6: 5046 0x5046 + c8: 505f 4341 5f4b 0x5f4b4341505f + ce: 494d4553 0x494d4553 + d2: 4152 lw sp,20(sp) + d4: 5f545f57 0x5f545f57 + d8: 75730063 beq t1,s7,818 <_start-0x7ffff7e8> + dc: 3162 fld ft2,56(sp) + de: 5f00 lw s0,56(a4) + e0: 6566 flw fa0,88(sp) + e2: 0078 addi a4,sp,12 + e4: 33627573 csrrci a0,mhpmevent22,4 + e8: 5f00 lw s0,56(a4) + ea: 5046 0x5046 + ec: 505f 4341 5f4b 0x5f4b4341505f + f2: 494d4553 0x494d4553 + f6: 4152 lw sp,20(sp) + f8: 5f545f57 0x5f545f57 + fc: 0065 c.nop 25 + fe: 6f6e flw ft10,216(sp) + 100: 6d72 flw fs10,28(sp) + 102: 4100 lw s0,0(a0) + 104: 665f 0030 5155 0x51550030665f + 10a: 7449 lui s0,0xffff2 + 10c: 7079 c.lui zero,0xffffe + 10e: 0065 c.nop 25 + 110: 5f5f 6c63 5f7a 0x5f7a6c635f5f + 116: 6174 flw fa3,68(a0) + 118: 0062 c.slli zero,0x18 + 11a: 5f42 lw t5,48(sp) + 11c: 3066 fld ft0,120(sp) + 11e: 6c00 flw fs0,24(s0) + 120: 20676e6f jal t3,76326 <_start-0x7ff89cda> + 124: 6f6c flw fa1,92(a4) + 126: 676e flw fa4,216(sp) + 128: 7520 flw fs0,104(a0) + 12a: 736e flw ft6,248(sp) + 12c: 6769 lui a4,0x1a + 12e: 656e flw fa0,216(sp) + 130: 2064 fld fs1,192(s0) + 132: 6e69 lui t3,0x1a + 134: 0074 addi a3,sp,12 + 136: 465f 5f50 4441 0x44415f50465f + 13c: 5f44 lw s1,60(a4) + 13e: 4e49 li t3,18 + 140: 4554 lw a3,12(a0) + 142: 4e52 lw t3,20(sp) + 144: 4c41 li s8,16 + 146: 645f 6669 0066 0x666669645f + 14c: 6d6f682f 0x6d6f682f + 150: 2f65 jal 908 <_start-0x7ffff6f8> + 152: 6c62 flw fs8,24(sp) + 154: 6961 lui s2,0x18 + 156: 642f6573 csrrsi a0,0x642,30 + 15a: 7665 lui a2,0xffff9 + 15c: 7369722f 0x7369722f + 160: 672d7663 bgeu s10,s2,7cc <_start-0x7ffff834> + 164: 756e flw fa0,248(sp) + 166: 742d lui s0,0xfffeb + 168: 636c6f6f jal t5,c679e <_start-0x7ff39862> + 16c: 6168 flw fa0,68(a0) + 16e: 6e69 lui t3,0x1a + 170: 2f32 fld ft10,264(sp) + 172: 7562 flw fa0,56(sp) + 174: 6c69 lui s8,0x1a + 176: 2f64 fld fs1,216(a4) + 178: 7562 flw fa0,56(sp) + 17a: 6c69 lui s8,0x1a + 17c: 2d64 fld fs1,216(a0) + 17e: 2d636367 0x2d636367 + 182: 656e flw fa0,216(sp) + 184: 62696c77 0x62696c77 + 188: 732d lui t1,0xfffeb + 18a: 6174 flw fa3,68(a0) + 18c: 2f326567 0x2f326567 + 190: 6972 flw fs2,28(sp) + 192: 33766373 csrrsi t1,mhpmevent23,12 + 196: 2d32 fld fs10,264(sp) + 198: 6e75 lui t3,0x1d + 19a: 776f6e6b 0x776f6e6b + 19e: 2d6e fld fs10,216(sp) + 1a0: 6c65 lui s8,0x19 + 1a2: 2f66 fld ft10,88(sp) + 1a4: 696c flw fa1,84(a0) + 1a6: 6762 flw fa4,24(sp) + 1a8: 5f006363 bltu zero,a6,78e <_start-0x7ffff872> + 1ac: 5046 0x5046 + 1ae: 505f 4341 5f4b 0x5f4b4341505f + 1b4: 494d4553 0x494d4553 + 1b8: 4152 lw sp,20(sp) + 1ba: 5f545f57 0x5f545f57 + 1be: 3066 fld ft0,120(sp) + 1c0: 6c00 flw fs0,24(s0) + 1c2: 20676e6f jal t3,763c8 <_start-0x7ff89c38> + 1c6: 6f6c flw fa1,92(a4) + 1c8: 676e flw fa4,216(sp) + 1ca: 6920 flw fs0,80(a0) + 1cc: 746e flw fs0,248(sp) + 1ce: 5f00 lw s0,56(a4) + 1d0: 5046 0x5046 + 1d2: 505f 4341 5f4b 0x5f4b4341505f + 1d8: 494d4553 0x494d4553 + 1dc: 4152 lw sp,20(sp) + 1de: 5f545f57 0x5f545f57 + 1e2: 3166 fld ft2,120(sp) + 1e4: 4700 lw s0,8(a4) + 1e6: 554e lw a0,240(sp) + 1e8: 4320 lw s0,64(a4) + 1ea: 3731 jal f6 <_start-0x7fffff0a> + 1ec: 3920 fld fs0,112(a0) + 1ee: 322e fld ft4,232(sp) + 1f0: 302e fld ft0,232(sp) + 1f2: 2d20 fld fs0,88(a0) + 1f4: 636d lui t1,0x1b + 1f6: 6f6d lui t5,0x1b + 1f8: 6564 flw fs1,76(a0) + 1fa: 3d6c fld fa1,248(a0) + 1fc: 656d lui a0,0x1b + 1fe: 6c64 flw fs1,92(s0) + 200: 2d20776f jal a4,74d2 <_start-0x7fff8b2e> + 204: 636d lui t1,0x1b + 206: 6f6d lui t5,0x1b + 208: 6564 flw fs1,76(a0) + 20a: 3d6c fld fa1,248(a0) + 20c: 656d lui a0,0x1b + 20e: 6c64 flw fs1,92(s0) + 210: 2d20776f jal a4,74e2 <_start-0x7fff8b1e> + 214: 746d lui s0,0xffffb + 216: 6e75 lui t3,0x1d + 218: 3d65 jal d0 <_start-0x7fffff30> + 21a: 6f72 flw ft10,28(sp) + 21c: 74656b63 bltu a0,t1,972 <_start-0x7ffff68e> + 220: 2d20 fld fs0,88(a0) + 222: 616d addi sp,sp,240 + 224: 6372 flw ft6,28(sp) + 226: 3d68 fld fa0,248(a0) + 228: 7672 flw fa2,60(sp) + 22a: 6d693233 0x6d693233 + 22e: 2d20 fld fs0,88(a0) + 230: 616d addi sp,sp,240 + 232: 6962 flw fs2,24(sp) + 234: 693d lui s2,0xf + 236: 706c flw fa1,100(s0) + 238: 2d203233 0x2d203233 + 23c: 4f2d2067 0x4f2d2067 + 240: 4f2d2073 csrs 0x4f2,s10 + 244: 2032 fld ft0,264(sp) + 246: 4f2d li t5,11 + 248: 662d2073 csrs 0x662,s10 + 24c: 7562 flw fa0,56(sp) + 24e: 6c69 lui s8,0x1a + 250: 6964 flw fs1,84(a0) + 252: 676e flw fa4,216(sp) + 254: 6c2d lui s8,0xb + 256: 6269 lui tp,0x1a + 258: 20636367 0x20636367 + 25c: 662d lui a2,0xb + 25e: 6f6e flw ft10,216(sp) + 260: 732d lui t1,0xfffeb + 262: 6174 flw fa3,68(a0) + 264: 702d6b63 bltu s10,sp,97a <_start-0x7ffff686> + 268: 6f72 flw ft10,28(sp) + 26a: 6574 flw fa3,76(a0) + 26c: 726f7463 bgeu t5,t1,994 <_start-0x7ffff66c> + 270: 2d20 fld fs0,88(a0) + 272: 7666 flw fa2,120(sp) + 274: 7369 lui t1,0xffffa + 276: 6269 lui tp,0x1a + 278: 6c69 lui s8,0x1a + 27a: 7469 lui s0,0xffffa + 27c: 3d79 jal 11a <_start-0x7ffffee6> + 27e: 6968 flw fa0,84(a0) + 280: 6464 flw fs1,76(s0) + 282: 6e65 lui t3,0x19 + 284: 5f00 lw s0,56(a4) + 286: 5046 0x5046 + 288: 415f 4444 495f 0x495f4444415f + 28e: 544e lw s0,240(sp) + 290: 5245 li tp,-15 + 292: 414e lw sp,208(sp) + 294: 5f4c lw a1,60(a4) + 296: 6465 lui s0,0x19 + 298: 6669 lui a2,0x1a + 29a: 0066 c.slli zero,0x19 + 29c: 465f 5f50 4e55 0x4e555f50465f + 2a2: 4f49 li t5,18 + 2a4: 5f4e lw t5,240(sp) + 2a6: 0044 addi s1,sp,4 + 2a8: 465f 5f50 4150 0x41505f50465f + 2ae: 535f4b43 fmadd.d fs6,ft10,fs5,fa0,rmm + 2b2: 4d45 li s10,17 + 2b4: 5249 li tp,-14 + 2b6: 5741 li a4,-16 + 2b8: 695f 5f73 6974 0x69745f73695f + 2be: 796e flw fs2,248(sp) + 2c0: 7300 flw fs0,32(a4) + 2c2: 6275 lui tp,0x1d + 2c4: 645f 6e6f 0065 0x656e6f645f + 2ca: 6461 lui s0,0x18 + 2cc: 3164 fld fs1,224(a0) + 2ce: 6100 flw fs0,0(a0) + 2d0: 6464 flw fs1,76(s0) + 2d2: 0032 c.slli zero,0xc + 2d4: 6461 lui s0,0x18 + 2d6: 3364 fld fs1,224(a4) + 2d8: 6200 flw fs0,0(a2) + 2da: 7469 lui s0,0xffffa + 2dc: 665f0073 0x665f0073 + 2e0: 6d72 flw fs10,28(sp) + 2e2: 5200 lw s0,32(a2) + 2e4: 665f 0031 465f 0x465f0031665f + 2ea: 5f50 lw a2,60(a4) + 2ec: 4150 lw a2,4(a0) + 2ee: 435f4b43 fmadd.d fs6,ft10,fs5,fs0,rmm + 2f2: 4e41 li t3,16 + 2f4: 43494e4f fnmadd.d ft8,fs2,fs4,fs0,rmm + 2f8: 4c41 li s8,16 + 2fa: 545f 665f 0030 0x30665f545f + 300: 465f 5f50 4150 0x41505f50465f + 306: 435f4b43 fmadd.d fs6,ft10,fs5,fs0,rmm + 30a: 4e41 li t3,16 + 30c: 43494e4f fnmadd.d ft8,fs2,fs4,fs0,rmm + 310: 4c41 li s8,16 + 312: 545f 665f 0031 0x31665f545f + 318: 5f5f 3072 5f00 0x5f0030725f5f + 31e: 725f 0031 465f 0x465f0031725f + 324: 5f50 lw a2,60(a4) + 326: 4944 lw s1,20(a0) + 328: 5f56 lw t5,116(sp) + 32a: 454d li a0,19 + 32c: 5441 li s0,-16 + 32e: 325f 755f 6964 0x6964755f325f + 334: 5f76 lw t5,124(sp) + 336: 5f6d li t5,-5 + 338: 3066 fld ft0,120(sp) + 33a: 5f00 lw s0,56(a4) + 33c: 715f 0030 5f5f 0x5f5f0030715f + 342: 3171 jal ffffffce <__global_pointer$+0x7fffb1f6> + 344: 5f00 lw s0,56(a4) + 346: 645f 7669 6664 0x66647669645f + 34c: 48550033 0x48550033 + 350: 70797457 0x70797457 + 354: 0065 c.nop 25 + 356: 465f 5f50 4944 0x49445f50465f + 35c: 5f56 lw t5,116(sp) + 35e: 454d li a0,19 + 360: 5441 li s0,-16 + 362: 325f 755f 6964 0x6964755f325f + 368: 5f76 lw t5,124(sp) + 36a: 5f6d li t5,-5 + 36c: 3166 fld ft2,120(sp) + 36e: 5f00 lw s0,56(a4) + 370: 785f 0032 465f 0x465f0032785f + 376: 5f50 lw a2,60(a4) + 378: 4e55 li t3,21 + 37a: 4150 lw a2,4(a0) + 37c: 435f4b43 fmadd.d fs6,ft10,fs5,fs0,rmm + 380: 4e41 li t3,16 + 382: 43494e4f fnmadd.d ft8,fs2,fs4,fs0,rmm + 386: 4c41 li s8,16 + 388: 735f 6968 7466 0x74666968735f + 38e: 5f00 lw s0,56(a4) + 390: 5046 0x5046 + 392: 445f 5649 4d5f 0x4d5f5649445f + 398: 4145 li sp,17 + 39a: 5f54 lw a3,60(a4) + 39c: 5f32 lw t5,44(sp) + 39e: 6475 lui s0,0x1d + 3a0: 7669 lui a2,0xffffa + 3a2: 725f 665f 0030 0x30665f725f + 3a8: 465f 5f50 4944 0x49445f50465f + 3ae: 5f56 lw t5,116(sp) + 3b0: 454d li a0,19 + 3b2: 5441 li s0,-16 + 3b4: 325f 755f 6964 0x6964755f325f + 3ba: 5f76 lw t5,124(sp) + 3bc: 5f72 lw t5,60(sp) + 3be: 3166 fld ft2,120(sp) + 3c0: 5f00 lw s0,56(a4) + 3c2: 755f 0068 465f 0x465f0068755f + 3c8: 5f50 lw a2,60(a4) + 3ca: 4944 lw s1,20(a0) + 3cc: 5f56 lw t5,116(sp) + 3ce: 454d li a0,19 + 3d0: 5441 li s0,-16 + 3d2: 325f 755f 6964 0x6964755f325f + 3d8: 5f76 lw t5,124(sp) + 3da: 5f6e lw t5,248(sp) + 3dc: 3066 fld ft0,120(sp) + 3de: 5f00 lw s0,56(a4) + 3e0: 5046 0x5046 + 3e2: 445f 5649 4d5f 0x4d5f5649445f + 3e8: 4145 li sp,17 + 3ea: 5f54 lw a3,60(a4) + 3ec: 5f32 lw t5,44(sp) + 3ee: 6475 lui s0,0x1d + 3f0: 7669 lui a2,0xffffa + 3f2: 6e5f 665f 0031 0x31665f6e5f + 3f8: 465f 5f50 4944 0x49445f50465f + 3fe: 5f56 lw t5,116(sp) + 400: 454d li a0,19 + 402: 5441 li s0,-16 + 404: 325f 755f 6964 0x6964755f325f + 40a: 5f76 lw t5,124(sp) + 40c: 5f6e lw t5,248(sp) + 40e: 3266 fld ft4,120(sp) + 410: 5f00 lw s0,56(a4) + 412: 5046 0x5046 + 414: 505f 4341 5f4b 0x5f4b4341505f + 41a: 4f4e4143 fmadd.q ft2,ft8,fs4,fs1,rmm + 41e: 494e lw s2,208(sp) + 420: 5f4c4143 fmadd.q ft2,fs8,fs4,fa1,rmm + 424: 5f54 lw a3,60(a4) + 426: 465f0073 0x465f0073 + 42a: 5f50 lw a2,60(a4) + 42c: 4150 lw a2,4(a0) + 42e: 435f4b43 fmadd.d fs6,ft10,fs5,fs0,rmm + 432: 4e41 li t3,16 + 434: 43494e4f fnmadd.d ft8,fs2,fs4,fs0,rmm + 438: 4c41 li s8,16 + 43a: 695f 5f73 6974 0x69745f73695f + 440: 796e flw fs2,248(sp) + 442: 5f00 lw s0,56(a4) + 444: 755f 006c 465f 0x465f006c755f + 44a: 5f50 lw a2,60(a4) + 44c: 4150 lw a2,4(a0) + 44e: 435f4b43 fmadd.d fs6,ft10,fs5,fs0,rmm + 452: 4e41 li t3,16 + 454: 43494e4f fnmadd.d ft8,fs2,fs4,fs0,rmm + 458: 4c41 li s8,16 + 45a: 545f 635f 5f00 0x5f00635f545f + 460: 785f 0031 2e2e 0x2e2e0031785f + 466: 2f2e2e2f 0x2f2e2e2f + 46a: 2e2e fld ft8,200(sp) + 46c: 2f2e2e2f 0x2f2e2e2f + 470: 6972 flw fs2,28(sp) + 472: 2d766373 csrrsi t1,0x2d7,12 + 476: 2f636367 0x2f636367 + 47a: 696c flw fa1,84(a0) + 47c: 6762 flw fa4,24(sp) + 47e: 732f6363 bltu t5,s2,ba4 <_start-0x7ffff45c> + 482: 2d74666f jal a2,46f58 <_start-0x7ffb90a8> + 486: 7066 flw ft0,120(sp) + 488: 7669642f 0x7669642f + 48c: 6664 flw fs1,76(a2) + 48e: 00632e33 slt t3,t1,t1 + 492: 5f5f 6876 5f00 0x5f0068765f5f + 498: 765f 006c 5f5f 0x5f5f006c765f + 49e: 3064 fld fs1,224(s0) + 4a0: 5f00 lw s0,56(a4) + 4a2: 5046 0x5046 + 4a4: 505f 4341 5f4b 0x5f4b4341505f + 4aa: 4f4e4143 fmadd.q ft2,ft8,fs4,fs1,rmm + 4ae: 494e lw s2,208(sp) + 4b0: 5f4c4143 fmadd.q ft2,fs8,fs4,fa1,rmm + 4b4: 5f54 lw a3,60(a4) + 4b6: 0065 c.nop 25 + 4b8: 5f5f 3078 5f00 0x5f0030785f5f + 4be: 645f 0031 5f5f 0x5f5f0031645f + 4c4: 3378 fld fa4,224(a4) + 4c6: 2e00 fld fs0,24(a2) + 4c8: 2f2e fld ft10,200(sp) + 4ca: 2e2e fld ft8,200(sp) + 4cc: 2f2e2e2f 0x2f2e2e2f + 4d0: 2e2e fld ft8,200(sp) + 4d2: 7369722f 0x7369722f + 4d6: 672d7663 bgeu s10,s2,b42 <_start-0x7ffff4be> + 4da: 6c2f6363 bltu t5,sp,ba0 <_start-0x7ffff460> + 4de: 6269 lui tp,0x1a + 4e0: 2f636367 0x2f636367 + 4e4: 74666f73 csrrsi t5,0x746,12 + 4e8: 662d lui a2,0xb + 4ea: 2f70 fld fa2,216(a4) + 4ec: 656c flw fa1,76(a0) + 4ee: 6664 flw fs1,76(a2) + 4f0: 2e32 fld ft8,264(sp) + 4f2: 5f5f0063 beq t5,s5,ad2 <_start-0x7ffff52e> + 4f6: 656c flw fa1,76(a0) + 4f8: 6664 flw fs1,76(a2) + 4fa: 0032 c.slli zero,0xc + 4fc: 5f5f 6367 5f63 0x5f6363675f5f + 502: 74504d43 0x74504d43 + 506: 7079 c.lui zero,0xffffe + 508: 0065 c.nop 25 + 50a: 465f 5f50 5349 0x53495f50465f + 510: 4e474953 0x4e474953 + 514: 4e41 li t3,16 + 516: 725f 7465 5f00 0x5f007465725f + 51c: 5046 0x5046 + 51e: 435f 504d 695f 0x695f504d435f + 524: 657a5f73 csrrwi t5,0x657,20 + 528: 6f72 flw ft10,28(sp) + 52a: 785f 5f00 5046 0x50465f00785f + 530: 435f 504d 695f 0x695f504d435f + 536: 657a5f73 csrrwi t5,0x657,20 + 53a: 6f72 flw ft10,28(sp) + 53c: 795f 5f00 5046 0x50465f00795f + 542: 465f 4152 5f43 0x5f434152465f + 548: 5f535253 0x5f535253 + 54c: 5f34 lw a3,120(a4) + 54e: 63697473 csrrci s0,0x636,18 + 552: 5f00796b 0x5f00796b + 556: 5046 0x5046 + 558: 465f 4152 5f43 0x5f434152465f + 55e: 54535253 0x54535253 + 562: 345f 645f 776f 0x776f645f345f + 568: 006e c.slli zero,0x1b + 56a: 465f 5f50 5246 0x52465f50465f + 570: 4341 li t1,16 + 572: 535f 5352 5f54 0x5f545352535f + 578: 5f34 lw a3,120(a4) + 57a: 0069 c.nop 26 + 57c: 465f 5f50 5246 0x52465f50465f + 582: 4341 li t1,16 + 584: 535f 5352 5f54 0x5f545352535f + 58a: 5f34 lw a3,120(a4) + 58c: 70696b73 csrrsi s6,0x706,18 + 590: 5f00 lw s0,56(a4) + 592: 5046 0x5046 + 594: 465f 4152 5f43 0x5f434152465f + 59a: 54535253 0x54535253 + 59e: 345f 735f 5f00 0x5f00735f345f + 5a4: 5046 0x5046 + 5a6: 465f 4152 5f43 0x5f434152465f + 5ac: 54535253 0x54535253 + 5b0: 345f 755f 0070 0x70755f345f + 5b6: 465f 5f50 554d 0x554d5f50465f + 5bc: 5f4c lw a1,60(a4) + 5be: 454d li a0,19 + 5c0: 5441 li s0,-16 + 5c2: 445f 5f57 5f32 0x5f325f57445f + 5c8: 65646977 0x65646977 + 5cc: 635f 665f 0030 0x30665f635f + 5d2: 465f 5f50 554d 0x554d5f50465f + 5d8: 5f4c lw a1,60(a4) + 5da: 454d li a0,19 + 5dc: 5441 li s0,-16 + 5de: 445f 5f57 5f32 0x5f325f57445f + 5e4: 65646977 0x65646977 + 5e8: 635f 665f 0031 0x31665f635f + 5ee: 5f5f 5046 465f 0x465f50465f5f + 5f4: 4152 lw sp,20(sp) + 5f6: 44415f43 0x44415f43 + 5fa: 5f44 lw s1,60(a4) + 5fc: 32635f33 0x32635f33 + 600: 5f00 lw s0,56(a4) + 602: 5046 0x5046 + 604: 4d5f 4c55 4d5f 0x4d5f4c554d5f + 60a: 4145 li sp,17 + 60c: 5f54 lw a3,60(a4) + 60e: 5f32 lw t5,44(sp) + 610: 65646977 0x65646977 + 614: 7a5f 665f 2e00 0x2e00665f7a5f + 61a: 2f2e fld ft10,200(sp) + 61c: 2e2e fld ft8,200(sp) + 61e: 2f2e2e2f 0x2f2e2e2f + 622: 2e2e fld ft8,200(sp) + 624: 7369722f 0x7369722f + 628: 672d7663 bgeu s10,s2,c94 <_start-0x7ffff36c> + 62c: 6c2f6363 bltu t5,sp,cf2 <_start-0x7ffff30e> + 630: 6269 lui tp,0x1a + 632: 2f636367 0x2f636367 + 636: 74666f73 csrrsi t5,0x746,12 + 63a: 662d lui a2,0xb + 63c: 2f70 fld fa2,216(a4) + 63e: 756d lui a0,0xffffb + 640: 646c flw fa1,76(s0) + 642: 3366 fld ft6,120(sp) + 644: 632e flw ft6,200(sp) + 646: 5f00 lw s0,56(a4) + 648: 465f 5f50 5246 0x52465f50465f + 64e: 4341 li t1,16 + 650: 415f 4444 335f 0x335f4444415f + 656: 635f 0031 465f 0x465f0031635f + 65c: 5f50 lw a2,60(a4) + 65e: 554d li a0,-13 + 660: 5f4c lw a1,60(a4) + 662: 454d li a0,19 + 664: 5441 li s0,-16 + 666: 445f 5f57 5f32 0x5f325f57445f + 66c: 65646977 0x65646977 + 670: 625f 665f 0030 0x30665f625f + 676: 465f 5f50 554d 0x554d5f50465f + 67c: 5f4c lw a1,60(a4) + 67e: 454d li a0,19 + 680: 5441 li s0,-16 + 682: 445f 5f57 5f32 0x5f325f57445f + 688: 65646977 0x65646977 + 68c: 625f 665f 0031 0x31665f625f + 692: 5f5f 756d 646c 0x646c756d5f5f + 698: 3366 fld ft6,120(sp) + 69a: 5f00 lw s0,56(a4) + 69c: 735f 6275 6664 0x66646275735f + 6a2: 2e2e0033 0x2e2e0033 + 6a6: 2f2e2e2f 0x2f2e2e2f + 6aa: 2e2e fld ft8,200(sp) + 6ac: 2f2e2e2f 0x2f2e2e2f + 6b0: 6972 flw fs2,28(sp) + 6b2: 2d766373 csrrsi t1,0x2d7,12 + 6b6: 2f636367 0x2f636367 + 6ba: 696c flw fa1,84(a0) + 6bc: 6762 flw fa4,24(sp) + 6be: 732f6363 bltu t5,s2,de4 <_start-0x7ffff21c> + 6c2: 2d74666f jal a2,47198 <_start-0x7ffb8e68> + 6c6: 7066 flw ft0,120(sp) + 6c8: 6275732f 0x6275732f + 6cc: 6664 flw fs1,76(a2) + 6ce: 00632e33 slt t3,t1,t1 + 6d2: 5f5f 6e75 726f 0x726f6e755f5f + 6d8: 6464 flw fs1,76(s0) + 6da: 3266 fld ft4,120(sp) + 6dc: 2e00 fld fs0,24(a2) + 6de: 2f2e fld ft10,200(sp) + 6e0: 2e2e fld ft8,200(sp) + 6e2: 2f2e2e2f 0x2f2e2e2f + 6e6: 2e2e fld ft8,200(sp) + 6e8: 7369722f 0x7369722f + 6ec: 672d7663 bgeu s10,s2,d58 <_start-0x7ffff2a8> + 6f0: 6c2f6363 bltu t5,sp,db6 <_start-0x7ffff24a> + 6f4: 6269 lui tp,0x1a + 6f6: 2f636367 0x2f636367 + 6fa: 74666f73 csrrsi t5,0x746,12 + 6fe: 662d lui a2,0xb + 700: 2f70 fld fa2,216(a4) + 702: 6e75 lui t3,0x1d + 704: 6464726f jal tp,47d4a <_start-0x7ffb82b6> + 708: 3266 fld ft4,120(sp) + 70a: 632e flw ft6,200(sp) + 70c: 2e00 fld fs0,24(a2) + 70e: 2f2e fld ft10,200(sp) + 710: 2e2e fld ft8,200(sp) + 712: 2f2e2e2f 0x2f2e2e2f + 716: 2e2e fld ft8,200(sp) + 718: 7369722f 0x7369722f + 71c: 672d7663 bgeu s10,s2,d88 <_start-0x7ffff278> + 720: 6c2f6363 bltu t5,sp,de6 <_start-0x7ffff21a> + 724: 6269 lui tp,0x1a + 726: 2f636367 0x2f636367 + 72a: 74666f73 csrrsi t5,0x746,12 + 72e: 662d lui a2,0xb + 730: 2f70 fld fa2,216(a4) + 732: 7865 lui a6,0xffff9 + 734: 6574 flw fa3,76(a0) + 736: 646e flw fs0,216(sp) + 738: 66646673 csrrsi a2,0x666,8 + 73c: 2e32 fld ft8,264(sp) + 73e: 50460063 beq a2,tp,c3e <_start-0x7ffff3c2> + 742: 455f 5458 4e45 0x4e455458455f + 748: 5f44 lw s1,60(a4) + 74a: 7a6c flw fa1,116(a2) + 74c: 5f00 lw s0,56(a4) + 74e: 5046 0x5046 + 750: 555f 504e 4341 0x4341504e555f + 756: 41525f4b fnmsub.s ft10,ft4,fs5,fs0,unknown + 75a: 5f315f57 0x5f315f57 + 75e: 6c66 flw fs8,88(sp) + 760: 7266006f j 60e86 <_start-0x7ff9f17a> + 764: 6361 lui t1,0x18 + 766: 5f00 lw s0,56(a4) + 768: 5046 0x5046 + 76a: 555f 494e 4e4f 0x4e4f494e555f + 770: 535f 5300 7446 0x74465300535f + 776: 7079 c.lui zero,0xffffe + 778: 0065 c.nop 25 + 77a: 5f5f 7865 6574 0x657478655f5f + 780: 646e flw fs0,216(sp) + 782: 66646673 csrrsi a2,0x666,8 + 786: 0032 c.slli zero,0xc + 788: 465f 5f50 4150 0x41505f50465f + 78e: 525f4b43 fmadd.d fs6,ft10,ft5,fa0,rmm + 792: 5741 li a4,-16 + 794: 315f 665f 6f6c 0x6f6c665f315f + 79a: 5f00 lw s0,56(a4) + 79c: 745f 7572 636e 0x636e7572745f + 7a2: 6664 flw fs1,76(a2) + 7a4: 00326673 csrrsi a2,fcsr,4 + 7a8: 465f 5f50 4150 0x41505f50465f + 7ae: 535f4b43 fmadd.d fs6,ft10,fs5,fa0,rmm + 7b2: 4d45 li s10,17 + 7b4: 5249 li tp,-14 + 7b6: 5741 li a4,-16 + 7b8: 545f 665f 2e00 0x2e00665f545f + 7be: 2f2e fld ft10,200(sp) + 7c0: 2e2e fld ft8,200(sp) + 7c2: 2f2e2e2f 0x2f2e2e2f + 7c6: 2e2e fld ft8,200(sp) + 7c8: 7369722f 0x7369722f + 7cc: 672d7663 bgeu s10,s2,e38 <_start-0x7ffff1c8> + 7d0: 6c2f6363 bltu t5,sp,e96 <_start-0x7ffff16a> + 7d4: 6269 lui tp,0x1a + 7d6: 2f636367 0x2f636367 + 7da: 74666f73 csrrsi t5,0x746,12 + 7de: 662d lui a2,0xb + 7e0: 2f70 fld fa2,216(a4) + 7e2: 7274 flw fa3,100(a2) + 7e4: 6e75 lui t3,0x1d + 7e6: 73666463 bltu a2,s6,f0e <_start-0x7ffff0f2> + 7ea: 3266 fld ft4,120(sp) + 7ec: 632e flw ft6,200(sp) + 7ee: 7300 flw fs0,32(a4) + 7f0: 6f68 flw fa0,92(a4) + 7f2: 7472 flw fs0,60(sp) + 7f4: 6920 flw fs0,80(a0) + 7f6: 746e flw fs0,248(sp) + 7f8: 6800 flw fs0,16(s0) + 7fa: 6174 flw fa3,68(a0) + 7fc: 5f62 lw t5,56(sp) + 7fe: 6168 flw fa0,68(a0) + 800: 705f6873 csrrsi a6,0x705,30 + 804: 746e696f jal s2,e6f4a <_start-0x7ff190b6> + 808: 7265 lui tp,0xffff9 + 80a: 5f00 lw s0,56(a4) + 80c: 657a6973 csrrsi s2,0x657,20 + 810: 5f00 lw s0,56(a4) + 812: 6172 flw ft2,28(sp) + 814: 646e flw fs0,216(sp) + 816: 3834 fld fa3,112(s0) + 818: 5f00 lw s0,56(a4) + 81a: 6d65 lui s10,0x19 + 81c: 7265 lui tp,0xffff9 + 81e: 636e6567 0x636e6567 + 822: 0079 c.nop 30 + 824: 645f 7961 696c 0x696c7961645f + 82a: 00746867 0x746867 + 82e: 706d6f63 bltu s10,t1,f4c <_start-0x7ffff0b4> + 832: 656c flw fa1,76(a0) + 834: 2078 fld fa4,192(s0) + 836: 6f64 flw fs1,92(a4) + 838: 6275 lui tp,0x1d + 83a: 656c flw fa1,76(a0) + 83c: 5f00 lw s0,56(a4) + 83e: 64746567 0x64746567 + 842: 7461 lui s0,0xffff8 + 844: 5f65 li t5,-7 + 846: 7265 lui tp,0xffff9 + 848: 0072 c.slli zero,0x1c + 84a: 645f 7461 0061 0x617461645f + 850: 775f 7263 6f74 0x6f747263775f + 856: 626d lui tp,0x1b + 858: 735f 6174 6574 0x65746174735f + 85e: 7200 flw fs0,32(a2) + 860: 7369 lui t1,0xffffa + 862: 6d5f7663 bgeu t5,s5,f2e <_start-0x7ffff0d2> + 866: 6369 lui t1,0x1a + 868: 6f72 flw ft10,28(sp) + 86a: 7261 lui tp,0xffff8 + 86c: 74696863 bltu s2,t1,fbc <_start-0x7ffff044> + 870: 6365 lui t1,0x19 + 872: 7574 flw fa3,108(a0) + 874: 6572 flw fa0,28(sp) + 876: 745f 7079 0065 0x657079745f + 87c: 775f 7363 7472 0x74727363775f + 882: 73626d6f jal s10,26fb8 <_start-0x7ffd9048> + 886: 735f 6174 6574 0x65746174735f + 88c: 5f00 lw s0,56(a4) + 88e: 626c flw fa1,68(a2) + 890: 7366 flw ft6,120(sp) + 892: 7a69 lui s4,0xffffa + 894: 0065 c.nop 25 + 896: 706d6f63 bltu s10,t1,fb4 <_start-0x7ffff04c> + 89a: 656c flw fa1,76(a0) + 89c: 2078 fld fa4,192(s0) + 89e: 6f6c flw fa1,92(a4) + 8a0: 676e flw fa4,216(sp) + 8a2: 6420 flw fs0,72(s0) + 8a4: 6c62756f jal a0,27f6a <_start-0x7ffd8096> + 8a8: 0065 c.nop 25 + 8aa: 6972 flw fs2,28(sp) + 8ac: 5f766373 csrrsi t1,0x5f7,12 + 8b0: 6261 lui tp,0x18 + 8b2: 0069 c.nop 26 + 8b4: 5f5f 6f6c 6163 0x61636f6c5f5f + 8ba: 656c flw fa1,76(a0) + 8bc: 745f 5f00 626d 0x626d5f00745f + 8c2: 7472 flw fs0,60(sp) + 8c4: 5f63776f jal a4,37eba <_start-0x7ffc8146> + 8c8: 74617473 csrrci s0,0x746,2 + 8cc: 0065 c.nop 25 + 8ce: 745f 6e7a 6d61 0x6d616e7a745f + 8d4: 0065 c.nop 25 + 8d6: 775f 7463 6d6f 0x6d6f7463775f + 8dc: 5f62 lw t5,56(sp) + 8de: 74617473 csrrci s0,0x746,2 + 8e2: 0065 c.nop 25 + 8e4: 5f5f 6d74 735f 0x735f6d745f5f + 8ea: 6365 lui t1,0x19 + 8ec: 5f00 lw s0,56(a4) + 8ee: 736f6c63 bltu t5,s6,1026 <_start-0x7fffefda> + 8f2: 0065 c.nop 25 + 8f4: 755f 7562 0066 0x667562755f + 8fa: 625f 7361 0065 0x657361625f + 900: 5f5f 6d74 685f 0x685f6d745f5f + 906: 0072756f jal a0,2810c <_start-0x7ffd7ef4> + 90a: 6e75 lui t3,0x1d + 90c: 63657073 csrci 0x636,10 + 910: 5f76 lw t5,124(sp) + 912: 69727473 csrrci s0,0x697,4 + 916: 676e flw fa4,216(sp) + 918: 5f5f0073 0x5f5f0073 + 91c: 5f006673 csrrsi a2,0x5f0,0 + 920: 655f6e6f jal t3,f7774 <_start-0x7ff0888c> + 924: 6978 flw fa4,84(a0) + 926: 5f74 lw a3,124(a4) + 928: 7261 lui tp,0xffff8 + 92a: 5f007367 0x5f007367 + 92e: 6b6f6f63 bltu t5,s6,fec <_start-0x7ffff014> + 932: 6569 lui a0,0x1a + 934: 5f00 lw s0,56(a4) + 936: 735f 6c67 6575 0x65756c67735f + 93c: 5f00 lw s0,56(a4) + 93e: 6c66 flw fs8,88(sp) + 940: 6761 lui a4,0x18 + 942: 695f0073 0x695f0073 + 946: 78635f73 csrrwi t5,0x786,6 + 94a: 0061 c.nop 24 + 94c: 775f 7364 5f00 0x5f007364775f + 952: 465f 4c49 0045 0x454c49465f + 958: 725f 7365 6c75 0x6c757365725f + 95e: 5f74 lw a3,124(a4) + 960: 5355006b 0x5355006b + 964: 7449 lui s0,0xffff2 + 966: 7079 c.lui zero,0xffffe + 968: 0065 c.nop 25 + 96a: 6972 flw fs2,28(sp) + 96c: 5f766373 csrrsi t1,0x5f7,12 + 970: 696d lui s2,0x1b + 972: 616f7263 bgeu t5,s6,f76 <_start-0x7ffff08a> + 976: 6372 flw ft6,28(sp) + 978: 6968 flw fa0,84(a0) + 97a: 6574 flw fa3,76(a0) + 97c: 72757463 bgeu a0,t2,10a4 <_start-0x7fffef5c> + 980: 0065 c.nop 25 + 982: 735f 7379 655f 0x655f7379735f + 988: 7272 flw ft4,60(sp) + 98a: 696c flw fa1,84(a0) + 98c: 5f007473 csrrci s0,0x5f0,0 + 990: 62747663 bgeu s0,t2,fbc <_start-0x7ffff044> + 994: 6675 lui a2,0x1d + 996: 5f00 lw s0,56(a4) + 998: 626d lui tp,0x1b + 99a: 6f747273 csrrci tp,0x6f7,8 + 99e: 5f736377 0x5f736377 + 9a2: 74617473 csrrci s0,0x746,2 + 9a6: 0065 c.nop 25 + 9a8: 6d5f 7262 656c 0x656c72626d5f + 9ae: 5f6e lw t5,248(sp) + 9b0: 74617473 csrrci s0,0x746,2 + 9b4: 0065 c.nop 25 + 9b6: 6972 flw fs2,28(sp) + 9b8: 5f766373 csrrsi t1,0x5f7,12 + 9bc: 646f6d63 bltu t5,t1,1016 <_start-0x7fffefea> + 9c0: 6c65 lui s8,0x19 + 9c2: 5f00 lw s0,56(a4) + 9c4: 6e66 flw ft8,88(sp) + 9c6: 7261 lui tp,0xffff8 + 9c8: 5f007367 0x5f007367 + 9cc: 6e66 flw ft8,88(sp) + 9ce: 735f0073 0x735f0073 + 9d2: 6769 lui a4,0x1a + 9d4: 006e c.slli zero,0x1b + 9d6: 735f 6474 7265 0x72656474735f + 9dc: 0072 c.slli zero,0x1c + 9de: 425f 6769 6e69 0x6e696769425f + 9e4: 0074 addi a3,sp,12 + 9e6: 675f 6d61 616d 0x616d6d61675f + 9ec: 735f 6769 676e 0x676e6769735f + 9f2: 6d61 lui s10,0x18 + 9f4: 5f00 lw s0,56(a4) + 9f6: 6d6e flw fs10,216(sp) + 9f8: 6c61 lui s8,0x18 + 9fa: 6f6c flw fa1,92(a4) + 9fc: 5f5f0063 beq t5,s5,fdc <_start-0x7ffff024> + a00: 6d74 flw fa3,92(a0) + a02: 7200 flw fs0,32(a2) + a04: 7369 lui t1,0xffffa + a06: 615f7663 bgeu t5,s5,1012 <_start-0x7fffefee> + a0a: 6962 flw fs2,24(sp) + a0c: 745f 7079 0065 0x657079745f + a12: 6d5f 7362 6174 0x617473626d5f + a18: 6574 flw fa3,76(a0) + a1a: 5f00 lw s0,56(a4) + a1c: 775f 6863 0062 0x626863775f + a22: 635f 7476 656c 0x656c7476635f + a28: 006e c.slli zero,0x1b + a2a: 665f 6c69 0065 0x656c69665f + a30: 6168 flw fa0,68(a0) + a32: 61766873 csrrsi a6,0x617,12 + a36: 5f6c lw a1,124(a4) + a38: 0074 addi a3,sp,12 + a3a: 6e5f 6f69 7362 0x73626f696e5f + a40: 5f00 lw s0,56(a4) + a42: 635f 7a6c 6973 0x69737a6c635f + a48: 0032 c.slli zero,0xc + a4a: 615f 6574 6978 0x69786574615f + a50: 3074 fld fa3,224(s0) + a52: 5f00 lw s0,56(a4) + a54: 6e676973 csrrsi s2,0x6e6,14 + a58: 6c61 lui s8,0x18 + a5a: 625f 6675 5f00 0x5f006675625f + a60: 7361 lui t1,0xffff8 + a62: 6d697463 bgeu s2,s6,112a <_start-0x7fffeed6> + a66: 5f65 li t5,-7 + a68: 7562 flw fa0,56(sp) + a6a: 0066 c.slli zero,0x19 + a6c: 725f 7365 6c75 0x6c757365725f + a72: 0074 addi a3,sp,12 + a74: 5f5f 6377 0068 0x6863775f5f + a7a: 6e65 lui t3,0x19 + a7c: 6976 flw fs2,92(sp) + a7e: 6f72 flw ft10,28(sp) + a80: 006e c.slli zero,0x1b + a82: 746e6977 0x746e6977 + a86: 745f 5f00 6f6c 0x6f6c5f00745f + a8c: 41006b63 bltu zero,a6,ea2 <_start-0x7ffff15e> + a90: 4942 lw s2,16(sp) + a92: 495f 504c 3233 0x3233504c495f + a98: 0044 addi s1,sp,4 + a9a: 4241 li tp,16 + a9c: 5f49 li t5,-14 + a9e: 4c49 li s8,18 + aa0: 3350 fld fa2,160(a4) + aa2: 4532 lw a0,12(sp) + aa4: 5f00 lw s0,56(a4) + aa6: 756d lui a0,0xffffb + aa8: 746c flw fa1,108(s0) + aaa: 7500 flw fs0,40(a0) + aac: 736e flw ft6,248(sp) + aae: 6570 flw fa2,76(a0) + ab0: 74735f63 bge t1,t2,120e <_start-0x7fffedf2> + ab4: 6972 flw fs2,28(sp) + ab6: 676e flw fa4,216(sp) + ab8: 706f0073 0x706f0073 + abc: 7274 flw fa3,100(a2) + abe: 7365 lui t1,0xffff9 + ac0: 7465 lui s0,0xffff9 + ac2: 5f00 lw s0,56(a4) + ac4: 74697277 0x74697277 + ac8: 0065 c.nop 25 + aca: 5f5f 6d74 795f 0x795f6d745f5f + ad0: 6165 addi sp,sp,112 + ad2: 0072 c.slli zero,0x1c + ad4: 4241 li tp,16 + ad6: 5f49 li t5,-14 + ad8: 4c49 li s8,18 + ada: 3350 fld fa2,160(a4) + adc: 4632 lw a2,12(sp) + ade: 5f00 lw s0,56(a4) + ae0: 6e75 lui t3,0x1d + ae2: 7375 lui t1,0xffffd + ae4: 6465 lui s0,0x19 + ae6: 725f 6e61 0064 0x646e61725f + aec: 6972 flw fs2,28(sp) + aee: 5f766373 csrrsi t1,0x5f7,12 + af2: 65646f63 bltu s0,s6,1150 <_start-0x7fffeeb0> + af6: 6d5f 646f 6c65 0x6c65646f6d5f + afc: 5f00 lw s0,56(a4) + afe: 7366666f jal a2,67234 <_start-0x7ff98dcc> + b02: 7465 lui s0,0xffff9 + b04: 6f00 flw fs0,24(a4) + b06: 7470 flw fa2,108(s0) + b08: 6e69 lui t3,0x1a + b0a: 0064 addi s1,sp,12 + b0c: 6e5f 7865 6674 0x667478656e5f + b12: 6300 flw fs0,0(a4) + b14: 6c706d6f jal s10,79da <_start-0x7fff8626> + b18: 7865 lui a6,0xffff9 + b1a: 6620 flw fs0,72(a2) + b1c: 6f6c flw fa1,92(a4) + b1e: 7461 lui s0,0xffff8 + b20: 5f00 lw s0,56(a4) + b22: 745f 5f6d 6f6d 0x6f6d5f6d745f + b28: 006e c.slli zero,0x1b + b2a: 615f 6574 6978 0x69786574615f + b30: 0074 addi a3,sp,12 + b32: 6f627573 csrrci a0,0x6f6,4 + b36: 7470 flw fa2,108(s0) + b38: 7261 lui tp,0xffff8 + b3a: 5f5f0067 jr 1525(t5) # 1b5f5 <_start-0x7ffe4a0b> + b3e: 64696473 csrrsi s0,0x646,18 + b42: 6e69 lui t3,0x1a + b44: 7469 lui s0,0xffffa + b46: 5f00 lw s0,56(a4) + b48: 5f66666f jal a2,6713e <_start-0x7ff98ec2> + b4c: 0074 addi a3,sp,12 + b4e: 665f 6572 6c65 0x6c656572665f + b54: 7369 lui t1,0xffffa + b56: 0074 addi a3,sp,12 + b58: 745f 6d69 7a65 0x7a656d69745f + b5e: 00656e6f jal t3,56b64 <_start-0x7ffa949c> + b62: 6d5f 7362 6174 0x617473626d5f + b68: 6574 flw fa3,76(a0) + b6a: 745f 5f00 4f4c 0x4f4c5f00745f + b70: 525f4b43 fmadd.d fs6,ft10,ft5,fa0,rmm + b74: 4345 li t1,17 + b76: 5255 li tp,-11 + b78: 45564953 0x45564953 + b7c: 545f 5f00 6572 0x65725f00545f + b82: 6461 lui s0,0x18 + b84: 2e00 fld fs0,24(a2) + b86: 2f2e fld ft10,200(sp) + b88: 2e2e fld ft8,200(sp) + b8a: 2f2e2e2f 0x2f2e2e2f + b8e: 2e2e fld ft8,200(sp) + b90: 7369722f 0x7369722f + b94: 672d7663 bgeu s10,s2,1200 <_start-0x7fffee00> + b98: 6c2f6363 bltu t5,sp,125e <_start-0x7fffeda2> + b9c: 6269 lui tp,0x1a + b9e: 2f636367 0x2f636367 + ba2: 696c flw fa1,84(a0) + ba4: 6762 flw fa4,24(sp) + ba6: 2e326363 bltu tp,gp,e8c <_start-0x7ffff174> + baa: 42410063 beq sp,tp,fca <_start-0x7ffff036> + bae: 5f49 li t5,-14 + bb0: 504c lw a1,36(s0) + bb2: 3436 fld fs0,360(sp) + bb4: 4100 lw s0,0(a0) + bb6: 4942 lw s2,16(sp) + bb8: 495f 504c 3233 0x3233504c495f + bbe: 5f00 lw s0,56(a4) + bc0: 7364 flw fs1,100(a4) + bc2: 61685f6f jal t5,861d8 <_start-0x7ff79e28> + bc6: 646e flw fs0,216(sp) + bc8: 656c flw fa1,76(a0) + bca: 4300 lw s0,0(a4) + bcc: 5f4d li t5,-13 + bce: 454d li a0,19 + bd0: 4144 lw s1,4(a0) + bd2: 594e lw s2,240(sp) + bd4: 5f00 lw s0,56(a4) + bd6: 656e flw fa0,216(sp) + bd8: 685f0077 0x685f0077 + bdc: 655f 7272 6f6e 0x6f6e7272655f + be2: 5f00 lw s0,56(a4) + be4: 6c66 flw fs8,88(sp) + be6: 5f6b636f jal t1,b71dc <_start-0x7ff48e24> + bea: 0074 addi a3,sp,12 + bec: 5f5f 6d74 795f 0x795f6d745f5f + bf2: 6164 flw fs1,68(a0) + bf4: 0079 c.nop 30 + bf6: 5f5f 6273 6675 0x667562735f5f + bfc: 5f00 lw s0,56(a4) + bfe: 6c66 flw fs8,88(sp) + c00: 6761 lui a4,0x18 + c02: 5f003273 csrrc tp,0x5f0,zero + c06: 6f69 lui t5,0x1a + c08: 7362 flw ft6,56(sp) + c0a: 4300 lw s0,0(a4) + c0c: 5f4d li t5,-13 + c0e: 454d li a0,19 + c10: 4c44 lw s1,28(s0) + c12: 6800574f fnmadd.s fa4,ft0,ft0,fa3,unknown + c16: 6174 flw fa3,68(a0) + c18: 5f62 lw t5,56(sp) + c1a: 6168 flw fa0,68(a0) + c1c: 5f006873 csrrsi a6,0x5f0,0 + c20: 735f 4946 454c 0x454c4946735f + c26: 5f00 lw s0,56(a4) + c28: 5f737973 csrrci s2,0x5f7,6 + c2c: 656e flw fa0,216(sp) + c2e: 7272 flw ft4,60(sp) + c30: 5f00 lw s0,56(a4) + c32: 6172 flw ft2,28(sp) + c34: 646e flw fs0,216(sp) + c36: 6e5f 7865 0074 0x7478656e5f + c3c: 6d5f 6c62 6e65 0x6e656c626d5f + c42: 735f 6174 6574 0x65746174735f + c48: 5f00 lw s0,56(a4) + c4a: 6e69 lui t3,0x1a + c4c: 695f0063 beq t5,s5,12cc <_start-0x7fffed34> + c50: 646e flw fs0,216(sp) + c52: 5f00 lw s0,56(a4) + c54: 6f6c flw fa1,92(a4) + c56: 656c6163 bltu s8,s6,1298 <_start-0x7fffed68> + c5a: 5f00 lw s0,56(a4) + c5c: 635f 656c 6e61 0x6e61656c635f + c62: 7075 c.lui zero,0xffffd + c64: 5f00 lw s0,56(a4) + c66: 6e75 lui t3,0x1d + c68: 63657073 csrci 0x636,10 + c6c: 6669 lui a2,0x1a + c6e: 6569 lui a0,0x1a + c70: 5f64 lw s1,124(a4) + c72: 6f6c flw fa1,92(a4) + c74: 656c6163 bltu s8,s6,12b6 <_start-0x7fffed4a> + c78: 695f 666e 006f 0x6f666e695f + c7e: 6d5f 7861 6477 0x647778616d5f + c84: 725f0073 0x725f0073 + c88: 6565 lui a0,0x19 + c8a: 746e flw fs0,248(sp) + c8c: 5f00 lw s0,56(a4) + c8e: 64656573 csrrsi a0,0x646,10 + c92: 5f00 lw s0,56(a4) + c94: 635f 756f 746e 0x746e756f635f + c9a: 5f00 lw s0,56(a4) + c9c: 765f 6c61 6575 0x65756c61765f + ca2: 5f00 lw s0,56(a4) + ca4: 6b656573 csrrsi a0,0x6b6,10 + ca8: 5f00 lw s0,56(a4) + caa: 7066 flw ft0,120(sp) + cac: 745f736f jal t1,f8bf0 <_start-0x7ff07410> + cb0: 7300 flw fs0,32(a4) + cb2: 6669 lui a2,0x1a + cb4: 7669 lui a2,0xffffa + cb6: 5f65 li t5,-7 + cb8: 625f0037 lui zero,0x625f0 + cbc: 6b6c flw fa1,84(a4) + cbe: 657a6973 csrrsi s2,0x657,20 + cc2: 6700 flw fs0,8(a4) + cc4: 6e65 lui t3,0x19 + cc6: 7265 lui tp,0xffff9 + cc8: 6369 lui t1,0x1a + cca: 6f00 flw fs0,24(a4) + ccc: 7470 flw fa2,108(s0) + cce: 7265 lui tp,0xffff9 + cd0: 0072 c.slli zero,0x1c + cd2: 735f 7274 6f74 0x6f747274735f + cd8: 616c5f6b 0x616c5f6b + cdc: 43007473 csrrci s0,0x430,0 + ce0: 5f4d li t5,-13 + ce2: 4950 lw a2,20(a0) + ce4: 665f0043 fmadd.q ft0,ft10,ft5,fa2,rne + ce8: 746e flw fs0,248(sp) + cea: 7079 c.lui zero,0xffffe + cec: 7365 lui t1,0xffff9 + cee: 5f00 lw s0,56(a4) + cf0: 6461 lui s0,0x18 + cf2: 0064 addi s1,sp,12 + cf4: 5f5f 4c55 6e6f 0x6e6f4c555f5f + cfa: 74680067 jr 1862(a6) # ffff9746 <__global_pointer$+0x7fff496e> + cfe: 6261 lui tp,0x18 + d00: 655f 5f71 6f70 0x6f705f71655f + d06: 6e69 lui t3,0x1a + d08: 6574 flw fa3,76(a0) + d0a: 0072 c.slli zero,0x1c + d0c: 5f5f 7278 5f00 0x5f0072785f5f + d12: 626f6c67 0x626f6c67 + d16: 6c61 lui s8,0x18 + d18: 695f 706d 7275 0x7275706d695f + d1e: 5f65 li t5,-7 + d20: 7470 flw fa2,108(s0) + d22: 0072 c.slli zero,0x1c + d24: 735f 6474 756f 0x756f6474735f + d2a: 0074 addi a3,sp,12 + d2c: 5f5f 6d74 775f 0x775f6d745f5f + d32: 6164 flw fs1,68(a0) + d34: 0079 c.nop 30 + d36: 675f 756c 0065 0x65756c675f + d3c: 735f 6474 6e69 0x6e696474735f + d42: 5f00 lw s0,56(a4) + d44: 7a697373 csrrci t1,0x7a6,18 + d48: 5f65 li t5,-7 + d4a: 0074 addi a3,sp,12 + d4c: 6c5f 3436 5f61 0x5f6134366c5f + d52: 7562 flw fa0,56(sp) + d54: 0066 c.slli zero,0x19 + d56: 735f 6769 665f 0x665f6769735f + d5c: 6e75 lui t3,0x1d + d5e: 5f5f0063 beq t5,s5,133e <_start-0x7fffecc2> + d62: 6f70 flw fa2,92(a4) + d64: 6370 flw fa2,68(a4) + d66: 746e756f jal a0,e84ac <_start-0x7ff17b54> + d6a: 745f 6261 5f00 0x5f006261745f + d70: 626e flw ft4,216(sp) + d72: 6675 lui a2,0x1d + d74: 5f00 lw s0,56(a4) + d76: 6e75 lui t3,0x1d + d78: 7375 lui t1,0xffffd + d7a: 6465 lui s0,0x19 + d7c: 5f00 lw s0,56(a4) + d7e: 745f 5f6d 7369 0x73695f6d745f + d84: 7364 flw fs1,100(a4) + d86: 0074 addi a3,sp,12 + d88: 6c5f 636f 6c61 0x6c61636f6c5f + d8e: 6974 flw fa3,84(a0) + d90: 656d lui a0,0x1b + d92: 625f 6675 5f00 0x5f006675625f + d98: 745f 5f6d 696d 0x696d5f6d745f + d9e: 006e c.slli zero,0x1b + da0: 725f 3834 4100 0x41003834725f + da6: 4942 lw s2,16(sp) + da8: 4c5f 3650 4434 0x443436504c5f + dae: 6f00 flw fs0,24(a4) + db0: 7470 flw fa2,108(s0) + db2: 0074706f j 485b8 <_start-0x7ffb7a48> + db6: 4241 li tp,16 + db8: 5f49 li t5,-14 + dba: 504c lw a1,36(s0) + dbc: 3436 fld fs0,360(sp) + dbe: 0046 c.slli zero,0x11 + dc0: 6d5f 7462 776f 0x776f74626d5f + dc6: 74735f63 bge t1,t2,1524 <_start-0x7fffeadc> + dca: 7461 lui s0,0xffff8 + dcc: 0065 c.nop 25 + dce: 705f 7335 5f00 0x5f007335705f + dd4: 745f 5f6d 646d 0x646d5f6d745f + dda: 7961 lui s2,0xffff8 + ddc: 6800 flw fs0,16(s0) + dde: 6174 flw fa3,68(a0) + de0: 5f62 lw t5,56(sp) + de2: 7165 addi sp,sp,-400 + ... + +Disassembly of section .debug_loc: + +00000000 <.debug_loc>: + 0: 0000 unimp + 2: 0000 unimp + 4: 0058 addi a4,sp,4 + 6: 0000 unimp + 8: 0006 c.slli zero,0x1 + a: 935a add t1,t1,s6 + c: 5b04 lw s1,48(a4) + e: 00580493 addi s1,a6,5 + 12: 0000 unimp + 14: 07bc addi a5,sp,968 + 16: 0000 unimp + 18: 0006 c.slli zero,0x1 + 1a: 0af503f3 0xaf503f3 + 1e: 9f25 0x9f25 + ... + 2c: 0060 addi s0,sp,12 + 2e: 0000 unimp + 30: 0006 c.slli zero,0x1 + 32: 935c 0x935c + 34: 5d04 lw s1,56(a0) + 36: 00600493 li s1,6 + 3a: 0000 unimp + 3c: 07bc addi a5,sp,968 + 3e: 0000 unimp + 40: 0006 c.slli zero,0x1 + 42: 0cf503f3 0xcf503f3 + 46: 9f25 0x9f25 + ... + 54: 00a4 addi s1,sp,72 + 56: 0000 unimp + 58: 0002 c.slli64 zero + 5a: 9f30 0x9f30 + 5c: 00ac addi a1,sp,72 + 5e: 0000 unimp + 60: 01bc addi a5,sp,200 + 62: 0000 unimp + 64: 0002 c.slli64 zero + 66: 9f30 0x9f30 + 68: 01c8 addi a0,sp,196 + 6a: 0000 unimp + 6c: 02b4 addi a3,sp,328 + 6e: 0000 unimp + 70: 0002 c.slli64 zero + 72: 9f30 0x9f30 + 74: 02fc addi a5,sp,332 + 76: 0000 unimp + 78: 0588 addi a0,sp,704 + 7a: 0000 unimp + 7c: 0002 c.slli64 zero + 7e: 9f30 0x9f30 + 80: 05a8 addi a0,sp,712 + 82: 0000 unimp + 84: 06e8 addi a0,sp,844 + 86: 0000 unimp + 88: 0002 c.slli64 zero + 8a: 9f30 0x9f30 + 8c: 0778 addi a4,sp,908 + 8e: 0000 unimp + 90: 07a0 addi s0,sp,968 + 92: 0000 unimp + 94: 0002 c.slli64 zero + 96: 9f30 0x9f30 + ... + a0: 0038 addi a4,sp,8 + a2: 0000 unimp + a4: 00a4 addi s1,sp,72 + a6: 0000 unimp + a8: 0001 nop + aa: ac59 j 340 <_start-0x7ffffcc0> + ac: 0000 unimp + ae: b400 fsd fs0,40(s0) + b0: 0002 c.slli64 zero + b2: 0100 addi s0,sp,128 + b4: 5900 lw s0,48(a0) + b6: 02dc addi a5,sp,324 + b8: 0000 unimp + ba: 02ec addi a1,sp,332 + bc: 0000 unimp + be: 0001 nop + c0: fc59 bnez s0,5e <_start-0x7fffffa2> + c2: 0002 c.slli64 zero + c4: 5800 lw s0,48(s0) + c6: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + ca: 5900 lw s0,48(a0) + cc: 0360 addi s0,sp,396 + ce: 0000 unimp + d0: 03b0 addi a2,sp,456 + d2: 0000 unimp + d4: 0001 nop + d6: cc59 beqz s0,174 <_start-0x7ffffe8c> + d8: 54000003 lb zero,1344(zero) # 540 <_start-0x7ffffac0> + dc: 0004 0x4 + de: 0100 addi s0,sp,128 + e0: 5900 lw s0,48(a0) + e2: 0458 addi a4,sp,516 + e4: 0000 unimp + e6: 04d0 addi a2,sp,580 + e8: 0000 unimp + ea: 0001 nop + ec: d459 beqz s0,7a <_start-0x7fffff86> + ee: 0004 0x4 + f0: 4000 lw s0,0(s0) + f2: 0005 c.nop 1 + f4: 0100 addi s0,sp,128 + f6: 5900 lw s0,48(a0) + f8: 0544 addi s1,sp,644 + fa: 0000 unimp + fc: 059c addi a5,sp,704 + fe: 0000 unimp + 100: 0001 nop + 102: a059 j 188 <_start-0x7ffffe78> + 104: 0005 c.nop 1 + 106: d400 sw s0,40(s0) + 108: 0005 c.nop 1 + 10a: 0100 addi s0,sp,128 + 10c: 5900 lw s0,48(a0) + 10e: 0644 addi s1,sp,772 + 110: 0000 unimp + 112: 0658 addi a4,sp,772 + 114: 0000 unimp + 116: 0001 nop + 118: c059 beqz s0,19e <_start-0x7ffffe62> + 11a: 0006 c.slli zero,0x1 + 11c: e800 fsw fs0,16(s0) + 11e: 0006 c.slli zero,0x1 + 120: 0100 addi s0,sp,128 + 122: 5900 lw s0,48(a0) + 124: 0778 addi a4,sp,908 + 126: 0000 unimp + 128: 0794 addi a3,sp,960 + 12a: 0000 unimp + 12c: 0001 nop + 12e: 9859 andi s0,s0,-10 + 130: a8000007 0xa8000007 + 134: 01000007 0x1000007 + 138: 5900 lw s0,48(a0) + ... + 142: 0028 addi a0,sp,8 + 144: 0000 unimp + 146: 0098 addi a4,sp,64 + 148: 0000 unimp + 14a: 0001 nop + 14c: 9c58 0x9c58 + 14e: 0000 unimp + 150: a800 fsd fs0,16(s0) + 152: 0000 unimp + 154: 0100 addi s0,sp,128 + 156: 5800 lw s0,48(s0) + 158: 00ac addi a1,sp,72 + 15a: 0000 unimp + 15c: 0108 addi a0,sp,128 + 15e: 0000 unimp + 160: 0001 nop + 162: 4458 lw a4,12(s0) + 164: 0001 nop + 166: 2400 fld fs0,8(s0) + 168: 0002 c.slli64 zero + 16a: 0100 addi s0,sp,128 + 16c: 5800 lw s0,48(s0) + 16e: 0228 addi a0,sp,264 + 170: 0000 unimp + 172: 02b4 addi a3,sp,328 + 174: 0000 unimp + 176: 0001 nop + 178: dc58 sw a4,60(s0) + 17a: 0002 c.slli64 zero + 17c: f800 fsw fs0,48(s0) + 17e: 0002 c.slli64 zero + 180: 0100 addi s0,sp,128 + 182: 5800 lw s0,48(s0) + 184: 02fc addi a5,sp,332 + 186: 0000 unimp + 188: 0328 addi a0,sp,392 + 18a: 0000 unimp + 18c: 0001 nop + 18e: 2c58 fld fa4,152(s0) + 190: 5c000003 lb zero,1472(zero) # 5c0 <_start-0x7ffffa40> + 194: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 198: 5800 lw s0,48(s0) + 19a: 0360 addi s0,sp,396 + 19c: 0000 unimp + 19e: 03b0 addi a2,sp,456 + 1a0: 0000 unimp + 1a2: 0001 nop + 1a4: cc58 sw a4,28(s0) + 1a6: 6c000003 lb zero,1728(zero) # 6c0 <_start-0x7ffff940> + 1aa: 0004 0x4 + 1ac: 0100 addi s0,sp,128 + 1ae: 5800 lw s0,48(s0) + 1b0: 0470 addi a2,sp,524 + 1b2: 0000 unimp + 1b4: 04cc addi a1,sp,580 + 1b6: 0000 unimp + 1b8: 0001 nop + 1ba: d458 sw a4,44(s0) + 1bc: 0004 0x4 + 1be: 3c00 fld fs0,56(s0) + 1c0: 0005 c.nop 1 + 1c2: 0100 addi s0,sp,128 + 1c4: 5800 lw s0,48(s0) + 1c6: 0544 addi s1,sp,644 + 1c8: 0000 unimp + 1ca: 05d4 addi a3,sp,708 + 1cc: 0000 unimp + 1ce: 0001 nop + 1d0: 4458 lw a4,12(s0) + 1d2: 0006 c.slli zero,0x1 + 1d4: 5400 lw s0,40(s0) + 1d6: 0006 c.slli zero,0x1 + 1d8: 0100 addi s0,sp,128 + 1da: 5800 lw s0,48(s0) + 1dc: 06c0 addi s0,sp,836 + 1de: 0000 unimp + 1e0: 06cc addi a1,sp,836 + 1e2: 0000 unimp + 1e4: 0001 nop + 1e6: d058 sw a4,36(s0) + 1e8: 0006 c.slli zero,0x1 + 1ea: e000 fsw fs0,0(s0) + 1ec: 0006 c.slli zero,0x1 + 1ee: 0100 addi s0,sp,128 + 1f0: 5800 lw s0,48(s0) + 1f2: 0778 addi a4,sp,908 + 1f4: 0000 unimp + 1f6: 0784 addi s1,sp,960 + 1f8: 0000 unimp + 1fa: 0001 nop + 1fc: 8858 0x8858 + 1fe: 90000007 0x90000007 + 202: 01000007 0x1000007 + 206: 5800 lw s0,48(s0) + 208: 0798 addi a4,sp,960 + 20a: 0000 unimp + 20c: 07b0 addi a2,sp,968 + 20e: 0000 unimp + 210: 0001 nop + 212: 0058 addi a4,sp,4 + ... + 21c: 0000 unimp + 21e: 8800 0x8800 + 220: 0000 unimp + 222: 0100 addi s0,sp,128 + 224: 5a00 lw s0,48(a2) + 226: 009c addi a5,sp,64 + 228: 0000 unimp + 22a: 00a4 addi s1,sp,72 + 22c: 0000 unimp + 22e: 0001 nop + 230: ac5a fsd fs6,24(sp) + 232: 0000 unimp + 234: 0800 addi s0,sp,16 + 236: 0001 nop + 238: 0100 addi s0,sp,128 + 23a: 5a00 lw s0,48(a2) + 23c: 0144 addi s1,sp,132 + 23e: 0000 unimp + 240: 01a4 addi s1,sp,200 + 242: 0000 unimp + 244: 0001 nop + 246: b45a fsd fs6,40(sp) + 248: 0001 nop + 24a: c400 sw s0,8(s0) + 24c: 0001 nop + 24e: 0100 addi s0,sp,128 + 250: 5a00 lw s0,48(a2) + 252: 01c8 addi a0,sp,196 + 254: 0000 unimp + 256: 0200 addi s0,sp,256 + 258: 0000 unimp + 25a: 0001 nop + 25c: 0c5a slli s8,s8,0x16 + 25e: 0002 c.slli64 zero + 260: 1400 addi s0,sp,544 + 262: 0002 c.slli64 zero + 264: 0100 addi s0,sp,128 + 266: 5a00 lw s0,48(a2) + 268: 0228 addi a0,sp,264 + 26a: 0000 unimp + 26c: 024c addi a1,sp,260 + 26e: 0000 unimp + 270: 0001 nop + 272: 5c5a lw s8,180(sp) + 274: 0002 c.slli64 zero + 276: 6000 flw fs0,0(s0) + 278: 0002 c.slli64 zero + 27a: 0100 addi s0,sp,128 + 27c: 5a00 lw s0,48(a2) + 27e: 0268 addi a0,sp,268 + 280: 0000 unimp + 282: 0294 addi a3,sp,320 + 284: 0000 unimp + 286: 0001 nop + 288: dc5a sw s6,56(sp) + 28a: 0002 c.slli64 zero + 28c: f400 fsw fs0,40(s0) + 28e: 0002 c.slli64 zero + 290: 0100 addi s0,sp,128 + 292: 5a00 lw s0,48(a2) + 294: 02fc addi a5,sp,332 + 296: 0000 unimp + 298: 0318 addi a4,sp,384 + 29a: 0000 unimp + 29c: 0001 nop + 29e: 2c5a fld fs8,400(sp) + 2a0: 4c000003 lb zero,1216(zero) # 4c0 <_start-0x7ffffb40> + 2a4: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2a8: 5a00 lw s0,48(a2) + 2aa: 0360 addi s0,sp,396 + 2ac: 0000 unimp + 2ae: 03b0 addi a2,sp,456 + 2b0: 0000 unimp + 2b2: 0001 nop + 2b4: cc5a sw s6,24(sp) + 2b6: 44000003 lb zero,1088(zero) # 440 <_start-0x7ffffbc0> + 2ba: 0004 0x4 + 2bc: 0100 addi s0,sp,128 + 2be: 5a00 lw s0,48(a2) + 2c0: 0458 addi a4,sp,516 + 2c2: 0000 unimp + 2c4: 0468 addi a0,sp,524 + 2c6: 0000 unimp + 2c8: 0001 nop + 2ca: 705a flw ft0,180(sp) + 2cc: 0004 0x4 + 2ce: a800 fsd fs0,16(s0) + 2d0: 0004 0x4 + 2d2: 0100 addi s0,sp,128 + 2d4: 5a00 lw s0,48(a2) + 2d6: 04b4 addi a3,sp,584 + 2d8: 0000 unimp + 2da: 04bc addi a5,sp,584 + 2dc: 0000 unimp + 2de: 0001 nop + 2e0: d45a sw s6,40(sp) + 2e2: 0004 0x4 + 2e4: f800 fsw fs0,48(s0) + 2e6: 0004 0x4 + 2e8: 0100 addi s0,sp,128 + 2ea: 5a00 lw s0,48(a2) + 2ec: 0508 addi a0,sp,640 + 2ee: 0000 unimp + 2f0: 050c addi a1,sp,640 + 2f2: 0000 unimp + 2f4: 0001 nop + 2f6: 145a slli s0,s0,0x36 + 2f8: 0005 c.nop 1 + 2fa: 3c00 fld fs0,56(s0) + 2fc: 0005 c.nop 1 + 2fe: 0100 addi s0,sp,128 + 300: 5a00 lw s0,48(a2) + 302: 0544 addi s1,sp,644 + 304: 0000 unimp + 306: 0564 addi s1,sp,652 + 308: 0000 unimp + 30a: 0001 nop + 30c: 745a flw fs0,180(sp) + 30e: 0005 c.nop 1 + 310: 7800 flw fs0,48(s0) + 312: 0005 c.nop 1 + 314: 0100 addi s0,sp,128 + 316: 5a00 lw s0,48(a2) + 318: 0588 addi a0,sp,704 + 31a: 0000 unimp + 31c: 0598 addi a4,sp,704 + 31e: 0000 unimp + 320: 0001 nop + 322: a05a fsd fs6,0(sp) + 324: 0005 c.nop 1 + 326: d400 sw s0,40(s0) + 328: 0005 c.nop 1 + 32a: 0100 addi s0,sp,128 + 32c: 5a00 lw s0,48(a2) + 32e: 0644 addi s1,sp,772 + 330: 0000 unimp + 332: 0648 addi a0,sp,772 + 334: 0000 unimp + 336: 0001 nop + 338: c05a sw s6,0(sp) + 33a: 0006 c.slli zero,0x1 + 33c: c800 sw s0,16(s0) + 33e: 0006 c.slli zero,0x1 + 340: 0100 addi s0,sp,128 + 342: 5a00 lw s0,48(a2) + 344: 06d0 addi a2,sp,836 + 346: 0000 unimp + 348: 06d8 addi a4,sp,836 + 34a: 0000 unimp + 34c: 0001 nop + 34e: dc5a sw s6,56(sp) + 350: 0006 c.slli zero,0x1 + 352: e000 fsw fs0,0(s0) + 354: 0006 c.slli zero,0x1 + 356: 0100 addi s0,sp,128 + 358: 5a00 lw s0,48(a2) + 35a: 0778 addi a4,sp,908 + 35c: 0000 unimp + 35e: 0780 addi s0,sp,960 + 360: 0000 unimp + 362: 0001 nop + 364: 885a mv a6,s6 + 366: 90000007 0x90000007 + 36a: 01000007 0x1000007 + 36e: 5a00 lw s0,48(a2) + 370: 07a0 addi s0,sp,968 + 372: 0000 unimp + 374: 07a4 addi s1,sp,968 + 376: 0000 unimp + 378: 0001 nop + 37a: 005a c.slli zero,0x16 + 37c: 0000 unimp + 37e: 0000 unimp + 380: 0000 unimp + 382: 1000 addi s0,sp,32 + 384: 0000 unimp + 386: 2400 fld fs0,8(s0) + 388: 0000 unimp + 38a: 0100 addi s0,sp,128 + 38c: 5f00 lw s0,56(a4) + 38e: 0024 addi s1,sp,8 + 390: 0000 unimp + 392: 0038 addi a4,sp,8 + 394: 0000 unimp + 396: 0009 c.nop 2 + 398: ff0c007b 0xff0c007b + 39c: 0fff 0xfff + 39e: 1a00 addi s0,sp,304 + 3a0: 389f 0000 8c00 0x8c000000389f + 3a6: 0000 unimp + 3a8: 0100 addi s0,sp,128 + 3aa: 5f00 lw s0,56(a4) + 3ac: 009c addi a5,sp,64 + 3ae: 0000 unimp + 3b0: 00a4 addi s1,sp,72 + 3b2: 0000 unimp + 3b4: 0001 nop + 3b6: ac5f 0000 0000 0xac5f + 3bc: 0001 nop + 3be: 0100 addi s0,sp,128 + 3c0: 5f00 lw s0,56(a4) + 3c2: 0144 addi s1,sp,132 + 3c4: 0000 unimp + 3c6: 01a8 addi a0,sp,200 + 3c8: 0000 unimp + 3ca: 0001 nop + 3cc: b45f 0001 c000 0xc0000001b45f + 3d2: 0001 nop + 3d4: 0100 addi s0,sp,128 + 3d6: 5f00 lw s0,56(a4) + 3d8: 01c8 addi a0,sp,196 + 3da: 0000 unimp + 3dc: 0210 addi a2,sp,256 + 3de: 0000 unimp + 3e0: 0001 nop + 3e2: 105f 0002 2800 0x28000002105f + 3e8: 0002 c.slli64 zero + 3ea: 0100 addi s0,sp,128 + 3ec: 5d00 lw s0,56(a0) + 3ee: 0228 addi a0,sp,264 + 3f0: 0000 unimp + 3f2: 0254 addi a3,sp,260 + 3f4: 0000 unimp + 3f6: 0001 nop + 3f8: 5c5f 0002 9000 0x900000025c5f + 3fe: 0002 c.slli64 zero + 400: 0100 addi s0,sp,128 + 402: 5f00 lw s0,56(a4) + 404: 02dc addi a5,sp,324 + 406: 0000 unimp + 408: 02f0 addi a2,sp,332 + 40a: 0000 unimp + 40c: 0001 nop + 40e: fc5f 0002 1000 0x10000002fc5f + 414: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 418: 5f00 lw s0,56(a4) + 41a: 032c addi a1,sp,392 + 41c: 0000 unimp + 41e: 0350 addi a2,sp,388 + 420: 0000 unimp + 422: 0001 nop + 424: 605f 0003 a800 0xa8000003605f + 42a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 42e: 5f00 lw s0,56(a4) + 430: 03cc addi a1,sp,452 + 432: 0000 unimp + 434: 0448 addi a0,sp,516 + 436: 0000 unimp + 438: 0001 nop + 43a: 585f 0004 6400 0x64000004585f + 440: 0004 0x4 + 442: 0100 addi s0,sp,128 + 444: 5f00 lw s0,56(a4) + 446: 0470 addi a2,sp,524 + 448: 0000 unimp + 44a: 04b8 addi a4,sp,584 + 44c: 0000 unimp + 44e: 0001 nop + 450: b85f 0004 d400 0xd4000004b85f + 456: 0004 0x4 + 458: 0100 addi s0,sp,128 + 45a: 5d00 lw s0,56(a0) + 45c: 04d4 addi a3,sp,580 + 45e: 0000 unimp + 460: 0500 addi s0,sp,640 + 462: 0000 unimp + 464: 0001 nop + 466: 085f 0005 3800 0x38000005085f + 46c: 0005 c.nop 1 + 46e: 0100 addi s0,sp,128 + 470: 5f00 lw s0,56(a4) + 472: 0544 addi s1,sp,644 + 474: 0000 unimp + 476: 0568 addi a0,sp,652 + 478: 0000 unimp + 47a: 0001 nop + 47c: 745f 0005 8000 0x80000005745f + 482: 0005 c.nop 1 + 484: 0100 addi s0,sp,128 + 486: 5f00 lw s0,56(a4) + 488: 0588 addi a0,sp,704 + 48a: 0000 unimp + 48c: 0594 addi a3,sp,704 + 48e: 0000 unimp + 490: 0001 nop + 492: a05f 0005 c800 0xc8000005a05f + 498: 0005 c.nop 1 + 49a: 0100 addi s0,sp,128 + 49c: 5f00 lw s0,56(a4) + 49e: 0644 addi s1,sp,772 + 4a0: 0000 unimp + 4a2: 0650 addi a2,sp,772 + 4a4: 0000 unimp + 4a6: 0001 nop + 4a8: c05f 0006 c400 0xc4000006c05f + 4ae: 0006 c.slli zero,0x1 + 4b0: 0100 addi s0,sp,128 + 4b2: 5f00 lw s0,56(a4) + 4b4: 06d0 addi a2,sp,836 + 4b6: 0000 unimp + 4b8: 06d4 addi a3,sp,836 + 4ba: 0000 unimp + 4bc: 0001 nop + 4be: dc5f 0006 e000 0xe0000006dc5f + 4c4: 0006 c.slli zero,0x1 + 4c6: 0100 addi s0,sp,128 + 4c8: 5f00 lw s0,56(a4) + 4ca: 0778 addi a4,sp,908 + 4cc: 0000 unimp + 4ce: 077c addi a5,sp,908 + 4d0: 0000 unimp + 4d2: 0001 nop + 4d4: 885f 0007 8c00 0x8c000007885f + 4da: 01000007 0x1000007 + 4de: 5f00 lw s0,56(a4) + 4e0: 0798 addi a4,sp,960 + 4e2: 0000 unimp + 4e4: 079c addi a5,sp,960 + 4e6: 0000 unimp + 4e8: 0001 nop + 4ea: a05f 0007 ac00 0xac000007a05f + 4f0: 01000007 0x1000007 + 4f4: 5f00 lw s0,56(a4) + ... + 4fe: 0058 addi a4,sp,4 + 500: 0000 unimp + 502: 0074 addi a3,sp,12 + 504: 0000 unimp + 506: 0001 nop + 508: 0000ac5b 0xac5b + 50c: b000 fsd fs0,32(s0) + 50e: 0000 unimp + 510: 0100 addi s0,sp,128 + 512: 5b00 lw s0,48(a4) + 514: 0184 addi s1,sp,192 + 516: 0000 unimp + 518: 018c addi a1,sp,192 + 51a: 0000 unimp + 51c: 0001 nop + 51e: 0002685b 0x2685b + 522: 7000 flw fs0,32(s0) + 524: 0002 c.slli64 zero + 526: 0100 addi s0,sp,128 + 528: 5b00 lw s0,48(a4) + 52a: 032c addi a1,sp,392 + 52c: 0000 unimp + 52e: 0338 addi a4,sp,392 + 530: 0000 unimp + 532: 0001 nop + 534: 0003cc5b 0x3cc5b + 538: d000 sw s0,32(s0) + 53a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 53e: 5b00 lw s0,48(a4) + 540: 0424 addi s1,sp,520 + 542: 0000 unimp + 544: 05d4 addi a3,sp,708 + 546: 0000 unimp + 548: 0001 nop + 54a: 0006445b 0x6445b + 54e: 5800 lw s0,48(s0) + 550: 0006 c.slli zero,0x1 + 552: 0100 addi s0,sp,128 + 554: 5b00 lw s0,48(a4) + 556: 0778 addi a4,sp,908 + 558: 0000 unimp + 55a: 07b0 addi a2,sp,968 + 55c: 0000 unimp + 55e: 0001 nop + 560: 0000005b 0x5b + 564: 0000 unimp + 566: 0000 unimp + 568: 5800 lw s0,48(s0) + 56a: 0000 unimp + 56c: e000 fsw fs0,0(s0) + 56e: 0000 unimp + 570: 0100 addi s0,sp,128 + 572: 6100 flw fs0,0(a0) + 574: 0144 addi s1,sp,132 + 576: 0000 unimp + 578: 014c addi a1,sp,132 + 57a: 0000 unimp + 57c: 0001 nop + 57e: 7861 lui a6,0xffff8 + 580: 0001 nop + 582: b400 fsd fs0,40(s0) + 584: 0002 c.slli64 zero + 586: 0100 addi s0,sp,128 + 588: 6100 flw fs0,0(a0) + 58a: 02dc addi a5,sp,324 + 58c: 0000 unimp + 58e: 0388 addi a0,sp,448 + 590: 0000 unimp + 592: 0001 nop + 594: cc61 beqz s0,66c <_start-0x7ffff994> + 596: ec000003 lb zero,-320(zero) # fffffec0 <__global_pointer$+0x7fffb0e8> + 59a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 59e: 6100 flw fs0,0(a0) + 5a0: 0418 addi a4,sp,512 + 5a2: 0000 unimp + 5a4: 053c addi a5,sp,648 + 5a6: 0000 unimp + 5a8: 0001 nop + 5aa: 4461 li s0,24 + 5ac: 0005 c.nop 1 + 5ae: 5000 lw s0,32(s0) + 5b0: 0005 c.nop 1 + 5b2: 0100 addi s0,sp,128 + 5b4: 6100 flw fs0,0(a0) + 5b6: 0588 addi a0,sp,704 + 5b8: 0000 unimp + 5ba: 05d4 addi a3,sp,708 + 5bc: 0000 unimp + 5be: 0001 nop + 5c0: 4461 li s0,24 + 5c2: 0006 c.slli zero,0x1 + 5c4: 5800 lw s0,48(s0) + 5c6: 0006 c.slli zero,0x1 + 5c8: 0100 addi s0,sp,128 + 5ca: 6100 flw fs0,0(a0) + 5cc: 06c0 addi s0,sp,836 + 5ce: 0000 unimp + 5d0: 06e0 addi s0,sp,844 + 5d2: 0000 unimp + 5d4: 0001 nop + 5d6: 7861 lui a6,0xffff8 + 5d8: 90000007 0x90000007 + 5dc: 01000007 0x1000007 + 5e0: 6100 flw fs0,0(a0) + 5e2: 07a0 addi s0,sp,968 + 5e4: 0000 unimp + 5e6: 07b0 addi a2,sp,968 + 5e8: 0000 unimp + 5ea: 0001 nop + 5ec: 0061 c.nop 24 + 5ee: 0000 unimp + 5f0: 0000 unimp + 5f2: 0000 unimp + 5f4: 5800 lw s0,48(s0) + 5f6: 0000 unimp + 5f8: 8400 0x8400 + 5fa: 0000 unimp + 5fc: 0100 addi s0,sp,128 + 5fe: 5c00 lw s0,56(s0) + 600: 009c addi a5,sp,64 + 602: 0000 unimp + 604: 00a4 addi s1,sp,72 + 606: 0000 unimp + 608: 0001 nop + 60a: ac5c fsd fa5,152(s0) + 60c: 0000 unimp + 60e: e400 fsw fs0,8(s0) + 610: 0000 unimp + 612: 0100 addi s0,sp,128 + 614: 5c00 lw s0,56(s0) + 616: 00f0 addi a2,sp,76 + 618: 0000 unimp + 61a: 00f8 addi a4,sp,76 + 61c: 0000 unimp + 61e: 0001 nop + 620: 445c lw a5,12(s0) + 622: 0001 nop + 624: 6800 flw fs0,16(s0) + 626: 0001 nop + 628: 0100 addi s0,sp,128 + 62a: 5c00 lw s0,56(s0) + 62c: 0178 addi a4,sp,140 + 62e: 0000 unimp + 630: 017c addi a5,sp,140 + 632: 0000 unimp + 634: 0001 nop + 636: 845c 0x845c + 638: 0001 nop + 63a: ac00 fsd fs0,24(s0) + 63c: 0001 nop + 63e: 0100 addi s0,sp,128 + 640: 5c00 lw s0,56(s0) + 642: 01b4 addi a3,sp,200 + 644: 0000 unimp + 646: 021c addi a5,sp,256 + 648: 0000 unimp + 64a: 0001 nop + 64c: 285c fld fa5,144(s0) + 64e: 0002 c.slli64 zero + 650: 8c00 0x8c00 + 652: 0002 c.slli64 zero + 654: 0100 addi s0,sp,128 + 656: 5c00 lw s0,56(s0) + 658: 02dc addi a5,sp,324 + 65a: 0000 unimp + 65c: 02e4 addi s1,sp,332 + 65e: 0000 unimp + 660: 0001 nop + 662: fc5c fsw fa5,60(s0) + 664: 0002 c.slli64 zero + 666: 0800 addi s0,sp,16 + 668: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 66c: 5c00 lw s0,56(s0) + 66e: 032c addi a1,sp,392 + 670: 0000 unimp + 672: 0348 addi a0,sp,388 + 674: 0000 unimp + 676: 0001 nop + 678: 605c flw fa5,4(s0) + 67a: 8c000003 lb zero,-1856(zero) # fffff8c0 <__global_pointer$+0x7fffaae8> + 67e: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 682: 5c00 lw s0,56(s0) + 684: 0398 addi a4,sp,448 + 686: 0000 unimp + 688: 03a0 addi s0,sp,456 + 68a: 0000 unimp + 68c: 0001 nop + 68e: cc5c sw a5,28(s0) + 690: 08000003 lb zero,128(zero) # 80 <_start-0x7fffff80> + 694: 0004 0x4 + 696: 0100 addi s0,sp,128 + 698: 5c00 lw s0,56(s0) + 69a: 0418 addi a4,sp,512 + 69c: 0000 unimp + 69e: 041c addi a5,sp,512 + 6a0: 0000 unimp + 6a2: 0001 nop + 6a4: 245c fld fa5,136(s0) + 6a6: 0004 0x4 + 6a8: 4c00 lw s0,24(s0) + 6aa: 0004 0x4 + 6ac: 0100 addi s0,sp,128 + 6ae: 5c00 lw s0,56(s0) + 6b0: 0458 addi a4,sp,516 + 6b2: 0000 unimp + 6b4: 04c4 addi s1,sp,580 + 6b6: 0000 unimp + 6b8: 0001 nop + 6ba: d45c sw a5,44(s0) + 6bc: 0004 0x4 + 6be: 3c00 fld fs0,56(s0) + 6c0: 0005 c.nop 1 + 6c2: 0100 addi s0,sp,128 + 6c4: 5c00 lw s0,56(s0) + 6c6: 0544 addi s1,sp,644 + 6c8: 0000 unimp + 6ca: 056c addi a1,sp,652 + 6cc: 0000 unimp + 6ce: 0001 nop + 6d0: 745c flw fa5,44(s0) + 6d2: 0005 c.nop 1 + 6d4: cc00 sw s0,24(s0) + 6d6: 0005 c.nop 1 + 6d8: 0100 addi s0,sp,128 + 6da: 5c00 lw s0,56(s0) + 6dc: 0644 addi s1,sp,772 + 6de: 0000 unimp + 6e0: 0658 addi a4,sp,772 + 6e2: 0000 unimp + 6e4: 0001 nop + 6e6: c05c sw a5,4(s0) + 6e8: 0006 c.slli zero,0x1 + 6ea: e000 fsw fs0,0(s0) + 6ec: 0006 c.slli zero,0x1 + 6ee: 0100 addi s0,sp,128 + 6f0: 5c00 lw s0,56(s0) + 6f2: 0778 addi a4,sp,908 + 6f4: 0000 unimp + 6f6: 07b0 addi a2,sp,968 + 6f8: 0000 unimp + 6fa: 0001 nop + 6fc: 005c addi a5,sp,4 + 6fe: 0000 unimp + 700: 0000 unimp + 702: 0000 unimp + 704: 5c00 lw s0,56(s0) + 706: 0000 unimp + 708: fc00 fsw fs0,56(s0) + 70a: 0000 unimp + 70c: 0100 addi s0,sp,128 + 70e: 5e00 lw s0,56(a2) + 710: 0144 addi s1,sp,132 + 712: 0000 unimp + 714: 0170 addi a2,sp,140 + 716: 0000 unimp + 718: 0001 nop + 71a: 785e flw fa6,244(sp) + 71c: 0001 nop + 71e: 9c00 0x9c00 + 720: 0002 c.slli64 zero + 722: 0100 addi s0,sp,128 + 724: 5e00 lw s0,56(a2) + 726: 02dc addi a5,sp,324 + 728: 0000 unimp + 72a: 030c addi a1,sp,384 + 72c: 0000 unimp + 72e: 0001 nop + 730: 2c5e fld fs8,464(sp) + 732: a4000003 lb zero,-1472(zero) # fffffa40 <__global_pointer$+0x7fffac68> + 736: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 73a: 5e00 lw s0,56(a2) + 73c: 03cc addi a1,sp,452 + 73e: 0000 unimp + 740: 0410 addi a2,sp,512 + 742: 0000 unimp + 744: 0001 nop + 746: 185e slli a6,a6,0x37 + 748: 0004 0x4 + 74a: d400 sw s0,40(s0) + 74c: 0005 c.nop 1 + 74e: 0100 addi s0,sp,128 + 750: 5e00 lw s0,56(a2) + 752: 0644 addi s1,sp,772 + 754: 0000 unimp + 756: 0658 addi a4,sp,772 + 758: 0000 unimp + 75a: 0001 nop + 75c: c05e sw s7,0(sp) + 75e: 0006 c.slli zero,0x1 + 760: e000 fsw fs0,0(s0) + 762: 0006 c.slli zero,0x1 + 764: 0100 addi s0,sp,128 + 766: 5e00 lw s0,56(a2) + 768: 0778 addi a4,sp,908 + 76a: 0000 unimp + 76c: 07b0 addi a2,sp,968 + 76e: 0000 unimp + 770: 0001 nop + 772: 005e c.slli zero,0x17 + 774: 0000 unimp + 776: 0000 unimp + 778: 0000 unimp + 77a: 6800 flw fs0,16(s0) + 77c: 0000 unimp + 77e: a400 fsd fs0,8(s0) + 780: 0000 unimp + 782: 0100 addi s0,sp,128 + 784: 5900 lw s0,48(a0) + 786: 00ac addi a1,sp,72 + 788: 0000 unimp + 78a: 02e8 addi a0,sp,332 + 78c: 0000 unimp + 78e: 0001 nop + 790: fc59 bnez s0,72e <_start-0x7ffff8d2> + 792: 0002 c.slli64 zero + 794: 2c00 fld fs0,24(s0) + 796: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 79a: 5900 lw s0,48(a0) + 79c: 0330 addi a2,sp,392 + 79e: 0000 unimp + 7a0: 0424 addi s1,sp,520 + 7a2: 0000 unimp + 7a4: 0001 nop + 7a6: 2c59 jal a3c <_start-0x7ffff5c4> + 7a8: 0004 0x4 + 7aa: 1400 addi s0,sp,544 + 7ac: 0005 c.nop 1 + 7ae: 0100 addi s0,sp,128 + 7b0: 5b00 lw s0,48(a4) + 7b2: 0558 addi a4,sp,644 + 7b4: 0000 unimp + 7b6: 0570 addi a2,sp,652 + 7b8: 0000 unimp + 7ba: 0001 nop + 7bc: 7059 c.lui zero,0xffff6 + 7be: 0005 c.nop 1 + 7c0: 7400 flw fs0,40(s0) + 7c2: 0005 c.nop 1 + 7c4: 0100 addi s0,sp,128 + 7c6: 5b00 lw s0,48(a4) + 7c8: 0574 addi a3,sp,652 + 7ca: 0000 unimp + 7cc: 0588 addi a0,sp,704 + 7ce: 0000 unimp + 7d0: 0001 nop + 7d2: b859 j 68 <_start-0x7fffff98> + 7d4: 0005 c.nop 1 + 7d6: d000 sw s0,32(s0) + 7d8: 0005 c.nop 1 + 7da: 0100 addi s0,sp,128 + 7dc: 5900 lw s0,48(a0) + 7de: 05d0 addi a2,sp,708 + 7e0: 0000 unimp + 7e2: 05d4 addi a3,sp,708 + 7e4: 0000 unimp + 7e6: 0001 nop + 7e8: 0005d45b 0x5d45b + 7ec: e800 fsw fs0,16(s0) + 7ee: 0006 c.slli zero,0x1 + 7f0: 0100 addi s0,sp,128 + 7f2: 5900 lw s0,48(a0) + 7f4: 0738 addi a4,sp,904 + 7f6: 0000 unimp + 7f8: 0758 addi a4,sp,900 + 7fa: 0000 unimp + 7fc: 0001 nop + 7fe: 7859 lui a6,0xffff6 + 800: 88000007 0x88000007 + 804: 01000007 0x1000007 + 808: 5b00 lw s0,48(a4) + 80a: 0798 addi a4,sp,960 + 80c: 0000 unimp + 80e: 07a0 addi s0,sp,968 + 810: 0000 unimp + 812: 0001 nop + 814: 0059 c.nop 22 + 816: 0000 unimp + 818: 0000 unimp + 81a: 0000 unimp + 81c: 6c00 flw fs0,24(s0) + 81e: 0000 unimp + 820: 9400 0x9400 + 822: 0000 unimp + 824: 0100 addi s0,sp,128 + 826: 5800 lw s0,48(s0) + 828: 009c addi a5,sp,64 + 82a: 0000 unimp + 82c: 00a4 addi s1,sp,72 + 82e: 0000 unimp + 830: 0001 nop + 832: ac58 fsd fa4,152(s0) + 834: 0000 unimp + 836: 8400 0x8400 + 838: 0001 nop + 83a: 0100 addi s0,sp,128 + 83c: 5800 lw s0,48(s0) + 83e: 018c addi a1,sp,192 + 840: 0000 unimp + 842: 01bc addi a5,sp,200 + 844: 0000 unimp + 846: 0001 nop + 848: c861 beqz s0,918 <_start-0x7ffff6e8> + 84a: 0001 nop + 84c: 6800 flw fs0,16(s0) + 84e: 0002 c.slli64 zero + 850: 0100 addi s0,sp,128 + 852: 6100 flw fs0,0(a0) + 854: 027c addi a5,sp,268 + 856: 0000 unimp + 858: 02b0 addi a2,sp,328 + 85a: 0000 unimp + 85c: 0002 c.slli64 zero + 85e: 9f30 0x9f30 + 860: 02b0 addi a2,sp,328 + 862: 0000 unimp + 864: 02b4 addi a3,sp,328 + 866: 0000 unimp + 868: 0002 c.slli64 zero + 86a: 9f31 0x9f31 + 86c: 02b4 addi a3,sp,328 + 86e: 0000 unimp + 870: 02dc addi a5,sp,324 + 872: 0000 unimp + 874: 0001 nop + 876: dc58 sw a4,60(s0) + 878: 0002 c.slli64 zero + 87a: fc00 fsw fs0,56(s0) + 87c: 0002 c.slli64 zero + 87e: 0400 addi s0,sp,512 + 880: 0a00 addi s0,sp,272 + 882: 07ff 0x7ff + 884: fc9f 0002 2400 0x24000002fc9f + 88a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 88e: 5d00 lw s0,56(a0) + 890: 0330 addi a2,sp,392 + 892: 0000 unimp + 894: 0358 addi a4,sp,388 + 896: 0000 unimp + 898: 0001 nop + 89a: 6058 flw fa4,4(s0) + 89c: 24000003 lb zero,576(zero) # 240 <_start-0x7ffffdc0> + 8a0: 0004 0x4 + 8a2: 0100 addi s0,sp,128 + 8a4: 5800 lw s0,48(s0) + 8a6: 042c addi a1,sp,520 + 8a8: 0000 unimp + 8aa: 0514 addi a3,sp,640 + 8ac: 0000 unimp + 8ae: 0001 nop + 8b0: 2c61 jal b48 <_start-0x7ffff4b8> + 8b2: 0005 c.nop 1 + 8b4: 3c00 fld fs0,56(s0) + 8b6: 0005 c.nop 1 + 8b8: 0200 addi s0,sp,256 + 8ba: 3000 fld fs0,32(s0) + 8bc: 449f 0005 8800 0x88000005449f + 8c2: 0005 c.nop 1 + 8c4: 0200 addi s0,sp,256 + 8c6: 3000 fld fs0,32(s0) + 8c8: 889f 0005 a800 0xa8000005889f + 8ce: 0005 c.nop 1 + 8d0: 0400 addi s0,sp,512 + 8d2: 0a00 addi s0,sp,272 + 8d4: 07ff 0x7ff + 8d6: a89f 0005 4000 0x40000005a89f + 8dc: 0006 c.slli zero,0x1 + 8de: 0100 addi s0,sp,128 + 8e0: 5800 lw s0,48(s0) + 8e2: 0644 addi s1,sp,772 + 8e4: 0000 unimp + 8e6: 0654 addi a3,sp,772 + 8e8: 0000 unimp + 8ea: 0001 nop + 8ec: 5858 lw a4,52(s0) + 8ee: 0006 c.slli zero,0x1 + 8f0: c000 sw s0,0(s0) + 8f2: 0006 c.slli zero,0x1 + 8f4: 0100 addi s0,sp,128 + 8f6: 5800 lw s0,48(s0) + 8f8: 06c0 addi s0,sp,836 + 8fa: 0000 unimp + 8fc: 06d0 addi a2,sp,836 + 8fe: 0000 unimp + 900: 0001 nop + 902: d061 beqz s0,8c2 <_start-0x7ffff73e> + 904: 0006 c.slli zero,0x1 + 906: dc00 sw s0,56(s0) + 908: 0006 c.slli zero,0x1 + 90a: 0200 addi s0,sp,256 + 90c: 3000 fld fs0,32(s0) + 90e: dc9f 0006 e000 0xe0000006dc9f + 914: 0006 c.slli zero,0x1 + 916: 0100 addi s0,sp,128 + 918: 5d00 lw s0,56(a0) + 91a: 06f4 addi a3,sp,844 + 91c: 0000 unimp + 91e: 0720 addi s0,sp,904 + 920: 0000 unimp + 922: 0001 nop + 924: 2058 fld fa4,128(s0) + 926: 38000007 0x38000007 + 92a: 04000007 0x4000007 + 92e: 0a00 addi s0,sp,272 + 930: 07ff 0x7ff + 932: 789f 0007 8800 0x88000007789f + 938: 01000007 0x1000007 + 93c: 6100 flw fs0,0(a0) + 93e: 0788 addi a0,sp,960 + 940: 0000 unimp + 942: 0790 addi a2,sp,960 + 944: 0000 unimp + 946: 0002 c.slli64 zero + 948: 9f30 0x9f30 + 94a: 0798 addi a4,sp,960 + 94c: 0000 unimp + 94e: 07a0 addi s0,sp,968 + 950: 0000 unimp + 952: 0002 c.slli64 zero + 954: 9f30 0x9f30 + 956: 07a0 addi s0,sp,968 + 958: 0000 unimp + 95a: 07b0 addi a2,sp,968 + 95c: 0000 unimp + 95e: 0004 0x4 + 960: ff0a fsw ft2,188(sp) + 962: 07b09f07 0x7b09f07 + 966: 0000 unimp + 968: 07bc addi a5,sp,968 + 96a: 0000 unimp + 96c: 0001 nop + 96e: 0058 addi a4,sp,4 + 970: 0000 unimp + 972: 0000 unimp + 974: 0000 unimp + 976: 9000 0x9000 + 978: 0000 unimp + 97a: 9400 0x9400 + 97c: 0000 unimp + 97e: 0100 addi s0,sp,128 + 980: 5c00 lw s0,56(s0) + 982: 0094 addi a3,sp,64 + 984: 0000 unimp + 986: 009c addi a5,sp,64 + 988: 0000 unimp + 98a: 0001 nop + 98c: 045a slli s0,s0,0x16 + 98e: 0001 nop + 990: 0800 addi s0,sp,16 + 992: 0001 nop + 994: 0100 addi s0,sp,128 + 996: 5c00 lw s0,56(s0) + 998: 0108 addi a0,sp,128 + 99a: 0000 unimp + 99c: 0114 addi a3,sp,128 + 99e: 0000 unimp + 9a0: 0001 nop + 9a2: 145a slli s0,s0,0x36 + 9a4: 0001 nop + 9a6: 2c00 fld fs0,24(s0) + 9a8: 0001 nop + 9aa: 1500 addi s0,sp,672 + 9ac: 7a00 flw fs0,48(a2) + 9ae: 3100 fld fs0,32(a0) + 9b0: 7a1a flw fs4,164(sp) + 9b2: 3100 fld fs0,32(a0) + 9b4: 2125 jal ddc <_start-0x7ffff224> + 9b6: 007f 0x7f + 9b8: ff11 bnez a4,8d4 <_start-0x7ffff72c> + 9ba: ffff 0xffff + 9bc: 244f1a7b 0x244f1a7b + 9c0: 9f21 0x9f21 + 9c2: 012c addi a1,sp,136 + 9c4: 0000 unimp + 9c6: 0130 addi a2,sp,136 + 9c8: 0000 unimp + 9ca: 007a0013 addi zero,s4,7 # ffffa007 <__global_pointer$+0x7fff522f> + 9ce: 1a31 addi s4,s4,-20 + 9d0: 007f 0x7f + 9d2: ff11 bnez a4,8ee <_start-0x7ffff712> + 9d4: ffff 0xffff + 9d6: 244f1a7b 0x244f1a7b + 9da: 7b21 lui s6,0xfffe8 + 9dc: 2100 fld fs0,0(a0) + 9de: 309f 0001 3400 0x34000001309f + 9e4: 0001 nop + 9e6: 1100 addi s0,sp,160 + 9e8: 7f00 flw fs0,56(a4) + 9ea: 1100 addi s0,sp,160 + 9ec: ffff 0xffff + 9ee: 7bff 0x7bff + 9f0: 4f1a lw t5,132(sp) + 9f2: 7b24 flw fs1,112(a4) + 9f4: 2100 fld fs0,0(a0) + 9f6: 007a c.slli zero,0x1e + 9f8: 9f21 0x9f21 + 9fa: 0220 addi s0,sp,264 + 9fc: 0000 unimp + 9fe: 0228 addi a0,sp,264 + a00: 0000 unimp + a02: 0001 nop + a04: 985a add a6,a6,s6 + a06: 0002 c.slli64 zero + a08: b400 fsd fs0,40(s0) + a0a: 0002 c.slli64 zero + a0c: 0100 addi s0,sp,128 + a0e: 5c00 lw s0,56(s0) + a10: 02b4 addi a3,sp,328 + a12: 0000 unimp + a14: 02d0 addi a2,sp,324 + a16: 0000 unimp + a18: 0001 nop + a1a: d05a sw s6,32(sp) + a1c: 0002 c.slli64 zero + a1e: d400 sw s0,40(s0) + a20: 0002 c.slli64 zero + a22: 0300 addi s0,sp,384 + a24: 7d00 flw fs0,56(a0) + a26: 9f7c 0x9f7c + a28: 02d4 addi a3,sp,324 + a2a: 0000 unimp + a2c: 02dc addi a5,sp,324 + a2e: 0000 unimp + a30: 0001 nop + a32: fc5d bnez s0,9f0 <_start-0x7ffff610> + a34: 0002 c.slli64 zero + a36: 0800 addi s0,sp,16 + a38: 24000003 lb zero,576(zero) # 240 <_start-0x7ffffdc0> + a3c: 7a00 flw fs0,48(a2) + a3e: 4000 lw s0,0(s0) + a40: 7a22244b fnmsub.d fs0,ft4,ft2,fa5,rdn + a44: 7c00 flw fs0,56(s0) + a46: 2200 fld fs0,0(a2) + a48: 4b40 lw s0,20(a4) + a4a: 2224 fld fs1,64(a2) + a4c: 1aff082b 0x1aff082b + a50: 007e c.slli zero,0x1f + a52: 7f22 flw ft10,40(sp) + a54: 2200 fld fs0,0(a2) + a56: 007a244f fnmadd.s fs0,fs4,ft7,ft0,rdn + a5a: 007c addi a5,sp,12 + a5c: 3122 fld ft2,40(sp) + a5e: 2125 jal e86 <_start-0x7ffff17a> + a60: 089f 0003 0c00 0xc000003089f + a66: 1e000003 lb zero,480(zero) # 1e0 <_start-0x7ffffe20> + a6a: 7a00 flw fs0,48(a2) + a6c: 4000 lw s0,0(s0) + a6e: 7c22244b 0x7c22244b + a72: 4000 lw s0,0(s0) + a74: 2b22244b fnmsub.d fs0,ft4,fs2,ft5,rdn + a78: ff08 fsw fa0,56(a4) + a7a: 7e1a flw ft8,164(sp) + a7c: 2200 fld fs0,0(a2) + a7e: 007f 0x7f + a80: 4f22 lw t5,8(sp) + a82: 7c24 flw fs1,120(s0) + a84: 3100 fld fs0,32(a0) + a86: 2125 jal eae <_start-0x7ffff152> + a88: 0c9f 0003 1400 0x140000030c9f + a8e: 1b000003 lb zero,432(zero) # 1b0 <_start-0x7ffffe50> + a92: 7a00 flw fs0,48(a2) + a94: 4000 lw s0,0(s0) + a96: 7c22244b 0x7c22244b + a9a: 4000 lw s0,0(s0) + a9c: 2b22244b fnmsub.d fs0,ft4,fs2,ft5,rdn + aa0: ff08 fsw fa0,56(a4) + aa2: 7e1a flw ft8,164(sp) + aa4: 2200 fld fs0,0(a2) + aa6: 007c244f fnmadd.s fs0,fs8,ft7,ft0,rdn + aaa: 2531 jal 10b6 <_start-0x7fffef4a> + aac: 9f21 0x9f21 + aae: 0354 addi a3,sp,388 + ab0: 0000 unimp + ab2: 0358 addi a4,sp,388 + ab4: 0000 unimp + ab6: 0001 nop + ab8: 585c lw a5,52(s0) + aba: 60000003 lb zero,1536(zero) # 600 <_start-0x7ffffa00> + abe: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + ac2: 5a00 lw s0,48(a2) + ac4: 03ac addi a1,sp,456 + ac6: 0000 unimp + ac8: 03b0 addi a2,sp,456 + aca: 0000 unimp + acc: 0001 nop + ace: b05c fsd fa5,160(s0) + ad0: cc000003 lb zero,-832(zero) # fffffcc0 <__global_pointer$+0x7fffaee8> + ad4: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + ad8: 5a00 lw s0,48(a2) + ada: 0450 addi a2,sp,516 + adc: 0000 unimp + ade: 0458 addi a4,sp,516 + ae0: 0000 unimp + ae2: 0001 nop + ae4: c85a sw s6,16(sp) + ae6: 0004 0x4 + ae8: d400 sw s0,40(s0) + aea: 0004 0x4 + aec: 0100 addi s0,sp,128 + aee: 5a00 lw s0,48(a2) + af0: 0530 addi a2,sp,648 + af2: 0000 unimp + af4: 053c addi a5,sp,648 + af6: 0000 unimp + af8: 0001 nop + afa: 585c lw a5,52(s0) + afc: 0005 c.nop 1 + afe: 7000 flw fs0,32(s0) + b00: 0005 c.nop 1 + b02: 0100 addi s0,sp,128 + b04: 6000 flw fs0,0(s0) + b06: 0570 addi a2,sp,652 + b08: 0000 unimp + b0a: 0574 addi a3,sp,652 + b0c: 0000 unimp + b0e: 0001 nop + b10: 745a flw fs0,180(sp) + b12: 0005 c.nop 1 + b14: 8800 0x8800 + b16: 0005 c.nop 1 + b18: 0100 addi s0,sp,128 + b1a: 6000 flw fs0,0(s0) + b1c: 05b8 addi a4,sp,712 + b1e: 0000 unimp + b20: 05c4 addi s1,sp,708 + b22: 0000 unimp + b24: 0001 nop + b26: 0005c463 bltz a1,b2e <_start-0x7ffff4d2> + b2a: cc00 sw s0,24(s0) + b2c: 0005 c.nop 1 + b2e: 0600 addi s0,sp,768 + b30: 7a00 flw fs0,48(a2) + b32: 7c00 flw fs0,56(s0) + b34: 1c00 addi s0,sp,560 + b36: d09f 0005 0400 0x4000005d09f + b3c: 0006 c.slli zero,0x1 + b3e: 0100 addi s0,sp,128 + b40: 6300 flw fs0,0(a4) + b42: 0604 addi s1,sp,768 + b44: 0000 unimp + b46: 062c addi a1,sp,776 + b48: 0000 unimp + b4a: 0001 nop + b4c: 385a fld fa6,432(sp) + b4e: 0006 c.slli zero,0x1 + b50: 4400 lw s0,8(s0) + b52: 0006 c.slli zero,0x1 + b54: 0100 addi s0,sp,128 + b56: 5a00 lw s0,48(a2) + b58: 0644 addi s1,sp,772 + b5a: 0000 unimp + b5c: 0670 addi a2,sp,780 + b5e: 0000 unimp + b60: 0001 nop + b62: 00067063 bgeu a2,zero,b62 <_start-0x7ffff49e> + b66: 7800 flw fs0,48(s0) + b68: 0006 c.slli zero,0x1 + b6a: 0200 addi s0,sp,256 + b6c: 3000 fld fs0,32(s0) + b6e: 789f 0006 9c00 0x9c000006789f + b74: 0006 c.slli zero,0x1 + b76: 0100 addi s0,sp,128 + b78: 5a00 lw s0,48(a2) + b7a: 06a4 addi s1,sp,840 + b7c: 0000 unimp + b7e: 06c0 addi s0,sp,836 + b80: 0000 unimp + b82: 0001 nop + b84: dc5a sw s6,56(sp) + b86: 0006 c.slli zero,0x1 + b88: e000 fsw fs0,0(s0) + b8a: 0006 c.slli zero,0x1 + b8c: 2400 fld fs0,8(s0) + b8e: 7a00 flw fs0,48(a2) + b90: 4000 lw s0,0(s0) + b92: 7a22244b fnmsub.d fs0,ft4,ft2,fa5,rdn + b96: 7c00 flw fs0,56(s0) + b98: 2200 fld fs0,0(a2) + b9a: 4b40 lw s0,20(a4) + b9c: 2224 fld fs1,64(a2) + b9e: 1aff082b 0x1aff082b + ba2: 007e c.slli zero,0x1f + ba4: 7f22 flw ft10,40(sp) + ba6: 2200 fld fs0,0(a2) + ba8: 007a244f fnmadd.s fs0,fs4,ft7,ft0,rdn + bac: 007c addi a5,sp,12 + bae: 3122 fld ft2,40(sp) + bb0: 2125 jal fd8 <_start-0x7ffff028> + bb2: e89f 0006 1000 0x10000006e89f + bb8: 01000007 0x1000007 + bbc: 5a00 lw s0,48(a2) + bbe: 0714 addi a3,sp,896 + bc0: 0000 unimp + bc2: 0724 addi s1,sp,904 + bc4: 0000 unimp + bc6: 0001 nop + bc8: 385a fld fa6,432(sp) + bca: 78000007 0x78000007 + bce: 01000007 0x1000007 + bd2: 5a00 lw s0,48(a2) + bd4: 0788 addi a0,sp,960 + bd6: 0000 unimp + bd8: 0790 addi a2,sp,960 + bda: 0000 unimp + bdc: 0001 nop + bde: 985c 0x985c + be0: a0000007 0xa0000007 + be4: 01000007 0x1000007 + be8: 6000 flw fs0,0(s0) + bea: 07b0 addi a2,sp,968 + bec: 0000 unimp + bee: 07b8 addi a4,sp,968 + bf0: 0000 unimp + bf2: 0001 nop + bf4: 005a c.slli zero,0x16 + bf6: 0000 unimp + bf8: 0000 unimp + bfa: 0000 unimp + bfc: 9000 0x9000 + bfe: 0000 unimp + c00: 9c00 0x9c00 + c02: 0000 unimp + c04: 0100 addi s0,sp,128 + c06: 5f00 lw s0,56(a4) + c08: 0104 addi s1,sp,128 + c0a: 0000 unimp + c0c: 0110 addi a2,sp,128 + c0e: 0000 unimp + c10: 0001 nop + c12: 105f 0001 1400 0x14000001105f + c18: 0001 nop + c1a: 0900 addi s0,sp,144 + c1c: 7f00 flw fs0,56(a4) + c1e: 1100 addi s0,sp,160 + c20: ffff 0xffff + c22: 7bff 0x7bff + c24: 9f1a add t5,t5,t1 + c26: 0114 addi a3,sp,128 + c28: 0000 unimp + c2a: 0134 addi a3,sp,136 + c2c: 0000 unimp + c2e: 007f000b 0x7f000b + c32: ff11 bnez a4,b4e <_start-0x7ffff4b2> + c34: ffff 0xffff + c36: 25311a7b 0x25311a7b + c3a: 209f 0002 2800 0x28000002209f + c40: 0002 c.slli64 zero + c42: 0100 addi s0,sp,128 + c44: 5f00 lw s0,56(a4) + c46: 0298 addi a4,sp,320 + c48: 0000 unimp + c4a: 02dc addi a5,sp,324 + c4c: 0000 unimp + c4e: 0001 nop + c50: fc5f 0002 0800 0x8000002fc5f + c56: 1c000003 lb zero,448(zero) # 1c0 <_start-0x7ffffe40> + c5a: 7a00 flw fs0,48(a2) + c5c: 4000 lw s0,0(s0) + c5e: 7a22244b fnmsub.d fs0,ft4,ft2,fa5,rdn + c62: 7c00 flw fs0,56(s0) + c64: 2200 fld fs0,0(a2) + c66: 4b40 lw s0,20(a4) + c68: 2224 fld fs1,64(a2) + c6a: 1aff082b 0x1aff082b + c6e: 007e c.slli zero,0x1f + c70: 7f22 flw ft10,40(sp) + c72: 2200 fld fs0,0(a2) + c74: 2531 jal 1280 <_start-0x7fffed80> + c76: 089f 0003 0c00 0xc000003089f + c7c: 19000003 lb zero,400(zero) # 190 <_start-0x7ffffe70> + c80: 7a00 flw fs0,48(a2) + c82: 4000 lw s0,0(s0) + c84: 7c22244b 0x7c22244b + c88: 4000 lw s0,0(s0) + c8a: 2b22244b fnmsub.d fs0,ft4,fs2,ft5,rdn + c8e: ff08 fsw fa0,56(a4) + c90: 7e1a flw ft8,164(sp) + c92: 2200 fld fs0,0(a2) + c94: 007f 0x7f + c96: 3122 fld ft2,40(sp) + c98: 9f25 0x9f25 + c9a: 030c addi a1,sp,384 + c9c: 0000 unimp + c9e: 0314 addi a3,sp,384 + ca0: 0000 unimp + ca2: 0016 c.slli zero,0x5 + ca4: 007a c.slli zero,0x1e + ca6: 4b40 lw s0,20(a4) + ca8: 2224 fld fs1,64(a2) + caa: 007c addi a5,sp,12 + cac: 4b40 lw s0,20(a4) + cae: 2224 fld fs1,64(a2) + cb0: 1aff082b 0x1aff082b + cb4: 007e c.slli zero,0x1f + cb6: 3122 fld ft2,40(sp) + cb8: 9f25 0x9f25 + cba: 0354 addi a3,sp,388 + cbc: 0000 unimp + cbe: 0360 addi s0,sp,396 + cc0: 0000 unimp + cc2: 0001 nop + cc4: ac5f 0003 c400 0xc4000003ac5f + cca: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + cce: 5f00 lw s0,56(a4) + cd0: 03c4 addi s1,sp,452 + cd2: 0000 unimp + cd4: 03cc addi a1,sp,452 + cd6: 0000 unimp + cd8: 0001 nop + cda: 5062 0x5062 + cdc: 0004 0x4 + cde: 5800 lw s0,48(s0) + ce0: 0004 0x4 + ce2: 0100 addi s0,sp,128 + ce4: 5f00 lw s0,56(a4) + ce6: 04c8 addi a0,sp,580 + ce8: 0000 unimp + cea: 04d4 addi a3,sp,580 + cec: 0000 unimp + cee: 0001 nop + cf0: 305f 0005 3c00 0x3c000005305f + cf6: 0005 c.nop 1 + cf8: 0100 addi s0,sp,128 + cfa: 5e00 lw s0,56(a2) + cfc: 0558 addi a4,sp,644 + cfe: 0000 unimp + d00: 0570 addi a2,sp,652 + d02: 0000 unimp + d04: 0001 nop + d06: 705d c.lui zero,0xffff7 + d08: 0005 c.nop 1 + d0a: 7400 flw fs0,40(s0) + d0c: 0005 c.nop 1 + d0e: 0100 addi s0,sp,128 + d10: 5f00 lw s0,56(a4) + d12: 0574 addi a3,sp,652 + d14: 0000 unimp + d16: 0588 addi a0,sp,704 + d18: 0000 unimp + d1a: 0001 nop + d1c: b85d j 5d2 <_start-0x7ffffa2e> + d1e: 0005 c.nop 1 + d20: 0000 unimp + d22: 0006 c.slli zero,0x1 + d24: 0100 addi s0,sp,128 + d26: 6200 flw fs0,0(a2) + d28: 0600 addi s0,sp,768 + d2a: 0000 unimp + d2c: 063c addi a5,sp,776 + d2e: 0000 unimp + d30: 0001 nop + d32: 445d li s0,23 + d34: 0006 c.slli zero,0x1 + d36: 7000 flw fs0,32(s0) + d38: 0006 c.slli zero,0x1 + d3a: 0100 addi s0,sp,128 + d3c: 6200 flw fs0,0(a2) + d3e: 0670 addi a2,sp,780 + d40: 0000 unimp + d42: 06a4 addi s1,sp,840 + d44: 0000 unimp + d46: 0001 nop + d48: a45d j fee <_start-0x7ffff012> + d4a: 0006 c.slli zero,0x1 + d4c: ac00 fsd fs0,24(s0) + d4e: 0006 c.slli zero,0x1 + d50: 0200 addi s0,sp,256 + d52: 3000 fld fs0,32(s0) + d54: ac9f 0006 bc00 0xbc000006ac9f + d5a: 0006 c.slli zero,0x1 + d5c: 0100 addi s0,sp,128 + d5e: 5d00 lw s0,56(a0) + d60: 06bc addi a5,sp,840 + d62: 0000 unimp + d64: 06c0 addi s0,sp,836 + d66: 0000 unimp + d68: 0001 nop + d6a: dc5f 0006 e000 0xe0000006dc5f + d70: 0006 c.slli zero,0x1 + d72: 1c00 addi s0,sp,560 + d74: 7a00 flw fs0,48(a2) + d76: 4000 lw s0,0(s0) + d78: 7a22244b fnmsub.d fs0,ft4,ft2,fa5,rdn + d7c: 7c00 flw fs0,56(s0) + d7e: 2200 fld fs0,0(a2) + d80: 4b40 lw s0,20(a4) + d82: 2224 fld fs1,64(a2) + d84: 1aff082b 0x1aff082b + d88: 007e c.slli zero,0x1f + d8a: 7f22 flw ft10,40(sp) + d8c: 2200 fld fs0,0(a2) + d8e: 2531 jal 139a <_start-0x7fffec66> + d90: e89f 0006 f000 0xf0000006e89f + d96: 0006 c.slli zero,0x1 + d98: 0100 addi s0,sp,128 + d9a: 5f00 lw s0,56(a4) + d9c: 06f0 addi a2,sp,844 + d9e: 0000 unimp + da0: 0708 addi a0,sp,896 + da2: 0000 unimp + da4: 0009 c.nop 2 + da6: 007f 0x7f + da8: ff11 bnez a4,cc4 <_start-0x7ffff33c> + daa: ffff 0xffff + dac: 089f1a7b 0x89f1a7b + db0: 28000007 0x28000007 + db4: 01000007 0x1000007 + db8: 5f00 lw s0,56(a4) + dba: 0738 addi a4,sp,904 + dbc: 0000 unimp + dbe: 0744 addi s1,sp,900 + dc0: 0000 unimp + dc2: 0001 nop + dc4: 885f 0007 9000 0x90000007885f + dca: 01000007 0x1000007 + dce: 5e00 lw s0,56(a2) + dd0: 0798 addi a4,sp,960 + dd2: 0000 unimp + dd4: 07a0 addi s0,sp,968 + dd6: 0000 unimp + dd8: 0001 nop + dda: b05d j 680 <_start-0x7ffff980> + ddc: b4000007 0xb4000007 + de0: 09000007 0x9000007 + de4: 7f00 flw fs0,56(a4) + de6: 1100 addi s0,sp,160 + de8: ffff 0xffff + dea: 7bff 0x7bff + dec: 9f1a add t5,t5,t1 + ... + df6: 0068 addi a0,sp,12 + df8: 0000 unimp + dfa: 007c addi a5,sp,12 + dfc: 0000 unimp + dfe: 0001 nop + e00: 7c5d lui s8,0xffff7 + e02: 0000 unimp + e04: 9400 0x9400 + e06: 0000 unimp + e08: 0100 addi s0,sp,128 + e0a: 5b00 lw s0,48(a4) + e0c: 009c addi a5,sp,64 + e0e: 0000 unimp + e10: 00a4 addi s1,sp,72 + e12: 0000 unimp + e14: 0001 nop + e16: 0000ac5b 0xac5b + e1a: c000 sw s0,0(s0) + e1c: 0000 unimp + e1e: 0100 addi s0,sp,128 + e20: 5d00 lw s0,56(a0) + e22: 00c0 addi s0,sp,68 + e24: 0000 unimp + e26: 00f4 addi a3,sp,76 + e28: 0000 unimp + e2a: 0001 nop + e2c: 0001445b 0x1445b + e30: 6000 flw fs0,0(s0) + e32: 0001 nop + e34: 0100 addi s0,sp,128 + e36: 5b00 lw s0,48(a4) + e38: 0178 addi a4,sp,140 + e3a: 0000 unimp + e3c: 0184 addi s1,sp,192 + e3e: 0000 unimp + e40: 0001 nop + e42: 0001845b 0x1845b + e46: 8c00 0x8c00 + e48: 0001 nop + e4a: 0100 addi s0,sp,128 + e4c: 5d00 lw s0,56(a0) + e4e: 018c addi a1,sp,192 + e50: 0000 unimp + e52: 019c addi a5,sp,192 + e54: 0000 unimp + e56: 0001 nop + e58: 00019c5b 0x19c5b + e5c: bc00 fsd fs0,56(s0) + e5e: 0001 nop + e60: 0100 addi s0,sp,128 + e62: 5d00 lw s0,56(a0) + e64: 01c8 addi a0,sp,196 + e66: 0000 unimp + e68: 01dc addi a5,sp,196 + e6a: 0000 unimp + e6c: 0001 nop + e6e: 0001dc5b 0x1dc5b + e72: 1000 addi s0,sp,32 + e74: 0002 c.slli64 zero + e76: 0100 addi s0,sp,128 + e78: 5d00 lw s0,56(a0) + e7a: 0228 addi a0,sp,264 + e7c: 0000 unimp + e7e: 0244 addi s1,sp,260 + e80: 0000 unimp + e82: 0001 nop + e84: 5c5d li s8,-9 + e86: 0002 c.slli64 zero + e88: 6c00 flw fs0,24(s0) + e8a: 0002 c.slli64 zero + e8c: 0100 addi s0,sp,128 + e8e: 5d00 lw s0,56(a0) + e90: 026c addi a1,sp,268 + e92: 0000 unimp + e94: 02b4 addi a3,sp,328 + e96: 0000 unimp + e98: 0006 c.slli zero,0x1 + e9a: 0078 addi a4,sp,12 + e9c: 0081 addi ra,ra,0 + e9e: 9f1c 0x9f1c + ea0: 02dc addi a5,sp,324 + ea2: 0000 unimp + ea4: 02e8 addi a0,sp,332 + ea6: 0000 unimp + ea8: 0006 c.slli zero,0x1 + eaa: 0078 addi a4,sp,12 + eac: 0081 addi ra,ra,0 + eae: 9f1c 0x9f1c + eb0: 02fc addi a5,sp,332 + eb2: 0000 unimp + eb4: 0324 addi s1,sp,392 + eb6: 0000 unimp + eb8: 0006 c.slli zero,0x1 + eba: 0078 addi a4,sp,12 + ebc: 0081 addi ra,ra,0 + ebe: 9f1c 0x9f1c + ec0: 06c0 addi s0,sp,836 + ec2: 0000 unimp + ec4: 06d0 addi a2,sp,836 + ec6: 0000 unimp + ec8: 0001 nop + eca: 0006d05b 0x6d05b + ece: e000 fsw fs0,0(s0) + ed0: 0006 c.slli zero,0x1 + ed2: 0600 addi s0,sp,768 + ed4: 7800 flw fs0,48(s0) + ed6: 8100 0x8100 + ed8: 1c00 addi s0,sp,560 + eda: 009f 0000 0000 0x9f + ee0: 0000 unimp + ee2: 8400 0x8400 + ee4: 0000 unimp + ee6: 9400 0x9400 + ee8: 0000 unimp + eea: 0100 addi s0,sp,128 + eec: 5c00 lw s0,56(s0) + ... + ef6: 00f8 addi a4,sp,76 + ef8: 0000 unimp + efa: 0108 addi a0,sp,128 + efc: 0000 unimp + efe: 0001 nop + f00: 005c addi a5,sp,4 + f02: 0000 unimp + f04: 0000 unimp + f06: 0000 unimp + f08: a400 fsd fs0,8(s0) + f0a: 0001 nop + f0c: b400 fsd fs0,40(s0) + f0e: 0001 nop + f10: 0100 addi s0,sp,128 + f12: 5a00 lw s0,48(a2) + ... + f1c: 0214 addi a3,sp,256 + f1e: 0000 unimp + f20: 0228 addi a0,sp,264 + f22: 0000 unimp + f24: 0001 nop + f26: 005a c.slli zero,0x16 + f28: 0000 unimp + f2a: 0000 unimp + f2c: 0000 unimp + f2e: 8c00 0x8c00 + f30: 0002 c.slli64 zero + f32: b400 fsd fs0,40(s0) + f34: 0002 c.slli64 zero + f36: 0100 addi s0,sp,128 + f38: 5c00 lw s0,56(s0) + ... + f42: 02fc addi a5,sp,332 + f44: 0000 unimp + f46: 0308 addi a0,sp,384 + f48: 0000 unimp + f4a: 0006 c.slli zero,0x1 + f4c: 007a c.slli zero,0x1e + f4e: 007c addi a5,sp,12 + f50: 9f22 add t5,t5,s0 + f52: 0308 addi a0,sp,384 + f54: 0000 unimp + f56: 031c addi a5,sp,384 + f58: 0000 unimp + f5a: 0001 nop + f5c: dc5c sw a5,60(s0) + f5e: 0006 c.slli zero,0x1 + f60: e000 fsw fs0,0(s0) + f62: 0006 c.slli zero,0x1 + f64: 0600 addi s0,sp,768 + f66: 7a00 flw fs0,48(a2) + f68: 7c00 flw fs0,56(s0) + f6a: 2200 fld fs0,0(a2) + f6c: 009f 0000 0000 0x9f + f72: 0000 unimp + f74: 2c00 fld fs0,24(s0) + f76: 40000003 lb zero,1024(zero) # 400 <_start-0x7ffffc00> + f7a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + f7e: 5d00 lw s0,56(a0) + f80: 0340 addi s0,sp,388 + f82: 0000 unimp + f84: 0358 addi a4,sp,388 + f86: 0000 unimp + f88: 0001 nop + f8a: 0003605b 0x3605b + f8e: 9c00 0x9c00 + f90: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + f94: 5b00 lw s0,48(a4) + f96: 03cc addi a1,sp,452 + f98: 0000 unimp + f9a: 03e4 addi s1,sp,460 + f9c: 0000 unimp + f9e: 0001 nop + fa0: e45d bnez s0,104e <_start-0x7fffefb2> + fa2: 00000003 lb zero,0(zero) # 0 <_start-0x80000000> + fa6: 0004 0x4 + fa8: 0100 addi s0,sp,128 + faa: 5b00 lw s0,48(a4) + fac: 0418 addi a4,sp,512 + fae: 0000 unimp + fb0: 0424 addi s1,sp,520 + fb2: 0000 unimp + fb4: 0001 nop + fb6: 0004245b 0x4245b + fba: 2c00 fld fs0,24(s0) + fbc: 0004 0x4 + fbe: 0100 addi s0,sp,128 + fc0: 5d00 lw s0,56(a0) + fc2: 042c addi a1,sp,520 + fc4: 0000 unimp + fc6: 043c addi a5,sp,520 + fc8: 0000 unimp + fca: 0001 nop + fcc: 3c60 fld fs0,248(s0) + fce: 0004 0x4 + fd0: 6000 flw fs0,0(s0) + fd2: 0004 0x4 + fd4: 0100 addi s0,sp,128 + fd6: 5d00 lw s0,56(a0) + fd8: 0470 addi a2,sp,524 + fda: 0000 unimp + fdc: 0484 addi s1,sp,576 + fde: 0000 unimp + fe0: 0001 nop + fe2: 8460 0x8460 + fe4: 0004 0x4 + fe6: b800 fsd fs0,48(s0) + fe8: 0004 0x4 + fea: 0100 addi s0,sp,128 + fec: 5d00 lw s0,56(a0) + fee: 04d4 addi a3,sp,580 + ff0: 0000 unimp + ff2: 04f0 addi a2,sp,588 + ff4: 0000 unimp + ff6: 0001 nop + ff8: 085d addi a6,a6,23 + ffa: 0005 c.nop 1 + ffc: 1800 addi s0,sp,48 + ffe: 0005 c.nop 1 + 1000: 0100 addi s0,sp,128 + 1002: 5d00 lw s0,56(a0) + 1004: 0518 addi a4,sp,640 + 1006: 0000 unimp + 1008: 053c addi a5,sp,648 + 100a: 0000 unimp + 100c: 0006 c.slli zero,0x1 + 100e: 0078 addi a4,sp,12 + 1010: 0081 addi ra,ra,0 + 1012: 9f1c 0x9f1c + 1014: 0544 addi s1,sp,644 + 1016: 0000 unimp + 1018: 0550 addi a2,sp,644 + 101a: 0000 unimp + 101c: 0006 c.slli zero,0x1 + 101e: 0078 addi a4,sp,12 + 1020: 0081 addi ra,ra,0 + 1022: 9f1c 0x9f1c + 1024: 0588 addi a0,sp,704 + 1026: 0000 unimp + 1028: 05d4 addi a3,sp,708 + 102a: 0000 unimp + 102c: 0006 c.slli zero,0x1 + 102e: 0078 addi a4,sp,12 + 1030: 0081 addi ra,ra,0 + 1032: 9f1c 0x9f1c + 1034: 0644 addi s1,sp,772 + 1036: 0000 unimp + 1038: 0654 addi a3,sp,772 + 103a: 0000 unimp + 103c: 0006 c.slli zero,0x1 + 103e: 0078 addi a4,sp,12 + 1040: 0081 addi ra,ra,0 + 1042: 9f1c 0x9f1c + 1044: 0778 addi a4,sp,908 + 1046: 0000 unimp + 1048: 0788 addi a0,sp,960 + 104a: 0000 unimp + 104c: 0001 nop + 104e: 8860 0x8860 + 1050: 90000007 0x90000007 + 1054: 06000007 0x6000007 + 1058: 7800 flw fs0,48(s0) + 105a: 8100 0x8100 + 105c: 1c00 addi s0,sp,560 + 105e: a09f 0007 b000 0xb0000007a09f + 1064: 06000007 0x6000007 + 1068: 7800 flw fs0,48(s0) + 106a: 8100 0x8100 + 106c: 1c00 addi s0,sp,560 + 106e: 009f 0000 0000 0x9f + 1074: 0000 unimp + 1076: 4800 lw s0,16(s0) + 1078: 58000003 lb zero,1408(zero) # 580 <_start-0x7ffffa80> + 107c: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1080: 5c00 lw s0,56(s0) + ... + 108a: 03a0 addi s0,sp,456 + 108c: 0000 unimp + 108e: 03b0 addi a2,sp,456 + 1090: 0000 unimp + 1092: 0001 nop + 1094: 005c addi a5,sp,4 + 1096: 0000 unimp + 1098: 0000 unimp + 109a: 0000 unimp + 109c: 4400 lw s0,8(s0) + 109e: 0004 0x4 + 10a0: 5800 lw s0,48(s0) + 10a2: 0004 0x4 + 10a4: 0100 addi s0,sp,128 + 10a6: 5a00 lw s0,48(a2) + ... + 10b0: 04bc addi a5,sp,584 + 10b2: 0000 unimp + 10b4: 04d4 addi a3,sp,580 + 10b6: 0000 unimp + 10b8: 0001 nop + 10ba: 005a c.slli zero,0x16 + 10bc: 0000 unimp + 10be: 0000 unimp + 10c0: 0000 unimp + 10c2: 4c00 lw s0,24(s0) + 10c4: 0005 c.nop 1 + 10c6: 8800 0x8800 + 10c8: 0005 c.nop 1 + 10ca: 0100 addi s0,sp,128 + 10cc: 6000 flw fs0,0(s0) + 10ce: 0798 addi a4,sp,960 + 10d0: 0000 unimp + 10d2: 07a0 addi s0,sp,968 + 10d4: 0000 unimp + 10d6: 0001 nop + 10d8: 0060 addi s0,sp,12 + 10da: 0000 unimp + 10dc: 0000 unimp + 10de: 0000 unimp + 10e0: 6400 flw fs0,8(s0) + 10e2: 0005 c.nop 1 + 10e4: 7400 flw fs0,40(s0) + 10e6: 0005 c.nop 1 + 10e8: 0100 addi s0,sp,128 + 10ea: 5a00 lw s0,48(a2) + ... + 10f4: 05ac addi a1,sp,712 + 10f6: 0000 unimp + 10f8: 05c4 addi s1,sp,708 + 10fa: 0000 unimp + 10fc: 0001 nop + 10fe: 0005c463 bltz a1,1106 <_start-0x7fffeefa> + 1102: cc00 sw s0,24(s0) + 1104: 0005 c.nop 1 + 1106: 0600 addi s0,sp,768 + 1108: 7a00 flw fs0,48(a2) + 110a: 7c00 flw fs0,56(s0) + 110c: 1c00 addi s0,sp,560 + 110e: 449f 0006 5800 0x58000006449f + 1114: 0006 c.slli zero,0x1 + 1116: 0100 addi s0,sp,128 + 1118: 6300 flw fs0,0(a4) + ... + 1122: 05c4 addi s1,sp,708 + 1124: 0000 unimp + 1126: 05d4 addi a3,sp,708 + 1128: 0000 unimp + 112a: 0001 nop + 112c: 00000063 beqz zero,112c <_start-0x7fffeed4> + 1130: 0000 unimp + 1132: 0000 unimp + 1134: e000 fsw fs0,0(s0) + 1136: 0005 c.nop 1 + 1138: e400 fsw fs0,8(s0) + 113a: 0005 c.nop 1 + 113c: 0100 addi s0,sp,128 + 113e: 5a00 lw s0,48(a2) + 1140: 05e4 addi s1,sp,716 + 1142: 0000 unimp + 1144: 060c addi a1,sp,768 + 1146: 0000 unimp + 1148: 0001 nop + 114a: 105e c.slli zero,0x37 + 114c: 0006 c.slli zero,0x1 + 114e: 3c00 fld fs0,56(s0) + 1150: 0006 c.slli zero,0x1 + 1152: 0100 addi s0,sp,128 + 1154: 5f00 lw s0,56(a4) + 1156: 0660 addi s0,sp,780 + 1158: 0000 unimp + 115a: 0668 addi a0,sp,780 + 115c: 0000 unimp + 115e: 0001 nop + 1160: 685a flw fa6,148(sp) + 1162: 0006 c.slli zero,0x1 + 1164: 7800 flw fs0,48(s0) + 1166: 0006 c.slli zero,0x1 + 1168: 0100 addi s0,sp,128 + 116a: 5e00 lw s0,56(a2) + 116c: 0678 addi a4,sp,780 + 116e: 0000 unimp + 1170: 06a8 addi a0,sp,840 + 1172: 0000 unimp + 1174: 0001 nop + 1176: ac5f 0006 c000 0xc0000006ac5f + 117c: 0006 c.slli zero,0x1 + 117e: 0100 addi s0,sp,128 + 1180: 5e00 lw s0,56(a2) + ... + 118a: 02cc addi a1,sp,324 + 118c: 0000 unimp + 118e: 02dc addi a5,sp,324 + 1190: 0000 unimp + 1192: 0001 nop + 1194: 005d c.nop 23 + ... + 119e: 0000 unimp + 11a0: 7800 flw fs0,48(s0) + 11a2: 0000 unimp + 11a4: 0600 addi s0,sp,768 + 11a6: 5a00 lw s0,48(a2) + 11a8: 935b0493 addi s1,s6,-1739 # fffe7935 <__global_pointer$+0x7ffe2b5d> + 11ac: 7804 flw fs1,48(s0) + 11ae: 0000 unimp + 11b0: f400 fsw fs0,40(s0) + 11b2: 0000 unimp + 11b4: 0600 addi s0,sp,768 + 11b6: f300 fsw fs0,32(a4) + 11b8: 250af503 0x250af503 + 11bc: f49f 0000 0400 0x4000000f49f + 11c2: 0001 nop + 11c4: 0600 addi s0,sp,768 + 11c6: 5a00 lw s0,48(a2) + 11c8: 935b0493 addi s1,s6,-1739 + 11cc: 0404 addi s1,sp,512 + 11ce: 0001 nop + 11d0: 3c00 fld fs0,56(s0) + 11d2: 0001 nop + 11d4: 0600 addi s0,sp,768 + 11d6: f300 fsw fs0,32(a4) + 11d8: 250af503 0x250af503 + 11dc: 3c9f 0001 3f00 0x3f0000013c9f + 11e2: 0001 nop + 11e4: 0600 addi s0,sp,768 + 11e6: 5a00 lw s0,48(a2) + 11e8: 935b0493 addi s1,s6,-1739 + 11ec: 3f04 fld fs1,56(a4) + 11ee: 0001 nop + 11f0: 5800 lw s0,48(s0) + 11f2: 0001 nop + 11f4: 0600 addi s0,sp,768 + 11f6: f300 fsw fs0,32(a4) + 11f8: 250af503 0x250af503 + 11fc: 589f 0001 9400 0x94000001589f + 1202: 0001 nop + 1204: 0600 addi s0,sp,768 + 1206: 5a00 lw s0,48(a2) + 1208: 935b0493 addi s1,s6,-1739 + 120c: 9404 0x9404 + 120e: 0001 nop + 1210: e000 fsw fs0,0(s0) + 1212: 0006 c.slli zero,0x1 + 1214: 0600 addi s0,sp,768 + 1216: f300 fsw fs0,32(a4) + 1218: 250af503 0x250af503 + 121c: 009f 0000 0000 0x9f + 1222: 0000 unimp + 1224: 0000 unimp + 1226: 0000 unimp + 1228: 7800 flw fs0,48(s0) + 122a: 0000 unimp + 122c: 0600 addi s0,sp,768 + 122e: 5c00 lw s0,56(s0) + 1230: 935d0493 addi s1,s10,-1739 # 17935 <_start-0x7ffe86cb> + 1234: 7804 flw fs1,48(s0) + 1236: 0000 unimp + 1238: f400 fsw fs0,40(s0) + 123a: 0000 unimp + 123c: 0600 addi s0,sp,768 + 123e: f300 fsw fs0,32(a4) + 1240: 250cf503 0x250cf503 + 1244: f49f 0000 0700 0x7000000f49f + 124a: 0001 nop + 124c: 0600 addi s0,sp,768 + 124e: 5c00 lw s0,56(s0) + 1250: 935d0493 addi s1,s10,-1739 + 1254: 0704 addi s1,sp,896 + 1256: 0001 nop + 1258: 3c00 fld fs0,56(s0) + 125a: 0001 nop + 125c: 0600 addi s0,sp,768 + 125e: f300 fsw fs0,32(a4) + 1260: 250cf503 0x250cf503 + 1264: 3c9f 0001 3f00 0x3f0000013c9f + 126a: 0001 nop + 126c: 0600 addi s0,sp,768 + 126e: 5c00 lw s0,56(s0) + 1270: 935d0493 addi s1,s10,-1739 + 1274: 3f04 fld fs1,56(a4) + 1276: 0001 nop + 1278: 5800 lw s0,48(s0) + 127a: 0001 nop + 127c: 0600 addi s0,sp,768 + 127e: f300 fsw fs0,32(a4) + 1280: 250cf503 0x250cf503 + 1284: 589f 0001 9400 0x94000001589f + 128a: 0001 nop + 128c: 0600 addi s0,sp,768 + 128e: 5c00 lw s0,56(s0) + 1290: 935d0493 addi s1,s10,-1739 + 1294: 9404 0x9404 + 1296: 0001 nop + 1298: e000 fsw fs0,0(s0) + 129a: 0006 c.slli zero,0x1 + 129c: 0600 addi s0,sp,768 + 129e: f300 fsw fs0,32(a4) + 12a0: 250cf503 0x250cf503 + 12a4: 009f 0000 0000 0x9f + 12aa: 0000 unimp + 12ac: 0000 unimp + 12ae: 0000 unimp + 12b0: 7c00 flw fs0,56(s0) + 12b2: 0000 unimp + 12b4: 0200 addi s0,sp,256 + 12b6: 3000 fld fs0,32(s0) + 12b8: f49f 0000 9400 0x94000000f49f + 12be: 0001 nop + 12c0: 0200 addi s0,sp,256 + 12c2: 3000 fld fs0,32(s0) + 12c4: 009f 0000 0000 0x9f + 12ca: 0000 unimp + 12cc: 7800 flw fs0,48(s0) + 12ce: 0000 unimp + 12d0: 7c00 flw fs0,56(s0) + 12d2: 0000 unimp + 12d4: 0200 addi s0,sp,256 + 12d6: 3000 fld fs0,32(s0) + 12d8: 7c9f 0000 f400 0xf40000007c9f + 12de: 0000 unimp + 12e0: 0100 addi s0,sp,128 + 12e2: 6700 flw fs0,8(a4) + 12e4: 0194 addi a3,sp,192 + 12e6: 0000 unimp + 12e8: 0580 addi s0,sp,704 + 12ea: 0000 unimp + 12ec: 0001 nop + 12ee: 00059467 0x59467 + 12f2: e000 fsw fs0,0(s0) + 12f4: 0006 c.slli zero,0x1 + 12f6: 0100 addi s0,sp,128 + 12f8: 6700 flw fs0,8(a4) + ... + 1302: 004c addi a1,sp,4 + 1304: 0000 unimp + 1306: 0574 addi a3,sp,652 + 1308: 0000 unimp + 130a: 0006 c.slli zero,0x1 + 130c: 0084 addi s1,sp,64 + 130e: ff08 fsw fa0,56(a4) + 1310: 9f1a add t5,t5,t1 + 1312: 0594 addi a3,sp,704 + 1314: 0000 unimp + 1316: 06e0 addi s0,sp,844 + 1318: 0000 unimp + 131a: 0006 c.slli zero,0x1 + 131c: 0084 addi s1,sp,64 + 131e: ff08 fsw fa0,56(a4) + 1320: 9f1a add t5,t5,t1 + ... + 132a: 0048 addi a0,sp,4 + 132c: 0000 unimp + 132e: 0058 addi a4,sp,4 + 1330: 0000 unimp + 1332: 007f0007 0x7f0007 + 1336: ff0a fsw ft2,188(sp) + 1338: 589f1a07 0x589f1a07 + 133c: 0000 unimp + 133e: 7800 flw fs0,48(s0) + 1340: 0000 unimp + 1342: 0900 addi s0,sp,144 + 1344: 7b00 flw fs0,48(a4) + 1346: 4400 lw s0,8(s0) + 1348: 0a25 addi s4,s4,9 + 134a: 07ff 0x7ff + 134c: 9f1a add t5,t5,t1 + 134e: 0078 addi a4,sp,12 + 1350: 0000 unimp + 1352: 00f4 addi a3,sp,76 + 1354: 0000 unimp + 1356: 0001 nop + 1358: f465 bnez s0,1340 <_start-0x7fffecc0> + 135a: 0000 unimp + 135c: 0700 addi s0,sp,896 + 135e: 0001 nop + 1360: 0700 addi s0,sp,896 + 1362: 7f00 flw fs0,56(a4) + 1364: 0a00 addi s0,sp,272 + 1366: 07ff 0x7ff + 1368: 9f1a add t5,t5,t1 + 136a: 013c addi a5,sp,136 + 136c: 0000 unimp + 136e: 0000013f 007f0007 0x7f00070000013f + 1376: ff0a fsw ft2,188(sp) + 1378: 589f1a07 0x589f1a07 + 137c: 0001 nop + 137e: 7400 flw fs0,40(s0) + 1380: 0001 nop + 1382: 0900 addi s0,sp,144 + 1384: 7b00 flw fs0,48(a4) + 1386: 4400 lw s0,8(s0) + 1388: 0a25 addi s4,s4,9 + 138a: 07ff 0x7ff + 138c: 9f1a add t5,t5,t1 + 138e: 0174 addi a3,sp,140 + 1390: 0000 unimp + 1392: 0184 addi s1,sp,192 + 1394: 0000 unimp + 1396: 007f0007 0x7f0007 + 139a: ff0a fsw ft2,188(sp) + 139c: 849f1a07 0x849f1a07 + 13a0: 0001 nop + 13a2: 9400 0x9400 + 13a4: 0001 nop + 13a6: 0900 addi s0,sp,144 + 13a8: 7b00 flw fs0,48(a4) + 13aa: 4400 lw s0,8(s0) + 13ac: 0a25 addi s4,s4,9 + 13ae: 07ff 0x7ff + 13b0: 9f1a add t5,t5,t1 + 13b2: 0194 addi a3,sp,192 + 13b4: 0000 unimp + 13b6: 0578 addi a4,sp,652 + 13b8: 0000 unimp + 13ba: 0001 nop + 13bc: 9465 srai s0,s0,0x39 + 13be: 0005 c.nop 1 + 13c0: e000 fsw fs0,0(s0) + 13c2: 0006 c.slli zero,0x1 + 13c4: 0100 addi s0,sp,128 + 13c6: 6500 flw fs0,8(a0) + ... + 13d4: 0074 addi a3,sp,12 + 13d6: 0000 unimp + 13d8: 0001 nop + 13da: 745a flw fs0,180(sp) + 13dc: 0000 unimp + 13de: f400 fsw fs0,40(s0) + 13e0: 0000 unimp + 13e2: 0100 addi s0,sp,128 + 13e4: 5800 lw s0,48(s0) + 13e6: 00f4 addi a3,sp,76 + 13e8: 0000 unimp + 13ea: 0104 addi s1,sp,128 + 13ec: 0000 unimp + 13ee: 0001 nop + 13f0: 045a slli s0,s0,0x16 + 13f2: 0001 nop + 13f4: 3000 fld fs0,32(s0) + 13f6: 0001 nop + 13f8: 0100 addi s0,sp,128 + 13fa: 6200 flw fs0,0(a2) + 13fc: 0130 addi a2,sp,136 + 13fe: 0000 unimp + 1400: 013c addi a5,sp,136 + 1402: 0000 unimp + 1404: 0001 nop + 1406: 3c58 fld fa4,184(s0) + 1408: 0001 nop + 140a: 3f00 fld fs0,56(a4) + 140c: 0001 nop + 140e: 0100 addi s0,sp,128 + 1410: 5a00 lw s0,48(a2) + 1412: 0000013f 00000150 0x1500000013f + 141a: 0001 nop + 141c: 5062 0x5062 + 141e: 0001 nop + 1420: 5800 lw s0,48(s0) + 1422: 0001 nop + 1424: 0200 addi s0,sp,256 + 1426: 3000 fld fs0,32(s0) + 1428: 589f 0001 9400 0x94000001589f + 142e: 0001 nop + 1430: 0100 addi s0,sp,128 + 1432: 5a00 lw s0,48(a2) + 1434: 0194 addi a3,sp,192 + 1436: 0000 unimp + 1438: 0258 addi a4,sp,260 + 143a: 0000 unimp + 143c: 0001 nop + 143e: 9458 0x9458 + 1440: 0005 c.nop 1 + 1442: c800 sw s0,16(s0) + 1444: 0005 c.nop 1 + 1446: 0100 addi s0,sp,128 + 1448: 5800 lw s0,48(s0) + 144a: 05d8 addi a4,sp,708 + 144c: 0000 unimp + 144e: 05f4 addi a3,sp,716 + 1450: 0000 unimp + 1452: 0001 nop + 1454: a458 fsd fa4,136(s0) + 1456: 0006 c.slli zero,0x1 + 1458: b800 fsd fs0,48(s0) + 145a: 0006 c.slli zero,0x1 + 145c: 0100 addi s0,sp,128 + 145e: 5800 lw s0,48(s0) + ... + 1468: 0048 addi a0,sp,4 + 146a: 0000 unimp + 146c: 005c addi a5,sp,4 + 146e: 0000 unimp + 1470: 0001 nop + 1472: 5c59 li s8,-10 + 1474: 0000 unimp + 1476: 6400 flw fs0,8(s0) + 1478: 0000 unimp + 147a: 0700 addi s0,sp,896 + 147c: 7900 flw fs0,48(a0) + 147e: 4000 lw s0,0(s0) + 1480: 2440 fld fs0,136(s0) + 1482: 9f21 0x9f21 + 1484: 0064 addi s1,sp,12 + 1486: 0000 unimp + 1488: 0070 addi a2,sp,12 + 148a: 0000 unimp + 148c: 007b000b 0x7b000b + 1490: 243c fld fa5,72(s0) + 1492: 253c fld fa5,72(a0) + 1494: 4040 lw s0,4(s0) + 1496: 2124 fld fs1,64(a0) + 1498: 709f 0000 f400 0xf4000000709f + 149e: 0000 unimp + 14a0: 0100 addi s0,sp,128 + 14a2: 6300 flw fs0,0(a4) + 14a4: 00f4 addi a3,sp,76 + 14a6: 0000 unimp + 14a8: 0124 addi s1,sp,136 + 14aa: 0000 unimp + 14ac: 0001 nop + 14ae: 2c59 jal 1744 <_start-0x7fffe8bc> + 14b0: 0001 nop + 14b2: 3c00 fld fs0,56(s0) + 14b4: 0001 nop + 14b6: 0100 addi s0,sp,128 + 14b8: 6300 flw fs0,0(a4) + 14ba: 013c addi a5,sp,136 + 14bc: 0000 unimp + 14be: 014c addi a1,sp,132 + 14c0: 0000 unimp + 14c2: 0001 nop + 14c4: 5059 c.li zero,-10 + 14c6: 0001 nop + 14c8: 5800 lw s0,48(s0) + 14ca: 0001 nop + 14cc: 0100 addi s0,sp,128 + 14ce: 6300 flw fs0,0(a4) + 14d0: 0158 addi a4,sp,132 + 14d2: 0000 unimp + 14d4: 0194 addi a3,sp,192 + 14d6: 0000 unimp + 14d8: 0001 nop + 14da: 9459 srai s0,s0,0x36 + 14dc: 0001 nop + 14de: 5400 lw s0,40(s0) + 14e0: 0002 c.slli64 zero + 14e2: 0100 addi s0,sp,128 + 14e4: 6300 flw fs0,0(a4) + 14e6: 0594 addi a3,sp,704 + 14e8: 0000 unimp + 14ea: 05c8 addi a0,sp,708 + 14ec: 0000 unimp + 14ee: 0001 nop + 14f0: 0005d863 bgez a1,1500 <_start-0x7fffeb00> + 14f4: f400 fsw fs0,40(s0) + 14f6: 0005 c.nop 1 + 14f8: 0100 addi s0,sp,128 + 14fa: 6300 flw fs0,0(a4) + 14fc: 06a4 addi s1,sp,840 + 14fe: 0000 unimp + 1500: 06b8 addi a4,sp,840 + 1502: 0000 unimp + 1504: 0001 nop + 1506: 00000063 beqz zero,1506 <_start-0x7fffeafa> + 150a: 0000 unimp + 150c: 0000 unimp + 150e: bc00 fsd fs0,56(s0) + 1510: 0000 unimp + 1512: c000 sw s0,0(s0) + 1514: 0000 unimp + 1516: 0200 addi s0,sp,256 + 1518: 3000 fld fs0,32(s0) + 151a: c09f 0000 f400 0xf4000000c09f + 1520: 0000 unimp + 1522: 0100 addi s0,sp,128 + 1524: 5c00 lw s0,56(s0) + 1526: 0238 addi a4,sp,264 + 1528: 0000 unimp + 152a: 0248 addi a0,sp,260 + 152c: 0000 unimp + 152e: 0001 nop + 1530: 945c 0x945c + 1532: 0005 c.nop 1 + 1534: b000 fsd fs0,32(s0) + 1536: 0005 c.nop 1 + 1538: 0100 addi s0,sp,128 + 153a: 5c00 lw s0,56(s0) + 153c: 05d8 addi a4,sp,708 + 153e: 0000 unimp + 1540: 05f0 addi a2,sp,716 + 1542: 0000 unimp + 1544: 0001 nop + 1546: 005c addi a5,sp,4 + 1548: 0000 unimp + 154a: 0000 unimp + 154c: 0000 unimp + 154e: 9400 0x9400 + 1550: 0000 unimp + 1552: f400 fsw fs0,40(s0) + 1554: 0000 unimp + 1556: 0600 addi s0,sp,768 + 1558: 8800 0x8800 + 155a: 0800 addi s0,sp,16 + 155c: 1aff 0x1aff + 155e: 949f 0001 8400 0x84000001949f + 1564: 0005 c.nop 1 + 1566: 0600 addi s0,sp,768 + 1568: 8800 0x8800 + 156a: 0800 addi s0,sp,16 + 156c: 1aff 0x1aff + 156e: 949f 0005 e000 0xe0000005949f + 1574: 0006 c.slli zero,0x1 + 1576: 0600 addi s0,sp,768 + 1578: 8800 0x8800 + 157a: 0800 addi s0,sp,16 + 157c: 1aff 0x1aff + 157e: 009f 0000 0000 0x9f + 1584: 0000 unimp + 1586: 9000 0x9000 + 1588: 0000 unimp + 158a: bc00 fsd fs0,56(s0) + 158c: 0000 unimp + 158e: 0700 addi s0,sp,896 + 1590: 7b00 flw fs0,48(a4) + 1592: 0a00 addi s0,sp,272 + 1594: ffff 0xffff + 1596: 9f1a add t5,t5,t1 + 1598: 00bc addi a5,sp,72 + 159a: 0000 unimp + 159c: 00f4 addi a3,sp,76 + 159e: 0000 unimp + 15a0: 0001 nop + 15a2: 945a add s0,s0,s6 + 15a4: 0001 nop + 15a6: a700 fsd fs0,8(a4) + 15a8: 0001 nop + 15aa: 0700 addi s0,sp,896 + 15ac: 7b00 flw fs0,48(a4) + 15ae: 0a00 addi s0,sp,272 + 15b0: ffff 0xffff + 15b2: 9f1a add t5,t5,t1 + 15b4: 01e0 addi s0,sp,204 + 15b6: 0000 unimp + 15b8: 000001e7 jalr gp,zero # 0 <_start-0x80000000> + 15bc: 007b0007 0x7b0007 + 15c0: ff0a fsw ft2,188(sp) + 15c2: 1aff 0x1aff + 15c4: 009f 0002 3800 0x38000002009f + 15ca: 0002 c.slli64 zero + 15cc: 0700 addi s0,sp,896 + 15ce: 7b00 flw fs0,48(a4) + 15d0: 0a00 addi s0,sp,272 + 15d2: ffff 0xffff + 15d4: 9f1a add t5,t5,t1 + 15d6: 0238 addi a4,sp,264 + 15d8: 0000 unimp + 15da: 025c addi a5,sp,260 + 15dc: 0000 unimp + 15de: 0001 nop + 15e0: 945a add s0,s0,s6 + 15e2: 0005 c.nop 1 + 15e4: c800 sw s0,16(s0) + 15e6: 0005 c.nop 1 + 15e8: 0100 addi s0,sp,128 + 15ea: 5a00 lw s0,48(a2) + 15ec: 05d8 addi a4,sp,708 + 15ee: 0000 unimp + 15f0: 05f4 addi a3,sp,716 + 15f2: 0000 unimp + 15f4: 0001 nop + 15f6: a45a fsd fs6,8(sp) + 15f8: 0006 c.slli zero,0x1 + 15fa: a800 fsd fs0,16(s0) + 15fc: 0006 c.slli zero,0x1 + 15fe: 0100 addi s0,sp,128 + 1600: 5a00 lw s0,48(a2) + ... + 160a: 007c addi a5,sp,12 + 160c: 0000 unimp + 160e: 00b8 addi a4,sp,72 + 1610: 0000 unimp + 1612: 0001 nop + 1614: b866 fsd fs9,48(sp) + 1616: 0000 unimp + 1618: f400 fsw fs0,40(s0) + 161a: 0000 unimp + 161c: 0100 addi s0,sp,128 + 161e: 6f00 flw fs0,24(a4) + 1620: 0194 addi a3,sp,192 + 1622: 0000 unimp + 1624: 01d4 addi a3,sp,196 + 1626: 0000 unimp + 1628: 0001 nop + 162a: d466 sw s9,40(sp) + 162c: 0001 nop + 162e: e000 fsw fs0,0(s0) + 1630: 0001 nop + 1632: 0100 addi s0,sp,128 + 1634: 6f00 flw fs0,24(a4) + 1636: 01e0 addi s0,sp,204 + 1638: 0000 unimp + 163a: 01f8 addi a4,sp,204 + 163c: 0000 unimp + 163e: 0001 nop + 1640: f866 fsw fs9,48(sp) + 1642: 0001 nop + 1644: 0000 unimp + 1646: 0002 c.slli64 zero + 1648: 0200 addi s0,sp,256 + 164a: 3000 fld fs0,32(s0) + 164c: 009f 0002 3800 0x38000002009f + 1652: 0002 c.slli64 zero + 1654: 0100 addi s0,sp,128 + 1656: 6600 flw fs0,8(a2) + 1658: 0238 addi a4,sp,264 + 165a: 0000 unimp + 165c: 027c addi a5,sp,268 + 165e: 0000 unimp + 1660: 0001 nop + 1662: 00027c6f jal s8,28662 <_start-0x7ffd799e> + 1666: c400 sw s0,8(s0) + 1668: 0004 0x4 + 166a: 0100 addi s0,sp,128 + 166c: 5600 lw s0,40(a2) + 166e: 0594 addi a3,sp,704 + 1670: 0000 unimp + 1672: 05ac addi a1,sp,712 + 1674: 0000 unimp + 1676: 0001 nop + 1678: 0005d86f jal a6,5e678 <_start-0x7ffa1988> + 167c: e800 fsw fs0,16(s0) + 167e: 0005 c.nop 1 + 1680: 0100 addi s0,sp,128 + 1682: 6f00 flw fs0,24(a4) + 1684: 06d4 addi a3,sp,836 + 1686: 0000 unimp + 1688: 06e0 addi s0,sp,844 + 168a: 0000 unimp + 168c: 0001 nop + 168e: 0056 c.slli zero,0x15 + 1690: 0000 unimp + 1692: 0000 unimp + 1694: 0000 unimp + 1696: 8c00 0x8c00 + 1698: 0000 unimp + 169a: a000 fsd fs0,0(s0) + 169c: 0000 unimp + 169e: 0100 addi s0,sp,128 + 16a0: 5900 lw s0,48(a0) + 16a2: 00a0 addi s0,sp,72 + 16a4: 0000 unimp + 16a6: 00b0 addi a2,sp,72 + 16a8: 0000 unimp + 16aa: 00790007 0x790007 + 16ae: 4040 lw s0,4(s0) + 16b0: 2124 fld fs1,64(a0) + 16b2: b49f 0000 f400 0xf4000000b49f + 16b8: 0000 unimp + 16ba: 0100 addi s0,sp,128 + 16bc: 5900 lw s0,48(a0) + 16be: 0194 addi a3,sp,192 + 16c0: 0000 unimp + 16c2: 021c addi a5,sp,256 + 16c4: 0000 unimp + 16c6: 0001 nop + 16c8: 1c59 addi s8,s8,-10 + 16ca: 0002 c.slli64 zero + 16cc: 2000 fld fs0,0(s0) + 16ce: 0002 c.slli64 zero + 16d0: 0500 addi s0,sp,640 + 16d2: 7a00 flw fs0,48(a2) + 16d4: 3c00 fld fs0,56(s0) + 16d6: 9f25 0x9f25 + 16d8: 0228 addi a0,sp,264 + 16da: 0000 unimp + 16dc: 022c addi a1,sp,264 + 16de: 0000 unimp + 16e0: 0001 nop + 16e2: 2c59 jal 1978 <_start-0x7fffe688> + 16e4: 0002 c.slli64 zero + 16e6: 3000 fld fs0,32(s0) + 16e8: 0002 c.slli64 zero + 16ea: 0500 addi s0,sp,640 + 16ec: 7a00 flw fs0,48(a2) + 16ee: 3c00 fld fs0,56(s0) + 16f0: 9f25 0x9f25 + 16f2: 0238 addi a4,sp,264 + 16f4: 0000 unimp + 16f6: 0264 addi s1,sp,268 + 16f8: 0000 unimp + 16fa: 0001 nop + 16fc: 6459 lui s0,0x16 + 16fe: 0002 c.slli64 zero + 1700: c800 sw s0,16(s0) + 1702: 0004 0x4 + 1704: 0100 addi s0,sp,128 + 1706: 6100 flw fs0,0(a0) + 1708: 0594 addi a3,sp,704 + 170a: 0000 unimp + 170c: 05a8 addi a0,sp,712 + 170e: 0000 unimp + 1710: 0001 nop + 1712: d859 beqz s0,16a8 <_start-0x7fffe958> + 1714: 0005 c.nop 1 + 1716: e400 fsw fs0,8(s0) + 1718: 0005 c.nop 1 + 171a: 0100 addi s0,sp,128 + 171c: 5900 lw s0,48(a0) + 171e: 06d4 addi a3,sp,836 + 1720: 0000 unimp + 1722: 06e0 addi s0,sp,844 + 1724: 0000 unimp + 1726: 0001 nop + 1728: 0061 c.nop 24 + 172a: 0000 unimp + 172c: 0000 unimp + 172e: 0000 unimp + 1730: 3800 fld fs0,48(s0) + 1732: 0002 c.slli64 zero + 1734: e000 fsw fs0,0(s0) + 1736: 0004 0x4 + 1738: 0200 addi s0,sp,256 + 173a: 3000 fld fs0,32(s0) + 173c: 949f 0005 a000 0xa0000005949f + 1742: 0005 c.nop 1 + 1744: 0200 addi s0,sp,256 + 1746: 3000 fld fs0,32(s0) + 1748: a49f 0005 b000 0xb0000005a49f + 174e: 0005 c.nop 1 + 1750: 0100 addi s0,sp,128 + 1752: 6700 flw fs0,8(a4) + 1754: 05b0 addi a2,sp,712 + 1756: 0000 unimp + 1758: 05c8 addi a0,sp,708 + 175a: 0000 unimp + 175c: 0001 nop + 175e: dc5c sw a5,60(s0) + 1760: 0005 c.nop 1 + 1762: e000 fsw fs0,0(s0) + 1764: 0005 c.nop 1 + 1766: 0100 addi s0,sp,128 + 1768: 5c00 lw s0,56(s0) + 176a: 06d4 addi a3,sp,836 + 176c: 0000 unimp + 176e: 06e0 addi s0,sp,844 + 1770: 0000 unimp + 1772: 0002 c.slli64 zero + 1774: 9f30 0x9f30 + ... + 177e: 00d4 addi a3,sp,68 + 1780: 0000 unimp + 1782: 00f4 addi a3,sp,76 + 1784: 0000 unimp + 1786: 0001 nop + 1788: 385d jal 103e <_start-0x7fffefc2> + 178a: 0002 c.slli64 zero + 178c: 6000 flw fs0,0(s0) + 178e: 0005 c.nop 1 + 1790: 0100 addi s0,sp,128 + 1792: 5d00 lw s0,56(a0) + 1794: 0594 addi a3,sp,704 + 1796: 0000 unimp + 1798: 05a4 addi s1,sp,712 + 179a: 0000 unimp + 179c: 0001 nop + 179e: a45d j 1a44 <_start-0x7fffe5bc> + 17a0: 0005 c.nop 1 + 17a2: b000 fsd fs0,32(s0) + 17a4: 0005 c.nop 1 + 17a6: 0600 addi s0,sp,768 + 17a8: 8400 0x8400 + 17aa: 0800 addi s0,sp,16 + 17ac: 1aff 0x1aff + 17ae: b09f 0005 dc00 0xdc000005b09f + 17b4: 0005 c.nop 1 + 17b6: 0100 addi s0,sp,128 + 17b8: 5d00 lw s0,56(a0) + 17ba: 05dc addi a5,sp,708 + 17bc: 0000 unimp + 17be: 05e0 addi s0,sp,716 + 17c0: 0000 unimp + 17c2: 0006 c.slli zero,0x1 + 17c4: 0088 addi a0,sp,64 + 17c6: ff08 fsw fa0,56(a4) + 17c8: 9f1a add t5,t5,t1 + 17ca: 05e0 addi s0,sp,716 + 17cc: 0000 unimp + 17ce: 05ec addi a1,sp,716 + 17d0: 0000 unimp + 17d2: 0001 nop + 17d4: ec5d bnez s0,1892 <_start-0x7fffe76e> + 17d6: 0005 c.nop 1 + 17d8: f400 fsw fs0,40(s0) + 17da: 0005 c.nop 1 + 17dc: 0600 addi s0,sp,768 + 17de: 8400 0x8400 + 17e0: 8800 0x8800 + 17e2: 2700 fld fs0,8(a4) + 17e4: f49f 0005 b400 0xb4000005f49f + 17ea: 0006 c.slli zero,0x1 + 17ec: 0100 addi s0,sp,128 + 17ee: 5d00 lw s0,56(a0) + 17f0: 06b8 addi a4,sp,840 + 17f2: 0000 unimp + 17f4: 06e0 addi s0,sp,844 + 17f6: 0000 unimp + 17f8: 0001 nop + 17fa: 005d c.nop 23 + 17fc: 0000 unimp + 17fe: 0000 unimp + 1800: 0000 unimp + 1802: d800 sw s0,48(s0) + 1804: 0000 unimp + 1806: f400 fsw fs0,40(s0) + 1808: 0000 unimp + 180a: 0100 addi s0,sp,128 + 180c: 5b00 lw s0,48(a4) + 180e: 0238 addi a4,sp,264 + 1810: 0000 unimp + 1812: 04e4 addi s1,sp,588 + 1814: 0000 unimp + 1816: 0001 nop + 1818: 0004e45b 0x4e45b + 181c: 1800 addi s0,sp,48 + 181e: 0005 c.nop 1 + 1820: 0100 addi s0,sp,128 + 1822: 5f00 lw s0,56(a4) + 1824: 0518 addi a4,sp,640 + 1826: 0000 unimp + 1828: 0524 addi s1,sp,648 + 182a: 0000 unimp + 182c: 0004 0x4 + 182e: 9f07ff7b 0x9f07ff7b + 1832: 0524 addi s1,sp,648 + 1834: 0000 unimp + 1836: 0540 addi s0,sp,644 + 1838: 0000 unimp + 183a: 0001 nop + 183c: 945f 0005 c800 0xc8000005945f + 1842: 0005 c.nop 1 + 1844: 0100 addi s0,sp,128 + 1846: 5b00 lw s0,48(a4) + 1848: 05d8 addi a4,sp,708 + 184a: 0000 unimp + 184c: 05f4 addi a3,sp,716 + 184e: 0000 unimp + 1850: 0001 nop + 1852: 0005f45b 0x5f45b + 1856: fc00 fsw fs0,56(s0) + 1858: 0005 c.nop 1 + 185a: 0100 addi s0,sp,128 + 185c: 5f00 lw s0,56(a4) + 185e: 05fc addi a5,sp,716 + 1860: 0000 unimp + 1862: 062c addi a1,sp,776 + 1864: 0000 unimp + 1866: 0001 nop + 1868: 585a lw a6,180(sp) + 186a: 0006 c.slli zero,0x1 + 186c: 6800 flw fs0,16(s0) + 186e: 0006 c.slli zero,0x1 + 1870: 0200 addi s0,sp,256 + 1872: 3000 fld fs0,32(s0) + 1874: 709f 0006 a000 0xa0000006709f + 187a: 0006 c.slli zero,0x1 + 187c: 0100 addi s0,sp,128 + 187e: 5a00 lw s0,48(a2) + 1880: 06a4 addi s1,sp,840 + 1882: 0000 unimp + 1884: 06b8 addi a4,sp,840 + 1886: 0000 unimp + 1888: 0001 nop + 188a: 0006d45b 0x6d45b + 188e: e000 fsw fs0,0(s0) + 1890: 0006 c.slli zero,0x1 + 1892: 0100 addi s0,sp,128 + 1894: 5b00 lw s0,48(a4) + ... + 189e: 0450 addi a2,sp,516 + 18a0: 0000 unimp + 18a2: 04ac addi a1,sp,584 + 18a4: 0000 unimp + 18a6: 0001 nop + 18a8: ac5c fsd fa5,152(s0) + 18aa: 0004 0x4 + 18ac: 0400 addi s0,sp,512 + 18ae: 0005 c.nop 1 + 18b0: 0100 addi s0,sp,128 + 18b2: 6f00 flw fs0,24(a4) + 18b4: 0504 addi s1,sp,640 + 18b6: 0000 unimp + 18b8: 0508 addi a0,sp,640 + 18ba: 0000 unimp + 18bc: 7c7c0003 lb zero,1991(s8) # ffff77c7 <__global_pointer$+0x7fff29ef> + 18c0: 089f 0005 0c00 0xc000005089f + 18c6: 0005 c.nop 1 + 18c8: 0100 addi s0,sp,128 + 18ca: 5c00 lw s0,56(s0) + 18cc: 050c addi a1,sp,640 + 18ce: 0000 unimp + 18d0: 0524 addi s1,sp,648 + 18d2: 0000 unimp + 18d4: 0001 nop + 18d6: 0005246f jal s0,538d6 <_start-0x7ffac72a> + 18da: 3000 fld fs0,32(s0) + 18dc: 0005 c.nop 1 + 18de: 0a00 addi s0,sp,272 + 18e0: 8f00 0x8f00 + 18e2: 3300 fld fs0,32(a4) + 18e4: 7925 lui s2,0xfffe9 + 18e6: 4d00 lw s0,24(a0) + 18e8: 2124 fld fs1,64(a0) + 18ea: 309f 0005 3400 0x34000005309f + 18f0: 0005 c.nop 1 + 18f2: 0800 addi s0,sp,16 + 18f4: 7900 flw fs0,48(a0) + 18f6: 4d00 lw s0,24(a0) + 18f8: 8f24 0x8f24 + 18fa: 2100 fld fs0,0(a0) + 18fc: 349f 0005 3800 0x38000005349f + 1902: 0005 c.nop 1 + 1904: 0600 addi s0,sp,768 + 1906: 8f00 0x8f00 + 1908: 7e00 flw fs0,56(a2) + 190a: 2100 fld fs0,0(a0) + 190c: 389f 0005 3c00 0x3c000005389f + 1912: 0005 c.nop 1 + 1914: 0800 addi s0,sp,16 + 1916: 7900 flw fs0,48(a0) + 1918: 4d00 lw s0,24(a0) + 191a: 8f24 0x8f24 + 191c: 2100 fld fs0,0(a0) + 191e: 3c9f 0005 9400 0x940000053c9f + 1924: 0005 c.nop 1 + 1926: 0100 addi s0,sp,128 + 1928: 5e00 lw s0,56(a2) + 192a: 05a4 addi s1,sp,712 + 192c: 0000 unimp + 192e: 05b0 addi a2,sp,712 + 1930: 0000 unimp + 1932: 0001 nop + 1934: b058 fsd fa4,160(s0) + 1936: 0005 c.nop 1 + 1938: c800 sw s0,16(s0) + 193a: 0005 c.nop 1 + 193c: 0100 addi s0,sp,128 + 193e: 6f00 flw fs0,24(a4) + 1940: 05dc addi a5,sp,708 + 1942: 0000 unimp + 1944: 05e0 addi s0,sp,716 + 1946: 0000 unimp + 1948: 0001 nop + 194a: 0005f46f jal s0,6094a <_start-0x7ff9f6b6> + 194e: 2800 fld fs0,16(s0) + 1950: 0006 c.slli zero,0x1 + 1952: 0100 addi s0,sp,128 + 1954: 6f00 flw fs0,24(a4) + 1956: 0628 addi a0,sp,776 + 1958: 0000 unimp + 195a: 0648 addi a0,sp,772 + 195c: 0000 unimp + 195e: 0001 nop + 1960: 485f 0006 4c00 0x4c000006485f + 1966: 0006 c.slli zero,0x1 + 1968: 0300 addi s0,sp,384 + 196a: 7e00 flw fs0,56(a2) + 196c: 9f7c 0x9f7c + 196e: 064c addi a1,sp,772 + 1970: 0000 unimp + 1972: 0650 addi a2,sp,772 + 1974: 0000 unimp + 1976: 0001 nop + 1978: 505e 0x505e + 197a: 0006 c.slli zero,0x1 + 197c: 6000 flw fs0,0(s0) + 197e: 0006 c.slli zero,0x1 + 1980: 0100 addi s0,sp,128 + 1982: 5f00 lw s0,56(a4) + 1984: 0664 addi s1,sp,780 + 1986: 0000 unimp + 1988: 0668 addi a0,sp,780 + 198a: 0000 unimp + 198c: 0001 nop + 198e: 705e flw ft0,244(sp) + 1990: 0006 c.slli zero,0x1 + 1992: 9400 0x9400 + 1994: 0006 c.slli zero,0x1 + 1996: 0100 addi s0,sp,128 + 1998: 6f00 flw fs0,24(a4) + 199a: 069c addi a5,sp,832 + 199c: 0000 unimp + 199e: 06a4 addi s1,sp,840 + 19a0: 0000 unimp + 19a2: 0001 nop + 19a4: c45f 0006 d000 0xd0000006c45f + 19aa: 0006 c.slli zero,0x1 + 19ac: 0100 addi s0,sp,128 + 19ae: 5f00 lw s0,56(a4) + 19b0: 06d4 addi a3,sp,836 + 19b2: 0000 unimp + 19b4: 06d8 addi a4,sp,836 + 19b6: 0000 unimp + 19b8: 0001 nop + 19ba: 0006d86f jal a6,6e9ba <_start-0x7ff91646> + 19be: e000 fsw fs0,0(s0) + 19c0: 0006 c.slli zero,0x1 + 19c2: 0100 addi s0,sp,128 + 19c4: 5c00 lw s0,56(s0) + ... + 19ce: 02fc addi a5,sp,332 + 19d0: 0000 unimp + 19d2: 0360 addi s0,sp,396 + 19d4: 0000 unimp + 19d6: 0001 nop + 19d8: 0003606f j 379d8 <_start-0x7ffc8628> + 19dc: 6400 flw fs0,8(s0) + 19de: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 19e2: 5900 lw s0,48(a0) + 19e4: 0364 addi s1,sp,396 + 19e6: 0000 unimp + 19e8: 0378 addi a4,sp,396 + 19ea: 0000 unimp + 19ec: 0001 nop + 19ee: 0003786f jal a6,389ee <_start-0x7ffc7612> + 19f2: 2400 fld fs0,8(s0) + 19f4: 0005 c.nop 1 + 19f6: 0100 addi s0,sp,128 + 19f8: 5900 lw s0,48(a0) + 19fa: 0524 addi s1,sp,648 + 19fc: 0000 unimp + 19fe: 053c addi a5,sp,648 + 1a00: 0000 unimp + 1a02: 0005 c.nop 1 + 1a04: 0079 c.nop 30 + 1a06: 3c9f2533 0x3c9f2533 + 1a0a: 0005 c.nop 1 + 1a0c: 4800 lw s0,16(s0) + 1a0e: 0005 c.nop 1 + 1a10: 0100 addi s0,sp,128 + 1a12: 5a00 lw s0,48(a2) + 1a14: 05a4 addi s1,sp,712 + 1a16: 0000 unimp + 1a18: 05b0 addi a2,sp,712 + 1a1a: 0000 unimp + 1a1c: 0001 nop + 1a1e: 0005b063 0x5b063 + 1a22: c800 sw s0,16(s0) + 1a24: 0005 c.nop 1 + 1a26: 0100 addi s0,sp,128 + 1a28: 5900 lw s0,48(a0) + 1a2a: 05dc addi a5,sp,708 + 1a2c: 0000 unimp + 1a2e: 05e0 addi s0,sp,716 + 1a30: 0000 unimp + 1a32: 0001 nop + 1a34: f459 bnez s0,19c2 <_start-0x7fffe63e> + 1a36: 0005 c.nop 1 + 1a38: 2c00 fld fs0,24(s0) + 1a3a: 0006 c.slli zero,0x1 + 1a3c: 0100 addi s0,sp,128 + 1a3e: 5900 lw s0,48(a0) + 1a40: 062c addi a1,sp,776 + 1a42: 0000 unimp + 1a44: 0668 addi a0,sp,780 + 1a46: 0000 unimp + 1a48: 0001 nop + 1a4a: 705a flw ft0,180(sp) + 1a4c: 0006 c.slli zero,0x1 + 1a4e: 9c00 0x9c00 + 1a50: 0006 c.slli zero,0x1 + 1a52: 0100 addi s0,sp,128 + 1a54: 5900 lw s0,48(a0) + 1a56: 069c addi a5,sp,832 + 1a58: 0000 unimp + 1a5a: 06a4 addi s1,sp,840 + 1a5c: 0000 unimp + 1a5e: 0002 c.slli64 zero + 1a60: 9f30 0x9f30 + 1a62: 06c4 addi s1,sp,836 + 1a64: 0000 unimp + 1a66: 06c8 addi a0,sp,836 + 1a68: 0000 unimp + 1a6a: 0001 nop + 1a6c: d45a sw s6,40(sp) + 1a6e: 0006 c.slli zero,0x1 + 1a70: e000 fsw fs0,0(s0) + 1a72: 0006 c.slli zero,0x1 + 1a74: 0100 addi s0,sp,128 + 1a76: 5900 lw s0,48(a0) + ... + 1a80: 0108 addi a0,sp,128 + 1a82: 0000 unimp + 1a84: 010c addi a1,sp,128 + 1a86: 0000 unimp + 1a88: 0001 nop + 1a8a: 0c5a slli s8,s8,0x16 + 1a8c: 0001 nop + 1a8e: 3c00 fld fs0,56(s0) + 1a90: 0001 nop + 1a92: 0100 addi s0,sp,128 + 1a94: 5f00 lw s0,56(a4) + 1a96: 0140 addi s0,sp,132 + 1a98: 0000 unimp + 1a9a: 0148 addi a0,sp,132 + 1a9c: 0000 unimp + 1a9e: 0001 nop + 1aa0: 485a lw a6,148(sp) + 1aa2: 0001 nop + 1aa4: 5800 lw s0,48(s0) + 1aa6: 0001 nop + 1aa8: 0100 addi s0,sp,128 + 1aaa: 5f00 lw s0,56(a4) + ... + 1ab4: 01ac addi a1,sp,200 + 1ab6: 0000 unimp + 1ab8: 01b0 addi a2,sp,200 + 1aba: 0000 unimp + 1abc: 0001 nop + 1abe: 0001b05b 0x1b05b + 1ac2: e000 fsw fs0,0(s0) + 1ac4: 0001 nop + 1ac6: 0100 addi s0,sp,128 + 1ac8: 5f00 lw s0,56(a4) + 1aca: 01e8 addi a0,sp,204 + 1acc: 0000 unimp + 1ace: 01ec addi a1,sp,204 + 1ad0: 0000 unimp + 1ad2: 0001 nop + 1ad4: ec5a fsw fs6,24(sp) + 1ad6: 0001 nop + 1ad8: f000 fsw fs0,32(s0) + 1ada: 0001 nop + 1adc: 0100 addi s0,sp,128 + 1ade: 5b00 lw s0,48(a4) + 1ae0: 01f0 addi a2,sp,204 + 1ae2: 0000 unimp + 1ae4: 0200 addi s0,sp,256 + 1ae6: 0000 unimp + 1ae8: 0001 nop + 1aea: 005f 0000 0000 0x5f + 1af0: 0000 unimp + 1af2: 4400 lw s0,8(s0) + 1af4: 0002 c.slli64 zero + 1af6: 5400 lw s0,40(s0) + 1af8: 0002 c.slli64 zero + 1afa: 0500 addi s0,sp,640 + 1afc: 8300 0x8300 + 1afe: 3100 fld fs0,32(a0) + 1b00: 9f25 0x9f25 + 1b02: 0254 addi a3,sp,260 + 1b04: 0000 unimp + 1b06: 028c addi a1,sp,320 + 1b08: 0000 unimp + 1b0a: 0001 nop + 1b0c: 00059863 bnez a1,1b1c <_start-0x7fffe4e4> + 1b10: a000 fsd fs0,0(s0) + 1b12: 0005 c.nop 1 + 1b14: 0100 addi s0,sp,128 + 1b16: 6300 flw fs0,0(a4) + ... + 1b20: 024c addi a1,sp,260 + 1b22: 0000 unimp + 1b24: 0258 addi a4,sp,260 + 1b26: 0000 unimp + 1b28: 0006 c.slli zero,0x1 + 1b2a: 007c addi a5,sp,12 + 1b2c: 007e c.slli zero,0x1f + 1b2e: 9f21 0x9f21 + 1b30: 0258 addi a4,sp,260 + 1b32: 0000 unimp + 1b34: 02b8 addi a4,sp,328 + 1b36: 0000 unimp + 1b38: 0001 nop + 1b3a: 9858 0x9858 + 1b3c: 0005 c.nop 1 + 1b3e: a000 fsd fs0,0(s0) + 1b40: 0005 c.nop 1 + 1b42: 0100 addi s0,sp,128 + 1b44: 5800 lw s0,48(s0) + ... + 1b4e: 0250 addi a2,sp,260 + 1b50: 0000 unimp + 1b52: 0368 addi a0,sp,396 + 1b54: 0000 unimp + 1b56: 0001 nop + 1b58: 985f 0005 a000 0xa0000005985f + 1b5e: 0005 c.nop 1 + 1b60: 0200 addi s0,sp,256 + 1b62: 3000 fld fs0,32(s0) + 1b64: 009f 0000 0000 0x9f + 1b6a: 0000 unimp + 1b6c: fc00 fsw fs0,56(s0) + 1b6e: 0002 c.slli64 zero + 1b70: 7400 flw fs0,40(s0) + 1b72: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1b76: 5800 lw s0,48(s0) + 1b78: 0378 addi a4,sp,396 + 1b7a: 0000 unimp + 1b7c: 03ac addi a1,sp,456 + 1b7e: 0000 unimp + 1b80: 0001 nop + 1b82: b458 fsd fa4,168(s0) + 1b84: c8000003 lb zero,-896(zero) # fffffc80 <__global_pointer$+0x7fffaea8> + 1b88: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1b8c: 5800 lw s0,48(s0) + 1b8e: 0450 addi a2,sp,516 + 1b90: 0000 unimp + 1b92: 04a8 addi a0,sp,584 + 1b94: 0000 unimp + 1b96: 0001 nop + 1b98: ac58 fsd fa4,152(s0) + 1b9a: 0004 0x4 + 1b9c: d800 sw s0,48(s0) + 1b9e: 0004 0x4 + 1ba0: 0100 addi s0,sp,128 + 1ba2: 5800 lw s0,48(s0) + 1ba4: 04d8 addi a4,sp,580 + 1ba6: 0000 unimp + 1ba8: 04dc addi a5,sp,580 + 1baa: 0000 unimp + 1bac: 0001 nop + 1bae: d45e sw s7,40(sp) + 1bb0: 0006 c.slli zero,0x1 + 1bb2: d800 sw s0,48(s0) + 1bb4: 0006 c.slli zero,0x1 + 1bb6: 0100 addi s0,sp,128 + 1bb8: 5800 lw s0,48(s0) + ... + 1bc2: 0354 addi a3,sp,388 + 1bc4: 0000 unimp + 1bc6: 0368 addi a0,sp,396 + 1bc8: 0000 unimp + 1bca: 0001 nop + 1bcc: 785f 0003 9400 0x94000003785f + 1bd2: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1bd6: 5f00 lw s0,56(a4) + 1bd8: 03a4 addi s1,sp,456 + 1bda: 0000 unimp + 1bdc: 03b0 addi a2,sp,456 + 1bde: 0000 unimp + 1be0: 0001 nop + 1be2: b45f 0003 0000 0x3b45f + 1be8: 0004 0x4 + 1bea: 0100 addi s0,sp,128 + 1bec: 6000 flw fs0,0(s0) + 1bee: 0494 addi a3,sp,576 + 1bf0: 0000 unimp + 1bf2: 04ac addi a1,sp,584 + 1bf4: 0000 unimp + 1bf6: 0002 c.slli64 zero + 1bf8: 9f30 0x9f30 + 1bfa: 04ac addi a1,sp,584 + 1bfc: 0000 unimp + 1bfe: 04c4 addi s1,sp,580 + 1c00: 0000 unimp + 1c02: 0001 nop + 1c04: d056 sw s5,32(sp) + 1c06: 0004 0x4 + 1c08: d400 sw s0,40(s0) + 1c0a: 0004 0x4 + 1c0c: 0100 addi s0,sp,128 + 1c0e: 5f00 lw s0,56(a4) + 1c10: 04d4 addi a3,sp,580 + 1c12: 0000 unimp + 1c14: 04dc addi a5,sp,580 + 1c16: 0000 unimp + 1c18: 0001 nop + 1c1a: d456 sw s5,40(sp) + 1c1c: 0006 c.slli zero,0x1 + 1c1e: d800 sw s0,48(s0) + 1c20: 0006 c.slli zero,0x1 + 1c22: 0100 addi s0,sp,128 + 1c24: 5600 lw s0,40(a2) + ... + 1c2e: 033c addi a5,sp,392 + 1c30: 0000 unimp + 1c32: 03cc addi a1,sp,452 + 1c34: 0000 unimp + 1c36: 0001 nop + 1c38: 7c5c flw fa5,60(s0) + 1c3a: 0004 0x4 + 1c3c: e000 fsw fs0,0(s0) + 1c3e: 0004 0x4 + 1c40: 0100 addi s0,sp,128 + 1c42: 5e00 lw s0,56(a2) + 1c44: 06d4 addi a3,sp,836 + 1c46: 0000 unimp + 1c48: 06e0 addi s0,sp,844 + 1c4a: 0000 unimp + 1c4c: 0001 nop + 1c4e: 005e c.slli zero,0x17 + 1c50: 0000 unimp + 1c52: 0000 unimp + 1c54: 0000 unimp + 1c56: 5400 lw s0,40(s0) + 1c58: a8000003 lb zero,-1408(zero) # fffffa80 <__global_pointer$+0x7fffaca8> + 1c5c: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1c60: 6000 flw fs0,0(s0) + 1c62: 03a8 addi a0,sp,456 + 1c64: 0000 unimp + 1c66: 03b8 addi a4,sp,456 + 1c68: 0000 unimp + 1c6a: 0024 addi s1,sp,8 + 1c6c: 0075008f 0x75008f + 1c70: 8e1a mv t3,t1 + 1c72: 1e00 addi s0,sp,816 + 1c74: 2540008f 0x2540008f + 1c78: 008c addi a1,sp,64 + 1c7a: 221e fld ft4,448(sp) + 1c7c: 0075008f 0x75008f + 1c80: 8c1a mv s8,t1 + 1c82: 1e00 addi s0,sp,816 + 1c84: 2540 fld fs0,136(a0) + 1c86: 7522 flw fa0,40(sp) + 1c88: 1a00 addi s0,sp,304 + 1c8a: 2440 fld fs0,136(s0) + 1c8c: 9f220077 0x9f220077 + 1c90: 0494 addi a3,sp,576 + 1c92: 0000 unimp + 1c94: 04e0 addi s0,sp,588 + 1c96: 0000 unimp + 1c98: 0001 nop + 1c9a: d45a sw s6,40(sp) + 1c9c: 0006 c.slli zero,0x1 + 1c9e: e000 fsw fs0,0(s0) + 1ca0: 0006 c.slli zero,0x1 + 1ca2: 0100 addi s0,sp,128 + 1ca4: 5a00 lw s0,48(a2) + ... + 1cae: 027c addi a5,sp,268 + 1cb0: 0000 unimp + 1cb2: 0488 addi a0,sp,576 + 1cb4: 0000 unimp + 1cb6: 0001 nop + 1cb8: 005a c.slli zero,0x16 + 1cba: 0000 unimp + 1cbc: 0000 unimp + 1cbe: 0000 unimp + 1cc0: 7c00 flw fs0,56(s0) + 1cc2: 0002 c.slli64 zero + 1cc4: 1000 addi s0,sp,32 + 1cc6: 0004 0x4 + 1cc8: 0100 addi s0,sp,128 + 1cca: 6d00 flw fs0,24(a0) + 1ccc: 0410 addi a2,sp,512 + 1cce: 0000 unimp + 1cd0: 04c8 addi a0,sp,580 + 1cd2: 0000 unimp + 1cd4: 00810007 0x810007 + 1cd8: 2440 fld fs0,136(s0) + 1cda: 2540 fld fs0,136(a0) + 1cdc: d49f 0006 e000 0xe0000006d49f + 1ce2: 0006 c.slli zero,0x1 + 1ce4: 0700 addi s0,sp,896 + 1ce6: 8100 0x8100 + 1ce8: 4000 lw s0,0(s0) + 1cea: 4024 lw s1,64(s0) + 1cec: 9f25 0x9f25 + ... + 1cf6: 027c addi a5,sp,268 + 1cf8: 0000 unimp + 1cfa: 029c addi a5,sp,320 + 1cfc: 0000 unimp + 1cfe: 0001 nop + 1d00: 9c60 0x9c60 + 1d02: 0002 c.slli64 zero + 1d04: f400 fsw fs0,40(s0) + 1d06: 0002 c.slli64 zero + 1d08: 0100 addi s0,sp,128 + 1d0a: 6f00 flw fs0,24(a4) + ... + 1d14: 02b4 addi a3,sp,328 + 1d16: 0000 unimp + 1d18: 02dc addi a5,sp,324 + 1d1a: 0000 unimp + 1d1c: 0001 nop + 1d1e: dc6c sw a1,124(s0) + 1d20: 0002 c.slli64 zero + 1d22: 0400 addi s0,sp,512 + 1d24: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1d28: 5c00 lw s0,56(s0) + ... + 1d32: 027c addi a5,sp,268 + 1d34: 0000 unimp + 1d36: 0280 addi s0,sp,320 + 1d38: 0000 unimp + 1d3a: 0006 c.slli zero,0x1 + 1d3c: 007a0083 lb ra,7(s4) + 1d40: 9f1d 0x9f1d + 1d42: 0280 addi s0,sp,320 + 1d44: 0000 unimp + 1d46: 0290 addi a2,sp,320 + 1d48: 0000 unimp + 1d4a: 0001 nop + 1d4c: 9059 srli s0,s0,0x36 + 1d4e: 0002 c.slli64 zero + 1d50: 9800 0x9800 + 1d52: 0002 c.slli64 zero + 1d54: 0100 addi s0,sp,128 + 1d56: 5e00 lw s0,56(a2) + 1d58: 0298 addi a4,sp,320 + 1d5a: 0000 unimp + 1d5c: 029c addi a5,sp,320 + 1d5e: 0000 unimp + 1d60: 0008 0x8 + 1d62: 0078 addi a4,sp,12 + 1d64: 2540 fld fs0,136(a0) + 1d66: 9f210083 lb ra,-1550(sp) + 1d6a: 029c addi a5,sp,320 + 1d6c: 0000 unimp + 1d6e: 02c0 addi s0,sp,324 + 1d70: 0000 unimp + 1d72: 0001 nop + 1d74: 005e c.slli zero,0x17 + 1d76: 0000 unimp + 1d78: 0000 unimp + 1d7a: 0000 unimp + 1d7c: b000 fsd fs0,32(s0) + 1d7e: 0002 c.slli64 zero + 1d80: c000 sw s0,0(s0) + 1d82: 0002 c.slli64 zero + 1d84: 0600 addi s0,sp,768 + 1d86: 7e00 flw fs0,56(a2) + 1d88: 7a00 flw fs0,48(a2) + 1d8a: 1d00 addi s0,sp,688 + 1d8c: c09f 0002 cc00 0xcc000002c09f + 1d92: 0002 c.slli64 zero + 1d94: 0100 addi s0,sp,128 + 1d96: 5e00 lw s0,56(a2) + 1d98: 02d0 addi a2,sp,324 + 1d9a: 0000 unimp + 1d9c: 02d8 addi a4,sp,324 + 1d9e: 0000 unimp + 1da0: 0001 nop + 1da2: dc5e sw s7,56(sp) + 1da4: 0002 c.slli64 zero + 1da6: f000 fsw fs0,32(s0) + 1da8: 0002 c.slli64 zero + 1daa: 0100 addi s0,sp,128 + 1dac: 5e00 lw s0,56(a2) + 1dae: 02f0 addi a2,sp,332 + 1db0: 0000 unimp + 1db2: 0374 addi a3,sp,396 + 1db4: 0000 unimp + 1db6: 0001 nop + 1db8: 0058 addi a4,sp,4 + 1dba: 0000 unimp + 1dbc: 0000 unimp + 1dbe: 0000 unimp + 1dc0: 8800 0x8800 + 1dc2: 0002 c.slli64 zero + 1dc4: c400 sw s0,8(s0) + 1dc6: 0002 c.slli64 zero + 1dc8: 0100 addi s0,sp,128 + 1dca: 5c00 lw s0,56(s0) + 1dcc: 02c4 addi s1,sp,324 + 1dce: 0000 unimp + 1dd0: 02c8 addi a0,sp,324 + 1dd2: 0000 unimp + 1dd4: 0006 c.slli zero,0x1 + 1dd6: 008d addi ra,ra,3 + 1dd8: 0080 addi s0,sp,64 + 1dda: 9f1e add t5,t5,t2 + 1ddc: 02c8 addi a0,sp,324 + 1dde: 0000 unimp + 1de0: 02f8 addi a4,sp,332 + 1de2: 0000 unimp + 1de4: 0001 nop + 1de6: f860 fsw fs0,116(s0) + 1de8: 0002 c.slli64 zero + 1dea: 0000 unimp + 1dec: 06000003 lb zero,96(zero) # 60 <_start-0x7fffffa0> + 1df0: 8d00 0x8d00 + 1df2: 8c00 0x8c00 + 1df4: 1e00 addi s0,sp,816 + 1df6: 009f 0000 0000 0x9f + 1dfc: 0000 unimp + 1dfe: 1400 addi s0,sp,544 + 1e00: 50000003 lb zero,1280(zero) # 500 <_start-0x7ffffb00> + 1e04: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1e08: 5700 lw s0,40(a4) + 1e0a: 0350 addi a2,sp,388 + 1e0c: 0000 unimp + 1e0e: 0360 addi s0,sp,396 + 1e10: 0000 unimp + 1e12: 0009 c.nop 2 + 1e14: 0075008f 0x75008f + 1e18: 8c1a mv s8,t1 + 1e1a: 1e00 addi s0,sp,816 + 1e1c: 609f 0003 6400 0x64000003609f + 1e22: 09000003 lb zero,144(zero) # 90 <_start-0x7fffff70> + 1e26: 7900 flw fs0,48(a0) + 1e28: 7500 flw fs0,40(a0) + 1e2a: 1a00 addi s0,sp,304 + 1e2c: 008c addi a1,sp,64 + 1e2e: 9f1e add t5,t5,t2 + 1e30: 0364 addi s1,sp,396 + 1e32: 0000 unimp + 1e34: 03b8 addi a4,sp,456 + 1e36: 0000 unimp + 1e38: 0009 c.nop 2 + 1e3a: 0075008f 0x75008f + 1e3e: 8c1a mv s8,t1 + 1e40: 1e00 addi s0,sp,816 + 1e42: 009f 0000 0000 0x9f + 1e48: 0000 unimp + 1e4a: 1400 addi s0,sp,544 + 1e4c: 1c000003 lb zero,448(zero) # 1c0 <_start-0x7ffffe40> + 1e50: 06000003 lb zero,96(zero) # 60 <_start-0x7fffffa0> + 1e54: 8e00 0x8e00 + 1e56: 7e00 flw fs0,56(a2) + 1e58: 1e00 addi s0,sp,816 + 1e5a: 1c9f 0003 2400 0x240000031c9f + 1e60: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1e64: 5e00 lw s0,56(a2) + 1e66: 032c addi a1,sp,392 + 1e68: 0000 unimp + 1e6a: 036c addi a1,sp,396 + 1e6c: 0000 unimp + 1e6e: 0001 nop + 1e70: 6c5e flw fs8,212(sp) + 1e72: b8000003 lb zero,-1152(zero) # fffffb80 <__global_pointer$+0x7fffada8> + 1e76: 1c000003 lb zero,448(zero) # 1c0 <_start-0x7ffffe40> + 1e7a: 8f00 0x8f00 + 1e7c: 7500 flw fs0,40(a0) + 1e7e: 1a00 addi s0,sp,304 + 1e80: 008e slli ra,ra,0x3 + 1e82: 8f1e mv t5,t2 + 1e84: 4000 lw s0,0(s0) + 1e86: 8c25 xor s0,s0,s1 + 1e88: 1e00 addi s0,sp,816 + 1e8a: 8f22 mv t5,s0 + 1e8c: 7500 flw fs0,40(a0) + 1e8e: 1a00 addi s0,sp,304 + 1e90: 008c addi a1,sp,64 + 1e92: 401e 0x401e + 1e94: 2225 jal 1fbc <_start-0x7fffe044> + 1e96: 009f 0000 0000 0x9f + 1e9c: 0000 unimp + 1e9e: 1800 addi s0,sp,48 + 1ea0: 5c000003 lb zero,1472(zero) # 5c0 <_start-0x7ffffa40> + 1ea4: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1ea8: 5900 lw s0,48(a0) + 1eaa: 035c addi a5,sp,388 + 1eac: 0000 unimp + 1eae: 0360 addi s0,sp,396 + 1eb0: 0000 unimp + 1eb2: 0008 0x8 + 1eb4: 2540008f 0x2540008f + 1eb8: 008c addi a1,sp,64 + 1eba: 9f1e add t5,t5,t2 + 1ebc: 0360 addi s0,sp,396 + 1ebe: 0000 unimp + 1ec0: 0364 addi s1,sp,396 + 1ec2: 0000 unimp + 1ec4: 0008 0x8 + 1ec6: 0079 c.nop 30 + 1ec8: 2540 fld fs0,136(a0) + 1eca: 008c addi a1,sp,64 + 1ecc: 9f1e add t5,t5,t2 + 1ece: 0364 addi s1,sp,396 + 1ed0: 0000 unimp + 1ed2: 03b8 addi a4,sp,456 + 1ed4: 0000 unimp + 1ed6: 0008 0x8 + 1ed8: 2540008f 0x2540008f + 1edc: 008c addi a1,sp,64 + 1ede: 9f1e add t5,t5,t2 + ... + 1ee8: 0320 addi s0,sp,392 + 1eea: 0000 unimp + 1eec: 0340 addi s0,sp,388 + 1eee: 0000 unimp + 1ef0: 0001 nop + 1ef2: 0055 c.nop 21 + 1ef4: 0000 unimp + 1ef6: 0000 unimp + 1ef8: 0000 unimp + 1efa: fc00 fsw fs0,56(s0) + 1efc: 0002 c.slli64 zero + 1efe: b800 fsd fs0,48(s0) + 1f00: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1f04: 6f00 flw fs0,24(a4) + ... + 1f0e: 0304 addi s1,sp,384 + 1f10: 0000 unimp + 1f12: 04c4 addi s1,sp,580 + 1f14: 0000 unimp + 1f16: 0001 nop + 1f18: d456 sw s5,40(sp) + 1f1a: 0006 c.slli zero,0x1 + 1f1c: e000 fsw fs0,0(s0) + 1f1e: 0006 c.slli zero,0x1 + 1f20: 0100 addi s0,sp,128 + 1f22: 5600 lw s0,40(a2) + ... + 1f2c: 0304 addi s1,sp,384 + 1f2e: 0000 unimp + 1f30: 0324 addi s1,sp,392 + 1f32: 0000 unimp + 1f34: 0001 nop + 1f36: 245c fld fa5,136(s0) + 1f38: 60000003 lb zero,1536(zero) # 600 <_start-0x7ffffa00> + 1f3c: 05000003 lb zero,80(zero) # 50 <_start-0x7fffffb0> + 1f40: 8f00 0x8f00 + 1f42: 4000 lw s0,0(s0) + 1f44: 9f25 0x9f25 + 1f46: 0360 addi s0,sp,396 + 1f48: 0000 unimp + 1f4a: 0364 addi s1,sp,396 + 1f4c: 0000 unimp + 1f4e: 0005 c.nop 1 + 1f50: 0079 c.nop 30 + 1f52: 2540 fld fs0,136(a0) + 1f54: 649f 0003 b800 0xb8000003649f + 1f5a: 05000003 lb zero,80(zero) # 50 <_start-0x7fffffb0> + 1f5e: 8f00 0x8f00 + 1f60: 4000 lw s0,0(s0) + 1f62: 9f25 0x9f25 + ... + 1f6c: 030c addi a1,sp,384 + 1f6e: 0000 unimp + 1f70: 0454 addi a3,sp,516 + 1f72: 0000 unimp + 1f74: 0001 nop + 1f76: 546e lw s0,248(sp) + 1f78: 0004 0x4 + 1f7a: c400 sw s0,8(s0) + 1f7c: 0004 0x4 + 1f7e: 0500 addi s0,sp,640 + 1f80: 7600 flw fs0,40(a2) + 1f82: 4000 lw s0,0(s0) + 1f84: 9f25 0x9f25 + 1f86: 06d4 addi a3,sp,836 + 1f88: 0000 unimp + 1f8a: 06e0 addi s0,sp,844 + 1f8c: 0000 unimp + 1f8e: 0005 c.nop 1 + 1f90: 0076 c.slli zero,0x1d + 1f92: 2540 fld fs0,136(a0) + 1f94: 009f 0000 0000 0x9f + 1f9a: 0000 unimp + 1f9c: 7800 flw fs0,48(s0) + 1f9e: 94000003 lb zero,-1728(zero) # fffff940 <__global_pointer$+0x7fffab68> + 1fa2: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 1fa6: 5f00 lw s0,56(a4) + ... + 1fb0: 03a0 addi s0,sp,456 + 1fb2: 0000 unimp + 1fb4: 03a4 addi s1,sp,456 + 1fb6: 0000 unimp + 1fb8: 0001 nop + 1fba: 005f 0000 0000 0x5f + 1fc0: 0000 unimp + 1fc2: a800 fsd fs0,16(s0) + 1fc4: 00000003 lb zero,0(zero) # 0 <_start-0x80000000> + 1fc8: 0004 0x4 + 1fca: 0100 addi s0,sp,128 + 1fcc: 6000 flw fs0,0(s0) + ... + 1fd6: 03bc addi a5,sp,456 + 1fd8: 0000 unimp + 1fda: 0488 addi a0,sp,576 + 1fdc: 0000 unimp + 1fde: 0001 nop + 1fe0: 005a c.slli zero,0x16 + 1fe2: 0000 unimp + 1fe4: 0000 unimp + 1fe6: 0000 unimp + 1fe8: bc00 fsd fs0,56(s0) + 1fea: 10000003 lb zero,256(zero) # 100 <_start-0x7fffff00> + 1fee: 0004 0x4 + 1ff0: 0100 addi s0,sp,128 + 1ff2: 6d00 flw fs0,24(a0) + 1ff4: 0410 addi a2,sp,512 + 1ff6: 0000 unimp + 1ff8: 04c8 addi a0,sp,580 + 1ffa: 0000 unimp + 1ffc: 00810007 0x810007 + 2000: 2440 fld fs0,136(s0) + 2002: 2540 fld fs0,136(a0) + 2004: d49f 0006 e000 0xe0000006d49f + 200a: 0006 c.slli zero,0x1 + 200c: 0700 addi s0,sp,896 + 200e: 8100 0x8100 + 2010: 4000 lw s0,0(s0) + 2012: 4024 lw s1,64(s0) + 2014: 9f25 0x9f25 + ... + 201e: 03c0 addi s0,sp,452 + 2020: 0000 unimp + 2022: 03e4 addi s1,sp,460 + 2024: 0000 unimp + 2026: 0001 nop + 2028: 0003e46f jal s0,40028 <_start-0x7ffbffd8> + 202c: 3800 fld fs0,48(s0) + 202e: 0004 0x4 + 2030: 0100 addi s0,sp,128 + 2032: 5c00 lw s0,56(s0) + ... + 203c: 03fc addi a5,sp,460 + 203e: 0000 unimp + 2040: 0424 addi s1,sp,520 + 2042: 0000 unimp + 2044: 0001 nop + 2046: 245e fld fs0,464(sp) + 2048: 0004 0x4 + 204a: 4000 lw s0,0(s0) + 204c: 0004 0x4 + 204e: 0100 addi s0,sp,128 + 2050: 5f00 lw s0,56(a4) + ... + 205a: 03bc addi a5,sp,456 + 205c: 0000 unimp + 205e: 03c8 addi a0,sp,452 + 2060: 0000 unimp + 2062: 0006 c.slli zero,0x1 + 2064: 0078 addi a4,sp,12 + 2066: 007a c.slli zero,0x1e + 2068: 9f1d 0x9f1d + 206a: 03c8 addi a0,sp,452 + 206c: 0000 unimp + 206e: 03d4 addi a3,sp,452 + 2070: 0000 unimp + 2072: 0001 nop + 2074: d858 sw a4,52(s0) + 2076: e0000003 lb zero,-512(zero) # fffffe00 <__global_pointer$+0x7fffb028> + 207a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 207e: 5800 lw s0,48(s0) + 2080: 03e4 addi s1,sp,460 + 2082: 0000 unimp + 2084: 0408 addi a0,sp,512 + 2086: 0000 unimp + 2088: 0001 nop + 208a: 0058 addi a4,sp,4 + 208c: 0000 unimp + 208e: 0000 unimp + 2090: 0000 unimp + 2092: f800 fsw fs0,48(s0) + 2094: 08000003 lb zero,128(zero) # 80 <_start-0x7fffff80> + 2098: 0004 0x4 + 209a: 0600 addi s0,sp,768 + 209c: 7800 flw fs0,48(s0) + 209e: 7a00 flw fs0,48(a2) + 20a0: 1d00 addi s0,sp,688 + 20a2: 089f 0004 1400 0x14000004089f + 20a8: 0004 0x4 + 20aa: 0100 addi s0,sp,128 + 20ac: 5800 lw s0,48(s0) + 20ae: 0418 addi a4,sp,512 + 20b0: 0000 unimp + 20b2: 0420 addi s0,sp,520 + 20b4: 0000 unimp + 20b6: 0001 nop + 20b8: 2458 fld fa4,136(s0) + 20ba: 0004 0x4 + 20bc: a800 fsd fs0,16(s0) + 20be: 0004 0x4 + 20c0: 0100 addi s0,sp,128 + 20c2: 5800 lw s0,48(s0) + ... + 20cc: 03d0 addi a2,sp,452 + 20ce: 0000 unimp + 20d0: 040c addi a1,sp,512 + 20d2: 0000 unimp + 20d4: 0001 nop + 20d6: 0c5f 0004 1000 0x100000040c5f + 20dc: 0004 0x4 + 20de: 0600 addi s0,sp,768 + 20e0: 8d00 0x8d00 + 20e2: 8f00 0x8f00 + 20e4: 1e00 addi s0,sp,816 + 20e6: 109f 0004 5800 0x58000004109f + 20ec: 0004 0x4 + 20ee: 0100 addi s0,sp,128 + 20f0: 6d00 flw fs0,24(a0) + ... + 20fa: 0458 addi a4,sp,516 + 20fc: 0000 unimp + 20fe: 0490 addi a2,sp,576 + 2100: 0000 unimp + 2102: 0001 nop + 2104: 906d srli s0,s0,0x3b + 2106: 0004 0x4 + 2108: c400 sw s0,8(s0) + 210a: 0004 0x4 + 210c: 0d00 addi s0,sp,656 + 210e: 7600 flw fs0,40(a2) + 2110: 7500 flw fs0,40(a0) + 2112: 1a00 addi s0,sp,304 + 2114: 007c addi a5,sp,12 + 2116: 2440 fld fs0,136(s0) + 2118: 2540 fld fs0,136(a0) + 211a: 9f1e add t5,t5,t2 + 211c: 06d4 addi a3,sp,836 + 211e: 0000 unimp + 2120: 06d8 addi a4,sp,836 + 2122: 0000 unimp + 2124: 000d c.nop 3 + 2126: 0076 c.slli zero,0x1d + 2128: 0075 c.nop 29 + 212a: 7c1a flw fs8,164(sp) + 212c: 4000 lw s0,0(s0) + 212e: 4024 lw s1,64(s0) + 2130: 1e25 addi t3,t3,-23 + 2132: 009f 0000 0000 0x9f + 2138: 0000 unimp + 213a: 6800 flw fs0,16(s0) + 213c: 0004 0x4 + 213e: c000 sw s0,0(s0) + 2140: 0004 0x4 + 2142: 0100 addi s0,sp,128 + 2144: 5f00 lw s0,56(a4) + 2146: 04c0 addi s0,sp,580 + 2148: 0000 unimp + 214a: 04c4 addi s1,sp,580 + 214c: 0000 unimp + 214e: 0012 c.slli zero,0x4 + 2150: 0076 c.slli zero,0x1d + 2152: 0075 c.nop 29 + 2154: 7c1a flw fs8,164(sp) + 2156: 4000 lw s0,0(s0) + 2158: 4024 lw s1,64(s0) + 215a: 1e25 addi t3,t3,-23 + 215c: 2540 fld fs0,136(a0) + 215e: 008e slli ra,ra,0x3 + 2160: 9f22 add t5,t5,s0 + 2162: 06d4 addi a3,sp,836 + 2164: 0000 unimp + 2166: 06e0 addi s0,sp,844 + 2168: 0000 unimp + 216a: 0001 nop + 216c: 005f 0000 0000 0x5f + 2172: 0000 unimp + 2174: 5c00 lw s0,56(s0) + 2176: 0004 0x4 + 2178: e000 fsw fs0,0(s0) + 217a: 0004 0x4 + 217c: 0100 addi s0,sp,128 + 217e: 6c00 flw fs0,24(s0) + 2180: 06d4 addi a3,sp,836 + 2182: 0000 unimp + 2184: 06e0 addi s0,sp,844 + 2186: 0000 unimp + 2188: 0001 nop + 218a: 006c addi a1,sp,12 + 218c: 0000 unimp + 218e: 0000 unimp + 2190: 0000 unimp + 2192: 5c00 lw s0,56(s0) + 2194: 0004 0x4 + 2196: 8000 0x8000 + 2198: 0004 0x4 + 219a: 0100 addi s0,sp,128 + 219c: 6000 flw fs0,0(s0) + ... + 21a6: 0450 addi a2,sp,516 + 21a8: 0000 unimp + 21aa: 04dc addi a5,sp,580 + 21ac: 0000 unimp + 21ae: 0001 nop + 21b0: d45c sw a5,44(s0) + 21b2: 0006 c.slli zero,0x1 + 21b4: d800 sw s0,48(s0) + 21b6: 0006 c.slli zero,0x1 + 21b8: 0100 addi s0,sp,128 + 21ba: 5c00 lw s0,56(s0) + ... + 21c4: 0450 addi a2,sp,516 + 21c6: 0000 unimp + 21c8: 04c4 addi s1,sp,580 + 21ca: 0000 unimp + 21cc: 0001 nop + 21ce: d456 sw s5,40(sp) + 21d0: 0006 c.slli zero,0x1 + 21d2: e000 fsw fs0,0(s0) + 21d4: 0006 c.slli zero,0x1 + 21d6: 0100 addi s0,sp,128 + 21d8: 5600 lw s0,40(a2) + ... + 21e2: 0450 addi a2,sp,516 + 21e4: 0000 unimp + 21e6: 0470 addi a2,sp,524 + 21e8: 0000 unimp + 21ea: 0001 nop + 21ec: 705e flw ft0,244(sp) + 21ee: 0004 0x4 + 21f0: dc00 sw s0,56(s0) + 21f2: 0004 0x4 + 21f4: 0500 addi s0,sp,640 + 21f6: 7c00 flw fs0,56(s0) + 21f8: 4000 lw s0,0(s0) + 21fa: 9f25 0x9f25 + 21fc: 06d4 addi a3,sp,836 + 21fe: 0000 unimp + 2200: 06d8 addi a4,sp,836 + 2202: 0000 unimp + 2204: 0005 c.nop 1 + 2206: 007c addi a5,sp,12 + 2208: 2540 fld fs0,136(a0) + 220a: 009f 0000 0000 0x9f + 2210: 0000 unimp + 2212: 5000 lw s0,32(s0) + 2214: 0004 0x4 + 2216: 5400 lw s0,40(s0) + 2218: 0004 0x4 + 221a: 0100 addi s0,sp,128 + 221c: 6e00 flw fs0,24(a2) + 221e: 0454 addi a3,sp,516 + 2220: 0000 unimp + 2222: 04c4 addi s1,sp,580 + 2224: 0000 unimp + 2226: 0005 c.nop 1 + 2228: 0076 c.slli zero,0x1d + 222a: 2540 fld fs0,136(a0) + 222c: d49f 0006 e000 0xe0000006d49f + 2232: 0006 c.slli zero,0x1 + 2234: 0500 addi s0,sp,640 + 2236: 7600 flw fs0,40(a2) + 2238: 4000 lw s0,0(s0) + 223a: 9f25 0x9f25 + ... + 2244: 04ac addi a1,sp,584 + 2246: 0000 unimp + 2248: 04c4 addi s1,sp,580 + 224a: 0000 unimp + 224c: 0001 nop + 224e: d456 sw s5,40(sp) + 2250: 0006 c.slli zero,0x1 + 2252: d800 sw s0,48(s0) + 2254: 0006 c.slli zero,0x1 + 2256: 0100 addi s0,sp,128 + 2258: 5600 lw s0,40(a2) + ... + 2262: 04cc addi a1,sp,580 + 2264: 0000 unimp + 2266: 04d4 addi a3,sp,580 + 2268: 0000 unimp + 226a: 0001 nop + 226c: 005f 0000 0000 0x5f + 2272: 0000 unimp + 2274: 0000 unimp + 2276: 0005 c.nop 1 + 2278: 0c00 addi s0,sp,528 + 227a: 0005 c.nop 1 + 227c: 0100 addi s0,sp,128 + 227e: 5c00 lw s0,56(s0) + ... + 2288: 0644 addi s1,sp,772 + 228a: 0000 unimp + 228c: 0650 addi a2,sp,772 + 228e: 0000 unimp + 2290: 0001 nop + 2292: 005e c.slli zero,0x17 + ... + 229c: 0000 unimp + 229e: 2000 fld fs0,0(s0) + 22a0: 0000 unimp + 22a2: 0600 addi s0,sp,768 + 22a4: 5a00 lw s0,48(a2) + 22a6: 935b0493 addi s1,s6,-1739 + 22aa: 2004 fld fs1,0(s0) + 22ac: 0000 unimp + 22ae: e400 fsw fs0,8(s0) + 22b0: 0000 unimp + 22b2: 0600 addi s0,sp,768 + 22b4: f300 fsw fs0,32(a4) + 22b6: 250af503 0x250af503 + 22ba: 009f 0000 0000 0x9f + 22c0: 0000 unimp + 22c2: 0000 unimp + 22c4: 0000 unimp + 22c6: 6c00 flw fs0,24(s0) + 22c8: 0000 unimp + 22ca: 0600 addi s0,sp,768 + 22cc: 5c00 lw s0,56(s0) + 22ce: 935d0493 addi s1,s10,-1739 + 22d2: 6c04 flw fs1,24(s0) + 22d4: 0000 unimp + 22d6: d400 sw s0,40(s0) + 22d8: 0000 unimp + 22da: 0600 addi s0,sp,768 + 22dc: f300 fsw fs0,32(a4) + 22de: 250cf503 0x250cf503 + 22e2: d49f 0000 e400 0xe4000000d49f + 22e8: 0000 unimp + 22ea: 0600 addi s0,sp,768 + 22ec: 5c00 lw s0,56(s0) + 22ee: 935d0493 addi s1,s10,-1739 + 22f2: 0004 0x4 + 22f4: 0000 unimp + 22f6: 0000 unimp + 22f8: 0000 unimp + 22fa: 2000 fld fs0,0(s0) + 22fc: 0000 unimp + 22fe: 4800 lw s0,16(s0) + 2300: 0000 unimp + 2302: 0100 addi s0,sp,128 + 2304: 5a00 lw s0,48(a2) + 2306: 004c addi a1,sp,4 + 2308: 0000 unimp + 230a: 0084 addi s1,sp,64 + 230c: 0000 unimp + 230e: 0001 nop + 2310: 885a mv a6,s6 + 2312: 0000 unimp + 2314: 8c00 0x8c00 + 2316: 0000 unimp + 2318: 0100 addi s0,sp,128 + 231a: 5a00 lw s0,48(a2) + 231c: 0098 addi a4,sp,64 + 231e: 0000 unimp + 2320: 00a0 addi s0,sp,72 + 2322: 0000 unimp + 2324: 0001 nop + 2326: a45a fsd fs6,8(sp) + 2328: 0000 unimp + 232a: b800 fsd fs0,48(s0) + 232c: 0000 unimp + 232e: 0100 addi s0,sp,128 + 2330: 5a00 lw s0,48(a2) + 2332: 00bc addi a5,sp,72 + 2334: 0000 unimp + 2336: 00c0 addi s0,sp,68 + 2338: 0000 unimp + 233a: 0001 nop + 233c: c45a sw s6,8(sp) + 233e: 0000 unimp + 2340: e400 fsw fs0,8(s0) + 2342: 0000 unimp + 2344: 0100 addi s0,sp,128 + 2346: 5a00 lw s0,48(a2) + ... + 2350: 0030 addi a2,sp,8 + 2352: 0000 unimp + 2354: 006c addi a1,sp,12 + 2356: 0000 unimp + 2358: 0001 nop + 235a: 6c5c flw fa5,28(s0) + 235c: 0000 unimp + 235e: d400 sw s0,40(s0) + 2360: 0000 unimp + 2362: 0100 addi s0,sp,128 + 2364: 6c00 flw fs0,24(s0) + 2366: 00d4 addi a3,sp,68 + 2368: 0000 unimp + 236a: 00e4 addi s1,sp,76 + 236c: 0000 unimp + 236e: 0001 nop + 2370: 005c addi a5,sp,4 + 2372: 0000 unimp + 2374: 0000 unimp + 2376: 0000 unimp + 2378: 6400 flw fs0,8(s0) + 237a: 0000 unimp + 237c: 6800 flw fs0,16(s0) + 237e: 0000 unimp + 2380: 0100 addi s0,sp,128 + 2382: 5f00 lw s0,56(a4) + 2384: 00d8 addi a4,sp,68 + 2386: 0000 unimp + 2388: 00e4 addi s1,sp,76 + 238a: 0000 unimp + 238c: 0002 c.slli64 zero + 238e: 9f30 0x9f30 + ... + 2398: 0070 addi a2,sp,12 + 239a: 0000 unimp + 239c: 007c addi a5,sp,12 + 239e: 0000 unimp + 23a0: 0002 c.slli64 zero + 23a2: 9f30 0x9f30 + 23a4: 0088 addi a0,sp,64 + 23a6: 0000 unimp + 23a8: 00b4 addi a3,sp,72 + 23aa: 0000 unimp + 23ac: 0002 c.slli64 zero + 23ae: 9f30 0x9f30 + 23b0: 00c4 addi s1,sp,68 + 23b2: 0000 unimp + 23b4: 00cc addi a1,sp,68 + 23b6: 0000 unimp + 23b8: 0002 c.slli64 zero + 23ba: 9f31 0x9f31 + 23bc: 00cc addi a1,sp,68 + 23be: 0000 unimp + 23c0: 00d4 addi a3,sp,68 + 23c2: 0000 unimp + 23c4: 0002 c.slli64 zero + 23c6: 9f30 0x9f30 + ... + 23d4: 0074 addi a3,sp,12 + 23d6: 0000 unimp + 23d8: 0006 c.slli zero,0x1 + 23da: 935a add t1,t1,s6 + 23dc: 5b04 lw s1,48(a4) + 23de: 00740493 addi s1,s0,7 # 16007 <_start-0x7ffe9ff9> + 23e2: 0000 unimp + 23e4: 00f4 addi a3,sp,76 + 23e6: 0000 unimp + 23e8: 0006 c.slli zero,0x1 + 23ea: 0af503f3 0xaf503f3 + 23ee: 9f25 0x9f25 + 23f0: 00f4 addi a3,sp,76 + 23f2: 0000 unimp + 23f4: 0104 addi s1,sp,128 + 23f6: 0000 unimp + 23f8: 0006 c.slli zero,0x1 + 23fa: 935a add t1,t1,s6 + 23fc: 5b04 lw s1,48(a4) + 23fe: 01040493 addi s1,s0,16 + 2402: 0000 unimp + 2404: 013c addi a5,sp,136 + 2406: 0000 unimp + 2408: 0006 c.slli zero,0x1 + 240a: 0af503f3 0xaf503f3 + 240e: 9f25 0x9f25 + 2410: 013c addi a5,sp,136 + 2412: 0000 unimp + 2414: 0000013f 935a0006 0x935a00060000013f + 241c: 5b04 lw s1,48(a4) + 241e: 013f0493 addi s1,t5,19 # 1a013 <_start-0x7ffe5fed> + 2422: 0000 unimp + 2424: 0158 addi a4,sp,132 + 2426: 0000 unimp + 2428: 0006 c.slli zero,0x1 + 242a: 0af503f3 0xaf503f3 + 242e: 9f25 0x9f25 + 2430: 0158 addi a4,sp,132 + 2432: 0000 unimp + 2434: 0190 addi a2,sp,192 + 2436: 0000 unimp + 2438: 0006 c.slli zero,0x1 + 243a: 935a add t1,t1,s6 + 243c: 5b04 lw s1,48(a4) + 243e: 01900493 li s1,25 + 2442: 0000 unimp + 2444: 05c4 addi s1,sp,708 + 2446: 0000 unimp + 2448: 0006 c.slli zero,0x1 + 244a: 0af503f3 0xaf503f3 + 244e: 9f25 0x9f25 + ... + 245c: 0074 addi a3,sp,12 + 245e: 0000 unimp + 2460: 0006 c.slli zero,0x1 + 2462: 935c 0x935c + 2464: 5d04 lw s1,56(a0) + 2466: 00740493 addi s1,s0,7 + 246a: 0000 unimp + 246c: 00f4 addi a3,sp,76 + 246e: 0000 unimp + 2470: 0006 c.slli zero,0x1 + 2472: 0cf503f3 0xcf503f3 + 2476: 9f25 0x9f25 + 2478: 00f4 addi a3,sp,76 + 247a: 0000 unimp + 247c: 00000107 0x107 + 2480: 0006 c.slli zero,0x1 + 2482: 935c 0x935c + 2484: 5d04 lw s1,56(a0) + 2486: 01070493 addi s1,a4,16 # 18010 <_start-0x7ffe7ff0> + 248a: 0000 unimp + 248c: 013c addi a5,sp,136 + 248e: 0000 unimp + 2490: 0006 c.slli zero,0x1 + 2492: 0cf503f3 0xcf503f3 + 2496: 9f25 0x9f25 + 2498: 013c addi a5,sp,136 + 249a: 0000 unimp + 249c: 0000013f 935c0006 0x935c00060000013f + 24a4: 5d04 lw s1,56(a0) + 24a6: 013f0493 addi s1,t5,19 + 24aa: 0000 unimp + 24ac: 0158 addi a4,sp,132 + 24ae: 0000 unimp + 24b0: 0006 c.slli zero,0x1 + 24b2: 0cf503f3 0xcf503f3 + 24b6: 9f25 0x9f25 + 24b8: 0158 addi a4,sp,132 + 24ba: 0000 unimp + 24bc: 0190 addi a2,sp,192 + 24be: 0000 unimp + 24c0: 0006 c.slli zero,0x1 + 24c2: 935c 0x935c + 24c4: 5d04 lw s1,56(a0) + 24c6: 01900493 li s1,25 + 24ca: 0000 unimp + 24cc: 05c4 addi s1,sp,708 + 24ce: 0000 unimp + 24d0: 0006 c.slli zero,0x1 + 24d2: 0cf503f3 0xcf503f3 + 24d6: 9f25 0x9f25 + ... + 24e4: 0078 addi a4,sp,12 + 24e6: 0000 unimp + 24e8: 0002 c.slli64 zero + 24ea: 9f30 0x9f30 + 24ec: 00f4 addi a3,sp,76 + 24ee: 0000 unimp + 24f0: 0190 addi a2,sp,192 + 24f2: 0000 unimp + 24f4: 0002 c.slli64 zero + 24f6: 9f30 0x9f30 + ... + 2500: 0074 addi a3,sp,12 + 2502: 0000 unimp + 2504: 0078 addi a4,sp,12 + 2506: 0000 unimp + 2508: 0002 c.slli64 zero + 250a: 9f30 0x9f30 + 250c: 0078 addi a4,sp,12 + 250e: 0000 unimp + 2510: 00f4 addi a3,sp,76 + 2512: 0000 unimp + 2514: 0001 nop + 2516: 00019067 0x19067 + 251a: 8c00 0x8c00 + 251c: 0004 0x4 + 251e: 0100 addi s0,sp,128 + 2520: 6700 flw fs0,8(a4) + 2522: 049c addi a5,sp,576 + 2524: 0000 unimp + 2526: 05c4 addi s1,sp,708 + 2528: 0000 unimp + 252a: 0001 nop + 252c: 00000067 jr zero # 0 <_start-0x80000000> + 2530: 0000 unimp + 2532: 0000 unimp + 2534: 4800 lw s0,16(s0) + 2536: 0000 unimp + 2538: 8000 0x8000 + 253a: 0004 0x4 + 253c: 0600 addi s0,sp,768 + 253e: 8400 0x8400 + 2540: 0800 addi s0,sp,16 + 2542: 1aff 0x1aff + 2544: 9c9f 0004 c400 0xc40000049c9f + 254a: 0005 c.nop 1 + 254c: 0600 addi s0,sp,768 + 254e: 8400 0x8400 + 2550: 0800 addi s0,sp,16 + 2552: 1aff 0x1aff + 2554: 009f 0000 0000 0x9f + 255a: 0000 unimp + 255c: 4400 lw s0,8(s0) + 255e: 0000 unimp + 2560: 5400 lw s0,40(s0) + 2562: 0000 unimp + 2564: 0700 addi s0,sp,896 + 2566: 7f00 flw fs0,56(a4) + 2568: 0a00 addi s0,sp,272 + 256a: 07ff 0x7ff + 256c: 9f1a add t5,t5,t1 + 256e: 0054 addi a3,sp,4 + 2570: 0000 unimp + 2572: 0074 addi a3,sp,12 + 2574: 0000 unimp + 2576: 0009 c.nop 2 + 2578: 2544007b 0x2544007b + 257c: ff0a fsw ft2,188(sp) + 257e: 749f1a07 0x749f1a07 + 2582: 0000 unimp + 2584: f400 fsw fs0,40(s0) + 2586: 0000 unimp + 2588: 0100 addi s0,sp,128 + 258a: 6600 flw fs0,8(a2) + 258c: 00f4 addi a3,sp,76 + 258e: 0000 unimp + 2590: 00000107 0x107 + 2594: 007f0007 0x7f0007 + 2598: ff0a fsw ft2,188(sp) + 259a: 3c9f1a07 0x3c9f1a07 + 259e: 0001 nop + 25a0: 3f00 fld fs0,56(a4) + 25a2: 0001 nop + 25a4: 0700 addi s0,sp,896 + 25a6: 7f00 flw fs0,56(a4) + 25a8: 0a00 addi s0,sp,272 + 25aa: 07ff 0x7ff + 25ac: 9f1a add t5,t5,t1 + 25ae: 0158 addi a4,sp,132 + 25b0: 0000 unimp + 25b2: 0170 addi a2,sp,140 + 25b4: 0000 unimp + 25b6: 0009 c.nop 2 + 25b8: 2544007b 0x2544007b + 25bc: ff0a fsw ft2,188(sp) + 25be: 709f1a07 0x709f1a07 + 25c2: 0001 nop + 25c4: 8000 0x8000 + 25c6: 0001 nop + 25c8: 0700 addi s0,sp,896 + 25ca: 7f00 flw fs0,56(a4) + 25cc: 0a00 addi s0,sp,272 + 25ce: 07ff 0x7ff + 25d0: 9f1a add t5,t5,t1 + 25d2: 0180 addi s0,sp,192 + 25d4: 0000 unimp + 25d6: 0190 addi a2,sp,192 + 25d8: 0000 unimp + 25da: 0009 c.nop 2 + 25dc: 2544007b 0x2544007b + 25e0: ff0a fsw ft2,188(sp) + 25e2: 909f1a07 0x909f1a07 + 25e6: 0001 nop + 25e8: 8800 0x8800 + 25ea: 0004 0x4 + 25ec: 0100 addi s0,sp,128 + 25ee: 6600 flw fs0,8(a2) + 25f0: 049c addi a5,sp,576 + 25f2: 0000 unimp + 25f4: 05c4 addi s1,sp,708 + 25f6: 0000 unimp + 25f8: 0001 nop + 25fa: 0066 c.slli zero,0x19 + ... + 2604: 0000 unimp + 2606: 7000 flw fs0,32(s0) + 2608: 0000 unimp + 260a: 0100 addi s0,sp,128 + 260c: 5a00 lw s0,48(a2) + 260e: 0070 addi a2,sp,12 + 2610: 0000 unimp + 2612: 00f4 addi a3,sp,76 + 2614: 0000 unimp + 2616: 0001 nop + 2618: f462 fsw fs8,40(sp) + 261a: 0000 unimp + 261c: 3000 fld fs0,32(s0) + 261e: 0001 nop + 2620: 0100 addi s0,sp,128 + 2622: 5800 lw s0,48(s0) + 2624: 0130 addi a2,sp,136 + 2626: 0000 unimp + 2628: 013c addi a5,sp,136 + 262a: 0000 unimp + 262c: 0001 nop + 262e: 3c62 fld fs8,56(sp) + 2630: 0001 nop + 2632: 5000 lw s0,32(s0) + 2634: 0001 nop + 2636: 0100 addi s0,sp,128 + 2638: 5800 lw s0,48(s0) + 263a: 0150 addi a2,sp,132 + 263c: 0000 unimp + 263e: 0158 addi a4,sp,132 + 2640: 0000 unimp + 2642: 0002 c.slli64 zero + 2644: 9f30 0x9f30 + 2646: 0158 addi a4,sp,132 + 2648: 0000 unimp + 264a: 0190 addi a2,sp,192 + 264c: 0000 unimp + 264e: 0001 nop + 2650: 9058 0x9058 + 2652: 0001 nop + 2654: 4400 lw s0,8(s0) + 2656: 0002 c.slli64 zero + 2658: 0100 addi s0,sp,128 + 265a: 6200 flw fs0,0(a2) + 265c: 049c addi a5,sp,576 + 265e: 0000 unimp + 2660: 04c4 addi s1,sp,580 + 2662: 0000 unimp + 2664: 0001 nop + 2666: d062 sw s8,32(sp) + 2668: 0004 0x4 + 266a: d800 sw s0,48(s0) + 266c: 0004 0x4 + 266e: 0100 addi s0,sp,128 + 2670: 6200 flw fs0,0(a2) + 2672: 0590 addi a2,sp,704 + 2674: 0000 unimp + 2676: 05a4 addi s1,sp,712 + 2678: 0000 unimp + 267a: 0001 nop + 267c: 0062 c.slli zero,0x18 + 267e: 0000 unimp + 2680: 0000 unimp + 2682: 0000 unimp + 2684: 4400 lw s0,8(s0) + 2686: 0000 unimp + 2688: 5800 lw s0,48(s0) + 268a: 0000 unimp + 268c: 0100 addi s0,sp,128 + 268e: 5900 lw s0,48(a0) + 2690: 0058 addi a4,sp,4 + 2692: 0000 unimp + 2694: 0060 addi s0,sp,12 + 2696: 0000 unimp + 2698: 00790007 0x790007 + 269c: 4040 lw s0,4(s0) + 269e: 2124 fld fs1,64(a0) + 26a0: 609f 0000 6c00 0x6c000000609f + 26a6: 0000 unimp + 26a8: 0b00 addi s0,sp,400 + 26aa: 7b00 flw fs0,48(a4) + 26ac: 3c00 fld fs0,56(s0) + 26ae: 3c24 fld fs1,120(s0) + 26b0: 4025 c.li zero,9 + 26b2: 2440 fld fs0,136(s0) + 26b4: 9f21 0x9f21 + 26b6: 006c addi a1,sp,12 + 26b8: 0000 unimp + 26ba: 0124 addi s1,sp,136 + 26bc: 0000 unimp + 26be: 0001 nop + 26c0: 2c59 jal 2956 <_start-0x7fffd6aa> + 26c2: 0001 nop + 26c4: 4c00 lw s0,24(s0) + 26c6: 0001 nop + 26c8: 0100 addi s0,sp,128 + 26ca: 5900 lw s0,48(a0) + 26cc: 0150 addi a2,sp,132 + 26ce: 0000 unimp + 26d0: 0174 addi a3,sp,140 + 26d2: 0000 unimp + 26d4: 0001 nop + 26d6: 7459 lui s0,0xffff6 + 26d8: 0001 nop + 26da: 8000 0x8000 + 26dc: 0001 nop + 26de: 0700 addi s0,sp,896 + 26e0: 7b00 flw fs0,48(a4) + 26e2: 3c00 fld fs0,56(s0) + 26e4: 3c24 fld fs1,120(s0) + 26e6: 9f25 0x9f25 + 26e8: 0180 addi s0,sp,192 + 26ea: 0000 unimp + 26ec: 0184 addi s1,sp,192 + 26ee: 0000 unimp + 26f0: 0001 nop + 26f2: 8459 srai s0,s0,0x16 + 26f4: 0001 nop + 26f6: 9000 0x9000 + 26f8: 0001 nop + 26fa: 0700 addi s0,sp,896 + 26fc: 7b00 flw fs0,48(a4) + 26fe: 3c00 fld fs0,56(s0) + 2700: 3c24 fld fs1,120(s0) + 2702: 9f25 0x9f25 + 2704: 0190 addi a2,sp,192 + 2706: 0000 unimp + 2708: 02d4 addi a3,sp,324 + 270a: 0000 unimp + 270c: 0001 nop + 270e: 9c59 0x9c59 + 2710: 0004 0x4 + 2712: c400 sw s0,8(s0) + 2714: 0004 0x4 + 2716: 0100 addi s0,sp,128 + 2718: 5900 lw s0,48(a0) + 271a: 04d0 addi a2,sp,580 + 271c: 0000 unimp + 271e: 04d8 addi a4,sp,580 + 2720: 0000 unimp + 2722: 0001 nop + 2724: 9059 srli s0,s0,0x36 + 2726: 0005 c.nop 1 + 2728: a400 fsd fs0,8(s0) + 272a: 0005 c.nop 1 + 272c: 0100 addi s0,sp,128 + 272e: 5900 lw s0,48(a0) + ... + 2738: 00b8 addi a4,sp,72 + 273a: 0000 unimp + 273c: 00bc addi a5,sp,72 + 273e: 0000 unimp + 2740: 0002 c.slli64 zero + 2742: 9f30 0x9f30 + 2744: 00bc addi a5,sp,72 + 2746: 0000 unimp + 2748: 00f4 addi a3,sp,76 + 274a: 0000 unimp + 274c: 0001 nop + 274e: 305e fld ft0,496(sp) + 2750: 0002 c.slli64 zero + 2752: 3800 fld fs0,48(s0) + 2754: 0002 c.slli64 zero + 2756: 0100 addi s0,sp,128 + 2758: 5e00 lw s0,56(a2) + 275a: 049c addi a5,sp,576 + 275c: 0000 unimp + 275e: 04ac addi a1,sp,584 + 2760: 0000 unimp + 2762: 0001 nop + 2764: d05e sw s7,32(sp) + 2766: 0004 0x4 + 2768: d800 sw s0,48(s0) + 276a: 0004 0x4 + 276c: 0100 addi s0,sp,128 + 276e: 5e00 lw s0,56(a2) + ... + 2778: 0090 addi a2,sp,64 + 277a: 0000 unimp + 277c: 00f4 addi a3,sp,76 + 277e: 0000 unimp + 2780: 0006 c.slli zero,0x1 + 2782: 0085 addi ra,ra,1 + 2784: ff08 fsw fa0,56(a4) + 2786: 9f1a add t5,t5,t1 + 2788: 0190 addi a2,sp,192 + 278a: 0000 unimp + 278c: 0484 addi s1,sp,576 + 278e: 0000 unimp + 2790: 0006 c.slli zero,0x1 + 2792: 0085 addi ra,ra,1 + 2794: ff08 fsw fa0,56(a4) + 2796: 9f1a add t5,t5,t1 + 2798: 049c addi a5,sp,576 + 279a: 0000 unimp + 279c: 05c4 addi s1,sp,708 + 279e: 0000 unimp + 27a0: 0006 c.slli zero,0x1 + 27a2: 0085 addi ra,ra,1 + 27a4: ff08 fsw fa0,56(a4) + 27a6: 9f1a add t5,t5,t1 + ... + 27b0: 008c addi a1,sp,64 + 27b2: 0000 unimp + 27b4: 00b4 addi a3,sp,72 + 27b6: 0000 unimp + 27b8: 007a0007 0x7a0007 + 27bc: ff0a fsw ft2,188(sp) + 27be: 1aff 0x1aff + 27c0: b49f 0000 b800 0xb8000000b49f + 27c6: 0000 unimp + 27c8: 0800 addi s0,sp,16 + 27ca: 7a00 flw fs0,48(a2) + 27cc: 07ff 0x7ff + 27ce: ff0a fsw ft2,188(sp) + 27d0: 1aff 0x1aff + 27d2: b89f 0000 c800 0xc8000000b89f + 27d8: 0000 unimp + 27da: 0100 addi s0,sp,128 + 27dc: 5a00 lw s0,48(a2) + 27de: 0190 addi a2,sp,192 + 27e0: 0000 unimp + 27e2: 01a0 addi s0,sp,200 + 27e4: 0000 unimp + 27e6: 007a0007 0x7a0007 + 27ea: ff0a fsw ft2,188(sp) + 27ec: 1aff 0x1aff + 27ee: d89f 0001 dc00 0xdc000001d89f + 27f4: 0001 nop + 27f6: 0700 addi s0,sp,896 + 27f8: 7a00 flw fs0,48(a2) + 27fa: 0a00 addi s0,sp,272 + 27fc: ffff 0xffff + 27fe: 9f1a add t5,t5,t1 + 2800: 01f8 addi a4,sp,204 + 2802: 0000 unimp + 2804: 0208 addi a0,sp,256 + 2806: 0000 unimp + 2808: 007a0007 0x7a0007 + 280c: ff0a fsw ft2,188(sp) + 280e: 1aff 0x1aff + 2810: 109f 0002 1800 0x18000002109f + 2816: 0002 c.slli64 zero + 2818: 0700 addi s0,sp,896 + 281a: 7a00 flw fs0,48(a2) + 281c: 0a00 addi s0,sp,272 + 281e: ffff 0xffff + 2820: 9f1a add t5,t5,t1 + 2822: 0220 addi s0,sp,264 + 2824: 0000 unimp + 2826: 0228 addi a0,sp,264 + 2828: 0000 unimp + 282a: 007a0007 0x7a0007 + 282e: ff0a fsw ft2,188(sp) + 2830: 1aff 0x1aff + 2832: 009f 0000 0000 0x9f + 2838: 0000 unimp + 283a: 7800 flw fs0,48(s0) + 283c: 0000 unimp + 283e: b800 fsd fs0,48(s0) + 2840: 0000 unimp + 2842: 0100 addi s0,sp,128 + 2844: 6300 flw fs0,0(a4) + 2846: 00b8 addi a4,sp,72 + 2848: 0000 unimp + 284a: 00f4 addi a3,sp,76 + 284c: 0000 unimp + 284e: 0001 nop + 2850: 905f 0001 cc00 0xcc000001905f + 2856: 0001 nop + 2858: 0100 addi s0,sp,128 + 285a: 6300 flw fs0,0(a4) + 285c: 01cc addi a1,sp,196 + 285e: 0000 unimp + 2860: 01d8 addi a4,sp,196 + 2862: 0000 unimp + 2864: 0001 nop + 2866: d85f 0001 f000 0xf0000001d85f + 286c: 0001 nop + 286e: 0100 addi s0,sp,128 + 2870: 6300 flw fs0,0(a4) + 2872: 01f0 addi a2,sp,204 + 2874: 0000 unimp + 2876: 01f8 addi a4,sp,204 + 2878: 0000 unimp + 287a: 0002 c.slli64 zero + 287c: 9f30 0x9f30 + 287e: 01f8 addi a4,sp,204 + 2880: 0000 unimp + 2882: 0230 addi a2,sp,264 + 2884: 0000 unimp + 2886: 0001 nop + 2888: 00023063 0x23063 + 288c: 4800 lw s0,16(s0) + 288e: 0002 c.slli64 zero + 2890: 0100 addi s0,sp,128 + 2892: 5f00 lw s0,56(a4) + 2894: 049c addi a5,sp,576 + 2896: 0000 unimp + 2898: 04a8 addi a0,sp,584 + 289a: 0000 unimp + 289c: 0001 nop + 289e: d05f 0004 d800 0xd8000004d05f + 28a4: 0004 0x4 + 28a6: 0100 addi s0,sp,128 + 28a8: 5f00 lw s0,56(a4) + ... + 28b2: 0088 addi a0,sp,64 + 28b4: 0000 unimp + 28b6: 009c addi a5,sp,64 + 28b8: 0000 unimp + 28ba: 0001 nop + 28bc: 9c58 0x9c58 + 28be: 0000 unimp + 28c0: a400 fsd fs0,8(s0) + 28c2: 0000 unimp + 28c4: 0700 addi s0,sp,896 + 28c6: 7800 flw fs0,48(s0) + 28c8: 4000 lw s0,0(s0) + 28ca: 2440 fld fs0,136(s0) + 28cc: 9f21 0x9f21 + 28ce: 00b0 addi a2,sp,72 + 28d0: 0000 unimp + 28d2: 00f4 addi a3,sp,76 + 28d4: 0000 unimp + 28d6: 0001 nop + 28d8: 9058 0x9058 + 28da: 0001 nop + 28dc: c000 sw s0,0(s0) + 28de: 0001 nop + 28e0: 0100 addi s0,sp,128 + 28e2: 5800 lw s0,48(s0) + 28e4: 01c8 addi a0,sp,196 + 28e6: 0000 unimp + 28e8: 01ec addi a1,sp,204 + 28ea: 0000 unimp + 28ec: 0001 nop + 28ee: f058 fsw fa4,36(s0) + 28f0: 0001 nop + 28f2: 1400 addi s0,sp,544 + 28f4: 0002 c.slli64 zero + 28f6: 0100 addi s0,sp,128 + 28f8: 5800 lw s0,48(s0) + 28fa: 0220 addi s0,sp,264 + 28fc: 0000 unimp + 28fe: 0224 addi s1,sp,264 + 2900: 0000 unimp + 2902: 0001 nop + 2904: 3058 fld fa4,160(s0) + 2906: 0002 c.slli64 zero + 2908: 8400 0x8400 + 290a: 0002 c.slli64 zero + 290c: 0100 addi s0,sp,128 + 290e: 5800 lw s0,48(s0) + 2910: 049c addi a5,sp,576 + 2912: 0000 unimp + 2914: 04a4 addi s1,sp,584 + 2916: 0000 unimp + 2918: 0001 nop + 291a: d058 sw a4,36(s0) + 291c: 0004 0x4 + 291e: d800 sw s0,48(s0) + 2920: 0004 0x4 + 2922: 0100 addi s0,sp,128 + 2924: 5800 lw s0,48(s0) + ... + 292e: 0230 addi a2,sp,264 + 2930: 0000 unimp + 2932: 03ec addi a1,sp,460 + 2934: 0000 unimp + 2936: 0002 c.slli64 zero + 2938: 9f30 0x9f30 + 293a: 04ac addi a1,sp,584 + 293c: 0000 unimp + 293e: 04c4 addi s1,sp,580 + 2940: 0000 unimp + 2942: 0001 nop + 2944: d85e sw s7,48(sp) + 2946: 0004 0x4 + 2948: e000 fsw fs0,0(s0) + 294a: 0004 0x4 + 294c: 0200 addi s0,sp,256 + 294e: 3000 fld fs0,32(s0) + 2950: 009f 0000 0000 0x9f + 2956: 0000 unimp + 2958: d400 sw s0,40(s0) + 295a: 0000 unimp + 295c: f400 fsw fs0,40(s0) + 295e: 0000 unimp + 2960: 0100 addi s0,sp,128 + 2962: 5c00 lw s0,56(s0) + 2964: 0230 addi a2,sp,264 + 2966: 0000 unimp + 2968: 0464 addi s1,sp,524 + 296a: 0000 unimp + 296c: 0001 nop + 296e: 9c5c 0x9c5c + 2970: 0004 0x4 + 2972: a000 fsd fs0,0(s0) + 2974: 0004 0x4 + 2976: 0100 addi s0,sp,128 + 2978: 5c00 lw s0,56(s0) + 297a: 04a0 addi s0,sp,584 + 297c: 0000 unimp + 297e: 04ac addi a1,sp,584 + 2980: 0000 unimp + 2982: 0006 c.slli zero,0x1 + 2984: 0084 addi s1,sp,64 + 2986: ff08 fsw fa0,56(a4) + 2988: 9f1a add t5,t5,t1 + 298a: 04ac addi a1,sp,584 + 298c: 0000 unimp + 298e: 04d4 addi a3,sp,580 + 2990: 0000 unimp + 2992: 0001 nop + 2994: d45c sw a5,44(s0) + 2996: 0004 0x4 + 2998: d800 sw s0,48(s0) + 299a: 0004 0x4 + 299c: 0600 addi s0,sp,768 + 299e: 8500 0x8500 + 29a0: 0800 addi s0,sp,16 + 29a2: 1aff 0x1aff + 29a4: d89f 0004 a000 0xa0000004d89f + 29aa: 0005 c.nop 1 + 29ac: 0100 addi s0,sp,128 + 29ae: 5c00 lw s0,56(s0) + 29b0: 05a4 addi s1,sp,712 + 29b2: 0000 unimp + 29b4: 05c4 addi s1,sp,708 + 29b6: 0000 unimp + 29b8: 0001 nop + 29ba: 005c addi a5,sp,4 + 29bc: 0000 unimp + 29be: 0000 unimp + 29c0: 0000 unimp + 29c2: d800 sw s0,48(s0) + 29c4: 0000 unimp + 29c6: f400 fsw fs0,40(s0) + 29c8: 0000 unimp + 29ca: 0100 addi s0,sp,128 + 29cc: 5b00 lw s0,48(a4) + 29ce: 0230 addi a2,sp,264 + 29d0: 0000 unimp + 29d2: 03f0 addi a2,sp,460 + 29d4: 0000 unimp + 29d6: 0001 nop + 29d8: 0003f05b 0x3f05b + 29dc: 5400 lw s0,40(s0) + 29de: 0004 0x4 + 29e0: 0100 addi s0,sp,128 + 29e2: 5d00 lw s0,56(a0) + 29e4: 049c addi a5,sp,576 + 29e6: 0000 unimp + 29e8: 04c4 addi s1,sp,580 + 29ea: 0000 unimp + 29ec: 0001 nop + 29ee: 0004d05b 0x4d05b + 29f2: dc00 sw s0,56(s0) + 29f4: 0004 0x4 + 29f6: 0100 addi s0,sp,128 + 29f8: 5b00 lw s0,48(a4) + 29fa: 04dc addi a5,sp,580 + 29fc: 0000 unimp + 29fe: 04e0 addi s0,sp,588 + 2a00: 0000 unimp + 2a02: 017a0003 lb zero,23(s4) + 2a06: e09f 0004 e800 0xe8000004e09f + 2a0c: 0004 0x4 + 2a0e: 0100 addi s0,sp,128 + 2a10: 5d00 lw s0,56(a0) + 2a12: 04e8 addi a0,sp,588 + 2a14: 0000 unimp + 2a16: 0544 addi s1,sp,644 + 2a18: 0000 unimp + 2a1a: 0001 nop + 2a1c: 445a lw s0,148(sp) + 2a1e: 0005 c.nop 1 + 2a20: 5400 lw s0,40(s0) + 2a22: 0005 c.nop 1 + 2a24: 0200 addi s0,sp,256 + 2a26: 3000 fld fs0,32(s0) + 2a28: 5c9f 0005 9000 0x900000055c9f + 2a2e: 0005 c.nop 1 + 2a30: 0100 addi s0,sp,128 + 2a32: 5a00 lw s0,48(a2) + 2a34: 0590 addi a2,sp,704 + 2a36: 0000 unimp + 2a38: 05a4 addi s1,sp,712 + 2a3a: 0000 unimp + 2a3c: 0001 nop + 2a3e: 0005b45b 0x5b45b + 2a42: c400 sw s0,8(s0) + 2a44: 0005 c.nop 1 + 2a46: 0100 addi s0,sp,128 + 2a48: 5a00 lw s0,48(a2) + ... + 2a52: 03d0 addi a2,sp,452 + 2a54: 0000 unimp + 2a56: 03dc addi a5,sp,452 + 2a58: 0000 unimp + 2a5a: 0001 nop + 2a5c: e85f 0003 1000 0x10000003e85f + 2a62: 0004 0x4 + 2a64: 0100 addi s0,sp,128 + 2a66: 5f00 lw s0,56(a4) + 2a68: 0410 addi a2,sp,512 + 2a6a: 0000 unimp + 2a6c: 0414 addi a3,sp,512 + 2a6e: 0000 unimp + 2a70: 7c7e0003 lb zero,1991(t3) # 1d7c7 <_start-0x7ffe2839> + 2a74: 149f 0004 1800 0x18000004149f + 2a7a: 0004 0x4 + 2a7c: 0100 addi s0,sp,128 + 2a7e: 5e00 lw s0,56(a2) + 2a80: 0418 addi a4,sp,512 + 2a82: 0000 unimp + 2a84: 0430 addi a2,sp,520 + 2a86: 0000 unimp + 2a88: 0001 nop + 2a8a: 305f 0004 3c00 0x3c000004305f + 2a90: 0004 0x4 + 2a92: 0a00 addi s0,sp,272 + 2a94: 7f00 flw fs0,56(a4) + 2a96: 3300 fld fs0,32(a4) + 2a98: 7825 lui a6,0xfffe9 + 2a9a: 4d00 lw s0,24(a0) + 2a9c: 2124 fld fs1,64(a0) + 2a9e: 3c9f 0004 4000 0x400000043c9f + 2aa4: 0004 0x4 + 2aa6: 0800 addi s0,sp,16 + 2aa8: 7800 flw fs0,48(s0) + 2aaa: 4d00 lw s0,24(a0) + 2aac: 7e24 flw fs1,120(a2) + 2aae: 2100 fld fs0,0(a0) + 2ab0: 409f 0004 4400 0x44000004409f + 2ab6: 0004 0x4 + 2ab8: 0600 addi s0,sp,768 + 2aba: 7e00 flw fs0,56(a2) + 2abc: 7f00 flw fs0,56(a4) + 2abe: 2100 fld fs0,0(a0) + 2ac0: 449f 0004 4800 0x48000004449f + 2ac6: 0004 0x4 + 2ac8: 0800 addi s0,sp,16 + 2aca: 7800 flw fs0,48(s0) + 2acc: 4d00 lw s0,24(a0) + 2ace: 7e24 flw fs1,120(a2) + 2ad0: 2100 fld fs0,0(a0) + 2ad2: 489f 0004 9c00 0x9c000004489f + 2ad8: 0004 0x4 + 2ada: 0100 addi s0,sp,128 + 2adc: 5f00 lw s0,56(a4) + 2ade: 04ac addi a1,sp,584 + 2ae0: 0000 unimp + 2ae2: 04cc addi a1,sp,580 + 2ae4: 0000 unimp + 2ae6: 0001 nop + 2ae8: d85f 0004 0800 0x8000004d85f + 2aee: 0005 c.nop 1 + 2af0: 0100 addi s0,sp,128 + 2af2: 5f00 lw s0,56(a4) + 2af4: 0514 addi a3,sp,640 + 2af6: 0000 unimp + 2af8: 0534 addi a3,sp,648 + 2afa: 0000 unimp + 2afc: 0001 nop + 2afe: 345f 0005 3800 0x38000005345f + 2b04: 0005 c.nop 1 + 2b06: 0300 addi s0,sp,384 + 2b08: 7e00 flw fs0,56(a2) + 2b0a: 9f7c 0x9f7c + 2b0c: 0538 addi a4,sp,648 + 2b0e: 0000 unimp + 2b10: 053c addi a5,sp,648 + 2b12: 0000 unimp + 2b14: 0001 nop + 2b16: 3c5e fld fs8,496(sp) + 2b18: 0005 c.nop 1 + 2b1a: 4c00 lw s0,24(s0) + 2b1c: 0005 c.nop 1 + 2b1e: 0100 addi s0,sp,128 + 2b20: 5f00 lw s0,56(a4) + 2b22: 0550 addi a2,sp,644 + 2b24: 0000 unimp + 2b26: 0554 addi a3,sp,644 + 2b28: 0000 unimp + 2b2a: 0001 nop + 2b2c: 5c5f 0005 8000 0x800000055c5f + 2b32: 0005 c.nop 1 + 2b34: 0100 addi s0,sp,128 + 2b36: 5f00 lw s0,56(a4) + 2b38: 0588 addi a0,sp,704 + 2b3a: 0000 unimp + 2b3c: 0590 addi a2,sp,704 + 2b3e: 0000 unimp + 2b40: 0001 nop + 2b42: b45f 0005 bc00 0xbc000005b45f + 2b48: 0005 c.nop 1 + 2b4a: 0100 addi s0,sp,128 + 2b4c: 5f00 lw s0,56(a4) + ... + 2b56: 03d0 addi a2,sp,452 + 2b58: 0000 unimp + 2b5a: 0430 addi a2,sp,520 + 2b5c: 0000 unimp + 2b5e: 0001 nop + 2b60: 3058 fld fa4,160(s0) + 2b62: 0004 0x4 + 2b64: 4800 lw s0,16(s0) + 2b66: 0004 0x4 + 2b68: 0500 addi s0,sp,640 + 2b6a: 7800 flw fs0,48(s0) + 2b6c: 3300 fld fs0,32(a4) + 2b6e: 9f25 0x9f25 + 2b70: 0448 addi a0,sp,516 + 2b72: 0000 unimp + 2b74: 0450 addi a2,sp,516 + 2b76: 0000 unimp + 2b78: 0001 nop + 2b7a: ac58 fsd fa4,152(s0) + 2b7c: 0004 0x4 + 2b7e: c800 sw s0,16(s0) + 2b80: 0004 0x4 + 2b82: 0100 addi s0,sp,128 + 2b84: 5800 lw s0,48(s0) + 2b86: 04d8 addi a4,sp,580 + 2b88: 0000 unimp + 2b8a: 0554 addi a3,sp,644 + 2b8c: 0000 unimp + 2b8e: 0001 nop + 2b90: 5c58 lw a4,60(s0) + 2b92: 0005 c.nop 1 + 2b94: 8800 0x8800 + 2b96: 0005 c.nop 1 + 2b98: 0100 addi s0,sp,128 + 2b9a: 5800 lw s0,48(s0) + 2b9c: 0588 addi a0,sp,704 + 2b9e: 0000 unimp + 2ba0: 0590 addi a2,sp,704 + 2ba2: 0000 unimp + 2ba4: 0002 c.slli64 zero + 2ba6: 9f30 0x9f30 + 2ba8: 05b4 addi a3,sp,712 + 2baa: 0000 unimp + 2bac: 05b8 addi a4,sp,712 + 2bae: 0000 unimp + 2bb0: 0001 nop + 2bb2: 0058 addi a4,sp,4 + 2bb4: 0000 unimp + 2bb6: 0000 unimp + 2bb8: 0000 unimp + 2bba: 0800 addi s0,sp,16 + 2bbc: 0001 nop + 2bbe: 0c00 addi s0,sp,528 + 2bc0: 0001 nop + 2bc2: 0100 addi s0,sp,128 + 2bc4: 5a00 lw s0,48(a2) + 2bc6: 010c addi a1,sp,128 + 2bc8: 0000 unimp + 2bca: 013c addi a5,sp,136 + 2bcc: 0000 unimp + 2bce: 0001 nop + 2bd0: 405e 0x405e + 2bd2: 0001 nop + 2bd4: 4800 lw s0,16(s0) + 2bd6: 0001 nop + 2bd8: 0100 addi s0,sp,128 + 2bda: 5a00 lw s0,48(a2) + 2bdc: 0148 addi a0,sp,132 + 2bde: 0000 unimp + 2be0: 0158 addi a4,sp,132 + 2be2: 0000 unimp + 2be4: 0001 nop + 2be6: 005e c.slli zero,0x17 + 2be8: 0000 unimp + 2bea: 0000 unimp + 2bec: 0000 unimp + 2bee: a400 fsd fs0,8(s0) + 2bf0: 0001 nop + 2bf2: a800 fsd fs0,16(s0) + 2bf4: 0001 nop + 2bf6: 0100 addi s0,sp,128 + 2bf8: 5a00 lw s0,48(a2) + 2bfa: 01a8 addi a0,sp,200 + 2bfc: 0000 unimp + 2bfe: 01d8 addi a4,sp,196 + 2c00: 0000 unimp + 2c02: 0001 nop + 2c04: e05d bnez s0,2caa <_start-0x7fffd356> + 2c06: 0001 nop + 2c08: e800 fsw fs0,16(s0) + 2c0a: 0001 nop + 2c0c: 0100 addi s0,sp,128 + 2c0e: 5a00 lw s0,48(a2) + 2c10: 01e8 addi a0,sp,204 + 2c12: 0000 unimp + 2c14: 01f8 addi a4,sp,204 + 2c16: 0000 unimp + 2c18: 0001 nop + 2c1a: 005d c.nop 23 + 2c1c: 0000 unimp + 2c1e: 0000 unimp + 2c20: 0000 unimp + 2c22: e000 fsw fs0,0(s0) + 2c24: 0002 c.slli64 zero + 2c26: 6400 flw fs0,8(s0) + 2c28: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2c2c: 6200 flw fs0,0(a2) + ... + 2c36: 02b8 addi a4,sp,328 + 2c38: 0000 unimp + 2c3a: 03ec addi a1,sp,460 + 2c3c: 0000 unimp + 2c3e: 0001 nop + 2c40: d86d beqz s0,2c32 <_start-0x7fffd3ce> + 2c42: 0004 0x4 + 2c44: e000 fsw fs0,0(s0) + 2c46: 0004 0x4 + 2c48: 0100 addi s0,sp,128 + 2c4a: 6d00 flw fs0,24(a0) + ... + 2c54: 0324 addi s1,sp,392 + 2c56: 0000 unimp + 2c58: 0374 addi a3,sp,396 + 2c5a: 0000 unimp + 2c5c: 0001 nop + 2c5e: 0060 addi s0,sp,12 + 2c60: 0000 unimp + 2c62: 0000 unimp + 2c64: 0000 unimp + 2c66: 0c00 addi s0,sp,528 + 2c68: 94000003 lb zero,-1728(zero) # fffff940 <__global_pointer$+0x7fffab68> + 2c6c: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2c70: 6f00 flw fs0,24(a4) + ... + 2c7a: 0250 addi a2,sp,260 + 2c7c: 0000 unimp + 2c7e: 0278 addi a4,sp,268 + 2c80: 0000 unimp + 2c82: 0001 nop + 2c84: 7860 flw fs0,116(s0) + 2c86: 0002 c.slli64 zero + 2c88: 9400 0x9400 + 2c8a: 0002 c.slli64 zero + 2c8c: 0600 addi s0,sp,768 + 2c8e: 8200 0x8200 + 2c90: 7f00 flw fs0,56(a4) + 2c92: 1e00 addi s0,sp,816 + 2c94: 009f 0000 0000 0x9f + 2c9a: 0000 unimp + 2c9c: 5000 lw s0,32(s0) + 2c9e: 0002 c.slli64 zero + 2ca0: 5c00 lw s0,56(s0) + 2ca2: 0002 c.slli64 zero + 2ca4: 0100 addi s0,sp,128 + 2ca6: 6100 flw fs0,0(a0) + 2ca8: 025c addi a5,sp,260 + 2caa: 0000 unimp + 2cac: 0264 addi s1,sp,268 + 2cae: 0000 unimp + 2cb0: 0006 c.slli zero,0x1 + 2cb2: 0076 c.slli zero,0x1d + 2cb4: 0082 c.slli64 ra + 2cb6: 9f1e add t5,t5,t2 + 2cb8: 0264 addi s1,sp,268 + 2cba: 0000 unimp + 2cbc: 0274 addi a3,sp,268 + 2cbe: 0000 unimp + 2cc0: 0001 nop + 2cc2: 7461 lui s0,0xffff8 + 2cc4: 0002 c.slli64 zero + 2cc6: 7800 flw fs0,48(s0) + 2cc8: 0002 c.slli64 zero + 2cca: 0800 addi s0,sp,16 + 2ccc: 8000 0x8000 + 2cce: 4000 lw s0,0(s0) + 2cd0: 8d25 xor a0,a0,s1 + 2cd2: 2200 fld fs0,0(a2) + 2cd4: 789f 0002 9400 0x94000002789f + 2cda: 0002 c.slli64 zero + 2cdc: 0b00 addi s0,sp,400 + 2cde: 8200 0x8200 + 2ce0: 7f00 flw fs0,56(a4) + 2ce2: 1e00 addi s0,sp,816 + 2ce4: 2540 fld fs0,136(a0) + 2ce6: 008d addi ra,ra,3 + 2ce8: 9f22 add t5,t5,s0 + ... + 2cf2: 0254 addi a3,sp,260 + 2cf4: 0000 unimp + 2cf6: 02c0 addi s0,sp,324 + 2cf8: 0000 unimp + 2cfa: 0001 nop + 2cfc: 0000006f j 2cfc <_start-0x7fffd304> + 2d00: 0000 unimp + 2d02: 0000 unimp + 2d04: 6400 flw fs0,8(s0) + 2d06: 0002 c.slli64 zero + 2d08: 5c00 lw s0,56(s0) + 2d0a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2d0e: 6c00 flw fs0,24(s0) + ... + 2d18: 0230 addi a2,sp,264 + 2d1a: 0000 unimp + 2d1c: 0244 addi s1,sp,260 + 2d1e: 0000 unimp + 2d20: 0001 nop + 2d22: 0062 c.slli zero,0x18 + 2d24: 0000 unimp + 2d26: 0000 unimp + 2d28: 0000 unimp + 2d2a: 3c00 fld fs0,56(s0) + 2d2c: 0002 c.slli64 zero + 2d2e: 4800 lw s0,16(s0) + 2d30: 0002 c.slli64 zero + 2d32: 0100 addi s0,sp,128 + 2d34: 5f00 lw s0,56(a4) + ... + 2d3e: 023c addi a5,sp,264 + 2d40: 0000 unimp + 2d42: 02a4 addi s1,sp,328 + 2d44: 0000 unimp + 2d46: 0001 nop + 2d48: 005d c.nop 23 + 2d4a: 0000 unimp + 2d4c: 0000 unimp + 2d4e: 0000 unimp + 2d50: 4000 lw s0,0(s0) + 2d52: 0002 c.slli64 zero + 2d54: f000 fsw fs0,32(s0) + 2d56: 0002 c.slli64 zero + 2d58: 0100 addi s0,sp,128 + 2d5a: 5600 lw s0,40(a2) + ... + 2d64: 0290 addi a2,sp,320 + 2d66: 0000 unimp + 2d68: 02c8 addi a0,sp,324 + 2d6a: 0000 unimp + 2d6c: 0001 nop + 2d6e: 0060 addi s0,sp,12 + 2d70: 0000 unimp + 2d72: 0000 unimp + 2d74: 0000 unimp + 2d76: 9000 0x9000 + 2d78: 0002 c.slli64 zero + 2d7a: 9400 0x9400 + 2d7c: 0002 c.slli64 zero + 2d7e: 0600 addi s0,sp,768 + 2d80: 8e00 0x8e00 + 2d82: 8200 0x8200 + 2d84: 1e00 addi s0,sp,816 + 2d86: 949f 0002 9c00 0x9c000002949f + 2d8c: 0002 c.slli64 zero + 2d8e: 0100 addi s0,sp,128 + 2d90: 6200 flw fs0,0(a2) + 2d92: 02a4 addi s1,sp,328 + 2d94: 0000 unimp + 2d96: 02c4 addi s1,sp,324 + 2d98: 0000 unimp + 2d9a: 0001 nop + 2d9c: 0062 c.slli zero,0x18 + 2d9e: 0000 unimp + 2da0: 0000 unimp + 2da2: 0000 unimp + 2da4: 9000 0x9000 + 2da6: 0002 c.slli64 zero + 2da8: ac00 fsd fs0,24(s0) + 2daa: 0002 c.slli64 zero + 2dac: 0100 addi s0,sp,128 + 2dae: 5e00 lw s0,56(a2) + ... + 2db8: 02a4 addi s1,sp,328 + 2dba: 0000 unimp + 2dbc: 02bc addi a5,sp,328 + 2dbe: 0000 unimp + 2dc0: 0001 nop + 2dc2: 005d c.nop 23 + 2dc4: 0000 unimp + 2dc6: 0000 unimp + 2dc8: 0000 unimp + 2dca: 8800 0x8800 + 2dcc: 0002 c.slli64 zero + 2dce: a400 fsd fs0,8(s0) + 2dd0: 0002 c.slli64 zero + 2dd2: 0100 addi s0,sp,128 + 2dd4: 5d00 lw s0,56(a0) + ... + 2dde: 0288 addi a0,sp,320 + 2de0: 0000 unimp + 2de2: 0378 addi a4,sp,396 + 2de4: 0000 unimp + 2de6: 0001 nop + 2de8: 006e c.slli zero,0x1b + 2dea: 0000 unimp + 2dec: 0000 unimp + 2dee: 0000 unimp + 2df0: e000 fsw fs0,0(s0) + 2df2: 0002 c.slli64 zero + 2df4: 1c00 addi s0,sp,560 + 2df6: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2dfa: 5700 lw s0,40(a4) + ... + 2e04: 02e0 addi s0,sp,332 + 2e06: 0000 unimp + 2e08: 02e4 addi s1,sp,332 + 2e0a: 0000 unimp + 2e0c: 0006 c.slli zero,0x1 + 2e0e: 0076 c.slli zero,0x1d + 2e10: 0079 c.nop 30 + 2e12: 9f1e add t5,t5,t2 + 2e14: 02e4 addi s1,sp,332 + 2e16: 0000 unimp + 2e18: 02f0 addi a2,sp,332 + 2e1a: 0000 unimp + 2e1c: 0001 nop + 2e1e: f060 fsw fs0,100(s0) + 2e20: 0002 c.slli64 zero + 2e22: f400 fsw fs0,40(s0) + 2e24: 0002 c.slli64 zero + 2e26: 0800 addi s0,sp,16 + 2e28: 7700 flw fs0,40(a4) + 2e2a: 4000 lw s0,0(s0) + 2e2c: 8025 srli s0,s0,0x9 + 2e2e: 2200 fld fs0,0(a2) + 2e30: f89f 0002 1400 0x14000002f89f + 2e36: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2e3a: 6000 flw fs0,0(s0) + 2e3c: 0314 addi a3,sp,384 + 2e3e: 0000 unimp + 2e40: 031c addi a5,sp,384 + 2e42: 0000 unimp + 2e44: 0008 0x8 + 2e46: 25400077 0x25400077 + 2e4a: 0076 c.slli zero,0x1d + 2e4c: 9f22 add t5,t5,s0 + ... + 2e56: 02e8 addi a0,sp,332 + 2e58: 0000 unimp + 2e5a: 0304 addi s1,sp,384 + 2e5c: 0000 unimp + 2e5e: 0001 nop + 2e60: 005f 0000 0000 0x5f + 2e66: 0000 unimp + 2e68: ec00 fsw fs0,24(s0) + 2e6a: 0002 c.slli64 zero + 2e6c: 0c00 addi s0,sp,528 + 2e6e: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2e72: 6f00 flw fs0,24(a4) + ... + 2e7c: 02e0 addi s0,sp,332 + 2e7e: 0000 unimp + 2e80: 0338 addi a4,sp,392 + 2e82: 0000 unimp + 2e84: 0001 nop + 2e86: 005e c.slli zero,0x17 + 2e88: 0000 unimp + 2e8a: 0000 unimp + 2e8c: 0000 unimp + 2e8e: e000 fsw fs0,0(s0) + 2e90: 0002 c.slli64 zero + 2e92: f000 fsw fs0,32(s0) + 2e94: 0002 c.slli64 zero + 2e96: 0100 addi s0,sp,128 + 2e98: 5600 lw s0,40(a2) + ... + 2ea2: 0324 addi s1,sp,392 + 2ea4: 0000 unimp + 2ea6: 03ec addi a1,sp,460 + 2ea8: 0000 unimp + 2eaa: 0001 nop + 2eac: 0004d857 0x4d857 + 2eb0: e000 fsw fs0,0(s0) + 2eb2: 0004 0x4 + 2eb4: 0100 addi s0,sp,128 + 2eb6: 5700 lw s0,40(a4) + ... + 2ec0: 0324 addi s1,sp,392 + 2ec2: 0000 unimp + 2ec4: 032c addi a1,sp,392 + 2ec6: 0000 unimp + 2ec8: 0006 c.slli zero,0x1 + 2eca: 008e slli ra,ra,0x3 + 2ecc: 0079 c.nop 30 + 2ece: 9f1e add t5,t5,t2 + 2ed0: 032c addi a1,sp,392 + 2ed2: 0000 unimp + 2ed4: 0334 addi a3,sp,392 + 2ed6: 0000 unimp + 2ed8: 0001 nop + 2eda: 3c59 jal 2970 <_start-0x7fffd690> + 2edc: 90000003 lb zero,-1792(zero) # fffff900 <__global_pointer$+0x7fffab28> + 2ee0: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2ee4: 5900 lw s0,48(a0) + ... + 2eee: 0328 addi a0,sp,392 + 2ef0: 0000 unimp + 2ef2: 03bc addi a5,sp,456 + 2ef4: 0000 unimp + 2ef6: 0001 nop + 2ef8: 0058 addi a4,sp,4 + 2efa: 0000 unimp + 2efc: 0000 unimp + 2efe: 0000 unimp + 2f00: 3000 fld fs0,32(s0) + 2f02: ec000003 lb zero,-320(zero) # fffffec0 <__global_pointer$+0x7fffb0e8> + 2f06: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2f0a: 5600 lw s0,40(a2) + 2f0c: 04d8 addi a4,sp,580 + 2f0e: 0000 unimp + 2f10: 04e0 addi s0,sp,588 + 2f12: 0000 unimp + 2f14: 0001 nop + 2f16: 0056 c.slli zero,0x15 + 2f18: 0000 unimp + 2f1a: 0000 unimp + 2f1c: 0000 unimp + 2f1e: 2400 fld fs0,8(s0) + 2f20: 38000003 lb zero,896(zero) # 380 <_start-0x7ffffc80> + 2f24: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2f28: 5e00 lw s0,56(a2) + ... + 2f32: 0324 addi s1,sp,392 + 2f34: 0000 unimp + 2f36: 0378 addi a4,sp,396 + 2f38: 0000 unimp + 2f3a: 0001 nop + 2f3c: 006e c.slli zero,0x1b + 2f3e: 0000 unimp + 2f40: 0000 unimp + 2f42: 0000 unimp + 2f44: 6400 flw fs0,8(s0) + 2f46: ec000003 lb zero,-320(zero) # fffffec0 <__global_pointer$+0x7fffb0e8> + 2f4a: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 2f4e: 6200 flw fs0,0(a2) + 2f50: 04d8 addi a4,sp,580 + 2f52: 0000 unimp + 2f54: 04e0 addi s0,sp,588 + 2f56: 0000 unimp + 2f58: 0001 nop + 2f5a: 0062 c.slli zero,0x18 + 2f5c: 0000 unimp + 2f5e: 0000 unimp + 2f60: 0000 unimp + 2f62: 6800 flw fs0,16(s0) + 2f64: 6c000003 lb zero,1728(zero) # 6c0 <_start-0x7ffff940> + 2f68: 11000003 lb zero,272(zero) # 110 <_start-0x7ffffef0> + 2f6c: 7d00 flw fs0,56(a0) + 2f6e: 4000 lw s0,0(s0) + 2f70: 8d22244b 0x8d22244b + 2f74: 4000 lw s0,0(s0) + 2f76: 2d22244b 0x2d22244b + 2f7a: ff08 fsw fa0,56(a4) + 2f7c: 9f1a add t5,t5,t1 + 2f7e: 036c addi a1,sp,396 + 2f80: 0000 unimp + 2f82: 0380 addi s0,sp,448 + 2f84: 0000 unimp + 2f86: 001f 007d 4b40 0x4b40007d001f + 2f8c: 2224 fld fs1,64(a2) + 2f8e: 008d addi ra,ra,3 + 2f90: 4b40 lw s0,20(a4) + 2f92: 2224 fld fs1,64(a2) + 2f94: 7e2d lui t3,0xfffeb + 2f96: 4000 lw s0,0(s0) + 2f98: 8222244b fnmsub.d fs0,ft4,ft2,fa6,rdn + 2f9c: 4000 lw s0,0(s0) + 2f9e: 2d22244b 0x2d22244b + 2fa2: 0821 addi a6,a6,8 + 2fa4: 1aff 0x1aff + 2fa6: 809f 0003 8400 0x84000003809f + 2fac: 34000003 lb zero,832(zero) # 340 <_start-0x7ffffcc0> + 2fb0: 7900 flw fs0,48(a0) + 2fb2: 0a00 addi s0,sp,272 + 2fb4: ffff 0xffff + 2fb6: 401a 0x401a + 2fb8: 7f24 flw fs1,120(a4) + 2fba: 2200 fld fs0,0(a2) + 2fbc: 008d addi ra,ra,3 + 2fbe: 4022 0x4022 + 2fc0: 7922244b fnmsub.s fs0,ft4,fs2,fa5,rdn + 2fc4: 0a00 addi s0,sp,272 + 2fc6: ffff 0xffff + 2fc8: 401a 0x401a + 2fca: 7f24 flw fs1,120(a4) + 2fcc: 2200 fld fs0,0(a2) + 2fce: 4b40 lw s0,20(a4) + 2fd0: 2224 fld fs1,64(a2) + 2fd2: 7e2d lui t3,0xfffeb + 2fd4: 4000 lw s0,0(s0) + 2fd6: 8222244b fnmsub.d fs0,ft4,ft2,fa6,rdn + 2fda: 4000 lw s0,0(s0) + 2fdc: 2d22244b 0x2d22244b + 2fe0: 0821 addi a6,a6,8 + 2fe2: 1aff 0x1aff + 2fe4: 849f 0003 9000 0x90000003849f + 2fea: 43000003 lb zero,1072(zero) # 430 <_start-0x7ffffbd0> + 2fee: 7900 flw fs0,48(a0) + 2ff0: 0a00 addi s0,sp,272 + 2ff2: ffff 0xffff + 2ff4: 401a 0x401a + 2ff6: 7f24 flw fs1,120(a4) + 2ff8: 2200 fld fs0,0(a2) + 2ffa: 008d addi ra,ra,3 + 2ffc: 4022 0x4022 + 2ffe: 7922244b fnmsub.s fs0,ft4,fs2,fa5,rdn + 3002: 0a00 addi s0,sp,272 + 3004: ffff 0xffff + 3006: 401a 0x401a + 3008: 7f24 flw fs1,120(a4) + 300a: 2200 fld fs0,0(a2) + 300c: 4b40 lw s0,20(a4) + 300e: 2224 fld fs1,64(a2) + 3010: 792d lui s2,0xfffeb + 3012: 0a00 addi s0,sp,272 + 3014: ffff 0xffff + 3016: 401a 0x401a + 3018: 7f24 flw fs1,120(a4) + 301a: 2200 fld fs0,0(a2) + 301c: 0082 c.slli64 ra + 301e: 8d22 mv s10,s0 + 3020: 2200 fld fs0,0(a2) + 3022: 4b40 lw s0,20(a4) + 3024: 2224 fld fs1,64(a2) + 3026: 0082 c.slli64 ra + 3028: 4b40 lw s0,20(a4) + 302a: 2224 fld fs1,64(a2) + 302c: 212d jal 3456 <_start-0x7fffcbaa> + 302e: ff08 fsw fa0,56(a4) + 3030: 9f1a add t5,t5,t1 + ... + 303a: 0374 addi a3,sp,396 + 303c: 0000 unimp + 303e: 038c addi a1,sp,448 + 3040: 0000 unimp + 3042: 0001 nop + 3044: 0060 addi s0,sp,12 + 3046: 0000 unimp + 3048: 0000 unimp + 304a: 0000 unimp + 304c: 7800 flw fs0,48(s0) + 304e: 7c000003 lb zero,1984(zero) # 7c0 <_start-0x7ffff840> + 3052: 11000003 lb zero,272(zero) # 110 <_start-0x7ffffef0> + 3056: 8e00 0x8e00 + 3058: 4000 lw s0,0(s0) + 305a: 8f22244b fnmsub.q fs0,ft4,fs2,fa7,rdn + 305e: 4000 lw s0,0(s0) + 3060: 2d22244b 0x2d22244b + 3064: ff08 fsw fa0,56(a4) + 3066: 9f1a add t5,t5,t1 + 3068: 037c addi a5,sp,396 + 306a: 0000 unimp + 306c: 038c addi a1,sp,448 + 306e: 0000 unimp + 3070: 001f 008e 4b40 0x4b40008e001f + 3076: 2224 fld fs1,64(a2) + 3078: 4b40008f 0x4b40008f + 307c: 2224 fld fs1,64(a2) + 307e: 752d lui a0,0xfffeb + 3080: 4000 lw s0,0(s0) + 3082: 8022244b fnmsub.s fs0,ft4,ft2,fa6,rdn + 3086: 4000 lw s0,0(s0) + 3088: 2d22244b 0x2d22244b + 308c: 0821 addi a6,a6,8 + 308e: 1aff 0x1aff + 3090: 009f 0000 0000 0x9f + 3096: 0000 unimp + 3098: 7c00 flw fs0,56(s0) + 309a: ec000003 lb zero,-320(zero) # fffffec0 <__global_pointer$+0x7fffb0e8> + 309e: 02000003 lb zero,32(zero) # 20 <_start-0x7fffffe0> + 30a2: 3900 fld fs0,48(a0) + 30a4: d89f 0004 e000 0xe0000004d89f + 30aa: 0004 0x4 + 30ac: 0200 addi s0,sp,256 + 30ae: 3900 fld fs0,48(a0) + 30b0: 009f 0000 0000 0x9f + 30b6: 0000 unimp + 30b8: 7c00 flw fs0,56(s0) + 30ba: ec000003 lb zero,-320(zero) # fffffec0 <__global_pointer$+0x7fffb0e8> + 30be: 02000003 lb zero,32(zero) # 20 <_start-0x7fffffe0> + 30c2: 4700 lw s0,8(a4) + 30c4: d89f 0004 e000 0xe0000004d89f + 30ca: 0004 0x4 + 30cc: 0200 addi s0,sp,256 + 30ce: 4700 lw s0,8(a4) + 30d0: 009f 0000 0000 0x9f + 30d6: 0000 unimp + 30d8: 7c00 flw fs0,56(s0) + 30da: ec000003 lb zero,-320(zero) # fffffec0 <__global_pointer$+0x7fffb0e8> + 30de: 02000003 lb zero,32(zero) # 20 <_start-0x7fffffe0> + 30e2: 3100 fld fs0,32(a0) + 30e4: d89f 0004 e000 0xe0000004d89f + 30ea: 0004 0x4 + 30ec: 0200 addi s0,sp,256 + 30ee: 3100 fld fs0,32(a0) + 30f0: 009f 0000 0000 0x9f + 30f6: 0000 unimp + 30f8: 7c00 flw fs0,56(s0) + 30fa: cc000003 lb zero,-832(zero) # fffffcc0 <__global_pointer$+0x7fffaee8> + 30fe: 02000003 lb zero,32(zero) # 20 <_start-0x7fffffe0> + 3102: 3100 fld fs0,32(a0) + 3104: 009f 0000 0000 0x9f + 310a: 0000 unimp + 310c: 7c00 flw fs0,56(s0) + 310e: ac000003 lb zero,-1344(zero) # fffffac0 <__global_pointer$+0x7ffface8> + 3112: 08000003 lb zero,128(zero) # 80 <_start-0x7fffff80> + 3116: 8c00 0x8c00 + 3118: 3900 fld fs0,48(a0) + 311a: 8124 0x8124 + 311c: 2100 fld fs0,0(a0) + 311e: ac9f 0003 b400 0xb4000003ac9f + 3124: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3128: 5f00 lw s0,56(a4) + 312a: 03b4 addi a3,sp,456 + 312c: 0000 unimp + 312e: 03b8 addi a4,sp,456 + 3130: 0000 unimp + 3132: 0008 0x8 + 3134: 008c addi a1,sp,64 + 3136: 2439 jal 3344 <_start-0x7fffccbc> + 3138: 0081 addi ra,ra,0 + 313a: 9f21 0x9f21 + ... + 3144: 040c addi a1,sp,512 + 3146: 0000 unimp + 3148: 0418 addi a4,sp,512 + 314a: 0000 unimp + 314c: 0001 nop + 314e: 005e c.slli zero,0x17 + 3150: 0000 unimp + 3152: 0000 unimp + 3154: 0000 unimp + 3156: 3000 fld fs0,32(s0) + 3158: 0005 c.nop 1 + 315a: 3c00 fld fs0,56(s0) + 315c: 0005 c.nop 1 + 315e: 0100 addi s0,sp,128 + 3160: 5e00 lw s0,56(a2) + ... + 316e: 005c addi a5,sp,4 + 3170: 0000 unimp + 3172: 0006 c.slli zero,0x1 + 3174: 935a add t1,t1,s6 + 3176: 5b04 lw s1,48(a4) + 3178: 005c0493 addi s1,s8,5 + 317c: 0000 unimp + 317e: 07c8 addi a0,sp,964 + 3180: 0000 unimp + 3182: 0006 c.slli zero,0x1 + 3184: 0af503f3 0xaf503f3 + 3188: 9f25 0x9f25 + ... + 3196: 0064 addi s1,sp,12 + 3198: 0000 unimp + 319a: 0006 c.slli zero,0x1 + 319c: 935c 0x935c + 319e: 5d04 lw s1,56(a0) + 31a0: 00640493 addi s1,s0,6 # ffff8006 <__global_pointer$+0x7fff322e> + 31a4: 0000 unimp + 31a6: 07c8 addi a0,sp,964 + 31a8: 0000 unimp + 31aa: 0006 c.slli zero,0x1 + 31ac: 0cf503f3 0xcf503f3 + 31b0: 9f25 0x9f25 + ... + 31be: 00b8 addi a4,sp,72 + 31c0: 0000 unimp + 31c2: 0002 c.slli64 zero + 31c4: 9f30 0x9f30 + 31c6: 00e0 addi s0,sp,76 + 31c8: 0000 unimp + 31ca: 01ec addi a1,sp,204 + 31cc: 0000 unimp + 31ce: 0002 c.slli64 zero + 31d0: 9f30 0x9f30 + 31d2: 01f8 addi a4,sp,204 + 31d4: 0000 unimp + 31d6: 02e8 addi a0,sp,332 + 31d8: 0000 unimp + 31da: 0002 c.slli64 zero + 31dc: 9f30 0x9f30 + 31de: 0308 addi a0,sp,384 + 31e0: 0000 unimp + 31e2: 0590 addi a2,sp,704 + 31e4: 0000 unimp + 31e6: 0002 c.slli64 zero + 31e8: 9f30 0x9f30 + 31ea: 05b4 addi a3,sp,712 + 31ec: 0000 unimp + 31ee: 06f4 addi a3,sp,844 + 31f0: 0000 unimp + 31f2: 0002 c.slli64 zero + 31f4: 9f30 0x9f30 + 31f6: 0784 addi s1,sp,960 + 31f8: 0000 unimp + 31fa: 07ac addi a1,sp,968 + 31fc: 0000 unimp + 31fe: 0002 c.slli64 zero + 3200: 9f30 0x9f30 + ... + 320a: 0038 addi a4,sp,8 + 320c: 0000 unimp + 320e: 00b8 addi a4,sp,72 + 3210: 0000 unimp + 3212: 0001 nop + 3214: e059 bnez s0,329a <_start-0x7fffcd66> + 3216: 0000 unimp + 3218: f800 fsw fs0,48(s0) + 321a: 0002 c.slli64 zero + 321c: 0100 addi s0,sp,128 + 321e: 5900 lw s0,48(a0) + 3220: 0308 addi a0,sp,384 + 3222: 0000 unimp + 3224: 0364 addi s1,sp,396 + 3226: 0000 unimp + 3228: 0001 nop + 322a: 6c59 lui s8,0x16 + 322c: bc000003 lb zero,-1088(zero) # fffffbc0 <__global_pointer$+0x7fffade8> + 3230: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3234: 5900 lw s0,48(a0) + 3236: 03d8 addi a4,sp,452 + 3238: 0000 unimp + 323a: 045c addi a5,sp,516 + 323c: 0000 unimp + 323e: 0001 nop + 3240: 6059 c.lui zero,0x16 + 3242: 0004 0x4 + 3244: d800 sw s0,48(s0) + 3246: 0004 0x4 + 3248: 0100 addi s0,sp,128 + 324a: 5900 lw s0,48(a0) + 324c: 04dc addi a5,sp,580 + 324e: 0000 unimp + 3250: 0548 addi a0,sp,644 + 3252: 0000 unimp + 3254: 0001 nop + 3256: 4c59 li s8,22 + 3258: 0005 c.nop 1 + 325a: a400 fsd fs0,8(s0) + 325c: 0005 c.nop 1 + 325e: 0100 addi s0,sp,128 + 3260: 5900 lw s0,48(a0) + 3262: 05ac addi a1,sp,712 + 3264: 0000 unimp + 3266: 05e0 addi s0,sp,716 + 3268: 0000 unimp + 326a: 0001 nop + 326c: 5059 c.li zero,-10 + 326e: 0006 c.slli zero,0x1 + 3270: 6400 flw fs0,8(s0) + 3272: 0006 c.slli zero,0x1 + 3274: 0100 addi s0,sp,128 + 3276: 5900 lw s0,48(a0) + 3278: 06cc addi a1,sp,836 + 327a: 0000 unimp + 327c: 06f4 addi a3,sp,844 + 327e: 0000 unimp + 3280: 0001 nop + 3282: 8459 srai s0,s0,0x16 + 3284: a0000007 0xa0000007 + 3288: 01000007 0x1000007 + 328c: 5900 lw s0,48(a0) + 328e: 07a4 addi s1,sp,968 + 3290: 0000 unimp + 3292: 07b4 addi a3,sp,968 + 3294: 0000 unimp + 3296: 0001 nop + 3298: 0059 c.nop 22 + 329a: 0000 unimp + 329c: 0000 unimp + 329e: 0000 unimp + 32a0: 2800 fld fs0,16(s0) + 32a2: 0000 unimp + 32a4: ac00 fsd fs0,24(s0) + 32a6: 0000 unimp + 32a8: 0100 addi s0,sp,128 + 32aa: 5800 lw s0,48(s0) + 32ac: 00b0 addi a2,sp,72 + 32ae: 0000 unimp + 32b0: 00b8 addi a4,sp,72 + 32b2: 0000 unimp + 32b4: 0001 nop + 32b6: e058 fsw fa4,4(s0) + 32b8: 0000 unimp + 32ba: 3800 fld fs0,48(s0) + 32bc: 0001 nop + 32be: 0100 addi s0,sp,128 + 32c0: 5800 lw s0,48(s0) + 32c2: 0174 addi a3,sp,140 + 32c4: 0000 unimp + 32c6: 0254 addi a3,sp,260 + 32c8: 0000 unimp + 32ca: 0001 nop + 32cc: 5858 lw a4,52(s0) + 32ce: 0002 c.slli64 zero + 32d0: e400 fsw fs0,8(s0) + 32d2: 0002 c.slli64 zero + 32d4: 0100 addi s0,sp,128 + 32d6: 5800 lw s0,48(s0) + 32d8: 02e8 addi a0,sp,332 + 32da: 0000 unimp + 32dc: 0304 addi s1,sp,384 + 32de: 0000 unimp + 32e0: 0001 nop + 32e2: 0858 addi a4,sp,20 + 32e4: 34000003 lb zero,832(zero) # 340 <_start-0x7ffffcc0> + 32e8: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 32ec: 5800 lw s0,48(s0) + 32ee: 0334 addi a3,sp,392 + 32f0: 0000 unimp + 32f2: 0338 addi a4,sp,392 + 32f4: 0000 unimp + 32f6: 7f7d0003 lb zero,2039(s10) + 32fa: 389f 0003 6800 0x68000003389f + 3300: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3304: 5800 lw s0,48(s0) + 3306: 036c addi a1,sp,396 + 3308: 0000 unimp + 330a: 03bc addi a5,sp,456 + 330c: 0000 unimp + 330e: 0001 nop + 3310: d858 sw a4,52(s0) + 3312: 74000003 lb zero,1856(zero) # 740 <_start-0x7ffff8c0> + 3316: 0004 0x4 + 3318: 0100 addi s0,sp,128 + 331a: 5800 lw s0,48(s0) + 331c: 0478 addi a4,sp,524 + 331e: 0000 unimp + 3320: 04d4 addi a3,sp,580 + 3322: 0000 unimp + 3324: 0001 nop + 3326: dc58 sw a4,60(s0) + 3328: 0004 0x4 + 332a: 4400 lw s0,8(s0) + 332c: 0005 c.nop 1 + 332e: 0100 addi s0,sp,128 + 3330: 5800 lw s0,48(s0) + 3332: 054c addi a1,sp,644 + 3334: 0000 unimp + 3336: 05a8 addi a0,sp,712 + 3338: 0000 unimp + 333a: 0001 nop + 333c: ac58 fsd fa4,152(s0) + 333e: 0005 c.nop 1 + 3340: e000 fsw fs0,0(s0) + 3342: 0005 c.nop 1 + 3344: 0100 addi s0,sp,128 + 3346: 5800 lw s0,48(s0) + 3348: 0650 addi a2,sp,772 + 334a: 0000 unimp + 334c: 0660 addi s0,sp,780 + 334e: 0000 unimp + 3350: 0001 nop + 3352: cc58 sw a4,28(s0) + 3354: 0006 c.slli zero,0x1 + 3356: d800 sw s0,48(s0) + 3358: 0006 c.slli zero,0x1 + 335a: 0100 addi s0,sp,128 + 335c: 5800 lw s0,48(s0) + 335e: 06dc addi a5,sp,836 + 3360: 0000 unimp + 3362: 06ec addi a1,sp,844 + 3364: 0000 unimp + 3366: 0001 nop + 3368: 8458 0x8458 + 336a: 90000007 0x90000007 + 336e: 01000007 0x1000007 + 3372: 5800 lw s0,48(s0) + 3374: 0794 addi a3,sp,960 + 3376: 0000 unimp + 3378: 079c addi a5,sp,960 + 337a: 0000 unimp + 337c: 0001 nop + 337e: a458 fsd fa4,136(s0) + 3380: bc000007 0xbc000007 + 3384: 01000007 0x1000007 + 3388: 5800 lw s0,48(s0) + ... + 3396: 009c addi a5,sp,64 + 3398: 0000 unimp + 339a: 0001 nop + 339c: b05a fsd fs6,32(sp) + 339e: 0000 unimp + 33a0: b800 fsd fs0,48(s0) + 33a2: 0000 unimp + 33a4: 0100 addi s0,sp,128 + 33a6: 5a00 lw s0,48(a2) + 33a8: 00e0 addi s0,sp,76 + 33aa: 0000 unimp + 33ac: 0138 addi a4,sp,136 + 33ae: 0000 unimp + 33b0: 0001 nop + 33b2: 745a flw fs0,180(sp) + 33b4: 0001 nop + 33b6: d400 sw s0,40(s0) + 33b8: 0001 nop + 33ba: 0100 addi s0,sp,128 + 33bc: 5a00 lw s0,48(a2) + 33be: 01e4 addi s1,sp,204 + 33c0: 0000 unimp + 33c2: 01f4 addi a3,sp,204 + 33c4: 0000 unimp + 33c6: 0001 nop + 33c8: f85a fsw fs6,48(sp) + 33ca: 0001 nop + 33cc: 3000 fld fs0,32(s0) + 33ce: 0002 c.slli64 zero + 33d0: 0100 addi s0,sp,128 + 33d2: 5a00 lw s0,48(a2) + 33d4: 023c addi a5,sp,264 + 33d6: 0000 unimp + 33d8: 0244 addi s1,sp,260 + 33da: 0000 unimp + 33dc: 0001 nop + 33de: 585a lw a6,180(sp) + 33e0: 0002 c.slli64 zero + 33e2: 7c00 flw fs0,56(s0) + 33e4: 0002 c.slli64 zero + 33e6: 0100 addi s0,sp,128 + 33e8: 5a00 lw s0,48(a2) + 33ea: 028c addi a1,sp,320 + 33ec: 0000 unimp + 33ee: 0290 addi a2,sp,320 + 33f0: 0000 unimp + 33f2: 0001 nop + 33f4: 985a add a6,a6,s6 + 33f6: 0002 c.slli64 zero + 33f8: c400 sw s0,8(s0) + 33fa: 0002 c.slli64 zero + 33fc: 0100 addi s0,sp,128 + 33fe: 5a00 lw s0,48(a2) + 3400: 02e8 addi a0,sp,332 + 3402: 0000 unimp + 3404: 0300 addi s0,sp,384 + 3406: 0000 unimp + 3408: 0001 nop + 340a: 085a slli a6,a6,0x16 + 340c: 24000003 lb zero,576(zero) # 240 <_start-0x7ffffdc0> + 3410: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3414: 5a00 lw s0,48(a2) + 3416: 0338 addi a4,sp,392 + 3418: 0000 unimp + 341a: 0358 addi a4,sp,388 + 341c: 0000 unimp + 341e: 0001 nop + 3420: 6c5a flw fs8,148(sp) + 3422: bc000003 lb zero,-1088(zero) # fffffbc0 <__global_pointer$+0x7fffade8> + 3426: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 342a: 5a00 lw s0,48(a2) + 342c: 03d8 addi a4,sp,452 + 342e: 0000 unimp + 3430: 044c addi a1,sp,516 + 3432: 0000 unimp + 3434: 0001 nop + 3436: 605a flw ft0,148(sp) + 3438: 0004 0x4 + 343a: 7000 flw fs0,32(s0) + 343c: 0004 0x4 + 343e: 0100 addi s0,sp,128 + 3440: 5a00 lw s0,48(a2) + 3442: 0478 addi a4,sp,524 + 3444: 0000 unimp + 3446: 04b0 addi a2,sp,584 + 3448: 0000 unimp + 344a: 0001 nop + 344c: bc5a fsd fs6,56(sp) + 344e: 0004 0x4 + 3450: c400 sw s0,8(s0) + 3452: 0004 0x4 + 3454: 0100 addi s0,sp,128 + 3456: 5a00 lw s0,48(a2) + 3458: 04dc addi a5,sp,580 + 345a: 0000 unimp + 345c: 0500 addi s0,sp,640 + 345e: 0000 unimp + 3460: 0001 nop + 3462: 105a c.slli zero,0x36 + 3464: 0005 c.nop 1 + 3466: 1400 addi s0,sp,544 + 3468: 0005 c.nop 1 + 346a: 0100 addi s0,sp,128 + 346c: 5a00 lw s0,48(a2) + 346e: 051c addi a5,sp,640 + 3470: 0000 unimp + 3472: 0544 addi s1,sp,644 + 3474: 0000 unimp + 3476: 0001 nop + 3478: 4c5a lw s8,148(sp) + 347a: 0005 c.nop 1 + 347c: 6c00 flw fs0,24(s0) + 347e: 0005 c.nop 1 + 3480: 0100 addi s0,sp,128 + 3482: 5a00 lw s0,48(a2) + 3484: 057c addi a5,sp,652 + 3486: 0000 unimp + 3488: 0580 addi s0,sp,704 + 348a: 0000 unimp + 348c: 0001 nop + 348e: 905a c.add zero,s6 + 3490: 0005 c.nop 1 + 3492: a000 fsd fs0,0(s0) + 3494: 0005 c.nop 1 + 3496: 0100 addi s0,sp,128 + 3498: 5a00 lw s0,48(a2) + 349a: 05ac addi a1,sp,712 + 349c: 0000 unimp + 349e: 05e0 addi s0,sp,716 + 34a0: 0000 unimp + 34a2: 0001 nop + 34a4: 505a 0x505a + 34a6: 0006 c.slli zero,0x1 + 34a8: 5400 lw s0,40(s0) + 34aa: 0006 c.slli zero,0x1 + 34ac: 0100 addi s0,sp,128 + 34ae: 5a00 lw s0,48(a2) + 34b0: 06cc addi a1,sp,836 + 34b2: 0000 unimp + 34b4: 06d4 addi a3,sp,836 + 34b6: 0000 unimp + 34b8: 0001 nop + 34ba: dc5a sw s6,56(sp) + 34bc: 0006 c.slli zero,0x1 + 34be: e400 fsw fs0,8(s0) + 34c0: 0006 c.slli zero,0x1 + 34c2: 0100 addi s0,sp,128 + 34c4: 5a00 lw s0,48(a2) + 34c6: 06e8 addi a0,sp,844 + 34c8: 0000 unimp + 34ca: 06ec addi a1,sp,844 + 34cc: 0000 unimp + 34ce: 0001 nop + 34d0: 845a mv s0,s6 + 34d2: 8c000007 0x8c000007 + 34d6: 01000007 0x1000007 + 34da: 5a00 lw s0,48(a2) + 34dc: 0794 addi a3,sp,960 + 34de: 0000 unimp + 34e0: 079c addi a5,sp,960 + 34e2: 0000 unimp + 34e4: 0001 nop + 34e6: ac5a fsd fs6,24(sp) + 34e8: b0000007 0xb0000007 + 34ec: 01000007 0x1000007 + 34f0: 5a00 lw s0,48(a2) + ... + 34fa: 0010 0x10 + 34fc: 0000 unimp + 34fe: 0024 addi s1,sp,8 + 3500: 0000 unimp + 3502: 0001 nop + 3504: 245f 0000 3800 0x38000000245f + 350a: 0000 unimp + 350c: 0900 addi s0,sp,144 + 350e: 7b00 flw fs0,48(a4) + 3510: 0c00 addi s0,sp,528 + 3512: ffff 0xffff + 3514: 9f1a000f 0x9f1a000f + 3518: 0038 addi a4,sp,8 + 351a: 0000 unimp + 351c: 00a0 addi s0,sp,72 + 351e: 0000 unimp + 3520: 0001 nop + 3522: b05f 0000 b800 0xb8000000b05f + 3528: 0000 unimp + 352a: 0100 addi s0,sp,128 + 352c: 5f00 lw s0,56(a4) + 352e: 00e0 addi s0,sp,76 + 3530: 0000 unimp + 3532: 0130 addi a2,sp,136 + 3534: 0000 unimp + 3536: 0001 nop + 3538: 745f 0001 d800 0xd8000001745f + 353e: 0001 nop + 3540: 0100 addi s0,sp,128 + 3542: 5f00 lw s0,56(a4) + 3544: 01e4 addi s1,sp,204 + 3546: 0000 unimp + 3548: 01f0 addi a2,sp,204 + 354a: 0000 unimp + 354c: 0001 nop + 354e: f85f 0001 4000 0x40000001f85f + 3554: 0002 c.slli64 zero + 3556: 0100 addi s0,sp,128 + 3558: 5f00 lw s0,56(a4) + 355a: 0240 addi s0,sp,260 + 355c: 0000 unimp + 355e: 0258 addi a4,sp,260 + 3560: 0000 unimp + 3562: 0001 nop + 3564: 585d li a6,-9 + 3566: 0002 c.slli64 zero + 3568: 8400 0x8400 + 356a: 0002 c.slli64 zero + 356c: 0100 addi s0,sp,128 + 356e: 5f00 lw s0,56(a4) + 3570: 028c addi a1,sp,320 + 3572: 0000 unimp + 3574: 02c0 addi s0,sp,324 + 3576: 0000 unimp + 3578: 0001 nop + 357a: e85f 0002 fc00 0xfc000002e85f + 3580: 0002 c.slli64 zero + 3582: 0100 addi s0,sp,128 + 3584: 5f00 lw s0,56(a4) + 3586: 0308 addi a0,sp,384 + 3588: 0000 unimp + 358a: 031c addi a5,sp,384 + 358c: 0000 unimp + 358e: 0001 nop + 3590: 385f 0003 5c00 0x5c000003385f + 3596: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 359a: 5f00 lw s0,56(a4) + 359c: 036c addi a1,sp,396 + 359e: 0000 unimp + 35a0: 03b4 addi a3,sp,456 + 35a2: 0000 unimp + 35a4: 0001 nop + 35a6: d85f 0003 5000 0x50000003d85f + 35ac: 0004 0x4 + 35ae: 0100 addi s0,sp,128 + 35b0: 5f00 lw s0,56(a4) + 35b2: 0460 addi s0,sp,524 + 35b4: 0000 unimp + 35b6: 046c addi a1,sp,524 + 35b8: 0000 unimp + 35ba: 0001 nop + 35bc: 785f 0004 c000 0xc0000004785f + 35c2: 0004 0x4 + 35c4: 0100 addi s0,sp,128 + 35c6: 5f00 lw s0,56(a4) + 35c8: 04c0 addi s0,sp,580 + 35ca: 0000 unimp + 35cc: 04dc addi a5,sp,580 + 35ce: 0000 unimp + 35d0: 0001 nop + 35d2: dc5d beqz s0,3590 <_start-0x7fffca70> + 35d4: 0004 0x4 + 35d6: 0800 addi s0,sp,16 + 35d8: 0005 c.nop 1 + 35da: 0100 addi s0,sp,128 + 35dc: 5f00 lw s0,56(a4) + 35de: 0510 addi a2,sp,640 + 35e0: 0000 unimp + 35e2: 0540 addi s0,sp,644 + 35e4: 0000 unimp + 35e6: 0001 nop + 35e8: 4c5f 0005 7000 0x700000054c5f + 35ee: 0005 c.nop 1 + 35f0: 0100 addi s0,sp,128 + 35f2: 5f00 lw s0,56(a4) + 35f4: 057c addi a5,sp,652 + 35f6: 0000 unimp + 35f8: 0588 addi a0,sp,704 + 35fa: 0000 unimp + 35fc: 0001 nop + 35fe: 905f 0005 9c00 0x9c000005905f + 3604: 0005 c.nop 1 + 3606: 0100 addi s0,sp,128 + 3608: 5f00 lw s0,56(a4) + 360a: 05ac addi a1,sp,712 + 360c: 0000 unimp + 360e: 05d4 addi a3,sp,708 + 3610: 0000 unimp + 3612: 0001 nop + 3614: 505f 0006 5c00 0x5c000006505f + 361a: 0006 c.slli zero,0x1 + 361c: 0100 addi s0,sp,128 + 361e: 5f00 lw s0,56(a4) + 3620: 06cc addi a1,sp,836 + 3622: 0000 unimp + 3624: 06d0 addi a2,sp,836 + 3626: 0000 unimp + 3628: 0001 nop + 362a: dc5f 0006 e000 0xe0000006dc5f + 3630: 0006 c.slli zero,0x1 + 3632: 0100 addi s0,sp,128 + 3634: 5f00 lw s0,56(a4) + 3636: 06e8 addi a0,sp,844 + 3638: 0000 unimp + 363a: 06ec addi a1,sp,844 + 363c: 0000 unimp + 363e: 0001 nop + 3640: 845f 0007 8800 0x88000007845f + 3646: 01000007 0x1000007 + 364a: 5f00 lw s0,56(a4) + 364c: 0794 addi a3,sp,960 + 364e: 0000 unimp + 3650: 0798 addi a4,sp,960 + 3652: 0000 unimp + 3654: 0001 nop + 3656: a45f 0007 a800 0xa8000007a45f + 365c: 01000007 0x1000007 + 3660: 5f00 lw s0,56(a4) + 3662: 07ac addi a1,sp,968 + 3664: 0000 unimp + 3666: 07b8 addi a4,sp,968 + 3668: 0000 unimp + 366a: 0001 nop + 366c: 005f 0000 0000 0x5f + 3672: 0000 unimp + 3674: 5c00 lw s0,56(s0) + 3676: 0000 unimp + 3678: 7400 flw fs0,40(s0) + 367a: 0000 unimp + 367c: 0600 addi s0,sp,768 + 367e: 7b00 flw fs0,48(a4) + 3680: 0800 addi s0,sp,16 + 3682: 1aff 0x1aff + 3684: 749f 0000 a800 0xa8000000749f + 368a: 0000 unimp + 368c: 0100 addi s0,sp,128 + 368e: 5b00 lw s0,48(a4) + 3690: 00b0 addi a2,sp,72 + 3692: 0000 unimp + 3694: 00b8 addi a4,sp,72 + 3696: 0000 unimp + 3698: 0001 nop + 369a: 0000e05b 0xe05b + 369e: 0400 addi s0,sp,512 + 36a0: 0001 nop + 36a2: 0100 addi s0,sp,128 + 36a4: 5b00 lw s0,48(a4) + 36a6: 0174 addi a3,sp,140 + 36a8: 0000 unimp + 36aa: 0184 addi s1,sp,192 + 36ac: 0000 unimp + 36ae: 0001 nop + 36b0: 0001a85b 0x1a85b + 36b4: bc00 fsd fs0,56(s0) + 36b6: 0001 nop + 36b8: 0100 addi s0,sp,128 + 36ba: 5b00 lw s0,48(a4) + 36bc: 0298 addi a4,sp,320 + 36be: 0000 unimp + 36c0: 02a0 addi s0,sp,328 + 36c2: 0000 unimp + 36c4: 0001 nop + 36c6: 0003385b 0x3385b + 36ca: 8800 0x8800 + 36cc: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 36d0: 5b00 lw s0,48(a4) + 36d2: 03d8 addi a4,sp,452 + 36d4: 0000 unimp + 36d6: 03fc addi a5,sp,460 + 36d8: 0000 unimp + 36da: 0001 nop + 36dc: 0004205b 0x4205b + 36e0: a400 fsd fs0,8(s0) + 36e2: 0005 c.nop 1 + 36e4: 0100 addi s0,sp,128 + 36e6: 5b00 lw s0,48(a4) + 36e8: 05ac addi a1,sp,712 + 36ea: 0000 unimp + 36ec: 05e0 addi s0,sp,716 + 36ee: 0000 unimp + 36f0: 0001 nop + 36f2: 0006505b 0x6505b + 36f6: 6400 flw fs0,8(s0) + 36f8: 0006 c.slli zero,0x1 + 36fa: 0100 addi s0,sp,128 + 36fc: 5b00 lw s0,48(a4) + 36fe: 0784 addi s1,sp,960 + 3700: 0000 unimp + 3702: 07bc addi a5,sp,968 + 3704: 0000 unimp + 3706: 0001 nop + 3708: 0000005b 0x5b + 370c: 0000 unimp + 370e: 0000 unimp + 3710: 5c00 lw s0,56(s0) + 3712: 0000 unimp + 3714: b800 fsd fs0,48(s0) + 3716: 0000 unimp + 3718: 0100 addi s0,sp,128 + 371a: 6100 flw fs0,0(a0) + 371c: 00e0 addi s0,sp,76 + 371e: 0000 unimp + 3720: 0110 addi a2,sp,128 + 3722: 0000 unimp + 3724: 0001 nop + 3726: 7461 lui s0,0xffff8 + 3728: 0001 nop + 372a: 7c00 flw fs0,56(s0) + 372c: 0001 nop + 372e: 0100 addi s0,sp,128 + 3730: 6100 flw fs0,0(a0) + 3732: 01a8 addi a0,sp,200 + 3734: 0000 unimp + 3736: 0394 addi a3,sp,448 + 3738: 0000 unimp + 373a: 0001 nop + 373c: d861 beqz s0,370c <_start-0x7fffc8f4> + 373e: f4000003 lb zero,-192(zero) # ffffff40 <__global_pointer$+0x7fffb168> + 3742: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3746: 6100 flw fs0,0(a0) + 3748: 0420 addi s0,sp,520 + 374a: 0000 unimp + 374c: 0544 addi s1,sp,644 + 374e: 0000 unimp + 3750: 0001 nop + 3752: 4c61 li s8,24 + 3754: 0005 c.nop 1 + 3756: 5800 lw s0,48(s0) + 3758: 0005 c.nop 1 + 375a: 0100 addi s0,sp,128 + 375c: 6100 flw fs0,0(a0) + 375e: 0590 addi a2,sp,704 + 3760: 0000 unimp + 3762: 05e0 addi s0,sp,716 + 3764: 0000 unimp + 3766: 0001 nop + 3768: 5061 c.li zero,-8 + 376a: 0006 c.slli zero,0x1 + 376c: 6400 flw fs0,8(s0) + 376e: 0006 c.slli zero,0x1 + 3770: 0100 addi s0,sp,128 + 3772: 6100 flw fs0,0(a0) + 3774: 06cc addi a1,sp,836 + 3776: 0000 unimp + 3778: 06ec addi a1,sp,844 + 377a: 0000 unimp + 377c: 0001 nop + 377e: 8461 srai s0,s0,0x18 + 3780: 9c000007 0x9c000007 + 3784: 01000007 0x1000007 + 3788: 6100 flw fs0,0(a0) + 378a: 07ac addi a1,sp,968 + 378c: 0000 unimp + 378e: 07bc addi a5,sp,968 + 3790: 0000 unimp + 3792: 0001 nop + 3794: 0061 c.nop 24 + 3796: 0000 unimp + 3798: 0000 unimp + 379a: 0000 unimp + 379c: 5c00 lw s0,56(s0) + 379e: 0000 unimp + 37a0: 9800 0x9800 + 37a2: 0000 unimp + 37a4: 0100 addi s0,sp,128 + 37a6: 5c00 lw s0,56(s0) + 37a8: 00b0 addi a2,sp,72 + 37aa: 0000 unimp + 37ac: 00b8 addi a4,sp,72 + 37ae: 0000 unimp + 37b0: 0001 nop + 37b2: e05c fsw fa5,4(s0) + 37b4: 0000 unimp + 37b6: 1400 addi s0,sp,544 + 37b8: 0001 nop + 37ba: 0100 addi s0,sp,128 + 37bc: 5c00 lw s0,56(s0) + 37be: 0120 addi s0,sp,136 + 37c0: 0000 unimp + 37c2: 0128 addi a0,sp,136 + 37c4: 0000 unimp + 37c6: 0001 nop + 37c8: 745c flw fa5,44(s0) + 37ca: 0001 nop + 37cc: 9800 0x9800 + 37ce: 0001 nop + 37d0: 0100 addi s0,sp,128 + 37d2: 5c00 lw s0,56(s0) + 37d4: 01a8 addi a0,sp,200 + 37d6: 0000 unimp + 37d8: 01ac addi a1,sp,200 + 37da: 0000 unimp + 37dc: 0001 nop + 37de: b45c fsd fa5,168(s0) + 37e0: 0001 nop + 37e2: dc00 sw s0,56(s0) + 37e4: 0001 nop + 37e6: 0100 addi s0,sp,128 + 37e8: 5c00 lw s0,56(s0) + 37ea: 01e4 addi s1,sp,204 + 37ec: 0000 unimp + 37ee: 024c addi a1,sp,260 + 37f0: 0000 unimp + 37f2: 0001 nop + 37f4: 585c lw a5,52(s0) + 37f6: 0002 c.slli64 zero + 37f8: bc00 fsd fs0,56(s0) + 37fa: 0002 c.slli64 zero + 37fc: 0100 addi s0,sp,128 + 37fe: 5c00 lw s0,56(s0) + 3800: 02e8 addi a0,sp,332 + 3802: 0000 unimp + 3804: 02f0 addi a2,sp,332 + 3806: 0000 unimp + 3808: 0001 nop + 380a: 085c addi a5,sp,20 + 380c: 14000003 lb zero,320(zero) # 140 <_start-0x7ffffec0> + 3810: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3814: 5c00 lw s0,56(s0) + 3816: 0338 addi a4,sp,392 + 3818: 0000 unimp + 381a: 0354 addi a3,sp,388 + 381c: 0000 unimp + 381e: 0001 nop + 3820: 6c5c flw fa5,28(s0) + 3822: 98000003 lb zero,-1664(zero) # fffff980 <__global_pointer$+0x7fffaba8> + 3826: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 382a: 5c00 lw s0,56(s0) + 382c: 03a4 addi s1,sp,456 + 382e: 0000 unimp + 3830: 03ac addi a1,sp,456 + 3832: 0000 unimp + 3834: 0001 nop + 3836: d85c sw a5,52(s0) + 3838: 10000003 lb zero,256(zero) # 100 <_start-0x7fffff00> + 383c: 0004 0x4 + 383e: 0100 addi s0,sp,128 + 3840: 5c00 lw s0,56(s0) + 3842: 0420 addi s0,sp,520 + 3844: 0000 unimp + 3846: 0424 addi s1,sp,520 + 3848: 0000 unimp + 384a: 0001 nop + 384c: 2c5c fld fa5,152(s0) + 384e: 0004 0x4 + 3850: 5400 lw s0,40(s0) + 3852: 0004 0x4 + 3854: 0100 addi s0,sp,128 + 3856: 5c00 lw s0,56(s0) + 3858: 0460 addi s0,sp,524 + 385a: 0000 unimp + 385c: 04cc addi a1,sp,580 + 385e: 0000 unimp + 3860: 0001 nop + 3862: dc5c sw a5,60(s0) + 3864: 0004 0x4 + 3866: 4400 lw s0,8(s0) + 3868: 0005 c.nop 1 + 386a: 0100 addi s0,sp,128 + 386c: 5c00 lw s0,56(s0) + 386e: 054c addi a1,sp,644 + 3870: 0000 unimp + 3872: 0574 addi a3,sp,652 + 3874: 0000 unimp + 3876: 0001 nop + 3878: 7c5c flw fa5,60(s0) + 387a: 0005 c.nop 1 + 387c: a400 fsd fs0,8(s0) + 387e: 0005 c.nop 1 + 3880: 0100 addi s0,sp,128 + 3882: 5c00 lw s0,56(s0) + 3884: 05ac addi a1,sp,712 + 3886: 0000 unimp + 3888: 05d8 addi a4,sp,708 + 388a: 0000 unimp + 388c: 0001 nop + 388e: 505c lw a5,36(s0) + 3890: 0006 c.slli zero,0x1 + 3892: 6400 flw fs0,8(s0) + 3894: 0006 c.slli zero,0x1 + 3896: 0100 addi s0,sp,128 + 3898: 5c00 lw s0,56(s0) + 389a: 06cc addi a1,sp,836 + 389c: 0000 unimp + 389e: 06ec addi a1,sp,844 + 38a0: 0000 unimp + 38a2: 0001 nop + 38a4: 845c 0x845c + 38a6: bc000007 0xbc000007 + 38aa: 01000007 0x1000007 + 38ae: 5c00 lw s0,56(s0) + ... + 38b8: 0060 addi s0,sp,12 + 38ba: 0000 unimp + 38bc: 00b8 addi a4,sp,72 + 38be: 0000 unimp + 38c0: 0001 nop + 38c2: e05e fsw fs7,0(sp) + 38c4: 0000 unimp + 38c6: 2c00 fld fs0,24(s0) + 38c8: 0001 nop + 38ca: 0100 addi s0,sp,128 + 38cc: 5e00 lw s0,56(a2) + 38ce: 0174 addi a3,sp,140 + 38d0: 0000 unimp + 38d2: 01a0 addi s0,sp,200 + 38d4: 0000 unimp + 38d6: 0001 nop + 38d8: a85e fsd fs7,16(sp) + 38da: 0001 nop + 38dc: cc00 sw s0,24(s0) + 38de: 0002 c.slli64 zero + 38e0: 0100 addi s0,sp,128 + 38e2: 5e00 lw s0,56(a2) + 38e4: 02e8 addi a0,sp,332 + 38e6: 0000 unimp + 38e8: 0318 addi a4,sp,384 + 38ea: 0000 unimp + 38ec: 0001 nop + 38ee: 385e fld fa6,496(sp) + 38f0: b0000003 lb zero,-1280(zero) # fffffb00 <__global_pointer$+0x7fffad28> + 38f4: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 38f8: 5e00 lw s0,56(a2) + 38fa: 03d8 addi a4,sp,452 + 38fc: 0000 unimp + 38fe: 0418 addi a4,sp,512 + 3900: 0000 unimp + 3902: 0001 nop + 3904: 205e fld ft0,464(sp) + 3906: 0004 0x4 + 3908: e000 fsw fs0,0(s0) + 390a: 0005 c.nop 1 + 390c: 0100 addi s0,sp,128 + 390e: 5e00 lw s0,56(a2) + 3910: 0650 addi a2,sp,772 + 3912: 0000 unimp + 3914: 0664 addi s1,sp,780 + 3916: 0000 unimp + 3918: 0001 nop + 391a: cc5e sw s7,24(sp) + 391c: 0006 c.slli zero,0x1 + 391e: ec00 fsw fs0,24(s0) + 3920: 0006 c.slli zero,0x1 + 3922: 0100 addi s0,sp,128 + 3924: 5e00 lw s0,56(a2) + 3926: 0784 addi s1,sp,960 + 3928: 0000 unimp + 392a: 07bc addi a5,sp,968 + 392c: 0000 unimp + 392e: 0001 nop + 3930: 005e c.slli zero,0x17 + 3932: 0000 unimp + 3934: 0000 unimp + 3936: 0000 unimp + 3938: 7c00 flw fs0,56(s0) + 393a: 0000 unimp + 393c: f400 fsw fs0,40(s0) + 393e: 0002 c.slli64 zero + 3940: 0100 addi s0,sp,128 + 3942: 5900 lw s0,48(a0) + 3944: 0308 addi a0,sp,384 + 3946: 0000 unimp + 3948: 0338 addi a4,sp,392 + 394a: 0000 unimp + 394c: 0001 nop + 394e: 3c59 jal 33e4 <_start-0x7fffcc1c> + 3950: 2c000003 lb zero,704(zero) # 2c0 <_start-0x7ffffd40> + 3954: 0004 0x4 + 3956: 0100 addi s0,sp,128 + 3958: 5900 lw s0,48(a0) + 395a: 0434 addi a3,sp,520 + 395c: 0000 unimp + 395e: 051c addi a5,sp,640 + 3960: 0000 unimp + 3962: 0001 nop + 3964: 0005605b 0x5605b + 3968: 7800 flw fs0,48(s0) + 396a: 0005 c.nop 1 + 396c: 0100 addi s0,sp,128 + 396e: 5900 lw s0,48(a0) + 3970: 0578 addi a4,sp,652 + 3972: 0000 unimp + 3974: 057c addi a5,sp,652 + 3976: 0000 unimp + 3978: 0001 nop + 397a: 00057c5b 0x57c5b + 397e: 9000 0x9000 + 3980: 0005 c.nop 1 + 3982: 0100 addi s0,sp,128 + 3984: 5900 lw s0,48(a0) + 3986: 05c4 addi s1,sp,708 + 3988: 0000 unimp + 398a: 05dc addi a5,sp,708 + 398c: 0000 unimp + 398e: 0001 nop + 3990: dc59 beqz s0,392e <_start-0x7fffc6d2> + 3992: 0005 c.nop 1 + 3994: e000 fsw fs0,0(s0) + 3996: 0005 c.nop 1 + 3998: 0100 addi s0,sp,128 + 399a: 5b00 lw s0,48(a4) + 399c: 05e0 addi s0,sp,716 + 399e: 0000 unimp + 39a0: 06f4 addi a3,sp,844 + 39a2: 0000 unimp + 39a4: 0001 nop + 39a6: 4459 li s0,22 + 39a8: 64000007 0x64000007 + 39ac: 01000007 0x1000007 + 39b0: 5900 lw s0,48(a0) + 39b2: 0784 addi s1,sp,960 + 39b4: 0000 unimp + 39b6: 0794 addi a3,sp,960 + 39b8: 0000 unimp + 39ba: 0001 nop + 39bc: 0007a45b 0x7a45b + 39c0: ac00 fsd fs0,24(s0) + 39c2: 01000007 0x1000007 + 39c6: 5900 lw s0,48(a0) + ... + 39d0: 0080 addi s0,sp,64 + 39d2: 0000 unimp + 39d4: 00a8 addi a0,sp,72 + 39d6: 0000 unimp + 39d8: 0001 nop + 39da: b058 fsd fa4,160(s0) + 39dc: 0000 unimp + 39de: b400 fsd fs0,40(s0) + 39e0: 0001 nop + 39e2: 0100 addi s0,sp,128 + 39e4: 5800 lw s0,48(s0) + 39e6: 01bc addi a5,sp,200 + 39e8: 0000 unimp + 39ea: 01ec addi a1,sp,204 + 39ec: 0000 unimp + 39ee: 0001 nop + 39f0: f861 bnez s0,39c0 <_start-0x7fffc640> + 39f2: 0001 nop + 39f4: 9800 0x9800 + 39f6: 0002 c.slli64 zero + 39f8: 0100 addi s0,sp,128 + 39fa: 6100 flw fs0,0(a0) + 39fc: 02ac addi a1,sp,328 + 39fe: 0000 unimp + 3a00: 02e0 addi s0,sp,332 + 3a02: 0000 unimp + 3a04: 0002 c.slli64 zero + 3a06: 9f30 0x9f30 + 3a08: 02e0 addi s0,sp,332 + 3a0a: 0000 unimp + 3a0c: 02e8 addi a0,sp,332 + 3a0e: 0000 unimp + 3a10: 0002 c.slli64 zero + 3a12: 9f31 0x9f31 + 3a14: 02e8 addi a0,sp,332 + 3a16: 0000 unimp + 3a18: 0308 addi a0,sp,384 + 3a1a: 0000 unimp + 3a1c: 0004 0x4 + 3a1e: ff0a fsw ft2,188(sp) + 3a20: 03089f07 0x3089f07 + 3a24: 0000 unimp + 3a26: 0338 addi a4,sp,392 + 3a28: 0000 unimp + 3a2a: 0001 nop + 3a2c: 3c5d jal 34e2 <_start-0x7fffcb1e> + 3a2e: 64000003 lb zero,1600(zero) # 640 <_start-0x7ffff9c0> + 3a32: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3a36: 5800 lw s0,48(s0) + 3a38: 036c addi a1,sp,396 + 3a3a: 0000 unimp + 3a3c: 042c addi a1,sp,520 + 3a3e: 0000 unimp + 3a40: 0001 nop + 3a42: 3458 fld fa4,168(s0) + 3a44: 0004 0x4 + 3a46: 1c00 addi s0,sp,560 + 3a48: 0005 c.nop 1 + 3a4a: 0100 addi s0,sp,128 + 3a4c: 6100 flw fs0,0(a0) + 3a4e: 0534 addi a3,sp,648 + 3a50: 0000 unimp + 3a52: 0544 addi s1,sp,644 + 3a54: 0000 unimp + 3a56: 0002 c.slli64 zero + 3a58: 9f30 0x9f30 + 3a5a: 054c addi a1,sp,644 + 3a5c: 0000 unimp + 3a5e: 0590 addi a2,sp,704 + 3a60: 0000 unimp + 3a62: 0002 c.slli64 zero + 3a64: 9f30 0x9f30 + 3a66: 0590 addi a2,sp,704 + 3a68: 0000 unimp + 3a6a: 05a4 addi s1,sp,712 + 3a6c: 0000 unimp + 3a6e: 0004 0x4 + 3a70: ff0a fsw ft2,188(sp) + 3a72: 05ac9f07 0x5ac9f07 + 3a76: 0000 unimp + 3a78: 05b4 addi a3,sp,712 + 3a7a: 0000 unimp + 3a7c: 0004 0x4 + 3a7e: ff0a fsw ft2,188(sp) + 3a80: 05b49f07 0x5b49f07 + 3a84: 0000 unimp + 3a86: 064c addi a1,sp,772 + 3a88: 0000 unimp + 3a8a: 0001 nop + 3a8c: 5058 lw a4,36(s0) + 3a8e: 0006 c.slli zero,0x1 + 3a90: 6000 flw fs0,0(s0) + 3a92: 0006 c.slli zero,0x1 + 3a94: 0100 addi s0,sp,128 + 3a96: 5800 lw s0,48(s0) + 3a98: 0664 addi s1,sp,780 + 3a9a: 0000 unimp + 3a9c: 06cc addi a1,sp,836 + 3a9e: 0000 unimp + 3aa0: 0001 nop + 3aa2: cc58 sw a4,28(s0) + 3aa4: 0006 c.slli zero,0x1 + 3aa6: dc00 sw s0,56(s0) + 3aa8: 0006 c.slli zero,0x1 + 3aaa: 0100 addi s0,sp,128 + 3aac: 6100 flw fs0,0(a0) + 3aae: 06dc addi a5,sp,836 + 3ab0: 0000 unimp + 3ab2: 06e8 addi a0,sp,844 + 3ab4: 0000 unimp + 3ab6: 0002 c.slli64 zero + 3ab8: 9f30 0x9f30 + 3aba: 06e8 addi a0,sp,844 + 3abc: 0000 unimp + 3abe: 06ec addi a1,sp,844 + 3ac0: 0000 unimp + 3ac2: 0001 nop + 3ac4: 005d c.nop 23 + 3ac6: 2c000007 0x2c000007 + 3aca: 01000007 0x1000007 + 3ace: 5800 lw s0,48(s0) + 3ad0: 072c addi a1,sp,904 + 3ad2: 0000 unimp + 3ad4: 0744 addi s1,sp,900 + 3ad6: 0000 unimp + 3ad8: 0004 0x4 + 3ada: ff0a fsw ft2,188(sp) + 3adc: 07849f07 0x7849f07 + 3ae0: 0000 unimp + 3ae2: 0794 addi a3,sp,960 + 3ae4: 0000 unimp + 3ae6: 0001 nop + 3ae8: 9461 srai s0,s0,0x38 + 3aea: 9c000007 0x9c000007 + 3aee: 02000007 0x2000007 + 3af2: 3000 fld fs0,32(s0) + 3af4: a49f 0007 ac00 0xac000007a49f + 3afa: 02000007 0x2000007 + 3afe: 3000 fld fs0,32(s0) + 3b00: ac9f 0007 bc00 0xbc000007ac9f + 3b06: 04000007 0x4000007 + 3b0a: 0a00 addi s0,sp,272 + 3b0c: 07ff 0x7ff + 3b0e: bc9f 0007 c800 0xc8000007bc9f + 3b14: 01000007 0x1000007 + 3b18: 5800 lw s0,48(s0) + ... + 3b22: 00a4 addi s1,sp,72 + 3b24: 0000 unimp + 3b26: 00a8 addi a0,sp,72 + 3b28: 0000 unimp + 3b2a: 0001 nop + 3b2c: a85c fsd fa5,144(s0) + 3b2e: 0000 unimp + 3b30: b000 fsd fs0,32(s0) + 3b32: 0000 unimp + 3b34: 0100 addi s0,sp,128 + 3b36: 5a00 lw s0,48(a2) + 3b38: 00b8 addi a4,sp,72 + 3b3a: 0000 unimp + 3b3c: 00d4 addi a3,sp,68 + 3b3e: 0000 unimp + 3b40: 0001 nop + 3b42: d45a sw s6,40(sp) + 3b44: 0000 unimp + 3b46: d800 sw s0,48(s0) + 3b48: 0000 unimp + 3b4a: 0300 addi s0,sp,384 + 3b4c: 7d00 flw fs0,56(a0) + 3b4e: 9f7c 0x9f7c + 3b50: 00d8 addi a4,sp,68 + 3b52: 0000 unimp + 3b54: 00e0 addi s0,sp,76 + 3b56: 0000 unimp + 3b58: 0001 nop + 3b5a: 345d jal 3600 <_start-0x7fffca00> + 3b5c: 0001 nop + 3b5e: 3800 fld fs0,48(s0) + 3b60: 0001 nop + 3b62: 0100 addi s0,sp,128 + 3b64: 5c00 lw s0,56(s0) + 3b66: 0138 addi a4,sp,136 + 3b68: 0000 unimp + 3b6a: 0144 addi s1,sp,132 + 3b6c: 0000 unimp + 3b6e: 0001 nop + 3b70: 445a lw s0,148(sp) + 3b72: 0001 nop + 3b74: 5c00 lw s0,56(s0) + 3b76: 0001 nop + 3b78: 1500 addi s0,sp,672 + 3b7a: 7a00 flw fs0,48(a2) + 3b7c: 3100 fld fs0,32(a0) + 3b7e: 7a1a flw fs4,164(sp) + 3b80: 3100 fld fs0,32(a0) + 3b82: 2125 jal 3faa <_start-0x7fffc056> + 3b84: 007f 0x7f + 3b86: ff11 bnez a4,3aa2 <_start-0x7fffc55e> + 3b88: ffff 0xffff + 3b8a: 244f1a7b 0x244f1a7b + 3b8e: 9f21 0x9f21 + 3b90: 015c addi a5,sp,132 + 3b92: 0000 unimp + 3b94: 0160 addi s0,sp,140 + 3b96: 0000 unimp + 3b98: 007a0013 addi zero,s4,7 + 3b9c: 1a31 addi s4,s4,-20 + 3b9e: 007f 0x7f + 3ba0: ff11 bnez a4,3abc <_start-0x7fffc544> + 3ba2: ffff 0xffff + 3ba4: 244f1a7b 0x244f1a7b + 3ba8: 7b21 lui s6,0xfffe8 + 3baa: 2100 fld fs0,0(a0) + 3bac: 609f 0001 6400 0x64000001609f + 3bb2: 0001 nop + 3bb4: 1100 addi s0,sp,160 + 3bb6: 7f00 flw fs0,56(a4) + 3bb8: 1100 addi s0,sp,160 + 3bba: ffff 0xffff + 3bbc: 7bff 0x7bff + 3bbe: 4f1a lw t5,132(sp) + 3bc0: 7b24 flw fs1,112(a4) + 3bc2: 2100 fld fs0,0(a0) + 3bc4: 007a c.slli zero,0x1e + 3bc6: 9f21 0x9f21 + 3bc8: 0250 addi a2,sp,260 + 3bca: 0000 unimp + 3bcc: 0258 addi a4,sp,260 + 3bce: 0000 unimp + 3bd0: 0001 nop + 3bd2: c85a sw s6,16(sp) + 3bd4: 0002 c.slli64 zero + 3bd6: e800 fsw fs0,16(s0) + 3bd8: 0002 c.slli64 zero + 3bda: 0100 addi s0,sp,128 + 3bdc: 5c00 lw s0,56(s0) + 3bde: 0308 addi a0,sp,384 + 3be0: 0000 unimp + 3be2: 0314 addi a3,sp,384 + 3be4: 0000 unimp + 3be6: 0024 addi s1,sp,8 + 3be8: 007a c.slli zero,0x1e + 3bea: 4b40 lw s0,20(a4) + 3bec: 2224 fld fs1,64(a2) + 3bee: 007a c.slli zero,0x1e + 3bf0: 007c addi a5,sp,12 + 3bf2: 4022 0x4022 + 3bf4: 2b22244b fnmsub.d fs0,ft4,fs2,ft5,rdn + 3bf8: ff08 fsw fa0,56(a4) + 3bfa: 7e1a flw ft8,164(sp) + 3bfc: 2200 fld fs0,0(a2) + 3bfe: 007f 0x7f + 3c00: 4f22 lw t5,8(sp) + 3c02: 7a24 flw fs1,112(a2) + 3c04: 7c00 flw fs0,56(s0) + 3c06: 2200 fld fs0,0(a2) + 3c08: 2531 jal 4214 <_start-0x7fffbdec> + 3c0a: 9f21 0x9f21 + 3c0c: 0314 addi a3,sp,384 + 3c0e: 0000 unimp + 3c10: 0318 addi a4,sp,384 + 3c12: 0000 unimp + 3c14: 001e c.slli zero,0x7 + 3c16: 007a c.slli zero,0x1e + 3c18: 4b40 lw s0,20(a4) + 3c1a: 2224 fld fs1,64(a2) + 3c1c: 007c addi a5,sp,12 + 3c1e: 4b40 lw s0,20(a4) + 3c20: 2224 fld fs1,64(a2) + 3c22: 1aff082b 0x1aff082b + 3c26: 007e c.slli zero,0x1f + 3c28: 7f22 flw ft10,40(sp) + 3c2a: 2200 fld fs0,0(a2) + 3c2c: 007c244f fnmadd.s fs0,fs8,ft7,ft0,rdn + 3c30: 2531 jal 423c <_start-0x7fffbdc4> + 3c32: 9f21 0x9f21 + 3c34: 0318 addi a4,sp,384 + 3c36: 0000 unimp + 3c38: 0320 addi s0,sp,392 + 3c3a: 0000 unimp + 3c3c: 007a001b 0x7a001b + 3c40: 4b40 lw s0,20(a4) + 3c42: 2224 fld fs1,64(a2) + 3c44: 007c addi a5,sp,12 + 3c46: 4b40 lw s0,20(a4) + 3c48: 2224 fld fs1,64(a2) + 3c4a: 1aff082b 0x1aff082b + 3c4e: 007e c.slli zero,0x1f + 3c50: 4f22 lw t5,8(sp) + 3c52: 7c24 flw fs1,120(s0) + 3c54: 3100 fld fs0,32(a0) + 3c56: 2125 jal 407e <_start-0x7fffbf82> + 3c58: 609f 0003 6400 0x64000003609f + 3c5e: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3c62: 5c00 lw s0,56(s0) + 3c64: 0364 addi s1,sp,396 + 3c66: 0000 unimp + 3c68: 036c addi a1,sp,396 + 3c6a: 0000 unimp + 3c6c: 0001 nop + 3c6e: b85a fsd fs6,48(sp) + 3c70: bc000003 lb zero,-1088(zero) # fffffbc0 <__global_pointer$+0x7fffade8> + 3c74: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3c78: 5c00 lw s0,56(s0) + 3c7a: 03bc addi a5,sp,456 + 3c7c: 0000 unimp + 3c7e: 03d8 addi a4,sp,452 + 3c80: 0000 unimp + 3c82: 0001 nop + 3c84: 585a lw a6,180(sp) + 3c86: 0004 0x4 + 3c88: 6000 flw fs0,0(s0) + 3c8a: 0004 0x4 + 3c8c: 0100 addi s0,sp,128 + 3c8e: 5a00 lw s0,48(a2) + 3c90: 04d0 addi a2,sp,580 + 3c92: 0000 unimp + 3c94: 04dc addi a5,sp,580 + 3c96: 0000 unimp + 3c98: 0001 nop + 3c9a: 385a fld fa6,432(sp) + 3c9c: 0005 c.nop 1 + 3c9e: 4400 lw s0,8(s0) + 3ca0: 0005 c.nop 1 + 3ca2: 0100 addi s0,sp,128 + 3ca4: 5c00 lw s0,56(s0) + 3ca6: 0560 addi s0,sp,652 + 3ca8: 0000 unimp + 3caa: 0578 addi a4,sp,652 + 3cac: 0000 unimp + 3cae: 0001 nop + 3cb0: 7860 flw fs0,116(s0) + 3cb2: 0005 c.nop 1 + 3cb4: 7c00 flw fs0,56(s0) + 3cb6: 0005 c.nop 1 + 3cb8: 0100 addi s0,sp,128 + 3cba: 5a00 lw s0,48(a2) + 3cbc: 057c addi a5,sp,652 + 3cbe: 0000 unimp + 3cc0: 0590 addi a2,sp,704 + 3cc2: 0000 unimp + 3cc4: 0001 nop + 3cc6: c460 sw s0,76(s0) + 3cc8: 0005 c.nop 1 + 3cca: d000 sw s0,32(s0) + 3ccc: 0005 c.nop 1 + 3cce: 0100 addi s0,sp,128 + 3cd0: 6300 flw fs0,0(a4) + 3cd2: 05d0 addi a2,sp,708 + 3cd4: 0000 unimp + 3cd6: 05d8 addi a4,sp,708 + 3cd8: 0000 unimp + 3cda: 0006 c.slli zero,0x1 + 3cdc: 007a c.slli zero,0x1e + 3cde: 007c addi a5,sp,12 + 3ce0: 9f1c 0x9f1c + 3ce2: 05dc addi a5,sp,708 + 3ce4: 0000 unimp + 3ce6: 0610 addi a2,sp,768 + 3ce8: 0000 unimp + 3cea: 0001 nop + 3cec: 00061063 bnez a2,3cec <_start-0x7fffc314> + 3cf0: 3800 fld fs0,48(s0) + 3cf2: 0006 c.slli zero,0x1 + 3cf4: 0100 addi s0,sp,128 + 3cf6: 5a00 lw s0,48(a2) + 3cf8: 0644 addi s1,sp,772 + 3cfa: 0000 unimp + 3cfc: 0650 addi a2,sp,772 + 3cfe: 0000 unimp + 3d00: 0001 nop + 3d02: 505a 0x505a + 3d04: 0006 c.slli zero,0x1 + 3d06: 7c00 flw fs0,56(s0) + 3d08: 0006 c.slli zero,0x1 + 3d0a: 0100 addi s0,sp,128 + 3d0c: 6300 flw fs0,0(a4) + 3d0e: 067c addi a5,sp,780 + 3d10: 0000 unimp + 3d12: 0684 addi s1,sp,832 + 3d14: 0000 unimp + 3d16: 0002 c.slli64 zero + 3d18: 9f30 0x9f30 + 3d1a: 0684 addi s1,sp,832 + 3d1c: 0000 unimp + 3d1e: 06a8 addi a0,sp,840 + 3d20: 0000 unimp + 3d22: 0001 nop + 3d24: b05a fsd fs6,32(sp) + 3d26: 0006 c.slli zero,0x1 + 3d28: cc00 sw s0,24(s0) + 3d2a: 0006 c.slli zero,0x1 + 3d2c: 0100 addi s0,sp,128 + 3d2e: 5a00 lw s0,48(a2) + 3d30: 06e8 addi a0,sp,844 + 3d32: 0000 unimp + 3d34: 06ec addi a1,sp,844 + 3d36: 0000 unimp + 3d38: 0024 addi s1,sp,8 + 3d3a: 007a c.slli zero,0x1e + 3d3c: 4b40 lw s0,20(a4) + 3d3e: 2224 fld fs1,64(a2) + 3d40: 007a c.slli zero,0x1e + 3d42: 007c addi a5,sp,12 + 3d44: 4022 0x4022 + 3d46: 2b22244b fnmsub.d fs0,ft4,fs2,ft5,rdn + 3d4a: ff08 fsw fa0,56(a4) + 3d4c: 7e1a flw ft8,164(sp) + 3d4e: 2200 fld fs0,0(a2) + 3d50: 007f 0x7f + 3d52: 4f22 lw t5,8(sp) + 3d54: 7a24 flw fs1,112(a2) + 3d56: 7c00 flw fs0,56(s0) + 3d58: 2200 fld fs0,0(a2) + 3d5a: 2531 jal 4366 <_start-0x7fffbc9a> + 3d5c: 9f21 0x9f21 + 3d5e: 06f4 addi a3,sp,844 + 3d60: 0000 unimp + 3d62: 071c addi a5,sp,896 + 3d64: 0000 unimp + 3d66: 0001 nop + 3d68: 205a fld ft0,400(sp) + 3d6a: 30000007 0x30000007 + 3d6e: 01000007 0x1000007 + 3d72: 5a00 lw s0,48(a2) + 3d74: 0744 addi s1,sp,900 + 3d76: 0000 unimp + 3d78: 0784 addi s1,sp,960 + 3d7a: 0000 unimp + 3d7c: 0001 nop + 3d7e: 945a add s0,s0,s6 + 3d80: 9c000007 0x9c000007 + 3d84: 01000007 0x1000007 + 3d88: 5c00 lw s0,56(s0) + 3d8a: 07a4 addi s1,sp,968 + 3d8c: 0000 unimp + 3d8e: 07ac addi a1,sp,968 + 3d90: 0000 unimp + 3d92: 0001 nop + 3d94: bc60 fsd fs0,248(s0) + 3d96: c4000007 0xc4000007 + 3d9a: 01000007 0x1000007 + 3d9e: 5a00 lw s0,48(a2) + ... + 3da8: 00a4 addi s1,sp,72 + 3daa: 0000 unimp + 3dac: 00b0 addi a2,sp,72 + 3dae: 0000 unimp + 3db0: 0001 nop + 3db2: b85f 0000 e000 0xe0000000b85f + 3db8: 0000 unimp + 3dba: 0100 addi s0,sp,128 + 3dbc: 5f00 lw s0,56(a4) + 3dbe: 0134 addi a3,sp,136 + 3dc0: 0000 unimp + 3dc2: 0140 addi s0,sp,132 + 3dc4: 0000 unimp + 3dc6: 0001 nop + 3dc8: 405f 0001 4400 0x44000001405f + 3dce: 0001 nop + 3dd0: 0900 addi s0,sp,144 + 3dd2: 7f00 flw fs0,56(a4) + 3dd4: 1100 addi s0,sp,160 + 3dd6: ffff 0xffff + 3dd8: 7bff 0x7bff + 3dda: 9f1a add t5,t5,t1 + 3ddc: 0144 addi s1,sp,132 + 3dde: 0000 unimp + 3de0: 0164 addi s1,sp,140 + 3de2: 0000 unimp + 3de4: 007f000b 0x7f000b + 3de8: ff11 bnez a4,3d04 <_start-0x7fffc2fc> + 3dea: ffff 0xffff + 3dec: 25311a7b 0x25311a7b + 3df0: 509f 0002 5800 0x58000002509f + 3df6: 0002 c.slli64 zero + 3df8: 0100 addi s0,sp,128 + 3dfa: 5f00 lw s0,56(a4) + 3dfc: 02c8 addi a0,sp,324 + 3dfe: 0000 unimp + 3e00: 02e8 addi a0,sp,332 + 3e02: 0000 unimp + 3e04: 0001 nop + 3e06: 085f 0003 1400 0x14000003085f + 3e0c: 1c000003 lb zero,448(zero) # 1c0 <_start-0x7ffffe40> + 3e10: 7a00 flw fs0,48(a2) + 3e12: 4000 lw s0,0(s0) + 3e14: 7a22244b fnmsub.d fs0,ft4,ft2,fa5,rdn + 3e18: 7c00 flw fs0,56(s0) + 3e1a: 2200 fld fs0,0(a2) + 3e1c: 4b40 lw s0,20(a4) + 3e1e: 2224 fld fs1,64(a2) + 3e20: 1aff082b 0x1aff082b + 3e24: 007e c.slli zero,0x1f + 3e26: 7f22 flw ft10,40(sp) + 3e28: 2200 fld fs0,0(a2) + 3e2a: 2531 jal 4436 <_start-0x7fffbbca> + 3e2c: 149f 0003 1800 0x18000003149f + 3e32: 19000003 lb zero,400(zero) # 190 <_start-0x7ffffe70> + 3e36: 7a00 flw fs0,48(a2) + 3e38: 4000 lw s0,0(s0) + 3e3a: 7c22244b 0x7c22244b + 3e3e: 4000 lw s0,0(s0) + 3e40: 2b22244b fnmsub.d fs0,ft4,fs2,ft5,rdn + 3e44: ff08 fsw fa0,56(a4) + 3e46: 7e1a flw ft8,164(sp) + 3e48: 2200 fld fs0,0(a2) + 3e4a: 007f 0x7f + 3e4c: 3122 fld ft2,40(sp) + 3e4e: 9f25 0x9f25 + 3e50: 0318 addi a4,sp,384 + 3e52: 0000 unimp + 3e54: 0320 addi s0,sp,392 + 3e56: 0000 unimp + 3e58: 0016 c.slli zero,0x5 + 3e5a: 007a c.slli zero,0x1e + 3e5c: 4b40 lw s0,20(a4) + 3e5e: 2224 fld fs1,64(a2) + 3e60: 007c addi a5,sp,12 + 3e62: 4b40 lw s0,20(a4) + 3e64: 2224 fld fs1,64(a2) + 3e66: 1aff082b 0x1aff082b + 3e6a: 007e c.slli zero,0x1f + 3e6c: 3122 fld ft2,40(sp) + 3e6e: 9f25 0x9f25 + 3e70: 0360 addi s0,sp,396 + 3e72: 0000 unimp + 3e74: 036c addi a1,sp,396 + 3e76: 0000 unimp + 3e78: 0001 nop + 3e7a: b85f 0003 d000 0xd0000003b85f + 3e80: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 3e84: 5f00 lw s0,56(a4) + 3e86: 03d0 addi a2,sp,452 + 3e88: 0000 unimp + 3e8a: 03d8 addi a4,sp,452 + 3e8c: 0000 unimp + 3e8e: 0001 nop + 3e90: 5862 lw a6,56(sp) + 3e92: 0004 0x4 + 3e94: 6000 flw fs0,0(s0) + 3e96: 0004 0x4 + 3e98: 0100 addi s0,sp,128 + 3e9a: 5f00 lw s0,56(a4) + 3e9c: 04d0 addi a2,sp,580 + 3e9e: 0000 unimp + 3ea0: 04dc addi a5,sp,580 + 3ea2: 0000 unimp + 3ea4: 0001 nop + 3ea6: 385f 0005 4400 0x44000005385f + 3eac: 0005 c.nop 1 + 3eae: 0100 addi s0,sp,128 + 3eb0: 5e00 lw s0,56(a2) + 3eb2: 0560 addi s0,sp,652 + 3eb4: 0000 unimp + 3eb6: 0578 addi a4,sp,652 + 3eb8: 0000 unimp + 3eba: 0001 nop + 3ebc: 785d lui a6,0xffff7 + 3ebe: 0005 c.nop 1 + 3ec0: 7c00 flw fs0,56(s0) + 3ec2: 0005 c.nop 1 + 3ec4: 0100 addi s0,sp,128 + 3ec6: 5f00 lw s0,56(a4) + 3ec8: 057c addi a5,sp,652 + 3eca: 0000 unimp + 3ecc: 0590 addi a2,sp,704 + 3ece: 0000 unimp + 3ed0: 0001 nop + 3ed2: c45d beqz s0,3f80 <_start-0x7fffc080> + 3ed4: 0005 c.nop 1 + 3ed6: 0c00 addi s0,sp,528 + 3ed8: 0006 c.slli zero,0x1 + 3eda: 0100 addi s0,sp,128 + 3edc: 6200 flw fs0,0(a2) + 3ede: 060c addi a1,sp,768 + 3ee0: 0000 unimp + 3ee2: 0648 addi a0,sp,772 + 3ee4: 0000 unimp + 3ee6: 0001 nop + 3ee8: 505d c.li zero,-9 + 3eea: 0006 c.slli zero,0x1 + 3eec: 7c00 flw fs0,56(s0) + 3eee: 0006 c.slli zero,0x1 + 3ef0: 0100 addi s0,sp,128 + 3ef2: 6200 flw fs0,0(a2) + 3ef4: 067c addi a5,sp,780 + 3ef6: 0000 unimp + 3ef8: 06b0 addi a2,sp,840 + 3efa: 0000 unimp + 3efc: 0001 nop + 3efe: b05d j 37a4 <_start-0x7fffc85c> + 3f00: 0006 c.slli zero,0x1 + 3f02: b800 fsd fs0,48(s0) + 3f04: 0006 c.slli zero,0x1 + 3f06: 0200 addi s0,sp,256 + 3f08: 3000 fld fs0,32(s0) + 3f0a: b89f 0006 c800 0xc8000006b89f + 3f10: 0006 c.slli zero,0x1 + 3f12: 0100 addi s0,sp,128 + 3f14: 5d00 lw s0,56(a0) + 3f16: 06c8 addi a0,sp,836 + 3f18: 0000 unimp + 3f1a: 06cc addi a1,sp,836 + 3f1c: 0000 unimp + 3f1e: 0001 nop + 3f20: e85f 0006 ec00 0xec000006e85f + 3f26: 0006 c.slli zero,0x1 + 3f28: 1c00 addi s0,sp,560 + 3f2a: 7a00 flw fs0,48(a2) + 3f2c: 4000 lw s0,0(s0) + 3f2e: 7a22244b fnmsub.d fs0,ft4,ft2,fa5,rdn + 3f32: 7c00 flw fs0,56(s0) + 3f34: 2200 fld fs0,0(a2) + 3f36: 4b40 lw s0,20(a4) + 3f38: 2224 fld fs1,64(a2) + 3f3a: 1aff082b 0x1aff082b + 3f3e: 007e c.slli zero,0x1f + 3f40: 7f22 flw ft10,40(sp) + 3f42: 2200 fld fs0,0(a2) + 3f44: 2531 jal 4550 <_start-0x7fffbab0> + 3f46: f49f 0006 fc00 0xfc000006f49f + 3f4c: 0006 c.slli zero,0x1 + 3f4e: 0100 addi s0,sp,128 + 3f50: 5f00 lw s0,56(a4) + 3f52: 06fc addi a5,sp,844 + 3f54: 0000 unimp + 3f56: 0714 addi a3,sp,896 + 3f58: 0000 unimp + 3f5a: 0009 c.nop 2 + 3f5c: 007f 0x7f + 3f5e: ff11 bnez a4,3e7a <_start-0x7fffc186> + 3f60: ffff 0xffff + 3f62: 149f1a7b 0x149f1a7b + 3f66: 34000007 0x34000007 + 3f6a: 01000007 0x1000007 + 3f6e: 5f00 lw s0,56(a4) + 3f70: 0744 addi s1,sp,900 + 3f72: 0000 unimp + 3f74: 0750 addi a2,sp,900 + 3f76: 0000 unimp + 3f78: 0001 nop + 3f7a: 945f 0007 9c00 0x9c000007945f + 3f80: 01000007 0x1000007 + 3f84: 5e00 lw s0,56(a2) + 3f86: 07a4 addi s1,sp,968 + 3f88: 0000 unimp + 3f8a: 07ac addi a1,sp,968 + 3f8c: 0000 unimp + 3f8e: 0001 nop + 3f90: bc5d j 3a46 <_start-0x7fffc5ba> + 3f92: c0000007 0xc0000007 + 3f96: 09000007 0x9000007 + 3f9a: 7f00 flw fs0,56(a4) + 3f9c: 1100 addi s0,sp,160 + 3f9e: ffff 0xffff + 3fa0: 7bff 0x7bff + 3fa2: 9f1a add t5,t5,t1 + ... + 3fac: 007c addi a5,sp,12 + 3fae: 0000 unimp + 3fb0: 00a8 addi a0,sp,72 + 3fb2: 0000 unimp + 3fb4: 0001 nop + 3fb6: b060 fsd fs0,224(s0) + 3fb8: 0000 unimp + 3fba: b800 fsd fs0,48(s0) + 3fbc: 0000 unimp + 3fbe: 0100 addi s0,sp,128 + 3fc0: 6000 flw fs0,0(s0) + 3fc2: 00e0 addi s0,sp,76 + 3fc4: 0000 unimp + 3fc6: 0124 addi s1,sp,136 + 3fc8: 0000 unimp + 3fca: 0001 nop + 3fcc: 7460 flw fs0,108(s0) + 3fce: 0001 nop + 3fd0: 9000 0x9000 + 3fd2: 0001 nop + 3fd4: 0100 addi s0,sp,128 + 3fd6: 6000 flw fs0,0(s0) + 3fd8: 01a8 addi a0,sp,200 + 3fda: 0000 unimp + 3fdc: 01b4 addi a3,sp,200 + 3fde: 0000 unimp + 3fe0: 0001 nop + 3fe2: b460 fsd fs0,232(s0) + 3fe4: 0001 nop + 3fe6: bc00 fsd fs0,56(s0) + 3fe8: 0001 nop + 3fea: 0600 addi s0,sp,768 + 3fec: 7800 flw fs0,48(s0) + 3fee: 8100 0x8100 + 3ff0: 1c00 addi s0,sp,560 + 3ff2: bc9f 0001 cc00 0xcc000001bc9f + 3ff8: 0001 nop + 3ffa: 0100 addi s0,sp,128 + 3ffc: 5b00 lw s0,48(a4) + 3ffe: 01cc addi a1,sp,196 + 4000: 0000 unimp + 4002: 01ec addi a1,sp,204 + 4004: 0000 unimp + 4006: 0001 nop + 4008: f85d bnez s0,3fbe <_start-0x7fffc042> + 400a: 0001 nop + 400c: 0c00 addi s0,sp,528 + 400e: 0002 c.slli64 zero + 4010: 0100 addi s0,sp,128 + 4012: 5b00 lw s0,48(a4) + 4014: 020c addi a1,sp,256 + 4016: 0000 unimp + 4018: 0240 addi s0,sp,260 + 401a: 0000 unimp + 401c: 0001 nop + 401e: 585d li a6,-9 + 4020: 0002 c.slli64 zero + 4022: 7400 flw fs0,40(s0) + 4024: 0002 c.slli64 zero + 4026: 0100 addi s0,sp,128 + 4028: 5d00 lw s0,56(a0) + 402a: 028c addi a1,sp,320 + 402c: 0000 unimp + 402e: 0298 addi a4,sp,320 + 4030: 0000 unimp + 4032: 0001 nop + 4034: 985d andi s0,s0,-9 + 4036: 0002 c.slli64 zero + 4038: e400 fsw fs0,8(s0) + 403a: 0002 c.slli64 zero + 403c: 0600 addi s0,sp,768 + 403e: 7800 flw fs0,48(s0) + 4040: 8100 0x8100 + 4042: 1c00 addi s0,sp,560 + 4044: e89f 0002 f400 0xf4000002e89f + 404a: 0002 c.slli64 zero + 404c: 0600 addi s0,sp,768 + 404e: 7800 flw fs0,48(s0) + 4050: 8100 0x8100 + 4052: 1c00 addi s0,sp,560 + 4054: 089f 0003 3400 0x34000003089f + 405a: 06000003 lb zero,96(zero) # 60 <_start-0x7fffffa0> + 405e: 7800 flw fs0,48(s0) + 4060: 8100 0x8100 + 4062: 1c00 addi s0,sp,560 + 4064: 349f 0003 3800 0x38000003349f + 406a: 07000003 lb zero,112(zero) # 70 <_start-0x7fffff90> + 406e: 8100 0x8100 + 4070: 2000 fld fs0,0(s0) + 4072: 007d c.nop 31 + 4074: 9f22 add t5,t5,s0 + 4076: 06cc addi a1,sp,836 + 4078: 0000 unimp + 407a: 06dc addi a5,sp,836 + 407c: 0000 unimp + 407e: 0001 nop + 4080: 0006dc5b 0x6dc5b + 4084: ec00 fsw fs0,24(s0) + 4086: 0006 c.slli zero,0x1 + 4088: 0600 addi s0,sp,768 + 408a: 7800 flw fs0,48(s0) + 408c: 8100 0x8100 + 408e: 1c00 addi s0,sp,560 + 4090: 009f 0000 0000 0x9f + 4096: 0000 unimp + 4098: 9800 0x9800 + 409a: 0000 unimp + 409c: a800 fsd fs0,16(s0) + 409e: 0000 unimp + 40a0: 0100 addi s0,sp,128 + 40a2: 5c00 lw s0,56(s0) + ... + 40ac: 0128 addi a0,sp,136 + 40ae: 0000 unimp + 40b0: 0138 addi a4,sp,136 + 40b2: 0000 unimp + 40b4: 0001 nop + 40b6: 005c addi a5,sp,4 + 40b8: 0000 unimp + 40ba: 0000 unimp + 40bc: 0000 unimp + 40be: d400 sw s0,40(s0) + 40c0: 0001 nop + 40c2: e400 fsw fs0,8(s0) + 40c4: 0001 nop + 40c6: 0100 addi s0,sp,128 + 40c8: 5a00 lw s0,48(a2) + ... + 40d2: 0244 addi s1,sp,260 + 40d4: 0000 unimp + 40d6: 0258 addi a4,sp,260 + 40d8: 0000 unimp + 40da: 0001 nop + 40dc: 005a c.slli zero,0x16 + 40de: 0000 unimp + 40e0: 0000 unimp + 40e2: 0000 unimp + 40e4: bc00 fsd fs0,56(s0) + 40e6: 0002 c.slli64 zero + 40e8: e800 fsw fs0,16(s0) + 40ea: 0002 c.slli64 zero + 40ec: 0100 addi s0,sp,128 + 40ee: 5c00 lw s0,56(s0) + ... + 40f8: 0308 addi a0,sp,384 + 40fa: 0000 unimp + 40fc: 0314 addi a3,sp,384 + 40fe: 0000 unimp + 4100: 0006 c.slli zero,0x1 + 4102: 007a c.slli zero,0x1e + 4104: 007c addi a5,sp,12 + 4106: 9f22 add t5,t5,s0 + 4108: 0314 addi a3,sp,384 + 410a: 0000 unimp + 410c: 0328 addi a0,sp,392 + 410e: 0000 unimp + 4110: 0001 nop + 4112: e85c fsw fa5,20(s0) + 4114: 0006 c.slli zero,0x1 + 4116: ec00 fsw fs0,24(s0) + 4118: 0006 c.slli zero,0x1 + 411a: 0600 addi s0,sp,768 + 411c: 7a00 flw fs0,48(a2) + 411e: 7c00 flw fs0,56(s0) + 4120: 2200 fld fs0,0(a2) + 4122: 009f 0000 0000 0x9f + 4128: 0000 unimp + 412a: 3800 fld fs0,48(s0) + 412c: 4c000003 lb zero,1216(zero) # 4c0 <_start-0x7ffffb40> + 4130: 06000003 lb zero,96(zero) # 60 <_start-0x7fffffa0> + 4134: 7800 flw fs0,48(s0) + 4136: 8100 0x8100 + 4138: 1c00 addi s0,sp,560 + 413a: 4c9f 0003 6400 0x640000034c9f + 4140: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 4144: 6000 flw fs0,0(s0) + 4146: 036c addi a1,sp,396 + 4148: 0000 unimp + 414a: 03a8 addi a0,sp,456 + 414c: 0000 unimp + 414e: 0001 nop + 4150: d860 sw s0,116(s0) + 4152: ec000003 lb zero,-320(zero) # fffffec0 <__global_pointer$+0x7fffb0e8> + 4156: 06000003 lb zero,96(zero) # 60 <_start-0x7fffffa0> + 415a: 7800 flw fs0,48(s0) + 415c: 8100 0x8100 + 415e: 1c00 addi s0,sp,560 + 4160: ec9f 0003 0800 0x8000003ec9f + 4166: 0004 0x4 + 4168: 0100 addi s0,sp,128 + 416a: 6000 flw fs0,0(s0) + 416c: 0420 addi s0,sp,520 + 416e: 0000 unimp + 4170: 042c addi a1,sp,520 + 4172: 0000 unimp + 4174: 0001 nop + 4176: 2c60 fld fs0,216(s0) + 4178: 0004 0x4 + 417a: 3400 fld fs0,40(s0) + 417c: 0004 0x4 + 417e: 0600 addi s0,sp,768 + 4180: 7800 flw fs0,48(s0) + 4182: 8100 0x8100 + 4184: 1c00 addi s0,sp,560 + 4186: 349f 0004 4400 0x44000004349f + 418c: 0004 0x4 + 418e: 0100 addi s0,sp,128 + 4190: 6000 flw fs0,0(s0) + 4192: 0444 addi s1,sp,516 + 4194: 0000 unimp + 4196: 0468 addi a0,sp,524 + 4198: 0000 unimp + 419a: 0001 nop + 419c: 785d lui a6,0xffff7 + 419e: 0004 0x4 + 41a0: 8c00 0x8c00 + 41a2: 0004 0x4 + 41a4: 0100 addi s0,sp,128 + 41a6: 6000 flw fs0,0(s0) + 41a8: 048c addi a1,sp,576 + 41aa: 0000 unimp + 41ac: 04c0 addi s0,sp,580 + 41ae: 0000 unimp + 41b0: 0001 nop + 41b2: dc5d beqz s0,4170 <_start-0x7fffbe90> + 41b4: 0004 0x4 + 41b6: f800 fsw fs0,48(s0) + 41b8: 0004 0x4 + 41ba: 0100 addi s0,sp,128 + 41bc: 5d00 lw s0,56(a0) + 41be: 0510 addi a2,sp,640 + 41c0: 0000 unimp + 41c2: 051c addi a5,sp,640 + 41c4: 0000 unimp + 41c6: 0001 nop + 41c8: 1c5d addi s8,s8,-9 + 41ca: 0005 c.nop 1 + 41cc: 4400 lw s0,8(s0) + 41ce: 0005 c.nop 1 + 41d0: 0600 addi s0,sp,768 + 41d2: 7800 flw fs0,48(s0) + 41d4: 8100 0x8100 + 41d6: 1c00 addi s0,sp,560 + 41d8: 4c9f 0005 5800 0x580000054c9f + 41de: 0005 c.nop 1 + 41e0: 0600 addi s0,sp,768 + 41e2: 7800 flw fs0,48(s0) + 41e4: 8100 0x8100 + 41e6: 1c00 addi s0,sp,560 + 41e8: 909f 0005 a400 0xa4000005909f + 41ee: 0005 c.nop 1 + 41f0: 0600 addi s0,sp,768 + 41f2: 7800 flw fs0,48(s0) + 41f4: 8100 0x8100 + 41f6: 1c00 addi s0,sp,560 + 41f8: ac9f 0005 e000 0xe0000005ac9f + 41fe: 0005 c.nop 1 + 4200: 0600 addi s0,sp,768 + 4202: 7800 flw fs0,48(s0) + 4204: 8100 0x8100 + 4206: 1c00 addi s0,sp,560 + 4208: 509f 0006 6000 0x60000006509f + 420e: 0006 c.slli zero,0x1 + 4210: 0600 addi s0,sp,768 + 4212: 7800 flw fs0,48(s0) + 4214: 8100 0x8100 + 4216: 1c00 addi s0,sp,560 + 4218: 849f 0007 9400 0x94000007849f + 421e: 01000007 0x1000007 + 4222: 6000 flw fs0,0(s0) + 4224: 0794 addi a3,sp,960 + 4226: 0000 unimp + 4228: 079c addi a5,sp,960 + 422a: 0000 unimp + 422c: 0006 c.slli zero,0x1 + 422e: 0078 addi a4,sp,12 + 4230: 0081 addi ra,ra,0 + 4232: 9f1c 0x9f1c + 4234: 07ac addi a1,sp,968 + 4236: 0000 unimp + 4238: 07bc addi a5,sp,968 + 423a: 0000 unimp + 423c: 0006 c.slli zero,0x1 + 423e: 0078 addi a4,sp,12 + 4240: 0081 addi ra,ra,0 + 4242: 9f1c 0x9f1c + ... + 424c: 0354 addi a3,sp,388 + 424e: 0000 unimp + 4250: 0364 addi s1,sp,396 + 4252: 0000 unimp + 4254: 0001 nop + 4256: 005c addi a5,sp,4 + 4258: 0000 unimp + 425a: 0000 unimp + 425c: 0000 unimp + 425e: ac00 fsd fs0,24(s0) + 4260: bc000003 lb zero,-1088(zero) # fffffbc0 <__global_pointer$+0x7fffade8> + 4264: 01000003 lb zero,16(zero) # 10 <_start-0x7ffffff0> + 4268: 5c00 lw s0,56(s0) + ... + 4272: 044c addi a1,sp,516 + 4274: 0000 unimp + 4276: 0460 addi s0,sp,524 + 4278: 0000 unimp + 427a: 0001 nop + 427c: 005a c.slli zero,0x16 + 427e: 0000 unimp + 4280: 0000 unimp + 4282: 0000 unimp + 4284: c400 sw s0,8(s0) + 4286: 0004 0x4 + 4288: dc00 sw s0,56(s0) + 428a: 0004 0x4 + 428c: 0100 addi s0,sp,128 + 428e: 5a00 lw s0,48(a2) + ... + 4298: 0554 addi a3,sp,644 + 429a: 0000 unimp + 429c: 0590 addi a2,sp,704 + 429e: 0000 unimp + 42a0: 0001 nop + 42a2: a460 fsd fs0,200(s0) + 42a4: ac000007 0xac000007 + 42a8: 01000007 0x1000007 + 42ac: 6000 flw fs0,0(s0) + ... + 42b6: 056c addi a1,sp,652 + 42b8: 0000 unimp + 42ba: 057c addi a5,sp,652 + 42bc: 0000 unimp + 42be: 0001 nop + 42c0: 005a c.slli zero,0x16 + 42c2: 0000 unimp + 42c4: 0000 unimp + 42c6: 0000 unimp + 42c8: b800 fsd fs0,48(s0) + 42ca: 0005 c.nop 1 + 42cc: d000 sw s0,32(s0) + 42ce: 0005 c.nop 1 + 42d0: 0100 addi s0,sp,128 + 42d2: 6300 flw fs0,0(a4) + 42d4: 05d0 addi a2,sp,708 + 42d6: 0000 unimp + 42d8: 05d8 addi a4,sp,708 + 42da: 0000 unimp + 42dc: 0006 c.slli zero,0x1 + 42de: 007a c.slli zero,0x1e + 42e0: 007c addi a5,sp,12 + 42e2: 9f1c 0x9f1c + 42e4: 0650 addi a2,sp,772 + 42e6: 0000 unimp + 42e8: 0664 addi s1,sp,780 + 42ea: 0000 unimp + 42ec: 0001 nop + 42ee: 00000063 beqz zero,42ee <_start-0x7fffbd12> + 42f2: 0000 unimp + 42f4: 0000 unimp + 42f6: d000 sw s0,32(s0) + 42f8: 0005 c.nop 1 + 42fa: e000 fsw fs0,0(s0) + 42fc: 0005 c.nop 1 + 42fe: 0100 addi s0,sp,128 + 4300: 6300 flw fs0,0(a4) + ... + 430a: 05ec addi a1,sp,716 + 430c: 0000 unimp + 430e: 05f0 addi a2,sp,716 + 4310: 0000 unimp + 4312: 0001 nop + 4314: f05a fsw fs6,32(sp) + 4316: 0005 c.nop 1 + 4318: 1800 addi s0,sp,48 + 431a: 0006 c.slli zero,0x1 + 431c: 0100 addi s0,sp,128 + 431e: 5e00 lw s0,56(a2) + 4320: 061c addi a5,sp,768 + 4322: 0000 unimp + 4324: 0648 addi a0,sp,772 + 4326: 0000 unimp + 4328: 0001 nop + 432a: 6c5f 0006 7400 0x740000066c5f + 4330: 0006 c.slli zero,0x1 + 4332: 0100 addi s0,sp,128 + 4334: 5a00 lw s0,48(a2) + 4336: 0674 addi a3,sp,780 + 4338: 0000 unimp + 433a: 0684 addi s1,sp,832 + 433c: 0000 unimp + 433e: 0001 nop + 4340: 845e mv s0,s7 + 4342: 0006 c.slli zero,0x1 + 4344: b400 fsd fs0,40(s0) + 4346: 0006 c.slli zero,0x1 + 4348: 0100 addi s0,sp,128 + 434a: 5f00 lw s0,56(a4) + 434c: 06b8 addi a4,sp,840 + 434e: 0000 unimp + 4350: 06cc addi a1,sp,836 + 4352: 0000 unimp + 4354: 0001 nop + 4356: 005e c.slli zero,0x17 + 4358: 0000 unimp + 435a: 0000 unimp + 435c: 0000 unimp + 435e: d000 sw s0,32(s0) + 4360: 0000 unimp + 4362: e000 fsw fs0,0(s0) + 4364: 0000 unimp + 4366: 0100 addi s0,sp,128 + 4368: 5d00 lw s0,56(a0) + ... + 4376: 0030 addi a2,sp,8 + 4378: 0000 unimp + 437a: 0006 c.slli zero,0x1 + 437c: 935a add t1,t1,s6 + 437e: 5b04 lw s1,48(a4) + 4380: 00300493 li s1,3 + 4384: 0000 unimp + 4386: 004c addi a1,sp,4 + 4388: 0000 unimp + 438a: 0006 c.slli zero,0x1 + 438c: 0af503f3 0xaf503f3 + 4390: 9f25 0x9f25 + ... + 439a: 0010 0x10 + 439c: 0000 unimp + 439e: 0014 0x14 + 43a0: 0000 unimp + 43a2: 007b0007 0x7b0007 + 43a6: ff0a fsw ft2,188(sp) + 43a8: 149f1a07 0x149f1a07 + 43ac: 0000 unimp + 43ae: 4c00 lw s0,24(s0) + 43b0: 0000 unimp + 43b2: 0800 addi s0,sp,16 + 43b4: 7b00 flw fs0,48(a4) + 43b6: 2000 fld fs0,0(s0) + 43b8: ff0a fsw ft2,188(sp) + 43ba: 009f1a07 0x9f1a07 + ... + 43c6: 0000 unimp + 43c8: 3000 fld fs0,32(s0) + 43ca: 0000 unimp + 43cc: 0100 addi s0,sp,128 + 43ce: 5a00 lw s0,48(a2) + ... + 43d8: 000c 0xc + 43da: 0000 unimp + 43dc: 002c addi a1,sp,8 + 43de: 0000 unimp + 43e0: 0001 nop + 43e2: 005e c.slli zero,0x17 + 43e4: 0000 unimp + 43e6: 0000 unimp + 43e8: 0000 unimp + 43ea: 1800 addi s0,sp,48 + 43ec: 0000 unimp + 43ee: 4400 lw s0,8(s0) + 43f0: 0000 unimp + 43f2: 0100 addi s0,sp,128 + 43f4: 5f00 lw s0,56(a4) + ... + 4402: 0020 addi s0,sp,8 + 4404: 0000 unimp + 4406: 0001 nop + 4408: 205a fld ft0,400(sp) + 440a: 0000 unimp + 440c: d800 sw s0,48(s0) + 440e: 0000 unimp + 4410: 0600 addi s0,sp,768 + 4412: f300 fsw fs0,32(a4) + 4414: 250af503 0x250af503 + 4418: 009f 0000 0000 0x9f + 441e: 0000 unimp + 4420: 0000 unimp + 4422: 0000 unimp + 4424: 3c00 fld fs0,56(s0) + 4426: 0000 unimp + 4428: 0200 addi s0,sp,256 + 442a: 3000 fld fs0,32(s0) + 442c: 709f 0000 c000 0xc0000000709f + 4432: 0000 unimp + 4434: 0200 addi s0,sp,256 + 4436: 3000 fld fs0,32(s0) + 4438: 009f 0000 0000 0x9f + 443e: 0000 unimp + 4440: 2c00 fld fs0,24(s0) + 4442: 0000 unimp + 4444: 6400 flw fs0,8(s0) + 4446: 0000 unimp + 4448: 0600 addi s0,sp,768 + 444a: 7900 flw fs0,48(a0) + 444c: 0800 addi s0,sp,16 + 444e: 1aff 0x1aff + 4450: 709f 0000 d800 0xd8000000709f + 4456: 0000 unimp + 4458: 0600 addi s0,sp,768 + 445a: 7900 flw fs0,48(a0) + 445c: 0800 addi s0,sp,16 + 445e: 1aff 0x1aff + 4460: 009f 0000 0000 0x9f + 4466: 0000 unimp + 4468: 2c00 fld fs0,24(s0) + 446a: 0000 unimp + 446c: 3800 fld fs0,48(s0) + 446e: 0000 unimp + 4470: 0100 addi s0,sp,128 + 4472: 5f00 lw s0,56(a4) + 4474: 0038 addi a4,sp,8 + 4476: 0000 unimp + 4478: 003c addi a5,sp,8 + 447a: 0000 unimp + 447c: 0004 0x4 + 447e: 807a c.mv zero,t5 + 4480: 9f79 0x9f79 + 4482: 0070 addi a2,sp,12 + 4484: 0000 unimp + 4486: 007f 0x7f + 4488: 0000 unimp + 448a: 0001 nop + 448c: b85f 0000 bc00 0xbc000000b85f + 4492: 0000 unimp + 4494: 0100 addi s0,sp,128 + 4496: 5f00 lw s0,56(a4) + ... + 44a0: 002c addi a1,sp,8 + 44a2: 0000 unimp + 44a4: 003c addi a5,sp,8 + 44a6: 0000 unimp + 44a8: 0001 nop + 44aa: 7058 flw fa4,36(s0) + 44ac: 0000 unimp + 44ae: 9c00 0x9c00 + 44b0: 0000 unimp + 44b2: 0100 addi s0,sp,128 + 44b4: 5800 lw s0,48(s0) + 44b6: 00a8 addi a0,sp,72 + 44b8: 0000 unimp + 44ba: 00b4 addi a3,sp,72 + 44bc: 0000 unimp + 44be: 0001 nop + 44c0: b858 fsd fa4,176(s0) + 44c2: 0000 unimp + 44c4: cc00 sw s0,24(s0) + 44c6: 0000 unimp + 44c8: 0100 addi s0,sp,128 + 44ca: 5800 lw s0,48(s0) + ... + 44d4: 0034 addi a3,sp,8 + 44d6: 0000 unimp + 44d8: 0044 addi s1,sp,4 + 44da: 0000 unimp + 44dc: 0001 nop + 44de: a45a fsd fs6,8(sp) + 44e0: 0000 unimp + 44e2: a800 fsd fs0,16(s0) + 44e4: 0000 unimp + 44e6: 0100 addi s0,sp,128 + 44e8: 5a00 lw s0,48(a2) + 44ea: 00b8 addi a4,sp,72 + 44ec: 0000 unimp + 44ee: 00d8 addi a4,sp,68 + 44f0: 0000 unimp + 44f2: 0004 0x4 + 44f4: ff0a fsw ft2,188(sp) + 44f6: 00009f07 0x9f07 + 44fa: 0000 unimp + 44fc: 0000 unimp + 44fe: 0000 unimp + 4500: 002c addi a1,sp,8 + 4502: 0000 unimp + 4504: 0060 addi s0,sp,12 + 4506: 0000 unimp + 4508: 0001 nop + 450a: 6058 flw fa4,4(s0) + 450c: 0000 unimp + 450e: 7000 flw fs0,32(s0) + 4510: 0000 unimp + 4512: 0100 addi s0,sp,128 + 4514: 5a00 lw s0,48(a2) + 4516: 0070 addi a2,sp,12 + 4518: 0000 unimp + 451a: 00b0 addi a2,sp,72 + 451c: 0000 unimp + 451e: 0001 nop + 4520: b058 fsd fa4,160(s0) + 4522: 0000 unimp + 4524: b800 fsd fs0,48(s0) + 4526: 0000 unimp + 4528: 0200 addi s0,sp,256 + 452a: 3000 fld fs0,32(s0) + 452c: b89f 0000 d800 0xd8000000b89f + 4532: 0000 unimp + 4534: 0100 addi s0,sp,128 + 4536: 5800 lw s0,48(s0) + ... + 4540: 002c addi a1,sp,8 + 4542: 0000 unimp + 4544: 0038 addi a4,sp,8 + 4546: 0000 unimp + 4548: 0002 c.slli64 zero + 454a: 9f30 0x9f30 + 454c: 0038 addi a4,sp,8 + 454e: 0000 unimp + 4550: 0040 addi s0,sp,4 + 4552: 0000 unimp + 4554: 0001 nop + 4556: 705f 0000 9800 0x98000000705f + 455c: 0000 unimp + 455e: 0200 addi s0,sp,256 + 4560: 3000 fld fs0,32(s0) + 4562: 989f 0000 a800 0xa8000000989f + 4568: 0000 unimp + 456a: 0100 addi s0,sp,128 + 456c: 5f00 lw s0,56(a4) + 456e: 00a8 addi a0,sp,72 + 4570: 0000 unimp + 4572: 00b0 addi a2,sp,72 + 4574: 0000 unimp + 4576: 0002 c.slli64 zero + 4578: 9f30 0x9f30 + 457a: 00b0 addi a2,sp,72 + 457c: 0000 unimp + 457e: 00b8 addi a4,sp,72 + 4580: 0000 unimp + 4582: 0001 nop + 4584: b85f 0000 c400 0xc4000000b85f + 458a: 0000 unimp + 458c: 0200 addi s0,sp,256 + 458e: 3000 fld fs0,32(s0) + 4590: c49f 0000 d000 0xd0000000c49f + 4596: 0000 unimp + 4598: 0100 addi s0,sp,128 + 459a: 5f00 lw s0,56(a4) + ... + 45a4: 0080 addi s0,sp,64 + 45a6: 0000 unimp + 45a8: 00a4 addi s1,sp,72 + 45aa: 0000 unimp + 45ac: 0001 nop + 45ae: a85a fsd fs6,16(sp) + 45b0: 0000 unimp + 45b2: b800 fsd fs0,48(s0) + 45b4: 0000 unimp + 45b6: 0100 addi s0,sp,128 + 45b8: 5a00 lw s0,48(a2) + ... + 45c6: 004c addi a1,sp,4 + 45c8: 0000 unimp + 45ca: 0006 c.slli zero,0x1 + 45cc: 935a add t1,t1,s6 + 45ce: 5b04 lw s1,48(a4) + 45d0: 004c0493 addi s1,s8,4 # 16004 <_start-0x7ffe9ffc> + 45d4: 0000 unimp + 45d6: 00b8 addi a4,sp,72 + 45d8: 0000 unimp + 45da: 0006 c.slli zero,0x1 + 45dc: 0af503f3 0xaf503f3 + 45e0: 9f25 0x9f25 + 45e2: 00b8 addi a4,sp,72 + 45e4: 0000 unimp + 45e6: 00bc addi a5,sp,72 + 45e8: 0000 unimp + 45ea: 0006 c.slli zero,0x1 + 45ec: 935a add t1,t1,s6 + 45ee: 5b04 lw s1,48(a4) + 45f0: 00bc0493 addi s1,s8,11 + 45f4: 0000 unimp + 45f6: 00d4 addi a3,sp,68 + 45f8: 0000 unimp + 45fa: 0006 c.slli zero,0x1 + 45fc: 0af503f3 0xaf503f3 + 4600: 9f25 0x9f25 + 4602: 00d4 addi a3,sp,68 + 4604: 0000 unimp + 4606: 0100 addi s0,sp,128 + 4608: 0000 unimp + 460a: 0006 c.slli zero,0x1 + 460c: 935a add t1,t1,s6 + 460e: 5b04 lw s1,48(a4) + 4610: 01000493 li s1,16 + 4614: 0000 unimp + 4616: 015c addi a5,sp,132 + 4618: 0000 unimp + 461a: 0006 c.slli zero,0x1 + 461c: 0af503f3 0xaf503f3 + 4620: 9f25 0x9f25 + 4622: 015c addi a5,sp,132 + 4624: 0000 unimp + 4626: 0164 addi s1,sp,140 + 4628: 0000 unimp + 462a: 0006 c.slli zero,0x1 + 462c: 935a add t1,t1,s6 + 462e: 5b04 lw s1,48(a4) + 4630: 01640493 addi s1,s0,22 # ffff8016 <__global_pointer$+0x7fff323e> + 4634: 0000 unimp + 4636: 0180 addi s0,sp,192 + 4638: 0000 unimp + 463a: 0006 c.slli zero,0x1 + 463c: 0af503f3 0xaf503f3 + 4640: 9f25 0x9f25 + ... + 464e: 007c addi a5,sp,12 + 4650: 0000 unimp + 4652: 0002 c.slli64 zero + 4654: 9f30 0x9f30 + 4656: 0088 addi a0,sp,64 + 4658: 0000 unimp + 465a: 00cc addi a1,sp,68 + 465c: 0000 unimp + 465e: 0002 c.slli64 zero + 4660: 9f30 0x9f30 + 4662: 00d4 addi a3,sp,68 + 4664: 0000 unimp + 4666: 00ec addi a1,sp,76 + 4668: 0000 unimp + 466a: 0002 c.slli64 zero + 466c: 9f30 0x9f30 + 466e: 00f8 addi a4,sp,76 + 4670: 0000 unimp + 4672: 0100 addi s0,sp,128 + 4674: 0000 unimp + 4676: 0002 c.slli64 zero + 4678: 9f30 0x9f30 + 467a: 015c addi a5,sp,132 + 467c: 0000 unimp + 467e: 0164 addi s1,sp,140 + 4680: 0000 unimp + 4682: 0002 c.slli64 zero + 4684: 9f30 0x9f30 + ... + 468e: 0024 addi s1,sp,8 + 4690: 0000 unimp + 4692: 0138 addi a4,sp,136 + 4694: 0000 unimp + 4696: 0001 nop + 4698: 00015c5b 0x15c5b + 469c: 8000 0x8000 + 469e: 0001 nop + 46a0: 0100 addi s0,sp,128 + 46a2: 5b00 lw s0,48(a4) + ... + 46ac: 0010 0x10 + 46ae: 0000 unimp + 46b0: 0060 addi s0,sp,12 + 46b2: 0000 unimp + 46b4: 0001 nop + 46b6: 6060 flw fs0,68(s0) + 46b8: 0000 unimp + 46ba: 7800 flw fs0,48(s0) + 46bc: 0000 unimp + 46be: 0400 addi s0,sp,512 + 46c0: 8000 0x8000 + 46c2: 06fe slli a3,a3,0x1f + 46c4: 889f 0000 a400 0xa4000000889f + 46ca: 0000 unimp + 46cc: 0100 addi s0,sp,128 + 46ce: 6000 flw fs0,0(s0) + 46d0: 00a4 addi s1,sp,72 + 46d2: 0000 unimp + 46d4: 00a8 addi a0,sp,72 + 46d6: 0000 unimp + 46d8: 0004 0x4 + 46da: de80 sw s0,56(a3) + 46dc: 9f06 add t5,t5,ra + 46de: 00b8 addi a4,sp,72 + 46e0: 0000 unimp + 46e2: 0100 addi s0,sp,128 + 46e4: 0000 unimp + 46e6: 0001 nop + 46e8: 5c60 lw s0,124(s0) + 46ea: 0001 nop + 46ec: 6400 flw fs0,8(s0) + 46ee: 0001 nop + 46f0: 0100 addi s0,sp,128 + 46f2: 6000 flw fs0,0(s0) + ... + 4700: 0028 addi a0,sp,8 + 4702: 0000 unimp + 4704: 0001 nop + 4706: 285a fld fa6,400(sp) + 4708: 0000 unimp + 470a: 7800 flw fs0,48(s0) + 470c: 0000 unimp + 470e: 0100 addi s0,sp,128 + 4710: 5e00 lw s0,56(a2) + 4712: 0088 addi a0,sp,64 + 4714: 0000 unimp + 4716: 00b4 addi a3,sp,72 + 4718: 0000 unimp + 471a: 0001 nop + 471c: b45e fsd fs7,40(sp) + 471e: 0000 unimp + 4720: b800 fsd fs0,48(s0) + 4722: 0000 unimp + 4724: 0100 addi s0,sp,128 + 4726: 5f00 lw s0,56(a4) + 4728: 00b8 addi a4,sp,72 + 472a: 0000 unimp + 472c: 00cc addi a1,sp,68 + 472e: 0000 unimp + 4730: 0001 nop + 4732: d45e sw s7,40(sp) + 4734: 0000 unimp + 4736: ec00 fsw fs0,24(s0) + 4738: 0000 unimp + 473a: 0100 addi s0,sp,128 + 473c: 5e00 lw s0,56(a2) + 473e: 00f8 addi a4,sp,76 + 4740: 0000 unimp + 4742: 0100 addi s0,sp,128 + 4744: 0000 unimp + 4746: 0001 nop + 4748: 5c5e lw s8,244(sp) + 474a: 0001 nop + 474c: 6400 flw fs0,8(s0) + 474e: 0001 nop + 4750: 0100 addi s0,sp,128 + 4752: 5e00 lw s0,56(a2) + ... + 475c: 0004 0x4 + 475e: 0000 unimp + 4760: 0014 0x14 + 4762: 0000 unimp + 4764: 0005 c.nop 1 + 4766: 007c addi a5,sp,12 + 4768: 253c fld fa5,72(a0) + 476a: 149f 0000 2400 0x24000000149f + 4770: 0000 unimp + 4772: 0700 addi s0,sp,896 + 4774: 7b00 flw fs0,48(a4) + 4776: 3c00 fld fs0,56(s0) + 4778: 3c24 fld fs1,120(s0) + 477a: 9f25 0x9f25 + 477c: 0024 addi s1,sp,8 + 477e: 0000 unimp + 4780: 006c addi a1,sp,12 + 4782: 0000 unimp + 4784: 0001 nop + 4786: 885c 0x885c + 4788: 0000 unimp + 478a: b400 fsd fs0,40(s0) + 478c: 0000 unimp + 478e: 0100 addi s0,sp,128 + 4790: 5c00 lw s0,56(s0) + 4792: 00b4 addi a3,sp,72 + 4794: 0000 unimp + 4796: 00b8 addi a4,sp,72 + 4798: 0000 unimp + 479a: 0002 c.slli64 zero + 479c: 9f30 0x9f30 + 479e: 00b8 addi a4,sp,72 + 47a0: 0000 unimp + 47a2: 00c4 addi s1,sp,68 + 47a4: 0000 unimp + 47a6: 0001 nop + 47a8: d45c sw a5,44(s0) + 47aa: 0000 unimp + 47ac: ec00 fsw fs0,24(s0) + 47ae: 0000 unimp + 47b0: 0100 addi s0,sp,128 + 47b2: 5c00 lw s0,56(s0) + 47b4: 00ec addi a1,sp,76 + 47b6: 0000 unimp + 47b8: 00f8 addi a4,sp,76 + 47ba: 0000 unimp + 47bc: 0002 c.slli64 zero + 47be: 9f30 0x9f30 + 47c0: 00f8 addi a4,sp,76 + 47c2: 0000 unimp + 47c4: 0100 addi s0,sp,128 + 47c6: 0000 unimp + 47c8: 0001 nop + 47ca: 5c5c lw a5,60(s0) + 47cc: 0001 nop + 47ce: 6400 flw fs0,8(s0) + 47d0: 0001 nop + 47d2: 0100 addi s0,sp,128 + 47d4: 5c00 lw s0,56(s0) + ... + 47de: 0030 addi a2,sp,8 + 47e0: 0000 unimp + 47e2: 0078 addi a4,sp,12 + 47e4: 0000 unimp + 47e6: 0001 nop + 47e8: 7c5d lui s8,0xffff7 + 47ea: 0000 unimp + 47ec: 9000 0x9000 + 47ee: 0000 unimp + 47f0: 0100 addi s0,sp,128 + 47f2: 5d00 lw s0,56(a0) + 47f4: 0090 addi a2,sp,64 + 47f6: 0000 unimp + 47f8: 00a4 addi s1,sp,72 + 47fa: 0000 unimp + 47fc: 0004 0x4 + 47fe: 8080 0x8080 + 4800: 9f79 0x9f79 + 4802: 00a4 addi s1,sp,72 + 4804: 0000 unimp + 4806: 00a8 addi a0,sp,72 + 4808: 0000 unimp + 480a: 5e800003 lb zero,1512(zero) # 5e8 <_start-0x7ffffa18> + 480e: b89f 0000 cc00 0xcc000000b89f + 4814: 0000 unimp + 4816: 0100 addi s0,sp,128 + 4818: 5d00 lw s0,56(a0) + 481a: 00dc addi a5,sp,68 + 481c: 0000 unimp + 481e: 00e4 addi s1,sp,76 + 4820: 0000 unimp + 4822: 0002 c.slli64 zero + 4824: 9f30 0x9f30 + 4826: 00e4 addi s1,sp,76 + 4828: 0000 unimp + 482a: 00f8 addi a4,sp,76 + 482c: 0000 unimp + 482e: ff080003 lb zero,-16(a6) # ffff6ff0 <__global_pointer$+0x7fff2218> + 4832: f89f 0000 0000 0xf89f + 4838: 0001 nop + 483a: 0100 addi s0,sp,128 + 483c: 5d00 lw s0,56(a0) + 483e: 010c addi a1,sp,128 + 4840: 0000 unimp + 4842: 012c addi a1,sp,136 + 4844: 0000 unimp + 4846: 0001 nop + 4848: 2c5d jal 4afe <_start-0x7fffb502> + 484a: 0001 nop + 484c: 3800 fld fs0,48(s0) + 484e: 0001 nop + 4850: 0300 addi s0,sp,384 + 4852: 0800 addi s0,sp,16 + 4854: 9fff 0x9fff + 4856: 015c addi a5,sp,132 + 4858: 0000 unimp + 485a: 0180 addi s0,sp,192 + 485c: 0000 unimp + 485e: 0001 nop + 4860: 005d c.nop 23 + 4862: 0000 unimp + 4864: 0000 unimp + 4866: 0000 unimp + 4868: 7c00 flw fs0,56(s0) + 486a: 0000 unimp + 486c: 8800 0x8800 + 486e: 0000 unimp + 4870: 0100 addi s0,sp,128 + 4872: 5f00 lw s0,56(a4) + 4874: 00d0 addi a2,sp,68 + 4876: 0000 unimp + 4878: 00d4 addi a3,sp,68 + 487a: 0000 unimp + 487c: 0001 nop + 487e: f05f 0000 f800 0xf8000000f05f + 4884: 0000 unimp + 4886: 0100 addi s0,sp,128 + 4888: 5c00 lw s0,56(s0) + 488a: 0100 addi s0,sp,128 + 488c: 0000 unimp + 488e: 0108 addi a0,sp,128 + 4890: 0000 unimp + 4892: 0001 nop + 4894: 085f 0001 2000 0x20000001085f + 489a: 0001 nop + 489c: 0900 addi s0,sp,144 + 489e: 7f00 flw fs0,56(a4) + 48a0: 1100 addi s0,sp,160 + 48a2: ffff 0xffff + 48a4: 5fff 0x5fff + 48a6: 9f1a add t5,t5,t1 + 48a8: 0120 addi s0,sp,136 + 48aa: 0000 unimp + 48ac: 0134 addi a3,sp,136 + 48ae: 0000 unimp + 48b0: 0001 nop + 48b2: 385f 0001 4400 0x44000001385f + 48b8: 0001 nop + 48ba: 0100 addi s0,sp,128 + 48bc: 5f00 lw s0,56(a4) + 48be: 0164 addi s1,sp,140 + 48c0: 0000 unimp + 48c2: 0178 addi a4,sp,140 + 48c4: 0000 unimp + 48c6: 0001 nop + 48c8: 785f 0001 7c00 0x7c000001785f + 48ce: 0001 nop + 48d0: 0900 addi s0,sp,144 + 48d2: 7f00 flw fs0,56(a4) + 48d4: 1100 addi s0,sp,160 + 48d6: ffff 0xffff + 48d8: 5fff 0x5fff + 48da: 9f1a add t5,t5,t1 + ... + 48e4: 0154 addi a3,sp,132 + 48e6: 0000 unimp + 48e8: 0158 addi a4,sp,132 + 48ea: 0000 unimp + 48ec: 0008 0x8 + 48ee: 007f 0x7f + 48f0: 007a c.slli zero,0x1e + 48f2: f921 bnez a0,4842 <_start-0x7fffb7be> + 48f4: 9f2c 0x9f2c + 48f6: 0158 addi a4,sp,132 + 48f8: 0000 unimp + 48fa: 015c addi a5,sp,132 + 48fc: 0000 unimp + 48fe: 0001 nop + 4900: 005a c.slli zero,0x16 + ... + 490a: 0000 unimp + 490c: 2400 fld fs0,8(s0) + 490e: 0000 unimp + 4910: 0100 addi s0,sp,128 + 4912: 5a00 lw s0,48(a2) + 4914: 0024 addi s1,sp,8 + 4916: 0000 unimp + 4918: 0038 addi a4,sp,8 + 491a: 0000 unimp + 491c: 0004 0x4 + 491e: 9f5a01f3 0x9f5a01f3 + 4922: 0038 addi a4,sp,8 + 4924: 0000 unimp + 4926: 004c addi a1,sp,4 + 4928: 0000 unimp + 492a: 0001 nop + 492c: 005a c.slli zero,0x16 + ... + 4936: 0000 unimp + 4938: 2400 fld fs0,8(s0) + 493a: 0000 unimp + 493c: 0100 addi s0,sp,128 + 493e: 5a00 lw s0,48(a2) + 4940: 0024 addi s1,sp,8 + 4942: 0000 unimp + 4944: 0038 addi a4,sp,8 + 4946: 0000 unimp + 4948: 0004 0x4 + 494a: 9f5a01f3 0x9f5a01f3 + 494e: 0038 addi a4,sp,8 + 4950: 0000 unimp + 4952: 004c addi a1,sp,4 + 4954: 0000 unimp + 4956: 0001 nop + 4958: 005a c.slli zero,0x16 + 495a: 0000 unimp + 495c: 0000 unimp + 495e: 0000 unimp + 4960: 1400 addi s0,sp,544 + 4962: 0000 unimp + 4964: 2800 fld fs0,16(s0) + 4966: 0000 unimp + 4968: 0100 addi s0,sp,128 + 496a: 5f00 lw s0,56(a4) + ... + +Disassembly of section .debug_ranges: + +00000000 <.debug_ranges>: + 0: 0000 unimp + 2: 0000 unimp + 4: 0008 0x8 + 6: 0000 unimp + 8: 000c 0xc + a: 0000 unimp + c: 0014 0x14 + e: 0000 unimp + 10: 0024 addi s1,sp,8 + 12: 0000 unimp + 14: 0028 addi a0,sp,8 + 16: 0000 unimp + 18: 0034 addi a3,sp,8 + 1a: 0000 unimp + 1c: 0038 addi a4,sp,8 + ... + 26: 0000 unimp + 28: 0014 0x14 + 2a: 0000 unimp + 2c: 001c 0x1c + 2e: 0000 unimp + 30: 003c addi a5,sp,8 + 32: 0000 unimp + 34: 0044 addi s1,sp,4 + 36: 0000 unimp + 38: 0058 addi a4,sp,4 + 3a: 0000 unimp + 3c: 0058 addi a4,sp,4 + 3e: 0000 unimp + 40: 0094 addi a3,sp,64 + 42: 0000 unimp + 44: 0098 addi a4,sp,64 + 46: 0000 unimp + 48: 0220 addi s0,sp,264 + 4a: 0000 unimp + 4c: 0224 addi s1,sp,264 + 4e: 0000 unimp + 50: 0358 addi a4,sp,388 + 52: 0000 unimp + 54: 035c addi a5,sp,388 + 56: 0000 unimp + 58: 04c8 addi a0,sp,580 + 5a: 0000 unimp + 5c: 04cc addi a1,sp,580 + ... + 66: 0000 unimp + 68: 0068 addi a0,sp,12 + 6a: 0000 unimp + 6c: 0094 addi a3,sp,64 + 6e: 0000 unimp + 70: 0098 addi a4,sp,64 + 72: 0000 unimp + 74: 00a4 addi s1,sp,72 + 76: 0000 unimp + 78: 00ac addi a1,sp,72 + 7a: 0000 unimp + 7c: 01bc addi a5,sp,200 + 7e: 0000 unimp + 80: 01c8 addi a0,sp,196 + 82: 0000 unimp + 84: 0220 addi s0,sp,264 + 86: 0000 unimp + 88: 0224 addi s1,sp,264 + 8a: 0000 unimp + 8c: 02b4 addi a3,sp,328 + 8e: 0000 unimp + 90: 02dc addi a5,sp,324 + 92: 0000 unimp + 94: 02f4 addi a3,sp,332 + 96: 0000 unimp + 98: 02fc addi a5,sp,332 + 9a: 0000 unimp + 9c: 0324 addi s1,sp,392 + 9e: 0000 unimp + a0: 06c8 addi a0,sp,836 + a2: 0000 unimp + a4: 06d0 addi a2,sp,836 + a6: 0000 unimp + a8: 06dc addi a5,sp,836 + aa: 0000 unimp + ac: 06e8 addi a0,sp,844 + ... + b6: 0000 unimp + b8: 0080 addi s0,sp,64 + ba: 0000 unimp + bc: 0090 addi a2,sp,64 + be: 0000 unimp + c0: 0090 addi a2,sp,64 + c2: 0000 unimp + c4: 0094 addi a3,sp,64 + ... + ce: 0000 unimp + d0: 0094 addi a3,sp,64 + d2: 0000 unimp + d4: 0094 addi a3,sp,64 + d6: 0000 unimp + d8: 01a0 addi s0,sp,200 + da: 0000 unimp + dc: 01b4 addi a3,sp,200 + ... + e6: 0000 unimp + e8: 00f4 addi a3,sp,76 + ea: 0000 unimp + ec: 0104 addi s1,sp,128 + ee: 0000 unimp + f0: 0104 addi s1,sp,128 + f2: 0000 unimp + f4: 0108 addi a0,sp,128 + ... + fe: 0000 unimp + 100: 0288 addi a0,sp,320 + 102: 0000 unimp + 104: 0298 addi a4,sp,320 + 106: 0000 unimp + 108: 029c addi a5,sp,320 + 10a: 0000 unimp + 10c: 02a0 addi s0,sp,328 + ... + 116: 0000 unimp + 118: 02fc addi a5,sp,332 + 11a: 0000 unimp + 11c: 02fc addi a5,sp,332 + 11e: 0000 unimp + 120: 0304 addi s1,sp,384 + 122: 0000 unimp + 124: 0314 addi a3,sp,384 + ... + 12e: 0000 unimp + 130: 00a4 addi s1,sp,72 + 132: 0000 unimp + 134: 00ac addi a1,sp,72 + 136: 0000 unimp + 138: 02b4 addi a3,sp,328 + 13a: 0000 unimp + 13c: 02b4 addi a3,sp,328 + 13e: 0000 unimp + 140: 02f4 addi a3,sp,332 + 142: 0000 unimp + 144: 02fc addi a5,sp,332 + 146: 0000 unimp + 148: 0324 addi s1,sp,392 + 14a: 0000 unimp + 14c: 0358 addi a4,sp,388 + 14e: 0000 unimp + 150: 035c addi a5,sp,388 + 152: 0000 unimp + 154: 0460 addi s0,sp,524 + 156: 0000 unimp + 158: 0468 addi a0,sp,524 + 15a: 0000 unimp + 15c: 04c8 addi a0,sp,580 + 15e: 0000 unimp + 160: 04cc addi a1,sp,580 + 162: 0000 unimp + 164: 0534 addi a3,sp,648 + 166: 0000 unimp + 168: 053c addi a5,sp,648 + 16a: 0000 unimp + 16c: 0590 addi a2,sp,704 + 16e: 0000 unimp + 170: 0598 addi a4,sp,704 + 172: 0000 unimp + 174: 06c0 addi s0,sp,836 + 176: 0000 unimp + 178: 0780 addi s0,sp,960 + 17a: 0000 unimp + 17c: 07b0 addi a2,sp,968 + ... + 186: 0000 unimp + 188: 0344 addi s1,sp,388 + 18a: 0000 unimp + 18c: 0354 addi a3,sp,388 + 18e: 0000 unimp + 190: 0354 addi a3,sp,388 + 192: 0000 unimp + 194: 0358 addi a4,sp,388 + ... + 19e: 0000 unimp + 1a0: 039c addi a5,sp,448 + 1a2: 0000 unimp + 1a4: 03ac addi a1,sp,456 + 1a6: 0000 unimp + 1a8: 03ac addi a1,sp,456 + 1aa: 0000 unimp + 1ac: 03b0 addi a2,sp,456 + ... + 1b6: 0000 unimp + 1b8: 03b8 addi a4,sp,456 + 1ba: 0000 unimp + 1bc: 03cc addi a1,sp,452 + 1be: 0000 unimp + 1c0: 05d4 addi a3,sp,708 + 1c2: 0000 unimp + 1c4: 0644 addi s1,sp,772 + 1c6: 0000 unimp + 1c8: 0658 addi a4,sp,772 + 1ca: 0000 unimp + 1cc: 06c0 addi s0,sp,836 + ... + 1d6: 0000 unimp + 1d8: 0548 addi a0,sp,644 + 1da: 0000 unimp + 1dc: 0558 addi a4,sp,644 + 1de: 0000 unimp + 1e0: 0580 addi s0,sp,704 + 1e2: 0000 unimp + 1e4: 0588 addi a0,sp,704 + ... + 1ee: 0000 unimp + 1f0: 02b4 addi a3,sp,328 + 1f2: 0000 unimp + 1f4: 02dc addi a5,sp,324 + 1f6: 0000 unimp + 1f8: 06e8 addi a0,sp,844 + 1fa: 0000 unimp + 1fc: 0738 addi a4,sp,904 + 1fe: 0000 unimp + 200: 07b0 addi a2,sp,968 + 202: 0000 unimp + 204: 07bc addi a5,sp,968 + ... + 20e: 0000 unimp + 210: 0738 addi a4,sp,904 + 212: 0000 unimp + 214: 0744 addi s1,sp,900 + 216: 0000 unimp + 218: 074c addi a1,sp,900 + 21a: 0000 unimp + 21c: 0760 addi s0,sp,908 + ... + 22e: 0000 unimp + 230: 0004 0x4 + 232: 0000 unimp + 234: 0008 0x8 + 236: 0000 unimp + 238: 001c 0x1c + 23a: 0000 unimp + 23c: 0020 addi s0,sp,8 + 23e: 0000 unimp + 240: 0044 addi s1,sp,4 + 242: 0000 unimp + 244: 004c addi a1,sp,4 + 246: 0000 unimp + 248: 0164 addi s1,sp,140 + 24a: 0000 unimp + 24c: 0168 addi a0,sp,140 + 24e: 0000 unimp + 250: 05a0 addi s0,sp,712 + 252: 0000 unimp + 254: 05a4 addi s1,sp,712 + ... + 25e: 0000 unimp + 260: 0078 addi a4,sp,12 + 262: 0000 unimp + 264: 007c addi a5,sp,12 + 266: 0000 unimp + 268: 00fc addi a5,sp,76 + 26a: 0000 unimp + 26c: 0158 addi a4,sp,132 + ... + 276: 0000 unimp + 278: 007c addi a5,sp,12 + 27a: 0000 unimp + 27c: 0084 addi s1,sp,64 + 27e: 0000 unimp + 280: 0088 addi a0,sp,64 + 282: 0000 unimp + 284: 0094 addi a3,sp,64 + 286: 0000 unimp + 288: 05d8 addi a4,sp,708 + 28a: 0000 unimp + 28c: 05dc addi a5,sp,708 + ... + 296: 0000 unimp + 298: 00bc addi a5,sp,72 + 29a: 0000 unimp + 29c: 00c0 addi s0,sp,68 + 29e: 0000 unimp + 2a0: 019c addi a5,sp,192 + 2a2: 0000 unimp + 2a4: 0200 addi s0,sp,256 + ... + 2ae: 0000 unimp + 2b0: 0238 addi a4,sp,264 + 2b2: 0000 unimp + 2b4: 04e0 addi s0,sp,588 + 2b6: 0000 unimp + 2b8: 0594 addi a3,sp,704 + 2ba: 0000 unimp + 2bc: 05a0 addi s0,sp,712 + 2be: 0000 unimp + 2c0: 06d4 addi a3,sp,836 + 2c2: 0000 unimp + 2c4: 06e0 addi s0,sp,844 + ... + 2ce: 0000 unimp + 2d0: 0264 addi s1,sp,268 + 2d2: 0000 unimp + 2d4: 0278 addi a4,sp,268 + 2d6: 0000 unimp + 2d8: 027c addi a5,sp,268 + 2da: 0000 unimp + 2dc: 02fc addi a5,sp,332 + 2de: 0000 unimp + 2e0: 0358 addi a4,sp,388 + 2e2: 0000 unimp + 2e4: 035c addi a5,sp,388 + ... + 2ee: 0000 unimp + 2f0: 0364 addi s1,sp,396 + 2f2: 0000 unimp + 2f4: 0374 addi a3,sp,396 + 2f6: 0000 unimp + 2f8: 0378 addi a4,sp,396 + 2fa: 0000 unimp + 2fc: 0378 addi a4,sp,396 + ... + 306: 0000 unimp + 308: 0390 addi a2,sp,448 + 30a: 0000 unimp + 30c: 039c addi a5,sp,448 + 30e: 0000 unimp + 310: 03a0 addi s0,sp,456 + 312: 0000 unimp + 314: 03a4 addi s1,sp,456 + ... + 31e: 0000 unimp + 320: 03bc addi a5,sp,456 + 322: 0000 unimp + 324: 0444 addi s1,sp,516 + 326: 0000 unimp + 328: 044c addi a1,sp,516 + 32a: 0000 unimp + 32c: 0450 addi a2,sp,516 + 32e: 0000 unimp + 330: 049c addi a5,sp,576 + 332: 0000 unimp + 334: 04a0 addi s0,sp,584 + ... + 33e: 0000 unimp + 340: 0444 addi s1,sp,516 + 342: 0000 unimp + 344: 044c addi a1,sp,516 + 346: 0000 unimp + 348: 0450 addi a2,sp,516 + 34a: 0000 unimp + 34c: 0494 addi a3,sp,576 + ... + 356: 0000 unimp + 358: 04a4 addi s1,sp,584 + 35a: 0000 unimp + 35c: 04a8 addi a0,sp,584 + 35e: 0000 unimp + 360: 04ac addi a1,sp,584 + 362: 0000 unimp + 364: 04ac addi a1,sp,584 + ... + 36e: 0000 unimp + 370: 04bc addi a5,sp,584 + 372: 0000 unimp + 374: 04c8 addi a0,sp,580 + 376: 0000 unimp + 378: 04cc addi a1,sp,580 + 37a: 0000 unimp + 37c: 04d4 addi a3,sp,580 + 37e: 0000 unimp + 380: 06d8 addi a4,sp,836 + 382: 0000 unimp + 384: 06e0 addi s0,sp,844 + ... + 38e: 0000 unimp + 390: 053c addi a5,sp,648 + 392: 0000 unimp + 394: 0548 addi a0,sp,644 + 396: 0000 unimp + 398: 0550 addi a2,sp,644 + 39a: 0000 unimp + 39c: 0564 addi s1,sp,652 + ... + 3a6: 0000 unimp + 3a8: 05f4 addi a3,sp,716 + 3aa: 0000 unimp + 3ac: 06a4 addi s1,sp,840 + 3ae: 0000 unimp + 3b0: 06b8 addi a4,sp,840 + 3b2: 0000 unimp + 3b4: 06d4 addi a3,sp,836 + ... + 3c2: 0000 unimp + 3c4: 0010 0x10 + 3c6: 0000 unimp + 3c8: 0018 0x18 + 3ca: 0000 unimp + 3cc: 0020 addi s0,sp,8 + ... + 3d6: 0000 unimp + 3d8: 0020 addi s0,sp,8 + 3da: 0000 unimp + 3dc: 0020 addi s0,sp,8 + 3de: 0000 unimp + 3e0: 0024 addi s1,sp,8 + 3e2: 0000 unimp + 3e4: 0038 addi a4,sp,8 + ... + 3ee: 0000 unimp + 3f0: 0058 addi a4,sp,4 + 3f2: 0000 unimp + 3f4: 00a0 addi s0,sp,72 + 3f6: 0000 unimp + 3f8: 00a4 addi s1,sp,72 + 3fa: 0000 unimp + 3fc: 00d4 addi a3,sp,68 + 3fe: 0000 unimp + 400: 00d8 addi a4,sp,68 + 402: 0000 unimp + 404: 00e4 addi s1,sp,76 + ... + 416: 0000 unimp + 418: 0004 0x4 + 41a: 0000 unimp + 41c: 0008 0x8 + 41e: 0000 unimp + 420: 001c 0x1c + 422: 0000 unimp + 424: 0020 addi s0,sp,8 + 426: 0000 unimp + 428: 0040 addi s0,sp,4 + 42a: 0000 unimp + 42c: 0048 addi a0,sp,4 + 42e: 0000 unimp + 430: 049c addi a5,sp,576 + 432: 0000 unimp + 434: 04a0 addi s0,sp,584 + ... + 43e: 0000 unimp + 440: 0074 addi a3,sp,12 + 442: 0000 unimp + 444: 0078 addi a4,sp,12 + 446: 0000 unimp + 448: 00fc addi a5,sp,76 + 44a: 0000 unimp + 44c: 0158 addi a4,sp,132 + ... + 456: 0000 unimp + 458: 0078 addi a4,sp,12 + 45a: 0000 unimp + 45c: 0080 addi s0,sp,64 + 45e: 0000 unimp + 460: 0084 addi s1,sp,64 + 462: 0000 unimp + 464: 0090 addi a2,sp,64 + 466: 0000 unimp + 468: 04d0 addi a2,sp,580 + 46a: 0000 unimp + 46c: 04d4 addi a3,sp,580 + ... + 476: 0000 unimp + 478: 00b8 addi a4,sp,72 + 47a: 0000 unimp + 47c: 00bc addi a5,sp,72 + 47e: 0000 unimp + 480: 0198 addi a4,sp,192 + 482: 0000 unimp + 484: 01f8 addi a4,sp,204 + ... + 48e: 0000 unimp + 490: 0230 addi a2,sp,264 + 492: 0000 unimp + 494: 03c4 addi s1,sp,452 + 496: 0000 unimp + 498: 03c8 addi a0,sp,452 + 49a: 0000 unimp + 49c: 03d0 addi a2,sp,452 + ... + 4a6: 0000 unimp + 4a8: 0230 addi a2,sp,264 + 4aa: 0000 unimp + 4ac: 037c addi a5,sp,396 + 4ae: 0000 unimp + 4b0: 037c addi a5,sp,396 + 4b2: 0000 unimp + 4b4: 039c addi a5,sp,448 + 4b6: 0000 unimp + 4b8: 03a0 addi s0,sp,456 + 4ba: 0000 unimp + 4bc: 03a8 addi a0,sp,456 + ... + 4c6: 0000 unimp + 4c8: 0230 addi a2,sp,264 + 4ca: 0000 unimp + 4cc: 0278 addi a4,sp,268 + 4ce: 0000 unimp + 4d0: 027c addi a5,sp,268 + 4d2: 0000 unimp + 4d4: 0288 addi a0,sp,320 + ... + 4de: 0000 unimp + 4e0: 0278 addi a4,sp,268 + 4e2: 0000 unimp + 4e4: 027c addi a5,sp,268 + 4e6: 0000 unimp + 4e8: 0288 addi a0,sp,320 + 4ea: 0000 unimp + 4ec: 02c8 addi a0,sp,324 + 4ee: 0000 unimp + 4f0: 02cc addi a1,sp,324 + 4f2: 0000 unimp + 4f4: 02d4 addi a3,sp,324 + 4f6: 0000 unimp + 4f8: 02d8 addi a4,sp,324 + 4fa: 0000 unimp + 4fc: 02e0 addi s0,sp,332 + ... + 506: 0000 unimp + 508: 02c8 addi a0,sp,324 + 50a: 0000 unimp + 50c: 02cc addi a1,sp,324 + 50e: 0000 unimp + 510: 02d4 addi a3,sp,324 + 512: 0000 unimp + 514: 02d8 addi a4,sp,324 + 516: 0000 unimp + 518: 02e0 addi s0,sp,332 + 51a: 0000 unimp + 51c: 0318 addi a4,sp,384 + 51e: 0000 unimp + 520: 031c addi a5,sp,384 + 522: 0000 unimp + 524: 0324 addi s1,sp,392 + ... + 52e: 0000 unimp + 530: 0318 addi a4,sp,384 + 532: 0000 unimp + 534: 031c addi a5,sp,384 + 536: 0000 unimp + 538: 0324 addi s1,sp,392 + 53a: 0000 unimp + 53c: 0344 addi s1,sp,388 + 53e: 0000 unimp + 540: 0344 addi s1,sp,388 + 542: 0000 unimp + 544: 0358 addi a4,sp,388 + 546: 0000 unimp + 548: 035c addi a5,sp,388 + 54a: 0000 unimp + 54c: 0360 addi s0,sp,396 + 54e: 0000 unimp + 550: 038c addi a1,sp,448 + 552: 0000 unimp + 554: 0390 addi a2,sp,448 + ... + 55e: 0000 unimp + 560: 0344 addi s1,sp,388 + 562: 0000 unimp + 564: 0344 addi s1,sp,388 + 566: 0000 unimp + 568: 0358 addi a4,sp,388 + 56a: 0000 unimp + 56c: 035c addi a5,sp,388 + 56e: 0000 unimp + 570: 0360 addi s0,sp,396 + 572: 0000 unimp + 574: 036c addi a1,sp,396 + 576: 0000 unimp + 578: 037c addi a5,sp,396 + 57a: 0000 unimp + 57c: 0388 addi a0,sp,448 + ... + 586: 0000 unimp + 588: 036c addi a1,sp,396 + 58a: 0000 unimp + 58c: 037c addi a5,sp,396 + 58e: 0000 unimp + 590: 0388 addi a0,sp,448 + 592: 0000 unimp + 594: 038c addi a1,sp,448 + 596: 0000 unimp + 598: 0390 addi a2,sp,448 + 59a: 0000 unimp + 59c: 039c addi a5,sp,448 + 59e: 0000 unimp + 5a0: 03a0 addi s0,sp,456 + 5a2: 0000 unimp + 5a4: 03a8 addi a0,sp,456 + ... + 5ae: 0000 unimp + 5b0: 037c addi a5,sp,396 + 5b2: 0000 unimp + 5b4: 037c addi a5,sp,396 + 5b6: 0000 unimp + 5b8: 039c addi a5,sp,448 + 5ba: 0000 unimp + 5bc: 03a0 addi s0,sp,456 + 5be: 0000 unimp + 5c0: 03a8 addi a0,sp,456 + 5c2: 0000 unimp + 5c4: 03c4 addi s1,sp,452 + 5c6: 0000 unimp + 5c8: 03c8 addi a0,sp,452 + 5ca: 0000 unimp + 5cc: 03d0 addi a2,sp,452 + ... + 5d6: 0000 unimp + 5d8: 037c addi a5,sp,396 + 5da: 0000 unimp + 5dc: 037c addi a5,sp,396 + 5de: 0000 unimp + 5e0: 039c addi a5,sp,448 + 5e2: 0000 unimp + 5e4: 03a0 addi s0,sp,456 + 5e6: 0000 unimp + 5e8: 03a8 addi a0,sp,456 + 5ea: 0000 unimp + 5ec: 03bc addi a5,sp,456 + 5ee: 0000 unimp + 5f0: 03c0 addi s0,sp,452 + 5f2: 0000 unimp + 5f4: 03c4 addi s1,sp,452 + 5f6: 0000 unimp + 5f8: 03c8 addi a0,sp,452 + 5fa: 0000 unimp + 5fc: 03cc addi a1,sp,452 + ... + 606: 0000 unimp + 608: 0448 addi a0,sp,516 + 60a: 0000 unimp + 60c: 0464 addi s1,sp,524 + 60e: 0000 unimp + 610: 0468 addi a0,sp,524 + 612: 0000 unimp + 614: 046c addi a1,sp,524 + ... + 61e: 0000 unimp + 620: 04c4 addi s1,sp,580 + 622: 0000 unimp + 624: 04d0 addi a2,sp,580 + 626: 0000 unimp + 628: 04e0 addi s0,sp,588 + 62a: 0000 unimp + 62c: 0590 addi a2,sp,704 + 62e: 0000 unimp + 630: 05b4 addi a3,sp,712 + 632: 0000 unimp + 634: 05c4 addi s1,sp,708 + ... + 642: 0000 unimp + 644: 0008 0x8 + 646: 0000 unimp + 648: 000c 0xc + 64a: 0000 unimp + 64c: 0014 0x14 + 64e: 0000 unimp + 650: 0024 addi s1,sp,8 + 652: 0000 unimp + 654: 0028 addi a0,sp,8 + 656: 0000 unimp + 658: 0034 addi a3,sp,8 + 65a: 0000 unimp + 65c: 0038 addi a4,sp,8 + ... + 666: 0000 unimp + 668: 0014 0x14 + 66a: 0000 unimp + 66c: 001c 0x1c + 66e: 0000 unimp + 670: 003c addi a5,sp,8 + 672: 0000 unimp + 674: 0040 addi s0,sp,4 + 676: 0000 unimp + 678: 0050 addi a2,sp,4 + 67a: 0000 unimp + 67c: 0054 addi a3,sp,4 + 67e: 0000 unimp + 680: 005c addi a5,sp,4 + 682: 0000 unimp + 684: 005c addi a5,sp,4 + 686: 0000 unimp + 688: 00a8 addi a0,sp,72 + 68a: 0000 unimp + 68c: 00ac addi a1,sp,72 + 68e: 0000 unimp + 690: 0250 addi a2,sp,260 + 692: 0000 unimp + 694: 0254 addi a3,sp,260 + 696: 0000 unimp + 698: 0364 addi s1,sp,396 + 69a: 0000 unimp + 69c: 0368 addi a0,sp,396 + 69e: 0000 unimp + 6a0: 04d0 addi a2,sp,580 + 6a2: 0000 unimp + 6a4: 04d4 addi a3,sp,580 + ... + 6ae: 0000 unimp + 6b0: 007c addi a5,sp,12 + 6b2: 0000 unimp + 6b4: 00a8 addi a0,sp,72 + 6b6: 0000 unimp + 6b8: 00ac addi a1,sp,72 + 6ba: 0000 unimp + 6bc: 00b8 addi a4,sp,72 + 6be: 0000 unimp + 6c0: 00e0 addi s0,sp,76 + 6c2: 0000 unimp + 6c4: 01ec addi a1,sp,204 + 6c6: 0000 unimp + 6c8: 01f8 addi a4,sp,204 + 6ca: 0000 unimp + 6cc: 0250 addi a2,sp,260 + 6ce: 0000 unimp + 6d0: 0254 addi a3,sp,260 + 6d2: 0000 unimp + 6d4: 0300 addi s0,sp,384 + 6d6: 0000 unimp + 6d8: 0308 addi a0,sp,384 + 6da: 0000 unimp + 6dc: 0338 addi a4,sp,392 + 6de: 0000 unimp + 6e0: 06d4 addi a3,sp,836 + 6e2: 0000 unimp + 6e4: 06dc addi a5,sp,836 + 6e6: 0000 unimp + 6e8: 06e8 addi a0,sp,844 + 6ea: 0000 unimp + 6ec: 06f4 addi a3,sp,844 + ... + 6f6: 0000 unimp + 6f8: 0094 addi a3,sp,64 + 6fa: 0000 unimp + 6fc: 00a4 addi s1,sp,72 + 6fe: 0000 unimp + 700: 00a4 addi s1,sp,72 + 702: 0000 unimp + 704: 00a8 addi a0,sp,72 + ... + 70e: 0000 unimp + 710: 00a8 addi a0,sp,72 + 712: 0000 unimp + 714: 00a8 addi a0,sp,72 + 716: 0000 unimp + 718: 01d0 addi a2,sp,196 + 71a: 0000 unimp + 71c: 01e4 addi s1,sp,204 + ... + 726: 0000 unimp + 728: 0124 addi s1,sp,136 + 72a: 0000 unimp + 72c: 0134 addi a3,sp,136 + 72e: 0000 unimp + 730: 0134 addi a3,sp,136 + 732: 0000 unimp + 734: 0138 addi a4,sp,136 + ... + 73e: 0000 unimp + 740: 02b8 addi a4,sp,328 + 742: 0000 unimp + 744: 02c8 addi a0,sp,324 + 746: 0000 unimp + 748: 02cc addi a1,sp,324 + 74a: 0000 unimp + 74c: 02d0 addi a2,sp,324 + ... + 756: 0000 unimp + 758: 0308 addi a0,sp,384 + 75a: 0000 unimp + 75c: 0308 addi a0,sp,384 + 75e: 0000 unimp + 760: 0310 addi a2,sp,384 + 762: 0000 unimp + 764: 0320 addi s0,sp,392 + ... + 76e: 0000 unimp + 770: 00b8 addi a4,sp,72 + 772: 0000 unimp + 774: 00b8 addi a4,sp,72 + 776: 0000 unimp + 778: 0300 addi s0,sp,384 + 77a: 0000 unimp + 77c: 0308 addi a0,sp,384 + 77e: 0000 unimp + 780: 0338 addi a4,sp,392 + 782: 0000 unimp + 784: 0364 addi s1,sp,396 + 786: 0000 unimp + 788: 0368 addi a0,sp,396 + 78a: 0000 unimp + 78c: 0468 addi a0,sp,524 + 78e: 0000 unimp + 790: 0470 addi a2,sp,524 + 792: 0000 unimp + 794: 04d0 addi a2,sp,580 + 796: 0000 unimp + 798: 04d4 addi a3,sp,580 + 79a: 0000 unimp + 79c: 053c addi a5,sp,648 + 79e: 0000 unimp + 7a0: 0544 addi s1,sp,644 + 7a2: 0000 unimp + 7a4: 0598 addi a4,sp,704 + 7a6: 0000 unimp + 7a8: 05a0 addi s0,sp,712 + 7aa: 0000 unimp + 7ac: 06cc addi a1,sp,836 + 7ae: 0000 unimp + 7b0: 078c addi a1,sp,960 + 7b2: 0000 unimp + 7b4: 07bc addi a5,sp,968 + ... + 7be: 0000 unimp + 7c0: 0350 addi a2,sp,388 + 7c2: 0000 unimp + 7c4: 0360 addi s0,sp,396 + 7c6: 0000 unimp + 7c8: 0360 addi s0,sp,396 + 7ca: 0000 unimp + 7cc: 0364 addi s1,sp,396 + ... + 7d6: 0000 unimp + 7d8: 03a8 addi a0,sp,456 + 7da: 0000 unimp + 7dc: 03b8 addi a4,sp,456 + 7de: 0000 unimp + 7e0: 03b8 addi a4,sp,456 + 7e2: 0000 unimp + 7e4: 03bc addi a5,sp,456 + ... + 7ee: 0000 unimp + 7f0: 03c4 addi s1,sp,452 + 7f2: 0000 unimp + 7f4: 03d8 addi a4,sp,452 + 7f6: 0000 unimp + 7f8: 05e0 addi s0,sp,716 + 7fa: 0000 unimp + 7fc: 0650 addi a2,sp,772 + 7fe: 0000 unimp + 800: 0664 addi s1,sp,780 + 802: 0000 unimp + 804: 06cc addi a1,sp,836 + ... + 80e: 0000 unimp + 810: 0550 addi a2,sp,644 + 812: 0000 unimp + 814: 0560 addi s0,sp,652 + 816: 0000 unimp + 818: 0588 addi a0,sp,704 + 81a: 0000 unimp + 81c: 0590 addi a2,sp,704 + ... + 826: 0000 unimp + 828: 00b8 addi a4,sp,72 + 82a: 0000 unimp + 82c: 00e0 addi s0,sp,76 + 82e: 0000 unimp + 830: 06f4 addi a3,sp,844 + 832: 0000 unimp + 834: 0744 addi s1,sp,900 + 836: 0000 unimp + 838: 07bc addi a5,sp,968 + 83a: 0000 unimp + 83c: 07c8 addi a0,sp,964 + ... + 846: 0000 unimp + 848: 0744 addi s1,sp,900 + 84a: 0000 unimp + 84c: 0750 addi a2,sp,900 + 84e: 0000 unimp + 850: 0758 addi a4,sp,900 + 852: 0000 unimp + 854: 076c addi a1,sp,908 + ... + 85e: 0000 unimp + 860: 0010 0x10 + 862: 0000 unimp + 864: 0010 0x10 + 866: 0000 unimp + 868: 0014 0x14 + 86a: 0000 unimp + 86c: 0018 0x18 + 86e: 0000 unimp + 870: 001c 0x1c + 872: 0000 unimp + 874: 0024 addi s1,sp,8 + ... + 882: 0000 unimp + 884: 0004 0x4 + 886: 0000 unimp + 888: 0014 0x14 + 88a: 0000 unimp + 88c: 001c 0x1c + 88e: 0000 unimp + 890: 0028 addi a0,sp,8 + 892: 0000 unimp + 894: 002c addi a1,sp,8 + ... + 89e: 0000 unimp + 8a0: 003c addi a5,sp,8 + 8a2: 0000 unimp + 8a4: 0050 addi a2,sp,4 + 8a6: 0000 unimp + 8a8: 0054 addi a3,sp,4 + 8aa: 0000 unimp + 8ac: 0058 addi a4,sp,4 + ... + 8ba: 0000 unimp + 8bc: 0008 0x8 + 8be: 0000 unimp + 8c0: 000c 0xc + 8c2: 0000 unimp + 8c4: 0010 0x10 + 8c6: 0000 unimp + 8c8: 0020 addi s0,sp,8 + 8ca: 0000 unimp + 8cc: 0024 addi s1,sp,8 + ... + 8d6: 0000 unimp + 8d8: 007c addi a5,sp,12 + 8da: 0000 unimp + 8dc: 0088 addi a0,sp,64 + 8de: 0000 unimp + 8e0: 0100 addi s0,sp,128 + 8e2: 0000 unimp + 8e4: 0138 addi a4,sp,136 + 8e6: 0000 unimp + 8e8: 0164 addi s1,sp,140 + 8ea: 0000 unimp + 8ec: 0180 addi s0,sp,192 + ... + 8fa: 0000 unimp + 8fc: 0014 0x14 + 8fe: 0000 unimp + 900: 0014 0x14 + 902: 0000 unimp + 904: 0030 addi a2,sp,8 + 906: 0000 unimp + 908: 0038 addi a4,sp,8 + 90a: 0000 unimp + 90c: 004c addi a1,sp,4 + ... diff --git a/driver/tests/dogfood/kernel.elf b/driver/tests/dogfood/kernel.elf new file mode 100755 index 0000000000000000000000000000000000000000..010944ebcd01ac00a4e629ab695532778397202e GIT binary patch literal 88868 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 GmHR)BgD+hG literal 0 HcmV?d00001 From de5eb4c8b5be020615bee9f2991576c24ae020ff Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Tue, 11 Aug 2020 13:55:36 -0400 Subject: [PATCH 44/94] updated Makefile of riscv_tests/isa --- benchmarks/riscv_tests/isa/Makefile | 4 ++-- hw/simulate/testbench.cpp | 12 ------------ 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/benchmarks/riscv_tests/isa/Makefile b/benchmarks/riscv_tests/isa/Makefile index 944d1875..05837666 100644 --- a/benchmarks/riscv_tests/isa/Makefile +++ b/benchmarks/riscv_tests/isa/Makefile @@ -1,6 +1,6 @@ TESTS := $(wildcard *.hex) -#VTESTS := $(wildcard *-v-*.hex) -#TESTS := $(filter-out $(VTESTS) rv32ud-p-fclass.hex, $(TESTS)) +VTESTS := $(wildcard *-v-*.hex) +TESTS := $(filter-out $(VTESTS) rv32si-p-scall.hex rv32si-p-sbreak.hex rv32mi-p-breakpoint.hex rv32ud-p-fclass.hex rv32ua-p-amomax_w.hex rv32ua-p-amoxor_w.hex rv32ud-p-ldst.hex rv32ua-p-amoor_w.hex rv32mi-p-ma_addr.hex rv32ud-p-fdiv.hex rv32ud-p-fcmp.hex rv32mi-p-mcsr.hex rv32ua-p-amoswap_w.hex rv32mi-p-ma_fetch.hex rv32mi-p-csr.hex rv32ua-p-amoadd_w.hex rv32si-p-dirty.hex rv32ud-p-fcvt.hex rv32ui-p-fence_i.hex rv32si-p-csr.hex rv32mi-p-shamt.hex rv32ua-p-amomin_w.hex rv32ua-p-lrsc.hex rv32ud-p-fmadd.hex rv32ud-p-fadd.hex rv32si-p-wfi.hex rv32ua-p-amomaxu_w.hex rv32si-p-ma_fetch.hex rv32ud-p-fmin.hex rv32mi-p-illegal.hex rv32uc-p-rvc.hex rv32mi-p-sbreak.hex rv32ua-p-amominu_w.hex rv32ua-p-amoand_w.hex, $(TESTS)) run: cd ../../../hw/simulate/obj_dir && ./VVortex -f $(foreach test,$(TESTS),../../../benchmarks/riscv_tests/isa/$(test)) diff --git a/hw/simulate/testbench.cpp b/hw/simulate/testbench.cpp index 18c1c887..63c0cd66 100644 --- a/hw/simulate/testbench.cpp +++ b/hw/simulate/testbench.cpp @@ -166,18 +166,6 @@ int main(int argc, char **argv) { if (!passed) break; } - - -// char* test = argv[2]; - -// std::cerr << test << std::endl; - -// RAM ram; -// Simulator simulator; -// simulator.attach_ram(&ram); -// simulator.load_ihex(test); -// simulator.run(); - return 0; } From 881485d52e9b2c3e3c173d47fff96230420b1c1e Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Tue, 11 Aug 2020 17:13:28 -0400 Subject: [PATCH 45/94] dogfood added to Makefile --- driver/tests/Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/driver/tests/Makefile b/driver/tests/Makefile index 4a91d0de..c2fa9b51 100644 --- a/driver/tests/Makefile +++ b/driver/tests/Makefile @@ -1,14 +1,18 @@ all: $(MAKE) -C basic $(MAKE) -C demo + $(MAKE) -C dogfood run: $(MAKE) -C basic run-rtlsim $(MAKE) -C basic run-simx $(MAKE) -C demo run-rtlsim - $(MAKE) -C demo run-simx + $(MAKE) -C demo run-simx + $(MAKE) -C dogfood run-rtlsim + $(MAKE) -C dogfood run-simz clean: $(MAKE) -C basic clean $(MAKE) -C demo clean + $(MAKE) -C dogfood clean From 69f40d1f50538d07527d06a117e2f2d4a7f64494 Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Wed, 12 Aug 2020 13:03:15 -0400 Subject: [PATCH 46/94] Created ci directory for continuous integration scripts --- ci/test_driver.sh | 3 +++ ci/test_opencl.sh | 3 +++ ci/test_riscv_isa.sh | 3 +++ ci/test_runtime.sh | 3 +++ driver/tests/Makefile | 2 +- 5 files changed, 13 insertions(+), 1 deletion(-) create mode 100755 ci/test_driver.sh create mode 100755 ci/test_opencl.sh create mode 100755 ci/test_riscv_isa.sh create mode 100755 ci/test_runtime.sh diff --git a/ci/test_driver.sh b/ci/test_driver.sh new file mode 100755 index 00000000..d35eb276 --- /dev/null +++ b/ci/test_driver.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cd ../driver/tests && make run -f Makefile diff --git a/ci/test_opencl.sh b/ci/test_opencl.sh new file mode 100755 index 00000000..a2474d71 --- /dev/null +++ b/ci/test_opencl.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cd ../benchmarks/opencl && make run -f Makefile diff --git a/ci/test_riscv_isa.sh b/ci/test_riscv_isa.sh new file mode 100755 index 00000000..6f54ca70 --- /dev/null +++ b/ci/test_riscv_isa.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cd ../benchmarks/riscv_tests/isa && make run -f Makefile diff --git a/ci/test_runtime.sh b/ci/test_runtime.sh new file mode 100755 index 00000000..eb5cf002 --- /dev/null +++ b/ci/test_runtime.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cd ../runtime/tests && make run -f Makefile diff --git a/driver/tests/Makefile b/driver/tests/Makefile index c2fa9b51..b7371ee1 100644 --- a/driver/tests/Makefile +++ b/driver/tests/Makefile @@ -5,7 +5,7 @@ all: run: $(MAKE) -C basic run-rtlsim - $(MAKE) -C basic run-simx + #$(MAKE) -C basic run-simx $(MAKE) -C demo run-rtlsim $(MAKE) -C demo run-simx $(MAKE) -C dogfood run-rtlsim From 6c123913382cb534f1fc4fca0def773b733d99a0 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Fri, 14 Aug 2020 21:50:14 -0700 Subject: [PATCH 47/94] pipeline refactoring - fmax >= 222 mhz --- driver/tests/dogfood/Makefile | 2 +- driver/tests/dogfood/dogfood.cpp | 3 + driver/tests/dogfood/testcases.h | 4 +- hw/opae/README | 1 + hw/opae/vortex_afu.qsf | 2 +- hw/opae/vortex_afu.sv | 3 +- hw/rtl/VX_alu_unit.v | 137 ++++++++-------- hw/rtl/VX_bru_unit.v | 56 +++++++ hw/rtl/VX_cluster.v | 8 +- hw/rtl/VX_commit.v | 87 +++++++---- hw/rtl/VX_csr_arb.v | 8 +- hw/rtl/VX_csr_data.v | 34 ++-- hw/rtl/VX_csr_io_arb.v | 6 +- hw/rtl/VX_csr_unit.v | 31 ++-- hw/rtl/VX_decode.v | 58 +++---- hw/rtl/VX_define.vh | 147 +++++++----------- hw/rtl/VX_execute.v | 25 ++- hw/rtl/VX_fpu_unit.v | 60 ++++--- hw/rtl/VX_gpr_fp_ctrl.v | 33 ++-- hw/rtl/VX_gpr_ram.v | 15 +- hw/rtl/VX_gpr_stage.v | 19 ++- hw/rtl/VX_gpu_unit.v | 93 +++++------ hw/rtl/VX_icache_stage.v | 12 +- hw/rtl/VX_ipdom_stack.v | 22 +-- hw/rtl/VX_issue.v | 148 +++++++----------- hw/rtl/VX_issue_demux.v | 130 +++++++++------- hw/rtl/VX_lsu_unit.v | 170 +++++++++++--------- hw/rtl/VX_mem_arb.v | 6 +- hw/rtl/VX_mul_unit.v | 164 +++++++++++--------- hw/rtl/VX_pipeline.v | 8 +- hw/rtl/VX_platform.vh | 3 + hw/rtl/VX_print_instr.vh | 35 +++-- hw/rtl/VX_scheduler.v | 82 ---------- hw/rtl/VX_scope.vh | 40 ++--- hw/rtl/VX_scoreboard.v | 73 +++++++++ hw/rtl/VX_types.vh | 59 +++++++ hw/rtl/VX_warp_sched.v | 181 ++++++++++------------ hw/rtl/VX_writeback.v | 64 ++++---- hw/rtl/Vortex.v | 5 +- hw/rtl/cache/VX_bank.v | 36 ++--- hw/rtl/cache/VX_cache.v | 8 +- hw/rtl/cache/VX_cache_core_req_bank_sel.v | 6 +- hw/rtl/cache/VX_cache_core_rsp_merge.v | 6 +- hw/rtl/cache/VX_cache_dram_req_arb.v | 3 +- hw/rtl/cache/VX_cache_miss_resrv.v | 9 +- hw/rtl/cache/VX_snp_forwarder.v | 6 +- hw/rtl/cache/VX_snp_rsp_arb.v | 3 +- hw/rtl/cache/VX_tag_data_access.v | 19 ++- hw/rtl/fp_cores/VX_fp_fpga.v | 4 +- hw/rtl/fp_cores/VX_fp_noncomp.v | 14 +- hw/rtl/fp_cores/VX_fpnew.v | 7 +- hw/rtl/fp_cores/altera/VX_fp_add.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_div.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_ftoi.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_ftou.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_itof.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_madd.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_msub.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_mul.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_sqrt.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_sub.v | 4 +- hw/rtl/fp_cores/altera/VX_fp_utof.v | 4 +- hw/rtl/interfaces/VX_alu_req_if.v | 14 +- hw/rtl/interfaces/VX_branch_ctl_if.v | 2 +- hw/rtl/interfaces/VX_bru_req_if.v | 29 ++++ hw/rtl/interfaces/VX_cmt_to_csr_if.v | 2 +- hw/rtl/interfaces/VX_cmt_to_issue_if.v | 3 + hw/rtl/interfaces/VX_csr_req_if.v | 4 +- hw/rtl/interfaces/VX_csr_rsp_if.v | 15 ++ hw/rtl/interfaces/VX_csr_to_fpu_if.v | 2 +- hw/rtl/interfaces/VX_decode_if.v | 3 +- hw/rtl/interfaces/VX_exu_to_cmt_if.v | 7 +- hw/rtl/interfaces/VX_fpu_req_if.v | 6 +- hw/rtl/interfaces/VX_fpu_to_cmt_if.v | 1 - hw/rtl/interfaces/VX_fpu_to_csr_if.v | 2 +- hw/rtl/interfaces/VX_gpr_read_if.v | 2 +- hw/rtl/interfaces/VX_gpu_req_if.v | 10 +- hw/rtl/interfaces/VX_ifetch_req_if.v | 2 +- hw/rtl/interfaces/VX_ifetch_rsp_if.v | 2 +- hw/rtl/interfaces/VX_issue_if.v | 39 +++++ hw/rtl/interfaces/VX_join_if.v | 2 +- hw/rtl/interfaces/VX_lsu_req_if.v | 2 +- hw/rtl/interfaces/VX_mul_req_if.v | 4 +- hw/rtl/interfaces/VX_warp_ctl_if.v | 22 +-- hw/rtl/interfaces/VX_wb_if.v | 6 +- hw/rtl/interfaces/VX_wstall_if.v | 2 +- hw/rtl/libs/VX_cam_buffer.v | 18 +-- hw/rtl/libs/VX_countones.v | 4 +- hw/rtl/libs/VX_divide.v | 31 ++-- hw/rtl/libs/VX_elastic_buffer.v | 64 +++++--- hw/rtl/libs/VX_fair_arbiter.v | 12 +- hw/rtl/libs/VX_generic_queue.v | 3 +- hw/rtl/libs/VX_matrix_arbiter.v | 15 +- hw/rtl/libs/VX_multiplier.v | 18 +-- hw/rtl/libs/VX_onehot_encooder.v | 4 +- hw/rtl/libs/VX_priority_encoder.v | 6 +- hw/rtl/libs/VX_rr_arbiter.v | 9 +- hw/rtl/libs/VX_scope.v | 1 - hw/rtl/libs/VX_shift_register.v | 4 +- hw/syn/quartus/cache/Makefile | 4 +- hw/syn/quartus/core/Makefile | 4 +- hw/syn/quartus/pipeline/Makefile | 4 +- hw/syn/quartus/project.sdc | 2 +- hw/syn/quartus/project.tcl | 1 + hw/syn/quartus/top/Makefile | 4 +- hw/syn/quartus/vortex/Makefile | 4 +- hw/unit_tests/VX_divide_tb.v | 37 ++--- 107 files changed, 1392 insertions(+), 1239 deletions(-) create mode 100644 hw/rtl/VX_bru_unit.v delete mode 100644 hw/rtl/VX_scheduler.v create mode 100644 hw/rtl/VX_scoreboard.v create mode 100644 hw/rtl/VX_types.vh create mode 100644 hw/rtl/interfaces/VX_bru_req_if.v create mode 100644 hw/rtl/interfaces/VX_csr_rsp_if.v create mode 100644 hw/rtl/interfaces/VX_issue_if.v diff --git a/driver/tests/dogfood/Makefile b/driver/tests/dogfood/Makefile index 72fdf50b..8a3a3bd6 100644 --- a/driver/tests/dogfood/Makefile +++ b/driver/tests/dogfood/Makefile @@ -18,7 +18,7 @@ VX_SRCS = kernel.c CXXFLAGS += -std=c++11 -O0 -g -Wall -Wextra -pedantic -Wfatal-errors -CXXFLAGS += -I../../include +CXXFLAGS += -I../../include -I../../../hw PROJECT = dogfood diff --git a/driver/tests/dogfood/dogfood.cpp b/driver/tests/dogfood/dogfood.cpp index 1a62959f..dc7e7ff0 100644 --- a/driver/tests/dogfood/dogfood.cpp +++ b/driver/tests/dogfood/dogfood.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "testcases.h" #include "common.h" @@ -25,6 +26,7 @@ public: this->add_test("imul", new Test_IMUL()); this->add_test("idiv", new Test_IDIV()); this->add_test("idiv-mul", new Test_IDIV_MUL()); + #ifdef EXT_F_ENABLE this->add_test("fadd", new Test_FADD()); this->add_test("fsub", new Test_FSUB()); this->add_test("fmul", new Test_FMUL()); @@ -40,6 +42,7 @@ public: this->add_test("ftou", new Test_FTOU()); this->add_test("tof", new Test_ITOF()); this->add_test("utof", new Test_UTOF()); + #endif } ~TestMngr() { diff --git a/driver/tests/dogfood/testcases.h b/driver/tests/dogfood/testcases.h index 4669c857..311efc20 100644 --- a/driver/tests/dogfood/testcases.h +++ b/driver/tests/dogfood/testcases.h @@ -15,8 +15,8 @@ union Float_t { }; inline bool almost_equal_eps(float a, float b, float eps = std::numeric_limits::epsilon()) { - auto tolerance = std::max(std::fabs(a), std::fabs(b)) * eps; - return std::fabs(a - b) <= tolerance; + auto tolerance = std::max(fabs(a), fabs(b)) * eps; + return fabs(a - b) <= tolerance; } inline bool almost_equal_ulp(float a, float b, int32_t ulp = 4) { diff --git a/hw/opae/README b/hw/opae/README index cafa5897..1b916d3c 100644 --- a/hw/opae/README +++ b/hw/opae/README @@ -62,6 +62,7 @@ make ase # tests ./run_ase.sh build_ase_1c ../../driver/tests/basic/basic -n 256 ./run_ase.sh build_ase_1c ../../driver/tests/demo/demo -n 16 +./run_ase.sh build_ase_1c ../../driver/tests/dogfood/dogfood -n 16 ./run_ase.sh build_ase_1c ../../benchmarks/opencl/vecadd/vecadd # modify "vsim_run.tcl" to dump VCD trace diff --git a/hw/opae/vortex_afu.qsf b/hw/opae/vortex_afu.qsf index 75c1bda1..8f3f724b 100644 --- a/hw/opae/vortex_afu.qsf +++ b/hw/opae/vortex_afu.qsf @@ -1,7 +1,7 @@ # Analysis & Synthesis Assignments set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 -set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS ON +# set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS ON set_global_assignment -name VERILOG_MACRO QUARTUS set_global_assignment -name VERILOG_MACRO SYNTHESIS set_global_assignment -name VERILOG_MACRO NDEBUG \ No newline at end of file diff --git a/hw/opae/vortex_afu.sv b/hw/opae/vortex_afu.sv index a059e8e7..1730eedb 100644 --- a/hw/opae/vortex_afu.sv +++ b/hw/opae/vortex_afu.sv @@ -1035,8 +1035,7 @@ wire [SCOPE_DATAW+1:0] scope_data_in_ste; assign scope_data_in_st[0] = {`SCOPE_SIGNALS_DATA_LIST `SCOPE_SIGNALS_UPD_LIST, scope_changed, scope_start}; assign scope_data_in_ste = scope_data_in_st[SCOPE_SR_DEPTH-1]; -genvar i; -for (i = 1; i < SCOPE_SR_DEPTH; i++) begin +for (genvar i = 1; i < SCOPE_SR_DEPTH; i++) begin VX_generic_register #( .N (SCOPE_DATAW+2) ) scope_sr ( diff --git a/hw/rtl/VX_alu_unit.v b/hw/rtl/VX_alu_unit.v index 3fe6c5b0..bd3e478d 100644 --- a/hw/rtl/VX_alu_unit.v +++ b/hw/rtl/VX_alu_unit.v @@ -10,98 +10,83 @@ module VX_alu_unit #( VX_alu_req_if alu_req_if, // Outputs - VX_branch_ctl_if branch_ctl_if, - VX_exu_to_cmt_if alu_commit_if + VX_exu_to_cmt_if alu_commit_if ); - reg [`NUM_THREADS-1:0][31:0] alu_result; - wire [`NUM_THREADS-1:0][32:0] sub_result; - wire [`NUM_THREADS-1:0][32:0] shift_result; + reg [`NUM_THREADS-1:0][31:0] alu_result; + + wire [`NUM_THREADS-1:0][31:0] addsub_result; + wire [`NUM_THREADS-1:0] less_result; + wire [`NUM_THREADS-1:0][31:0] shift_result; + reg [`NUM_THREADS-1:0][31:0] misc_result; - wire [`ALU_BITS-1:0] alu_op = alu_req_if.alu_op; + wire [`ALU_BITS-1:0] alu_op = `ALU_OP(alu_req_if.op); wire [`NUM_THREADS-1:0][31:0] alu_in1 = alu_req_if.rs1_data; wire [`NUM_THREADS-1:0][31:0] alu_in2 = alu_req_if.rs2_data; - genvar i; + wire [`NUM_THREADS-1:0][31:0] alu_in1_PC = alu_req_if.rs1_is_PC ? {`NUM_THREADS{alu_req_if.curr_PC}} : alu_in1; + wire [`NUM_THREADS-1:0][31:0] alu_in2_imm = alu_req_if.rs2_is_imm ? {`NUM_THREADS{alu_req_if.imm}} : alu_in2; - for (i = 0; i < `NUM_THREADS; i++) begin + wire negate_add = (alu_op == `ALU_SUB); + wire signed_less = (alu_op == `ALU_SLT); + wire signed_shift = (alu_op == `ALU_SRA); - wire [32:0] sub_in1 = {(alu_op != `ALU_SLTU) & (alu_op != `ALU_BLTU) & (alu_op != `ALU_BGEU) & alu_in1[i][31], alu_in1[i]}; - wire [32:0] sub_in2 = {(alu_op != `ALU_SLTU) & (alu_op != `ALU_BLTU) & (alu_op != `ALU_BGEU) & alu_in2[i][31], alu_in2[i]}; - assign sub_result[i] = $signed(sub_in1) - $signed(sub_in2); + for (genvar i = 0; i < `NUM_THREADS; i++) begin + wire [32:0] addsub_in1 = {alu_in1_PC[i], 1'b1}; + wire [32:0] addsub_in2 = {alu_in2_imm[i], 1'b0} ^ {33{negate_add}}; + `IGNORE_WARNINGS_BEGIN + wire [32:0] addsub_addd = addsub_in1 + addsub_in2; + `IGNORE_WARNINGS_END + assign addsub_result[i] = addsub_addd[32:1]; + end - wire [32:0] shift_in1 = {(alu_op == `ALU_SRA) & alu_in1[i][31], alu_in1[i]}; - assign shift_result[i] = $signed(shift_in1) >>> alu_in2[i][4:0]; - - always @(*) begin - case (alu_op) - `ALU_SUB: alu_result[i] = sub_result[i][31:0]; - `ALU_SLL: alu_result[i] = alu_in1[i] << alu_in2[i][4:0]; - `ALU_SLT, - `ALU_SLTU: alu_result[i] = 32'(sub_result[i][32]); - `ALU_XOR: alu_result[i] = alu_in1[i] ^ alu_in2[i]; - `ALU_SRL, - `ALU_SRA: alu_result[i] = shift_result[i][31:0]; - `ALU_OR: alu_result[i] = alu_in1[i] | alu_in2[i]; - `ALU_AND: alu_result[i] = alu_in1[i] & alu_in2[i]; - default: alu_result[i] = alu_in1[i] + alu_in2[i]; // ADD, LUI, AUIPC - endcase - end + for (genvar i = 0; i < `NUM_THREADS; i++) begin + wire [32:0] less_in1 = {signed_less & alu_in1[i][31], alu_in1[i]}; + wire [32:0] less_in2 = {signed_less & alu_in2_imm[i][31], alu_in2_imm[i]}; + assign less_result[i] = $signed(less_in1) < $signed(less_in2); + end + + for (genvar i = 0; i < `NUM_THREADS; i++) begin + wire [32:0] shift_in1 = {signed_shift & alu_in1[i][31], alu_in1[i]}; + `IGNORE_WARNINGS_BEGIN + wire [32:0] shift_value = $signed(shift_in1) >>> alu_in2_imm[i][4:0]; + `IGNORE_WARNINGS_END + assign shift_result[i] = shift_value[31:0]; end - wire [`NT_BITS-1:0] br_result_index; - - VX_priority_encoder #( - .N(`NUM_THREADS) - ) choose_alu_result ( - .data_in (alu_req_if.thread_mask), - .data_out (br_result_index), - `UNUSED_PIN (valid_out) - ); - - wire [32:0] br_result = sub_result[br_result_index]; - wire br_sign = br_result[32]; - wire br_nzero = (| br_result[31:0]); - wire br_sign_s1; - wire br_nzero_s1; - - wire [`BR_BITS-1:0] br_op = `IS_BR_OP(alu_req_if.alu_op) ? `BR_OP(alu_req_if.alu_op) : `BR_NO; - wire [`BR_BITS-1:0] br_op_s1; - - wire [31:0] br_addr = (br_op == `BR_JALR) ? alu_req_if.rs1_data[br_result_index] : alu_req_if.curr_PC; - wire [31:0] br_dest = $signed(br_addr) + $signed(alu_req_if.offset); - - wire is_jal = (alu_op == `ALU_JAL || alu_op == `ALU_JALR); - wire [`NUM_THREADS-1:0][31:0] alu_jal_result = is_jal ? {`NUM_THREADS{alu_req_if.next_PC}} : alu_result; - - wire stall = ~alu_commit_if.ready && alu_commit_if.valid; + for (genvar i = 0; i < `NUM_THREADS; i++) begin + always @(*) begin + case (alu_op) + `ALU_AND: misc_result[i] = alu_in1[i] & alu_in2_imm[i]; + `ALU_OR: misc_result[i] = alu_in1[i] | alu_in2_imm[i]; + `ALU_XOR: misc_result[i] = alu_in1[i] ^ alu_in2_imm[i]; + //`ALU_SLL, + default: misc_result[i] = alu_in1[i] << alu_in2_imm[i][4:0]; + endcase + end + end + + for (genvar i = 0; i < `NUM_THREADS; i++) begin + always @(*) begin + case (`ALU_OP_CLASS(alu_op)) + 0: alu_result[i] = addsub_result[i]; + 1: alu_result[i] = {31'b0, less_result[i]}; + 2: alu_result[i] = shift_result[i]; + default: alu_result[i] = misc_result[i]; + endcase + end + end VX_generic_register #( - .N(1 + `NW_BITS + `ISTAG_BITS + (`NUM_THREADS * 32) + `BR_BITS + 32 + 1 + 1) + .N(1 + `ISTAG_BITS + (`NUM_THREADS * 32)) ) alu_reg ( .clk (clk), .reset (reset), - .stall (stall), + .stall (0), .flush (0), - .in ({alu_req_if.valid, alu_req_if.warp_num, alu_req_if.issue_tag, alu_jal_result, br_op, br_dest, br_sign, br_nzero}), - .out ({alu_commit_if.valid, branch_ctl_if.warp_num, alu_commit_if.issue_tag, alu_commit_if.data, br_op_s1, branch_ctl_if.dest, br_sign_s1, br_nzero_s1}) - ); - - reg br_taken; - always @(*) begin - case (br_op_s1) - `BR_NE: br_taken = br_nzero_s1; - `BR_EQ: br_taken = ~br_nzero_s1; - `BR_LT, - `BR_LTU: br_taken = br_sign_s1; - `BR_GE, - `BR_GEU: br_taken = ~br_sign_s1; - default: br_taken = 1'b1; - endcase - end + .in ({alu_req_if.valid, alu_req_if.issue_tag, alu_result}), + .out ({alu_commit_if.valid, alu_commit_if.issue_tag, alu_commit_if.data}) + ); - assign branch_ctl_if.valid = alu_commit_if.valid && (br_op_s1 != `BR_NO); - assign branch_ctl_if.taken = br_taken; - - assign alu_req_if.ready = ~stall; + assign alu_req_if.ready = 1'b1; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_bru_unit.v b/hw/rtl/VX_bru_unit.v new file mode 100644 index 00000000..4d6bbde5 --- /dev/null +++ b/hw/rtl/VX_bru_unit.v @@ -0,0 +1,56 @@ +`include "VX_define.vh" + +module VX_bru_unit #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + // Inputs + VX_bru_req_if bru_req_if, + + // Outputs + VX_branch_ctl_if branch_ctl_if, + VX_exu_to_cmt_if bru_commit_if +); + wire [`BRU_BITS-1:0] bru_op = bru_req_if.op; + wire bru_neg = `BRU_NEG(bru_op); + wire bru_less = `BRU_LESS(bru_op); + wire bru_signed = `BRU_SIGNED(bru_op); + wire bru_static = `BRU_STATIC(bru_op); + + wire [31:0] rs1_data = bru_req_if.rs1_data; + wire [31:0] rs2_data = bru_req_if.rs2_data; + + wire [32:0] signed_in1 = {bru_signed & rs1_data[31], rs1_data}; + wire [32:0] signed_in2 = {bru_signed & rs2_data[31], rs2_data}; + wire is_less = $signed(signed_in1) < $signed(signed_in2); + + wire is_equal = (rs1_data == rs2_data); + + wire taken = ((bru_less ? is_less : is_equal) ^ bru_neg) | bru_static; + + wire [31:0] base_addr = bru_req_if.rs1_is_PC ? bru_req_if.curr_PC : rs1_data; + wire [31:0] dest = base_addr + bru_req_if.offset; + + wire [31:0] jal_result = bru_req_if.curr_PC + 4; + wire [31:0] jal_result_r; + + VX_generic_register #( + .N(1 + `NW_BITS + `ISTAG_BITS + 1 + 32 + 32) + ) bru_reg ( + .clk (clk), + .reset (reset), + .stall (0), + .flush (0), + .in ({bru_req_if.valid, bru_req_if.wid, bru_req_if.issue_tag, taken, dest, jal_result}), + .out ({bru_commit_if.valid, branch_ctl_if.wid, bru_commit_if.issue_tag, branch_ctl_if.taken, branch_ctl_if.dest, jal_result_r}) + ); + + assign branch_ctl_if.valid = bru_commit_if.valid; + + assign bru_commit_if.data = {`NUM_THREADS{jal_result_r}}; + + assign bru_req_if.ready = 1'b1; + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_cluster.v b/hw/rtl/VX_cluster.v index 2633bf7d..9a9c4a8f 100644 --- a/hw/rtl/VX_cluster.v +++ b/hw/rtl/VX_cluster.v @@ -135,9 +135,7 @@ module VX_cluster #( wire [`NUM_CORES-1:0] per_core_busy; wire [`NUM_CORES-1:0] per_core_ebreak; - genvar i; - - for (i = 0; i < `NUM_CORES; i++) begin + for (genvar i = 0; i < `NUM_CORES; i++) begin VX_core #( .CORE_ID(i + (CLUSTER_ID * `NUM_CORES)) ) core ( @@ -316,7 +314,7 @@ module VX_cluster #( wire[`NUM_CORES-1:0][`DSNP_TAG_WIDTH-1:0] l2_snp_fwdin_tag; wire[`NUM_CORES-1:0] l2_snp_fwdin_ready; - for (i = 0; i < `L2NUM_REQUESTS; i = i + 2) begin + for (genvar i = 0; i < `L2NUM_REQUESTS; i = i + 2) begin assign l2_core_req_valid [i] = per_core_D_dram_req_valid[(i/2)]; assign l2_core_req_valid [i+1] = per_core_I_dram_req_valid[(i/2)]; @@ -472,7 +470,7 @@ module VX_cluster #( wire[`NUM_CORES-1:0][`DSNP_TAG_WIDTH-1:0] arb_snp_fwdin_tag; wire[`NUM_CORES-1:0] arb_snp_fwdin_ready; - for (i = 0; i < `L2NUM_REQUESTS; i = i + 2) begin + for (genvar i = 0; i < `L2NUM_REQUESTS; i = i + 2) begin assign arb_dram_req_valid [i] = per_core_D_dram_req_valid[(i/2)]; assign arb_dram_req_valid [i+1] = per_core_I_dram_req_valid[(i/2)]; diff --git a/hw/rtl/VX_commit.v b/hw/rtl/VX_commit.v index d4c246c3..f6f6c594 100644 --- a/hw/rtl/VX_commit.v +++ b/hw/rtl/VX_commit.v @@ -8,6 +8,7 @@ module VX_commit #( // inputs VX_exu_to_cmt_if alu_commit_if, + VX_exu_to_cmt_if bru_commit_if, VX_exu_to_cmt_if lsu_commit_if, VX_exu_to_cmt_if mul_commit_if, VX_exu_to_cmt_if csr_commit_if, @@ -22,12 +23,13 @@ module VX_commit #( // update CRSs wire [`NUM_EXS-1:0] commited_mask; - assign commited_mask = {(alu_commit_if.valid && alu_commit_if.ready), - (lsu_commit_if.valid && lsu_commit_if.ready), - (csr_commit_if.valid && csr_commit_if.ready), - (mul_commit_if.valid && mul_commit_if.ready), - (fpu_commit_if.valid && fpu_commit_if.ready), - (gpu_commit_if.valid && gpu_commit_if.ready)}; + assign commited_mask = {alu_commit_if.valid, + bru_commit_if.valid, + lsu_commit_if.valid, + csr_commit_if.valid, + mul_commit_if.valid, + fpu_commit_if.valid, + gpu_commit_if.valid}; wire [`NE_BITS:0] num_commits; @@ -38,18 +40,10 @@ module VX_commit #( .count (num_commits) ); - assign cmt_to_csr_if.valid = (| commited_mask); - assign cmt_to_csr_if.warp_num = cmt_to_issue_if.fpu_data.warp_num; - assign cmt_to_csr_if.num_commits = num_commits; - - assign cmt_to_csr_if.has_fflags = (fpu_commit_if.valid && fpu_commit_if.ready) && fpu_commit_if.has_fflags; - - integer i; - fflags_t fflags; always @(*) begin fflags = 0; - for (i = 0; i < `NUM_THREADS; i++) begin + for (integer i = 0; i < `NUM_THREADS; i++) begin if (cmt_to_issue_if.fpu_data.thread_mask[i]) begin fflags.NX |= fpu_commit_if.fflags[i].NX; fflags.UF |= fpu_commit_if.fflags[i].UF; @@ -59,18 +53,39 @@ module VX_commit #( end end end - assign cmt_to_csr_if.fflags = fflags; + + fflags_t fflags_r; + reg has_fflags_r; + reg [`NW_BITS-1:0] wid_r; + reg [`NE_BITS:0] num_commits_r; + reg csr_update_r; + + always @(posedge clk) begin + csr_update_r <= (| commited_mask); + fflags_r <= fflags; + has_fflags_r <= fpu_commit_if.valid && fpu_commit_if.has_fflags; + wid_r <= cmt_to_issue_if.fpu_data.wid; + num_commits_r <= num_commits; + end + + assign cmt_to_csr_if.valid = csr_update_r; + assign cmt_to_csr_if.wid = wid_r; + assign cmt_to_csr_if.num_commits = num_commits_r; + assign cmt_to_csr_if.has_fflags = has_fflags_r; + assign cmt_to_csr_if.fflags = fflags_r; // Notify issue stage - assign cmt_to_issue_if.alu_valid = alu_commit_if.valid && alu_commit_if.ready; - assign cmt_to_issue_if.lsu_valid = lsu_commit_if.valid && lsu_commit_if.ready; - assign cmt_to_issue_if.csr_valid = csr_commit_if.valid && csr_commit_if.ready; - assign cmt_to_issue_if.mul_valid = mul_commit_if.valid && mul_commit_if.ready; - assign cmt_to_issue_if.fpu_valid = fpu_commit_if.valid && fpu_commit_if.ready; - assign cmt_to_issue_if.gpu_valid = gpu_commit_if.valid && gpu_commit_if.ready; + assign cmt_to_issue_if.alu_valid = alu_commit_if.valid; + assign cmt_to_issue_if.bru_valid = bru_commit_if.valid; + assign cmt_to_issue_if.lsu_valid = lsu_commit_if.valid; + assign cmt_to_issue_if.csr_valid = csr_commit_if.valid; + assign cmt_to_issue_if.mul_valid = mul_commit_if.valid; + assign cmt_to_issue_if.fpu_valid = fpu_commit_if.valid; + assign cmt_to_issue_if.gpu_valid = gpu_commit_if.valid; assign cmt_to_issue_if.alu_tag = alu_commit_if.issue_tag; + assign cmt_to_issue_if.bru_tag = bru_commit_if.issue_tag; assign cmt_to_issue_if.lsu_tag = lsu_commit_if.issue_tag; assign cmt_to_issue_if.csr_tag = csr_commit_if.issue_tag; assign cmt_to_issue_if.mul_tag = mul_commit_if.issue_tag; @@ -84,6 +99,7 @@ module VX_commit #( .reset (reset), .alu_commit_if (alu_commit_if), + .bru_commit_if (bru_commit_if), .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), @@ -96,23 +112,26 @@ module VX_commit #( `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin - if (alu_commit_if.valid && alu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.alu_data.warp_num, cmt_to_issue_if.alu_data.curr_PC, alu_commit_if.issue_tag, cmt_to_issue_if.alu_data.thread_mask, cmt_to_issue_if.alu_data.wb, cmt_to_issue_if.alu_data.rd, alu_commit_if.data); + if (alu_commit_if.valid) begin + $display("%t: Core%0d-commit: wid=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.alu_data.wid, cmt_to_issue_if.alu_data.curr_PC, alu_commit_if.issue_tag, cmt_to_issue_if.alu_data.thread_mask, cmt_to_issue_if.alu_data.wb, cmt_to_issue_if.alu_data.rd, alu_commit_if.data); end - if (lsu_commit_if.valid && lsu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.lsu_data.warp_num, cmt_to_issue_if.lsu_data.curr_PC, lsu_commit_if.issue_tag, cmt_to_issue_if.lsu_data.thread_mask, cmt_to_issue_if.lsu_data.wb, cmt_to_issue_if.lsu_data.rd, lsu_commit_if.data); + if (bru_commit_if.valid) begin + $display("%t: Core%0d-commit: wid=%0d, PC=%0h, ex=BRU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.bru_data.wid, cmt_to_issue_if.bru_data.curr_PC, bru_commit_if.issue_tag, cmt_to_issue_if.bru_data.thread_mask, cmt_to_issue_if.bru_data.wb, cmt_to_issue_if.bru_data.rd, bru_commit_if.data); end - if (csr_commit_if.valid && csr_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.csr_data.warp_num, cmt_to_issue_if.csr_data.curr_PC, csr_commit_if.issue_tag, cmt_to_issue_if.csr_data.thread_mask, cmt_to_issue_if.csr_data.wb, cmt_to_issue_if.csr_data.rd, csr_commit_if.data); + if (lsu_commit_if.valid) begin + $display("%t: Core%0d-commit: wid=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.lsu_data.wid, cmt_to_issue_if.lsu_data.curr_PC, lsu_commit_if.issue_tag, cmt_to_issue_if.lsu_data.thread_mask, cmt_to_issue_if.lsu_data.wb, cmt_to_issue_if.lsu_data.rd, lsu_commit_if.data); + end + if (csr_commit_if.valid) begin + $display("%t: Core%0d-commit: wid=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.csr_data.wid, cmt_to_issue_if.csr_data.curr_PC, csr_commit_if.issue_tag, cmt_to_issue_if.csr_data.thread_mask, cmt_to_issue_if.csr_data.wb, cmt_to_issue_if.csr_data.rd, csr_commit_if.data); end - if (mul_commit_if.valid && mul_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.mul_data.warp_num, cmt_to_issue_if.mul_data.curr_PC, mul_commit_if.issue_tag, cmt_to_issue_if.mul_data.thread_mask, cmt_to_issue_if.mul_data.wb, cmt_to_issue_if.mul_data.rd, mul_commit_if.data); + if (mul_commit_if.validy) begin + $display("%t: Core%0d-commit: wid=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.mul_data.wid, cmt_to_issue_if.mul_data.curr_PC, mul_commit_if.issue_tag, cmt_to_issue_if.mul_data.thread_mask, cmt_to_issue_if.mul_data.wb, cmt_to_issue_if.mul_data.rd, mul_commit_if.data); end - if (fpu_commit_if.valid && fpu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.fpu_data.warp_num, cmt_to_issue_if.fpu_data.curr_PC, fpu_commit_if.issue_tag, cmt_to_issue_if.fpu_data.thread_mask, cmt_to_issue_if.fpu_data.wb, cmt_to_issue_if.fpu_data.rd, fpu_commit_if.data); + if (fpu_commit_if.valid) begin + $display("%t: Core%0d-commit: wid=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.fpu_data.wid, cmt_to_issue_if.fpu_data.curr_PC, fpu_commit_if.issue_tag, cmt_to_issue_if.fpu_data.thread_mask, cmt_to_issue_if.fpu_data.wb, cmt_to_issue_if.fpu_data.rd, fpu_commit_if.data); end - if (gpu_commit_if.valid && gpu_commit_if.ready) begin - $display("%t: Core%0d-commit: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.gpu_data.warp_num, cmt_to_issue_if.gpu_data.curr_PC, gpu_commit_if.issue_tag, cmt_to_issue_if.gpu_data.thread_mask, cmt_to_issue_if.gpu_data.wb, cmt_to_issue_if.gpu_data.rd, gpu_commit_if.data); + if (gpu_commit_if.valid) begin + $display("%t: Core%0d-commit: wid=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, wb=%0d, rd=%0d, data=%0h", $time, CORE_ID, cmt_to_issue_if.gpu_data.wid, cmt_to_issue_if.gpu_data.curr_PC, gpu_commit_if.issue_tag, cmt_to_issue_if.gpu_data.thread_mask, cmt_to_issue_if.gpu_data.wb, cmt_to_issue_if.gpu_data.rd, gpu_commit_if.data); end end `endif diff --git a/hw/rtl/VX_csr_arb.v b/hw/rtl/VX_csr_arb.v index ed7e7f24..4cee91ff 100644 --- a/hw/rtl/VX_csr_arb.v +++ b/hw/rtl/VX_csr_arb.v @@ -12,7 +12,7 @@ module VX_csr_arb ( VX_csr_req_if csr_req_if, // input - VX_exu_to_cmt_if csr_rsp_if, + VX_csr_rsp_if csr_rsp_if, // outputs VX_exu_to_cmt_if csr_commit_if, @@ -28,9 +28,9 @@ module VX_csr_arb ( // requests assign csr_req_if.valid = (~select_io_req) ? csr_core_req_if.valid : csr_io_req_if.valid; assign csr_req_if.issue_tag = (~select_io_req) ? csr_core_req_if.issue_tag : 0; - assign csr_req_if.warp_num = (~select_io_req) ? csr_core_req_if.warp_num : 0; + assign csr_req_if.wid = (~select_io_req) ? csr_core_req_if.wid : 0; assign csr_req_if.curr_PC = (~select_io_req) ? csr_core_req_if.curr_PC : 0; - assign csr_req_if.csr_op = (~select_io_req) ? csr_core_req_if.csr_op : (csr_io_req_if.rw ? `CSR_RW : `CSR_RS); + assign csr_req_if.op = (~select_io_req) ? csr_core_req_if.op : (csr_io_req_if.rw ? `CSR_RW : `CSR_RS); assign csr_req_if.csr_addr = (~select_io_req) ? csr_core_req_if.csr_addr : csr_io_req_if.addr; assign csr_req_if.csr_mask = (~select_io_req) ? csr_core_req_if.csr_mask : (csr_io_req_if.rw ? csr_io_req_if.data : 32'b0); assign csr_req_if.rd = (~select_io_req) ? csr_core_req_if.rd : 0; @@ -48,6 +48,6 @@ module VX_csr_arb ( assign csr_commit_if.issue_tag= csr_rsp_if.issue_tag; assign csr_commit_if.data = csr_rsp_if.data; - assign csr_rsp_if.ready = select_io_rsp ? csr_io_rsp_if.ready : csr_commit_if.ready; + assign csr_rsp_if.ready = select_io_rsp ? csr_io_rsp_if.ready : 1'b1; endmodule diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index 71971aa4..bd426ba2 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -9,7 +9,7 @@ module VX_csr_data #( VX_cmt_to_csr_if cmt_to_csr_if, VX_csr_to_fpu_if csr_to_fpu_if, - input wire[`NW_BITS-1:0] warp_num, + input wire[`NW_BITS-1:0] wid, input wire read_enable, input wire[`CSR_ADDR_BITS-1:0] read_addr, @@ -38,24 +38,24 @@ module VX_csr_data #( always @(posedge clk) begin if (cmt_to_csr_if.has_fflags) begin - csr_fflags[cmt_to_csr_if.warp_num] <= cmt_to_csr_if.fflags; - csr_fcsr[cmt_to_csr_if.warp_num][`FFG_BITS-1:0] <= cmt_to_csr_if.fflags; + csr_fflags[cmt_to_csr_if.wid] <= cmt_to_csr_if.fflags; + csr_fcsr[cmt_to_csr_if.wid][`FFG_BITS-1:0] <= cmt_to_csr_if.fflags; end if (write_enable) begin case (write_addr) `CSR_FFLAGS: begin - csr_fcsr[warp_num][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; - csr_fflags[warp_num] <= write_data[`FFG_BITS-1:0]; + csr_fcsr[wid][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; + csr_fflags[wid] <= write_data[`FFG_BITS-1:0]; end `CSR_FRM: begin - csr_fcsr[warp_num][`FFG_BITS+`FRM_BITS-1:`FFG_BITS] <= write_data[`FRM_BITS-1:0]; - csr_frm[warp_num] <= write_data[`FRM_BITS-1:0]; + csr_fcsr[wid][`FFG_BITS+`FRM_BITS-1:`FFG_BITS] <= write_data[`FRM_BITS-1:0]; + csr_frm[wid] <= write_data[`FRM_BITS-1:0]; end `CSR_FCSR: begin - csr_fcsr[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:0]; - csr_frm[warp_num] <= write_data[`FFG_BITS+`FRM_BITS-1:`FFG_BITS]; - csr_fflags[warp_num] <= write_data[`FFG_BITS-1:0]; + csr_fcsr[wid] <= write_data[`FFG_BITS+`FRM_BITS-1:0]; + csr_frm[wid] <= write_data[`FFG_BITS+`FRM_BITS-1:`FFG_BITS]; + csr_fflags[wid] <= write_data[`FFG_BITS-1:0]; end `CSR_SATP: csr_satp <= write_data; @@ -79,7 +79,7 @@ module VX_csr_data #( always @(posedge clk) begin if (reset) begin - csr_cycle <= 0; + csr_cycle <= 0; csr_instret <= 0; end else begin csr_cycle <= csr_cycle + 1; @@ -91,15 +91,15 @@ module VX_csr_data #( always @(*) begin case (read_addr) - `CSR_FFLAGS : read_data = 32'(csr_fflags[warp_num]); - `CSR_FRM : read_data = 32'(csr_frm[warp_num]); - `CSR_FCSR : read_data = 32'(csr_fcsr[warp_num]); + `CSR_FFLAGS : read_data = 32'(csr_fflags[wid]); + `CSR_FRM : read_data = 32'(csr_frm[wid]); + `CSR_FCSR : read_data = 32'(csr_fcsr[wid]); - `CSR_LWID : read_data = 32'(warp_num); + `CSR_LWID : read_data = 32'(wid); `CSR_LTID , `CSR_GTID , `CSR_MHARTID , - `CSR_GWID : read_data = CORE_ID * `NUM_WARPS + 32'(warp_num); + `CSR_GWID : read_data = CORE_ID * `NUM_WARPS + 32'(wid); `CSR_GCID : read_data = CORE_ID; `CSR_NT : read_data = `NUM_THREADS; `CSR_NW : read_data = `NUM_WARPS; @@ -134,6 +134,6 @@ module VX_csr_data #( endcase end - assign csr_to_fpu_if.frm = csr_frm[csr_to_fpu_if.warp_num]; + assign csr_to_fpu_if.frm = csr_frm[csr_to_fpu_if.wid]; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_csr_io_arb.v b/hw/rtl/VX_csr_io_arb.v index 5e6782da..04097c55 100644 --- a/hw/rtl/VX_csr_io_arb.v +++ b/hw/rtl/VX_csr_io_arb.v @@ -51,9 +51,7 @@ module VX_csr_io_arb #( end else begin - genvar i; - - for (i = 0; i < NUM_REQUESTS; i++) begin + for (genvar i = 0; i < NUM_REQUESTS; i++) begin assign out_csr_io_req_valid[i] = in_csr_io_req_valid && (request_id == `REQS_BITS'(i)); assign out_csr_io_req_rw[i] = in_csr_io_req_rw; assign out_csr_io_req_addr[i] = in_csr_io_req_addr; @@ -78,7 +76,7 @@ module VX_csr_io_arb #( assign out_csr_io_rsp_valid = in_csr_io_rsp_valid [bus_rsp_sel]; assign out_csr_io_rsp_data = in_csr_io_rsp_data [bus_rsp_sel]; - for (i = 0; i < NUM_REQUESTS; i++) begin + for (genvar i = 0; i < NUM_REQUESTS; i++) begin assign in_csr_io_rsp_ready[i] = out_csr_io_rsp_ready && (bus_rsp_sel == `REQS_BITS'(i)); end diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index 14ea5fd8..c6a66b6c 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -15,11 +15,11 @@ module VX_csr_unit #( VX_csr_req_if csr_req_if, VX_exu_to_cmt_if csr_commit_if ); - VX_csr_req_if csr_pipe_req_if(); - VX_exu_to_cmt_if csr_pipe_commit_if(); + VX_csr_req_if csr_pipe_req_if(); + VX_csr_rsp_if csr_pipe_rsp_if(); - wire select_io_req = csr_io_req_if.valid; - wire select_io_rsp; + wire select_io_req = csr_io_req_if.valid; + wire select_io_rsp; VX_csr_arb csr_arb ( .clk (clk), @@ -29,7 +29,7 @@ module VX_csr_unit #( .csr_io_req_if (csr_io_req_if), .csr_req_if (csr_pipe_req_if), - .csr_rsp_if (csr_pipe_commit_if), + .csr_rsp_if (csr_pipe_rsp_if), .csr_io_rsp_if (csr_io_rsp_if), .csr_commit_if (csr_commit_if), @@ -41,7 +41,7 @@ module VX_csr_unit #( wire [`CSR_ADDR_BITS-1:0] csr_addr_s1; wire [31:0] csr_read_data, csr_read_data_s1; wire [31:0] csr_updated_data_s1; - wire [`NW_BITS-1:0] warp_num_s1; + wire [`NW_BITS-1:0] wid_s1; VX_csr_data #( .CORE_ID(CORE_ID) @@ -56,12 +56,12 @@ module VX_csr_unit #( .write_enable (csr_we_s1), .write_data (csr_updated_data_s1[`CSR_WIDTH-1:0]), .write_addr (csr_addr_s1), - .warp_num (csr_pipe_req_if.warp_num) + .wid (csr_pipe_req_if.wid) ); wire csr_hazard = (csr_addr_s1 == csr_pipe_req_if.csr_addr) - && (warp_num_s1 == csr_pipe_req_if.warp_num) - && csr_pipe_commit_if.valid; + && (wid_s1 == csr_pipe_req_if.wid) + && csr_pipe_rsp_if.valid; wire [31:0] csr_read_data_qual = csr_hazard ? csr_updated_data_s1 : csr_read_data; @@ -71,7 +71,7 @@ module VX_csr_unit #( always @(*) begin csr_we_s0_unqual = 0; - case (csr_pipe_req_if.csr_op) + case (csr_pipe_req_if.op) `CSR_RW: begin csr_updated_data = csr_pipe_req_if.csr_mask; csr_we_s0_unqual = 1; @@ -90,7 +90,7 @@ module VX_csr_unit #( wire csr_we_s0 = csr_we_s0_unqual && csr_pipe_req_if.valid; - wire stall = ~csr_pipe_commit_if.ready && csr_pipe_commit_if.valid; + wire stall = ~csr_pipe_rsp_if.ready && csr_pipe_rsp_if.valid; VX_generic_register #( .N(1 + `ISTAG_BITS + `NW_BITS + 1 + `CSR_ADDR_BITS + 1 + 32 + 32) @@ -99,13 +99,12 @@ module VX_csr_unit #( .reset (reset), .stall (stall), .flush (0), - .in ({csr_pipe_req_if.valid, csr_pipe_req_if.issue_tag, csr_pipe_req_if.warp_num, csr_we_s0, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data_qual, csr_updated_data}), - .out ({csr_pipe_commit_if.valid, csr_pipe_commit_if.issue_tag, warp_num_s1, csr_we_s1, csr_addr_s1, select_io_rsp, csr_read_data_s1, csr_updated_data_s1}) + .in ({csr_pipe_req_if.valid, csr_pipe_req_if.issue_tag, csr_pipe_req_if.wid, csr_we_s0, csr_pipe_req_if.csr_addr, csr_pipe_req_if.is_io, csr_read_data_qual, csr_updated_data}), + .out ({csr_pipe_rsp_if.valid, csr_pipe_rsp_if.issue_tag, wid_s1, csr_we_s1, csr_addr_s1, select_io_rsp, csr_read_data_s1, csr_updated_data_s1}) ); - genvar i; - for (i = 0; i < `NUM_THREADS; i++) begin - assign csr_pipe_commit_if.data[i] = (csr_addr_s1 == `CSR_LTID) ? i : + for (genvar i = 0; i < `NUM_THREADS; i++) begin + assign csr_pipe_rsp_if.data[i] = (csr_addr_s1 == `CSR_LTID) ? i : (csr_addr_s1 == `CSR_GTID) ? (csr_read_data_s1 * `NUM_THREADS + i) : csr_read_data_s1; end diff --git a/hw/rtl/VX_decode.v b/hw/rtl/VX_decode.v index 5c71df81..3b9bd6c1 100644 --- a/hw/rtl/VX_decode.v +++ b/hw/rtl/VX_decode.v @@ -19,7 +19,7 @@ module VX_decode #( wire [31:0] instr = ifetch_rsp_if.instr; reg [`ALU_BITS-1:0] alu_op; - reg [`BR_BITS-1:0] br_op; + reg [`BRU_BITS-1:0] br_op; reg [`LSU_BITS-1:0] lsu_op; reg [`CSR_BITS-1:0] csr_op; reg [`MUL_BITS-1:0] mul_op; @@ -100,27 +100,27 @@ module VX_decode #( wire is_br = (is_btype || is_jal || is_jalr || is_jals); always @(*) begin - br_op = `BR_EQ; + br_op = `BRU_OTHER; case (opcode) `INST_B: begin case (func3) - 3'h0: br_op = `BR_EQ; - 3'h1: br_op = `BR_NE; - 3'h4: br_op = `BR_LT; - 3'h5: br_op = `BR_GE; - 3'h6: br_op = `BR_LTU; - 3'h7: br_op = `BR_GEU; + 3'h0: br_op = `BRU_EQ; + 3'h1: br_op = `BRU_NE; + 3'h4: br_op = `BRU_LT; + 3'h5: br_op = `BRU_GE; + 3'h6: br_op = `BRU_LTU; + 3'h7: br_op = `BRU_GEU; default:; endcase end - `INST_JAL: br_op = `BR_JAL; - `INST_JALR: br_op = `BR_JALR; + `INST_JAL: br_op = `BRU_JAL; + `INST_JALR: br_op = `BRU_JALR; `INST_SYS: begin - if (is_jals && u_12 == 12'h000) br_op = `BR_ECALL; - if (is_jals && u_12 == 12'h001) br_op = `BR_EBREAK; - if (is_jals && u_12 == 12'h302) br_op = `BR_MRET; - if (is_jals && u_12 == 12'h102) br_op = `BR_SRET; - if (is_jals && u_12 == 12'h7B2) br_op = `BR_DRET; + if (is_jals && u_12 == 12'h000) br_op = `BRU_ECALL; + if (is_jals && u_12 == 12'h001) br_op = `BRU_EBREAK; + if (is_jals && u_12 == 12'h302) br_op = `BRU_MRET; + if (is_jals && u_12 == 12'h102) br_op = `BRU_SRET; + if (is_jals && u_12 == 12'h7B2) br_op = `BRU_DRET; end default:; endcase @@ -292,18 +292,17 @@ module VX_decode #( VX_decode_if decode_tmp_if(); - assign decode_tmp_if.valid = ifetch_rsp_if.valid; - assign decode_tmp_if.warp_num = ifetch_rsp_if.warp_num; - assign decode_tmp_if.thread_mask= ifetch_rsp_if.thread_mask; - assign decode_tmp_if.curr_PC = ifetch_rsp_if.curr_PC; - assign decode_tmp_if.next_PC = ifetch_rsp_if.curr_PC + 32'h4; + assign decode_tmp_if.valid = ifetch_rsp_if.valid; + assign decode_tmp_if.wid = ifetch_rsp_if.wid; + assign decode_tmp_if.thread_mask = ifetch_rsp_if.thread_mask; + assign decode_tmp_if.curr_PC = ifetch_rsp_if.curr_PC; assign decode_tmp_if.ex_type = is_lsu ? `EX_LSU : is_csr ? `EX_CSR : is_mul ? `EX_MUL : is_fpu ? `EX_FPU : is_gpu ? `EX_GPU : - is_br ? `EX_ALU : + is_br ? `EX_BRU : (is_rtype || is_itype || is_lui || is_auipc) ? `EX_ALU : `EX_NOP; @@ -312,7 +311,7 @@ module VX_decode #( is_mul ? `OP_BITS'(mul_op) : is_fpu ? `OP_BITS'(fpu_op) : is_gpu ? `OP_BITS'(gpu_op) : - is_br ? `OP_BITS'({1'b1, br_op}) : + is_br ? `OP_BITS'(br_op) : (is_rtype || is_itype || is_lui || is_auipc) ? `OP_BITS'(alu_op) : 0; @@ -347,28 +346,28 @@ module VX_decode #( is_csr ? 32'(u_12) : src2_imm; - assign decode_tmp_if.rs1_is_PC = is_auipc; + assign decode_tmp_if.rs1_is_PC = is_auipc || is_btype || is_jal || is_jals; assign decode_tmp_if.rs2_is_imm = is_itype || is_lui || is_auipc || is_csr_imm; assign decode_tmp_if.frm = func3; assign join_if.is_join = valid_in && is_gpu && (gpu_op == `GPU_JOIN); - assign join_if.warp_num = ifetch_rsp_if.warp_num; + assign join_if.wid = ifetch_rsp_if.wid; assign wstall_if.wstall = valid_in && (is_btype || is_jal || is_jalr || (is_gpu && (gpu_op == `GPU_TMC || gpu_op == `GPU_SPLIT || gpu_op == `GPU_BAR))); - assign wstall_if.warp_num = ifetch_rsp_if.warp_num; + assign wstall_if.wid = ifetch_rsp_if.wid; wire stall = ~decode_if.ready && decode_if.valid; VX_generic_register #( - .N(1 + `NW_BITS + `NUM_THREADS + 32 + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + `FRM_BITS + `NUM_REGS) + .N(1 + `NW_BITS + `NUM_THREADS + 32 + `NR_BITS + `NR_BITS + `NR_BITS + 32 + 1 + `EX_BITS + `OP_BITS + 1 + `NR_BITS + 1 + 1 + `FRM_BITS + `NUM_REGS) ) decode_reg ( .clk (clk), .reset (reset), .stall (stall), .flush (0), - .in ({decode_tmp_if.valid, decode_tmp_if.warp_num, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.next_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, decode_tmp_if.reg_use_mask}), - .out ({decode_if.valid, decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.next_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.frm, decode_if.reg_use_mask}) + .in ({decode_tmp_if.valid, decode_tmp_if.wid, decode_tmp_if.thread_mask, decode_tmp_if.curr_PC, decode_tmp_if.rd, decode_tmp_if.rs1, decode_tmp_if.rs2, decode_tmp_if.imm, decode_tmp_if.rs1_is_PC, decode_tmp_if.rs2_is_imm, decode_tmp_if.ex_type, decode_tmp_if.ex_op, decode_tmp_if.wb, decode_tmp_if.rs3, decode_tmp_if.use_rs3, decode_tmp_if.frm, decode_tmp_if.reg_use_mask}), + .out ({decode_if.valid, decode_if.wid, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.rs1, decode_if.rs2, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.rs3, decode_if.use_rs3, decode_if.frm, decode_if.reg_use_mask}) ); assign ifetch_rsp_if.ready = ~stall; @@ -376,7 +375,7 @@ module VX_decode #( `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (decode_tmp_if.valid && ~stall) begin - $write("%t: Core%0d-Decode: warp=%0d, PC=%0h, ex=", $time, CORE_ID, decode_tmp_if.warp_num, decode_tmp_if.curr_PC); + $write("%t: Core%0d-Decode: wid=%0d, PC=%0h, ex=", $time, CORE_ID, decode_tmp_if.wid, decode_tmp_if.curr_PC); print_ex_type(decode_tmp_if.ex_type); $write(", op="); print_ex_op(decode_tmp_if.ex_type, decode_tmp_if.ex_op); @@ -386,6 +385,7 @@ module VX_decode #( // trap unsupported instructions assert(~(~stall && (decode_tmp_if.ex_type == `EX_ALU) && `ALU_OP(decode_tmp_if.ex_op) == `ALU_OTHER)); + assert(~(~stall && (decode_tmp_if.ex_type == `EX_BRU) && `BRU_OP(decode_tmp_if.ex_op) == `BRU_OTHER)); assert(~(~stall && (decode_tmp_if.ex_type == `EX_CSR) && `CSR_OP(decode_tmp_if.ex_op) == `CSR_OTHER)); assert(~(~stall && (decode_tmp_if.ex_type == `EX_GPU) && `GPU_OP(decode_tmp_if.ex_op) == `GPU_OTHER)); end diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index 20e02bd0..f81b06ce 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -3,7 +3,6 @@ `include "VX_platform.vh" `include "VX_config.vh" -`include "VX_scope.vh" /////////////////////////////////////////////////////////////////////////////// @@ -38,8 +37,8 @@ /////////////////////////////////////////////////////////////////////////////// -`define LATENCY_IDIV 23 -`define LATENCY_IMUL 2 +`define LATENCY_IDIV 33 +`define LATENCY_IMUL 3 `define LATENCY_FDIV 16 `define LATENCY_FSQRT 10 @@ -87,72 +86,70 @@ `define BYTEEN_BITS 3 `define BYTEEN_TYPE(x) x[1:0] -/////////////////////////////////////////////////////////////////////////////// - -`define BR_EQ 4'h0 -`define BR_NE 4'h1 -`define BR_LT 4'h2 -`define BR_GE 4'h3 -`define BR_LTU 4'h4 -`define BR_GEU 4'h5 -`define BR_JAL 4'h6 -`define BR_JALR 4'h7 -`define BR_ECALL 4'h8 -`define BR_EBREAK 4'h9 -`define BR_MRET 4'hA -`define BR_SRET 4'hB -`define BR_DRET 4'hC -`define BR_NO 4'hF -`define BR_BITS 4 +`define FRM_RNE 3'b000 // round to nearest even +`define FRM_RTZ 3'b001 // round to zero +`define FRM_RDN 3'b010 // round to -inf +`define FRM_RUP 3'b011 // round to +inf +`define FRM_RMM 3'b100 // round to nearest max magnitude +`define FRM_DYN 3'b111 // dynamic mode +`define FRM_BITS 3 /////////////////////////////////////////////////////////////////////////////// `define EX_NOP 3'h0 `define EX_ALU 3'h1 -`define EX_LSU 3'h2 -`define EX_CSR 3'h3 -`define EX_MUL 3'h4 -`define EX_FPU 3'h5 -`define EX_GPU 3'h6 +`define EX_BRU 3'h2 +`define EX_LSU 3'h3 +`define EX_CSR 3'h4 +`define EX_MUL 3'h5 +`define EX_FPU 3'h6 +`define EX_GPU 3'h7 `define EX_BITS 3 -`define NUM_EXS 6 +`define NUM_EXS 7 `define NE_BITS `LOG2UP(`NUM_EXS) /////////////////////////////////////////////////////////////////////////////// `define OP_BITS 5 -`define ALU_ADD 5'h00 -`define ALU_SUB 5'h01 -`define ALU_SLL 5'h02 -`define ALU_SRL 5'h03 -`define ALU_SRA 5'h04 -`define ALU_SLT 5'h05 -`define ALU_SLTU 5'h06 -`define ALU_XOR 5'h07 -`define ALU_OR 5'h08 -`define ALU_AND 5'h09 -`define ALU_LUI 5'h0A -`define ALU_AUIPC 5'h0B -`define ALU_BEQ {1'b1, `BR_EQ} -`define ALU_BNE {1'b1, `BR_NE} -`define ALU_BLT {1'b1, `BR_LT} -`define ALU_BGE {1'b1, `BR_GE} -`define ALU_BLTU {1'b1, `BR_LTU} -`define ALU_BGEU {1'b1, `BR_GEU} -`define ALU_JAL {1'b1, `BR_JAL} -`define ALU_JALR {1'b1, `BR_JALR} -`define ALU_ECALL {1'b1, `BR_ECALL} -`define ALU_EBREAK {1'b1, `BR_EBREAK} -`define ALU_MRET {1'b1, `BR_MRET} -`define ALU_SRET {1'b1, `BR_SRET} -`define ALU_DRET {1'b1, `BR_DRET} -`define ALU_OTHER 5'h1F -`define ALU_BITS 5 +`define ALU_ADD 4'b0000 +`define ALU_SUB 4'b0001 +`define ALU_LUI 4'b0010 +`define ALU_AUIPC 4'b0011 +`define ALU_SLT 4'b0100 +`define ALU_SLTU 4'b0101 +`define ALU_SRL 4'b1000 +`define ALU_SRA 4'b1001 +`define ALU_AND 4'b1100 +`define ALU_OR 4'b1101 +`define ALU_XOR 4'b1110 +`define ALU_SLL 4'b1111 +`define ALU_OTHER 4'b0111 +`define ALU_BITS 4 `define ALU_OP(x) x[`ALU_BITS-1:0] -`define BR_OP(x) x[`BR_BITS-1:0] -`define IS_BR_OP(x) x[4] +`define ALU_OP_CLASS(x) x[3:2] + +`define BRU_EQ 4'b0000 +`define BRU_NE 4'b0001 +`define BRU_LTU 4'b0010 +`define BRU_GEU 4'b0011 +`define BRU_LT 4'b0110 +`define BRU_GE 4'b0111 +`define BRU_JAL 4'b1000 +`define BRU_JALR 4'b1001 +`define BRU_ECALL 4'b1010 +`define BRU_EBREAK 4'b1011 +`define BRU_MRET 4'b1100 +`define BRU_SRET 4'b1101 +`define BRU_DRET 4'b1110 +`define BRU_OTHER 4'b1111 +`define BRU_BITS 4 +`define BRU_OP(x) x[`BRU_BITS-1:0] +`define BRU_NEG(x) x[0] +`define BRU_LESS(x) x[1] +`define BRU_SIGNED(x) x[2] +`define BRU_STATIC(x) x[3] `define LSU_LB {1'b0, `BYTEEN_SB} `define LSU_LH {1'b0, `BYTEEN_SH} @@ -213,14 +210,6 @@ `define FPU_BITS 5 `define FPU_OP(x) x[`FPU_BITS-1:0] -`define FRM_RNE 3'b000 // round to nearest even -`define FRM_RTZ 3'b001 // round to zero -`define FRM_RDN 3'b010 // round to -inf -`define FRM_RUP 3'b011 // round to +inf -`define FRM_RMM 3'b100 // round to nearest max magnitude -`define FRM_DYN 3'b111 // dynamic mode -`define FRM_BITS 3 - `define GPU_TMC 3'h0 `define GPU_WSPAWN 3'h1 `define GPU_SPLIT 3'h2 @@ -273,7 +262,7 @@ /////////////////////////////////////////////////////////////////////////////// -`ifdef DBG_CORE_REQ_INFO // pc, wb, rd, warp_num +`ifdef DBG_CORE_REQ_INFO // pc, wb, rd, wid `define DEBUG_CORE_REQ_MDATA_WIDTH (32 + 1 + `NR_BITS + `NW_BITS) `else `define DEBUG_CORE_REQ_MDATA_WIDTH 0 @@ -421,34 +410,6 @@ `define DRAM_TO_BYTE_ADDR(x) {x, (32-$bits(x))'(0)} -/////////////////////////////////////////////////////////////////////////////// - -typedef struct packed { - logic [`NW_BITS-1:0] warp_num; - logic [`NUM_THREADS-1:0] thread_mask; - logic [31:0] curr_PC; - logic [`NR_BITS-1:0] rd; - logic wb; -} issue_data_t; - -typedef struct packed { - logic is_normal; - logic is_zero; - logic is_subnormal; - logic is_inf; - logic is_nan; - logic is_signaling; - logic is_quiet; -} fp_type_t; - -typedef struct packed { - logic NV; // Invalid - logic DZ; // Divide by zero - logic OF; // Overflow - logic UF; // Underflow - logic NX; // Inexact -} fflags_t; - -`define FFG_BITS $bits(fflags_t) +`include "VX_types.vh" `endif diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 81c76419..78d2436f 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -22,6 +22,7 @@ module VX_execute #( // inputs VX_alu_req_if alu_req_if, + VX_bru_req_if bru_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, @@ -32,6 +33,7 @@ module VX_execute #( VX_branch_ctl_if branch_ctl_if, VX_warp_ctl_if warp_ctl_if, VX_exu_to_cmt_if alu_commit_if, + VX_exu_to_cmt_if bru_commit_if, VX_exu_to_cmt_if lsu_commit_if, VX_exu_to_cmt_if csr_commit_if, VX_exu_to_cmt_if mul_commit_if, @@ -49,10 +51,19 @@ module VX_execute #( .clk (clk), .reset (reset), .alu_req_if (alu_req_if), - .branch_ctl_if (branch_ctl_if), .alu_commit_if (alu_commit_if) ); + VX_bru_unit #( + .CORE_ID(CORE_ID) + ) bru_unit ( + .clk (clk), + .reset (reset), + .bru_req_if (bru_req_if), + .branch_ctl_if (branch_ctl_if), + .bru_commit_if (bru_commit_if) + ); + VX_lsu_unit #( .CORE_ID(CORE_ID) ) lsu_unit ( @@ -116,29 +127,33 @@ module VX_execute #( VX_gpu_unit #( .CORE_ID(CORE_ID) ) gpu_unit ( + .clk (clk), + .reset (reset), .gpu_req_if (gpu_req_if), .warp_ctl_if (warp_ctl_if), .gpu_commit_if (gpu_commit_if) ); - assign ebreak = alu_req_if.valid && (alu_req_if.alu_op == `ALU_EBREAK || alu_req_if.alu_op == `ALU_ECALL); + assign ebreak = bru_req_if.valid + && (bru_req_if.op == `BRU_EBREAK + || bru_req_if.op == `BRU_ECALL); `SCOPE_ASSIGN (scope_decode_valid, decode_if.valid); - `SCOPE_ASSIGN (scope_decode_warp_num, decode_if.warp_num); + `SCOPE_ASSIGN (scope_decode_wid, decode_if.wid); `SCOPE_ASSIGN (scope_decode_curr_PC, decode_if.curr_PC); `SCOPE_ASSIGN (scope_decode_is_jal, decode_if.is_jal); `SCOPE_ASSIGN (scope_decode_rs1, decode_if.rs1); `SCOPE_ASSIGN (scope_decode_rs2, decode_if.rs2); `SCOPE_ASSIGN (scope_execute_valid, alu_req_if.valid); - `SCOPE_ASSIGN (scope_execute_warp_num, alu_req_if.warp_num); + `SCOPE_ASSIGN (scope_execute_wid, alu_req_if.wid); `SCOPE_ASSIGN (scope_execute_curr_PC, alu_req_if.curr_PC); `SCOPE_ASSIGN (scope_execute_rd, alu_req_if.rd); `SCOPE_ASSIGN (scope_execute_a, alu_req_if.rs1_data); `SCOPE_ASSIGN (scope_execute_b, alu_req_if.rs2_data); `SCOPE_ASSIGN (scope_writeback_valid, writeback_if.valid); - `SCOPE_ASSIGN (scope_writeback_warp_num, writeback_if.warp_num); + `SCOPE_ASSIGN (scope_writeback_wid, writeback_if.wid); `SCOPE_ASSIGN (scope_writeback_curr_PC, writeback_if.curr_PC); `SCOPE_ASSIGN (scope_writeback_wb, writeback_if.wb); `SCOPE_ASSIGN (scope_writeback_rd, writeback_if.rd); diff --git a/hw/rtl/VX_fpu_unit.v b/hw/rtl/VX_fpu_unit.v index cc8de7dc..a255d2cc 100644 --- a/hw/rtl/VX_fpu_unit.v +++ b/hw/rtl/VX_fpu_unit.v @@ -14,9 +14,27 @@ module VX_fpu_unit #( // outputs VX_fpu_to_cmt_if fpu_commit_if ); - - assign csr_to_fpu_if.warp_num = fpu_req_if.warp_num; - wire [`FRM_BITS-1:0] frm = (fpu_req_if.frm == `FRM_DYN) ? csr_to_fpu_if.frm : fpu_req_if.frm; + VX_fpu_req_if fpu_req_tmp_if(); + + // resolve dynamic FRM + wire [`FRM_BITS-1:0] frm, frm_tmp; + assign csr_to_fpu_if.wid = fpu_req_if.wid; + assign frm = (fpu_req_if.frm == `FRM_DYN) ? csr_to_fpu_if.frm : fpu_req_if.frm; + + // use a skid buffer since fpcore has realtime backpressure + VX_elastic_buffer #( + .DATAW (`ISTAG_BITS + `NW_BITS + 32 + `FPU_BITS + `FRM_BITS + (3 * `NUM_THREADS * 32)), + .SIZE (0) + ) input_buffer ( + .clk (clk), + .reset (reset), + .valid_in (fpu_req_if.valid), + .ready_in (fpu_req_if.ready), + .data_in ({fpu_req_if.issue_tag, fpu_req_if.wid, fpu_req_if.curr_PC, fpu_req_if.op, frm, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data}), + .data_out ({fpu_req_tmp_if.issue_tag, fpu_req_tmp_if.wid, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.op, frm_tmp, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data, fpu_req_tmp_if.rs3_data}), + .ready_out (fpu_req_tmp_if.ready), + .valid_out (fpu_req_tmp_if.valid) + ); `ifdef SYNTHESIS @@ -24,17 +42,17 @@ module VX_fpu_unit #( .clk (clk), .reset (reset), - .valid_in (fpu_req_if.valid), - .ready_in (fpu_req_if.ready), + .valid_in (fpu_req_tmp_if.valid), + .ready_in (fpu_req_tmp_if.ready), - .tag_in (fpu_req_if.issue_tag), + .tag_in (fpu_req_tmp_if.issue_tag), - .op (fpu_req_if.fpu_op), - .frm (frm), + .op (fpu_req_tmp_if.op), + .frm (frm_tmp), - .dataa (fpu_req_if.rs1_data), - .datab (fpu_req_if.rs2_data), - .datac (fpu_req_if.rs3_data), + .dataa (fpu_req_tmp_if.rs1_data), + .datab (fpu_req_tmp_if.rs2_data), + .datac (fpu_req_tmp_if.rs3_data), .result (fpu_commit_if.data), .has_fflags (fpu_commit_if.has_fflags), @@ -42,7 +60,7 @@ module VX_fpu_unit #( .tag_out (fpu_commit_if.issue_tag), - .ready_out (fpu_commit_if.ready), + .ready_out (1'b1), .valid_out (fpu_commit_if.valid) ); @@ -57,17 +75,17 @@ module VX_fpu_unit #( .clk (clk), .reset (reset), - .valid_in (fpu_req_if.valid), - .ready_in (fpu_req_if.ready), + .valid_in (fpu_req_tmp_if.valid), + .ready_in (fpu_req_tmp_if.ready), - .tag_in (fpu_req_if.issue_tag), + .tag_in (fpu_req_tmp_if.issue_tag), - .op (fpu_req_if.fpu_op), - .frm (frm), + .op (fpu_req_tmp_if.op), + .frm (frm_tmp), - .dataa (fpu_req_if.rs1_data), - .datab (fpu_req_if.rs2_data), - .datac (fpu_req_if.rs3_data), + .dataa (fpu_req_tmp_if.rs1_data), + .datab (fpu_req_tmp_if.rs2_data), + .datac (fpu_req_tmp_if.rs3_data), .result (fpu_commit_if.data), .has_fflags (fpu_commit_if.has_fflags), @@ -75,7 +93,7 @@ module VX_fpu_unit #( .tag_out (fpu_commit_if.issue_tag), - .ready_out (fpu_commit_if.ready), + .ready_out (1'b1), .valid_out (fpu_commit_if.valid) ); diff --git a/hw/rtl/VX_gpr_fp_ctrl.v b/hw/rtl/VX_gpr_fp_ctrl.v index 0e9dbe99..ff9eea79 100644 --- a/hw/rtl/VX_gpr_fp_ctrl.v +++ b/hw/rtl/VX_gpr_fp_ctrl.v @@ -10,40 +10,43 @@ module VX_gpr_fp_ctrl ( input wire [`NUM_THREADS-1:0][31:0] rs2_data, // outputs - output wire [`NW_BITS+`NR_BITS-1:0] raddr1, - + output wire [`NW_BITS+`NR_BITS-1:0] raddr1, VX_gpr_read_if gpr_read_if ); - reg [`NUM_THREADS-1:0][31:0] tmp_rs1_data; + reg [`NUM_THREADS-1:0][31:0] rs1_tmp_data, rs2_tmp_data, rs3_tmp_data; reg read_rs3; wire rs3_delay = gpr_read_if.valid && gpr_read_if.use_rs3 && ~read_rs3; - wire read_fire = gpr_read_if.valid && read_rs3; always @(posedge clk) begin if (reset) begin read_rs3 <= 0; - end else if (rs3_delay) begin - read_rs3 <= 1; - end else if (read_fire) begin - read_rs3 <= 0; - end + end else begin + if (rs3_delay) begin + read_rs3 <= 1; + end else if (read_fire) begin + read_rs3 <= 0; + end + end end // backup original rs1 data always @(posedge clk) begin - if (rs3_delay) begin - tmp_rs1_data <= rs1_data; + if (~gpr_read_if.use_rs3 || rs3_delay) begin + rs1_tmp_data <= rs1_data; end + rs2_tmp_data <= rs2_data; + rs3_tmp_data <= rs1_data; end // outputs - assign raddr1 = {gpr_read_if.warp_num, (read_rs3 ? gpr_read_if.rs3 : gpr_read_if.rs1)}; + wire [`NR_BITS-1:0] rs1 = read_rs3 ? gpr_read_if.rs3 : gpr_read_if.rs1; + assign raddr1 = {gpr_read_if.wid, rs1}; assign gpr_read_if.ready = ~rs3_delay; - assign gpr_read_if.rs1_data = gpr_read_if.use_rs3 ? tmp_rs1_data : rs1_data; - assign gpr_read_if.rs2_data = rs2_data; - assign gpr_read_if.rs3_data = rs1_data; + assign gpr_read_if.rs1_data = rs1_tmp_data; + assign gpr_read_if.rs2_data = rs2_tmp_data; + assign gpr_read_if.rs3_data = rs3_tmp_data; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_gpr_ram.v b/hw/rtl/VX_gpr_ram.v index bceb7d01..5299e5ce 100644 --- a/hw/rtl/VX_gpr_ram.v +++ b/hw/rtl/VX_gpr_ram.v @@ -20,12 +20,7 @@ module VX_gpr_ram ( for (integer i = 0; i < `NUM_REGS; i++) begin if (i == 0) begin ram[j * `NUM_REGS + i] = {`NUM_THREADS{32'h00000000}}; // set r0 = 0 - end - `ifndef SYNTHESIS - else begin - ram[j * `NUM_REGS + i] = {`NUM_THREADS{32'hdeadbeef}}; end - `endif end end end @@ -48,8 +43,7 @@ module VX_gpr_ram ( wire [`NUM_THREADS-1:0][31:0] write_bit_mask; - integer i; - for (i = 0; i < `NUM_THREADS; i++) begin + for (integer i = 0; i < `NUM_THREADS; i++) begin assign write_bit_mask[i] = {32{~we[i]}}; end @@ -61,9 +55,8 @@ module VX_gpr_ram ( wire [`NUM_THREADS-1:0][31:0] tmp_b; `ifndef SYNTHESIS - integer j; - for (i = 0; i < `NUM_THREADS; i++) begin - for (j = 0; j < 32; j++) begin + for (integer i = 0; i < `NUM_THREADS; i++) begin + for (integer j = 0; j < 32; j++) begin assign rs1_data[i][j] = ((tmp_a[i][j] === 1'dx) || cena_1) ? 1'b0 : tmp_a[i][j]; assign rs2_data[i][j] = ((tmp_b[i][j] === 1'dx) || cena_2) ? 1'b0 : tmp_b[i][j]; end @@ -72,7 +65,7 @@ module VX_gpr_ram ( assign rs1_data = tmp_a; assign rs2_data = tmp_b; `endif - for (i = 0; i < 'NT; i=i+4) begin + for (integer i = 0; i < 'NT; i=i+4) begin `IGNORE_WARNINGS_BEGIN rf2_32x128_wm1 first_ram ( .CENYA(), diff --git a/hw/rtl/VX_gpr_stage.v b/hw/rtl/VX_gpr_stage.v index 8a05137f..bcf55b56 100644 --- a/hw/rtl/VX_gpr_stage.v +++ b/hw/rtl/VX_gpr_stage.v @@ -21,10 +21,10 @@ module VX_gpr_stage #( VX_gpr_ram gpr_ram ( .clk (clk), .we ({`NUM_THREADS{writeback_if.valid}} & writeback_if.thread_mask), - .waddr ({writeback_if.warp_num, writeback_if.rd}), + .waddr ({writeback_if.wid, writeback_if.rd}), .wdata (writeback_if.data), .rs1 (raddr1), - .rs2 ({gpr_read_if.warp_num, gpr_read_if.rs2}), + .rs2 ({gpr_read_if.wid, gpr_read_if.rs2}), .rs1_data (rs1_data), .rs2_data (rs2_data) ); @@ -39,9 +39,16 @@ module VX_gpr_stage #( .gpr_read_if(gpr_read_if) ); `else - assign raddr1 = {gpr_read_if.warp_num, gpr_read_if.rs1}; - assign gpr_read_if.rs1_data = rs1_data; - assign gpr_read_if.rs2_data = rs2_data; + reg [`NUM_THREADS-1:0][31:0] rs1_tmp_data, rs2_tmp_data; + + always @(posedge clk) begin + rs1_tmp_data <= rs1_data; + rs2_tmp_data <= rs2_data; + end + + assign raddr1 = {gpr_read_if.wid, gpr_read_if.rs1}; + assign gpr_read_if.rs1_data = rs1_tmp_data; + assign gpr_read_if.rs2_data = rs2_tmp_data; assign gpr_read_if.rs3_data = 0; assign gpr_read_if.ready = 1; @@ -53,6 +60,4 @@ module VX_gpr_stage #( `UNUSED_VAR (rs3); `endif - assign writeback_if.ready = 1'b1; // writes are stall-free - endmodule diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index bde5d1c9..8c85f267 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -3,6 +3,9 @@ module VX_gpu_unit #( parameter CORE_ID = 0 ) ( + input wire clk, + input wire reset, + // Input VX_gpu_req_if gpu_req_if, @@ -10,74 +13,74 @@ module VX_gpu_unit #( VX_warp_ctl_if warp_ctl_if, VX_exu_to_cmt_if gpu_commit_if ); + gpu_tmc_t tmc; + gpu_wspawn_t wspawn; + gpu_barrier_t barrier; + gpu_split_t split; - wire is_wspawn = (gpu_req_if.gpu_op == `GPU_WSPAWN); - wire is_tmc = (gpu_req_if.gpu_op == `GPU_TMC); - wire is_split = (gpu_req_if.gpu_op == `GPU_SPLIT); - wire is_bar = (gpu_req_if.gpu_op == `GPU_BAR); + wire is_wspawn = (gpu_req_if.op == `GPU_WSPAWN); + wire is_tmc = (gpu_req_if.op == `GPU_TMC); + wire is_split = (gpu_req_if.op == `GPU_SPLIT); + wire is_bar = (gpu_req_if.op == `GPU_BAR); - wire gpu_req_fire = gpu_req_if.valid && gpu_commit_if.ready; - - assign warp_ctl_if.warp_num = gpu_req_if.warp_num; + wire gpu_req_fire = gpu_req_if.valid; // tmc - genvar i; - wire [`NUM_THREADS-1:0] tmc_new_mask; - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin assign tmc_new_mask[i] = (i < gpu_req_if.rs1_data[0]); end - assign warp_ctl_if.change_mask = is_tmc && gpu_req_fire; - assign warp_ctl_if.thread_mask = tmc_new_mask; - - // barrier - - assign warp_ctl_if.is_barrier = is_bar && gpu_req_fire; - assign warp_ctl_if.barrier_id = gpu_req_if.rs1_data[0][`NB_BITS-1:0]; - assign warp_ctl_if.barrier_num_warps = (`NW_BITS+1)'(gpu_req_if.rs2_data - 1); + assign tmc.valid = gpu_req_fire && is_tmc; + assign tmc.thread_mask = tmc_new_mask; // wspawn wire [31:0] wspawn_pc = gpu_req_if.rs2_data; wire [`NUM_WARPS-1:0] wspawn_wmask; - for (i = 0; i < `NUM_WARPS; i++) begin + for (genvar i = 0; i < `NUM_WARPS; i++) begin assign wspawn_wmask[i] = (i < gpu_req_if.rs1_data[0]); end - assign warp_ctl_if.wspawn = is_wspawn && gpu_req_fire; - assign warp_ctl_if.wspawn_pc = wspawn_pc; - assign warp_ctl_if.wspawn_wmask = wspawn_wmask; + assign wspawn.valid = gpu_req_fire && is_wspawn; + assign wspawn.wmask = wspawn_wmask; + assign wspawn.pc = wspawn_pc; // split - wire[`NUM_THREADS-1:0] split_new_use_mask; - wire[`NUM_THREADS-1:0] split_new_later_mask; + wire [`NUM_THREADS-1:0] split_then_mask; + wire [`NUM_THREADS-1:0] split_else_mask; - for (i = 0; i < `NUM_THREADS; i++) begin - wire curr_bool = (gpu_req_if.rs1_data[i] == 32'b1); - assign split_new_use_mask[i] = gpu_req_if.thread_mask[i] & (curr_bool); - assign split_new_later_mask[i] = gpu_req_if.thread_mask[i] & (!curr_bool); + for (genvar i = 0; i < `NUM_THREADS; i++) begin + wire taken = gpu_req_if.rs1_data[i][0]; + assign split_then_mask[i] = gpu_req_if.thread_mask[i] & taken; + assign split_else_mask[i] = gpu_req_if.thread_mask[i] & ~taken; end - wire [`NT_BITS:0] num_valids; + assign split.valid = gpu_req_fire && is_split; + assign split.diverged = (| split_then_mask) && (| split_else_mask); + assign split.then_mask = split_then_mask; + assign split.else_mask = split_else_mask; + assign split.pc = gpu_req_if.curr_PC + 4; - VX_countones #( - .N(`NUM_THREADS) - ) valids_counter ( - .valids(gpu_req_if.thread_mask), - .count (num_valids) - ); + // barrier - assign warp_ctl_if.is_split = is_split && (num_valids > 1) && gpu_req_fire; - assign warp_ctl_if.do_split = (split_new_use_mask != 0) && (split_new_use_mask != {`NUM_THREADS{1'b1}}); - assign warp_ctl_if.split_new_mask = split_new_use_mask; - assign warp_ctl_if.split_later_mask = split_new_later_mask; - assign warp_ctl_if.split_save_pc = gpu_req_if.next_PC; + assign barrier.valid = is_bar && gpu_req_fire; + assign barrier.id = gpu_req_if.rs1_data[0][`NB_BITS-1:0]; + assign barrier.num_warps = (`NW_BITS+1)'(gpu_req_if.rs2_data - 1); - // commit - assign gpu_commit_if.valid = gpu_req_if.valid; - assign gpu_commit_if.issue_tag = gpu_req_if.issue_tag; - assign gpu_commit_if.data = 0; - assign gpu_req_if.ready = gpu_commit_if.ready; + // output + + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + $bits(gpu_tmc_t) + $bits(gpu_wspawn_t) + $bits(gpu_split_t) + $bits(gpu_barrier_t)) + ) gpu_reg ( + .clk (clk), + .reset (reset), + .stall (0), + .flush (0), + .in ({gpu_req_if.valid, gpu_req_if.issue_tag, gpu_req_if.wid, tmc, wspawn, split, barrier}), + .out ({gpu_commit_if.valid, gpu_commit_if.issue_tag, warp_ctl_if.wid, warp_ctl_if.tmc, warp_ctl_if.wspawn, warp_ctl_if.split, warp_ctl_if.barrier}) + ); + + assign gpu_req_if.ready = 1'b1; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_icache_stage.v b/hw/rtl/VX_icache_stage.v index 276a24a2..9af23468 100644 --- a/hw/rtl/VX_icache_stage.v +++ b/hw/rtl/VX_icache_stage.v @@ -25,7 +25,7 @@ module VX_icache_stage #( wire icache_req_fire = icache_req_if.valid && icache_req_if.ready; - wire [`NW_BITS-1:0] req_tag = ifetch_req_if.warp_num; + wire [`NW_BITS-1:0] req_tag = ifetch_req_if.wid; wire [`NW_BITS-1:0] rsp_tag = icache_rsp_if.tag[0][`NW_BITS-1:0]; always @(posedge clk) begin @@ -46,13 +46,13 @@ module VX_icache_stage #( assign ifetch_req_if.ready = icache_req_if.ready; `ifdef DBG_CORE_REQ_INFO - assign icache_req_if.tag = {ifetch_req_if.curr_PC, 1'b0, `NR_BITS'(0), ifetch_req_if.warp_num, req_tag}; + assign icache_req_if.tag = {ifetch_req_if.curr_PC, 1'b0, `NR_BITS'(0), ifetch_req_if.wid, req_tag}; `else assign icache_req_if.tag = req_tag; `endif assign ifetch_rsp_if.valid = icache_rsp_if.valid; - assign ifetch_rsp_if.warp_num = rsp_tag; + assign ifetch_rsp_if.wid = rsp_tag; assign ifetch_rsp_if.thread_mask = rsp_thread_mask_buf[rsp_tag]; assign ifetch_rsp_if.curr_PC = rsp_curr_PC_buf[rsp_tag]; assign ifetch_rsp_if.instr = icache_rsp_if.data[0]; @@ -61,7 +61,7 @@ module VX_icache_stage #( assign icache_rsp_if.ready = ifetch_rsp_if.ready; `SCOPE_ASSIGN (scope_icache_req_valid, icache_req_if.valid); - `SCOPE_ASSIGN (scope_icache_req_warp_num, ifetch_req_if.warp_num); + `SCOPE_ASSIGN (scope_icache_req_wid, ifetch_req_if.wid); `SCOPE_ASSIGN (scope_icache_req_addr, {icache_req_if.addr, 2'b0}); `SCOPE_ASSIGN (scope_icache_req_tag, icache_req_if.tag); `SCOPE_ASSIGN (scope_icache_req_ready, icache_req_if.ready); @@ -74,10 +74,10 @@ module VX_icache_stage #( `ifdef DBG_PRINT_CORE_ICACHE always @(posedge clk) begin if (icache_req_if.valid && icache_req_if.ready) begin - $display("%t: I$%0d req: warp=%0d, PC=%0h", $time, CORE_ID, ifetch_req_if.warp_num, ifetch_req_if.curr_PC); + $display("%t: I$%0d req: wid=%0d, PC=%0h", $time, CORE_ID, ifetch_req_if.wid, ifetch_req_if.curr_PC); end if (icache_rsp_if.valid && icache_rsp_if.ready) begin - $display("%t: I$%0d rsp: warp=%0d, PC=%0h, instr=%0h", $time, CORE_ID, ifetch_rsp_if.warp_num, ifetch_rsp_if.curr_PC, ifetch_rsp_if.instr); + $display("%t: I$%0d rsp: wid=%0d, PC=%0h, instr=%0h", $time, CORE_ID, ifetch_rsp_if.wid, ifetch_rsp_if.curr_PC, ifetch_rsp_if.instr); end end `endif diff --git a/hw/rtl/VX_ipdom_stack.v b/hw/rtl/VX_ipdom_stack.v index d12f7d98..23ea2745 100644 --- a/hw/rtl/VX_ipdom_stack.v +++ b/hw/rtl/VX_ipdom_stack.v @@ -26,16 +26,18 @@ module VX_ipdom_stack #( always @(posedge clk) begin if (reset) begin wr_ptr <= 0; - end else if (push) begin - stack_1[wr_ptr] <= q1; - stack_2[wr_ptr] <= q2; - is_part[wr_ptr] <= 0; - rd_ptr <= wr_ptr; - wr_ptr <= wr_ptr + 1; - end else if (pop) begin - wr_ptr <= wr_ptr - DEPTH'(is_part[rd_ptr]); - rd_ptr <= rd_ptr - DEPTH'(is_part[rd_ptr]); - is_part[rd_ptr] <= 1; + end else begin + if (push) begin + stack_1[wr_ptr] <= q1; + stack_2[wr_ptr] <= q2; + is_part[wr_ptr] <= 0; + rd_ptr <= wr_ptr; + wr_ptr <= wr_ptr + 1; + end else if (pop) begin + wr_ptr <= wr_ptr - DEPTH'(is_part[rd_ptr]); + rd_ptr <= rd_ptr - DEPTH'(is_part[rd_ptr]); + is_part[rd_ptr] <= 1; + end end end diff --git a/hw/rtl/VX_issue.v b/hw/rtl/VX_issue.v index 295434cd..6dcc1f7e 100644 --- a/hw/rtl/VX_issue.v +++ b/hw/rtl/VX_issue.v @@ -11,6 +11,7 @@ module VX_issue #( VX_cmt_to_issue_if cmt_to_issue_if, VX_alu_req_if alu_req_if, + VX_bru_req_if bru_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, @@ -23,13 +24,14 @@ module VX_issue #( VX_gpr_read_if gpr_read_if(); assign gpr_read_if.valid = decode_if.valid && ~schedule_delay; - assign gpr_read_if.warp_num = decode_if.warp_num; + assign gpr_read_if.wid = decode_if.wid; assign gpr_read_if.rs1 = decode_if.rs1; assign gpr_read_if.rs2 = decode_if.rs2; assign gpr_read_if.rs3 = decode_if.rs3; assign gpr_read_if.use_rs3 = decode_if.use_rs3; wire ex_busy = (~alu_req_if.ready && (decode_if.ex_type == `EX_ALU)) + || (~bru_req_if.ready && (decode_if.ex_type == `EX_BRU)) || (~lsu_req_if.ready && (decode_if.ex_type == `EX_LSU)) || (~csr_req_if.ready && (decode_if.ex_type == `EX_CSR)) `ifdef EXT_M_ENABLE @@ -40,9 +42,9 @@ module VX_issue #( `endif || (~gpu_req_if.ready && (decode_if.ex_type == `EX_GPU)); - VX_scheduler #( + VX_scoreboard #( .CORE_ID(CORE_ID) - ) scheduler ( + ) scoreboard ( .clk (clk), .reset (reset), .decode_if (decode_if), @@ -62,117 +64,71 @@ module VX_issue #( .gpr_read_if (gpr_read_if) ); - VX_alu_req_if alu_req_tmp_if(); - VX_lsu_req_if lsu_req_tmp_if(); - VX_csr_req_if csr_req_tmp_if(); - VX_mul_req_if mul_req_tmp_if(); - VX_fpu_req_if fpu_req_tmp_if(); - VX_gpu_req_if gpu_req_tmp_if(); + VX_issue_if issue_if(); - VX_issue_demux issue_demux ( - .decode_if (decode_if), - .gpr_read_if(gpr_read_if), - .issue_tag (issue_tag), - .alu_req_if (alu_req_tmp_if), - .lsu_req_if (lsu_req_tmp_if), - .csr_req_if (csr_req_tmp_if), - .mul_req_if (mul_req_tmp_if), - .fpu_req_if (fpu_req_tmp_if), - .gpu_req_if (gpu_req_tmp_if) - ); + assign issue_if.rs1_data = gpr_read_if.rs1_data; + assign issue_if.rs2_data = gpr_read_if.rs2_data; + assign issue_if.rs3_data = gpr_read_if.rs3_data; - wire stall = schedule_delay || ~gpr_read_if.ready; - assign decode_if.ready = ~stall; + wire [`NT_BITS-1:0] tid; + VX_priority_encoder #( + .N(`NUM_THREADS) + ) sel_src ( + .data_in (decode_if.thread_mask), + .data_out (tid), + `UNUSED_PIN (valid_out) + ); + + wire stall = schedule_delay || ~gpr_read_if.ready; + wire flush = stall; // clear output on stall + + VX_generic_register #( + .N(1 + `ISTAG_BITS + `NW_BITS + `NUM_THREADS + 32 + `NR_BITS + `NR_BITS + 32 + 1 + 1 + `EX_BITS + `OP_BITS + 1 + `FRM_BITS + `NT_BITS) + ) issue_reg ( + .clk (clk), + .reset (reset), + .stall (stall), + .flush (flush), + .in ({decode_if.valid, issue_tag, decode_if.wid, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.rs1, decode_if.imm, decode_if.rs1_is_PC, decode_if.rs2_is_imm, decode_if.ex_type, decode_if.ex_op, decode_if.wb, decode_if.frm, tid}), + .out ({issue_if.valid, issue_if.issue_tag, issue_if.wid, issue_if.thread_mask, issue_if.curr_PC, issue_if.rd, issue_if.rs1, issue_if.imm, issue_if.rs1_is_PC, issue_if.rs2_is_imm, issue_if.ex_type, issue_if.ex_op, issue_if.wb, issue_if.frm, issue_if.tid}) + ); + + assign decode_if.ready = issue_if.ready; + assign issue_if.ready = ~stall; - VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `ALU_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + 32 + 32) - ) alu_reg ( - .clk (clk), - .reset (reset), - .stall (~alu_req_if.ready), - .flush (stall && alu_req_if.ready), - .in ({alu_req_tmp_if.valid, alu_req_tmp_if.issue_tag, alu_req_tmp_if.warp_num, alu_req_tmp_if.curr_PC, alu_req_tmp_if.thread_mask, alu_req_tmp_if.alu_op, alu_req_tmp_if.rs1_data, alu_req_tmp_if.rs2_data, alu_req_tmp_if.offset, alu_req_tmp_if.next_PC}), - .out ({alu_req_if.valid, alu_req_if.issue_tag, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.thread_mask, alu_req_if.alu_op, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC}) - ); - - VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + 1 + `BYTEEN_BITS + (`NUM_THREADS * 32) + 32 + (`NUM_THREADS * 32) + `NR_BITS + 1) - ) lsu_reg ( - .clk (clk), - .reset (reset), - .stall (~lsu_req_if.ready), - .flush (stall && lsu_req_if.ready), - .in ({lsu_req_tmp_if.valid, lsu_req_tmp_if.issue_tag, lsu_req_tmp_if.warp_num, lsu_req_tmp_if.curr_PC, lsu_req_tmp_if.thread_mask, lsu_req_tmp_if.rw, lsu_req_tmp_if.byteen, lsu_req_tmp_if.base_addr, lsu_req_tmp_if.offset, lsu_req_tmp_if.store_data, lsu_req_tmp_if.rd, lsu_req_tmp_if.wb}), - .out ({lsu_req_if.valid, lsu_req_if.issue_tag, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.thread_mask, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data, lsu_req_if.rd, lsu_req_if.wb}) - ); - - VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `CSR_BITS + `CSR_ADDR_BITS + 32 + 1) - ) csr_reg ( - .clk (clk), - .reset (reset), - .stall (~csr_req_if.ready), - .flush (stall && csr_req_if.ready), - .in ({csr_req_tmp_if.valid, csr_req_tmp_if.issue_tag, csr_req_tmp_if.warp_num, csr_req_tmp_if.curr_PC, csr_req_tmp_if.thread_mask, csr_req_tmp_if.csr_op, csr_req_tmp_if.csr_addr, csr_req_tmp_if.csr_mask, csr_req_tmp_if.is_io}), - .out ({csr_req_if.valid, csr_req_if.issue_tag, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.thread_mask, csr_req_if.csr_op, csr_req_if.csr_addr, csr_req_if.csr_mask, csr_req_if.is_io}) - ); - -`ifdef EXT_M_ENABLE - VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `MUL_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) - ) mul_reg ( - .clk (clk), - .reset (reset), - .stall (~mul_req_if.ready), - .flush (stall && mul_req_if.ready), - .in ({mul_req_tmp_if.valid, mul_req_tmp_if.issue_tag, mul_req_tmp_if.warp_num, mul_req_tmp_if.curr_PC, mul_req_tmp_if.thread_mask, mul_req_tmp_if.mul_op, mul_req_tmp_if.rs1_data, mul_req_tmp_if.rs2_data}), - .out ({mul_req_if.valid, mul_req_if.issue_tag, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.thread_mask, mul_req_if.mul_op, mul_req_if.rs1_data, mul_req_if.rs2_data}) - ); -`endif - -`ifdef EXT_F_ENABLE - VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `FPU_BITS + `FRM_BITS + (`NUM_THREADS * 32) + (`NUM_THREADS * 32) + (`NUM_THREADS * 32)) - ) fpu_reg ( - .clk (clk), - .reset (reset), - .stall (~fpu_req_if.ready), - .flush (stall && fpu_req_if.ready), - .in ({fpu_req_tmp_if.valid, fpu_req_tmp_if.issue_tag, fpu_req_tmp_if.warp_num, fpu_req_tmp_if.curr_PC, fpu_req_tmp_if.thread_mask, fpu_req_tmp_if.fpu_op, fpu_req_tmp_if.frm, fpu_req_tmp_if.rs1_data, fpu_req_tmp_if.rs2_data, fpu_req_tmp_if.rs3_data}), - .out ({fpu_req_if.valid, fpu_req_if.issue_tag, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.thread_mask, fpu_req_if.fpu_op, fpu_req_if.frm, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data}) - ); -`endif - - VX_generic_register #( - .N(1 + `ISTAG_BITS + `NW_BITS + 32 + `NUM_THREADS + `GPU_BITS + (`NUM_THREADS * 32) + 32 + 32) - ) gpu_reg ( - .clk (clk), - .reset (reset), - .stall (~gpu_req_if.ready), - .flush (stall && gpu_req_if.ready), - .in ({gpu_req_tmp_if.valid, gpu_req_tmp_if.issue_tag, gpu_req_tmp_if.warp_num, gpu_req_tmp_if.curr_PC, gpu_req_tmp_if.thread_mask, gpu_req_tmp_if.gpu_op, gpu_req_tmp_if.rs1_data, gpu_req_tmp_if.rs2_data, gpu_req_tmp_if.next_PC}), - .out ({gpu_req_if.valid, gpu_req_if.issue_tag, gpu_req_if.warp_num, gpu_req_if.curr_PC, gpu_req_if.thread_mask, gpu_req_if.gpu_op, gpu_req_if.rs1_data, gpu_req_if.rs2_data, gpu_req_if.next_PC}) + VX_issue_demux issue_demux ( + .issue_if (issue_if), + .alu_req_if (alu_req_if), + .bru_req_if (bru_req_if), + .lsu_req_if (lsu_req_if), + .csr_req_if (csr_req_if), + .mul_req_if (mul_req_if), + .fpu_req_if (fpu_req_if), + .gpu_req_if (gpu_req_if) ); `ifdef DBG_PRINT_PIPELINE always @(posedge clk) begin if (alu_req_if.valid && alu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h, offset=%0h, next_PC=%0h", $time, CORE_ID, alu_req_if.warp_num, alu_req_if.curr_PC, alu_req_if.issue_tag, alu_req_if.thread_mask, alu_req_if.rs1_data, alu_req_if.rs2_data, alu_req_if.offset, alu_req_if.next_PC); + $display("%t: Core%0d-issue: wid=%0d, PC=%0h, ex=ALU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, alu_req_if.wid, alu_req_if.curr_PC, alu_req_if.issue_tag, alu_req_if.thread_mask, alu_req_if.rs1_data, alu_req_if.rs2_data); + end + if (bru_req_if.valid && bru_req_if.ready) begin + $display("%t: Core%0d-issue: wid=%0d, PC=%0h, ex=BRU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h, offset=%0h", $time, CORE_ID, bru_req_if.wid, bru_req_if.curr_PC, bru_req_if.issue_tag, bru_req_if.thread_mask, bru_req_if.rs1_data, bru_req_if.rs2_data, bru_req_if.offset); end if (lsu_req_if.valid && lsu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, rw=%b, byteen=%b, baddr=%0h, offset=%0h, data=%0h", $time, CORE_ID, lsu_req_if.warp_num, lsu_req_if.curr_PC, lsu_req_if.issue_tag, lsu_req_if.thread_mask, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data); + $display("%t: Core%0d-issue: wid=%0d, PC=%0h, ex=LSU, istag=%0d, tmask=%b, rw=%b, byteen=%b, baddr=%0h, offset=%0h, data=%0h", $time, CORE_ID, lsu_req_if.wid, lsu_req_if.curr_PC, lsu_req_if.issue_tag, lsu_req_if.thread_mask, lsu_req_if.rw, lsu_req_if.byteen, lsu_req_if.base_addr, lsu_req_if.offset, lsu_req_if.store_data); end if (csr_req_if.valid && csr_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, addr=%0h, mask=%0h", $time, CORE_ID, csr_req_if.warp_num, csr_req_if.curr_PC, csr_req_if.issue_tag, csr_req_if.thread_mask, csr_req_if.csr_addr, csr_req_if.csr_mask); + $display("%t: Core%0d-issue: wid=%0d, PC=%0h, ex=CSR, istag=%0d, tmask=%b, addr=%0h, mask=%0h", $time, CORE_ID, csr_req_if.wid, csr_req_if.curr_PC, csr_req_if.issue_tag, csr_req_if.thread_mask, csr_req_if.csr_addr, csr_req_if.csr_mask); end if (mul_req_if.valid && mul_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, mul_req_if.warp_num, mul_req_if.curr_PC, mul_req_if.issue_tag, mul_req_if.thread_mask, mul_req_if.rs1_data, mul_req_if.rs2_data); + $display("%t: Core%0d-issue: wid=%0d, PC=%0h, ex=MUL, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, mul_req_if.wid, mul_req_if.curr_PC, mul_req_if.issue_tag, mul_req_if.thread_mask, mul_req_if.rs1_data, mul_req_if.rs2_data); end if (fpu_req_if.valid && fpu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h, rs3_data=%0h", $time, CORE_ID, fpu_req_if.warp_num, fpu_req_if.curr_PC, fpu_req_if.issue_tag, fpu_req_if.thread_mask, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data); + $display("%t: Core%0d-issue: wid=%0d, PC=%0h, ex=FPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h, rs3_data=%0h", $time, CORE_ID, fpu_req_if.wid, fpu_req_if.curr_PC, fpu_req_if.issue_tag, fpu_req_if.thread_mask, fpu_req_if.rs1_data, fpu_req_if.rs2_data, fpu_req_if.rs3_data); end if (gpu_req_if.valid && gpu_req_if.ready) begin - $display("%t: Core%0d-issue: warp=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, gpu_req_if.warp_num, gpu_req_if.curr_PC, gpu_req_if.issue_tag, gpu_req_if.thread_mask, gpu_req_if.rs1_data, gpu_req_if.rs2_data); + $display("%t: Core%0d-issue: wid=%0d, PC=%0h, ex=GPU, istag=%0d, tmask=%b, rs1_data=%0h, rs2_data=%0h", $time, CORE_ID, gpu_req_if.wid, gpu_req_if.curr_PC, gpu_req_if.issue_tag, gpu_req_if.thread_mask, gpu_req_if.rs1_data, gpu_req_if.rs2_data); end end `endif diff --git a/hw/rtl/VX_issue_demux.v b/hw/rtl/VX_issue_demux.v index 44c4433b..16b0dd85 100644 --- a/hw/rtl/VX_issue_demux.v +++ b/hw/rtl/VX_issue_demux.v @@ -2,12 +2,11 @@ module VX_issue_demux ( // inputs - VX_decode_if decode_if, - VX_gpr_read_if gpr_read_if, - input wire [`ISTAG_BITS-1:0] issue_tag, - + VX_issue_if issue_if, + // outputs VX_alu_req_if alu_req_if, + VX_bru_req_if bru_req_if, VX_lsu_req_if lsu_req_if, VX_csr_req_if csr_req_if, VX_mul_req_if mul_req_if, @@ -15,74 +14,89 @@ module VX_issue_demux ( VX_gpu_req_if gpu_req_if ); // ALU unit - assign alu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_ALU); - assign alu_req_if.thread_mask = decode_if.thread_mask; - assign alu_req_if.issue_tag = issue_tag; - assign alu_req_if.warp_num = decode_if.warp_num; - assign alu_req_if.curr_PC = decode_if.curr_PC; - assign alu_req_if.alu_op = `ALU_OP(decode_if.ex_op); - assign alu_req_if.rs1_data = decode_if.rs1_is_PC ? {`NUM_THREADS{decode_if.curr_PC}} : gpr_read_if.rs1_data; - assign alu_req_if.rs2_data = decode_if.rs2_is_imm ? {`NUM_THREADS{decode_if.imm}} : gpr_read_if.rs2_data; - assign alu_req_if.offset = decode_if.imm; - assign alu_req_if.next_PC = decode_if.next_PC; + assign alu_req_if.valid = issue_if.valid && (issue_if.ex_type == `EX_ALU); + assign alu_req_if.issue_tag = issue_if.issue_tag; + assign alu_req_if.wid = issue_if.wid; + assign alu_req_if.thread_mask = issue_if.thread_mask; + assign alu_req_if.curr_PC = issue_if.curr_PC; + assign alu_req_if.op = `ALU_OP(issue_if.ex_op); + assign alu_req_if.rs1_is_PC = issue_if.rs1_is_PC; + assign alu_req_if.rs2_is_imm = issue_if.rs2_is_imm; + assign alu_req_if.imm = issue_if.imm; + assign alu_req_if.rs1_data = issue_if.rs1_data; + assign alu_req_if.rs2_data = issue_if.rs2_data; + + // BRU unit + assign bru_req_if.valid = issue_if.valid && (issue_if.ex_type == `EX_BRU); + assign bru_req_if.issue_tag = issue_if.issue_tag; + assign bru_req_if.wid = issue_if.wid; + assign bru_req_if.thread_mask = issue_if.thread_mask; + assign bru_req_if.curr_PC = issue_if.curr_PC; + assign bru_req_if.op = `BRU_OP(issue_if.ex_op); + assign bru_req_if.rs1_is_PC = issue_if.rs1_is_PC; + assign bru_req_if.rs1_data = issue_if.rs1_data[issue_if.tid]; + assign bru_req_if.rs2_data = issue_if.rs2_data[issue_if.tid]; + assign bru_req_if.offset = issue_if.imm; // LSU unit - assign lsu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_LSU); - assign lsu_req_if.thread_mask = decode_if.thread_mask; - assign lsu_req_if.issue_tag = issue_tag; - assign lsu_req_if.warp_num = decode_if.warp_num; - assign lsu_req_if.curr_PC = decode_if.curr_PC; - assign lsu_req_if.rw = `LSU_RW(decode_if.ex_op); - assign lsu_req_if.byteen = `LSU_BE(decode_if.ex_op); - assign lsu_req_if.base_addr = gpr_read_if.rs1_data; - assign lsu_req_if.store_data = gpr_read_if.rs2_data; - assign lsu_req_if.offset = decode_if.imm; - assign lsu_req_if.rd = decode_if.rd; - assign lsu_req_if.wb = decode_if.wb; + assign lsu_req_if.valid = issue_if.valid && (issue_if.ex_type == `EX_LSU); + assign lsu_req_if.issue_tag = issue_if.issue_tag; + assign lsu_req_if.wid = issue_if.wid; + assign lsu_req_if.thread_mask = issue_if.thread_mask; + assign lsu_req_if.curr_PC = issue_if.curr_PC; + assign lsu_req_if.rw = `LSU_RW(issue_if.ex_op); + assign lsu_req_if.byteen = `LSU_BE(issue_if.ex_op); + assign lsu_req_if.base_addr = issue_if.rs1_data; + assign lsu_req_if.store_data = issue_if.rs2_data; + assign lsu_req_if.offset = issue_if.imm; + assign lsu_req_if.rd = issue_if.rd; + assign lsu_req_if.wb = issue_if.wb; // CSR unit - assign csr_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_CSR); - assign csr_req_if.issue_tag = issue_tag; - assign csr_req_if.warp_num = decode_if.warp_num; - assign csr_req_if.curr_PC = decode_if.curr_PC; - assign csr_req_if.csr_op = `CSR_OP(decode_if.ex_op); - assign csr_req_if.csr_addr = decode_if.imm[`CSR_ADDR_BITS-1:0]; - assign csr_req_if.csr_mask = decode_if.rs2_is_imm ? 32'(decode_if.rs1) : gpr_read_if.rs1_data[0]; + assign csr_req_if.valid = issue_if.valid && (issue_if.ex_type == `EX_CSR); + assign csr_req_if.issue_tag = issue_if.issue_tag; + assign csr_req_if.wid = issue_if.wid; + assign csr_req_if.thread_mask = issue_if.thread_mask; + assign csr_req_if.curr_PC = issue_if.curr_PC; + assign csr_req_if.op = `CSR_OP(issue_if.ex_op); + assign csr_req_if.csr_addr = issue_if.imm[`CSR_ADDR_BITS-1:0]; + assign csr_req_if.csr_mask = issue_if.rs2_is_imm ? 32'(issue_if.rs1) : issue_if.rs1_data[0]; assign csr_req_if.is_io = 1'b0; // MUL unit `ifdef EXT_M_ENABLE - assign mul_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_MUL); - assign mul_req_if.issue_tag = issue_tag; - assign mul_req_if.warp_num = decode_if.warp_num; - assign mul_req_if.curr_PC = decode_if.curr_PC; - assign mul_req_if.mul_op = `MUL_OP(decode_if.ex_op); - assign mul_req_if.rs1_data = gpr_read_if.rs1_data; - assign mul_req_if.rs2_data = gpr_read_if.rs2_data; + assign mul_req_if.valid = issue_if.valid && (issue_if.ex_type == `EX_MUL); + assign mul_req_if.issue_tag = issue_if.issue_tag; + assign mul_req_if.wid = issue_if.wid; + assign mul_req_if.thread_mask = issue_if.thread_mask; + assign mul_req_if.curr_PC = issue_if.curr_PC; + assign mul_req_if.op = `MUL_OP(issue_if.ex_op); + assign mul_req_if.rs1_data = issue_if.rs1_data; + assign mul_req_if.rs2_data = issue_if.rs2_data; `endif // FPU unit `ifdef EXT_F_ENABLE - assign fpu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_FPU); - assign fpu_req_if.issue_tag = issue_tag; - assign fpu_req_if.warp_num = decode_if.warp_num; - assign fpu_req_if.curr_PC = decode_if.curr_PC; - assign fpu_req_if.fpu_op = `FPU_OP(decode_if.ex_op); - assign fpu_req_if.frm = decode_if.frm; - assign fpu_req_if.rs1_data = gpr_read_if.rs1_data; - assign fpu_req_if.rs2_data = gpr_read_if.rs2_data; - assign fpu_req_if.rs3_data = gpr_read_if.rs3_data; + assign fpu_req_if.valid = issue_if.valid && (issue_if.ex_type == `EX_FPU); + assign fpu_req_if.issue_tag = issue_if.issue_tag; + assign fpu_req_if.wid = issue_if.wid; + assign fpu_req_if.thread_mask = issue_if.thread_mask; + assign fpu_req_if.curr_PC = issue_if.curr_PC; + assign fpu_req_if.op = `FPU_OP(issue_if.ex_op); + assign fpu_req_if.frm = issue_if.frm; + assign fpu_req_if.rs1_data = issue_if.rs1_data; + assign fpu_req_if.rs2_data = issue_if.rs2_data; + assign fpu_req_if.rs3_data = issue_if.rs3_data; `endif // GPU unit - assign gpu_req_if.valid = decode_if.valid && (decode_if.ex_type == `EX_GPU); - assign gpu_req_if.thread_mask = decode_if.thread_mask; - assign gpu_req_if.issue_tag = issue_tag; - assign gpu_req_if.warp_num = decode_if.warp_num; - assign gpu_req_if.curr_PC = decode_if.curr_PC; - assign gpu_req_if.gpu_op = `GPU_OP(decode_if.ex_op); - assign gpu_req_if.rs1_data = gpr_read_if.rs1_data; - assign gpu_req_if.rs2_data = gpr_read_if.rs2_data[0]; - assign gpu_req_if.next_PC = decode_if.next_PC; + assign gpu_req_if.valid = issue_if.valid && (issue_if.ex_type == `EX_GPU); + assign gpu_req_if.issue_tag = issue_if.issue_tag; + assign gpu_req_if.wid = issue_if.wid; + assign gpu_req_if.thread_mask = issue_if.thread_mask; + assign gpu_req_if.curr_PC = issue_if.curr_PC; + assign gpu_req_if.op = `GPU_OP(issue_if.ex_op); + assign gpu_req_if.rs1_data = issue_if.rs1_data; + assign gpu_req_if.rs2_data = issue_if.rs2_data[0]; endmodule \ No newline at end of file diff --git a/hw/rtl/VX_lsu_unit.v b/hw/rtl/VX_lsu_unit.v index 87acc21b..9b7ecc8f 100644 --- a/hw/rtl/VX_lsu_unit.v +++ b/hw/rtl/VX_lsu_unit.v @@ -19,24 +19,24 @@ module VX_lsu_unit #( VX_exu_to_cmt_if lsu_commit_if ); - wire use_valid; - wire [`NUM_THREADS-1:0] use_thread_mask; - wire use_req_rw; - wire [`NUM_THREADS-1:0][29:0] use_req_addr; - wire [`NUM_THREADS-1:0][1:0] use_req_offset; - wire [`NUM_THREADS-1:0][3:0] use_req_byteen; - wire [`NUM_THREADS-1:0][31:0] use_req_data; - wire [1:0] use_req_sext; - wire [`NR_BITS-1:0] use_rd; - wire [`NW_BITS-1:0] use_warp_num; - wire [`ISTAG_BITS-1:0] use_issue_tag; - wire use_wb; - wire [31:0] use_pc; + wire valid_in; + wire ready_in; - genvar i; + wire [`NUM_THREADS-1:0] req_thread_mask; + wire req_rw; + wire [`NUM_THREADS-1:0][29:0] req_addr; + wire [`NUM_THREADS-1:0][1:0] req_offset; + wire [`NUM_THREADS-1:0][3:0] req_byteen; + wire [`NUM_THREADS-1:0][31:0] req_data; + wire [1:0] req_sext; + wire [`NR_BITS-1:0] req_rd; + wire [`NW_BITS-1:0] req_wid; + wire [`ISTAG_BITS-1:0] req_issue_tag; + wire req_wb; + wire [31:0] req_pc; wire [`NUM_THREADS-1:0][31:0] full_address; - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin assign full_address[i] = lsu_req_if.base_addr[i] + lsu_req_if.offset; end @@ -63,38 +63,39 @@ module VX_lsu_unit #( endcase end - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin assign mem_req_addr[i] = full_address[i][31:2]; assign mem_req_offset[i] = full_address[i][1:0]; assign mem_req_byteen[i] = wmask << full_address[i][1:0]; assign mem_req_data[i] = lsu_req_if.store_data[i] << {mem_req_offset[i], 3'b0}; - end - - wire stall_in = ~dcache_req_if.ready && use_valid; - - // Can accept new request? - assign lsu_req_if.ready = ~stall_in; + end `IGNORE_WARNINGS_BEGIN - wire [`NUM_THREADS-1:0][31:0] use_address; + wire [`NUM_THREADS-1:0][31:0] req_address; `IGNORE_WARNINGS_END - VX_generic_register #( - .N(1 + `NW_BITS + `NUM_THREADS + `ISTAG_BITS + (`NUM_THREADS * 32) + 2 + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + 1 + 32) - ) lsu_req_reg ( - .clk (clk), - .reset (reset), - .stall (stall_in), - .flush (0), - .in ({lsu_req_if.valid, lsu_req_if.warp_num, lsu_req_if.thread_mask, lsu_req_if.issue_tag, full_address, mem_req_sext, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.wb, lsu_req_if.curr_PC}), - .out ({use_valid, use_warp_num, use_thread_mask, use_issue_tag, use_address, use_req_sext, use_req_rw, use_req_addr, use_req_offset, use_req_byteen, use_req_data, use_rd, use_wb, use_pc}) + // use a skid buffer because the dcache's ready signal is combinational + // use buffer size of two for stall-free execution + VX_elastic_buffer #( + .DATAW (`NW_BITS + `NUM_THREADS + `ISTAG_BITS + (`NUM_THREADS * 32) + 2 + 1 + (`NUM_THREADS * (30 + 2 + 4 + 32)) + `NR_BITS + 1 + 32), + .SIZE (2) + ) input_buffer ( + .clk (clk), + .reset (reset), + .valid_in (lsu_req_if.valid), + .ready_in (lsu_req_if.ready), + .data_in ({lsu_req_if.wid, lsu_req_if.thread_mask, lsu_req_if.issue_tag, full_address, mem_req_sext, lsu_req_if.rw, mem_req_addr, mem_req_offset, mem_req_byteen, mem_req_data, lsu_req_if.rd, lsu_req_if.wb, lsu_req_if.curr_PC}), + .data_out ({req_wid, req_thread_mask, req_issue_tag, req_address, req_sext, req_rw, req_addr, req_offset, req_byteen, req_data, req_rd, req_wb, req_pc}), + .ready_out (ready_in), + .valid_out (valid_in) ); - reg [`NUM_THREADS-1:0] mem_rsp_mask_buf [`ISSUEQ_SIZE-1:0]; + reg [`ISSUEQ_SIZE-1:0][`NUM_THREADS-1:0] mem_rsp_mask_buf; + reg [`ISSUEQ_SIZE-1:0][`NUM_THREADS-1:0][31:0] mem_rsp_data_prev_buf; + reg [`NUM_THREADS-1:0][1:0] mem_rsp_offset_buf [`ISSUEQ_SIZE-1:0]; - reg [1:0] mem_rsp_sext_buf [`ISSUEQ_SIZE-1:0]; - reg [`NUM_THREADS-1:0][31:0] mem_rsp_data_all_buf [`ISSUEQ_SIZE-1:0]; - reg [`NW_BITS-1:0] mem_rsp_warp_num_buf [`ISSUEQ_SIZE-1:0]; + reg [1:0] mem_rsp_sext_buf [`ISSUEQ_SIZE-1:0]; + reg [`NW_BITS-1:0] mem_rsp_wid_buf [`ISSUEQ_SIZE-1:0]; reg [31:0] mem_rsp_curr_PC_buf [`ISSUEQ_SIZE-1:0]; reg [`NR_BITS-1:0] mem_rsp_rd_buf [`ISSUEQ_SIZE-1:0]; @@ -105,47 +106,56 @@ module VX_lsu_unit #( wire [`NUM_THREADS-1:0] mem_rsp_mask = mem_rsp_mask_buf [rsp_issue_tag]; wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset = mem_rsp_offset_buf [rsp_issue_tag]; wire [1:0] mem_rsp_sext = mem_rsp_sext_buf [rsp_issue_tag]; - wire [`NUM_THREADS-1:0][31:0] mem_rsp_data_all = mem_rsp_data_all_buf [rsp_issue_tag]; - wire [`NW_BITS-1:0] mem_rsp_warp_num = mem_rsp_warp_num_buf [rsp_issue_tag]; + wire [`NUM_THREADS-1:0][31:0] mem_rsp_data_prev= mem_rsp_data_prev_buf [rsp_issue_tag]; + wire [`NW_BITS-1:0] mem_rsp_wid = mem_rsp_wid_buf [rsp_issue_tag]; wire [31:0] mem_rsp_curr_PC = mem_rsp_curr_PC_buf [rsp_issue_tag]; wire [`NR_BITS-1:0] mem_rsp_rd = mem_rsp_rd_buf [rsp_issue_tag]; - wire [`NUM_THREADS-1:0] mem_rsp_mask_n = mem_rsp_mask & ~dcache_rsp_if.valid; - wire dcache_req_fire = (| dcache_req_if.valid) && dcache_req_if.ready; wire dcache_rsp_fire = (| dcache_rsp_if.valid) && dcache_rsp_if.ready; + wire [`NUM_THREADS-1:0] mem_rsp_mask_n = mem_rsp_mask & ~dcache_rsp_if.valid; + always @(posedge clk) begin - if (dcache_req_fire && (0 == use_req_rw)) begin - mem_rsp_mask_buf [use_issue_tag] <= use_thread_mask; - mem_rsp_offset_buf [use_issue_tag] <= use_req_offset; - mem_rsp_sext_buf [use_issue_tag] <= use_req_sext; - mem_rsp_data_all_buf [use_issue_tag] <= 0; - mem_rsp_warp_num_buf [use_issue_tag] <= use_warp_num; - mem_rsp_curr_PC_buf [use_issue_tag] <= use_pc; - mem_rsp_rd_buf [use_issue_tag] <= use_rd; + if (dcache_req_fire && (0 == req_rw)) begin + mem_rsp_mask_buf [req_issue_tag] <= req_thread_mask; + mem_rsp_data_prev_buf [req_issue_tag] <= 0; end if (dcache_rsp_fire) begin - mem_rsp_mask_buf [rsp_issue_tag] <= mem_rsp_mask_n; - mem_rsp_data_all_buf [rsp_issue_tag] <= mem_rsp_data_all | mem_rsp_data_curr; + mem_rsp_mask_buf [rsp_issue_tag] <= mem_rsp_mask_n; + mem_rsp_data_prev_buf [rsp_issue_tag] <= mem_rsp_data_curr | mem_rsp_data_prev; end end + always @(posedge clk) begin + if (dcache_req_fire && (0 == req_rw)) begin + mem_rsp_offset_buf [req_issue_tag] <= req_offset; + mem_rsp_sext_buf [req_issue_tag] <= req_sext; + mem_rsp_wid_buf [req_issue_tag] <= req_wid; + mem_rsp_curr_PC_buf [req_issue_tag] <= req_pc; + mem_rsp_rd_buf [req_issue_tag] <= req_rd; + end + end + + wire stall_in; + // Core Request - assign dcache_req_if.valid = {`NUM_THREADS{use_valid}} & use_thread_mask; - assign dcache_req_if.rw = {`NUM_THREADS{use_req_rw}}; - assign dcache_req_if.byteen = use_req_byteen; - assign dcache_req_if.addr = use_req_addr; - assign dcache_req_if.data = use_req_data; + assign dcache_req_if.valid = {`NUM_THREADS{valid_in && ~stall_in}} & req_thread_mask; + assign dcache_req_if.rw = {`NUM_THREADS{req_rw}}; + assign dcache_req_if.byteen = req_byteen; + assign dcache_req_if.addr = req_addr; + assign dcache_req_if.data = req_data; + + assign ready_in = dcache_req_if.ready && ~stall_in; `ifdef DBG_CORE_REQ_INFO - assign dcache_req_if.tag = {use_pc, use_wb, use_rd, use_warp_num, use_issue_tag}; + assign dcache_req_if.tag = {req_pc, req_wb, req_rd, req_wid, req_issue_tag}; `else - assign dcache_req_if.tag = use_issue_tag; + assign dcache_req_if.tag = req_issue_tag; `endif // Core Response - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin wire [31:0] rsp_data_shifted = dcache_rsp_if.data[i] >> {mem_rsp_offset[i], 3'b0}; always @(*) begin case (mem_rsp_sext) @@ -156,46 +166,60 @@ module VX_lsu_unit #( end end - wire is_store_rsp = dcache_req_fire && use_req_rw; - wire is_load_rsp = (| dcache_rsp_if.valid) && (0 == mem_rsp_mask_n); + reg is_load_rsp; + reg [`NUM_THREADS-1:0][31:0] load_data; + reg [`ISTAG_BITS-1:0] rsp_issue_tag_r; - assign lsu_commit_if.valid = is_load_rsp || is_store_rsp; - assign lsu_commit_if.issue_tag = is_store_rsp ? use_issue_tag : rsp_issue_tag; - assign lsu_commit_if.data = mem_rsp_data_curr | mem_rsp_data_all; + always @(posedge clk) begin + if (reset) begin + is_load_rsp <= 0; + end else begin + is_load_rsp <= dcache_rsp_fire && (0 == mem_rsp_mask_n); + load_data <= mem_rsp_data_curr | mem_rsp_data_prev; + rsp_issue_tag_r <= rsp_issue_tag; + end + end + + wire is_store_req = dcache_req_fire && req_rw; + assign stall_in = is_load_rsp && valid_in && req_rw; // LOAD has priority + + assign lsu_commit_if.valid = is_load_rsp || is_store_req; + assign lsu_commit_if.issue_tag = is_load_rsp ? rsp_issue_tag_r : req_issue_tag; + assign lsu_commit_if.data = load_data; // Can accept new cache response? - assign dcache_rsp_if.ready = lsu_commit_if.ready && ~is_store_rsp; // STORE has priority + assign dcache_rsp_if.ready = 1'b1; // scope registration `SCOPE_ASSIGN (scope_dcache_req_valid, dcache_req_if.valid); - `SCOPE_ASSIGN (scope_dcache_req_addr, use_address); + `SCOPE_ASSIGN (scope_dcache_req_addr, req_address); `SCOPE_ASSIGN (scope_dcache_req_rw, dcache_req_if.rw ); `SCOPE_ASSIGN (scope_dcache_req_byteen,dcache_req_if.byteen); `SCOPE_ASSIGN (scope_dcache_req_data, dcache_req_if.data); `SCOPE_ASSIGN (scope_dcache_req_tag, dcache_req_if.tag); `SCOPE_ASSIGN (scope_dcache_req_ready, dcache_req_if.ready); - `SCOPE_ASSIGN (scope_dcache_req_warp_num, use_warp_num); - `SCOPE_ASSIGN (scope_dcache_req_curr_PC, use_pc); + `SCOPE_ASSIGN (scope_dcache_req_wid, req_wid); + `SCOPE_ASSIGN (scope_dcache_req_curr_PC, req_pc); `SCOPE_ASSIGN (scope_dcache_rsp_valid, dcache_rsp_if.valid); `SCOPE_ASSIGN (scope_dcache_rsp_data, dcache_rsp_if.data); `SCOPE_ASSIGN (scope_dcache_rsp_tag, dcache_rsp_if.tag); `SCOPE_ASSIGN (scope_dcache_rsp_ready, dcache_rsp_if.ready); - `UNUSED_VAR (mem_rsp_warp_num) + `UNUSED_VAR (mem_rsp_wid) `UNUSED_VAR (mem_rsp_curr_PC) `UNUSED_VAR (mem_rsp_rd) - `UNUSED_VAR (use_wb) + `UNUSED_VAR (req_wb) `ifdef DBG_PRINT_CORE_DCACHE always @(posedge clk) begin if ((| dcache_req_if.valid) && dcache_req_if.ready) begin - $display("%t: D$%0d req: warp=%0d, PC=%0h, tmask=%b, addr=%0h, tag=%0h, rd=%0d, rw=%0b, byteen=%0h, data=%0h", - $time, CORE_ID, use_warp_num, use_pc, dcache_req_if.valid, use_address, dcache_req_if.tag, use_rd, dcache_req_if.rw, dcache_req_if.byteen, dcache_req_if.data); + $display("%t: D$%0d req: wid=%0d, PC=%0h, tmask=%b, addr=%0h, tag=%0h, rd=%0d, rw=%0b, byteen=%0h, data=%0h", + $time, CORE_ID, req_wid, req_pc, dcache_req_if.valid, req_address, dcache_req_if.tag, req_rd, dcache_req_if.rw, dcache_req_if.byteen, dcache_req_if.data); end if ((| dcache_rsp_if.valid) && dcache_rsp_if.ready) begin - $display("%t: D$%0d rsp: valid=%b, warp=%0d, PC=%0h, tag=%0h, rd=%0d, data=%0h", - $time, CORE_ID, dcache_rsp_if.valid, mem_rsp_warp_num, mem_rsp_curr_PC, dcache_rsp_if.tag, mem_rsp_rd, dcache_rsp_if.data); + $display("%t: D$%0d rsp: valid=%b, wid=%0d, PC=%0h, tag=%0h, rd=%0d, data=%0h", + $time, CORE_ID, dcache_rsp_if.valid, mem_rsp_wid, mem_rsp_curr_PC, dcache_rsp_if.tag, mem_rsp_rd, dcache_rsp_if.data); end end `endif diff --git a/hw/rtl/VX_mem_arb.v b/hw/rtl/VX_mem_arb.v index edf6741c..f8c5ac37 100644 --- a/hw/rtl/VX_mem_arb.v +++ b/hw/rtl/VX_mem_arb.v @@ -83,15 +83,13 @@ module VX_mem_arb #( assign out_mem_req_data = in_mem_req_data [bus_req_sel]; assign out_mem_req_tag = {in_mem_req_tag [bus_req_sel], REQS_BITS'(bus_req_sel)}; - genvar i; - - for (i = 0; i < NUM_REQUESTS; i++) begin + for (genvar i = 0; i < NUM_REQUESTS; i++) begin assign in_mem_req_ready[i] = out_mem_req_ready && (bus_req_sel == REQS_BITS'(i)); end wire [REQS_BITS-1:0] bus_rsp_sel = out_mem_rsp_tag[REQS_BITS-1:0]; - for (i = 0; i < NUM_REQUESTS; i++) begin + for (genvar i = 0; i < NUM_REQUESTS; i++) begin assign in_mem_rsp_valid[i] = out_mem_rsp_valid && (bus_rsp_sel == REQS_BITS'(i)); assign in_mem_rsp_data[i] = out_mem_rsp_data; assign in_mem_rsp_tag[i] = out_mem_rsp_tag[REQS_BITS +: TAG_IN_WIDTH]; diff --git a/hw/rtl/VX_mul_unit.v b/hw/rtl/VX_mul_unit.v index 394ebe06..86d531f9 100644 --- a/hw/rtl/VX_mul_unit.v +++ b/hw/rtl/VX_mul_unit.v @@ -11,52 +11,36 @@ module VX_mul_unit #( // Outputs VX_exu_to_cmt_if alu_commit_if -); - - wire [`MUL_BITS-1:0] alu_op = alu_req_if.mul_op; - wire [`NUM_THREADS-1:0][31:0] alu_in1 = alu_req_if.rs1_data; - wire [`NUM_THREADS-1:0][31:0] alu_in2 = alu_req_if.rs2_data; +); + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`MUL_BITS-1:0] alu_op; + wire [`NUM_THREADS-1:0][31:0] alu_in1, alu_in2; + wire valid_in, ready_in; + + // use a skid buffer due to MUL/DIV output arbitration adding realtime backpressure + VX_elastic_buffer #( + .DATAW (`ISTAG_BITS + `MUL_BITS + (2 * `NUM_THREADS * 32)), + .SIZE (0) + ) input_buffer ( + .clk (clk), + .reset (reset), + .valid_in (alu_req_if.valid), + .ready_in (alu_req_if.ready), + .data_in ({alu_req_if.issue_tag, alu_req_if.op, alu_req_if.rs1_data, alu_req_if.rs2_data}), + .data_out ({issue_tag, alu_op, alu_in1, alu_in2}), + .ready_out (ready_in), + .valid_out (valid_in) + ); - wire [`NUM_THREADS-1:0][31:0] mul_result, div_result; + wire [`NUM_THREADS-1:0][31:0] mul_result; + wire is_mulw = (alu_op == `MUL_MUL); + wire is_mulw_out; - wire stall_mul, stall_div; - - wire is_mul_mul = (alu_op == `MUL_MUL); - wire is_mul_mul_out; - - wire is_div_divu = (alu_op == `MUL_DIV || alu_op == `MUL_DIVU); - reg [`NUM_THREADS-1:0] is_div_divu_qual; - wire [`NUM_THREADS-1:0] is_div_divu_out; - - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin wire [32:0] mul_in1 = {(alu_op != `MUL_MULHU) & alu_in1[i][31], alu_in1[i]}; wire [32:0] mul_in2 = {(alu_op != `MUL_MULHU && alu_op != `MUL_MULHSU) & alu_in2[i][31], alu_in2[i]}; - - reg [32:0] div_in1, div_in2; - - // handle divide by zero - always @(*) begin - is_div_divu_qual[i] = is_div_divu; - div_in1 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in1[i][31], alu_in1[i]}; - div_in2 = {(alu_op == `MUL_DIV || alu_op == `MUL_REM) & alu_in2[i][31], alu_in2[i]}; - - if (0 == alu_in2[i]) begin - if (is_div_divu) begin - div_in1 = {1'b0, 32'hFFFFFFFF}; // quotient = (0xFFFFFFFF / 1) - div_in2 = 1; - end else begin - is_div_divu_qual[i] = 1; // remainder = (in1 / 1) - div_in2 = 1; - end - end - end - wire [63:0] mul_result_tmp; - wire [31:0] div_result_tmp; - wire [31:0] rem_result_tmp; VX_multiplier #( .WIDTHA(33), @@ -67,12 +51,71 @@ module VX_mul_unit #( ) multiplier ( .clk(clk), .reset(reset), - .clk_en(~stall_mul), + .clk_en(1'b1), .dataa(mul_in1), .datab(mul_in2), .result(mul_result_tmp) ); + assign mul_result[i] = is_mulw_out ? mul_result_tmp[31:0] : mul_result_tmp[63:32]; + end + + wire [`ISTAG_BITS-1:0] mul_issue_tag; + wire mul_valid_out; + + wire mul_fire = valid_in && ready_in && ~`IS_DIV_OP(alu_op); + + VX_shift_register #( + .DATAW(1 + `ISTAG_BITS + 1), + .DEPTH(`LATENCY_IMUL) + ) mul_shift_reg ( + .clk(clk), + .reset(reset), + .enable(1'b1), + .in({mul_fire, issue_tag, is_mulw}), + .out({mul_valid_out, mul_issue_tag, is_mulw_out}) + ); + + /////////////////////////////////////////////////////////////////////////// + + wire [`NUM_THREADS-1:0][31:0] div_result; + wire is_div = (alu_op == `MUL_DIV || alu_op == `MUL_DIVU); + wire is_signed_div = (alu_op == `MUL_DIV || alu_op == `MUL_REM); + reg [`NUM_THREADS-1:0] is_div_qual; + wire [`NUM_THREADS-1:0] is_div_out; + wire stall_div; + + for (genvar i = 0; i < `NUM_THREADS; i++) begin + + reg [31:0] div_in1_qual, div_in2_qual; + reg [32:0] div_in1, div_in2; + wire [31:0] div_result_tmp, rem_result_tmp; + + // handle divide by zero + always @(*) begin + if (~stall_div) begin + is_div_qual[i] = is_div; + div_in1_qual = alu_in1[i]; + div_in2_qual = alu_in2[i]; + if (0 == alu_in2[i]) begin + div_in2_qual = 1; + if (is_div) begin + div_in1_qual = 32'hFFFFFFFF; // quotient = (0xFFFFFFFF / 1) + end else begin + is_div_qual[i] = 1; // remainder = (in1 / 1) + end + end + end + end + + // latch divider inputs + always @(posedge clk) begin + if (~stall_div) begin + div_in1 <= {is_signed_div & alu_in1[i][31], div_in1_qual}; + div_in2 <= {is_signed_div & alu_in2[i][31], div_in2_qual}; + end + end + VX_divide #( .WIDTHN(33), .WIDTHD(33), @@ -90,49 +133,32 @@ module VX_mul_unit #( .quotient(div_result_tmp), .remainder(rem_result_tmp) ); - - assign mul_result[i] = is_mul_mul_out ? mul_result_tmp[31:0] : mul_result_tmp[63:32]; - assign div_result[i] = is_div_divu_out[i] ? div_result_tmp : rem_result_tmp; + + assign div_result[i] = is_div_out[i] ? div_result_tmp : rem_result_tmp; end - wire is_mul_fire = alu_req_if.valid && alu_req_if.ready && ~`IS_DIV_OP(alu_op); - wire is_div_fire = alu_req_if.valid && alu_req_if.ready && `IS_DIV_OP(alu_op); - - wire mul_valid_out; + wire [`ISTAG_BITS-1:0] div_issue_tag; wire div_valid_out; - wire [`ISTAG_BITS-1:0] mul_issue_tag; - wire [`ISTAG_BITS-1:0] div_issue_tag; - - VX_shift_register #( - .DATAW(1 + `ISTAG_BITS + 1), - .DEPTH(`LATENCY_IMUL) - ) mul_shift_reg ( - .clk(clk), - .reset(reset), - .enable(~stall_mul), - .in({is_mul_fire, alu_req_if.issue_tag, is_mul_mul}), - .out({mul_valid_out, mul_issue_tag, is_mul_mul_out}) - ); + wire div_fire = valid_in && ready_in && `IS_DIV_OP(alu_op); VX_shift_register #( .DATAW(1 + `ISTAG_BITS + `NUM_THREADS), - .DEPTH(`LATENCY_IDIV) + .DEPTH(`LATENCY_IDIV + 1) ) div_shift_reg ( .clk(clk), .reset(reset), .enable(~stall_div), - .in({is_div_fire, alu_req_if.issue_tag, is_div_divu_qual}), - .out({div_valid_out, div_issue_tag, is_div_divu_out}) + .in({div_fire, issue_tag, is_div_qual}), + .out({div_valid_out, div_issue_tag, is_div_out}) ); + + /////////////////////////////////////////////////////////////////////////// - wire stall_out = (~alu_commit_if.ready && alu_commit_if.valid); - assign stall_mul = stall_out; - assign stall_div = stall_out - || (mul_valid_out && div_valid_out); // arbitration prioritizes MUL + assign stall_div = mul_valid_out && div_valid_out; // arbitration prioritizes MUL // can accept new request? - assign alu_req_if.ready = ~(stall_mul || stall_div); + assign ready_in = ~stall_div; assign alu_commit_if.valid = mul_valid_out || div_valid_out; assign alu_commit_if.issue_tag = mul_valid_out ? mul_issue_tag : div_issue_tag; diff --git a/hw/rtl/VX_pipeline.v b/hw/rtl/VX_pipeline.v index efc66237..f7aa9fa3 100644 --- a/hw/rtl/VX_pipeline.v +++ b/hw/rtl/VX_pipeline.v @@ -107,6 +107,7 @@ module VX_pipeline #( VX_warp_ctl_if warp_ctl_if(); VX_ifetch_rsp_if ifetch_rsp_if(); VX_alu_req_if alu_req_if(); + VX_bru_req_if bru_req_if(); VX_lsu_req_if lsu_req_if(); VX_csr_req_if csr_req_if(); VX_mul_req_if mul_req_if(); @@ -117,6 +118,7 @@ module VX_pipeline #( VX_wstall_if wstall_if(); VX_join_if join_if(); VX_exu_to_cmt_if alu_commit_if(); + VX_exu_to_cmt_if bru_commit_if(); VX_exu_to_cmt_if lsu_commit_if(); VX_exu_to_cmt_if csr_commit_if(); VX_exu_to_cmt_if mul_commit_if(); @@ -157,9 +159,10 @@ module VX_pipeline #( .decode_if (decode_if), .writeback_if (writeback_if), - .cmt_to_issue_if (cmt_to_issue_if), + .cmt_to_issue_if(cmt_to_issue_if), .alu_req_if (alu_req_if), + .bru_req_if (bru_req_if), .lsu_req_if (lsu_req_if), .csr_req_if (csr_req_if), .mul_req_if (mul_req_if), @@ -183,6 +186,7 @@ module VX_pipeline #( .cmt_to_csr_if (cmt_to_csr_if), .alu_req_if (alu_req_if), + .bru_req_if (bru_req_if), .lsu_req_if (lsu_req_if), .csr_req_if (csr_req_if), .mul_req_if (mul_req_if), @@ -192,6 +196,7 @@ module VX_pipeline #( .warp_ctl_if (warp_ctl_if), .branch_ctl_if (branch_ctl_if), .alu_commit_if (alu_commit_if), + .bru_commit_if (bru_commit_if), .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), @@ -208,6 +213,7 @@ module VX_pipeline #( .reset (reset), .alu_commit_if (alu_commit_if), + .bru_commit_if (bru_commit_if), .lsu_commit_if (lsu_commit_if), .csr_commit_if (csr_commit_if), .mul_commit_if (mul_commit_if), diff --git a/hw/rtl/VX_platform.vh b/hw/rtl/VX_platform.vh index dcea510d..b12551c4 100644 --- a/hw/rtl/VX_platform.vh +++ b/hw/rtl/VX_platform.vh @@ -1,6 +1,8 @@ `ifndef VX_PLATFORM `define VX_PLATFORM +`include "VX_scope.vh" + /////////////////////////////////////////////////////////////////////////////// `ifndef NDEBUG @@ -50,6 +52,7 @@ /////////////////////////////////////////////////////////////////////////////// `define USE_FAST_BRAM (* syn_ramstyle = "mlab" *) +`define RELAX_BRAM_RW (* syn_ramstyle = "no_rw_check" *) /////////////////////////////////////////////////////////////////////////////// diff --git a/hw/rtl/VX_print_instr.vh b/hw/rtl/VX_print_instr.vh index 9a5702e2..f8682f44 100644 --- a/hw/rtl/VX_print_instr.vh +++ b/hw/rtl/VX_print_instr.vh @@ -22,7 +22,7 @@ task print_ex_op; input [`EX_BITS-1:0] ex; input [`OP_BITS-1:0] op; begin - case (ex) + case (ex) `EX_ALU: begin case (`ALU_BITS'(op)) `ALU_ADD: $write("ADD"); @@ -37,22 +37,27 @@ task print_ex_op; `ALU_AND: $write("AND"); `ALU_LUI: $write("LUI"); `ALU_AUIPC: $write("AUIPC"); - `ALU_BEQ: $write("BEQ"); - `ALU_BNE: $write("BNE"); - `ALU_BLT: $write("BLT"); - `ALU_BGE: $write("BGE"); - `ALU_BLTU: $write("BLTU"); - `ALU_BGEU: $write("BGEU"); - `ALU_JAL: $write("JAL"); - `ALU_JALR: $write("JALR"); - `ALU_ECALL: $write("ECALL"); - `ALU_EBREAK:$write("EBREAK"); - `ALU_MRET: $write("MRET"); - `ALU_SRET: $write("SRET"); - `ALU_DRET: $write("DRET"); default: $write("?"); - endcase + endcase end + `EX_BRU: begin + case (`BRU_BITS'(op)) + `BRU_EQ: $write("BEQ"); + `BRU_NE: $write("BNE"); + `BRU_LT: $write("BLT"); + `BRU_GE: $write("BGE"); + `BRU_LTU: $write("BLTU"); + `BRU_GEU: $write("BGEU"); + `BRU_JAL: $write("JAL"); + `BRU_JALR: $write("JALR"); + `BRU_ECALL: $write("ECALL"); + `BRU_EBREAK:$write("EBREAK"); + `BRU_MRET: $write("MRET"); + `BRU_SRET: $write("SRET"); + `BRU_DRET: $write("DRET"); + default: $write("?"); + endcase + end `EX_LSU: begin case (`LSU_BITS'(op)) `LSU_LB: $write("LB"); diff --git a/hw/rtl/VX_scheduler.v b/hw/rtl/VX_scheduler.v deleted file mode 100644 index a3bfa32a..00000000 --- a/hw/rtl/VX_scheduler.v +++ /dev/null @@ -1,82 +0,0 @@ -`include "VX_define.vh" - -module VX_scheduler #( - parameter CORE_ID = 0 -) ( - input wire clk, - input wire reset, - - VX_decode_if decode_if, - VX_wb_if writeback_if, - VX_cmt_to_issue_if cmt_to_issue_if, - input wire ex_busy, - output wire [`ISTAG_BITS-1:0] issue_tag, - output wire schedule_delay -); - localparam CTVW = `CLOG2(`NUM_WARPS * `NUM_REGS + 1); - reg [`NUM_THREADS-1:0] inuse_registers [(`NUM_WARPS * `NUM_REGS)-1:0]; - reg [`NUM_REGS-1:0] inuse_reg_mask [`NUM_WARPS-1:0]; - - wire [`NUM_REGS-1:0] inuse_mask = inuse_reg_mask[decode_if.warp_num] & decode_if.reg_use_mask; - wire inuse_hazard = (inuse_mask != 0); - - wire issue_buf_full; - - assign schedule_delay = ex_busy || inuse_hazard || issue_buf_full; - - wire issue_fire = decode_if.valid && decode_if.ready; - - wire writeback_fire = writeback_if.valid && writeback_if.ready; - - wire acquire_rd = issue_fire && (decode_if.wb != 0); - - wire [`NUM_THREADS-1:0] inuse_registers_n = inuse_registers[{writeback_if.warp_num, writeback_if.rd}] & ~writeback_if.thread_mask; - - always @(posedge clk) begin - if (reset) begin - for (integer w = 0; w < `NUM_WARPS; w++) begin - for (integer i = 0; i < `NUM_REGS; i++) begin - inuse_registers[w * `NUM_REGS + i] <= 0; - end - inuse_reg_mask[w] <= `NUM_REGS'(0); - end - end else begin - if (acquire_rd) begin - inuse_registers[{decode_if.warp_num, decode_if.rd}] <= decode_if.thread_mask; - inuse_reg_mask[decode_if.warp_num][decode_if.rd] <= 1; - end - if (writeback_fire) begin - assert(inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] != 0); - inuse_registers[{writeback_if.warp_num, writeback_if.rd}] <= inuse_registers_n; - inuse_reg_mask[writeback_if.warp_num][writeback_if.rd] <= (| inuse_registers_n); - end - end - end - - VX_cam_buffer #( - .DATAW ($bits(issue_data_t)), - .SIZE (`ISSUEQ_SIZE), - .RPORTS (`NUM_EXS) - ) issue_buffer ( - .clk (clk), - .reset (reset), - .write_data ({decode_if.warp_num, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.wb}), - .write_addr (issue_tag), - .acquire_slot (issue_fire), - .release_slot ({cmt_to_issue_if.alu_valid, cmt_to_issue_if.lsu_valid, cmt_to_issue_if.csr_valid, cmt_to_issue_if.mul_valid, cmt_to_issue_if.fpu_valid, cmt_to_issue_if.gpu_valid}), - .read_addr ({cmt_to_issue_if.alu_tag, cmt_to_issue_if.lsu_tag, cmt_to_issue_if.csr_tag, cmt_to_issue_if.mul_tag, cmt_to_issue_if.fpu_tag, cmt_to_issue_if.gpu_tag}), - .read_data ({cmt_to_issue_if.alu_data, cmt_to_issue_if.lsu_data, cmt_to_issue_if.csr_data, cmt_to_issue_if.mul_data, cmt_to_issue_if.fpu_data, cmt_to_issue_if.gpu_data}), - .full (issue_buf_full) - ); - -`ifdef DBG_PRINT_PIPELINE - always @(posedge clk) begin - if (decode_if.valid && ~decode_if.ready) begin - $display("%t: Core%0d-stall: warp=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, ex_busy=%b", - $time, CORE_ID, decode_if.warp_num, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, - inuse_mask[decode_if.rd], inuse_mask[decode_if.rs1], inuse_mask[decode_if.rs2], inuse_mask[decode_if.rs3], ex_busy); - end - end -`endif - -endmodule \ No newline at end of file diff --git a/hw/rtl/VX_scope.vh b/hw/rtl/VX_scope.vh index 2ceea369..29f522e3 100644 --- a/hw/rtl/VX_scope.vh +++ b/hw/rtl/VX_scope.vh @@ -15,12 +15,12 @@ scope_snp_req_invalidate, \ scope_snp_req_tag, \ scope_snp_rsp_tag, \ - scope_icache_req_warp_num, \ + scope_icache_req_wid, \ scope_icache_req_addr, \ scope_icache_req_tag, \ scope_icache_rsp_data, \ scope_icache_rsp_tag, \ - scope_dcache_req_warp_num, \ + scope_dcache_req_wid, \ scope_dcache_req_curr_PC, \ scope_dcache_req_addr, \ scope_dcache_req_rw, \ @@ -29,17 +29,17 @@ scope_dcache_req_tag, \ scope_dcache_rsp_data, \ scope_dcache_rsp_tag, \ - scope_decode_warp_num, \ + scope_decode_wid, \ scope_decode_curr_PC, \ scope_decode_is_jal, \ scope_decode_rs1, \ scope_decode_rs2, \ - scope_execute_warp_num, \ + scope_execute_wid, \ scope_execute_curr_PC, \ scope_execute_rd, \ scope_execute_a, \ scope_execute_b, \ - scope_writeback_warp_num, \ + scope_writeback_wid, \ scope_writeback_curr_PC, \ scope_writeback_wb, \ scope_writeback_rd, \ @@ -103,7 +103,7 @@ wire scope_snp_rsp_valid; \ wire [`VX_SNP_TAG_WIDTH-1:0] scope_snp_rsp_tag; \ wire scope_icache_req_valid; \ - wire [`NW_BITS-1:0] scope_icache_req_warp_num; \ + wire [`NW_BITS-1:0] scope_icache_req_wid; \ wire [31:0] scope_icache_req_addr; \ wire [`ICORE_TAG_WIDTH-1:0] scope_icache_req_tag; \ wire scope_icache_req_ready; \ @@ -112,7 +112,7 @@ wire [`ICORE_TAG_WIDTH-1:0] scope_icache_rsp_tag; \ wire scope_icache_rsp_ready; \ wire [`NUM_THREADS-1:0] scope_dcache_req_valid; \ - wire [`NW_BITS-1:0] scope_dcache_req_warp_num; \ + wire [`NW_BITS-1:0] scope_dcache_req_wid; \ wire [31:0] scope_dcache_req_curr_PC; \ wire [63:0] scope_dcache_req_addr; \ wire scope_dcache_req_rw; \ @@ -131,19 +131,19 @@ wire scope_exec_delay; \ wire scope_gpr_stage_delay; \ wire [`NUM_THREADS-1:0] scope_decode_valid; \ - wire [`NW_BITS-1:0] scope_decode_warp_num; \ + wire [`NW_BITS-1:0] scope_decode_wid; \ wire [31:0] scope_decode_curr_PC; \ wire scope_decode_is_jal; \ wire [`NR_BITS-1:0] scope_decode_rs1; \ wire [`NR_BITS-1:0] scope_decode_rs2; \ wire [`NUM_THREADS-1:0] scope_execute_valid; \ - wire [`NW_BITS-1:0] scope_execute_warp_num; \ + wire [`NW_BITS-1:0] scope_execute_wid; \ wire [31:0] scope_execute_curr_PC; \ wire [`NR_BITS-1:0] scope_execute_rd; \ wire [63:0] scope_execute_a; \ wire [63:0] scope_execute_b; \ wire [`NUM_THREADS-1:0] scope_writeback_valid; \ - wire [`NW_BITS-1:0] scope_writeback_warp_num; \ + wire [`NW_BITS-1:0] scope_writeback_wid; \ wire [31:0] scope_writeback_curr_PC; \ wire scope_writeback_wb; \ wire [`NR_BITS-1:0] scope_writeback_rd; \ @@ -162,7 +162,7 @@ `define SCOPE_SIGNALS_ISTAGE_IO \ output wire scope_icache_req_valid, \ - output wire [`NW_BITS-1:0] scope_icache_req_warp_num, \ + output wire [`NW_BITS-1:0] scope_icache_req_wid, \ output wire [31:0] scope_icache_req_addr, \ output wire [`ICORE_TAG_WIDTH-1:0] scope_icache_req_tag, \ output wire scope_icache_req_ready, \ @@ -173,7 +173,7 @@ `define SCOPE_SIGNALS_LSU_IO \ output wire [`NUM_THREADS-1:0] scope_dcache_req_valid, \ - output wire [`NW_BITS-1:0] scope_dcache_req_warp_num, \ + output wire [`NW_BITS-1:0] scope_dcache_req_wid, \ output wire [31:0] scope_dcache_req_curr_PC, \ output wire [63:0] scope_dcache_req_addr, \ output wire scope_dcache_req_rw, \ @@ -210,19 +210,19 @@ `define SCOPE_SIGNALS_BE_IO \ output wire [`NUM_THREADS-1:0] scope_decode_valid, \ - output wire [`NW_BITS-1:0] scope_decode_warp_num, \ + output wire [`NW_BITS-1:0] scope_decode_wid, \ output wire [31:0] scope_decode_curr_PC, \ output wire scope_decode_is_jal, \ output wire [`NR_BITS-1:0] scope_decode_rs1, \ output wire [`NR_BITS-1:0] scope_decode_rs2, \ output wire [`NUM_THREADS-1:0] scope_execute_valid, \ - output wire [`NW_BITS-1:0] scope_execute_warp_num, \ + output wire [`NW_BITS-1:0] scope_execute_wid, \ output wire [31:0] scope_execute_curr_PC, \ output wire [`NR_BITS-1:0] scope_execute_rd, \ output wire [63:0] scope_execute_a, \ output wire [63:0] scope_execute_b, \ output wire [`NUM_THREADS-1:0] scope_writeback_valid, \ - output wire [`NW_BITS-1:0] scope_writeback_warp_num, \ + output wire [`NW_BITS-1:0] scope_writeback_wid, \ output wire [31:0] scope_writeback_curr_PC, \ output wire scope_writeback_wb, \ output wire [`NR_BITS-1:0] scope_writeback_rd, \ @@ -230,7 +230,7 @@ `define SCOPE_SIGNALS_ISTAGE_BIND \ .scope_icache_req_valid (scope_icache_req_valid), \ - .scope_icache_req_warp_num (scope_icache_req_warp_num), \ + .scope_icache_req_wid (scope_icache_req_wid), \ .scope_icache_req_addr (scope_icache_req_addr), \ .scope_icache_req_tag (scope_icache_req_tag), \ .scope_icache_req_ready (scope_icache_req_ready), \ @@ -241,7 +241,7 @@ `define SCOPE_SIGNALS_LSU_BIND \ .scope_dcache_req_valid (scope_dcache_req_valid), \ - .scope_dcache_req_warp_num (scope_dcache_req_warp_num), \ + .scope_dcache_req_wid (scope_dcache_req_wid), \ .scope_dcache_req_curr_PC (scope_dcache_req_curr_PC), \ .scope_dcache_req_addr (scope_dcache_req_addr), \ .scope_dcache_req_rw (scope_dcache_req_rw), \ @@ -332,19 +332,19 @@ `define SCOPE_SIGNALS_BE_BIND \ .scope_decode_valid (scope_decode_valid), \ - .scope_decode_warp_num (scope_decode_warp_num), \ + .scope_decode_wid (scope_decode_wid), \ .scope_decode_curr_PC (scope_decode_curr_PC), \ .scope_decode_is_jal (scope_decode_is_jal), \ .scope_decode_rs1 (scope_decode_rs1), \ .scope_decode_rs2 (scope_decode_rs2), \ .scope_execute_valid (scope_execute_valid), \ - .scope_execute_warp_num (scope_execute_warp_num), \ + .scope_execute_wid (scope_execute_wid), \ .scope_execute_curr_PC (scope_execute_curr_PC), \ .scope_execute_rd (scope_execute_rd), \ .scope_execute_a (scope_execute_a), \ .scope_execute_b (scope_execute_b), \ .scope_writeback_valid (scope_writeback_valid), \ - .scope_writeback_warp_num (scope_writeback_warp_num), \ + .scope_writeback_wid (scope_writeback_wid), \ .scope_writeback_curr_PC(scope_writeback_curr_PC), \ .scope_writeback_wb (scope_writeback_wb), \ .scope_writeback_rd (scope_writeback_rd), \ diff --git a/hw/rtl/VX_scoreboard.v b/hw/rtl/VX_scoreboard.v new file mode 100644 index 00000000..265e9cf5 --- /dev/null +++ b/hw/rtl/VX_scoreboard.v @@ -0,0 +1,73 @@ +`include "VX_define.vh" + +module VX_scoreboard #( + parameter CORE_ID = 0 +) ( + input wire clk, + input wire reset, + + VX_decode_if decode_if, + VX_wb_if writeback_if, + VX_cmt_to_issue_if cmt_to_issue_if, + input wire ex_busy, + output wire [`ISTAG_BITS-1:0] issue_tag, + output wire schedule_delay +); + reg [`NUM_REGS-1:0] inuse_reg_mask [`NUM_WARPS-1:0]; + + wire [`NUM_REGS-1:0] inuse_mask = inuse_reg_mask[decode_if.wid] & decode_if.reg_use_mask; + wire inuse_hazard = (inuse_mask != 0); + + wire issue_buf_full; + + assign schedule_delay = ex_busy || inuse_hazard || issue_buf_full; + + wire issue_fire = decode_if.valid && decode_if.ready; + + wire reserve_rd = issue_fire && (decode_if.wb != 0); + + wire release_rd = writeback_if.valid; + + always @(posedge clk) begin + if (reset) begin + for (integer i = 0; i < `NUM_WARPS; i++) begin + inuse_reg_mask[i] <= `NUM_REGS'(0); + end + end else begin + if (reserve_rd) begin + inuse_reg_mask[decode_if.wid][decode_if.rd] <= 1; + end + if (release_rd) begin + assert(inuse_reg_mask[writeback_if.wid][writeback_if.rd] != 0); + inuse_reg_mask[writeback_if.wid][writeback_if.rd] <= 0; + end + end + end + + VX_cam_buffer #( + .DATAW ($bits(issue_data_t)), + .SIZE (`ISSUEQ_SIZE), + .RPORTS (`NUM_EXS) + ) issue_table ( + .clk (clk), + .reset (reset), + .write_data ({decode_if.wid, decode_if.thread_mask, decode_if.curr_PC, decode_if.rd, decode_if.wb}), + .write_addr (issue_tag), + .acquire_slot (issue_fire), + .release_slot ({cmt_to_issue_if.alu_valid, cmt_to_issue_if.bru_valid, cmt_to_issue_if.lsu_valid, cmt_to_issue_if.csr_valid, cmt_to_issue_if.mul_valid, cmt_to_issue_if.fpu_valid, cmt_to_issue_if.gpu_valid}), + .read_addr ({cmt_to_issue_if.alu_tag, cmt_to_issue_if.bru_tag, cmt_to_issue_if.lsu_tag, cmt_to_issue_if.csr_tag, cmt_to_issue_if.mul_tag, cmt_to_issue_if.fpu_tag, cmt_to_issue_if.gpu_tag}), + .read_data ({cmt_to_issue_if.alu_data, cmt_to_issue_if.bru_data, cmt_to_issue_if.lsu_data, cmt_to_issue_if.csr_data, cmt_to_issue_if.mul_data, cmt_to_issue_if.fpu_data, cmt_to_issue_if.gpu_data}), + .full (issue_buf_full) + ); + +`ifdef DBG_PRINT_PIPELINE + always @(posedge clk) begin + if (decode_if.valid && ~decode_if.ready) begin + $display("%t: Core%0d-stall: wid=%0d, PC=%0h, rd=%0d, wb=%0d, ib_full=%b, inuse=%b%b%b%b, ex_busy=%b", + $time, CORE_ID, decode_if.wid, decode_if.curr_PC, decode_if.rd, decode_if.wb, issue_buf_full, + inuse_mask[decode_if.rd], inuse_mask[decode_if.rs1], inuse_mask[decode_if.rs2], inuse_mask[decode_if.rs3], ex_busy); + end + end +`endif + +endmodule \ No newline at end of file diff --git a/hw/rtl/VX_types.vh b/hw/rtl/VX_types.vh new file mode 100644 index 00000000..7b464cf5 --- /dev/null +++ b/hw/rtl/VX_types.vh @@ -0,0 +1,59 @@ +`ifndef VX_TYPES +`define VX_TYPES + +`include "VX_define.vh" + +typedef struct packed { + logic [`NW_BITS-1:0] wid; + logic [`NUM_THREADS-1:0] thread_mask; + logic [31:0] curr_PC; + logic [`NR_BITS-1:0] rd; + logic wb; +} issue_data_t; + +typedef struct packed { + logic is_normal; + logic is_zero; + logic is_subnormal; + logic is_inf; + logic is_nan; + logic is_signaling; + logic is_quiet; +} fp_type_t; + +typedef struct packed { + logic NV; // Invalid + logic DZ; // Divide by zero + logic OF; // Overflow + logic UF; // Underflow + logic NX; // Inexact +} fflags_t; + +`define FFG_BITS $bits(fflags_t) + +typedef struct packed { + logic valid; + logic [`NUM_THREADS-1:0] thread_mask; +} gpu_tmc_t; + +typedef struct packed { + logic valid; + logic [`NUM_WARPS-1:0] wmask; + logic [31:0] pc; +} gpu_wspawn_t; + +typedef struct packed { + logic valid; + logic diverged; + logic [`NUM_THREADS-1:0] then_mask; + logic [`NUM_THREADS-1:0] else_mask; + logic [31:0] pc; +} gpu_split_t; + +typedef struct packed { + logic valid; + logic [`NB_BITS-1:0] id; + logic [`NW_BITS:0] num_warps; +} gpu_barrier_t; + +`endif \ No newline at end of file diff --git a/hw/rtl/VX_warp_sched.v b/hw/rtl/VX_warp_sched.v index 80eda9f7..a4ef9214 100644 --- a/hw/rtl/VX_warp_sched.v +++ b/hw/rtl/VX_warp_sched.v @@ -16,64 +16,44 @@ module VX_warp_sched #( output wire busy ); - wire update_use_wspawn; - wire update_visible_active; - - wire [(1+32+`NUM_THREADS-1):0] ipdom[`NUM_WARPS-1:0]; - wire join_fall; wire [31:0] join_pc; wire [`NUM_THREADS-1:0] join_tm; reg [`NUM_WARPS-1:0] warp_active; reg [`NUM_WARPS-1:0] warp_stalled; - - reg [`NUM_WARPS-1:0] visible_active; - wire [`NUM_WARPS-1:0] use_active; - + reg [`NUM_WARPS-1:0] visible_active; + wire update_visible_active; + reg [`NUM_WARPS-1:0] warp_lock; - wire wstall_this_cycle; - reg [`NUM_THREADS-1:0] thread_masks[`NUM_WARPS-1:0]; reg [31:0] warp_pcs[`NUM_WARPS-1:0]; // barriers - reg [`NUM_WARPS-1:0] barrier_stall_mask[`NUM_BARRIERS-1:0]; - wire [`NUM_WARPS-1:0] b_mask; - wire [`NW_BITS:0] b_count; - + reg [`NUM_WARPS-1:0] barrier_stall_mask[`NUM_BARRIERS-1:0]; wire reached_barrier_limit; + reg [`NUM_WARPS-1:0] total_barrier_stall; // wspawn reg [31:0] use_wspawn_pc; reg [`NUM_WARPS-1:0] use_wspawn; - wire [`NW_BITS-1:0] warp_to_schedule; - wire schedule; - + wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; wire [31:0] warp_pc; + wire [`NW_BITS-1:0] warp_to_schedule; wire scheduled_warp; - wire hazard; + wire stall_out; wire global_stall; + wire real_schedule; - wire real_schedule; - - wire [31:0] new_pc; - - reg [`NUM_WARPS-1:0] total_barrier_stall; - - reg didnt_split; - - wire stall; + reg didnt_split; always @(posedge clk) begin - integer i; if (reset) begin - for (i = 0; i < `NUM_BARRIERS; i++) begin + for (integer i = 0; i < `NUM_BARRIERS; i++) begin barrier_stall_mask[i] <= 0; end @@ -87,92 +67,92 @@ module VX_warp_sched #( didnt_split <= 0; warp_lock <= 0; - for (i = 1; i < `NUM_WARPS; i++) begin + for (integer i = 1; i < `NUM_WARPS; i++) begin warp_pcs[i] <= 0; warp_active[i] <= 0; // Activating first warp visible_active[i] <= 0; // Activating first warp thread_masks[i] <= 1; // Activating first thread in first warp end - - end else begin - - if (warp_ctl_if.wspawn) begin - warp_active <= warp_ctl_if.wspawn_wmask; - use_wspawn <= warp_ctl_if.wspawn_wmask & (~`NUM_WARPS'(1)); - use_wspawn_pc <= warp_ctl_if.wspawn_pc; + end else begin + if (warp_ctl_if.wspawn.valid) begin + warp_active <= warp_ctl_if.wspawn.wmask; + use_wspawn <= warp_ctl_if.wspawn.wmask & (~`NUM_WARPS'(1)); + use_wspawn_pc <= warp_ctl_if.wspawn.pc; end - if (warp_ctl_if.is_barrier) begin - warp_stalled[warp_ctl_if.warp_num] <= 0; + if (warp_ctl_if.barrier.valid) begin + warp_stalled[warp_ctl_if.wid] <= 0; if (reached_barrier_limit) begin - barrier_stall_mask[warp_ctl_if.barrier_id] <= 0; + barrier_stall_mask[warp_ctl_if.barrier.id] <= 0; end else begin - barrier_stall_mask[warp_ctl_if.barrier_id][warp_ctl_if.warp_num] <= 1; + barrier_stall_mask[warp_ctl_if.barrier.id][warp_ctl_if.wid] <= 1; end - end else if (warp_ctl_if.change_mask) begin - thread_masks[warp_ctl_if.warp_num] <= warp_ctl_if.thread_mask; - warp_stalled[warp_ctl_if.warp_num] <= 0; - if (0 == warp_ctl_if.thread_mask) begin - warp_active[warp_ctl_if.warp_num] <= 0; - visible_active[warp_ctl_if.warp_num] <= 0; + end else if (warp_ctl_if.tmc.valid) begin + thread_masks[warp_ctl_if.wid] <= warp_ctl_if.tmc.thread_mask; + warp_stalled[warp_ctl_if.wid] <= 0; + if (0 == warp_ctl_if.tmc.thread_mask) begin + warp_active[warp_ctl_if.wid] <= 0; + visible_active[warp_ctl_if.wid] <= 0; end end else if (join_if.is_join && !didnt_split) begin if (!join_fall) begin - warp_pcs[join_if.warp_num] <= join_pc; + warp_pcs[join_if.wid] <= join_pc; end - thread_masks[join_if.warp_num] <= join_tm; - didnt_split <= 0; - end else if (warp_ctl_if.is_split) begin - warp_stalled[warp_ctl_if.warp_num] <= 0; - if (warp_ctl_if.do_split) begin - thread_masks[warp_ctl_if.warp_num] <= warp_ctl_if.split_new_mask; + thread_masks[join_if.wid] <= join_tm; + didnt_split <= 0; + end else if (warp_ctl_if.split.valid) begin + warp_stalled[warp_ctl_if.wid] <= 0; + if (warp_ctl_if.split.diverged) begin + thread_masks[warp_ctl_if.wid] <= warp_ctl_if.split.then_mask; didnt_split <= 0; end else begin didnt_split <= 1; end end - if (update_use_wspawn) begin + if (use_wspawn[warp_to_schedule] && !global_stall) begin use_wspawn[warp_to_schedule] <= 0; thread_masks[warp_to_schedule] <= 1; end // Stalling the scheduling of warps if (wstall_if.wstall) begin - warp_stalled[wstall_if.warp_num] <= 1; - visible_active[wstall_if.warp_num] <= 0; + warp_stalled[wstall_if.wid] <= 1; + visible_active[wstall_if.wid] <= 0; end // Refilling active warps if (update_visible_active) begin - visible_active <= warp_active & (~warp_stalled) & (~total_barrier_stall) & ~warp_lock; + visible_active <= warp_active & ~warp_stalled & ~total_barrier_stall & ~warp_lock; end // Don't change state if stall if (!global_stall && real_schedule && (thread_mask != 0)) begin visible_active[warp_to_schedule] <= 0; - warp_pcs[warp_to_schedule] <= new_pc; + warp_pcs[warp_to_schedule] <= warp_pc + 4; end // Branch if (branch_ctl_if.valid) begin if (branch_ctl_if.taken) begin - warp_pcs[branch_ctl_if.warp_num] <= branch_ctl_if.dest; + warp_pcs[branch_ctl_if.wid] <= branch_ctl_if.dest; end - warp_stalled[branch_ctl_if.warp_num] <= 0; + warp_stalled[branch_ctl_if.wid] <= 0; end // Lock/Release - if (scheduled_warp && !stall) begin - warp_lock[warp_num] <= 1; + if (scheduled_warp && !stall_out) begin + warp_lock[warp_to_schedule] <= 1; end if (ifetch_rsp_if.valid && ifetch_rsp_if.ready) begin - warp_lock[ifetch_rsp_if.warp_num] <= 0; + warp_lock[ifetch_rsp_if.wid] <= 0; end - end end + wire [`NUM_WARPS-1:0] b_mask = barrier_stall_mask[warp_ctl_if.barrier.id][`NUM_WARPS-1:0]; + wire [`NW_BITS:0] b_count; + VX_countones #( .N(`NUM_WARPS) ) barrier_count ( @@ -188,26 +168,24 @@ module VX_warp_sched #( .valids(visible_active), .count (count_visible_active) ); - - assign b_mask = barrier_stall_mask[warp_ctl_if.barrier_id][`NUM_WARPS-1:0]; - assign reached_barrier_limit = (b_count == warp_ctl_if.barrier_num_warps); - - assign wstall_this_cycle = wstall_if.wstall && (wstall_if.warp_num == warp_to_schedule); // Maybe bug + assign reached_barrier_limit = (b_count == warp_ctl_if.barrier.num_warps); assign total_barrier_stall = barrier_stall_mask[0] | barrier_stall_mask[1] | barrier_stall_mask[2] | barrier_stall_mask[3]; - assign update_visible_active = (0 == count_visible_active) && !(stall || wstall_this_cycle || hazard || join_if.is_join); + wire [(1+32+`NUM_THREADS-1):0] ipdom[`NUM_WARPS-1:0]; + wire [(1+32+`NUM_THREADS-1):0] q1 = {1'b1, 32'b0, thread_masks[warp_ctl_if.wid]}; + wire [(1+32+`NUM_THREADS-1):0] q2 = {1'b0, warp_ctl_if.split.pc, warp_ctl_if.split.else_mask}; - wire [(1+32+`NUM_THREADS-1):0] q1 = {1'b1, 32'b0, thread_masks[warp_ctl_if.warp_num]}; - wire [(1+32+`NUM_THREADS-1):0] q2 = {1'b0, warp_ctl_if.split_save_pc, warp_ctl_if.split_later_mask}; + assign {join_fall, join_pc, join_tm} = ipdom[join_if.wid]; - assign {join_fall, join_pc, join_tm} = ipdom[join_if.warp_num]; + for (genvar i = 0; i < `NUM_WARPS; i++) begin + wire push = warp_ctl_if.split.valid + && warp_ctl_if.split.diverged + && (i == warp_ctl_if.wid); - genvar i; - for (i = 0; i < `NUM_WARPS; i++) begin - wire push = warp_ctl_if.is_split && warp_ctl_if.do_split && (i == warp_ctl_if.warp_num); - wire pop = join_if.is_join && (i == join_if.warp_num); + wire pop = join_if.is_join + && (i == join_if.wid); VX_ipdom_stack #( .WIDTH(1+32+`NUM_THREADS), @@ -217,37 +195,40 @@ module VX_warp_sched #( .reset(reset), .push (push), .pop (pop), - .d (ipdom[i]), .q1 (q1), .q2 (q2), + .d (ipdom[i]), `UNUSED_PIN (empty), `UNUSED_PIN (full) ); end - wire should_bra = (branch_ctl_if.valid && branch_ctl_if.taken && (warp_to_schedule == branch_ctl_if.warp_num)); + wire schedule; - assign hazard = should_bra && schedule; + wire branch_hazard = schedule + && branch_ctl_if.valid + && branch_ctl_if.taken + && (branch_ctl_if.wid == warp_to_schedule); - assign real_schedule = schedule && !warp_stalled[warp_to_schedule] && !total_barrier_stall[warp_to_schedule] && !warp_lock[0]; + assign real_schedule = schedule + && !warp_stalled[warp_to_schedule] + && !total_barrier_stall[warp_to_schedule] + && !warp_lock[0]; - assign global_stall = stall || wstall_this_cycle || hazard || !real_schedule || join_if.is_join; + wire wstall_this_cycle = wstall_if.wstall && (wstall_if.wid == warp_to_schedule); // Maybe bug - assign scheduled_warp = !(wstall_this_cycle || hazard || !real_schedule || join_if.is_join) && !reset; + assign update_visible_active = (0 == count_visible_active) && !(stall_out || wstall_this_cycle || branch_hazard || join_if.is_join); - wire real_use_wspawn = use_wspawn[warp_to_schedule]; + assign global_stall = stall_out || wstall_this_cycle || branch_hazard || !real_schedule || join_if.is_join; - assign warp_pc = real_use_wspawn ? use_wspawn_pc : warp_pcs[warp_to_schedule]; + assign scheduled_warp = !(wstall_this_cycle || branch_hazard || !real_schedule || join_if.is_join) && !reset; + + assign warp_pc = use_wspawn[warp_to_schedule] ? use_wspawn_pc : warp_pcs[warp_to_schedule]; - assign thread_mask = global_stall ? 0 : (real_use_wspawn ? `NUM_THREADS'(1) : thread_masks[warp_to_schedule]); + assign thread_mask = global_stall ? 0 : (use_wspawn[warp_to_schedule] ? `NUM_THREADS'(1) : thread_masks[warp_to_schedule]); - assign warp_num = warp_to_schedule; - - assign update_use_wspawn = use_wspawn[warp_to_schedule] && !global_stall; - - assign new_pc = warp_pc + 4; - - assign use_active = (count_visible_active != 0) ? visible_active : (warp_active & (~warp_stalled) & (~total_barrier_stall) & (~warp_lock)); + wire [`NUM_WARPS-1:0] use_active = (count_visible_active != 0) ? visible_active : + (warp_active & ~warp_stalled & ~total_barrier_stall & ~warp_lock); // Choosing a warp to schedule VX_fixed_arbiter #( @@ -261,17 +242,17 @@ module VX_warp_sched #( `UNUSED_PIN (grant_onehot) ); - assign stall = ~ifetch_req_if.ready && ifetch_req_if.valid; + assign stall_out = ~ifetch_req_if.ready && ifetch_req_if.valid; VX_generic_register #( .N(1 + `NUM_THREADS + 32 + `NW_BITS) ) fetch_reg ( .clk (clk), .reset (reset), - .stall (stall), + .stall (stall_out), .flush (0), - .in ({(| thread_mask), thread_mask, warp_pc, warp_num}), - .out ({ifetch_req_if.valid, ifetch_req_if.thread_mask, ifetch_req_if.curr_PC, ifetch_req_if.warp_num}) + .in ({(| thread_mask), thread_mask, warp_pc, warp_to_schedule}), + .out ({ifetch_req_if.valid, ifetch_req_if.thread_mask, ifetch_req_if.curr_PC, ifetch_req_if.wid}) ); assign busy = (warp_active != 0); diff --git a/hw/rtl/VX_writeback.v b/hw/rtl/VX_writeback.v index 717e9cf4..dd5da562 100644 --- a/hw/rtl/VX_writeback.v +++ b/hw/rtl/VX_writeback.v @@ -8,6 +8,7 @@ module VX_writeback #( // inputs VX_exu_to_cmt_if alu_commit_if, + VX_exu_to_cmt_if bru_commit_if, VX_exu_to_cmt_if lsu_commit_if, VX_exu_to_cmt_if csr_commit_if, VX_exu_to_cmt_if mul_commit_if, @@ -20,26 +21,24 @@ module VX_writeback #( ); reg [`ISSUEQ_SIZE-1:0] wb_valid_table, wb_valid_table_n; reg [`ISSUEQ_SIZE-1:0][`NUM_THREADS-1:0][31:0] wb_data_table, wb_data_table_n; - reg [`ISSUEQ_SIZE-1:0][`NW_BITS-1:0] wb_warp_num_table, wb_warp_num_table_n; + reg [`ISSUEQ_SIZE-1:0][`NW_BITS-1:0] wb_wid_table, wb_wid_table_n; reg [`ISSUEQ_SIZE-1:0][`NUM_THREADS-1:0] wb_thread_mask_table, wb_thread_mask_table_n; reg [`ISSUEQ_SIZE-1:0][31:0] wb_curr_PC_table, wb_curr_PC_table_n; reg [`ISSUEQ_SIZE-1:0][`NR_BITS-1:0] wb_rd_table, wb_rd_table_n; + reg wb_valid, wb_valid_n; reg [`NUM_THREADS-1:0][31:0] wb_data, wb_data_n; - reg [`NW_BITS-1:0] wb_warp_num, wb_warp_num_n; + reg [`NW_BITS-1:0] wb_wid, wb_wid_n; reg [`NUM_THREADS-1:0] wb_thread_mask, wb_thread_mask_n; reg [31:0] wb_curr_PC, wb_curr_PC_n; reg [`NR_BITS-1:0] wb_rd, wb_rd_n; reg [`ISTAG_BITS-1:0] wb_index; - reg [`ISTAG_BITS-1:0] wb_index_n; - - reg wb_valid; - reg wb_valid_n; + reg [`ISTAG_BITS-1:0] wb_index_n; always @(*) begin wb_valid_table_n = wb_valid_table; - wb_warp_num_table_n = wb_warp_num_table; + wb_wid_table_n = wb_wid_table; wb_thread_mask_table_n = wb_thread_mask_table; wb_curr_PC_table_n = wb_curr_PC_table; wb_rd_table_n = wb_rd_table; @@ -53,16 +52,25 @@ module VX_writeback #( wb_valid_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.wb; wb_thread_mask_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.thread_mask; wb_data_table_n [alu_commit_if.issue_tag] = alu_commit_if.data; - wb_warp_num_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.warp_num; + wb_wid_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.wid; wb_curr_PC_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.curr_PC; wb_rd_table_n [alu_commit_if.issue_tag] = cmt_to_issue_if.alu_data.rd; end + if (bru_commit_if.valid) begin + wb_valid_table_n [bru_commit_if.issue_tag] = cmt_to_issue_if.bru_data.wb; + wb_thread_mask_table_n [bru_commit_if.issue_tag] = cmt_to_issue_if.bru_data.thread_mask; + wb_data_table_n [bru_commit_if.issue_tag] = bru_commit_if.data; + wb_wid_table_n [bru_commit_if.issue_tag] = cmt_to_issue_if.bru_data.wid; + wb_curr_PC_table_n [bru_commit_if.issue_tag] = cmt_to_issue_if.bru_data.curr_PC; + wb_rd_table_n [bru_commit_if.issue_tag] = cmt_to_issue_if.bru_data.rd; + end + if (lsu_commit_if.valid) begin wb_valid_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.wb; wb_thread_mask_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.thread_mask; wb_data_table_n [lsu_commit_if.issue_tag] = lsu_commit_if.data; - wb_warp_num_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.warp_num; + wb_wid_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.wid; wb_curr_PC_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.curr_PC; wb_rd_table_n [lsu_commit_if.issue_tag] = cmt_to_issue_if.lsu_data.rd; end @@ -71,7 +79,7 @@ module VX_writeback #( wb_valid_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.wb; wb_thread_mask_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.thread_mask; wb_data_table_n [csr_commit_if.issue_tag] = csr_commit_if.data; - wb_warp_num_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.warp_num; + wb_wid_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.wid; wb_curr_PC_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.curr_PC; wb_rd_table_n [csr_commit_if.issue_tag] = cmt_to_issue_if.csr_data.rd; end @@ -80,7 +88,7 @@ module VX_writeback #( wb_valid_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.wb; wb_thread_mask_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.thread_mask; wb_data_table_n [mul_commit_if.issue_tag] = mul_commit_if.data; - wb_warp_num_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.warp_num; + wb_wid_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.wid; wb_curr_PC_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.curr_PC; wb_rd_table_n [mul_commit_if.issue_tag] = cmt_to_issue_if.mul_data.rd; end @@ -89,7 +97,7 @@ module VX_writeback #( wb_valid_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.wb; wb_thread_mask_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.thread_mask; wb_data_table_n [fpu_commit_if.issue_tag] = fpu_commit_if.data; - wb_warp_num_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.warp_num; + wb_wid_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.wid; wb_curr_PC_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.curr_PC; wb_rd_table_n [fpu_commit_if.issue_tag] = cmt_to_issue_if.fpu_data.rd; end @@ -98,23 +106,25 @@ module VX_writeback #( wb_valid_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.wb; wb_thread_mask_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.thread_mask; wb_data_table_n [gpu_commit_if.issue_tag] = gpu_commit_if.data; - wb_warp_num_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.warp_num; + wb_wid_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.wid; wb_curr_PC_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.curr_PC; wb_rd_table_n [gpu_commit_if.issue_tag] = cmt_to_issue_if.gpu_data.rd; end end - integer i; - always @(*) begin - wb_index_n = 0; - wb_valid_n = 0; - for (i = `ISSUEQ_SIZE-1; i >= 0; i--) begin + wb_index_n = 0; + wb_valid_n = 0; + wb_thread_mask_n = {`NUM_THREADS{1'bx}}; + wb_wid_n = {`NW_BITS{1'bx}}; + wb_curr_PC_n = {32{1'bx}}; + wb_data_n = {(`NUM_THREADS * 32){1'bx}}; + for (integer i = `ISSUEQ_SIZE-1; i >= 0; i--) begin if (wb_valid_table_n[i]) begin wb_index_n = `ISTAG_BITS'(i); wb_valid_n = 1; wb_thread_mask_n= wb_thread_mask_table_n[i]; - wb_warp_num_n = wb_warp_num_table_n[i]; + wb_wid_n = wb_wid_table_n[i]; wb_curr_PC_n = wb_curr_PC_table_n[i]; wb_rd_n = wb_rd_table_n[i]; wb_data_n = wb_data_table_n[i]; @@ -130,15 +140,15 @@ module VX_writeback #( end else begin wb_valid_table <= wb_valid_table_n; wb_thread_mask_table <= wb_thread_mask_table_n; - wb_warp_num_table <= wb_warp_num_table_n; + wb_wid_table <= wb_wid_table_n; wb_curr_PC_table <= wb_curr_PC_table_n; wb_rd_table <= wb_rd_table_n; wb_data_table <= wb_data_table_n; wb_index <= wb_index_n; - wb_valid <= wb_valid_n && writeback_if.ready; + wb_valid <= wb_valid_n; wb_thread_mask <= wb_thread_mask_n; - wb_warp_num <= wb_warp_num_n; + wb_wid <= wb_wid_n; wb_curr_PC <= wb_curr_PC_n; wb_rd <= wb_rd_n; wb_data <= wb_data_n; @@ -148,18 +158,10 @@ module VX_writeback #( // writeback request assign writeback_if.valid = wb_valid; assign writeback_if.thread_mask = wb_thread_mask; - assign writeback_if.warp_num = wb_warp_num; + assign writeback_if.wid = wb_wid; assign writeback_if.curr_PC = wb_curr_PC; assign writeback_if.rd = wb_rd; assign writeback_if.data = wb_data; - - // commit back-pressure - assign alu_commit_if.ready = 1'b1; - assign lsu_commit_if.ready = 1'b1; - assign csr_commit_if.ready = 1'b1; - assign mul_commit_if.ready = 1'b1; - assign fpu_commit_if.ready = 1'b1; - assign gpu_commit_if.ready = 1'b1; // special workaround to get RISC-V tests Pass/Fail status reg [31:0] last_wb_value [`NUM_REGS-1:0] /* verilator public */; diff --git a/hw/rtl/Vortex.v b/hw/rtl/Vortex.v index a606c15f..8122f184 100644 --- a/hw/rtl/Vortex.v +++ b/hw/rtl/Vortex.v @@ -191,8 +191,7 @@ module Vortex ( wire [`CLOG2(`NUM_CLUSTERS)-1:0] csr_io_request_id = `CLOG2(`NUM_CLUSTERS)'(csr_io_req_coreid >> `CLOG2(`NUM_CLUSTERS)); wire [`NC_BITS-1:0] per_cluster_csr_io_req_coreid = `NC_BITS'(csr_io_req_coreid); - genvar i; - for (i = 0; i < `NUM_CLUSTERS; i++) begin + for (genvar i = 0; i < `NUM_CLUSTERS; i++) begin VX_cluster #( .CLUSTER_ID(i) ) cluster ( @@ -358,7 +357,7 @@ module Vortex ( wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdin_tag; wire [`NUM_CLUSTERS-1:0] l3_snp_fwdin_ready; - for (i = 0; i < `L3NUM_REQUESTS; i++) begin + for (genvar i = 0; i < `L3NUM_REQUESTS; i++) begin // Core Request assign l3_core_req_valid [i] = per_cluster_dram_req_valid [i]; assign l3_core_req_rw [i] = per_cluster_dram_req_rw [i]; diff --git a/hw/rtl/cache/VX_bank.v b/hw/rtl/cache/VX_bank.v index 73f955a9..fc68ca09 100644 --- a/hw/rtl/cache/VX_bank.v +++ b/hw/rtl/cache/VX_bank.v @@ -108,7 +108,7 @@ module VX_bank #( wire[31:0] debug_pc_st0; wire debug_wb_st0; wire[`NR_BITS-1:0] debug_rd_st0; - wire[`NW_BITS-1:0] debug_warp_num_st0; + wire[`NW_BITS-1:0] debug_wid_st0; wire debug_rw_st0; wire[WORD_SIZE-1:0] debug_byteen_st0; wire[`REQS_BITS-1:0] debug_tid_st0; @@ -117,7 +117,7 @@ module VX_bank #( wire[31:0] debug_pc_st1e; wire debug_wb_st1e; wire[`NR_BITS-1:0] debug_rd_st1e; - wire[`NW_BITS-1:0] debug_warp_num_st1e; + wire[`NW_BITS-1:0] debug_wid_st1e; wire debug_rw_st1e; wire[WORD_SIZE-1:0] debug_byteen_st1e; wire[`REQS_BITS-1:0] debug_tid_st1e; @@ -126,7 +126,7 @@ module VX_bank #( wire[31:0] debug_pc_st2; wire debug_wb_st2; wire[`NR_BITS-1:0] debug_rd_st2; - wire[`NW_BITS-1:0] debug_warp_num_st2; + wire[`NW_BITS-1:0] debug_wid_st2; wire debug_rw_st2; wire[WORD_SIZE-1:0] debug_byteen_st2; wire[`REQS_BITS-1:0] debug_tid_st2; @@ -271,10 +271,9 @@ module VX_bank #( wire going_to_write_st1 [STAGE_1_CYCLES-1:0]; `DEBUG_END - integer j; always @(*) begin is_fill_in_pipe = 0; - for (j = 0; j < STAGE_1_CYCLES; j++) begin + for (integer j = 0; j < STAGE_1_CYCLES; j++) begin if (is_fill_st1[j]) begin is_fill_in_pipe = 1; end @@ -360,7 +359,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin - assign {debug_pc_st0, debug_wb_st0, debug_rd_st0, debug_warp_num_st0, debug_tagid_st0, debug_rw_st0, debug_byteen_st0, debug_tid_st0} = qual_inst_meta_st0; + assign {debug_pc_st0, debug_wb_st0, debug_rd_st0, debug_wid_st0, debug_tagid_st0, debug_rw_st0, debug_byteen_st0, debug_tid_st0} = qual_inst_meta_st0; end `endif @@ -375,8 +374,7 @@ module VX_bank #( .out ({is_mrvq_st1[0] , is_snp_st1[0], snp_invalidate_st1[0], going_to_write_st1[0], valid_st1[0], addr_st1[0], wsel_st1[0], writeword_st1[0], inst_meta_st1[0], is_fill_st1[0], writedata_st1[0]}) ); - genvar i; - for (i = 1; i < STAGE_1_CYCLES; i++) begin + for (genvar i = 1; i < STAGE_1_CYCLES; i++) begin VX_generic_register #( .N(1 + 1 + 1 + 1 + 1 + `LINE_ADDR_WIDTH + `UP(`WORD_SELECT_WIDTH) + `WORD_WIDTH + `REQ_INST_META_WIDTH + 1 + `BANK_LINE_WIDTH) ) s0_1_cc ( @@ -446,13 +444,13 @@ module VX_bank #( .clk (clk), .reset (reset), -`ifdef DBG_CORE_REQ_INFO + `ifdef DBG_CORE_REQ_INFO .debug_pc_st1e(debug_pc_st1e), .debug_wb_st1e(debug_wb_st1e), .debug_rd_st1e(debug_rd_st1e), - .debug_warp_num_st1e(debug_warp_num_st1e), + .debug_wid_st1e(debug_wid_st1e), .debug_tagid_st1e(debug_tagid_st1e), -`endif + `endif .stall (stall_bank_pipe), .stall_bank_pipe(stall_bank_pipe), @@ -490,7 +488,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin - assign {debug_pc_st1e, debug_wb_st1e, debug_rd_st1e, debug_warp_num_st1e, debug_tagid_st1e, debug_rw_st1e, debug_byteen_st1e, debug_tid_st1e} = inst_meta_st1[STAGE_1_CYCLES-1]; + assign {debug_pc_st1e, debug_wb_st1e, debug_rd_st1e, debug_wid_st1e, debug_tagid_st1e, debug_rw_st1e, debug_byteen_st1e, debug_tid_st1e} = inst_meta_st1[STAGE_1_CYCLES-1]; end `endif @@ -531,7 +529,7 @@ module VX_bank #( `ifdef DBG_CORE_REQ_INFO if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin - assign {debug_pc_st2, debug_wb_st2, debug_rd_st2, debug_warp_num_st2, debug_tagid_st2, debug_rw_st2, debug_byteen_st2, debug_tid_st2} = inst_meta_st2; + assign {debug_pc_st2, debug_wb_st2, debug_rd_st2, debug_wid_st2, debug_tagid_st2, debug_rw_st2, debug_byteen_st2, debug_tid_st2} = inst_meta_st2; end `endif @@ -543,10 +541,10 @@ module VX_bank #( assign mrvq_push_stall = miss_add_unqual && mrvq_full; wire miss_add = miss_add_unqual - && !mrvq_full - && !(cwbq_push_stall - || dwbq_push_stall - || dram_fill_req_stall); + && !mrvq_full + && !(cwbq_push_stall + || dwbq_push_stall + || dram_fill_req_stall); assign recover_mrvq_state_st2 = miss_add_unqual && is_mrvq_st2; // Doesn't need to include the stalls @@ -718,7 +716,9 @@ module VX_bank #( always @(posedge clk) begin if (reset) begin dwbq_dual_valid_sel <= 0; - end else if (dwbq_is_dwb_out && dwbq_is_snp_out && (dram_wb_req_fire || snp_rsp_fire)) begin + end else if (dwbq_is_dwb_out + && dwbq_is_snp_out + && (dram_wb_req_fire || snp_rsp_fire)) begin dwbq_dual_valid_sel <= ~dwbq_dual_valid_sel; end end diff --git a/hw/rtl/cache/VX_cache.v b/hw/rtl/cache/VX_cache.v index 8e56a942..25fa81aa 100644 --- a/hw/rtl/cache/VX_cache.v +++ b/hw/rtl/cache/VX_cache.v @@ -132,12 +132,12 @@ module VX_cache #( wire[31:0] debug_core_req_use_pc; wire debug_core_req_wb; wire[`NR_BITS-1:0] debug_core_req_rd; - wire[`NW_BITS-1:0] debug_core_req_warp_num; + wire[`NW_BITS-1:0] debug_core_req_wid; wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_core_req_idx; /* verilator lint_on UNUSED */ if (WORD_SIZE != `GLOBAL_BLOCK_SIZE) begin - assign {debug_core_req_use_pc, debug_core_req_wb, debug_core_req_rd, debug_core_req_warp_num, debug_core_req_idx} = core_req_tag[0]; + assign {debug_core_req_use_pc, debug_core_req_wb, debug_core_req_rd, debug_core_req_wid, debug_core_req_idx} = core_req_tag[0]; end `endif @@ -246,10 +246,8 @@ module VX_cache #( assign dram_req_tag = dram_req_addr; assign dram_rsp_ready = (| per_bank_dram_fill_rsp_ready); - - genvar i; - for (i = 0; i < NUM_BANKS; i++) begin + for (genvar i = 0; i < NUM_BANKS; i++) begin wire [NUM_REQUESTS-1:0] curr_bank_core_req_valid; wire [NUM_REQUESTS-1:0] curr_bank_core_req_rw; wire [NUM_REQUESTS-1:0][WORD_SIZE-1:0] curr_bank_core_req_byteen; diff --git a/hw/rtl/cache/VX_cache_core_req_bank_sel.v b/hw/rtl/cache/VX_cache_core_req_bank_sel.v index fa5372f3..f00984b2 100644 --- a/hw/rtl/cache/VX_cache_core_req_bank_sel.v +++ b/hw/rtl/cache/VX_cache_core_req_bank_sel.v @@ -18,12 +18,10 @@ module VX_cache_core_req_bank_sel #( output reg [NUM_BANKS-1:0][NUM_REQUESTS-1:0] per_bank_valid, output wire core_req_ready ); - integer i; - if (NUM_BANKS == 1) begin always @(*) begin per_bank_valid = 0; - for (i = 0; i < NUM_REQUESTS; i++) begin + for (integer i = 0; i < NUM_REQUESTS; i++) begin per_bank_valid[0][i] = core_req_valid[i]; end end @@ -33,7 +31,7 @@ module VX_cache_core_req_bank_sel #( always @(*) begin per_bank_valid = 0; per_bank_ready_sel = {NUM_BANKS{1'b1}}; - for (i = 0; i < NUM_REQUESTS; i++) begin + for (integer i = 0; i < NUM_REQUESTS; i++) begin per_bank_valid[core_req_addr[i][`BANK_SELECT_ADDR_RNG]][i] = core_req_valid[i]; per_bank_ready_sel[core_req_addr[i][`BANK_SELECT_ADDR_RNG]] = 0; end diff --git a/hw/rtl/cache/VX_cache_core_rsp_merge.v b/hw/rtl/cache/VX_cache_core_rsp_merge.v index 4a72e717..7cf8b1c8 100644 --- a/hw/rtl/cache/VX_cache_core_rsp_merge.v +++ b/hw/rtl/cache/VX_cache_core_rsp_merge.v @@ -48,14 +48,12 @@ module VX_cache_core_rsp_merge #( wire stall = ~core_rsp_ready && (| core_rsp_valid); - integer i; - if (CORE_TAG_ID_BITS != 0) begin always @(*) begin core_rsp_valid_unqual = 0; core_rsp_data_unqual = 0; core_rsp_tag_unqual = per_bank_core_rsp_tag[main_bank_index]; - for (i = 0; i < NUM_BANKS; i++) begin + for (integer i = 0; i < NUM_BANKS; i++) begin if (per_bank_core_rsp_valid[i] && (per_bank_core_rsp_tag[i][CORE_TAG_ID_BITS-1:0] == per_bank_core_rsp_tag[main_bank_index][CORE_TAG_ID_BITS-1:0])) begin core_rsp_valid_unqual[per_bank_core_rsp_tid[i]] = 1; @@ -71,7 +69,7 @@ module VX_cache_core_rsp_merge #( core_rsp_valid_unqual = 0; core_rsp_data_unqual = 0; core_rsp_tag_unqual = 0; - for (i = 0; i < NUM_BANKS; i++) begin + for (integer i = 0; i < NUM_BANKS; i++) begin if (per_bank_core_rsp_valid[i] && !core_rsp_valid_unqual[per_bank_core_rsp_tid[i]] && ((main_bank_index == `BANK_BITS'(i)) diff --git a/hw/rtl/cache/VX_cache_dram_req_arb.v b/hw/rtl/cache/VX_cache_dram_req_arb.v index 03989a28..f3117fd2 100644 --- a/hw/rtl/cache/VX_cache_dram_req_arb.v +++ b/hw/rtl/cache/VX_cache_dram_req_arb.v @@ -106,8 +106,7 @@ module VX_cache_dram_req_arb #( `UNUSED_PIN (grant_onehot) ); - genvar i; - for (i = 0; i < NUM_BANKS; i++) begin + for (genvar i = 0; i < NUM_BANKS; i++) begin assign per_bank_dram_wb_req_ready[i] = dram_req_ready && (dwb_bank == `BANK_BITS'(i)); end diff --git a/hw/rtl/cache/VX_cache_miss_resrv.v b/hw/rtl/cache/VX_cache_miss_resrv.v index f7bed651..6535837d 100644 --- a/hw/rtl/cache/VX_cache_miss_resrv.v +++ b/hw/rtl/cache/VX_cache_miss_resrv.v @@ -77,9 +77,8 @@ module VX_cache_miss_resrv #( reg [MRVQ_SIZE-1:0] make_ready; reg [MRVQ_SIZE-1:0] make_ready_push; reg [MRVQ_SIZE-1:0] valid_address_match; - - genvar i; - for (i = 0; i < MRVQ_SIZE; i++) begin + + for (genvar i = 0; i < MRVQ_SIZE; i++) begin assign valid_address_match[i] = valid_table[i] ? (addr_table[i] == fill_addr_st1) : 0; assign make_ready[i] = is_fill_st1 && valid_address_match[i]; end @@ -121,7 +120,6 @@ module VX_cache_miss_resrv #( head_ptr <= 0; tail_ptr <= 0; end else begin - if (mrvq_push) begin valid_table[enqueue_index] <= 1; ready_table[enqueue_index] <= mrvq_init_ready_state; @@ -157,11 +155,10 @@ module VX_cache_miss_resrv #( end `ifdef DBG_PRINT_CACHE_MSRQ - integer j; always @(posedge clk) begin if (mrvq_push || mrvq_pop || increment_head || recover_state) begin $write("%t: bank%0d:%0d msrq: push=%b pop=%b incr=%d recv=%d", $time, CACHE_ID, BANK_ID, mrvq_push, mrvq_pop, increment_head, recover_state); - for (j = 0; j < MRVQ_SIZE; j++) begin + for (integer j = 0; j < MRVQ_SIZE; j++) begin if (valid_table[j]) begin $write(" "); if (schedule_ptr == $bits(schedule_ptr)'(j)) $write("*"); diff --git a/hw/rtl/cache/VX_snp_forwarder.v b/hw/rtl/cache/VX_snp_forwarder.v index 11d3266e..7a4f2aec 100644 --- a/hw/rtl/cache/VX_snp_forwarder.v +++ b/hw/rtl/cache/VX_snp_forwarder.v @@ -83,9 +83,7 @@ module VX_snp_forwarder #( end end - genvar i; - - for (i = 0; i < NUM_REQUESTS; i++) begin + for (genvar i = 0; i < NUM_REQUESTS; i++) begin assign snp_fwdout_valid[i] = snp_req_valid && snp_req_ready; assign snp_fwdout_addr[i] = snp_req_addr; assign snp_fwdout_invalidate[i] = snp_req_invalidate; @@ -110,7 +108,7 @@ module VX_snp_forwarder #( assign fwdin_valid = snp_fwdin_valid[fwdin_sel]; assign fwdin_tag = snp_fwdin_tag[fwdin_sel]; - for (i = 0; i < NUM_REQUESTS; i++) begin + for (genvar i = 0; i < NUM_REQUESTS; i++) begin assign snp_fwdin_ready[i] = fwdin_ready && (fwdin_sel == `REQS_BITS'(i)); end diff --git a/hw/rtl/cache/VX_snp_rsp_arb.v b/hw/rtl/cache/VX_snp_rsp_arb.v index e9662c34..331b73a1 100644 --- a/hw/rtl/cache/VX_snp_rsp_arb.v +++ b/hw/rtl/cache/VX_snp_rsp_arb.v @@ -34,8 +34,7 @@ module VX_snp_rsp_arb #( assign snp_rsp_valid = fsq_valid; assign snp_rsp_tag = per_bank_snp_rsp_tag[fsq_bank]; - genvar i; - for (i = 0; i < NUM_BANKS; i++) begin + for (genvar i = 0; i < NUM_BANKS; i++) begin assign per_bank_snp_rsp_ready[i] = snp_rsp_ready && (fsq_bank == `BANK_BITS'(i)); end diff --git a/hw/rtl/cache/VX_tag_data_access.v b/hw/rtl/cache/VX_tag_data_access.v index 0b1748de..a03224fc 100644 --- a/hw/rtl/cache/VX_tag_data_access.v +++ b/hw/rtl/cache/VX_tag_data_access.v @@ -30,7 +30,7 @@ module VX_tag_data_access #( input wire[31:0] debug_pc_st1e, input wire debug_wb_st1e, input wire[`NR_BITS-1:0] debug_rd_st1e, - input wire[`NW_BITS-1:0] debug_warp_num_st1e, + input wire[`NW_BITS-1:0] debug_wid_st1e, input wire[`UP(CORE_TAG_ID_BITS)-1:0] debug_tagid_st1e, `IGNORE_WARNINGS_END `endif @@ -135,8 +135,7 @@ module VX_tag_data_access #( .out ({read_valid_st1c[0], read_dirty_st1c[0], read_dirtyb_st1c[0], read_tag_st1c[0], read_data_st1c[0]}) ); - genvar i; - for (i = 1; i < STAGE_1_CYCLES-1; i++) begin + for (genvar i = 1; i < STAGE_1_CYCLES-1; i++) begin VX_generic_register #( .N(1 + 1 + BANK_LINE_SIZE + `TAG_SELECT_BITS + `BANK_LINE_WIDTH) ) s0_1_cc ( @@ -157,11 +156,11 @@ module VX_tag_data_access #( if (`WORD_SELECT_WIDTH != 0) begin wire [`WORD_WIDTH-1:0] readword = use_read_data_st1e[wordsel_st1e * `WORD_WIDTH +: `WORD_WIDTH]; - for (i = 0; i < WORD_SIZE; i++) begin + for (genvar i = 0; i < WORD_SIZE; i++) begin assign readword_st1e[i * 8 +: 8] = readword[i * 8 +: 8] & {8{mem_byteen_st1e[i]}}; end end else begin - for (i = 0; i < WORD_SIZE; i++) begin + for (genvar i = 0; i < WORD_SIZE; i++) begin assign readword_st1e[i * 8 +: 8] = use_read_data_st1e[i * 8 +: 8] & {8{mem_byteen_st1e[i]}}; end end @@ -176,7 +175,7 @@ module VX_tag_data_access #( && ~is_snp_st1e && ~real_writefill; - for (i = 0; i < `BANK_LINE_WORDS; i++) begin + for (genvar i = 0; i < `BANK_LINE_WORDS; i++) begin wire normal_write = ((`WORD_SELECT_WIDTH == 0) || (wordsel_st1e == `UP(`WORD_SELECT_WIDTH)'(i))) && should_write; @@ -218,15 +217,15 @@ module VX_tag_data_access #( if (valid_req_st1e) begin if ((| use_write_enable)) begin if (writefill_st1e) begin - $display("%t: bank%0d:%0d store-fill: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, data=%0h", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, writeladdr_st1e, writetag_st1e, use_write_data); + $display("%t: bank%0d:%0d store-fill: wid=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, data=%0h", $time, CACHE_ID, BANK_ID, debug_wid_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, writeladdr_st1e, writetag_st1e, use_write_data); end else begin - $display("%t: bank%0d:%0d store-write: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, wsel=%0d, data=%0h", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, writeladdr_st1e, writetag_st1e, wordsel_st1e, writeword_st1e); + $display("%t: bank%0d:%0d store-write: wid=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, wsel=%0d, data=%0h", $time, CACHE_ID, BANK_ID, debug_wid_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, writeladdr_st1e, writetag_st1e, wordsel_st1e, writeword_st1e); end end else if (miss_st1e) begin - $display("%t: bank%0d:%0d store-miss: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e); + $display("%t: bank%0d:%0d store-miss: wid=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b", $time, CACHE_ID, BANK_ID, debug_wid_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e); end else begin - $display("%t: bank%0d:%0d store-read: warp=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, wsel=%0d, data=%0h", $time, CACHE_ID, BANK_ID, debug_warp_num_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, readaddr_st10, qual_read_tag_st1, wordsel_st1e, qual_read_data_st1); + $display("%t: bank%0d:%0d store-read: wid=%0d, PC=%0h, tag=%0h, wb=%b, rd=%0d, dirty=%b, blk_addr=%0d, tag_id=%0h, wsel=%0d, data=%0h", $time, CACHE_ID, BANK_ID, debug_wid_st1e, debug_pc_st1e, debug_tagid_st1e, debug_wb_st1e, debug_rd_st1e, dirty_st1e, readaddr_st10, qual_read_tag_st1, wordsel_st1e, qual_read_data_st1); end end end diff --git a/hw/rtl/fp_cores/VX_fp_fpga.v b/hw/rtl/fp_cores/VX_fp_fpga.v index fdce1d67..7634622f 100644 --- a/hw/rtl/fp_cores/VX_fp_fpga.v +++ b/hw/rtl/fp_cores/VX_fp_fpga.v @@ -41,8 +41,6 @@ module VX_fp_fpga ( reg [FPC_BITS-1:0] core_select; reg fmadd_negate; - genvar i; - always @(*) begin core_select = 0; fmadd_negate = 0; @@ -246,7 +244,7 @@ module VX_fp_fpga ( .valid_out (fp_valid) ); - for (i = 0; i < NUM_FPC; i++) begin + for (genvar i = 0; i < NUM_FPC; i++) begin assign per_core_ready_out[i] = ready_out && (i == fp_index); end diff --git a/hw/rtl/fp_cores/VX_fp_noncomp.v b/hw/rtl/fp_cores/VX_fp_noncomp.v index 4ae4c047..f83c691c 100644 --- a/hw/rtl/fp_cores/VX_fp_noncomp.v +++ b/hw/rtl/fp_cores/VX_fp_noncomp.v @@ -48,10 +48,8 @@ module VX_fp_noncomp ( reg [`NUM_THREADS-1:0][31:0] fcmp_res; // result of comparison reg [`NUM_THREADS-1:0][ 4:0] fcmp_excp; // exception of comparison - genvar i; - // Setup - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin assign a_sign[i] = dataa[i][31]; assign a_exponent[i] = dataa[i][30:23]; assign a_mantissa[i] = dataa[i][22:0]; @@ -77,7 +75,7 @@ module VX_fp_noncomp ( end // FCLASS - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin always @(*) begin if (a_type[i].is_normal) begin fclass_mask[i] = a_sign[i] ? NEG_NORM : POS_NORM; @@ -101,7 +99,7 @@ module VX_fp_noncomp ( end // Min/Max - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin always @(*) begin if (a_type[i].is_nan && b_type[i].is_nan) fminmax_res[i] = {1'b0, 8'hff, 1'b1, 22'd0}; // canonical qNaN @@ -120,7 +118,7 @@ module VX_fp_noncomp ( end // Sign Injection - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin always @(*) begin case (op) `FPU_SGNJ: fsgnj_res[i] = { b_sign[i], a_exponent[i], a_mantissa[i]}; @@ -132,7 +130,7 @@ module VX_fp_noncomp ( end // Comparison - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin always @(*) begin case (frm) `FRM_RNE: begin @@ -193,7 +191,7 @@ module VX_fp_noncomp ( endcase end - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin always @(*) begin tmp_valid = 1'b1; case (op) diff --git a/hw/rtl/fp_cores/VX_fpnew.v b/hw/rtl/fp_cores/VX_fpnew.v index bcd27376..d90f652e 100644 --- a/hw/rtl/fp_cores/VX_fpnew.v +++ b/hw/rtl/fp_cores/VX_fpnew.v @@ -129,11 +129,9 @@ module VX_fpnew #( endcase end - genvar i; - `DISABLE_TRACING - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin if (0 == i) begin fpnew_top #( .Features (FPU_FEATURES), @@ -194,8 +192,7 @@ module VX_fpnew #( `ENABLE_TRACING assign fpu_valid_in = valid_in; - assign ready_in = fpu_ready_in - || ~valid_in; // fix + assign ready_in = fpu_ready_in; assign fpu_tag_in = tag_in; assign tag_out = fpu_tag_out; diff --git a/hw/rtl/fp_cores/altera/VX_fp_add.v b/hw/rtl/fp_cores/altera/VX_fp_add.v index e055adfa..c7c39506 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_add.v +++ b/hw/rtl/fp_cores/altera/VX_fp_add.v @@ -22,9 +22,7 @@ module VX_fp_add ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin twentynm_fp_mac mac_fp_wys ( // inputs .accumulate(), diff --git a/hw/rtl/fp_cores/altera/VX_fp_div.v b/hw/rtl/fp_cores/altera/VX_fp_div.v index a0db0790..54fe7e57 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_div.v +++ b/hw/rtl/fp_cores/altera/VX_fp_div.v @@ -22,9 +22,7 @@ module VX_fp_div ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin acl_fp_div fdiv ( .clk (clk), .areset (1'b0), diff --git a/hw/rtl/fp_cores/altera/VX_fp_ftoi.v b/hw/rtl/fp_cores/altera/VX_fp_ftoi.v index 3036410a..a7ba66ae 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_ftoi.v +++ b/hw/rtl/fp_cores/altera/VX_fp_ftoi.v @@ -21,9 +21,7 @@ module VX_fp_ftoi ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin acl_fp_ftoi ftoi ( .clk (clk), .areset (1'b0), diff --git a/hw/rtl/fp_cores/altera/VX_fp_ftou.v b/hw/rtl/fp_cores/altera/VX_fp_ftou.v index 461d45df..a0912f12 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_ftou.v +++ b/hw/rtl/fp_cores/altera/VX_fp_ftou.v @@ -21,9 +21,7 @@ module VX_fp_ftou ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin acl_fp_ftou ftou ( .clk (clk), .areset (1'b0), diff --git a/hw/rtl/fp_cores/altera/VX_fp_itof.v b/hw/rtl/fp_cores/altera/VX_fp_itof.v index d67749ad..c95ede12 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_itof.v +++ b/hw/rtl/fp_cores/altera/VX_fp_itof.v @@ -21,9 +21,7 @@ module VX_fp_itof ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin acl_fp_itof itof ( .clk (clk), .areset (1'b0), diff --git a/hw/rtl/fp_cores/altera/VX_fp_madd.v b/hw/rtl/fp_cores/altera/VX_fp_madd.v index c7939cd7..58b410d1 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_madd.v +++ b/hw/rtl/fp_cores/altera/VX_fp_madd.v @@ -28,9 +28,7 @@ module VX_fp_madd ( wire [`ISTAG_BITS-1:0] out_tag_st0, out_tag_st1; wire in_valid_st0, out_valid_st0, out_valid_st1; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin twentynm_fp_mac mac_fp_wys0 ( // inputs .accumulate(), diff --git a/hw/rtl/fp_cores/altera/VX_fp_msub.v b/hw/rtl/fp_cores/altera/VX_fp_msub.v index 211c1b34..62fb99b9 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_msub.v +++ b/hw/rtl/fp_cores/altera/VX_fp_msub.v @@ -28,9 +28,7 @@ module VX_fp_msub ( wire [`ISTAG_BITS-1:0] out_tag_st0, out_tag_st1; wire in_valid_st0, out_valid_st0, out_valid_st1; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin twentynm_fp_mac mac_fp_wys0 ( // inputs .accumulate(), diff --git a/hw/rtl/fp_cores/altera/VX_fp_mul.v b/hw/rtl/fp_cores/altera/VX_fp_mul.v index 56633586..8be10473 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_mul.v +++ b/hw/rtl/fp_cores/altera/VX_fp_mul.v @@ -22,9 +22,7 @@ module VX_fp_mul ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin twentynm_fp_mac mac_fp_wys ( // inputs .accumulate(), diff --git a/hw/rtl/fp_cores/altera/VX_fp_sqrt.v b/hw/rtl/fp_cores/altera/VX_fp_sqrt.v index 22649771..511b7512 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_sqrt.v +++ b/hw/rtl/fp_cores/altera/VX_fp_sqrt.v @@ -21,9 +21,7 @@ module VX_fp_sqrt ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin acl_fp_sqrt fsqrt ( .clk (clk), .areset (1'b0), diff --git a/hw/rtl/fp_cores/altera/VX_fp_sub.v b/hw/rtl/fp_cores/altera/VX_fp_sub.v index f88567da..574eac6a 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_sub.v +++ b/hw/rtl/fp_cores/altera/VX_fp_sub.v @@ -22,9 +22,7 @@ module VX_fp_sub ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin twentynm_fp_mac mac_fp_wys ( // inputs .accumulate(), diff --git a/hw/rtl/fp_cores/altera/VX_fp_utof.v b/hw/rtl/fp_cores/altera/VX_fp_utof.v index 601c0634..2fb253fc 100644 --- a/hw/rtl/fp_cores/altera/VX_fp_utof.v +++ b/hw/rtl/fp_cores/altera/VX_fp_utof.v @@ -21,9 +21,7 @@ module VX_fp_utof ( wire enable = ~stall; assign ready_in = enable; - genvar i; - - for (i = 0; i < `NUM_THREADS; i++) begin + for (genvar i = 0; i < `NUM_THREADS; i++) begin acl_fp_utof utof ( .clk (clk), .areset (1'b0), diff --git a/hw/rtl/interfaces/VX_alu_req_if.v b/hw/rtl/interfaces/VX_alu_req_if.v index 901a2754..13ec04f7 100644 --- a/hw/rtl/interfaces/VX_alu_req_if.v +++ b/hw/rtl/interfaces/VX_alu_req_if.v @@ -7,18 +7,22 @@ interface VX_alu_req_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; +`DEBUG_BEGIN + wire [`NW_BITS-1:0] wid; wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; +`DEBUG_END wire [31:0] curr_PC; - wire [`ALU_BITS-1:0] alu_op; + wire [`ALU_BITS-1:0] op; + + wire rs1_is_PC; + wire rs2_is_imm; + + wire [31:0] imm; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; - wire [31:0] offset; - wire [31:0] next_PC; - wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_branch_ctl_if.v b/hw/rtl/interfaces/VX_branch_ctl_if.v index 325b2671..5e5e840a 100644 --- a/hw/rtl/interfaces/VX_branch_ctl_if.v +++ b/hw/rtl/interfaces/VX_branch_ctl_if.v @@ -6,7 +6,7 @@ interface VX_branch_ctl_if (); wire valid; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire taken; wire [31:0] dest; diff --git a/hw/rtl/interfaces/VX_bru_req_if.v b/hw/rtl/interfaces/VX_bru_req_if.v new file mode 100644 index 00000000..17e125ba --- /dev/null +++ b/hw/rtl/interfaces/VX_bru_req_if.v @@ -0,0 +1,29 @@ +`ifndef VX_BRANCH_REQ_IF +`define VX_BRANCH_REQ_IF + +`include "VX_define.vh" + +interface VX_bru_req_if (); + + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NW_BITS-1:0] wid; +`DEBUG_BEGIN + wire [`NUM_THREADS-1:0] thread_mask; +`DEBUG_END + wire [31:0] curr_PC; + + wire [`BRU_BITS-1:0] op; + + wire rs1_is_PC; + + wire [31:0] rs1_data; + wire [31:0] rs2_data; + + wire [31:0] offset; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_cmt_to_csr_if.v b/hw/rtl/interfaces/VX_cmt_to_csr_if.v index c35e3ecd..5cb33922 100644 --- a/hw/rtl/interfaces/VX_cmt_to_csr_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_csr_if.v @@ -7,7 +7,7 @@ interface VX_cmt_to_csr_if (); wire valid; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire [`NE_BITS:0] num_commits; diff --git a/hw/rtl/interfaces/VX_cmt_to_issue_if.v b/hw/rtl/interfaces/VX_cmt_to_issue_if.v index e083a3e5..4065ba0c 100644 --- a/hw/rtl/interfaces/VX_cmt_to_issue_if.v +++ b/hw/rtl/interfaces/VX_cmt_to_issue_if.v @@ -6,6 +6,7 @@ interface VX_cmt_to_issue_if (); wire alu_valid; + wire bru_valid; wire lsu_valid; wire csr_valid; wire mul_valid; @@ -13,6 +14,7 @@ interface VX_cmt_to_issue_if (); wire gpu_valid; wire [`ISTAG_BITS-1:0] alu_tag; + wire [`ISTAG_BITS-1:0] bru_tag; wire [`ISTAG_BITS-1:0] lsu_tag; wire [`ISTAG_BITS-1:0] csr_tag; wire [`ISTAG_BITS-1:0] mul_tag; @@ -21,6 +23,7 @@ interface VX_cmt_to_issue_if (); `IGNORE_WARNINGS_BEGIN issue_data_t alu_data; + issue_data_t bru_data; issue_data_t lsu_data; issue_data_t csr_data; issue_data_t mul_data; diff --git a/hw/rtl/interfaces/VX_csr_req_if.v b/hw/rtl/interfaces/VX_csr_req_if.v index 1a727c7f..c8de21be 100644 --- a/hw/rtl/interfaces/VX_csr_req_if.v +++ b/hw/rtl/interfaces/VX_csr_req_if.v @@ -7,13 +7,13 @@ interface VX_csr_req_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NW_BITS-1:0] wid; `DEBUG_BEGIN wire [`NUM_THREADS-1:0] thread_mask; `DEBUG_END - wire [`NW_BITS-1:0] warp_num; wire [31:0] curr_PC; - wire [`CSR_BITS-1:0] csr_op; + wire [`CSR_BITS-1:0] op; wire [`CSR_ADDR_BITS-1:0] csr_addr; wire [31:0] csr_mask; diff --git a/hw/rtl/interfaces/VX_csr_rsp_if.v b/hw/rtl/interfaces/VX_csr_rsp_if.v new file mode 100644 index 00000000..9e141783 --- /dev/null +++ b/hw/rtl/interfaces/VX_csr_rsp_if.v @@ -0,0 +1,15 @@ +`ifndef VX_CSR_RSP_IF +`define VX_CSR_RSP_IF + +`include "VX_define.vh" + +interface VX_csr_rsp_if (); + + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NUM_THREADS-1:0][31:0] data; + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_csr_to_fpu_if.v b/hw/rtl/interfaces/VX_csr_to_fpu_if.v index c6e3b3bd..2b1aac5a 100644 --- a/hw/rtl/interfaces/VX_csr_to_fpu_if.v +++ b/hw/rtl/interfaces/VX_csr_to_fpu_if.v @@ -9,7 +9,7 @@ interface VX_csr_to_fpu_if (); - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire [`FRM_BITS-1:0] frm; endinterface diff --git a/hw/rtl/interfaces/VX_decode_if.v b/hw/rtl/interfaces/VX_decode_if.v index 1fd5b96e..4f82f7a5 100644 --- a/hw/rtl/interfaces/VX_decode_if.v +++ b/hw/rtl/interfaces/VX_decode_if.v @@ -6,10 +6,9 @@ interface VX_decode_if (); wire valid; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire [`NUM_THREADS-1:0] thread_mask; wire [31:0] curr_PC; - wire [31:0] next_PC; wire [`EX_BITS-1:0] ex_type; wire [`OP_BITS-1:0] ex_op; diff --git a/hw/rtl/interfaces/VX_exu_to_cmt_if.v b/hw/rtl/interfaces/VX_exu_to_cmt_if.v index df5d3c14..85ec1074 100644 --- a/hw/rtl/interfaces/VX_exu_to_cmt_if.v +++ b/hw/rtl/interfaces/VX_exu_to_cmt_if.v @@ -5,10 +5,9 @@ interface VX_exu_to_cmt_if (); - wire valid; - wire [`ISTAG_BITS-1:0] issue_tag; - wire [`NUM_THREADS-1:0][31:0] data; - wire ready; + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NUM_THREADS-1:0][31:0] data; endinterface diff --git a/hw/rtl/interfaces/VX_fpu_req_if.v b/hw/rtl/interfaces/VX_fpu_req_if.v index 2c1b299d..c920710d 100644 --- a/hw/rtl/interfaces/VX_fpu_req_if.v +++ b/hw/rtl/interfaces/VX_fpu_req_if.v @@ -11,13 +11,13 @@ interface VX_fpu_req_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NW_BITS-1:0] wid; `DEBUG_BEGIN wire [`NUM_THREADS-1:0] thread_mask; -`DEBUG_END - wire [`NW_BITS-1:0] warp_num; wire [31:0] curr_PC; +`DEBUG_END - wire [`FPU_BITS-1:0] fpu_op; + wire [`FPU_BITS-1:0] op; wire [`FRM_BITS-1:0] frm; wire [`NUM_THREADS-1:0][31:0] rs1_data; diff --git a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v index beb44a5a..b4a2e015 100644 --- a/hw/rtl/interfaces/VX_fpu_to_cmt_if.v +++ b/hw/rtl/interfaces/VX_fpu_to_cmt_if.v @@ -10,7 +10,6 @@ interface VX_fpu_to_cmt_if (); wire [`NUM_THREADS-1:0][31:0] data; wire has_fflags; fflags_t [`NUM_THREADS-1:0] fflags; - wire ready; endinterface diff --git a/hw/rtl/interfaces/VX_fpu_to_csr_if.v b/hw/rtl/interfaces/VX_fpu_to_csr_if.v index 71e1e7b9..1dfae0ac 100644 --- a/hw/rtl/interfaces/VX_fpu_to_csr_if.v +++ b/hw/rtl/interfaces/VX_fpu_to_csr_if.v @@ -11,7 +11,7 @@ interface VX_fpu_to_csr_if (); wire valid; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire fflags_NV; wire fflags_DZ; diff --git a/hw/rtl/interfaces/VX_gpr_read_if.v b/hw/rtl/interfaces/VX_gpr_read_if.v index 9b24ce56..4e444ba2 100644 --- a/hw/rtl/interfaces/VX_gpr_read_if.v +++ b/hw/rtl/interfaces/VX_gpr_read_if.v @@ -7,7 +7,7 @@ interface VX_gpr_read_if (); wire valid; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire [`NR_BITS-1:0] rs1; wire [`NR_BITS-1:0] rs2; diff --git a/hw/rtl/interfaces/VX_gpu_req_if.v b/hw/rtl/interfaces/VX_gpu_req_if.v index 604f5903..81661138 100644 --- a/hw/rtl/interfaces/VX_gpu_req_if.v +++ b/hw/rtl/interfaces/VX_gpu_req_if.v @@ -6,17 +6,15 @@ interface VX_gpu_req_if(); wire valid; - wire [`ISTAG_BITS-1:0] issue_tag; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NW_BITS-1:0] wid; wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; -`DEBUG_BEGIN wire [31:0] curr_PC; -`DEBUG_END - wire [`GPU_BITS-1:0] gpu_op; + + wire [`GPU_BITS-1:0] op; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [31:0] rs2_data; - wire [31:0] next_PC; wire ready; diff --git a/hw/rtl/interfaces/VX_ifetch_req_if.v b/hw/rtl/interfaces/VX_ifetch_req_if.v index c92888eb..a2469cb3 100644 --- a/hw/rtl/interfaces/VX_ifetch_req_if.v +++ b/hw/rtl/interfaces/VX_ifetch_req_if.v @@ -7,7 +7,7 @@ interface VX_ifetch_req_if (); wire valid; wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire [31:0] curr_PC; wire ready; diff --git a/hw/rtl/interfaces/VX_ifetch_rsp_if.v b/hw/rtl/interfaces/VX_ifetch_rsp_if.v index b5efc4fc..f9918a03 100644 --- a/hw/rtl/interfaces/VX_ifetch_rsp_if.v +++ b/hw/rtl/interfaces/VX_ifetch_rsp_if.v @@ -7,7 +7,7 @@ interface VX_ifetch_rsp_if (); wire valid; wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire [31:0] curr_PC; wire [31:0] instr; wire ready; diff --git a/hw/rtl/interfaces/VX_issue_if.v b/hw/rtl/interfaces/VX_issue_if.v new file mode 100644 index 00000000..21e9b658 --- /dev/null +++ b/hw/rtl/interfaces/VX_issue_if.v @@ -0,0 +1,39 @@ +`ifndef VX_ISSUE_IF +`define VX_ISSUE_IF + +`include "VX_define.vh" + +interface VX_issue_if (); + + wire valid; + wire [`ISTAG_BITS-1:0] issue_tag; + wire [`NW_BITS-1:0] wid; + wire [`NUM_THREADS-1:0] thread_mask; + wire [31:0] curr_PC; + + wire [`EX_BITS-1:0] ex_type; + wire [`OP_BITS-1:0] ex_op; + + wire [`FRM_BITS-1:0] frm; + + wire wb; + + wire [`NR_BITS-1:0] rd; + + wire [`NUM_THREADS-1:0][31:0] rs1_data; + wire [`NUM_THREADS-1:0][31:0] rs2_data; + wire [`NUM_THREADS-1:0][31:0] rs3_data; + + wire [`NR_BITS-1:0] rs1; + wire [31:0] imm; + + wire rs1_is_PC; + wire rs2_is_imm; + + wire [`NT_BITS-1:0] tid; + + wire ready; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_join_if.v b/hw/rtl/interfaces/VX_join_if.v index 15c1509b..6e96ad31 100644 --- a/hw/rtl/interfaces/VX_join_if.v +++ b/hw/rtl/interfaces/VX_join_if.v @@ -6,7 +6,7 @@ interface VX_join_if (); wire is_join; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; endinterface diff --git a/hw/rtl/interfaces/VX_lsu_req_if.v b/hw/rtl/interfaces/VX_lsu_req_if.v index b4b80598..1e0ab4fb 100644 --- a/hw/rtl/interfaces/VX_lsu_req_if.v +++ b/hw/rtl/interfaces/VX_lsu_req_if.v @@ -8,7 +8,7 @@ interface VX_lsu_req_if (); wire valid; wire [`NUM_THREADS-1:0] thread_mask; wire [`ISTAG_BITS-1:0] issue_tag; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; wire [31:0] curr_PC; wire rw; diff --git a/hw/rtl/interfaces/VX_mul_req_if.v b/hw/rtl/interfaces/VX_mul_req_if.v index 44306bde..6cd6432f 100644 --- a/hw/rtl/interfaces/VX_mul_req_if.v +++ b/hw/rtl/interfaces/VX_mul_req_if.v @@ -12,11 +12,11 @@ interface VX_mul_req_if (); wire valid; wire [`ISTAG_BITS-1:0] issue_tag; `DEBUG_BEGIN + wire [`NW_BITS-1:0] wid; wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; wire [31:0] curr_PC; `DEBUG_END - wire [`MUL_BITS-1:0] mul_op; + wire [`MUL_BITS-1:0] op; wire [`NUM_THREADS-1:0][31:0] rs1_data; wire [`NUM_THREADS-1:0][31:0] rs2_data; diff --git a/hw/rtl/interfaces/VX_warp_ctl_if.v b/hw/rtl/interfaces/VX_warp_ctl_if.v index 50eca6b0..1f2e422a 100644 --- a/hw/rtl/interfaces/VX_warp_ctl_if.v +++ b/hw/rtl/interfaces/VX_warp_ctl_if.v @@ -5,24 +5,12 @@ interface VX_warp_ctl_if (); - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; - wire change_mask; - wire [`NUM_THREADS-1:0] thread_mask; - - wire wspawn; - wire [31:0] wspawn_pc; - wire [`NUM_WARPS-1:0] wspawn_wmask; - - wire is_barrier; - wire [`NB_BITS-1:0] barrier_id; - wire [`NW_BITS:0] barrier_num_warps; - - wire is_split; - wire do_split; - wire [`NUM_THREADS-1:0] split_new_mask; - wire [`NUM_THREADS-1:0] split_later_mask; - wire [31:0] split_save_pc; + gpu_tmc_t tmc; + gpu_wspawn_t wspawn; + gpu_barrier_t barrier; + gpu_split_t split; endinterface diff --git a/hw/rtl/interfaces/VX_wb_if.v b/hw/rtl/interfaces/VX_wb_if.v index 859db75b..062377ec 100644 --- a/hw/rtl/interfaces/VX_wb_if.v +++ b/hw/rtl/interfaces/VX_wb_if.v @@ -7,16 +7,14 @@ interface VX_wb_if (); wire valid; wire [`NUM_THREADS-1:0] thread_mask; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; `IGNORE_WARNINGS_BEGIN wire [31:0] curr_PC; `IGNORE_WARNINGS_END wire [`NR_BITS-1:0] rd; - wire [`NUM_THREADS-1:0][31:0] data; - - wire ready; + wire [`NUM_THREADS-1:0][31:0] data; endinterface diff --git a/hw/rtl/interfaces/VX_wstall_if.v b/hw/rtl/interfaces/VX_wstall_if.v index d2bef0d8..5b4e5039 100644 --- a/hw/rtl/interfaces/VX_wstall_if.v +++ b/hw/rtl/interfaces/VX_wstall_if.v @@ -6,7 +6,7 @@ interface VX_wstall_if(); wire wstall; - wire [`NW_BITS-1:0] warp_num; + wire [`NW_BITS-1:0] wid; endinterface diff --git a/hw/rtl/libs/VX_cam_buffer.v b/hw/rtl/libs/VX_cam_buffer.v index 06379f15..4f12ee36 100644 --- a/hw/rtl/libs/VX_cam_buffer.v +++ b/hw/rtl/libs/VX_cam_buffer.v @@ -32,19 +32,17 @@ module VX_cam_buffer #( .valid_out (free_valid) ); - integer i; - always @(*) begin free_slots_n = free_slots; - if (acquire_slot) begin - free_slots_n[write_addr_r] = 0; - end - for (i = 0; i < RPORTS; i++) begin + for (integer i = 0; i < RPORTS; i++) begin if (release_slot[i]) begin free_slots_n[read_addr[i]] = 1; end read_data[i] = entries[read_addr[i]]; - end + end + if (acquire_slot) begin + free_slots_n[write_addr_r] = 0; + end end always @(posedge clk) begin @@ -54,12 +52,12 @@ module VX_cam_buffer #( write_addr_r <= ADDRW'(1'b0); end else begin if (acquire_slot) begin - assert(1 == free_slots[write_addr]); + assert(1 == free_slots[write_addr]) else $display("%t: inused slot at port %d", $time, write_addr); entries[write_addr] <= write_data; end - for (i = 0; i < RPORTS; i++) begin + for (integer i = 0; i < RPORTS; i++) begin if (release_slot[i]) begin - assert(0 == free_slots[read_addr[i]]); + assert(0 == free_slots[read_addr[i]]) else $display("%t: freed slot at port %d", $time, read_addr[i]); end end free_slots <= free_slots_n; diff --git a/hw/rtl/libs/VX_countones.v b/hw/rtl/libs/VX_countones.v index 6160d0df..2789014f 100644 --- a/hw/rtl/libs/VX_countones.v +++ b/hw/rtl/libs/VX_countones.v @@ -7,11 +7,9 @@ module VX_countones #( input wire [N-1:0] valids, output reg [$clog2(N):0] count ); - - integer i; always @(*) begin count = 0; - for (i = N-1; i >= 0; i = i - 1) begin + for (integer i = N-1; i >= 0; i = i - 1) begin if (valids[i]) begin count = count + 1; end diff --git a/hw/rtl/libs/VX_divide.v b/hw/rtl/libs/VX_divide.v index be13a186..9cdf6848 100644 --- a/hw/rtl/libs/VX_divide.v +++ b/hw/rtl/libs/VX_divide.v @@ -52,15 +52,6 @@ module VX_divide #( reg [WIDTHD-1:0] remainder_unqual; always @(*) begin - `ifndef SYNTHESIS - // this edge case kills verilator in some cases by causing a division - // overflow exception. INT_MIN / -1 (on x86) - if (numer == {1'b1, (WIDTHN-1)'(1'b0)} - && denom == {WIDTHD{1'b1}}) begin - quotient_unqual = 0; - remainder_unqual = 0; - end else - `endif begin if (NSIGNED && DSIGNED) begin quotient_unqual = $signed(numer) / $signed(denom); @@ -88,21 +79,21 @@ module VX_divide #( reg [WIDTHN-1:0] quotient_pipe [0:PIPELINE-1]; reg [WIDTHD-1:0] remainder_pipe [0:PIPELINE-1]; - genvar i; - for (i = 0; i < PIPELINE; i++) begin + for (genvar i = 0; i < PIPELINE; i++) begin always @(posedge clk) begin if (reset) begin quotient_pipe[i] <= 0; remainder_pipe[i] <= 0; - end - else if (clk_en) begin - if (i == 0) begin - quotient_pipe[i] <= quotient_unqual; - remainder_pipe[i] <= remainder_unqual; - end else begin - quotient_pipe[i] <= quotient_pipe[i-1]; - remainder_pipe[i] <= remainder_pipe[i-1]; - end + end else begin + if (clk_en) begin + if (i == 0) begin + quotient_pipe[i] <= quotient_unqual; + remainder_pipe[i] <= remainder_unqual; + end else begin + quotient_pipe[i] <= quotient_pipe[i-1]; + remainder_pipe[i] <= remainder_pipe[i-1]; + end + end end end end diff --git a/hw/rtl/libs/VX_elastic_buffer.v b/hw/rtl/libs/VX_elastic_buffer.v index c551fbc6..fbd36b36 100644 --- a/hw/rtl/libs/VX_elastic_buffer.v +++ b/hw/rtl/libs/VX_elastic_buffer.v @@ -14,25 +14,53 @@ module VX_elastic_buffer #( input wire ready_out, output wire valid_out ); - wire empty, full; + if (0 == SIZE) begin - VX_generic_queue #( - .DATAW (DATAW), - .SIZE (SIZE), - .BUFFERED (BUFFERED) - ) queue ( - .clk (clk), - .reset (reset), - .push (valid_in), - .pop (ready_out), - .data_in(data_in), - .data_out(data_out), - .empty (empty), - .full (full), - `UNUSED_PIN (size) - ); + reg [DATAW-1:0] skid_buffer; + reg skid_valid; - assign ready_in = ~full; - assign valid_out = ~empty; + always @(posedge clk) begin + if (reset) begin + skid_valid <= 0; + end else begin + if (valid_in && ~ready_out) begin + assert(~skid_valid); + skid_buffer <= data_in; + skid_valid <= 1; + end + if (ready_out) begin + skid_valid <= 0; + end + end + end + + assign ready_in = ready_out || ~skid_valid; + assign data_out = skid_valid ? skid_buffer : data_in; + assign valid_out = valid_in || skid_valid; + + end else begin + + wire empty, full; + + VX_generic_queue #( + .DATAW (DATAW), + .SIZE (SIZE), + .BUFFERED (BUFFERED) + ) queue ( + .clk (clk), + .reset (reset), + .push (valid_in), + .pop (ready_out), + .data_in(data_in), + .data_out(data_out), + .empty (empty), + .full (full), + `UNUSED_PIN (size) + ); + + assign ready_in = ~full; + assign valid_out = ~empty; + + end endmodule \ No newline at end of file diff --git a/hw/rtl/libs/VX_fair_arbiter.v b/hw/rtl/libs/VX_fair_arbiter.v index 2e07625b..8f9cbbff 100644 --- a/hw/rtl/libs/VX_fair_arbiter.v +++ b/hw/rtl/libs/VX_fair_arbiter.v @@ -11,7 +11,7 @@ module VX_fair_arbiter #( output wire grant_valid ); - if (N == 1) begin + if (N == 1) begin `UNUSED_VAR (clk) `UNUSED_VAR (reset) @@ -33,11 +33,13 @@ module VX_fair_arbiter #( if (reset) begin requests_use <= 0; refill_original <= 0; - end else if (refill) begin - requests_use <= refill_value; - refill_original <= refill_value; end else begin - requests_use <= update_value; + if (refill) begin + requests_use <= refill_value; + refill_original <= refill_value; + end else begin + requests_use <= update_value; + end end end diff --git a/hw/rtl/libs/VX_generic_queue.v b/hw/rtl/libs/VX_generic_queue.v index 5ee61e6e..1383ebcf 100644 --- a/hw/rtl/libs/VX_generic_queue.v +++ b/hw/rtl/libs/VX_generic_queue.v @@ -38,7 +38,6 @@ module VX_generic_queue #( end else if (reading && !writing) begin size_r <= 0; end - if (writing) begin head_r <= data_in; end @@ -146,7 +145,7 @@ module VX_generic_queue #( end bypass_r <= writing - && (empty_r || ((1 == size_r) && reading)); // empty or about to go empty + && (empty_r || ((1 == size_r) && reading)); // empty or about to go empty curr_r <= data_in; head_r <= data[reading ? rd_ptr_next_r : rd_ptr_r]; diff --git a/hw/rtl/libs/VX_matrix_arbiter.v b/hw/rtl/libs/VX_matrix_arbiter.v index 62414abd..7ccda7dc 100644 --- a/hw/rtl/libs/VX_matrix_arbiter.v +++ b/hw/rtl/libs/VX_matrix_arbiter.v @@ -24,11 +24,9 @@ module VX_matrix_arbiter #( reg [N-1:1] state [0:N-1]; wire [N-1:0] pri [0:N-1]; - - genvar i, j; - - for (i = 0; i < N; i++) begin - for (j = 0; j < N; j++) begin + + for (genvar i = 0; i < N; i++) begin + for (genvar j = 0; j < N; j++) begin if (j > i) begin assign pri[j][i] = requests[i] && state[i][j]; end @@ -43,13 +41,12 @@ module VX_matrix_arbiter #( assign grant_onehot[i] = requests[i] && !(| pri[i]); end - for (i = 0; i < N; i++) begin - for (j = i + 1; j < N; j++) begin + for (genvar i = 0; i < N; i++) begin + for (genvar j = i + 1; j < N; j++) begin always @(posedge clk) begin if (reset) begin state[i][j] <= 0; - end - else begin + end else begin state[i][j] <= (state[i][j] || grant_onehot[j]) && !grant_onehot[i]; end end diff --git a/hw/rtl/libs/VX_multiplier.v b/hw/rtl/libs/VX_multiplier.v index d5b7793c..5822f31b 100644 --- a/hw/rtl/libs/VX_multiplier.v +++ b/hw/rtl/libs/VX_multiplier.v @@ -50,18 +50,18 @@ module VX_multiplier #( reg [WIDTHP-1:0] result_pipe [0:PIPELINE-1]; - genvar i; - for (i = 0; i < PIPELINE; i++) begin + for (genvar i = 0; i < PIPELINE; i++) begin always @(posedge clk) begin if (reset) begin result_pipe[i] <= 0; - end - else if (clk_en) begin - if (i == 0) begin - result_pipe[i] <= result_unqual; - end else begin - result_pipe[i] <= result_pipe[i-1]; - end + end else begin + if (clk_en) begin + if (i == 0) begin + result_pipe[i] <= result_unqual; + end else begin + result_pipe[i] <= result_pipe[i-1]; + end + end end end end diff --git a/hw/rtl/libs/VX_onehot_encooder.v b/hw/rtl/libs/VX_onehot_encooder.v index 65c6dd8e..89b997ce 100644 --- a/hw/rtl/libs/VX_onehot_encooder.v +++ b/hw/rtl/libs/VX_onehot_encooder.v @@ -7,12 +7,10 @@ module VX_onehot_encoder #( output reg [`LOG2UP(N)-1:0] binary, output reg valid ); - integer i; - always @(*) begin valid = 1'b0; binary = `LOG2UP(N)'(0); - for (i = 0; i < N; i++) begin + for (integer i = 0; i < N; i++) begin if (onehot[i]) begin valid = 1'b1; binary = `LOG2UP(N)'(i); diff --git a/hw/rtl/libs/VX_priority_encoder.v b/hw/rtl/libs/VX_priority_encoder.v index ca5c42d4..81a93a95 100644 --- a/hw/rtl/libs/VX_priority_encoder.v +++ b/hw/rtl/libs/VX_priority_encoder.v @@ -6,13 +6,11 @@ module VX_priority_encoder #( input wire [N-1:0] data_in, output reg [`LOG2UP(N)-1:0] data_out, output reg valid_out -); - integer i; - +); always @(*) begin data_out = 0; valid_out = 0; - for (i = N-1; i >= 0; i = i - 1) begin + for (integer i = N-1; i >= 0; i = i - 1) begin if (data_in[i]) begin data_out = `LOG2UP(N)'(i); valid_out = 1; diff --git a/hw/rtl/libs/VX_rr_arbiter.v b/hw/rtl/libs/VX_rr_arbiter.v index 05910a71..e5fbc746 100644 --- a/hw/rtl/libs/VX_rr_arbiter.v +++ b/hw/rtl/libs/VX_rr_arbiter.v @@ -26,12 +26,10 @@ module VX_rr_arbiter #( reg [`CLOG2(N)-1:0] state; reg [N-1:0] grant_onehot_r; - integer i, j; - always @(*) begin - for (i = 0; i < N; i++) begin + for (integer i = 0; i < N; i++) begin grant_table[i] = `CLOG2(N)'(i); - for (j = 0; j < N; j++) begin + for (integer j = 0; j < N; j++) begin if (requests[(i+j) % N]) begin grant_table[i] = `CLOG2(N)'((i+j) % N); end @@ -44,8 +42,7 @@ module VX_rr_arbiter #( always @(posedge clk) begin if (reset) begin state <= 0; - end - else begin + end else begin state <= grant_index; end end diff --git a/hw/rtl/libs/VX_scope.v b/hw/rtl/libs/VX_scope.v index dcca50ee..1091e785 100644 --- a/hw/rtl/libs/VX_scope.v +++ b/hw/rtl/libs/VX_scope.v @@ -74,7 +74,6 @@ module VX_scope #( read_delta <= 0; data_valid <= 0; end else begin - if (bus_write) begin case (cmd_type) CMD_GET_VALID, diff --git a/hw/rtl/libs/VX_shift_register.v b/hw/rtl/libs/VX_shift_register.v index b4f2496f..a82a4607 100644 --- a/hw/rtl/libs/VX_shift_register.v +++ b/hw/rtl/libs/VX_shift_register.v @@ -16,7 +16,7 @@ module VX_shift_register #( always @(posedge clk) begin if (reset) begin - entries <= '0; + entries <= (DEPTH * DATAW)'(0); end else begin if (enable) begin entries <= in; @@ -28,7 +28,7 @@ module VX_shift_register #( always @(posedge clk) begin if (reset) begin - entries <= '0; + entries <= (DEPTH * DATAW)'(0); end else begin if (enable) begin entries <= {entries[DEPTH-2:0], in}; diff --git a/hw/syn/quartus/cache/Makefile b/hw/syn/quartus/cache/Makefile index 8c69066f..444a8d29 100755 --- a/hw/syn/quartus/cache/Makefile +++ b/hw/syn/quartus/cache/Makefile @@ -9,9 +9,9 @@ DEVICE = 10AX115N3F40E2SG # Executable Configuration SYN_ARGS = --parallel --read_settings_files=on -FIT_ARGS = --part=$(DEVICE) --read_settings_files=on +FIT_ARGS = --parallel --part=$(DEVICE) --read_settings_files=on ASM_ARGS = -STA_ARGS = --do_report_timing +STA_ARGS = --parallel --do_report_timing # Build targets all: $(PROJECT).sta.rpt diff --git a/hw/syn/quartus/core/Makefile b/hw/syn/quartus/core/Makefile index 31ed1051..477d454d 100644 --- a/hw/syn/quartus/core/Makefile +++ b/hw/syn/quartus/core/Makefile @@ -11,9 +11,9 @@ DEVICE = 10AX115N3F40E2SG # Executable Configuration SYN_ARGS = --parallel --read_settings_files=on -FIT_ARGS = --part=$(DEVICE) --read_settings_files=on +FIT_ARGS = --parallel --part=$(DEVICE) --read_settings_files=on ASM_ARGS = -STA_ARGS = --do_report_timing +STA_ARGS = --parallel --do_report_timing # Build targets all: $(PROJECT).sta.rpt diff --git a/hw/syn/quartus/pipeline/Makefile b/hw/syn/quartus/pipeline/Makefile index 447037ff..76bad071 100644 --- a/hw/syn/quartus/pipeline/Makefile +++ b/hw/syn/quartus/pipeline/Makefile @@ -11,9 +11,9 @@ DEVICE = 10AX115N3F40E2SG # Executable Configuration SYN_ARGS = --parallel --read_settings_files=on -FIT_ARGS = --part=$(DEVICE) --read_settings_files=on +FIT_ARGS = --parallel --part=$(DEVICE) --read_settings_files=on ASM_ARGS = -STA_ARGS = --do_report_timing +STA_ARGS = --parallel --do_report_timing # Build targets all: $(PROJECT).sta.rpt diff --git a/hw/syn/quartus/project.sdc b/hw/syn/quartus/project.sdc index 59686a41..61b8cba9 100644 --- a/hw/syn/quartus/project.sdc +++ b/hw/syn/quartus/project.sdc @@ -1,6 +1,6 @@ set_time_format -unit ns -decimal_places 3 -create_clock -name {clk} -period "200 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] +create_clock -name {clk} -period "300 MHz" -waveform { 0.0 1.0 } [get_ports {clk}] derive_pll_clocks -create_base_clocks derive_clock_uncertainty diff --git a/hw/syn/quartus/project.tcl b/hw/syn/quartus/project.tcl index e3d1f2cc..b2164fa0 100644 --- a/hw/syn/quartus/project.tcl +++ b/hw/syn/quartus/project.tcl @@ -33,6 +33,7 @@ set_global_assignment -name TOP_LEVEL_ENTITY $opts(top) set_global_assignment -name PROJECT_OUTPUT_DIRECTORY bin set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2009 +set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS OFF set_global_assignment -name VERILOG_MACRO QUARTUS set_global_assignment -name VERILOG_MACRO SYNTHESIS set_global_assignment -name VERILOG_MACRO NDEBUG diff --git a/hw/syn/quartus/top/Makefile b/hw/syn/quartus/top/Makefile index 4f8111b9..6258682f 100644 --- a/hw/syn/quartus/top/Makefile +++ b/hw/syn/quartus/top/Makefile @@ -11,9 +11,9 @@ DEVICE = 10AX115N3F40E2SG # Executable Configuration SYN_ARGS = --parallel --read_settings_files=on --set=VERILOG_MACRO=NOPAE=1 -FIT_ARGS = --part=$(DEVICE) --read_settings_files=on +FIT_ARGS = --parallel --part=$(DEVICE) --read_settings_files=on ASM_ARGS = -STA_ARGS = --do_report_timing +STA_ARGS = --parallel --do_report_timing # Build targets all: $(PROJECT).sta.rpt diff --git a/hw/syn/quartus/vortex/Makefile b/hw/syn/quartus/vortex/Makefile index 633e32cd..e424db86 100644 --- a/hw/syn/quartus/vortex/Makefile +++ b/hw/syn/quartus/vortex/Makefile @@ -11,9 +11,9 @@ DEVICE = 10AX115N3F40E2SG # Executable Configuration SYN_ARGS = --parallel --read_settings_files=on -FIT_ARGS = --part=$(DEVICE) --read_settings_files=on +FIT_ARGS = --parallel --part=$(DEVICE) --read_settings_files=on ASM_ARGS = -STA_ARGS = --do_report_timing +STA_ARGS = --parallel --do_report_timing # Build targets all: $(PROJECT).sta.rpt diff --git a/hw/unit_tests/VX_divide_tb.v b/hw/unit_tests/VX_divide_tb.v index 92ccfac7..a4ba539e 100644 --- a/hw/unit_tests/VX_divide_tb.v +++ b/hw/unit_tests/VX_divide_tb.v @@ -17,26 +17,23 @@ module VX_tb_divide(); wire [31:0] o_div[0:7], o_rem[0:7]; - genvar i; - generate - for (i = 0; i < 8; i++) begin - VX_divide#( - .WIDTHN(32), - .WIDTHD(32), - .WIDTHQ(32), - .WIDTHR(32), - .PIPELINE(i) - ) div( - .clock(clk), - .aclr(rst), - .clken(1'b1), - .numer(numer), - .denom(denom), - .quotient(o_div[i]), - .remainder(o_rem[i]) - ); - end - endgenerate + for (genvar i = 0; i < 8; i++) begin + VX_divide#( + .WIDTHN(32), + .WIDTHD(32), + .WIDTHQ(32), + .WIDTHR(32), + .PIPELINE(i) + ) div( + .clock(clk), + .aclr(rst), + .clken(1'b1), + .numer(numer), + .denom(denom), + .quotient(o_div[i]), + .remainder(o_rem[i]) + ); + end initial begin clk = 0; rst = 0; From b7da1dbcb8bb33ade92921d3dcdfd833167295c7 Mon Sep 17 00:00:00 2001 From: MalikBurton Date: Sat, 15 Aug 2020 13:05:15 -0400 Subject: [PATCH 48/94] Reordered make list to make runtime go last --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 8b090422..9962e007 100644 --- a/Makefile +++ b/Makefile @@ -2,11 +2,12 @@ all: $(MAKE) -C hw $(MAKE) -C driver - $(MAKE) -C runtime $(MAKE) -C simX + $(MAKE) -C runtime clean: $(MAKE) -C hw clean $(MAKE) -C driver clean + $(MAKE) -C simX clean $(MAKE) -C runtime clean - $(MAKE) -C simX clean \ No newline at end of file + From fb8074bad2ac11e1bd2e05289c95eddf32469d10 Mon Sep 17 00:00:00 2001 From: tinebp Date: Sun, 16 Aug 2020 10:54:55 -0400 Subject: [PATCH 49/94] Delete Vortex_top_diagram.pdf --- docs/Vortex_top_diagram.pdf | 11317 ---------------------------------- 1 file changed, 11317 deletions(-) delete mode 100644 docs/Vortex_top_diagram.pdf diff --git a/docs/Vortex_top_diagram.pdf b/docs/Vortex_top_diagram.pdf deleted file mode 100644 index 4ceaa412..00000000 --- a/docs/Vortex_top_diagram.pdf +++ /dev/null @@ -1,11317 +0,0 @@ -%PDF-1.4 -1 0 obj -<< - /Title (_1) - /Author (tinebp) - /Producer (Concept Engineering GmbH) - /Creator (Nlview 6.6.0 2016-02-25 bk=1.3518 VDI=39 GEI=35) - /CreationDate (D:20200421012454) ->> -endobj -2 0 obj -<< - /Type /Catalog - /Pages 3 0 R - /Outlines 7 0 R - /PageMode /UseThumbs - /ViewerPreferences << /DisplayDocTitle true >> ->> -endobj -4 0 obj -<< - /Type /Font - /Subtype /Type1 - /Name /F1 - /BaseFont /Helvetica - /Encoding /MacRomanEncoding ->> -endobj -5 0 obj -<< - /ExtGState << /GS 6 0 R >> - /Font << /F1 4 0 R >> - /ColorSpace << /PCS [/Pattern /DeviceRGB] >> - /Pattern 8 0 R ->> -endobj -6 0 obj -<< - /Type /ExtGState - /LC 0 - /LJ 0 - /ML 4.0 ->> -endobj -% -% Nlview page 1 -% (user space scaling 0.0866115) -% -9 0 obj -<< - /Type /Page - /Parent 3 0 R - /Resources 5 0 R - /Contents 10 0 R - /MediaBox [0 0 612 792] - /Rotate 0 ->> -endobj -10 0 obj -<< - /Length 96029 ->> -stream -1 0 0 1 0 235.551 cm -1 0 0 1 28.8 28.8 cm -0.0866115 0 0 -0.0866115 0 0 cm -1 0 0 1 0 -3040 cm -0 0 6401 3040 re -W n -/GS gs -1 0 0 1 178 0 cm -q -1.000 1.000 1.000 rg --178 0 6400 3041 re -f -Q -3 w -0.000 0.000 1.000 RG -6040 1280 m -6040 1273 l -6054 1273 l -6061 1280 l -6054 1287 l -6040 1287 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1280 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(I_dram_req_addr[31..0]) Tj -ET -Q -6040 1460 m -6040 1453 l -6054 1453 l -6061 1460 l -6054 1467 l -6040 1467 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1460 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(I_dram_req_data[127..0]) Tj -ET -Q -1 w -0 2420 m --7 2427 l --21 2427 l --21 2413 l --7 2413 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2420 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --98.04 -4.308 Td -(I_dram_req_ready) Tj -ET -Q -6040 1380 m -6040 1373 l -6054 1373 l -6061 1380 l -6054 1387 l -6040 1387 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1380 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(I_dram_req_read) Tj -ET -Q -6040 1400 m -6040 1393 l -6054 1393 l -6061 1400 l -6054 1407 l -6040 1407 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1400 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(I_dram_req_write) Tj -ET -Q -3 w -0 2440 m --7 2447 l --21 2447 l --21 2433 l --7 2433 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2440 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --124.728 -4.308 Td -(I_dram_rsp_addr[31..0]) Tj -ET -Q -0 2540 m --7 2547 l --21 2547 l --21 2533 l --7 2533 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2540 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --130.74 -4.308 Td -(I_dram_rsp_data[127..0]) Tj -ET -Q -1 w -6040 1420 m -6040 1413 l -6054 1413 l -6061 1420 l -6054 1427 l -6040 1427 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1420 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(I_dram_rsp_ready) Tj -ET -Q -0 2520 m --7 2527 l --21 2527 l --21 2513 l --7 2513 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2520 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --92.028 -4.308 Td -(I_dram_rsp_valid) Tj -ET -Q -q -0.000 0.000 0.000 rg -3205 233 60 1222 re -f -Q -q -0.506 0.749 0.373 rg -3200 228 60 1222 re -f -Q -0.176 0.176 0.176 RG -3200 228 60 1222 re -S -3 w -3211 233 m -3211 245 l -S -3205 239 m -3217 239 l -S -1 w -3203 231 16 16 re -S -q -0.000 0.000 0.000 rg -1 0 0 1 3230 226 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --26.016 2.484 Td -(back_end) Tj -ET -Q -0.024 0.278 0.435 RG -3190 960 m -3200 960 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 959 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --12.22 2.07 Td -(clk) Tj -ET -Q -3190 1240 m -3200 1240 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1239 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --22.23 2.07 Td -(reset) Tj -ET -Q -3190 1260 m -3200 1260 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --69.48 2.07 Td -(schedule_delay) Tj -ET -Q -3190 980 m -3200 980 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 979 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --135.62 2.07 Td -(dcache_req_if.core_req_ready) Tj -ET -Q -3190 600 m -3200 600 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 599 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --81.69 2.07 Td -(bckE_req_if.is_csr) Tj -ET -Q -3190 500 m -3200 500 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 499 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --104.47 2.07 Td -(bckE_req_if.csr_immed) Tj -ET -Q -3190 860 m -3200 860 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --88.36 2.07 Td -(bckE_req_if.rs2_src) Tj -ET -Q -3190 560 m -3200 560 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 559 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.15 2.07 Td -(bckE_req_if.ebreak) Tj -ET -Q -3190 700 m -3200 700 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 699 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.7 2.07 Td -(bckE_req_if.jalQual) Tj -ET -Q -3190 740 m -3200 740 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 739 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --65.58 2.07 Td -(bckE_req_if.jal) Tj -ET -Q -3190 660 m -3200 660 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 659 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --104.48 2.07 Td -(bckE_req_if.is_wspawn) Tj -ET -Q -3190 640 m -3200 640 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 639 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --84.47 2.07 Td -(bckE_req_if.is_tmc) Tj -ET -Q -3190 620 m -3200 620 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 619 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.14 2.07 Td -(bckE_req_if.is_split) Tj -ET -Q -3190 580 m -3200 580 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 579 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --97.25 2.07 Td -(bckE_req_if.is_barrier) Tj -ET -Q -3 w -3190 440 m -3200 440 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 439 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --107.84 2.07 Td -(bckE_req_if.alu_op[4..0]) Tj -ET -Q -3190 460 m -3200 460 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 459 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --132.85 2.07 Td -(bckE_req_if.branch_type[2..0]) Tj -ET -Q -3190 480 m -3200 480 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 479 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --137.84 2.07 Td -(bckE_req_if.csr_address[11..0]) Tj -ET -Q -3190 520 m -3200 520 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 519 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --126.16 2.07 Td -(bckE_req_if.csr_mask[31..0]) Tj -ET -Q -3190 540 m -3200 540 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 539 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --120.05 2.07 Td -(bckE_req_if.curr_PC[31..0]) Tj -ET -Q -3190 680 m -3200 680 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --140.06 2.07 Td -(bckE_req_if.itype_immed[31..0]) Tj -ET -Q -3190 720 m -3200 720 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 719 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --123.4 2.07 Td -(bckE_req_if.jal_offset[31..0]) Tj -ET -Q -3190 760 m -3200 760 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 759 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --125.61 2.07 Td -(bckE_req_if.mem_read[2..0]) Tj -ET -Q -3190 780 m -3200 780 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 779 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --126.71 2.07 Td -(bckE_req_if.mem_write[2..0]) Tj -ET -Q -3190 420 m -3200 420 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 419 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --121.73 2.07 Td -(bckE_req_if.PC_next[31..0]) Tj -ET -Q -3190 800 m -3200 800 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 799 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.71 2.07 Td -(bckE_req_if.rd[4..0]) Tj -ET -Q -3190 820 m -3200 820 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 819 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --91.71 2.07 Td -(bckE_req_if.rs1[4..0]) Tj -ET -Q -3190 840 m -3200 840 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --91.71 2.07 Td -(bckE_req_if.rs2[4..0]) Tj -ET -Q -3190 880 m -3200 880 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --144.51 2.07 Td -(bckE_req_if.upper_immed[19..0]) Tj -ET -Q -3190 900 m -3200 900 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --98.38 2.07 Td -(bckE_req_if.valid[3..0]) Tj -ET -Q -3190 920 m -3200 920 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --124.5 2.07 Td -(bckE_req_if.warp_num[2..0]) Tj -ET -Q -3190 940 m -3200 940 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --90.6 2.07 Td -(bckE_req_if.wb[1..0]) Tj -ET -Q -3190 1000 m -3200 1000 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 999 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --167.87 2.07 Td -(dcache_rsp_if.core_rsp_data[0][31..0]) Tj -ET -Q -3190 1020 m -3200 1020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --167.87 2.07 Td -(dcache_rsp_if.core_rsp_data[1][31..0]) Tj -ET -Q -3190 1040 m -3200 1040 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1039 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --167.87 2.07 Td -(dcache_rsp_if.core_rsp_data[2][31..0]) Tj -ET -Q -3190 1060 m -3200 1060 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1059 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --167.87 2.07 Td -(dcache_rsp_if.core_rsp_data[3][31..0]) Tj -ET -Q -3190 1080 m -3200 1080 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1079 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --158.97 2.07 Td -(dcache_rsp_if.core_rsp_pc[0][31..0]) Tj -ET -Q -3190 1100 m -3200 1100 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1099 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --158.97 2.07 Td -(dcache_rsp_if.core_rsp_pc[1][31..0]) Tj -ET -Q -3190 1120 m -3200 1120 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --158.97 2.07 Td -(dcache_rsp_if.core_rsp_pc[2][31..0]) Tj -ET -Q -3190 1140 m -3200 1140 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1139 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --158.97 2.07 Td -(dcache_rsp_if.core_rsp_pc[3][31..0]) Tj -ET -Q -3190 1160 m -3200 1160 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1159 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --151.74 2.07 Td -(dcache_rsp_if.core_rsp_read[4..0]) Tj -ET -Q -3190 1180 m -3200 1180 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1179 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --152.29 2.07 Td -(dcache_rsp_if.core_rsp_valid[3..0]) Tj -ET -Q -3190 1200 m -3200 1200 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1199 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --178.41 2.07 Td -(dcache_rsp_if.core_rsp_warp_num[2..0]) Tj -ET -Q -3190 1220 m -3200 1220 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3198 1219 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --152.84 2.07 Td -(dcache_rsp_if.core_rsp_write[1..0]) Tj -ET -Q -1 w -3270 820 m -3260 820 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 819 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_ready) Tj -ET -Q -3270 940 m -3260 940 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(mem_delay) Tj -ET -Q -3270 840 m -3260 840 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(exec_delay) Tj -ET -Q -3270 860 m -3260 860 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpr_stage_delay) Tj -ET -Q -3270 920 m -3260 920 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(jal_rsp_if.jal) Tj -ET -Q -3270 320 m -3260 320 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 319 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(branch_rsp_if.valid_branch) Tj -ET -Q -3270 280 m -3260 280 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 279 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(branch_rsp_if.branch_dir) Tj -ET -Q -3270 980 m -3260 980 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 979 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.change_mask) Tj -ET -Q -3270 1260 m -3260 1260 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.wspawn) Tj -ET -Q -3270 1020 m -3260 1020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.ebreak) Tj -ET -Q -3270 1040 m -3260 1040 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1039 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.is_barrier) Tj -ET -Q -3270 1060 m -3260 1060 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1059 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.is_split) Tj -ET -Q -3270 1000 m -3260 1000 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 999 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.dont_split) Tj -ET -Q -3 w -3270 260 m -3260 260 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(branch_rsp_if.branch_dest[31..0]) Tj -ET -Q -3270 300 m -3260 300 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 299 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(branch_rsp_if.branch_warp_num[2..0]) Tj -ET -Q -3270 340 m -3260 340 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 339 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_addr[0][31..0]) Tj -ET -Q -3270 360 m -3260 360 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 359 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_addr[1][31..0]) Tj -ET -Q -3270 380 m -3260 380 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 379 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_addr[2][31..0]) Tj -ET -Q -3270 400 m -3260 400 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 399 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_addr[3][31..0]) Tj -ET -Q -3270 420 m -3260 420 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 419 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_data[0][31..0]) Tj -ET -Q -3270 440 m -3260 440 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 439 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_data[1][31..0]) Tj -ET -Q -3270 460 m -3260 460 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 459 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_data[2][31..0]) Tj -ET -Q -3270 480 m -3260 480 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 479 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_data[3][31..0]) Tj -ET -Q -3270 500 m -3260 500 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 499 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_pc[31..0]) Tj -ET -Q -3270 520 m -3260 520 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 519 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_rd[4..0]) Tj -ET -Q -3270 540 m -3260 540 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 539 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_read[0][2..0]) Tj -ET -Q -3270 560 m -3260 560 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 559 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_read[1][2..0]) Tj -ET -Q -3270 580 m -3260 580 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 579 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_read[2][2..0]) Tj -ET -Q -3270 600 m -3260 600 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 599 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_read[3][2..0]) Tj -ET -Q -3270 620 m -3260 620 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 619 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_valid[3..0]) Tj -ET -Q -3270 640 m -3260 640 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 639 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_warp_num[2..0]) Tj -ET -Q -3270 660 m -3260 660 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 659 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_wb[0][1..0]) Tj -ET -Q -3270 680 m -3260 680 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_wb[1][1..0]) Tj -ET -Q -3270 700 m -3260 700 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 699 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_wb[2][1..0]) Tj -ET -Q -3270 720 m -3260 720 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 719 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_wb[3][1..0]) Tj -ET -Q -3270 740 m -3260 740 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 739 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_write[0][2..0]) Tj -ET -Q -3270 760 m -3260 760 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 759 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_write[1][2..0]) Tj -ET -Q -3270 780 m -3260 780 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 779 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_write[2][2..0]) Tj -ET -Q -3270 800 m -3260 800 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 799 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_write[3][2..0]) Tj -ET -Q -3270 880 m -3260 880 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(jal_rsp_if.jal_dest[31..0]) Tj -ET -Q -3270 900 m -3260 900 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(jal_rsp_if.jal_warp_num[2..0]) Tj -ET -Q -3270 960 m -3260 960 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 959 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.barrier_id[31..0]) Tj -ET -Q -3270 1080 m -3260 1080 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1079 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.num_warps[3..0]) Tj -ET -Q -3270 1100 m -3260 1100 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1099 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.split_later_mask[3..0]) Tj -ET -Q -3270 1120 m -3260 1120 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.split_new_mask[3..0]) Tj -ET -Q -3270 1140 m -3260 1140 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1139 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.split_save_pc[31..0]) Tj -ET -Q -3270 1160 m -3260 1160 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1159 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.split_warp_num[2..0]) Tj -ET -Q -3270 1180 m -3260 1180 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1179 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.thread_mask[3..0]) Tj -ET -Q -3270 1200 m -3260 1200 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1199 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.warp_num[2..0]) Tj -ET -Q -3270 1220 m -3260 1220 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1219 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.wspawn_new_active[7..0]) Tj -ET -Q -3270 1240 m -3260 1240 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1239 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(warp_ctl_if.wspawn_pc[31..0]) Tj -ET -Q -3270 1280 m -3260 1280 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1279 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.rd[4..0]) Tj -ET -Q -3270 1300 m -3260 1300 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1299 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.wb[1..0]) Tj -ET -Q -3270 1320 m -3260 1320 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1319 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.wb_pc[31..0]) Tj -ET -Q -3270 1340 m -3260 1340 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1339 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.wb_valid[3..0]) Tj -ET -Q -3270 1360 m -3260 1360 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1359 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.wb_warp_num[2..0]) Tj -ET -Q -3270 1380 m -3260 1380 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1379 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.write_data[0][31..0]) Tj -ET -Q -3270 1400 m -3260 1400 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1399 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.write_data[1][31..0]) Tj -ET -Q -3270 1420 m -3260 1420 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1419 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.write_data[2][31..0]) Tj -ET -Q -3270 1440 m -3260 1440 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 3266 1439 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(writeback_if.write_data[3][31..0]) Tj -ET -Q -1 w -3210 960 m -3200 960 l -S -3210 1240 m -3200 1240 l -S -3210 1260 m -3200 1260 l -S -3210 980 m -3200 980 l -S -3210 600 m -3200 600 l -S -3210 500 m -3200 500 l -S -3210 860 m -3200 860 l -S -3210 560 m -3200 560 l -S -3210 700 m -3200 700 l -S -3210 740 m -3200 740 l -S -3210 660 m -3200 660 l -S -3210 640 m -3200 640 l -S -3210 620 m -3200 620 l -S -3210 580 m -3200 580 l -S -3 w -3210 440 m -3200 440 l -S -3210 460 m -3200 460 l -S -3210 480 m -3200 480 l -S -3210 520 m -3200 520 l -S -3210 540 m -3200 540 l -S -3210 680 m -3200 680 l -S -3210 720 m -3200 720 l -S -3210 760 m -3200 760 l -S -3210 780 m -3200 780 l -S -3210 420 m -3200 420 l -S -3210 800 m -3200 800 l -S -3210 820 m -3200 820 l -S -3210 840 m -3200 840 l -S -3210 880 m -3200 880 l -S -3210 900 m -3200 900 l -S -3210 920 m -3200 920 l -S -3210 940 m -3200 940 l -S -3210 1000 m -3200 1000 l -S -3210 1020 m -3200 1020 l -S -3210 1040 m -3200 1040 l -S -3210 1060 m -3200 1060 l -S -3210 1080 m -3200 1080 l -S -3210 1100 m -3200 1100 l -S -3210 1120 m -3200 1120 l -S -3210 1140 m -3200 1140 l -S -3210 1160 m -3200 1160 l -S -3210 1180 m -3200 1180 l -S -3210 1200 m -3200 1200 l -S -3210 1220 m -3200 1220 l -S -1 w -3250 820 m -3260 820 l -S -3250 940 m -3260 940 l -S -3250 840 m -3260 840 l -S -3250 860 m -3260 860 l -S -3250 920 m -3260 920 l -S -3250 320 m -3260 320 l -S -3250 280 m -3260 280 l -S -3250 980 m -3260 980 l -S -3250 1260 m -3260 1260 l -S -3250 1020 m -3260 1020 l -S -3250 1040 m -3260 1040 l -S -3250 1060 m -3260 1060 l -S -3250 1000 m -3260 1000 l -S -3 w -3250 260 m -3260 260 l -S -3250 300 m -3260 300 l -S -3250 340 m -3260 340 l -S -3250 360 m -3260 360 l -S -3250 380 m -3260 380 l -S -3250 400 m -3260 400 l -S -3250 420 m -3260 420 l -S -3250 440 m -3260 440 l -S -3250 460 m -3260 460 l -S -3250 480 m -3260 480 l -S -3250 500 m -3260 500 l -S -3250 520 m -3260 520 l -S -3250 540 m -3260 540 l -S -3250 560 m -3260 560 l -S -3250 580 m -3260 580 l -S -3250 600 m -3260 600 l -S -3250 620 m -3260 620 l -S -3250 640 m -3260 640 l -S -3250 660 m -3260 660 l -S -3250 680 m -3260 680 l -S -3250 700 m -3260 700 l -S -3250 720 m -3260 720 l -S -3250 740 m -3260 740 l -S -3250 760 m -3260 760 l -S -3250 780 m -3260 780 l -S -3250 800 m -3260 800 l -S -3250 880 m -3260 880 l -S -3250 900 m -3260 900 l -S -3250 960 m -3260 960 l -S -3250 1080 m -3260 1080 l -S -3250 1100 m -3260 1100 l -S -3250 1120 m -3260 1120 l -S -3250 1140 m -3260 1140 l -S -3250 1160 m -3260 1160 l -S -3250 1180 m -3260 1180 l -S -3250 1200 m -3260 1200 l -S -3250 1220 m -3260 1220 l -S -3250 1240 m -3260 1240 l -S -3250 1280 m -3260 1280 l -S -3250 1300 m -3260 1300 l -S -3250 1320 m -3260 1320 l -S -3250 1340 m -3260 1340 l -S -3250 1360 m -3260 1360 l -S -3250 1380 m -3260 1380 l -S -3250 1400 m -3260 1400 l -S -3250 1420 m -3260 1420 l -S -3250 1440 m -3260 1440 l -S -1 w -0.000 0.000 1.000 RG -0 1360 m --7 1367 l --21 1367 l --21 1353 l --7 1353 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 1360 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --14.664 -4.308 Td -(clk) Tj -ET -Q -q -0.000 0.000 0.000 rg -5165 653 60 1082 re -f -Q -q -0.506 0.749 0.373 rg -5160 648 60 1082 re -f -Q -0.176 0.176 0.176 RG -5160 648 60 1082 re -S -3 w -5171 653 m -5171 665 l -S -5165 659 m -5177 659 l -S -1 w -5163 651 16 16 re -S -q -0.000 0.000 0.000 rg -1 0 0 1 5190 646 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --44.676 2.484 Td -(dmem_controller) Tj -ET -Q -0.024 0.278 0.435 RG -5150 680 m -5160 680 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --12.22 2.07 Td -(clk) Tj -ET -Q -5150 1720 m -5160 1720 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1719 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --22.23 2.07 Td -(reset) Tj -ET -Q -5150 1200 m -5160 1200 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1199 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --189.53 2.07 Td -(gpu_dcache_dram_req_if.dram_req_ready) Tj -ET -Q -5150 1320 m -5160 1320 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1319 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --183.96 2.07 Td -(gpu_dcache_dram_res_if.dram_rsp_valid) Tj -ET -Q -5150 1360 m -5160 1360 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1359 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --171.76 2.07 Td -(gpu_dcache_snp_req_if.snp_req_valid) Tj -ET -Q -5150 1380 m -5160 1380 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1379 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --186.19 2.07 Td -(gpu_icache_dram_req_if.dram_req_ready) Tj -ET -Q -5150 1500 m -5160 1500 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1499 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --180.62 2.07 Td -(gpu_icache_dram_res_if.dram_rsp_valid) Tj -ET -Q -5150 1180 m -5160 1180 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1179 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --134.5 2.07 Td -(dcache_rsp_if.core_rsp_ready) Tj -ET -Q -5150 1700 m -5160 1700 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1699 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --131.16 2.07 Td -(icache_rsp_if.core_rsp_ready) Tj -ET -Q -5150 1620 m -5160 1620 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1619 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --138.95 2.07 Td -(icache_req_if.core_req_valid[0]) Tj -ET -Q -3 w -5150 700 m -5160 700 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 699 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --169.54 2.07 Td -(dcache_req_if.core_req_addr[0][31..0]) Tj -ET -Q -5150 720 m -5160 720 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 719 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --169.54 2.07 Td -(dcache_req_if.core_req_addr[1][31..0]) Tj -ET -Q -5150 740 m -5160 740 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 739 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --169.54 2.07 Td -(dcache_req_if.core_req_addr[2][31..0]) Tj -ET -Q -5150 760 m -5160 760 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 759 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --169.54 2.07 Td -(dcache_req_if.core_req_addr[3][31..0]) Tj -ET -Q -5150 780 m -5160 780 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 779 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --168.99 2.07 Td -(dcache_req_if.core_req_data[0][31..0]) Tj -ET -Q -5150 800 m -5160 800 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 799 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --168.99 2.07 Td -(dcache_req_if.core_req_data[1][31..0]) Tj -ET -Q -5150 820 m -5160 820 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 819 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --168.99 2.07 Td -(dcache_req_if.core_req_data[2][31..0]) Tj -ET -Q -5150 840 m -5160 840 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --168.99 2.07 Td -(dcache_req_if.core_req_data[3][31..0]) Tj -ET -Q -5150 860 m -5160 860 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --148.97 2.07 Td -(dcache_req_if.core_req_pc[31..0]) Tj -ET -Q -5150 880 m -5160 880 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --141.74 2.07 Td -(dcache_req_if.core_req_rd[4..0]) Tj -ET -Q -5150 900 m -5160 900 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --163.98 2.07 Td -(dcache_req_if.core_req_read[0][2..0]) Tj -ET -Q -5150 920 m -5160 920 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --163.98 2.07 Td -(dcache_req_if.core_req_read[1][2..0]) Tj -ET -Q -5150 940 m -5160 940 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --163.98 2.07 Td -(dcache_req_if.core_req_read[2][2..0]) Tj -ET -Q -5150 960 m -5160 960 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 959 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --163.98 2.07 Td -(dcache_req_if.core_req_read[3][2..0]) Tj -ET -Q -5150 980 m -5160 980 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 979 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --153.41 2.07 Td -(dcache_req_if.core_req_valid[3..0]) Tj -ET -Q -5150 1000 m -5160 1000 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 999 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --179.53 2.07 Td -(dcache_req_if.core_req_warp_num[2..0]) Tj -ET -Q -5150 1020 m -5160 1020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --156.75 2.07 Td -(dcache_req_if.core_req_wb[0][1..0]) Tj -ET -Q -5150 1040 m -5160 1040 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1039 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --156.75 2.07 Td -(dcache_req_if.core_req_wb[1][1..0]) Tj -ET -Q -5150 1060 m -5160 1060 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1059 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --156.75 2.07 Td -(dcache_req_if.core_req_wb[2][1..0]) Tj -ET -Q -5150 1080 m -5160 1080 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1079 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --156.75 2.07 Td -(dcache_req_if.core_req_wb[3][1..0]) Tj -ET -Q -5150 1100 m -5160 1100 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1099 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --165.08 2.07 Td -(dcache_req_if.core_req_write[0][2..0]) Tj -ET -Q -5150 1120 m -5160 1120 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --165.08 2.07 Td -(dcache_req_if.core_req_write[1][2..0]) Tj -ET -Q -5150 1140 m -5160 1140 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1139 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --165.08 2.07 Td -(dcache_req_if.core_req_write[2][2..0]) Tj -ET -Q -5150 1160 m -5160 1160 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1159 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --165.08 2.07 Td -(dcache_req_if.core_req_write[3][2..0]) Tj -ET -Q -5150 1220 m -5160 1220 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1219 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --211.21 2.07 Td -(gpu_dcache_dram_res_if.dram_rsp_addr[31..0]) Tj -ET -Q -5150 1240 m -5160 1240 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1239 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --221.78 2.07 Td -(gpu_dcache_dram_res_if.dram_rsp_data[0][31..0]) Tj -ET -Q -5150 1260 m -5160 1260 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --221.78 2.07 Td -(gpu_dcache_dram_res_if.dram_rsp_data[1][31..0]) Tj -ET -Q -5150 1280 m -5160 1280 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1279 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --221.78 2.07 Td -(gpu_dcache_dram_res_if.dram_rsp_data[2][31..0]) Tj -ET -Q -5150 1300 m -5160 1300 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1299 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --221.78 2.07 Td -(gpu_dcache_dram_res_if.dram_rsp_data[3][31..0]) Tj -ET -Q -5150 1340 m -5160 1340 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1339 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --199.01 2.07 Td -(gpu_dcache_snp_req_if.snp_req_addr[31..0]) Tj -ET -Q -5150 1400 m -5160 1400 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1399 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --207.87 2.07 Td -(gpu_icache_dram_res_if.dram_rsp_addr[31..0]) Tj -ET -Q -5150 1420 m -5160 1420 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1419 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --218.44 2.07 Td -(gpu_icache_dram_res_if.dram_rsp_data[0][31..0]) Tj -ET -Q -5150 1440 m -5160 1440 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1439 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --218.44 2.07 Td -(gpu_icache_dram_res_if.dram_rsp_data[1][31..0]) Tj -ET -Q -5150 1460 m -5160 1460 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1459 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --218.44 2.07 Td -(gpu_icache_dram_res_if.dram_rsp_data[2][31..0]) Tj -ET -Q -5150 1480 m -5160 1480 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1479 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --218.44 2.07 Td -(gpu_icache_dram_res_if.dram_rsp_data[3][31..0]) Tj -ET -Q -5150 1520 m -5160 1520 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1519 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --166.2 2.07 Td -(icache_req_if.core_req_addr[0][31..0]) Tj -ET -Q -5150 1540 m -5160 1540 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1539 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --165.65 2.07 Td -(icache_req_if.core_req_data[0][31..0]) Tj -ET -Q -5150 1560 m -5160 1560 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1559 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --145.63 2.07 Td -(icache_req_if.core_req_pc[31..0]) Tj -ET -Q -5150 1580 m -5160 1580 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1579 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --138.4 2.07 Td -(icache_req_if.core_req_rd[4..0]) Tj -ET -Q -5150 1600 m -5160 1600 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1599 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --160.64 2.07 Td -(icache_req_if.core_req_read[0][2..0]) Tj -ET -Q -5150 1640 m -5160 1640 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1639 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --176.19 2.07 Td -(icache_req_if.core_req_warp_num[2..0]) Tj -ET -Q -5150 1660 m -5160 1660 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1659 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --153.41 2.07 Td -(icache_req_if.core_req_wb[0][1..0]) Tj -ET -Q -5150 1680 m -5160 1680 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5158 1679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --161.74 2.07 Td -(icache_req_if.core_req_write[0][2..0]) Tj -ET -Q -1 w -5230 1220 m -5220 1220 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1219 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_req_write) Tj -ET -Q -5230 1200 m -5220 1200 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1199 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_req_read) Tj -ET -Q -5230 1240 m -5220 1240 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1239 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_rsp_ready) Tj -ET -Q -5230 1260 m -5220 1260 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_snp_req_if.snp_req_ready) Tj -ET -Q -5230 1400 m -5220 1400 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1399 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_req_write) Tj -ET -Q -5230 1380 m -5220 1380 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1379 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_req_read) Tj -ET -Q -5230 1420 m -5220 1420 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1419 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_rsp_ready) Tj -ET -Q -5230 840 m -5220 840 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_req_if.core_req_ready) Tj -ET -Q -5230 1520 m -5220 1520 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1519 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_rsp_if.core_rsp_valid[0]) Tj -ET -Q -5230 1440 m -5220 1440 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1439 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_ready) Tj -ET -Q -3 w -5230 860 m -5220 860 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_data[0][31..0]) Tj -ET -Q -5230 880 m -5220 880 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_data[1][31..0]) Tj -ET -Q -5230 900 m -5220 900 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_data[2][31..0]) Tj -ET -Q -5230 920 m -5220 920 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_data[3][31..0]) Tj -ET -Q -5230 940 m -5220 940 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_pc[0][31..0]) Tj -ET -Q -5230 960 m -5220 960 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 959 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_pc[1][31..0]) Tj -ET -Q -5230 980 m -5220 980 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 979 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_pc[2][31..0]) Tj -ET -Q -5230 1000 m -5220 1000 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 999 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_pc[3][31..0]) Tj -ET -Q -5230 1020 m -5220 1020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_read[4..0]) Tj -ET -Q -5230 1040 m -5220 1040 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1039 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_valid[3..0]) Tj -ET -Q -5230 1060 m -5220 1060 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1059 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_warp_num[2..0]) Tj -ET -Q -5230 1080 m -5220 1080 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1079 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(dcache_rsp_if.core_rsp_write[1..0]) Tj -ET -Q -5230 1100 m -5220 1100 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1099 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_req_addr[31..0]) Tj -ET -Q -5230 1120 m -5220 1120 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_req_data[0][31..0]) Tj -ET -Q -5230 1140 m -5220 1140 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1139 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_req_data[1][31..0]) Tj -ET -Q -5230 1160 m -5220 1160 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1159 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_req_data[2][31..0]) Tj -ET -Q -5230 1180 m -5220 1180 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1179 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_dcache_dram_req_if.dram_req_data[3][31..0]) Tj -ET -Q -5230 1280 m -5220 1280 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1279 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_req_addr[31..0]) Tj -ET -Q -5230 1300 m -5220 1300 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1299 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_req_data[0][31..0]) Tj -ET -Q -5230 1320 m -5220 1320 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1319 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_req_data[1][31..0]) Tj -ET -Q -5230 1340 m -5220 1340 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1339 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_req_data[2][31..0]) Tj -ET -Q -5230 1360 m -5220 1360 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1359 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(gpu_icache_dram_req_if.dram_req_data[3][31..0]) Tj -ET -Q -5230 1460 m -5220 1460 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1459 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_rsp_if.core_rsp_data[0][31..0]) Tj -ET -Q -5230 1480 m -5220 1480 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1479 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_rsp_if.core_rsp_pc[0][31..0]) Tj -ET -Q -5230 1500 m -5220 1500 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1499 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_rsp_if.core_rsp_read[4..0]) Tj -ET -Q -5230 1540 m -5220 1540 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1539 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_rsp_if.core_rsp_warp_num[2..0]) Tj -ET -Q -5230 1560 m -5220 1560 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 5226 1559 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_rsp_if.core_rsp_write[1..0]) Tj -ET -Q -1 w -5170 680 m -5160 680 l -S -5170 1720 m -5160 1720 l -S -5170 1200 m -5160 1200 l -S -5170 1320 m -5160 1320 l -S -5170 1360 m -5160 1360 l -S -5170 1380 m -5160 1380 l -S -5170 1500 m -5160 1500 l -S -5170 1180 m -5160 1180 l -S -5170 1700 m -5160 1700 l -S -5170 1620 m -5160 1620 l -S -3 w -5170 700 m -5160 700 l -S -5170 720 m -5160 720 l -S -5170 740 m -5160 740 l -S -5170 760 m -5160 760 l -S -5170 780 m -5160 780 l -S -5170 800 m -5160 800 l -S -5170 820 m -5160 820 l -S -5170 840 m -5160 840 l -S -5170 860 m -5160 860 l -S -5170 880 m -5160 880 l -S -5170 900 m -5160 900 l -S -5170 920 m -5160 920 l -S -5170 940 m -5160 940 l -S -5170 960 m -5160 960 l -S -5170 980 m -5160 980 l -S -5170 1000 m -5160 1000 l -S -5170 1020 m -5160 1020 l -S -5170 1040 m -5160 1040 l -S -5170 1060 m -5160 1060 l -S -5170 1080 m -5160 1080 l -S -5170 1100 m -5160 1100 l -S -5170 1120 m -5160 1120 l -S -5170 1140 m -5160 1140 l -S -5170 1160 m -5160 1160 l -S -5170 1220 m -5160 1220 l -S -5170 1240 m -5160 1240 l -S -5170 1260 m -5160 1260 l -S -5170 1280 m -5160 1280 l -S -5170 1300 m -5160 1300 l -S -5170 1340 m -5160 1340 l -S -5170 1400 m -5160 1400 l -S -5170 1420 m -5160 1420 l -S -5170 1440 m -5160 1440 l -S -5170 1460 m -5160 1460 l -S -5170 1480 m -5160 1480 l -S -5170 1520 m -5160 1520 l -S -5170 1540 m -5160 1540 l -S -5170 1560 m -5160 1560 l -S -5170 1580 m -5160 1580 l -S -5170 1600 m -5160 1600 l -S -5170 1640 m -5160 1640 l -S -5170 1660 m -5160 1660 l -S -5170 1680 m -5160 1680 l -S -1 w -5210 1220 m -5220 1220 l -S -5210 1200 m -5220 1200 l -S -5210 1240 m -5220 1240 l -S -5210 1260 m -5220 1260 l -S -5210 1400 m -5220 1400 l -S -5210 1380 m -5220 1380 l -S -5210 1420 m -5220 1420 l -S -5210 840 m -5220 840 l -S -5210 1520 m -5220 1520 l -S -5210 1440 m -5220 1440 l -S -3 w -5210 860 m -5220 860 l -S -5210 880 m -5220 880 l -S -5210 900 m -5220 900 l -S -5210 920 m -5220 920 l -S -5210 940 m -5220 940 l -S -5210 960 m -5220 960 l -S -5210 980 m -5220 980 l -S -5210 1000 m -5220 1000 l -S -5210 1020 m -5220 1020 l -S -5210 1040 m -5220 1040 l -S -5210 1060 m -5220 1060 l -S -5210 1080 m -5220 1080 l -S -5210 1100 m -5220 1100 l -S -5210 1120 m -5220 1120 l -S -5210 1140 m -5220 1140 l -S -5210 1160 m -5220 1160 l -S -5210 1180 m -5220 1180 l -S -5210 1280 m -5220 1280 l -S -5210 1300 m -5220 1300 l -S -5210 1320 m -5220 1320 l -S -5210 1340 m -5220 1340 l -S -5210 1360 m -5220 1360 l -S -5210 1460 m -5220 1460 l -S -5210 1480 m -5220 1480 l -S -5210 1500 m -5220 1500 l -S -5210 1540 m -5220 1540 l -S -5210 1560 m -5220 1560 l -S -0.000 0.000 1.000 RG -6040 1100 m -6040 1093 l -6054 1093 l -6061 1100 l -6054 1107 l -6040 1107 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1100 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(dram_req_addr[31..0]) Tj -ET -Q -6040 1440 m -6040 1433 l -6054 1433 l -6061 1440 l -6054 1447 l -6040 1447 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1440 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(dram_req_data[127..0]) Tj -ET -Q -1 w -0 2560 m --7 2567 l --21 2567 l --21 2553 l --7 2553 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2560 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --88.032 -4.308 Td -(dram_req_ready) Tj -ET -Q -6040 1200 m -6040 1193 l -6054 1193 l -6061 1200 l -6054 1207 l -6040 1207 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1200 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(dram_req_read) Tj -ET -Q -6040 1220 m -6040 1213 l -6054 1213 l -6061 1220 l -6054 1227 l -6040 1227 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1220 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(dram_req_write) Tj -ET -Q -3 w -0 2460 m --7 2467 l --21 2467 l --21 2453 l --7 2453 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2460 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --114.72 -4.308 Td -(dram_rsp_addr[31..0]) Tj -ET -Q -0 2480 m --7 2487 l --21 2487 l --21 2473 l --7 2473 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2480 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --120.732 -4.308 Td -(dram_rsp_data[127..0]) Tj -ET -Q -1 w -6040 1240 m -6040 1233 l -6054 1233 l -6061 1240 l -6054 1247 l -6040 1247 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1240 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(dram_rsp_ready) Tj -ET -Q -0 2500 m --7 2507 l --21 2507 l --21 2493 l --7 2493 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2500 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --82.02 -4.308 Td -(dram_rsp_valid) Tj -ET -Q -6040 3020 m -6040 3013 l -6054 3013 l -6061 3020 l -6054 3027 l -6040 3027 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 3020 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(ebreak) Tj -ET -Q -q -0.000 0.000 0.000 rg -865 1413 60 782 re -f -Q -q -0.506 0.749 0.373 rg -860 1408 60 782 re -f -Q -0.176 0.176 0.176 RG -860 1408 60 782 re -S -3 w -871 1413 m -871 1425 l -S -865 1419 m -877 1419 l -S -1 w -863 1411 16 16 re -S -q -0.000 0.000 0.000 rg -1 0 0 1 890 1406 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --25.35 2.484 Td -(front_end) Tj -ET -Q -0.024 0.278 0.435 RG -850 1560 m -860 1560 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1559 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --12.22 2.07 Td -(clk) Tj -ET -Q -850 1780 m -860 1780 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1779 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --22.23 2.07 Td -(reset) Tj -ET -Q -850 1800 m -860 1800 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1799 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --69.48 2.07 Td -(schedule_delay) Tj -ET -Q -850 1840 m -860 1840 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --112.82 2.07 Td -(warp_ctl_if.change_mask) Tj -ET -Q -850 2120 m -860 2120 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 2119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.69 2.07 Td -(warp_ctl_if.wspawn) Tj -ET -Q -850 1880 m -860 1880 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --81.14 2.07 Td -(warp_ctl_if.ebreak) Tj -ET -Q -850 1900 m -860 1900 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --92.24 2.07 Td -(warp_ctl_if.is_barrier) Tj -ET -Q -850 1920 m -860 1920 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --81.13 2.07 Td -(warp_ctl_if.is_split) Tj -ET -Q -850 1860 m -860 1860 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --93.37 2.07 Td -(warp_ctl_if.dont_split) Tj -ET -Q -850 1660 m -860 1660 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1659 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --137.83 2.07 Td -(icache_rsp_if.core_rsp_valid[0]) Tj -ET -Q -850 1580 m -860 1580 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1579 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --132.28 2.07 Td -(icache_req_if.core_req_ready) Tj -ET -Q -850 1760 m -860 1760 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1759 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --52.79 2.07 Td -(jal_rsp_if.jal) Tj -ET -Q -850 1540 m -860 1540 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1539 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --120.05 2.07 Td -(branch_rsp_if.valid_branch) Tj -ET -Q -850 1500 m -860 1500 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1499 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --110.6 2.07 Td -(branch_rsp_if.branch_dir) Tj -ET -Q -3 w -850 1480 m -860 1480 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1479 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --146.19 2.07 Td -(branch_rsp_if.branch_dest[31..0]) Tj -ET -Q -850 1520 m -860 1520 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1519 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --168.41 2.07 Td -(branch_rsp_if.branch_warp_num[2..0]) Tj -ET -Q -850 1600 m -860 1600 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1599 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --164.53 2.07 Td -(icache_rsp_if.core_rsp_data[0][31..0]) Tj -ET -Q -850 1620 m -860 1620 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1619 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --155.63 2.07 Td -(icache_rsp_if.core_rsp_pc[0][31..0]) Tj -ET -Q -850 1640 m -860 1640 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1639 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --148.4 2.07 Td -(icache_rsp_if.core_rsp_read[4..0]) Tj -ET -Q -850 1680 m -860 1680 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --175.07 2.07 Td -(icache_rsp_if.core_rsp_warp_num[2..0]) Tj -ET -Q -850 1700 m -860 1700 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1699 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --149.5 2.07 Td -(icache_rsp_if.core_rsp_write[1..0]) Tj -ET -Q -850 1720 m -860 1720 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1719 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --105.05 2.07 Td -(jal_rsp_if.jal_dest[31..0]) Tj -ET -Q -850 1740 m -860 1740 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1739 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --127.27 2.07 Td -(jal_rsp_if.jal_warp_num[2..0]) Tj -ET -Q -850 1820 m -860 1820 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1819 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --120.6 2.07 Td -(warp_ctl_if.barrier_id[31..0]) Tj -ET -Q -850 1940 m -860 1940 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --124.49 2.07 Td -(warp_ctl_if.num_warps[3..0]) Tj -ET -Q -850 1960 m -860 1960 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1959 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --145.05 2.07 Td -(warp_ctl_if.split_later_mask[3..0]) Tj -ET -Q -850 1980 m -860 1980 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1979 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --143.94 2.07 Td -(warp_ctl_if.split_new_mask[3..0]) Tj -ET -Q -850 2000 m -860 2000 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 1999 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --138.95 2.07 Td -(warp_ctl_if.split_save_pc[31..0]) Tj -ET -Q -850 2020 m -860 2020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 2019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --142.83 2.07 Td -(warp_ctl_if.split_warp_num[2..0]) Tj -ET -Q -850 2040 m -860 2040 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 2039 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --130.61 2.07 Td -(warp_ctl_if.thread_mask[3..0]) Tj -ET -Q -850 2060 m -860 2060 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 2059 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --119.49 2.07 Td -(warp_ctl_if.warp_num[2..0]) Tj -ET -Q -850 2080 m -860 2080 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 2079 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --164.51 2.07 Td -(warp_ctl_if.wspawn_new_active[7..0]) Tj -ET -Q -850 2100 m -860 2100 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 858 2099 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --130.61 2.07 Td -(warp_ctl_if.wspawn_pc[31..0]) Tj -ET -Q -1 w -930 2180 m -920 2180 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2179 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_rsp_if.core_rsp_ready) Tj -ET -Q -930 2100 m -920 2100 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2099 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_valid[0]) Tj -ET -Q -930 1620 m -920 1620 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1619 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.is_csr) Tj -ET -Q -930 1520 m -920 1520 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1519 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.csr_immed) Tj -ET -Q -930 1880 m -920 1880 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.rs2_src) Tj -ET -Q -930 1580 m -920 1580 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1579 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.ebreak) Tj -ET -Q -930 1720 m -920 1720 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1719 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.jalQual) Tj -ET -Q -930 1760 m -920 1760 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1759 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.jal) Tj -ET -Q -930 1680 m -920 1680 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.is_wspawn) Tj -ET -Q -930 1660 m -920 1660 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1659 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.is_tmc) Tj -ET -Q -930 1640 m -920 1640 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1639 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.is_split) Tj -ET -Q -930 1600 m -920 1600 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1599 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.is_barrier) Tj -ET -Q -930 1980 m -920 1980 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1979 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(fetch_ebreak) Tj -ET -Q -3 w -930 1460 m -920 1460 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1459 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.alu_op[4..0]) Tj -ET -Q -930 1480 m -920 1480 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1479 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.branch_type[2..0]) Tj -ET -Q -930 1500 m -920 1500 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1499 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.csr_address[11..0]) Tj -ET -Q -930 1540 m -920 1540 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1539 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.csr_mask[31..0]) Tj -ET -Q -930 1560 m -920 1560 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1559 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.curr_PC[31..0]) Tj -ET -Q -930 1700 m -920 1700 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1699 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.itype_immed[31..0]) Tj -ET -Q -930 1740 m -920 1740 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1739 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.jal_offset[31..0]) Tj -ET -Q -930 1780 m -920 1780 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1779 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.mem_read[2..0]) Tj -ET -Q -930 1800 m -920 1800 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1799 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.mem_write[2..0]) Tj -ET -Q -930 1440 m -920 1440 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1439 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.PC_next[31..0]) Tj -ET -Q -930 1820 m -920 1820 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1819 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.rd[4..0]) Tj -ET -Q -930 1840 m -920 1840 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.rs1[4..0]) Tj -ET -Q -930 1860 m -920 1860 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.rs2[4..0]) Tj -ET -Q -930 1900 m -920 1900 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.upper_immed[19..0]) Tj -ET -Q -930 1920 m -920 1920 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.valid[3..0]) Tj -ET -Q -930 1940 m -920 1940 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.warp_num[2..0]) Tj -ET -Q -930 1960 m -920 1960 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1959 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(bckE_req_if.wb[1..0]) Tj -ET -Q -930 2000 m -920 2000 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 1999 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_addr[0][31..0]) Tj -ET -Q -930 2020 m -920 2020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_data[0][31..0]) Tj -ET -Q -930 2040 m -920 2040 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2039 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_pc[31..0]) Tj -ET -Q -930 2060 m -920 2060 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2059 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_rd[4..0]) Tj -ET -Q -930 2080 m -920 2080 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2079 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_read[0][2..0]) Tj -ET -Q -930 2120 m -920 2120 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_warp_num[2..0]) Tj -ET -Q -930 2140 m -920 2140 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2139 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_wb[0][1..0]) Tj -ET -Q -930 2160 m -920 2160 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 926 2159 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(icache_req_if.core_req_write[0][2..0]) Tj -ET -Q -1 w -870 1560 m -860 1560 l -S -870 1780 m -860 1780 l -S -870 1800 m -860 1800 l -S -870 1840 m -860 1840 l -S -870 2120 m -860 2120 l -S -870 1880 m -860 1880 l -S -870 1900 m -860 1900 l -S -870 1920 m -860 1920 l -S -870 1860 m -860 1860 l -S -870 1660 m -860 1660 l -S -870 1580 m -860 1580 l -S -870 1760 m -860 1760 l -S -870 1540 m -860 1540 l -S -870 1500 m -860 1500 l -S -3 w -870 1480 m -860 1480 l -S -870 1520 m -860 1520 l -S -870 1600 m -860 1600 l -S -870 1620 m -860 1620 l -S -870 1640 m -860 1640 l -S -870 1680 m -860 1680 l -S -870 1700 m -860 1700 l -S -870 1720 m -860 1720 l -S -870 1740 m -860 1740 l -S -870 1820 m -860 1820 l -S -870 1940 m -860 1940 l -S -870 1960 m -860 1960 l -S -870 1980 m -860 1980 l -S -870 2000 m -860 2000 l -S -870 2020 m -860 2020 l -S -870 2040 m -860 2040 l -S -870 2060 m -860 2060 l -S -870 2080 m -860 2080 l -S -870 2100 m -860 2100 l -S -1 w -910 2180 m -920 2180 l -S -910 2100 m -920 2100 l -S -910 1620 m -920 1620 l -S -910 1520 m -920 1520 l -S -910 1880 m -920 1880 l -S -910 1580 m -920 1580 l -S -910 1720 m -920 1720 l -S -910 1760 m -920 1760 l -S -910 1680 m -920 1680 l -S -910 1660 m -920 1660 l -S -910 1640 m -920 1640 l -S -910 1600 m -920 1600 l -S -910 1980 m -920 1980 l -S -3 w -910 1460 m -920 1460 l -S -910 1480 m -920 1480 l -S -910 1500 m -920 1500 l -S -910 1540 m -920 1540 l -S -910 1560 m -920 1560 l -S -910 1700 m -920 1700 l -S -910 1740 m -920 1740 l -S -910 1780 m -920 1780 l -S -910 1800 m -920 1800 l -S -910 1440 m -920 1440 l -S -910 1820 m -920 1820 l -S -910 1840 m -920 1840 l -S -910 1860 m -920 1860 l -S -910 1900 m -920 1900 l -S -910 1920 m -920 1920 l -S -910 1940 m -920 1940 l -S -910 1960 m -920 1960 l -S -910 2000 m -920 2000 l -S -910 2020 m -920 2020 l -S -910 2040 m -920 2040 l -S -910 2060 m -920 2060 l -S -910 2080 m -920 2080 l -S -910 2120 m -920 2120 l -S -910 2140 m -920 2140 l -S -910 2160 m -920 2160 l -S -0.000 0.000 1.000 RG -6040 420 m -6040 413 l -6054 413 l -6061 420 l -6054 427 l -6040 427 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 420 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(io_data[31..0]) Tj -ET -Q -q -0.000 0.000 0.000 rg -5165 2915 m -5165 2930 l -5190 2930 l -5190 2930 l -5193 2930 l -5196 2929 l -5198 2928 l -5200 2926 l -5203 2923 l -5204 2921 l -5205 2918 l -5205 2915 l -5205 2912 l -5204 2909 l -5203 2907 l -5201 2905 l -5198 2902 l -5196 2901 l -5193 2900 l -5190 2900 l -5190 2900 l -5165 2900 l -h f -Q -q -0.451 0.675 0.675 rg -5160 2910 m -5160 2925 l -5185 2925 l -5185 2925 l -5188 2925 l -5191 2924 l -5193 2923 l -5195 2921 l -5198 2918 l -5199 2916 l -5200 2913 l -5200 2910 l -5200 2907 l -5199 2904 l -5198 2902 l -5196 2900 l -5193 2897 l -5191 2896 l -5188 2895 l -5185 2895 l -5185 2895 l -5160 2895 l -h f -Q -1 w -0.176 0.176 0.176 RG -5160 2910 m -5160 2925 l -5185 2925 l -S -5185 2895 m -5185 2895 5185 2895 5185 2895 c -5193.28 2895 5200 2901.72 5200 2910 c -5200 2918.28 5193.28 2925 5185 2925 c -S -5185 2895 m -5160 2895 l -5160 2910 l -S -5160 2895 m -5160 2876 l -S -5160 2925 m -5160 2944 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 5162 2894 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(io_valid) Tj -ET -Q -0.024 0.278 0.435 RG -5160 2880 m -5160 2878.34 5158.66 2877 5157 2877 c -5155.34 2877 5154 2878.34 5154 2880 c -5154 2881.66 5155.34 2883 5157 2883 c -5158.66 2883 5160 2881.66 5160 2880 c -S -5150 2880 m -5154 2880 l -S -5150 2920 m -5160 2920 l -S -5150 2900 m -5160 2900 l -S -5160 2940 m -5160 2938.34 5158.66 2937 5157 2937 c -5155.34 2937 5154 2938.34 5154 2940 c -5154 2941.66 5155.34 2943 5157 2943 c -5158.66 2943 5160 2941.66 5160 2940 c -S -5150 2940 m -5154 2940 l -S -5210 2910 m -5200 2910 l -S -0.000 0.000 1.000 RG -6040 2910 m -6040 2903 l -6054 2903 l -6061 2910 l -6054 2917 l -6040 2917 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 2910 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(io_valid) Tj -ET -Q -q -0.000 0.000 0.000 rg -4265 2645 m -4265 2660 l -4290 2660 l -4290 2660 l -4293 2660 l -4296 2659 l -4298 2658 l -4300 2656 l -4303 2653 l -4304 2651 l -4305 2648 l -4305 2645 l -4305 2642 l -4304 2639 l -4303 2637 l -4301 2635 l -4298 2632 l -4296 2631 l -4293 2630 l -4290 2630 l -4290 2630 l -4265 2630 l -h f -Q -q -0.451 0.675 0.675 rg -4260 2640 m -4260 2655 l -4285 2655 l -4285 2655 l -4288 2655 l -4291 2654 l -4293 2653 l -4295 2651 l -4298 2648 l -4299 2646 l -4300 2643 l -4300 2640 l -4300 2637 l -4299 2634 l -4298 2632 l -4296 2630 l -4293 2627 l -4291 2626 l -4288 2625 l -4285 2625 l -4285 2625 l -4260 2625 l -h f -Q -0.176 0.176 0.176 RG -4260 2640 m -4260 2655 l -4285 2655 l -S -4285 2625 m -4285 2625 4285 2625 4285 2625 c -4293.28 2625 4300 2631.72 4300 2640 c -4300 2648.28 4293.28 2655 4285 2655 c -S -4285 2625 m -4260 2625 l -4260 2640 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4262 2624 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(i403) Tj -ET -Q -0.024 0.278 0.435 RG -4260 2650 m -4260 2648.34 4258.66 2647 4257 2647 c -4255.34 2647 4254 2648.34 4254 2650 c -4254 2651.66 4255.34 2653 4257 2653 c -4258.66 2653 4260 2651.66 4260 2650 c -S -4250 2650 m -4254 2650 l -S -4250 2630 m -4260 2630 l -S -4310 2640 m -4300 2640 l -S -q -0.000 0.000 0.000 rg -4265 2695 m -4265 2710 l -4290 2710 l -4290 2710 l -4293 2710 l -4296 2709 l -4298 2708 l -4300 2706 l -4303 2703 l -4304 2701 l -4305 2698 l -4305 2695 l -4305 2692 l -4304 2689 l -4303 2687 l -4301 2685 l -4298 2682 l -4296 2681 l -4293 2680 l -4290 2680 l -4290 2680 l -4265 2680 l -h f -Q -q -0.451 0.675 0.675 rg -4260 2690 m -4260 2705 l -4285 2705 l -4285 2705 l -4288 2705 l -4291 2704 l -4293 2703 l -4295 2701 l -4298 2698 l -4299 2696 l -4300 2693 l -4300 2690 l -4300 2687 l -4299 2684 l -4298 2682 l -4296 2680 l -4293 2677 l -4291 2676 l -4288 2675 l -4285 2675 l -4285 2675 l -4260 2675 l -h f -Q -0.176 0.176 0.176 RG -4260 2690 m -4260 2705 l -4285 2705 l -S -4285 2675 m -4285 2675 4285 2675 4285 2675 c -4293.28 2675 4300 2681.72 4300 2690 c -4300 2698.28 4293.28 2705 4285 2705 c -S -4285 2675 m -4260 2675 l -4260 2690 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4262 2674 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(i404) Tj -ET -Q -0.024 0.278 0.435 RG -4260 2700 m -4260 2698.34 4258.66 2697 4257 2697 c -4255.34 2697 4254 2698.34 4254 2700 c -4254 2701.66 4255.34 2703 4257 2703 c -4258.66 2703 4260 2701.66 4260 2700 c -S -4250 2700 m -4254 2700 l -S -4250 2680 m -4260 2680 l -S -4310 2690 m -4300 2690 l -S -q -0.000 0.000 0.000 rg -4265 2745 m -4265 2760 l -4290 2760 l -4290 2760 l -4293 2760 l -4296 2759 l -4298 2758 l -4300 2756 l -4303 2753 l -4304 2751 l -4305 2748 l -4305 2745 l -4305 2742 l -4304 2739 l -4303 2737 l -4301 2735 l -4298 2732 l -4296 2731 l -4293 2730 l -4290 2730 l -4290 2730 l -4265 2730 l -h f -Q -q -0.451 0.675 0.675 rg -4260 2740 m -4260 2755 l -4285 2755 l -4285 2755 l -4288 2755 l -4291 2754 l -4293 2753 l -4295 2751 l -4298 2748 l -4299 2746 l -4300 2743 l -4300 2740 l -4300 2737 l -4299 2734 l -4298 2732 l -4296 2730 l -4293 2727 l -4291 2726 l -4288 2725 l -4285 2725 l -4285 2725 l -4260 2725 l -h f -Q -0.176 0.176 0.176 RG -4260 2740 m -4260 2755 l -4285 2755 l -S -4285 2725 m -4285 2725 4285 2725 4285 2725 c -4293.28 2725 4300 2731.72 4300 2740 c -4300 2748.28 4293.28 2755 4285 2755 c -S -4285 2725 m -4260 2725 l -4260 2740 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4262 2724 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(i405) Tj -ET -Q -0.024 0.278 0.435 RG -4260 2750 m -4260 2748.34 4258.66 2747 4257 2747 c -4255.34 2747 4254 2748.34 4254 2750 c -4254 2751.66 4255.34 2753 4257 2753 c -4258.66 2753 4260 2751.66 4260 2750 c -S -4250 2750 m -4254 2750 l -S -4250 2730 m -4260 2730 l -S -4310 2740 m -4300 2740 l -S -q -0.000 0.000 0.000 rg -4265 2795 m -4265 2810 l -4290 2810 l -4290 2810 l -4293 2810 l -4296 2809 l -4298 2808 l -4300 2806 l -4303 2803 l -4304 2801 l -4305 2798 l -4305 2795 l -4305 2792 l -4304 2789 l -4303 2787 l -4301 2785 l -4298 2782 l -4296 2781 l -4293 2780 l -4290 2780 l -4290 2780 l -4265 2780 l -h f -Q -q -0.451 0.675 0.675 rg -4260 2790 m -4260 2805 l -4285 2805 l -4285 2805 l -4288 2805 l -4291 2804 l -4293 2803 l -4295 2801 l -4298 2798 l -4299 2796 l -4300 2793 l -4300 2790 l -4300 2787 l -4299 2784 l -4298 2782 l -4296 2780 l -4293 2777 l -4291 2776 l -4288 2775 l -4285 2775 l -4285 2775 l -4260 2775 l -h f -Q -0.176 0.176 0.176 RG -4260 2790 m -4260 2805 l -4285 2805 l -S -4285 2775 m -4285 2775 4285 2775 4285 2775 c -4293.28 2775 4300 2781.72 4300 2790 c -4300 2798.28 4293.28 2805 4285 2805 c -S -4285 2775 m -4260 2775 l -4260 2790 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4262 2774 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(i406) Tj -ET -Q -0.024 0.278 0.435 RG -4260 2800 m -4260 2798.34 4258.66 2797 4257 2797 c -4255.34 2797 4254 2798.34 4254 2800 c -4254 2801.66 4255.34 2803 4257 2803 c -4258.66 2803 4260 2801.66 4260 2800 c -S -4250 2800 m -4254 2800 l -S -4250 2780 m -4260 2780 l -S -4310 2790 m -4300 2790 l -S -3 w -0.000 0.000 1.000 RG -0 2580 m --7 2587 l --21 2587 l --21 2573 l --7 2573 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2580 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --125.4 -4.308 Td -(llc_snp_req_addr[31..0]) Tj -ET -Q -1 w -6040 1260 m -6040 1253 l -6054 1253 l -6061 1260 l -6054 1267 l -6040 1267 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 6069 1260 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 -4.308 Td -(llc_snp_req_ready) Tj -ET -Q -0 2600 m --7 2607 l --21 2607 l --21 2593 l --7 2593 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 2600 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --92.7 -4.308 Td -(llc_snp_req_valid) Tj -ET -Q -q -0.000 0.000 0.000 rg -4265 160 m -4267 162 l -4269 165 l -4270 167 l -4271 170 l -4272 173 l -4272 177 l -4271 180 l -4270 183 l -4269 185 l -4267 188 l -4265 190 l -4265 190 l -4280 190 l -4280 190 l -4283 190 l -4286 189 l -4289 188 l -4291 187 l -4294 186 l -4297 184 l -4299 182 l -4301 180 l -4303 178 l -4305 175 l -4305 175 l -4303 172 l -4301 170 l -4299 168 l -4297 166 l -4294 164 l -4291 163 l -4289 162 l -4286 161 l -4283 160 l -4280 160 l -4280 160 l -h f -Q -q -0.451 0.675 0.675 rg -4260 155 m -4262 157 l -4264 160 l -4265 162 l -4266 165 l -4267 168 l -4267 172 l -4266 175 l -4265 178 l -4264 180 l -4262 183 l -4260 185 l -4260 185 l -4275 185 l -4275 185 l -4278 185 l -4281 184 l -4284 183 l -4286 182 l -4289 181 l -4292 179 l -4294 177 l -4296 175 l -4298 173 l -4300 170 l -4300 170 l -4298 167 l -4296 165 l -4294 163 l -4292 161 l -4289 159 l -4286 158 l -4284 157 l -4281 156 l -4278 155 l -4275 155 l -4275 155 l -h f -Q -0.176 0.176 0.176 RG -4260 185 m -4260.88 184.263 4261.69 183.451 4262.43 182.571 c -4269.37 174.287 4268.28 161.943 4260 155 c -S -4260 185 m -4275 185 l -S -4300 170 m -4294.49 178.656 4285.23 184.213 4275 185 c -S -4275 155 m -4285.23 155.787 4294.49 161.344 4300 170 c -S -4275 155 m -4260 155 l -S -4260 155 m -4260 6 l -S -4260 185 m -4260 324 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4262 154 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(reduce_nor_0) Tj -ET -Q -0.024 0.278 0.435 RG -4250 10 m -4260 10 l -S -4250 20 m -4260 20 l -S -4250 30 m -4260 30 l -S -4250 40 m -4260 40 l -S -4250 50 m -4260 50 l -S -4250 60 m -4260 60 l -S -4250 70 m -4260 70 l -S -4250 80 m -4260 80 l -S -4250 90 m -4260 90 l -S -4250 100 m -4260 100 l -S -4250 110 m -4260 110 l -S -4250 120 m -4260 120 l -S -4250 130 m -4260 130 l -S -4250 140 m -4260 140 l -S -4250 150 m -4260 150 l -S -4263 160 m -4263 158.343 4261.66 157 4260 157 c -4258.34 157 4257 158.343 4257 160 c -4257 161.657 4258.34 163 4260 163 c -4261.66 163 4263 161.657 4263 160 c -S -4250 160 m -4257 160 l -S -4250 170 m -4267 170 l -S -4250 180 m -4264 180 l -S -4250 190 m -4260 190 l -S -4250 200 m -4260 200 l -S -4250 210 m -4260 210 l -S -4250 220 m -4260 220 l -S -4250 230 m -4260 230 l -S -4250 240 m -4260 240 l -S -4250 250 m -4260 250 l -S -4250 260 m -4260 260 l -S -4250 270 m -4260 270 l -S -4250 280 m -4260 280 l -S -4250 290 m -4260 290 l -S -4250 300 m -4260 300 l -S -4250 310 m -4260 310 l -S -4250 320 m -4260 320 l -S -4310 170 m -4300 170 l -S -q -0.000 0.000 0.000 rg -4265 2840 m -4267 2842 l -4269 2845 l -4270 2847 l -4271 2850 l -4272 2853 l -4272 2857 l -4271 2860 l -4270 2863 l -4269 2865 l -4267 2868 l -4265 2870 l -4265 2870 l -4280 2870 l -4280 2870 l -4283 2870 l -4286 2869 l -4289 2868 l -4291 2867 l -4294 2866 l -4297 2864 l -4299 2862 l -4301 2860 l -4303 2858 l -4305 2855 l -4305 2855 l -4303 2852 l -4301 2850 l -4299 2848 l -4297 2846 l -4294 2844 l -4291 2843 l -4289 2842 l -4286 2841 l -4283 2840 l -4280 2840 l -4280 2840 l -h f -Q -q -0.451 0.675 0.675 rg -4260 2835 m -4262 2837 l -4264 2840 l -4265 2842 l -4266 2845 l -4267 2848 l -4267 2852 l -4266 2855 l -4265 2858 l -4264 2860 l -4262 2863 l -4260 2865 l -4260 2865 l -4275 2865 l -4275 2865 l -4278 2865 l -4281 2864 l -4284 2863 l -4286 2862 l -4289 2861 l -4292 2859 l -4294 2857 l -4296 2855 l -4298 2853 l -4300 2850 l -4300 2850 l -4298 2847 l -4296 2845 l -4294 2843 l -4292 2841 l -4289 2839 l -4286 2838 l -4284 2837 l -4281 2836 l -4278 2835 l -4275 2835 l -4275 2835 l -h f -Q -0.176 0.176 0.176 RG -4260 2865 m -4260.88 2864.26 4261.69 2863.45 4262.43 2862.57 c -4269.37 2854.29 4268.28 2841.94 4260 2835 c -S -4260 2865 m -4275 2865 l -S -4300 2850 m -4294.49 2858.66 4285.23 2864.21 4275 2865 c -S -4275 2835 m -4285.23 2835.79 4294.49 2841.34 4300 2850 c -S -4275 2835 m -4260 2835 l -S -4260 2835 m -4260 2816 l -S -4260 2865 m -4260 2884 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4262 2834 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(reduce_or_0) Tj -ET -Q -0.024 0.278 0.435 RG -4250 2820 m -4260 2820 l -S -4250 2840 m -4264 2840 l -S -4250 2860 m -4264 2860 l -S -4250 2880 m -4260 2880 l -S -4310 2850 m -4300 2850 l -S -q -0.000 0.000 0.000 rg -4265 2910 m -4267 2912 l -4269 2915 l -4270 2917 l -4271 2920 l -4272 2923 l -4272 2927 l -4271 2930 l -4270 2933 l -4269 2935 l -4267 2938 l -4265 2940 l -4265 2940 l -4280 2940 l -4280 2940 l -4283 2940 l -4286 2939 l -4289 2938 l -4291 2937 l -4294 2936 l -4297 2934 l -4299 2932 l -4301 2930 l -4303 2928 l -4305 2925 l -4305 2925 l -4303 2922 l -4301 2920 l -4299 2918 l -4297 2916 l -4294 2914 l -4291 2913 l -4289 2912 l -4286 2911 l -4283 2910 l -4280 2910 l -4280 2910 l -h f -Q -q -0.451 0.675 0.675 rg -4260 2905 m -4262 2907 l -4264 2910 l -4265 2912 l -4266 2915 l -4267 2918 l -4267 2922 l -4266 2925 l -4265 2928 l -4264 2930 l -4262 2933 l -4260 2935 l -4260 2935 l -4275 2935 l -4275 2935 l -4278 2935 l -4281 2934 l -4284 2933 l -4286 2932 l -4289 2931 l -4292 2929 l -4294 2927 l -4296 2925 l -4298 2923 l -4300 2920 l -4300 2920 l -4298 2917 l -4296 2915 l -4294 2913 l -4292 2911 l -4289 2909 l -4286 2908 l -4284 2907 l -4281 2906 l -4278 2905 l -4275 2905 l -4275 2905 l -h f -Q -0.176 0.176 0.176 RG -4260 2935 m -4260.88 2934.26 4261.69 2933.45 4262.43 2932.57 c -4269.37 2924.29 4268.28 2911.94 4260 2905 c -S -4260 2935 m -4275 2935 l -S -4300 2920 m -4294.49 2928.66 4285.23 2934.21 4275 2935 c -S -4275 2905 m -4285.23 2905.79 4294.49 2911.34 4300 2920 c -S -4275 2905 m -4260 2905 l -S -4260 2905 m -4260 2896 l -S -4260 2935 m -4260 2944 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4262 2904 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm -0 2.484 Td -(reduce_or_1) Tj -ET -Q -0.024 0.278 0.435 RG -4260 2900 m -4260 2898.34 4258.66 2897 4257 2897 c -4255.34 2897 4254 2898.34 4254 2900 c -4254 2901.66 4255.34 2903 4257 2903 c -4258.66 2903 4260 2901.66 4260 2900 c -S -4250 2900 m -4254 2900 l -S -4267 2920 m -4267 2918.34 4265.66 2917 4264 2917 c -4262.34 2917 4261 2918.34 4261 2920 c -4261 2921.66 4262.34 2923 4264 2923 c -4265.66 2923 4267 2921.66 4267 2920 c -S -4250 2920 m -4261 2920 l -S -4260 2940 m -4260 2938.34 4258.66 2937 4257 2937 c -4255.34 2937 4254 2938.34 4254 2940 c -4254 2941.66 4255.34 2943 4257 2943 c -4258.66 2943 4260 2941.66 4260 2940 c -S -4250 2940 m -4254 2940 l -S -4310 2920 m -4300 2920 l -S -0.000 0.000 1.000 RG -0 1380 m --7 1387 l --21 1387 l --21 1373 l --7 1373 l -h S -q -0.000 0.000 0.000 rg -1 0 0 1 -25 1380 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --26.676 -4.308 Td -(reset) Tj -ET -Q -q -0.000 0.000 0.000 rg -2135 593 60 842 re -f -Q -q -0.506 0.749 0.373 rg -2130 588 60 842 re -f -Q -0.176 0.176 0.176 RG -2130 588 60 842 re -S -3 w -2141 593 m -2141 605 l -S -2135 599 m -2147 599 l -S -1 w -2133 591 16 16 re -S -q -0.000 0.000 0.000 rg -1 0 0 1 2160 586 cm -BT -/F1 12 Tf -1 0 0 -1 0 0 Tm --24.012 2.484 Td -(schedule) Tj -ET -Q -0.024 0.278 0.435 RG -2120 1160 m -2130 1160 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1159 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --12.22 2.07 Td -(clk) Tj -ET -Q -2120 1240 m -2130 1240 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1239 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --22.23 2.07 Td -(reset) Tj -ET -Q -2120 1220 m -2130 1220 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1219 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --65.57 2.07 Td -(memory_delay) Tj -ET -Q -2120 1180 m -2130 1180 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1179 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --50.58 2.07 Td -(exec_delay) Tj -ET -Q -2120 1200 m -2130 1200 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1199 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --73.93 2.07 Td -(gpr_stage_delay) Tj -ET -Q -2120 800 m -2130 800 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 799 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --81.69 2.07 Td -(bckE_req_if.is_csr) Tj -ET -Q -2120 700 m -2130 700 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 699 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --104.47 2.07 Td -(bckE_req_if.csr_immed) Tj -ET -Q -2120 1060 m -2130 1060 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1059 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --88.36 2.07 Td -(bckE_req_if.rs2_src) Tj -ET -Q -2120 760 m -2130 760 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 759 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.15 2.07 Td -(bckE_req_if.ebreak) Tj -ET -Q -2120 900 m -2130 900 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.7 2.07 Td -(bckE_req_if.jalQual) Tj -ET -Q -2120 940 m -2130 940 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --65.58 2.07 Td -(bckE_req_if.jal) Tj -ET -Q -2120 860 m -2130 860 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --104.48 2.07 Td -(bckE_req_if.is_wspawn) Tj -ET -Q -2120 840 m -2130 840 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --84.47 2.07 Td -(bckE_req_if.is_tmc) Tj -ET -Q -2120 820 m -2130 820 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 819 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.14 2.07 Td -(bckE_req_if.is_split) Tj -ET -Q -2120 780 m -2130 780 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 779 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --97.25 2.07 Td -(bckE_req_if.is_barrier) Tj -ET -Q -3 w -2120 640 m -2130 640 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 639 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --107.84 2.07 Td -(bckE_req_if.alu_op[4..0]) Tj -ET -Q -2120 660 m -2130 660 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 659 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --132.85 2.07 Td -(bckE_req_if.branch_type[2..0]) Tj -ET -Q -2120 680 m -2130 680 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --137.84 2.07 Td -(bckE_req_if.csr_address[11..0]) Tj -ET -Q -2120 720 m -2130 720 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 719 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --126.16 2.07 Td -(bckE_req_if.csr_mask[31..0]) Tj -ET -Q -2120 740 m -2130 740 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 739 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --120.05 2.07 Td -(bckE_req_if.curr_PC[31..0]) Tj -ET -Q -2120 880 m -2130 880 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --140.06 2.07 Td -(bckE_req_if.itype_immed[31..0]) Tj -ET -Q -2120 920 m -2130 920 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --123.4 2.07 Td -(bckE_req_if.jal_offset[31..0]) Tj -ET -Q -2120 960 m -2130 960 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 959 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --125.61 2.07 Td -(bckE_req_if.mem_read[2..0]) Tj -ET -Q -2120 980 m -2130 980 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 979 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --126.71 2.07 Td -(bckE_req_if.mem_write[2..0]) Tj -ET -Q -2120 620 m -2130 620 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 619 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --121.73 2.07 Td -(bckE_req_if.PC_next[31..0]) Tj -ET -Q -2120 1000 m -2130 1000 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 999 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.71 2.07 Td -(bckE_req_if.rd[4..0]) Tj -ET -Q -2120 1020 m -2130 1020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --91.71 2.07 Td -(bckE_req_if.rs1[4..0]) Tj -ET -Q -2120 1040 m -2130 1040 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1039 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --91.71 2.07 Td -(bckE_req_if.rs2[4..0]) Tj -ET -Q -2120 1080 m -2130 1080 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1079 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --144.51 2.07 Td -(bckE_req_if.upper_immed[19..0]) Tj -ET -Q -2120 1100 m -2130 1100 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1099 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --98.38 2.07 Td -(bckE_req_if.valid[3..0]) Tj -ET -Q -2120 1120 m -2130 1120 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --124.5 2.07 Td -(bckE_req_if.warp_num[2..0]) Tj -ET -Q -2120 1140 m -2130 1140 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1139 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --90.6 2.07 Td -(bckE_req_if.wb[1..0]) Tj -ET -Q -2120 1260 m -2130 1260 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --86.7 2.07 Td -(writeback_if.rd[4..0]) Tj -ET -Q -2120 1280 m -2130 1280 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1279 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --90.59 2.07 Td -(writeback_if.wb[1..0]) Tj -ET -Q -2120 1300 m -2130 1300 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1299 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --112.27 2.07 Td -(writeback_if.wb_pc[31..0]) Tj -ET -Q -2120 1320 m -2130 1320 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1319 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --116.71 2.07 Td -(writeback_if.wb_valid[3..0]) Tj -ET -Q -2120 1340 m -2130 1340 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1339 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --142.83 2.07 Td -(writeback_if.wb_warp_num[2..0]) Tj -ET -Q -2120 1360 m -2130 1360 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1359 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --140.62 2.07 Td -(writeback_if.write_data[0][31..0]) Tj -ET -Q -2120 1380 m -2130 1380 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1379 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --140.62 2.07 Td -(writeback_if.write_data[1][31..0]) Tj -ET -Q -2120 1400 m -2130 1400 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1399 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --140.62 2.07 Td -(writeback_if.write_data[2][31..0]) Tj -ET -Q -2120 1420 m -2130 1420 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2128 1419 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm --140.62 2.07 Td -(writeback_if.write_data[3][31..0]) Tj -ET -Q -1 w -2200 1020 m -2190 1020 l -S -q -0.024 0.278 0.435 rg -1 0 0 1 2196 1019 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(schedule_delay) Tj -ET -Q -2140 1160 m -2130 1160 l -S -2140 1240 m -2130 1240 l -S -2140 1220 m -2130 1220 l -S -2140 1180 m -2130 1180 l -S -2140 1200 m -2130 1200 l -S -2140 800 m -2130 800 l -S -2140 700 m -2130 700 l -S -2140 1060 m -2130 1060 l -S -2140 760 m -2130 760 l -S -2140 900 m -2130 900 l -S -2140 940 m -2130 940 l -S -2140 860 m -2130 860 l -S -2140 840 m -2130 840 l -S -2140 820 m -2130 820 l -S -2140 780 m -2130 780 l -S -3 w -2140 640 m -2130 640 l -S -2140 660 m -2130 660 l -S -2140 680 m -2130 680 l -S -2140 720 m -2130 720 l -S -2140 740 m -2130 740 l -S -2140 880 m -2130 880 l -S -2140 920 m -2130 920 l -S -2140 960 m -2130 960 l -S -2140 980 m -2130 980 l -S -2140 620 m -2130 620 l -S -2140 1000 m -2130 1000 l -S -2140 1020 m -2130 1020 l -S -2140 1040 m -2130 1040 l -S -2140 1080 m -2130 1080 l -S -2140 1100 m -2130 1100 l -S -2140 1120 m -2130 1120 l -S -2140 1140 m -2130 1140 l -S -2140 1260 m -2130 1260 l -S -2140 1280 m -2130 1280 l -S -2140 1300 m -2130 1300 l -S -2140 1320 m -2130 1320 l -S -2140 1340 m -2130 1340 l -S -2140 1360 m -2130 1360 l -S -2140 1380 m -2130 1380 l -S -2140 1400 m -2130 1400 l -S -2140 1420 m -2130 1420 l -S -1 w -2180 1020 m -2190 1020 l -S -3 w -0.176 0.176 0.176 RG -4690 2793 m -4690 980 l -5150 980 l -S -1 w -4310 2790 m -4690 2790 l -S -4310 2740 m -4690 2740 l -S -4310 2690 m -4690 2690 l -S -4310 2640 m -4690 2640 l -S -3 w -0.000 0.000 0.000 RG -q -0.000 0.000 0.000 rg -4691 2785 m -4691 2795 l -4680 2790 l -f -Q -q -0.000 0.000 0.000 rg -4691 2735 m -4691 2745 l -4680 2740 l -f -Q -q -0.000 0.000 0.000 rg -4691 2685 m -4691 2695 l -4680 2690 l -f -Q -q -0.000 0.000 0.000 rg -4691 2635 m -4691 2645 l -4680 2640 l -f -Q -1 w -0.176 0.176 0.176 RG -4310 170 m -4650 170 l -4650 2880 l -5150 2880 l -S -4310 2920 m -5150 2920 l -S -4310 2850 m -4410 2850 l -4410 2900 l -5150 2900 l -S -4250 2650 m -4230 2650 l -4230 2980 l -5760 2980 l -5760 2910 l -5210 2910 l -S -5760 2910 m -6040 2910 l -S -q -0.176 0.176 0.176 rg -5758 2908 5 5 re -f -Q -4230 2700 m -4250 2700 l -S -4230 2750 m -4250 2750 l -S -4230 2800 m -4250 2800 l -S -q -0.176 0.176 0.176 rg -4228 2698 5 5 re -f -Q -q -0.176 0.176 0.176 rg -4228 2748 5 5 re -f -Q -q -0.176 0.176 0.176 rg -4228 2798 5 5 re -f -Q -0 1360 m -40 1360 l -40 1560 l -850 1560 l -S -40 1360 m -1680 1360 l -S -q -0.176 0.176 0.176 rg -1678 1358 5 5 re -f -Q -3190 960 m -2720 960 l -2720 1700 l -4410 1700 l -4410 680 l -5150 680 l -S -q -0.176 0.176 0.176 rg -38 1358 5 5 re -f -Q -2120 1160 m -1680 1160 l -1680 1440 l -2720 1440 l -S -q -0.176 0.176 0.176 rg -2718 1438 5 5 re -f -Q -0 1380 m -20 1380 l -20 1780 l -850 1780 l -S -20 1380 m -1700 1380 l -S -q -0.176 0.176 0.176 rg -1698 1378 5 5 re -f -Q -3190 1240 m -2340 1240 l -2340 1720 l -5150 1720 l -S -q -0.176 0.176 0.176 rg -18 1378 5 5 re -f -Q -2120 1240 m -1700 1240 l -1700 1520 l -2340 1520 l -S -q -0.176 0.176 0.176 rg -2338 1518 5 5 re -f -Q -0 2560 m -4570 2560 l -4570 1200 l -5150 1200 l -S -0 2500 m -4590 2500 l -4590 1320 l -5150 1320 l -S -0 2420 m -4530 2420 l -4530 1380 l -5150 1380 l -S -0 2520 m -4830 2520 l -4830 1500 l -5150 1500 l -S -0 2600 m -4790 2600 l -4790 1360 l -5150 1360 l -S -3 w -0 2460 m -4470 2460 l -4470 1220 l -5150 1220 l -S -0 2480 m -4510 2480 l -4510 1237 l -S -4510 1300 m -5150 1300 l -S -4510 1280 m -5150 1280 l -S -4510 1260 m -5150 1260 l -S -4510 1240 m -5150 1240 l -S -0.000 0.000 0.000 RG -q -0.000 0.000 0.000 rg -4509 1295 m -4509 1305 l -4520 1300 l -f -Q -q -0.000 0.000 0.000 rg -4509 1275 m -4509 1285 l -4520 1280 l -f -Q -q -0.000 0.000 0.000 rg -4509 1255 m -4509 1265 l -4520 1260 l -f -Q -q -0.000 0.000 0.000 rg -4509 1235 m -4509 1245 l -4520 1240 l -f -Q -0.176 0.176 0.176 RG -0 2440 m -4610 2440 l -4610 1400 l -5150 1400 l -S -0 2540 m -4810 2540 l -4810 1417 l -S -4810 1480 m -5150 1480 l -S -4810 1460 m -5150 1460 l -S -4810 1440 m -5150 1440 l -S -4810 1420 m -5150 1420 l -S -0.000 0.000 0.000 RG -q -0.000 0.000 0.000 rg -4809 1475 m -4809 1485 l -4820 1480 l -f -Q -q -0.000 0.000 0.000 rg -4809 1455 m -4809 1465 l -4820 1460 l -f -Q -q -0.000 0.000 0.000 rg -4809 1435 m -4809 1445 l -4820 1440 l -f -Q -q -0.000 0.000 0.000 rg -4809 1415 m -4809 1425 l -4820 1420 l -f -Q -0.176 0.176 0.176 RG -0 2580 m -4750 2580 l -4750 1340 l -5150 1340 l -S -930 1440 m -1140 1440 l -1140 240 l -2980 240 l -2980 420 l -3190 420 l -S -1140 620 m -2120 620 l -S -q -0.176 0.176 0.176 rg -1137 617 7 7 re -f -Q -930 1460 m -1160 1460 l -1160 260 l -2960 260 l -2960 440 l -3190 440 l -S -1160 640 m -2120 640 l -S -q -0.176 0.176 0.176 rg -1157 637 7 7 re -f -Q -930 1480 m -1180 1480 l -1180 280 l -2940 280 l -2940 460 l -3190 460 l -S -1180 660 m -2120 660 l -S -q -0.176 0.176 0.176 rg -1177 657 7 7 re -f -Q -930 1500 m -1200 1500 l -1200 300 l -2920 300 l -2920 480 l -3190 480 l -S -1200 680 m -2120 680 l -S -q -0.176 0.176 0.176 rg -1197 677 7 7 re -f -Q -1 w -930 1520 m -1220 1520 l -1220 320 l -2900 320 l -2900 500 l -3190 500 l -S -1220 700 m -2120 700 l -S -q -0.176 0.176 0.176 rg -1218 698 5 5 re -f -Q -3 w -930 1540 m -1240 1540 l -1240 340 l -2880 340 l -2880 520 l -3190 520 l -S -1240 720 m -2120 720 l -S -q -0.176 0.176 0.176 rg -1237 717 7 7 re -f -Q -930 1560 m -1260 1560 l -1260 360 l -2860 360 l -2860 540 l -3190 540 l -S -1260 740 m -2120 740 l -S -q -0.176 0.176 0.176 rg -1257 737 7 7 re -f -Q -1 w -930 1580 m -1280 1580 l -1280 380 l -2840 380 l -2840 560 l -3190 560 l -S -1280 760 m -2120 760 l -S -q -0.176 0.176 0.176 rg -1278 758 5 5 re -f -Q -930 1600 m -1300 1600 l -1300 400 l -2820 400 l -2820 580 l -3190 580 l -S -1300 780 m -2120 780 l -S -q -0.176 0.176 0.176 rg -1298 778 5 5 re -f -Q -930 1620 m -1320 1620 l -1320 420 l -2440 420 l -2440 600 l -3190 600 l -S -1320 800 m -2120 800 l -S -q -0.176 0.176 0.176 rg -1318 798 5 5 re -f -Q -930 1640 m -1340 1640 l -1340 440 l -2420 440 l -2420 620 l -3190 620 l -S -1340 820 m -2120 820 l -S -q -0.176 0.176 0.176 rg -1338 818 5 5 re -f -Q -930 1660 m -1360 1660 l -1360 460 l -2400 460 l -2400 640 l -3190 640 l -S -1360 840 m -2120 840 l -S -q -0.176 0.176 0.176 rg -1358 838 5 5 re -f -Q -930 1680 m -1380 1680 l -1380 480 l -2380 480 l -2380 660 l -3190 660 l -S -1380 860 m -2120 860 l -S -q -0.176 0.176 0.176 rg -1378 858 5 5 re -f -Q -3 w -930 1700 m -1400 1700 l -1400 500 l -2360 500 l -2360 680 l -3190 680 l -S -1400 880 m -2120 880 l -S -q -0.176 0.176 0.176 rg -1397 877 7 7 re -f -Q -1 w -930 1720 m -1420 1720 l -1420 520 l -2340 520 l -2340 700 l -3190 700 l -S -1420 900 m -2120 900 l -S -q -0.176 0.176 0.176 rg -1418 898 5 5 re -f -Q -3 w -930 1740 m -1440 1740 l -1440 540 l -2320 540 l -2320 720 l -3190 720 l -S -1440 920 m -2120 920 l -S -q -0.176 0.176 0.176 rg -1437 917 7 7 re -f -Q -1 w -930 1760 m -1460 1760 l -1460 560 l -2300 560 l -2300 740 l -3190 740 l -S -1460 940 m -2120 940 l -S -q -0.176 0.176 0.176 rg -1458 938 5 5 re -f -Q -3 w -930 1780 m -1480 1780 l -1480 960 l -2120 960 l -S -1480 1720 m -2320 1720 l -2320 760 l -3190 760 l -S -q -0.176 0.176 0.176 rg -1477 1717 7 7 re -f -Q -930 1800 m -1500 1800 l -1500 980 l -2120 980 l -S -1500 1740 m -2360 1740 l -2360 780 l -3190 780 l -S -q -0.176 0.176 0.176 rg -1497 1737 7 7 re -f -Q -930 1820 m -1520 1820 l -1520 1000 l -2120 1000 l -S -1520 1760 m -2400 1760 l -2400 800 l -3190 800 l -S -q -0.176 0.176 0.176 rg -1517 1757 7 7 re -f -Q -930 1840 m -1540 1840 l -1540 1020 l -2120 1020 l -S -1540 1780 m -2440 1780 l -2440 820 l -3190 820 l -S -q -0.176 0.176 0.176 rg -1537 1777 7 7 re -f -Q -930 1860 m -1560 1860 l -1560 1040 l -2120 1040 l -S -1560 1800 m -2480 1800 l -2480 840 l -3190 840 l -S -q -0.176 0.176 0.176 rg -1557 1797 7 7 re -f -Q -1 w -930 1880 m -1580 1880 l -1580 1060 l -2120 1060 l -S -1580 1820 m -2520 1820 l -2520 860 l -3190 860 l -S -q -0.176 0.176 0.176 rg -1578 1818 5 5 re -f -Q -3 w -930 1900 m -1600 1900 l -1600 1080 l -2120 1080 l -S -1600 1840 m -2560 1840 l -2560 880 l -3190 880 l -S -q -0.176 0.176 0.176 rg -1597 1837 7 7 re -f -Q -930 1920 m -1620 1920 l -1620 1100 l -2120 1100 l -S -1620 1860 m -2600 1860 l -2600 900 l -3190 900 l -S -q -0.176 0.176 0.176 rg -1617 1857 7 7 re -f -Q -930 1940 m -1640 1940 l -1640 1120 l -2120 1120 l -S -1640 1880 m -2640 1880 l -2640 920 l -3190 920 l -S -q -0.176 0.176 0.176 rg -1637 1877 7 7 re -f -Q -930 1960 m -1660 1960 l -1660 1140 l -2120 1140 l -S -1660 1900 m -2680 1900 l -2680 940 l -3190 940 l -S -q -0.176 0.176 0.176 rg -1657 1897 7 7 re -f -Q -850 1480 m -60 1480 l -60 2200 l -4150 2200 l -4150 260 l -3270 260 l -S -1 w -850 1500 m -80 1500 l -80 2220 l -4130 2220 l -4130 280 l -3270 280 l -S -3 w -850 1520 m -100 1520 l -100 2240 l -4110 2240 l -4110 300 l -3270 300 l -S -1 w -850 1540 m -120 1540 l -120 2260 l -4090 2260 l -4090 320 l -3270 320 l -S -3 w -4210 7 m -4210 160 l -S -4210 160 m -4210 340 l -4890 340 l -4890 700 l -5150 700 l -S -3270 340 m -4210 340 l -S -q -0.176 0.176 0.176 rg -4207 337 7 7 re -f -Q -1 w -4210 10 m -4250 10 l -S -4210 20 m -4250 20 l -S -4210 30 m -4250 30 l -S -4210 40 m -4250 40 l -S -4210 50 m -4250 50 l -S -4210 60 m -4250 60 l -S -4210 70 m -4250 70 l -S -4210 80 m -4250 80 l -S -4210 90 m -4250 90 l -S -4210 100 m -4250 100 l -S -4210 110 m -4250 110 l -S -4210 120 m -4250 120 l -S -4210 130 m -4250 130 l -S -4210 140 m -4250 140 l -S -4210 150 m -4250 150 l -S -4210 160 m -4250 160 l -S -4210 170 m -4250 170 l -S -4210 180 m -4250 180 l -S -4210 190 m -4250 190 l -S -4210 200 m -4250 200 l -S -4210 210 m -4250 210 l -S -4210 220 m -4250 220 l -S -4210 230 m -4250 230 l -S -4210 240 m -4250 240 l -S -4210 250 m -4250 250 l -S -4210 260 m -4250 260 l -S -4210 270 m -4250 270 l -S -4210 280 m -4250 280 l -S -4210 290 m -4250 290 l -S -4210 300 m -4250 300 l -S -4210 310 m -4250 310 l -S -4210 320 m -4250 320 l -S -3 w -0.000 0.000 0.000 RG -q -0.000 0.000 0.000 rg -4209 5 m -4209 15 l -4220 10 l -f -Q -q -0.000 0.000 0.000 rg -4209 15 m -4209 25 l -4220 20 l -f -Q -q -0.000 0.000 0.000 rg -4209 25 m -4209 35 l -4220 30 l -f -Q -q -0.000 0.000 0.000 rg -4209 35 m -4209 45 l -4220 40 l -f -Q -q -0.000 0.000 0.000 rg -4209 45 m -4209 55 l -4220 50 l -f -Q -q -0.000 0.000 0.000 rg -4209 55 m -4209 65 l -4220 60 l -f -Q -q -0.000 0.000 0.000 rg -4209 65 m -4209 75 l -4220 70 l -f -Q -q -0.000 0.000 0.000 rg -4209 75 m -4209 85 l -4220 80 l -f -Q -q -0.000 0.000 0.000 rg -4209 85 m -4209 95 l -4220 90 l -f -Q -q -0.000 0.000 0.000 rg -4209 95 m -4209 105 l -4220 100 l -f -Q -q -0.000 0.000 0.000 rg -4209 105 m -4209 115 l -4220 110 l -f -Q -q -0.000 0.000 0.000 rg -4209 115 m -4209 125 l -4220 120 l -f -Q -q -0.000 0.000 0.000 rg -4209 125 m -4209 135 l -4220 130 l -f -Q -q -0.000 0.000 0.000 rg -4209 135 m -4209 145 l -4220 140 l -f -Q -q -0.000 0.000 0.000 rg -4209 145 m -4209 155 l -4220 150 l -f -Q -q -0.000 0.000 0.000 rg -4209 155 m -4209 165 l -4220 160 l -f -Q -q -0.000 0.000 0.000 rg -4209 165 m -4209 175 l -4220 170 l -f -Q -q -0.000 0.000 0.000 rg -4209 175 m -4209 185 l -4220 180 l -f -Q -q -0.000 0.000 0.000 rg -4209 185 m -4209 195 l -4220 190 l -f -Q -q -0.000 0.000 0.000 rg -4209 195 m -4209 205 l -4220 200 l -f -Q -q -0.000 0.000 0.000 rg -4209 205 m -4209 215 l -4220 210 l -f -Q -q -0.000 0.000 0.000 rg -4209 215 m -4209 225 l -4220 220 l -f -Q -q -0.000 0.000 0.000 rg -4209 225 m -4209 235 l -4220 230 l -f -Q -q -0.000 0.000 0.000 rg -4209 235 m -4209 245 l -4220 240 l -f -Q -q -0.000 0.000 0.000 rg -4209 245 m -4209 255 l -4220 250 l -f -Q -q -0.000 0.000 0.000 rg -4209 255 m -4209 265 l -4220 260 l -f -Q -q -0.000 0.000 0.000 rg -4209 265 m -4209 275 l -4220 270 l -f -Q -q -0.000 0.000 0.000 rg -4209 275 m -4209 285 l -4220 280 l -f -Q -q -0.000 0.000 0.000 rg -4209 285 m -4209 295 l -4220 290 l -f -Q -q -0.000 0.000 0.000 rg -4209 295 m -4209 305 l -4220 300 l -f -Q -q -0.000 0.000 0.000 rg -4209 305 m -4209 315 l -4220 310 l -f -Q -q -0.000 0.000 0.000 rg -4209 315 m -4209 325 l -4220 320 l -f -Q -0.176 0.176 0.176 RG -3270 360 m -4850 360 l -4850 720 l -5150 720 l -S -3270 380 m -4830 380 l -4830 740 l -5150 740 l -S -3270 400 m -4810 400 l -4810 760 l -5150 760 l -S -3270 420 m -4870 420 l -4870 780 l -5150 780 l -S -4870 420 m -6040 420 l -S -q -0.176 0.176 0.176 rg -4867 417 7 7 re -f -Q -3270 440 m -4790 440 l -4790 800 l -5150 800 l -S -3270 460 m -4770 460 l -4770 820 l -5150 820 l -S -3270 480 m -4750 480 l -4750 840 l -5150 840 l -S -3270 500 m -4730 500 l -4730 860 l -5150 860 l -S -3270 520 m -4710 520 l -4710 880 l -5150 880 l -S -3270 540 m -4690 540 l -4690 900 l -5150 900 l -S -3270 560 m -4670 560 l -4670 920 l -5150 920 l -S -3270 580 m -4610 580 l -4610 940 l -5150 940 l -S -3270 600 m -4590 600 l -4590 960 l -5150 960 l -S -1 w -3190 980 m -2740 980 l -2740 1740 l -5860 1740 l -5860 840 l -5230 840 l -S -3 w -3270 620 m -4190 620 l -4190 2883 l -S -1 w -4190 2630 m -4250 2630 l -S -4190 2680 m -4250 2680 l -S -4190 2730 m -4250 2730 l -S -4190 2780 m -4250 2780 l -S -4190 2820 m -4250 2820 l -S -4190 2840 m -4250 2840 l -S -4190 2860 m -4250 2860 l -S -4190 2880 m -4250 2880 l -S -3 w -0.000 0.000 0.000 RG -q -0.000 0.000 0.000 rg -4189 2625 m -4189 2635 l -4200 2630 l -f -Q -q -0.000 0.000 0.000 rg -4189 2675 m -4189 2685 l -4200 2680 l -f -Q -q -0.000 0.000 0.000 rg -4189 2725 m -4189 2735 l -4200 2730 l -f -Q -q -0.000 0.000 0.000 rg -4189 2775 m -4189 2785 l -4200 2780 l -f -Q -q -0.000 0.000 0.000 rg -4189 2815 m -4189 2825 l -4200 2820 l -f -Q -q -0.000 0.000 0.000 rg -4189 2835 m -4189 2845 l -4200 2840 l -f -Q -q -0.000 0.000 0.000 rg -4189 2855 m -4189 2865 l -4200 2860 l -f -Q -q -0.000 0.000 0.000 rg -4189 2875 m -4189 2885 l -4200 2880 l -f -Q -0.176 0.176 0.176 RG -3270 640 m -4570 640 l -4570 1000 l -5150 1000 l -S -3270 660 m -4550 660 l -4550 1020 l -5150 1020 l -S -3270 680 m -4390 680 l -4390 1040 l -5150 1040 l -S -3270 700 m -4530 700 l -4530 1060 l -5150 1060 l -S -3270 720 m -4510 720 l -4510 1080 l -5150 1080 l -S -3270 740 m -4210 740 l -4210 2943 l -S -4210 740 m -4490 740 l -4490 1100 l -5150 1100 l -S -q -0.176 0.176 0.176 rg -4207 737 7 7 re -f -Q -1 w -4210 2900 m -4250 2900 l -S -4210 2920 m -4250 2920 l -S -4210 2940 m -4250 2940 l -S -3 w -0.000 0.000 0.000 RG -q -0.000 0.000 0.000 rg -4209 2895 m -4209 2905 l -4220 2900 l -f -Q -q -0.000 0.000 0.000 rg -4209 2915 m -4209 2925 l -4220 2920 l -f -Q -q -0.000 0.000 0.000 rg -4209 2935 m -4209 2945 l -4220 2940 l -f -Q -0.176 0.176 0.176 RG -3270 760 m -4470 760 l -4470 1120 l -5150 1120 l -S -3270 780 m -4450 780 l -4450 1140 l -5150 1140 l -S -3270 800 m -4430 800 l -4430 1160 l -5150 1160 l -S -3190 1000 m -2760 1000 l -2760 1760 l -5840 1760 l -5840 860 l -5230 860 l -S -3190 1020 m -2780 1020 l -2780 1780 l -5820 1780 l -5820 880 l -5230 880 l -S -3190 1040 m -2800 1040 l -2800 1800 l -5800 1800 l -5800 900 l -5230 900 l -S -3190 1060 m -2820 1060 l -2820 1820 l -5780 1820 l -5780 920 l -5230 920 l -S -3190 1080 m -2840 1080 l -2840 1840 l -5760 1840 l -5760 940 l -5230 940 l -S -3190 1100 m -2860 1100 l -2860 1860 l -5740 1860 l -5740 960 l -5230 960 l -S -3190 1120 m -2880 1120 l -2880 1880 l -5720 1880 l -5720 980 l -5230 980 l -S -3190 1140 m -2900 1140 l -2900 1900 l -5700 1900 l -5700 1000 l -5230 1000 l -S -3190 1160 m -2920 1160 l -2920 1920 l -5680 1920 l -5680 1020 l -5230 1020 l -S -1 w -3270 820 m -4370 820 l -4370 1180 l -5150 1180 l -S -3 w -3190 1180 m -2940 1180 l -2940 1940 l -5660 1940 l -5660 1040 l -5230 1040 l -S -3190 1200 m -2960 1200 l -2960 1960 l -5640 1960 l -5640 1060 l -5230 1060 l -S -3190 1220 m -2980 1220 l -2980 1980 l -5620 1980 l -5620 1080 l -5230 1080 l -S -1 w -2120 1180 m -1720 1180 l -1720 1460 l -3690 1460 l -3690 840 l -3270 840 l -S -930 1980 m -1540 1980 l -1540 3020 l -6040 3020 l -S -2120 1200 m -1740 1200 l -1740 1480 l -3670 1480 l -3670 860 l -3270 860 l -S -3 w -5230 1100 m -6040 1100 l -S -5230 1120 m -6020 1120 l -6020 1435 l -S -0.000 0.000 0.000 RG -6020 1435 m -6025 1440 l -S -0.176 0.176 0.176 RG -6025 1440 m -6040 1440 l -S -5230 1140 m -6000 1140 l -6000 1435 l -S -0.000 0.000 0.000 RG -6000 1435 m -6005 1440 l -S -0.176 0.176 0.176 RG -6005 1440 m -6040 1440 l -S -5230 1160 m -5980 1160 l -5980 1435 l -S -0.000 0.000 0.000 RG -5980 1435 m -5985 1440 l -S -0.176 0.176 0.176 RG -5985 1440 m -6040 1440 l -S -5230 1180 m -5960 1180 l -5960 1435 l -S -0.000 0.000 0.000 RG -5960 1435 m -5965 1440 l -S -0.176 0.176 0.176 RG -5965 1440 m -6040 1440 l -S -1 w -5230 1200 m -6040 1200 l -S -5230 1220 m -6040 1220 l -S -5230 1240 m -6040 1240 l -S -5230 1260 m -6040 1260 l -S -3 w -5230 1280 m -6040 1280 l -S -5230 1300 m -5940 1300 l -5940 1455 l -S -0.000 0.000 0.000 RG -5940 1455 m -5945 1460 l -S -0.176 0.176 0.176 RG -5945 1460 m -6040 1460 l -S -5230 1320 m -5920 1320 l -5920 1455 l -S -0.000 0.000 0.000 RG -5920 1455 m -5925 1460 l -S -0.176 0.176 0.176 RG -5925 1460 m -6040 1460 l -S -5230 1340 m -5900 1340 l -5900 1455 l -S -0.000 0.000 0.000 RG -5900 1455 m -5905 1460 l -S -0.176 0.176 0.176 RG -5905 1460 m -6040 1460 l -S -5230 1360 m -5880 1360 l -5880 1455 l -S -0.000 0.000 0.000 RG -5880 1455 m -5885 1460 l -S -0.176 0.176 0.176 RG -5885 1460 m -6040 1460 l -S -1 w -5230 1380 m -6040 1380 l -S -5230 1400 m -6040 1400 l -S -5230 1420 m -6040 1420 l -S -3 w -930 2000 m -4430 2000 l -4430 1520 l -5150 1520 l -S -930 2020 m -4450 2020 l -4450 1540 l -5150 1540 l -S -930 2040 m -4490 2040 l -4490 1560 l -5150 1560 l -S -930 2060 m -4550 2060 l -4550 1580 l -5150 1580 l -S -930 2080 m -4630 2080 l -4630 1600 l -5150 1600 l -S -1 w -850 1580 m -140 1580 l -140 2280 l -5600 2280 l -5600 1440 l -5230 1440 l -S -930 2100 m -4730 2100 l -4730 1620 l -5150 1620 l -S -3 w -930 2120 m -4770 2120 l -4770 1640 l -5150 1640 l -S -930 2140 m -4850 2140 l -4850 1660 l -5150 1660 l -S -930 2160 m -4870 2160 l -4870 1680 l -5150 1680 l -S -850 1600 m -160 1600 l -160 2300 l -5580 2300 l -5580 1460 l -5230 1460 l -S -850 1620 m -40 1620 l -40 2340 l -5960 2340 l -5960 1480 l -5230 1480 l -S -850 1640 m -640 1640 l -640 2320 l -5500 2320 l -5500 1500 l -5230 1500 l -S -1 w -930 2180 m -4890 2180 l -4890 1700 l -5150 1700 l -S -850 1660 m -180 1660 l -180 2360 l -5560 2360 l -5560 1520 l -5230 1520 l -S -3 w -850 1680 m -200 1680 l -200 2380 l -5540 2380 l -5540 1540 l -5230 1540 l -S -850 1700 m -220 1700 l -220 2400 l -5520 2400 l -5520 1560 l -5230 1560 l -S -850 1720 m -240 1720 l -240 2620 l -4070 2620 l -4070 880 l -3270 880 l -S -850 1740 m -260 1740 l -260 2640 l -4050 2640 l -4050 900 l -3270 900 l -S -1 w -850 1760 m -280 1760 l -280 2660 l -4030 2660 l -4030 920 l -3270 920 l -S -2120 1220 m -1760 1220 l -1760 1500 l -4170 1500 l -S -q -0.176 0.176 0.176 rg -4168 1498 5 5 re -f -Q -3270 940 m -4170 940 l -4170 2960 l -4630 2960 l -4630 2940 l -5150 2940 l -S -850 1800 m -300 1800 l -300 2680 l -2300 2680 l -2300 1020 l -2200 1020 l -S -2300 1260 m -3190 1260 l -S -q -0.176 0.176 0.176 rg -2298 1258 5 5 re -f -Q -3 w -850 1820 m -320 1820 l -320 2700 l -4010 2700 l -4010 960 l -3270 960 l -S -1 w -850 1840 m -340 1840 l -340 2720 l -3990 2720 l -3990 980 l -3270 980 l -S -850 1860 m -360 1860 l -360 2740 l -3970 2740 l -3970 1000 l -3270 1000 l -S -850 1880 m -380 1880 l -380 2760 l -3950 2760 l -3950 1020 l -3270 1020 l -S -850 1900 m -400 1900 l -400 2780 l -3930 2780 l -3930 1040 l -3270 1040 l -S -850 1920 m -420 1920 l -420 2800 l -3910 2800 l -3910 1060 l -3270 1060 l -S -3 w -850 1940 m -440 1940 l -440 2820 l -3890 2820 l -3890 1080 l -3270 1080 l -S -850 1960 m -460 1960 l -460 2840 l -3870 2840 l -3870 1100 l -3270 1100 l -S -850 1980 m -480 1980 l -480 2860 l -3850 2860 l -3850 1120 l -3270 1120 l -S -850 2000 m -500 2000 l -500 2880 l -3830 2880 l -3830 1140 l -3270 1140 l -S -850 2020 m -520 2020 l -520 2900 l -3810 2900 l -3810 1160 l -3270 1160 l -S -850 2040 m -540 2040 l -540 2920 l -3790 2920 l -3790 1180 l -3270 1180 l -S -850 2060 m -560 2060 l -560 2940 l -3770 2940 l -3770 1200 l -3270 1200 l -S -850 2080 m -580 2080 l -580 2960 l -3750 2960 l -3750 1220 l -3270 1220 l -S -850 2100 m -600 2100 l -600 2980 l -3730 2980 l -3730 1240 l -3270 1240 l -S -1 w -850 2120 m -620 2120 l -620 3000 l -3710 3000 l -3710 1260 l -3270 1260 l -S -3 w -2120 1260 m -1780 1260 l -1780 1540 l -2380 1540 l -2380 1520 l -3650 1520 l -3650 1280 l -3270 1280 l -S -2120 1280 m -1800 1280 l -1800 1560 l -2420 1560 l -2420 1540 l -3630 1540 l -3630 1300 l -3270 1300 l -S -2120 1300 m -1820 1300 l -1820 1580 l -2460 1580 l -2460 1560 l -3610 1560 l -3610 1320 l -3270 1320 l -S -2120 1320 m -1840 1320 l -1840 1600 l -2500 1600 l -2500 1580 l -3590 1580 l -3590 1340 l -3270 1340 l -S -2120 1340 m -1860 1340 l -1860 1620 l -2540 1620 l -2540 1600 l -3570 1600 l -3570 1360 l -3270 1360 l -S -2120 1360 m -1880 1360 l -1880 1640 l -2580 1640 l -2580 1620 l -3550 1620 l -3550 1380 l -3270 1380 l -S -2120 1380 m -1900 1380 l -1900 1660 l -2620 1660 l -2620 1640 l -3530 1640 l -3530 1400 l -3270 1400 l -S -2120 1400 m -1920 1400 l -1920 1680 l -2660 1680 l -2660 1660 l -3510 1660 l -3510 1420 l -3270 1420 l -S -2120 1420 m -1940 1420 l -1940 1700 l -2700 1700 l -2700 1680 l -3490 1680 l -3490 1440 l -3270 1440 l -S -q -0.000 0.000 0.000 rg -1 0 0 1 4516 1299 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(127:96) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4516 1279 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(95:64) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4516 1259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(63:32) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4516 1239 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4816 1479 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(127:96) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4816 1459 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(95:64) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4816 1439 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(63:32) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4816 1419 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 9 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(31) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 19 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(30) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 29 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(29) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 39 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(28) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 49 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(27) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 59 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(26) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 69 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(25) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 79 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(24) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 89 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(23) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 99 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(22) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 109 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(21) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 119 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(20) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 129 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(19) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 139 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(18) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 149 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(17) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 159 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(16) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 169 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(15) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 179 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(14) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 189 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(13) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 199 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(12) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 209 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(11) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 219 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(10) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 229 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(9) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 239 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(8) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 249 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(7) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 259 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(6) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 269 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(5) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 279 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(4) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 289 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(3) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 299 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(2) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 309 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(1) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 319 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2629 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2679 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(1) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2729 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(2) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2779 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(3) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2819 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(3) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2839 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(2) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2859 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(1) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4196 2879 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 2899 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(2) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 2919 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(1) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 4216 2939 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 2.07 Td -(0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 6021 1435 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 6001 1435 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 5981 1435 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 5961 1435 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 5941 1455 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 5921 1455 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 5901 1455 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -q -0.000 0.000 0.000 rg -1 0 0 1 5881 1455 cm -0 -1 1 0 0 0 cm -BT -/F1 10 Tf -1 0 0 -1 0 0 Tm -0 -7.18 Td -(31:0) Tj -ET -Q -endstream -endobj -3 0 obj -<< - /Type /Pages - /Kids - [ - 9 0 R - ] - /Count 1 - /ProcSet [/PDF /Text] ->> -endobj -13 0 obj -<< - /Title (back_end_450 back_end_450) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 305 401 342 509] - /Parent 12 0 R - /Next 14 0 R ->> -endobj -14 0 obj -<< - /Title (dmem_controller_2 dmem_controller_2) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 471 377 516 472] - /Parent 12 0 R - /Prev 13 0 R - /Next 15 0 R ->> -endobj -15 0 obj -<< - /Title (front_end_554 front_end_554) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 103 337 139 406] - /Parent 12 0 R - /Prev 14 0 R - /Next 16 0 R ->> -endobj -16 0 obj -<< - /Title (i403_1309405 i403_1309405) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 412 297 417 301] - /Parent 12 0 R - /Prev 15 0 R - /Next 17 0 R ->> -endobj -17 0 obj -<< - /Title (i404_1309406 i404_1309406) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 412 292 417 297] - /Parent 12 0 R - /Prev 16 0 R - /Next 18 0 R ->> -endobj -18 0 obj -<< - /Title (i405_1309407 i405_1309407) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 412 288 417 292] - /Parent 12 0 R - /Prev 17 0 R - /Next 19 0 R ->> -endobj -19 0 obj -<< - /Title (i406_1309408 i406_1309408) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 412 284 417 288] - /Parent 12 0 R - /Prev 18 0 R - /Next 20 0 R ->> -endobj -20 0 obj -<< - /Title (io_valid_1309404 io_valid_1309404) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 490 272 495 278] - /Parent 12 0 R - /Prev 19 0 R - /Next 21 0 R ->> -endobj -21 0 obj -<< - /Title (reduce_nor_0_1309403 reduce_nor_0_1309403) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 412 499 419 527] - /Parent 12 0 R - /Prev 20 0 R - /Next 22 0 R ->> -endobj -22 0 obj -<< - /Title (reduce_or_0_1309401 reduce_or_0_1309401) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 412 277 419 283] - /Parent 12 0 R - /Prev 21 0 R - /Next 23 0 R ->> -endobj -23 0 obj -<< - /Title (reduce_or_1_1309402 reduce_or_1_1309402) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 412 272 419 277] - /Parent 12 0 R - /Prev 22 0 R - /Next 24 0 R ->> -endobj -24 0 obj -<< - /Title (schedule_553 schedule_553) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 216 403 240 478] - /Parent 12 0 R - /Prev 23 0 R ->> -endobj -12 0 obj -<< - /Title (instances) - /C [0.0 0.4 0.0] - /F 1 - /Parent 11 0 R - /First 13 0 R - /Last 24 0 R - /Count 12 - /Next 25 0 R ->> -endobj -26 0 obj -<< - /Title (I_dram_req_read1309769 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 407 577 408] - /Parent 25 0 R - /Next 27 0 R ->> -endobj -27 0 obj -<< - /Title (I_dram_req_ready1309931 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 33 317 44 318] - /Parent 25 0 R - /Prev 26 0 R - /Next 28 0 R ->> -endobj -28 0 obj -<< - /Title (I_dram_req_write1309770 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 405 577 407] - /Parent 25 0 R - /Prev 27 0 R - /Next 29 0 R ->> -endobj -29 0 obj -<< - /Title (I_dram_rsp_ready1310093 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 403 578 405] - /Parent 25 0 R - /Prev 28 0 R - /Next 30 0 R ->> -endobj -30 0 obj -<< - /Title (I_dram_rsp_valid1309932 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 34 308 44 310] - /Parent 25 0 R - /Prev 29 0 R - /Next 31 0 R ->> -endobj -31 0 obj -<< - /Title (clk1309409 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 40 409 44 410] - /Parent 25 0 R - /Prev 30 0 R - /Next 32 0 R ->> -endobj -32 0 obj -<< - /Title (dram_req_read1309444 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 423 576 424] - /Parent 25 0 R - /Prev 31 0 R - /Next 33 0 R ->> -endobj -33 0 obj -<< - /Title (dram_req_ready1309606 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 34 305 44 306] - /Parent 25 0 R - /Prev 32 0 R - /Next 34 0 R ->> -endobj -34 0 obj -<< - /Title (dram_req_write1309445 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 421 577 422] - /Parent 25 0 R - /Prev 33 0 R - /Next 35 0 R ->> -endobj -35 0 obj -<< - /Title (dram_rsp_ready1309768 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 419 577 420] - /Parent 25 0 R - /Prev 34 0 R - /Next 36 0 R ->> -endobj -36 0 obj -<< - /Title (dram_rsp_valid1309607 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 34 310 44 311] - /Parent 25 0 R - /Prev 35 0 R - /Next 37 0 R ->> -endobj -37 0 obj -<< - /Title (ebreak1310128 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 265 572 266] - /Parent 25 0 R - /Prev 36 0 R - /Next 38 0 R ->> -endobj -38 0 obj -<< - /Title (io_valid1309411 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 274 573 276] - /Parent 25 0 R - /Prev 37 0 R - /Next 39 0 R ->> -endobj -39 0 obj -<< - /Title (llc_snp_req_ready1310127 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 417 578 419] - /Parent 25 0 R - /Prev 38 0 R - /Next 40 0 R ->> -endobj -40 0 obj -<< - /Title (llc_snp_req_valid1310094 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 34 301 44 303] - /Parent 25 0 R - /Prev 39 0 R - /Next 41 0 R ->> -endobj -41 0 obj -<< - /Title (reset1309410 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 39 407 44 408] - /Parent 25 0 R - /Prev 40 0 R ->> -endobj -25 0 obj -<< - /Title (ports) - /C [0.0 0.4 0.0] - /F 1 - /Parent 11 0 R - /First 26 0 R - /Last 41 0 R - /Count 16 - /Prev 12 0 R - /Next 42 0 R ->> -endobj -43 0 obj -<< - /Title (I_dram_req_addr[31..0]1310134 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 415 580 417] - /Parent 42 0 R - /Next 44 0 R ->> -endobj -44 0 obj -<< - /Title (I_dram_req_data[127..0]1310135 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 400 581 402] - /Parent 42 0 R - /Prev 43 0 R - /Next 45 0 R ->> -endobj -45 0 obj -<< - /Title (I_dram_rsp_addr[31..0]1310136 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 31 315 44 317] - /Parent 42 0 R - /Prev 44 0 R - /Next 46 0 R ->> -endobj -46 0 obj -<< - /Title (I_dram_rsp_data[127..0]1310137 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 30 306 44 308] - /Parent 42 0 R - /Prev 45 0 R - /Next 47 0 R ->> -endobj -47 0 obj -<< - /Title (dram_req_addr[31..0]1310130 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 431 579 433] - /Parent 42 0 R - /Prev 46 0 R - /Next 48 0 R ->> -endobj -48 0 obj -<< - /Title (dram_req_data[127..0]1310131 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 402 580 403] - /Parent 42 0 R - /Prev 47 0 R - /Next 49 0 R ->> -endobj -49 0 obj -<< - /Title (dram_rsp_addr[31..0]1310132 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 32 313 44 315] - /Parent 42 0 R - /Prev 48 0 R - /Next 50 0 R ->> -endobj -50 0 obj -<< - /Title (dram_rsp_data[127..0]1310133 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 31 311 44 313] - /Parent 42 0 R - /Prev 49 0 R - /Next 51 0 R ->> -endobj -51 0 obj -<< - /Title (io_data[31..0]1310129 output) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 567 490 576 492] - /Parent 42 0 R - /Prev 50 0 R - /Next 52 0 R ->> -endobj -52 0 obj -<< - /Title (llc_snp_req_addr[31..0]1310138 input) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 31 303 44 305] - /Parent 42 0 R - /Prev 51 0 R ->> -endobj -42 0 obj -<< - /Title (portBuses) - /C [0.0 0.4 0.0] - /F 1 - /Parent 11 0 R - /First 43 0 R - /Last 52 0 R - /Count 10 - /Prev 25 0 R - /Next 53 0 R ->> -endobj -54 0 obj -<< - /Title (OUT0_1817681) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 417 278 490 513] - /Parent 53 0 R - /Next 55 0 R ->> -endobj -55 0 obj -<< - /Title (OUT0_1817682) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 417 274 490 274] - /Parent 53 0 R - /Prev 54 0 R - /Next 56 0 R ->> -endobj -56 0 obj -<< - /Title (OUT0_1817683) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 417 276 490 280] - /Parent 53 0 R - /Prev 55 0 R - /Next 57 0 R ->> -endobj -57 0 obj -<< - /Title (OUT0_1817684) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 410 269 567 298] - /Parent 53 0 R - /Prev 56 0 R - /Next 58 0 R ->> -endobj -58 0 obj -<< - /Title (OUT0_1817689) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 44 380 490 468] - /Parent 53 0 R - /Prev 57 0 R - /Next 59 0 R ->> -endobj -59 0 obj -<< - /Title (OUT0_1817690) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 44 373 490 420] - /Parent 53 0 R - /Prev 58 0 R - /Next 60 0 R ->> -endobj -60 0 obj -<< - /Title (OUT0_1817853) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 44 305 490 423] - /Parent 53 0 R - /Prev 59 0 R - /Next 61 0 R ->> -endobj -61 0 obj -<< - /Title (OUT0_1817854) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 44 311 490 413] - /Parent 53 0 R - /Prev 60 0 R - /Next 62 0 R ->> -endobj -62 0 obj -<< - /Title (OUT0_1818178) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 44 317 490 408] - /Parent 53 0 R - /Prev 61 0 R - /Next 63 0 R ->> -endobj -63 0 obj -<< - /Title (OUT0_1818179) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 44 309 490 397] - /Parent 53 0 R - /Prev 62 0 R - /Next 64 0 R ->> -endobj -64 0 obj -<< - /Title (OUT0_1818341) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 44 302 490 409] - /Parent 53 0 R - /Prev 63 0 R - /Next 65 0 R ->> -endobj -65 0 obj -<< - /Title (bckE_req_if.csr_immed_34466) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 395 320 500] - /Parent 53 0 R - /Prev 64 0 R - /Next 66 0 R ->> -endobj -66 0 obj -<< - /Title (bckE_req_if.ebreak_34615) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 390 320 494] - /Parent 53 0 R - /Prev 65 0 R - /Next 67 0 R ->> -endobj -67 0 obj -<< - /Title (bckE_req_if.is_barrier_34692) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 388 320 493] - /Parent 53 0 R - /Prev 66 0 R - /Next 68 0 R ->> -endobj -68 0 obj -<< - /Title (bckE_req_if.is_csr_34465) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 387 320 491] - /Parent 53 0 R - /Prev 67 0 R - /Next 69 0 R ->> -endobj -69 0 obj -<< - /Title (bckE_req_if.is_split_34691) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 385 320 489] - /Parent 53 0 R - /Prev 68 0 R - /Next 70 0 R ->> -endobj -70 0 obj -<< - /Title (bckE_req_if.is_tmc_34690) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 383 320 487] - /Parent 53 0 R - /Prev 69 0 R - /Next 71 0 R ->> -endobj -71 0 obj -<< - /Title (bckE_req_if.is_wspawn_34689) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 382 320 486] - /Parent 53 0 R - /Prev 70 0 R - /Next 72 0 R ->> -endobj -72 0 obj -<< - /Title (bckE_req_if.jalQual_34616) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 378 320 482] - /Parent 53 0 R - /Prev 71 0 R - /Next 73 0 R ->> -endobj -73 0 obj -<< - /Title (bckE_req_if.jal_34617) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 375 320 479] - /Parent 53 0 R - /Prev 72 0 R - /Next 74 0 R ->> -endobj -74 0 obj -<< - /Title (bckE_req_if.rs2_src_34521) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 364 320 453] - /Parent 53 0 R - /Prev 73 0 R - /Next 75 0 R ->> -endobj -75 0 obj -<< - /Title (branch_rsp_if.branch_dir_34303) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 51 335 402 503] - /Parent 53 0 R - /Prev 74 0 R - /Next 76 0 R ->> -endobj -76 0 obj -<< - /Title (branch_rsp_if.valid_branch_34302) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 54 331 398 500] - /Parent 53 0 R - /Prev 75 0 R - /Next 77 0 R ->> -endobj -77 0 obj -<< - /Title (dcache_req_if.core_req_ready_29992) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 281 376 551 454] - /Parent 53 0 R - /Prev 76 0 R - /Next 78 0 R ->> -endobj -78 0 obj -<< - /Title (dcache_rsp_if.core_rsp_ready_29993) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 425 490 456] - /Parent 53 0 R - /Prev 77 0 R - /Next 79 0 R ->> -endobj -79 0 obj -<< - /Title (exec_delay_33881) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 193 401 363 454] - /Parent 53 0 R - /Prev 78 0 R - /Next 80 0 R ->> -endobj -80 0 obj -<< - /Title (fetch_ebreak_1818375) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 265 567 356] - /Parent 53 0 R - /Prev 79 0 R - /Next 81 0 R ->> -endobj -81 0 obj -<< - /Title (gpr_stage_delay_33882) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 194 399 362 453] - /Parent 53 0 R - /Prev 80 0 R - /Next 82 0 R ->> -endobj -82 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_req_read_1817691) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 423 567 423] - /Parent 53 0 R - /Prev 81 0 R - /Next 83 0 R ->> -endobj -83 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_req_write_1817692) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 421 567 421] - /Parent 53 0 R - /Prev 82 0 R - /Next 84 0 R ->> -endobj -84 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_rsp_ready_1818015) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 420 567 420] - /Parent 53 0 R - /Prev 83 0 R - /Next 85 0 R ->> -endobj -85 0 obj -<< - /Title (gpu_dcache_snp_req_if.snp_req_ready_1818374) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 418 567 418] - /Parent 53 0 R - /Prev 84 0 R - /Next 86 0 R ->> -endobj -86 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_req_read_1818016) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 408 567 408] - /Parent 53 0 R - /Prev 85 0 R - /Next 87 0 R ->> -endobj -87 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_req_write_1818017) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 406 567 406] - /Parent 53 0 R - /Prev 86 0 R - /Next 88 0 R ->> -endobj -88 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_rsp_ready_1818340) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 404 567 404] - /Parent 53 0 R - /Prev 87 0 R - /Next 89 0 R ->> -endobj -89 0 obj -<< - /Title (icache_req_if.core_req_ready_34265) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 56 330 529 403] - /Parent 53 0 R - /Prev 88 0 R - /Next 90 0 R ->> -endobj -90 0 obj -<< - /Title (icache_req_if.core_req_valid[0]_34340) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 345 490 387] - /Parent 53 0 R - /Prev 89 0 R - /Next 91 0 R ->> -endobj -91 0 obj -<< - /Title (icache_rsp_if.core_rsp_ready_34339) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 338 490 380] - /Parent 53 0 R - /Prev 90 0 R - /Next 92 0 R ->> -endobj -92 0 obj -<< - /Title (icache_rsp_if.core_rsp_valid[0]_34190) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 59 323 525 396] - /Parent 53 0 R - /Prev 91 0 R - /Next 93 0 R ->> -endobj -93 0 obj -<< - /Title (jal_rsp_if.jal_34266) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 68 297 393 448] - /Parent 53 0 R - /Prev 92 0 R - /Next 94 0 R ->> -endobj -94 0 obj -<< - /Title (mem_delay_33880) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 196 271 490 446] - /Parent 53 0 R - /Prev 93 0 R - /Next 95 0 R ->> -endobj -95 0 obj -<< - /Title (schedule_delay_34057) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 70 295 320 439] - /Parent 53 0 R - /Prev 94 0 R - /Next 96 0 R ->> -endobj -96 0 obj -<< - /Title (warp_ctl_if.change_mask_34061) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 73 291 389 442] - /Parent 53 0 R - /Prev 95 0 R - /Next 97 0 R ->> -endobj -97 0 obj -<< - /Title (warp_ctl_if.dont_split_34146) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 75 290 388 441] - /Parent 53 0 R - /Prev 96 0 R - /Next 98 0 R ->> -endobj -98 0 obj -<< - /Title (warp_ctl_if.ebreak_34107) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 77 288 386 439] - /Parent 53 0 R - /Prev 97 0 R - /Next 99 0 R ->> -endobj -99 0 obj -<< - /Title (warp_ctl_if.is_barrier_34108) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 78 286 384 437] - /Parent 53 0 R - /Prev 98 0 R - /Next 100 0 R ->> -endobj -100 0 obj -<< - /Title (warp_ctl_if.is_split_34145) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 80 285 382 435] - /Parent 53 0 R - /Prev 99 0 R - /Next 101 0 R ->> -endobj -101 0 obj -<< - /Title (warp_ctl_if.wspawn_34066) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 97 267 365 418] - /Parent 53 0 R - /Prev 100 0 R ->> -endobj -53 0 obj -<< - /Title (nets) - /C [0.0 0.4 0.0] - /F 1 - /Parent 11 0 R - /First 54 0 R - /Last 101 0 R - /Count 48 - /Prev 42 0 R - /Next 102 0 R ->> -endobj -103 0 obj -<< - /Title (@OUT0_1817688,OUT0_1817687) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 417 285 490 443] - /Parent 102 0 R - /Next 104 0 R ->> -endobj -104 0 obj -<< - /Title (OUT0_1818376) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 43 314 490 422] - /Parent 102 0 R - /Prev 103 0 R - /Next 105 0 R ->> -endobj -105 0 obj -<< - /Title (OUT0_1818377) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 43 312 490 420] - /Parent 102 0 R - /Prev 104 0 R - /Next 106 0 R ->> -endobj -106 0 obj -<< - /Title (OUT0_1818378) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 43 316 490 406] - /Parent 102 0 R - /Prev 105 0 R - /Next 107 0 R ->> -endobj -107 0 obj -<< - /Title (OUT0_1818379) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 43 307 490 405] - /Parent 102 0 R - /Prev 106 0 R - /Next 108 0 R ->> -endobj -108 0 obj -<< - /Title (OUT0_1818380) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 43 303 490 411] - /Parent 102 0 R - /Prev 107 0 R - /Next 109 0 R ->> -endobj -109 0 obj -<< - /Title (bckE_req_if.PC_next[31..0]_1818464) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 402 320 507] - /Parent 102 0 R - /Prev 108 0 R - /Next 110 0 R ->> -endobj -110 0 obj -<< - /Title (bckE_req_if.alu_op[4..0]_1818455) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 400 320 505] - /Parent 102 0 R - /Prev 109 0 R - /Next 111 0 R ->> -endobj -111 0 obj -<< - /Title (bckE_req_if.branch_type[2..0]_1818456) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 399 320 503] - /Parent 102 0 R - /Prev 110 0 R - /Next 112 0 R ->> -endobj -112 0 obj -<< - /Title (bckE_req_if.csr_address[11..0]_1818457) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 397 320 501] - /Parent 102 0 R - /Prev 111 0 R - /Next 113 0 R ->> -endobj -113 0 obj -<< - /Title (bckE_req_if.csr_mask[31..0]_1818458) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 394 320 498] - /Parent 102 0 R - /Prev 112 0 R - /Next 114 0 R ->> -endobj -114 0 obj -<< - /Title (bckE_req_if.curr_PC[31..0]_1818459) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 392 320 496] - /Parent 102 0 R - /Prev 113 0 R - /Next 115 0 R ->> -endobj -115 0 obj -<< - /Title (bckE_req_if.itype_immed[31..0]_1818460) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 380 320 484] - /Parent 102 0 R - /Prev 114 0 R - /Next 116 0 R ->> -endobj -116 0 obj -<< - /Title (bckE_req_if.jal_offset[31..0]_1818461) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 376 320 481] - /Parent 102 0 R - /Prev 115 0 R - /Next 117 0 R ->> -endobj -117 0 obj -<< - /Title (bckE_req_if.mem_read[2..0]_1818462) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 373 320 462] - /Parent 102 0 R - /Prev 116 0 R - /Next 118 0 R ->> -endobj -118 0 obj -<< - /Title (bckE_req_if.mem_write[2..0]_1818463) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 371 320 460] - /Parent 102 0 R - /Prev 117 0 R - /Next 119 0 R ->> -endobj -119 0 obj -<< - /Title (bckE_req_if.rd[4..0]_1818465) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 369 320 458] - /Parent 102 0 R - /Prev 118 0 R - /Next 120 0 R ->> -endobj -120 0 obj -<< - /Title (bckE_req_if.rs1[4..0]_1818466) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 368 320 456] - /Parent 102 0 R - /Prev 119 0 R - /Next 121 0 R ->> -endobj -121 0 obj -<< - /Title (bckE_req_if.rs2[4..0]_1818467) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 366 320 455] - /Parent 102 0 R - /Prev 120 0 R - /Next 122 0 R ->> -endobj -122 0 obj -<< - /Title (bckE_req_if.upper_immed[19..0]_1818468) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 362 320 451] - /Parent 102 0 R - /Prev 121 0 R - /Next 123 0 R ->> -endobj -123 0 obj -<< - /Title (bckE_req_if.valid[3..0]_1818469) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 361 320 449] - /Parent 102 0 R - /Prev 122 0 R - /Next 124 0 R ->> -endobj -124 0 obj -<< - /Title (bckE_req_if.warp_num[2..0]_1818470) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 359 320 448] - /Parent 102 0 R - /Prev 123 0 R - /Next 125 0 R ->> -endobj -125 0 obj -<< - /Title (bckE_req_if.wb[1..0]_1818471) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 357 320 446] - /Parent 102 0 R - /Prev 124 0 R - /Next 126 0 R ->> -endobj -126 0 obj -<< - /Title (branch_rsp_if.branch_dest[31..0]_1818408) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 49 336 403 505] - /Parent 102 0 R - /Prev 125 0 R - /Next 127 0 R ->> -endobj -127 0 obj -<< - /Title (branch_rsp_if.branch_warp_num[2..0]_1818409) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 52 333 400 501] - /Parent 102 0 R - /Prev 126 0 R - /Next 128 0 R ->> -endobj -128 0 obj -<< - /Title (dcache_req_if.core_req_addr[0][31..0]_1818410) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 466 490 527] - /Parent 102 0 R - /Prev 127 0 R - /Next 129 0 R ->> -endobj -129 0 obj -<< - /Title (dcache_req_if.core_req_addr[1][31..0]_1818411) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 465 490 496] - /Parent 102 0 R - /Prev 128 0 R - /Next 130 0 R ->> -endobj -130 0 obj -<< - /Title (dcache_req_if.core_req_addr[2][31..0]_1818412) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 463 490 494] - /Parent 102 0 R - /Prev 129 0 R - /Next 131 0 R ->> -endobj -131 0 obj -<< - /Title (dcache_req_if.core_req_addr[3][31..0]_1818413) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 461 490 493] - /Parent 102 0 R - /Prev 130 0 R - /Next 132 0 R ->> -endobj -132 0 obj -<< - /Title (dcache_req_if.core_req_data[0][31..0]_1818414) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 459 567 491] - /Parent 102 0 R - /Prev 131 0 R - /Next 133 0 R ->> -endobj -133 0 obj -<< - /Title (dcache_req_if.core_req_data[1][31..0]_1818415) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 458 490 489] - /Parent 102 0 R - /Prev 132 0 R - /Next 134 0 R ->> -endobj -134 0 obj -<< - /Title (dcache_req_if.core_req_data[2][31..0]_1818416) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 456 490 488] - /Parent 102 0 R - /Prev 133 0 R - /Next 135 0 R ->> -endobj -135 0 obj -<< - /Title (dcache_req_if.core_req_data[3][31..0]_1818417) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 454 490 486] - /Parent 102 0 R - /Prev 134 0 R - /Next 136 0 R ->> -endobj -136 0 obj -<< - /Title (dcache_req_if.core_req_pc[31..0]_1818418) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 452 490 484] - /Parent 102 0 R - /Prev 135 0 R - /Next 137 0 R ->> -endobj -137 0 obj -<< - /Title (dcache_req_if.core_req_rd[4..0]_1818419) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 451 490 482] - /Parent 102 0 R - /Prev 136 0 R - /Next 138 0 R ->> -endobj -138 0 obj -<< - /Title (dcache_req_if.core_req_read[0][2..0]_1818420) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 449 490 481] - /Parent 102 0 R - /Prev 137 0 R - /Next 139 0 R ->> -endobj -139 0 obj -<< - /Title (dcache_req_if.core_req_read[1][2..0]_1818421) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 447 490 479] - /Parent 102 0 R - /Prev 138 0 R - /Next 140 0 R ->> -endobj -140 0 obj -<< - /Title (dcache_req_if.core_req_read[2][2..0]_1818422) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 445 490 477] - /Parent 102 0 R - /Prev 139 0 R - /Next 141 0 R ->> -endobj -141 0 obj -<< - /Title (dcache_req_if.core_req_read[3][2..0]_1818423) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 444 490 475] - /Parent 102 0 R - /Prev 140 0 R - /Next 142 0 R ->> -endobj -142 0 obj -<< - /Title (dcache_req_if.core_req_valid[3..0]_1818424) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 277 412 474] - /Parent 102 0 R - /Prev 141 0 R - /Next 143 0 R ->> -endobj -143 0 obj -<< - /Title (dcache_req_if.core_req_warp_num[2..0]_1818425) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 440 490 472] - /Parent 102 0 R - /Prev 142 0 R - /Next 144 0 R ->> -endobj -144 0 obj -<< - /Title (dcache_req_if.core_req_wb[0][1..0]_1818426) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 439 490 470] - /Parent 102 0 R - /Prev 143 0 R - /Next 145 0 R ->> -endobj -145 0 obj -<< - /Title (dcache_req_if.core_req_wb[1][1..0]_1818427) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 437 490 469] - /Parent 102 0 R - /Prev 144 0 R - /Next 146 0 R ->> -endobj -146 0 obj -<< - /Title (dcache_req_if.core_req_wb[2][1..0]_1818428) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 435 490 467] - /Parent 102 0 R - /Prev 145 0 R - /Next 147 0 R ->> -endobj -147 0 obj -<< - /Title (dcache_req_if.core_req_wb[3][1..0]_1818429) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 433 490 465] - /Parent 102 0 R - /Prev 146 0 R - /Next 148 0 R ->> -endobj -148 0 obj -<< - /Title (dcache_req_if.core_req_write[0][2..0]_1818430) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 272 490 463] - /Parent 102 0 R - /Prev 147 0 R - /Next 149 0 R ->> -endobj -149 0 obj -<< - /Title (dcache_req_if.core_req_write[1][2..0]_1818431) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 430 490 462] - /Parent 102 0 R - /Prev 148 0 R - /Next 150 0 R ->> -endobj -150 0 obj -<< - /Title (dcache_req_if.core_req_write[2][2..0]_1818432) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 428 490 460] - /Parent 102 0 R - /Prev 149 0 R - /Next 151 0 R ->> -endobj -151 0 obj -<< - /Title (dcache_req_if.core_req_write[3][2..0]_1818433) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 327 426 490 458] - /Parent 102 0 R - /Prev 150 0 R - /Next 152 0 R ->> -endobj -152 0 obj -<< - /Title (dcache_rsp_if.core_rsp_data[0][31..0]_1818381) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 283 374 550 453] - /Parent 102 0 R - /Prev 151 0 R - /Next 153 0 R ->> -endobj -153 0 obj -<< - /Title (dcache_rsp_if.core_rsp_data[1][31..0]_1818382) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 284 373 548 451] - /Parent 102 0 R - /Prev 152 0 R - /Next 154 0 R ->> -endobj -154 0 obj -<< - /Title (dcache_rsp_if.core_rsp_data[2][31..0]_1818383) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 286 371 546 449] - /Parent 102 0 R - /Prev 153 0 R - /Next 155 0 R ->> -endobj -155 0 obj -<< - /Title (dcache_rsp_if.core_rsp_data[3][31..0]_1818384) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 288 369 545 448] - /Parent 102 0 R - /Prev 154 0 R - /Next 156 0 R ->> -endobj -156 0 obj -<< - /Title (dcache_rsp_if.core_rsp_pc[0][31..0]_1818385) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 289 368 543 446] - /Parent 102 0 R - /Prev 155 0 R - /Next 157 0 R ->> -endobj -157 0 obj -<< - /Title (dcache_rsp_if.core_rsp_pc[1][31..0]_1818386) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 291 366 541 444] - /Parent 102 0 R - /Prev 156 0 R - /Next 158 0 R ->> -endobj -158 0 obj -<< - /Title (dcache_rsp_if.core_rsp_pc[2][31..0]_1818387) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 293 364 539 443] - /Parent 102 0 R - /Prev 157 0 R - /Next 159 0 R ->> -endobj -159 0 obj -<< - /Title (dcache_rsp_if.core_rsp_pc[3][31..0]_1818388) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 295 362 538 441] - /Parent 102 0 R - /Prev 158 0 R - /Next 160 0 R ->> -endobj -160 0 obj -<< - /Title (dcache_rsp_if.core_rsp_read[4..0]_1818389) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 296 361 536 439] - /Parent 102 0 R - /Prev 159 0 R - /Next 161 0 R ->> -endobj -161 0 obj -<< - /Title (dcache_rsp_if.core_rsp_valid[3..0]_1818390) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 298 359 534 437] - /Parent 102 0 R - /Prev 160 0 R - /Next 162 0 R ->> -endobj -162 0 obj -<< - /Title (dcache_rsp_if.core_rsp_warp_num[2..0]_1818391) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 300 357 532 436] - /Parent 102 0 R - /Prev 161 0 R - /Next 163 0 R ->> -endobj -163 0 obj -<< - /Title (dcache_rsp_if.core_rsp_write[1..0]_1818392) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 302 355 531 434] - /Parent 102 0 R - /Prev 162 0 R - /Next 164 0 R ->> -endobj -164 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_req_addr[31..0]_1818393) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 432 567 432] - /Parent 102 0 R - /Prev 163 0 R - /Next 165 0 R ->> -endobj -165 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_req_data[0][31..0]_1818394) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 402 567 430] - /Parent 102 0 R - /Prev 164 0 R - /Next 166 0 R ->> -endobj -166 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_req_data[1][31..0]_1818395) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 402 567 429] - /Parent 102 0 R - /Prev 165 0 R - /Next 167 0 R ->> -endobj -167 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_req_data[2][31..0]_1818396) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 402 567 427] - /Parent 102 0 R - /Prev 166 0 R - /Next 168 0 R ->> -endobj -168 0 obj -<< - /Title (gpu_dcache_dram_req_if.dram_req_data[3][31..0]_1818397) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 402 567 425] - /Parent 102 0 R - /Prev 167 0 R - /Next 169 0 R ->> -endobj -169 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_req_addr[31..0]_1818398) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 497 416 567 416] - /Parent 102 0 R - /Prev 168 0 R - /Next 170 0 R ->> -endobj -170 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_req_data[0][31..0]_1818399) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 401 567 415] - /Parent 102 0 R - /Prev 169 0 R - /Next 171 0 R ->> -endobj -171 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_req_data[1][31..0]_1818400) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 401 567 413] - /Parent 102 0 R - /Prev 170 0 R - /Next 172 0 R ->> -endobj -172 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_req_data[2][31..0]_1818401) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 401 567 411] - /Parent 102 0 R - /Prev 171 0 R - /Next 173 0 R ->> -endobj -173 0 obj -<< - /Title (gpu_icache_dram_req_if.dram_req_data[3][31..0]_1818402) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 496 401 567 410] - /Parent 102 0 R - /Prev 172 0 R - /Next 174 0 R ->> -endobj -174 0 obj -<< - /Title (icache_req_if.core_req_addr[0][31..0]_1818472) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 354 490 396] - /Parent 102 0 R - /Prev 173 0 R - /Next 175 0 R ->> -endobj -175 0 obj -<< - /Title (icache_req_if.core_req_data[0][31..0]_1818473) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 352 490 394] - /Parent 102 0 R - /Prev 174 0 R - /Next 176 0 R ->> -endobj -176 0 obj -<< - /Title (icache_req_if.core_req_pc[31..0]_1818474) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 350 490 392] - /Parent 102 0 R - /Prev 175 0 R - /Next 177 0 R ->> -endobj -177 0 obj -<< - /Title (icache_req_if.core_req_rd[4..0]_1818475) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 348 490 391] - /Parent 102 0 R - /Prev 176 0 R - /Next 178 0 R ->> -endobj -178 0 obj -<< - /Title (icache_req_if.core_req_read[0][2..0]_1818476) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 347 490 389] - /Parent 102 0 R - /Prev 177 0 R - /Next 179 0 R ->> -endobj -179 0 obj -<< - /Title (icache_req_if.core_req_warp_num[2..0]_1818477) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 343 490 385] - /Parent 102 0 R - /Prev 178 0 R - /Next 180 0 R ->> -endobj -180 0 obj -<< - /Title (icache_req_if.core_req_wb[0][1..0]_1818478) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 342 490 384] - /Parent 102 0 R - /Prev 179 0 R - /Next 181 0 R ->> -endobj -181 0 obj -<< - /Title (icache_req_if.core_req_write[0][2..0]_1818479) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 124 340 490 382] - /Parent 102 0 R - /Prev 180 0 R - /Next 182 0 R ->> -endobj -182 0 obj -<< - /Title (icache_rsp_if.core_rsp_data[0][31..0]_1818403) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 57 328 527 401] - /Parent 102 0 R - /Prev 181 0 R - /Next 183 0 R ->> -endobj -183 0 obj -<< - /Title (icache_rsp_if.core_rsp_pc[0][31..0]_1818404) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 47 324 560 399] - /Parent 102 0 R - /Prev 182 0 R - /Next 184 0 R ->> -endobj -184 0 obj -<< - /Title (icache_rsp_if.core_rsp_read[4..0]_1818405) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 99 326 520 397] - /Parent 102 0 R - /Prev 183 0 R - /Next 185 0 R ->> -endobj -185 0 obj -<< - /Title (icache_rsp_if.core_rsp_warp_num[2..0]_1818406) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 61 321 524 394] - /Parent 102 0 R - /Prev 184 0 R - /Next 186 0 R ->> -endobj -186 0 obj -<< - /Title (icache_rsp_if.core_rsp_write[1..0]_1818407) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 63 319 522 392] - /Parent 102 0 R - /Prev 185 0 R - /Next 187 0 R ->> -endobj -187 0 obj -<< - /Title (jal_rsp_if.jal_dest[31..0]_1818434) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 64 300 396 451] - /Parent 102 0 R - /Prev 186 0 R - /Next 188 0 R ->> -endobj -188 0 obj -<< - /Title (jal_rsp_if.jal_warp_num[2..0]_1818435) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 66 298 395 449] - /Parent 102 0 R - /Prev 187 0 R - /Next 189 0 R ->> -endobj -189 0 obj -<< - /Title (warp_ctl_if.barrier_id[31..0]_1818436) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 71 293 391 444] - /Parent 102 0 R - /Prev 188 0 R - /Next 190 0 R ->> -endobj -190 0 obj -<< - /Title (warp_ctl_if.num_warps[3..0]_1818437) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 82 283 381 434] - /Parent 102 0 R - /Prev 189 0 R - /Next 191 0 R ->> -endobj -191 0 obj -<< - /Title (warp_ctl_if.split_later_mask[3..0]_1818438) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 83 281 379 432] - /Parent 102 0 R - /Prev 190 0 R - /Next 192 0 R ->> -endobj -192 0 obj -<< - /Title (warp_ctl_if.split_new_mask[3..0]_1818439) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 85 279 377 430] - /Parent 102 0 R - /Prev 191 0 R - /Next 193 0 R ->> -endobj -193 0 obj -<< - /Title (warp_ctl_if.split_save_pc[31..0]_1818440) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 87 277 376 429] - /Parent 102 0 R - /Prev 192 0 R - /Next 194 0 R ->> -endobj -194 0 obj -<< - /Title (warp_ctl_if.split_warp_num[2..0]_1818441) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 88 276 374 427] - /Parent 102 0 R - /Prev 193 0 R - /Next 195 0 R ->> -endobj -195 0 obj -<< - /Title (warp_ctl_if.thread_mask[3..0]_1818442) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 90 274 372 425] - /Parent 102 0 R - /Prev 194 0 R - /Next 196 0 R ->> -endobj -196 0 obj -<< - /Title (warp_ctl_if.warp_num[2..0]_1818443) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 92 272 371 423] - /Parent 102 0 R - /Prev 195 0 R - /Next 197 0 R ->> -endobj -197 0 obj -<< - /Title (warp_ctl_if.wspawn_new_active[7..0]_1818444) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 94 271 369 422] - /Parent 102 0 R - /Prev 196 0 R - /Next 198 0 R ->> -endobj -198 0 obj -<< - /Title (warp_ctl_if.wspawn_pc[31..0]_1818445) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 95 269 367 420] - /Parent 102 0 R - /Prev 197 0 R - /Next 199 0 R ->> -endobj -199 0 obj -<< - /Title (writeback_if.rd[4..0]_1818446) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 198 394 360 418] - /Parent 102 0 R - /Prev 198 0 R - /Next 200 0 R ->> -endobj -200 0 obj -<< - /Title (writeback_if.wb[1..0]_1818447) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 199 392 358 417] - /Parent 102 0 R - /Prev 199 0 R - /Next 201 0 R ->> -endobj -201 0 obj -<< - /Title (writeback_if.wb_pc[31..0]_1818448) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 201 390 357 415] - /Parent 102 0 R - /Prev 200 0 R - /Next 202 0 R ->> -endobj -202 0 obj -<< - /Title (writeback_if.wb_valid[3..0]_1818449) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 203 388 355 413] - /Parent 102 0 R - /Prev 201 0 R - /Next 203 0 R ->> -endobj -203 0 obj -<< - /Title (writeback_if.wb_warp_num[2..0]_1818450) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 205 387 353 411] - /Parent 102 0 R - /Prev 202 0 R - /Next 204 0 R ->> -endobj -204 0 obj -<< - /Title (writeback_if.write_data[0][31..0]_1818451) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 206 385 351 410] - /Parent 102 0 R - /Prev 203 0 R - /Next 205 0 R ->> -endobj -205 0 obj -<< - /Title (writeback_if.write_data[1][31..0]_1818452) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 208 383 350 408] - /Parent 102 0 R - /Prev 204 0 R - /Next 206 0 R ->> -endobj -206 0 obj -<< - /Title (writeback_if.write_data[2][31..0]_1818453) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 210 381 348 406] - /Parent 102 0 R - /Prev 205 0 R - /Next 207 0 R ->> -endobj -207 0 obj -<< - /Title (writeback_if.write_data[3][31..0]_1818454) - /C [0.0 0.0 0.4] - /Dest [9 0 R /FitR 211 380 346 404] - /Parent 102 0 R - /Prev 206 0 R ->> -endobj -102 0 obj -<< - /Title (netBundles) - /C [0.0 0.4 0.0] - /F 1 - /Parent 11 0 R - /First 103 0 R - /Last 207 0 R - /Count 105 - /Prev 53 0 R ->> -endobj -11 0 obj -<< - /Title (Nlview page 1) - /C [0.4 0.0 0.0] - /Dest [9 0 R /Fit] - /Parent 7 0 R - /First 12 0 R - /Last 102 0 R - /Count 5 ->> -endobj -8 0 obj -<< ->> -endobj -7 0 obj -<< - /Type /Outline - /First 11 0 R - /Last 11 0 R - /Count 1 ->> -endobj -xref -0 208 -0000000000 65535 f -0000000009 00000 n -0000000205 00000 n -0000096979 00000 n -0000000355 00000 n -0000000482 00000 n -0000000630 00000 n -0000133504 00000 n -0000133483 00000 n -0000000755 00000 n -0000000895 00000 n -0000133325 00000 n -0000099209 00000 n -0000097079 00000 n -0000097237 00000 n -0000097422 00000 n -0000097599 00000 n -0000097774 00000 n -0000097949 00000 n -0000098124 00000 n -0000098299 00000 n -0000098482 00000 n -0000098673 00000 n -0000098862 00000 n -0000099051 00000 n -0000102143 00000 n -0000099370 00000 n -0000099532 00000 n -0000099709 00000 n -0000099889 00000 n -0000100069 00000 n -0000100246 00000 n -0000100410 00000 n -0000100587 00000 n -0000100762 00000 n -0000100940 00000 n -0000101118 00000 n -0000101293 00000 n -0000101463 00000 n -0000101635 00000 n -0000101816 00000 n -0000101994 00000 n -0000104117 00000 n -0000102317 00000 n -0000102486 00000 n -0000102673 00000 n -0000102856 00000 n -0000103040 00000 n -0000103224 00000 n -0000103409 00000 n -0000103590 00000 n -0000103772 00000 n -0000103950 00000 n -0000112684 00000 n -0000104295 00000 n -0000104440 00000 n -0000104602 00000 n -0000104764 00000 n -0000104926 00000 n -0000105087 00000 n -0000105248 00000 n -0000105409 00000 n -0000105570 00000 n -0000105731 00000 n -0000105892 00000 n -0000106053 00000 n -0000106230 00000 n -0000106404 00000 n -0000106582 00000 n -0000106756 00000 n -0000106932 00000 n -0000107106 00000 n -0000107283 00000 n -0000107458 00000 n -0000107629 00000 n -0000107804 00000 n -0000107983 00000 n -0000108164 00000 n -0000108348 00000 n -0000108532 00000 n -0000108698 00000 n -0000108868 00000 n -0000109039 00000 n -0000109233 00000 n -0000109428 00000 n -0000109623 00000 n -0000109816 00000 n -0000110010 00000 n -0000110205 00000 n -0000110400 00000 n -0000110583 00000 n -0000110770 00000 n -0000110954 00000 n -0000111140 00000 n -0000111309 00000 n -0000111474 00000 n -0000111643 00000 n -0000111821 00000 n -0000111998 00000 n -0000112171 00000 n -0000112349 00000 n -0000112526 00000 n -0000133159 00000 n -0000112859 00000 n -0000113021 00000 n -0000113186 00000 n -0000113351 00000 n -0000113516 00000 n -0000113681 00000 n -0000113846 00000 n -0000114034 00000 n -0000114220 00000 n -0000114411 00000 n -0000114603 00000 n -0000114792 00000 n -0000114980 00000 n -0000115172 00000 n -0000115363 00000 n -0000115551 00000 n -0000115740 00000 n -0000115922 00000 n -0000116105 00000 n -0000116288 00000 n -0000116480 00000 n -0000116665 00000 n -0000116853 00000 n -0000117035 00000 n -0000117228 00000 n -0000117424 00000 n -0000117623 00000 n -0000117822 00000 n -0000118021 00000 n -0000118220 00000 n -0000118419 00000 n -0000118618 00000 n -0000118817 00000 n -0000119016 00000 n -0000119210 00000 n -0000119403 00000 n -0000119601 00000 n -0000119799 00000 n -0000119997 00000 n -0000120195 00000 n -0000120391 00000 n -0000120590 00000 n -0000120786 00000 n -0000120982 00000 n -0000121178 00000 n -0000121374 00000 n -0000121573 00000 n -0000121772 00000 n -0000121971 00000 n -0000122170 00000 n -0000122369 00000 n -0000122568 00000 n -0000122767 00000 n -0000122966 00000 n -0000123163 00000 n -0000123360 00000 n -0000123557 00000 n -0000123754 00000 n -0000123949 00000 n -0000124145 00000 n -0000124344 00000 n -0000124540 00000 n -0000124745 00000 n -0000124953 00000 n -0000125161 00000 n -0000125369 00000 n -0000125577 00000 n -0000125782 00000 n -0000125990 00000 n -0000126198 00000 n -0000126406 00000 n -0000126614 00000 n -0000126813 00000 n -0000127012 00000 n -0000127206 00000 n -0000127399 00000 n -0000127597 00000 n -0000127796 00000 n -0000127992 00000 n -0000128191 00000 n -0000128389 00000 n -0000128585 00000 n -0000128779 00000 n -0000128977 00000 n -0000129172 00000 n -0000129359 00000 n -0000129549 00000 n -0000129739 00000 n -0000129927 00000 n -0000130122 00000 n -0000130315 00000 n -0000130508 00000 n -0000130701 00000 n -0000130891 00000 n -0000131078 00000 n -0000131274 00000 n -0000131463 00000 n -0000131646 00000 n -0000131829 00000 n -0000132016 00000 n -0000132205 00000 n -0000132397 00000 n -0000132592 00000 n -0000132787 00000 n -0000132982 00000 n -trailer -<< - /Size 208 - /Info 1 0 R - /Root 2 0 R ->> -startxref -133586 -%%EOF From 8e9bb5a6eb2f16acdea28e535295d6f6ffc861c1 Mon Sep 17 00:00:00 2001 From: tinebp Date: Sun, 16 Aug 2020 10:55:07 -0400 Subject: [PATCH 50/94] Delete Vortex_projects.pptx --- docs/Vortex_projects.pptx | Bin 1303219 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 docs/Vortex_projects.pptx diff --git a/docs/Vortex_projects.pptx b/docs/Vortex_projects.pptx deleted file mode 100755 index 124ce89bf4534f73c6cbb10bfdbbc0674a7d8932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1303219 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%0ApA-ySRF0+;Z}c(J5tft^ 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%0D@fuE*Lc1+?$2uk?6yqp4QXnD8qA7AvjbIkR3 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

MpQio zWg=@ePzH5O|5=S&|1yTiXrT-%{z2zvErNMyFqX*h6Pln$!WR&Vv87Bjj-jQW_-Gj> z9~wtZhROenq$fN?bD6PbnXzSAG=v%xJ@X(_MjI|e55`+zd<9x4^WWhz|M9<{ai9!0 zw2H*k(@^I5cfSAPyYB#HsK;5V;N{^A6igZ|HPnA@1|FGF?}Ad1i7ZXY3dLv)&N<~+CLZ6t3QBXc83TTfCK6X_Hp zW`K-LP#WpQ%;bRM1nYAmCrlL0n3*|mcJ}-knX{LsFMUe#jIL}pM>U5jpQ$6BJ}GgM zK@b;2h9R3k z9JD&pQTh@t9OJ| z(yXpP2R0cT0S66SIg~MFOd^Z6&gh{t)4O!NkG7Nv={6iHy@m=T20udV3=W__8y86% zcIXNwt^OGfGd3vZw=p~_42mcro0l^Sjk+|aqU*l?l<3RQT&Kns#G&pKqRc#F3bN?i z(Uxxg{v+t@7;JG4O&hESi;Mwo7V~uR6qDS!e(SOPL3?u3kM9b6^WC=xn_J3{oN5`o znR&R|UYN7qIo>!_<)b_pkX{jI*788&cL0oYxkaaSV?cg_YGgMRJieCOT1>BrZhC zuXlpjPnqLi=(x$x+ehk`R=VCPWxsn&NR%oru`D1=VQJ#+vMRaA_~xkh_eUK6rrh3B zVsYoR?-v(BzNmJ+RP1-cJ6W{Z#cjrpJ=1pVpKofn(H^~?-hZ#T<8#j?tekyq z`PBCoKXqf?^K9kmlX=I^=69YbI9)4lI*?jdlyvZb@=!xzXQ84YGp#B|)}#;? zhj}S%cf~lH`lLpr$b$O(Hh#J9nNJom-kn1}n$Q1a9`Bo(-WU zf^S9o-^m4^$++Lc>LQ)^wa`EvH&N|7@z?!=Z&tIvT+F(^fUTa(R4-+JznFYwJoSw{ z*L%0~zPcEoPM`dpiuY5A-cJW6e^N8`m$GT!C??;Je(EF7H7bW)`SpU2z)Dj$c{z0>{#Y9 zc8mjXn3h)1MiT5E?!4M|{0cfW(Od>wj9WV{(KUy$@<_v@@8b<~#8bkI)e$t(+J*dUEjCsiAfh_-KSN&0@w985m@=ddMjQvrJ6~ zrH8l-(9AzmX4)yU4AtyOW0|3$jHZHV1W<+!{XN?|danOU_rNto$-o^0C^K}G((v_L z1DCEpQX^NMAHIBV@Y0=uk=qxCZ}kt|gfJK!z6T8q-Mu(?2kIZV-FNX8gh6-DwbN&j zZqwHWC<7v+QRAU=TA{~w%i*53qkV^u^`AIB3Y|Q28A5}n2R)v;u6Fm_IoEybOxJZZ zdpdFI>hTkoVgEUNbQm-ZD6O>WOkUZstfDq3r{qX(=}|b!6j@EOj0S0Xy+ld3@{;qjGWaTVBN9Gg-b zFRD+;ZWiYqlNX+m7hC|BLC`NsnNqWlK7lfi?@#(;dFSs?Q0DlAfE+X787-7~$PNQwq0LwsOJu+@43ZwL zKMQ4ygw2oCpC>pChRJ_IfHJfmLNmWFX!?!IJQ~W3x6axx;$bv1&iD8q|N9vS%J9Of zNn9hYRyU>KFCYK_+elae2#&i)?CUnV$L#Ct((`(5D*rEFi>&Fk=Wel}wcA z@`9%jb3!#mMzBi&hZkeOisF+nHnrwyPB&JLf zt7GJBz}QK(J>sn7au#zrOE|n0Y~~6gSjB&&be?6i7vo?yYc-E7Vepm;bQVxJMsK?A zr0}OF#2NCpvY0FNSsQum)i_L#`~Q4LsgjHhUG5wH&L#1pPjizv++dO@IHx4>fH^8qV}}UVl0JXpdcTwnccBLsGGSMvYraZa`XAa(aPZ zP_&JulW$yDQbu|}Y^s}Yf?t5x+e_l>p$hWKPl_*zipmHKO$ZDNN{S0EmBqE^NV@Y? zZwT{WjZ1$sIpfpJlJ_!mM`FVpT+9kAwx)ZBWqU`~MJrLbbS?YXNZO&{gvM*a!)oZseusLstH_wew)V5k zZDt!=FWKj0>z^uNzHcxmy}Hx^8NbHRi+7wY|e zG3TvK6Tdtv{IM@nU1;`|5C0o?a^H*bgC9rj%Tc>9esC51n7HXHML@r+Q~0ybZC}3M z+&nxeBu$)>tjLYeEs8J6Pdu2PTvwUY+?aT{MATN4(o&pyNEub0O|SYDHNq$2ZB zVu&KjSCl2H%t)z>@ly)J@)ZdOlnK?TNtx{}=T5^kP;|Jn{KUD6(`}08#+2&zoQ@iC zeTA?pH>S8kQrB91q9UU?FYTZz<)9=kC)hRBY)gRUPKTI)xD=lr@AcnpoBof5>`$Iy zel=I{^?Y6ROvcZP^*(Uj^XXaTmpAj&ss%r%@$bvoU&t6gsr0_eobXGko;qQI+INC_ zzu^1TtZx>vewo8o&t|Dt2-Hi+_xmQjk?nZ*X3kf`0qVS|Kji4C^T?OwI`7m>{Ncb; z-)2qyIez-be(N(lOwBj!wOqW@;+b6z^LMzd-s!o^%6FTy%OacI8*Mf}YrSNZ`7-rS z-;#T;zTI*9;*m}`Wk$edPIcWq)_J4j#BJahY{6(+k6vmyGIZ?3D8Nk<(r`Nl!52Uo zY7Zklw+Gw0BYn^VS4hVo-Gdp2VcP-^g~qD_(~4H`ut2cbz(<2t*&r;~LfF;xkRCuS z5{i;)4#6D*GtPrX+CVT6jb_H`=<&V^yu}&E+lz~|W zMN9~h=^ME*aQWuo)f+?CZbHLXZaq?$uD$>+Gc}KS8K|g3g}5dj7&~sO$XA zuI?LW&Rs({Zm^rqQDZd#7J__$@05p`R62gC)0A<0cAe>?uk?8vHe+p>~8!G zwc5G-xKUsZkAgBZk)gzhY}7!R`u|xdL#N5o9vLkNU?(*GF_fWQ9yE>-BsN21;mcV5 zGPY!is#^Lj$Ja2i`H?b8Iy8=&jFKLqiNZsV)FTi6!^sAtq(343l$NnvM(Y3?FKFf= zgUmzCn0~+7_zK2y8SU5fAouq-f0K6ie+tS_LBG*;G?aPe!=Hatt2HgL$8|?gnW}mW zDsh&9Zp%E>y)Y*ef%61X>eEHY^kuM6niNGS z&VuM+&Sai!p-G9ou3`cbXQs#&64`oA<}>qio+ep_T=7b#!idTbwg6bs=fk<7iJe6w zaIU7w5Ly`Vb`pay9ey(Eo>-3-+8j|;G!&@fCFqkpKEZX`YT8RbQdDPX^e@tIC-4J`}KQ6Je|+4D?f?wR()SGZ?HRjP;bL^V5f|C+wLNhGXny zO%YCHx@hKCvb7iR@PNKf`l=ud=$Vy-4FZLG0aJsMWd_ktHWXwrIi?KeK0l?oR(@*t>k5?VNp+B)(%mvP z&b;bK*k@M~)Q7$QA=z=G*!rC_;p+1VKbD8w%t`1?$vtQnDO~R0{*0yF%zc*gwwdiV z^9=S+b@hqaZ|S+m%+1o#&&tW)#KwKEh4Z%k*0zqmkfUp$iMiWeW0&3goVIMYHMQ_| z@`$i^i88VB*t98S#jLB(PJDCD#G$A4&McjKb?)TLbGWap(EV$A(3cmRzO9M>)O+67 zHjMAxbkq)PwGI0hWA0bG^xrjK_<_mNH`dR4l{$Xv=!{82GmI`Rm~d;wgje@3`0|+a zes8`y*WxP={&z0qCpYqgJ6r9-QrnXIZU*Y)?LR5}hF$GqS8XufVC-xk9Fw3bmZg;f z$CM^Flu3`4sg50#9j+6#luFvlWk(LGj^(D-rA6jt3d<|9o6EDBBr(~-FlD~;3%TB4wl~lnlb>`6Eq2kW7wS9d}!|eqpnpLe;;+nGLin5dgMakt2*{!D= zdfUoQROPhf%W9+v>4C1X=G%O%_u54VMy2@m1#D5TpY;A*_Qx}rU(Vov00%+%zA;Dt zm+6e3=J4OP+3|jV&JQmXt1}n=D&_v9WPGI{zoc`%N*DZ?Y@m*xq7Im*Ha7TvIrq!C zoF8Uz)zdlZWxDD`QnZ)Q5)xtaI%P>?!*+Wj28UkjLDmhj&w=YL+T_lZL9%fzQX zNZ45_^!AHO6$d0s+!C`qqVt0za^jP+Lz0rr!`#-}EMH``dZpQ>Uw`_By!iT?r!T-E z(%pWlAIT;ir$&(@bFA~)p~G;^+(5Dn9-+ZvVCXn}ytlsPWb4VxhdM7cbqqJQ4>cSc ztUn4s1587WvBf-I#WD0@n4}R5boj(&T1QS^fgbo=V0F=mcEJG6&@6@)!eZzuC)6m> z*)G~HNZLk7k0dgO4i7fB4bW%?0#w2bb^&OPp1OGK^Z>2)GlR4`&JJmHylWWhJU0TJ zI8Oz~JW^UBLw8?-=t8IJ;};mIKF7*yyy*PSf;L3GynZc{qY0J#-b?L@SBiCOXzV^c4m3sr1?;?f{XUQbbjIbzXwtFru(d({Od&#qtB)CFNa(C8u-pk1Nt!)1(bi zk^_-x)lq4U3GxoK#Fpfq73ZFygMOcsFFn>j?2p;aQ&6Vtgi$~q53QE~WujUsJ%BP4 zmtjRv`j0fHGQ|FqX(@p^P>%M$2FRne3~nTB4y0aK?D>WkPbx zIBK4d{0NN)WgdC(A597yCj1!z%4oUF*nFAa*EIcB$Mol%GW54VeXD>@4dIbgHuK&O4B%HG(Bq`bgua)qoJxvkQ+-;8!A_os?wQ2 zxDn4}Wld9MawIAu%ple2I$;v_6cw?nB+^1&zKRqo7@kT2W=H`cMX;GL5ZTL?63`8n zSU~bPRLdj@VTt(*O6N^dOyHz|ys$ZPs!ujUPWZX##AHY$x=WIArSFpo~f(Z5mnZ%4dd=R=mJxZwF z;!ssGa0+o!k!s8$UR1&{MP42y*j`w>ne5#h=1vyb4jcpE!lc?yn{YK_@CYW^sKbEo zV+GMkVi~095NC?8u(z`L&*^a2bJ-NcA*@YI=0*lBl#I~=u+Ux0p}-A@24KWm!hMdX zw+sQqnlCVoO)VOz&?*7h!NkF=%{CMs9 z8yRzS5fy}+rO?R)?KM0!pf7JMOu;TDVZhM`E!sqQ+qhJ_r747$f&^&7F=a9KXqFD2 zwVp87Gg#|bthH<=z{+!AObpIOCWHZYG09t_%Us8%Zc4Kz>}T0zqNdrn9}%SKaec7J zgtdhwSj2nbl^ef4`L9cl*{}Iye!D;1|Ecg`bNYcJs`@i=CC5DF)y@fJ9-;%mnRO1a z@|41=b0gOd);7e1M;lw%*w_a-JEnTMiQ&|+wRZFM3{Q;7I9OO&Rdk>@rzB62U#==^ z%&DuBloy35)5CI$q6!bh7F9-Ml?KZSgM^v>u@bM)(nw)xWNJmUyedAcCZVu8uIxZm zSw%!yWlUjSh@v1)UYw@PN=Z|RBpLE_g)~E)rU;9by9cSlqwC|NkJ>rpJ49F6D4Wa@ z57@@a;uM84d3{nuag?h{WYg5(^TF9bb%pIGF>7yS?0>h-=a=TdPf{Guh5H-|3ePfj zj#^~wG}FX-v90qCH(w9*BlqE>XcE1>4{av^47A9BN@Vj!l-Oz zN=ad6T|q{zGCp4(n_DQY$`Y0*2B^YZMPaUDSyY)Krs721$eE@q&4p)o{hCfYX{V+rDSF0Uw_N0G(J71kK_a_n2SYbh)GOt*aTP;#Grpp?NGOLv73g39o6;`tsSZrEu zy!ZR>KPR_de(B_e?vAtPPhS{9OXd@2uN*pZ@l@CCBOO;jWDqoi;-=R23rA1%9yxKo zrTt7}$8i0z!P+Ai>y8dU^q>LH$sjeyM<5IiBmedMt)pEx+E5bpuPo;1sjIY(ogQsJ zbD0*#M^28=Mi|OPa(wv6$x)O(wV%OZAUFUzm$ZGUwH>M3&yGTH$7luS0`fu=nZ}lW z8pMFeU>Cvw2RuY%v@GT!K%+%7k0dfk`TZ}U%tKtJ=14D~Ox>}5DrKev1ZoIGhK4ez zU7~}2(G{DjUDA{<(NKo!fjxY+fAlJ#%)pgv(1T>@yd7uWE%|Om_ENf#^xh(38-Gp4&aW zccAVIH@ePUMJ)Eo(?cgt4I-ciy|)_L&egS^u5InCKit`P^kj4UNfbl1qNf$Ihg!Rv zTFyflK(!60p_=+r*w#0l#S9Lk%BD_TMr{;|q%QQ{g(U~$(`T=tRO(p!^+PQq^$i!B znul83MzJj|JDr}<5~rw%5LJaFRfh`?fy<<1oJdYT8n0-60%aca-}T4s_EEkBC}S9y z$3-M+O;Cxj&x-T)%KS(1@D`jmXVm8%k zhXq;z2MJHW)S+T+!D+k%tZb4X0Kt`7a#mkv<)bx2cxcTrWM42pCxOY?px1 z@I{1?z$VcwJ>fJydU7k6L}CEig0L8_ds z5OW0+Vk~DsdQ16KwayBSr)CimEZ3d5a3UN)C@v$(T&h|4TEbs8jRF}932(U$V-*8u zqmD<}6okP_cy<_Y(=eAY*eh75gn}@@E@iP<#hCWA9+gqNiNlT7MI{2do#f2{BK`};rVRUFExIVCDT4i>X3Kw%w`=Ps-W%WANWNK4GE=(%#Mp|K?{D%#oE z+r=@)+eH!Vo9XKr21pARA|k9j&*x;v-sG!2=z-ToO9yPd%i(OG$g z6*V=Lb&B)~|Da?GJHP!F9^3ahZry9U!_*N_#@sTCMO36JwS=eF*L^)ugo*67n&y8n1u_k%f; z?oa1^H(T#Dn|*Jc5WRmzsg}?98c-&m_d_02ox}b*gYiR*(O0pve-2#mtMQC47wNw@ zng8Jg-ESut{PHyGr>DrbTc-Ry!}H}^Wj_vtsg;wz7BRjm;C)r1_hzO3m*obZD7c@- z@c$aQT$yO;7!&Fr7#iUlmJ$#skMWnMg^MGCea#%UuCbr>tnL0aW)45x|B~E!@x#;S zZ_v@L5XQ)Dg`zg#OuD!Ab+s#W=8j05l-H7NXoY z2xmDtsPWqL(-A5-fR^?!x=%BN!kNxf!>FBs+B*jzv;;cZ(Lc77hMuR@dU~Yg)Nu2O z!N%jr*6ph~a-sTgcU9Z@`eVa&M~7+-4^+2Z#1`X*b}*w+bc{lCD0GiP->9P}M`&T( z4oIX?$C=B}@v~Q;&aSJ6&x}BzFi`txIEfzUII6uKrFJCgv=74K0kyRcASIXnAUH?R z%L%QiU50{sO@u1JU!^NgB=Iu)gcJ`fuDGym4pf=H1~NcZaXtfy;)XIiokAq02XEVSI7q zTL19X;o;j4!5Z)ysITwpBZVm9N9s(^B?xp0byyGv^h|HhO{lN;7KB01g&W=Hubn@4 z_4KKclP88cj}LUT_qQMG!xrNcorAF6z<>kX1L$+1=O(u2&R@gs*{&;NjX527qehKQ z{S}p`GcudgB$cUYcyv76dNAPd%PySuzvHop;oNoT7@6_8HjxZxLnehi% z2~GOJjXI(A+=vDi;!$Jj7|8dHsAh#9__I!jaf5ru%^X34CrYg7YKR?E194(&wF8XD zc2Hu+RdeENAZ|h}#7nGuNc^OFNRW)D@dh1Xqe0T2ldiD-kunf9{okQKdB0d9dadYn z`~7;->rAgX7JqE#CVVwxzbX1FqrXS`JB9vP*7OH$w#K~lr~lsK4l<$-7zH1g6kHAG z4oRqIN5T1pK$(2_zXT!GI*IwW{{Ex-8+Cd3LBgG8M3_2wHfEr`F@S);2$X_q^^AXL zvS0yfsPI}o52yfB$-HSIlB6K1=|r5xkt<1ph|84|iG-z8k#spzn4z}>4XyEv4MYNE zGSQkE78nW&NT~r!Nxg)@uB;^!()39Nhw6JRBb+Q2j4lSQ03)EGH9z7$FzPK0g8 zVj(ja93_pgL7?0T-$q~8%7|shA?WwyKp2ipmNkLcHiTnK2?KhDVawn;u{jnjT}vH~ zJ(C4CVZkP_^Wa-VT@}_4z8mzPvLI{|!o=2ruu9Nphr5D@57g}5WP$>BU}}>nuDn~YTs*)dttC_3Df4mNpK#FF+&~cz(L^{(}GI+ zrQ&|^<)-UU=Xat$h+)oRn{mm0!n9^RIJ4&Dnlmt{>!Cl$mhfy?d<#BxZT5s~%V40C z35G5ljIz8)&A^=S_wZkQ{qE1d{QNlmls&oE$9)C9|KWZ`{Sj4p3$k2%BnS2dEB8mp zE#k7Fy}{y?lGgrPuN~_=9}ym7VdHLU;cjW;YiA#5ZsxLYpQXFIyC^N`KuJkuL2;H? z8R-)yjTF~rR23!`$O9!Q9&u^j@e2R=tdPXqh=h{3#A;DmlTu!(R1}M)SqO^>Nfi4g zi@b$WAF13=rHqgzdB;maQx9a69j<6PT6L(othzF*Fe*~)>6vV2n-Usc7n^k4)u%F6 z+=1S&TP*_D?{;)>3rb5;l}M@zBbqXt+Yb5;wFbUjX7h5|rpr0zuT%%WTN-^=5q&bq zGsngydXGcEg575G_M7Yv3HC@x2uny($TNj$=|N%f4le$PjM=%@X6sIi-TNHOtvvUe zy4X7fTiN=dWXaJb+}SnC!ph&+)XUjbYGxH~X5(eDFK6TYyQ`+XxpeBtEJ4qTxm~Mf z-=3@c+LDPcD6pRePPM^(4PI7x8bku6Tfhn z_;%3hSA)z8Y)oy|t>0{FYabMw7!sBg7p)M-l@v%?4rZRrPH9MqDv+g?)fTt)bY42u z+FMi5l961H5SXTl%PCV-Rb@8A@KUL2$V;ir6&@&+HIzsivl9=9L-Q)-E$tN-4l3JX zUB&*UQOTZ)+}Mhif}?er%_Wk9P+n?Tgj<634p+O~9zNz_&Zch9t=KYi`r^%-H-`ns zBnO-h+57jcbN;sWsZSP9{OD=j*Jm4kIM3*dB~QKVVEp`a0cT3|)1u0L4dN zXYxOnbG}Y6`YvJC&tVJhTRrpTn#rF&qx;=dp4y15p0D%Me4^g}^fv|GZ{Mr$vui`gW#M$^nMx;e1W<{qSh>EF<4=PTJ&X0&q zHuraY&e3vDfa`WQtDipq9Nm{b>FT)+7DEeTy1fn>?jS@4Sb=Jdd}K%?)B%mOb@YuD zI17zheoth8V@@EPNq>ld2Z;`g-d7quFzbjd+-Lh3~)^E$nCyMclt-~LVY8*Ai7WXSUU3% zsnPmnKxAkrLvfkwcW5X>ahczU3=(Q+D1-c9a2Y@ut!O&)NNJA&_j#mfQbS)VgaJJ> zH26F;JoLiI@QV-z^bE~tXh3tW>k76QU+6|v)D=(|n#lC@-lDn8`R?lw=Cx?%#K~b= zohNP_Y8eEV$;oR`rq{@oRdVG4nWD0??(p|NK7lfi`>*@sbN@g8@V^Mkj3qLE3}t9K zFdmc{OJx2S%8VDdt1oPLqzqG=9w{SH^M6$1eeSsP`H^>-`_qKdAGf^U18IsIXNOxoDaQAz4L_#xQ&^ z8ck6T5DnF%2R(_OrXHaandoOEmXUNonNmGv5i3VxI9*P}nSy_TGBOIj{03#1{|aRu zAeHS|&l;xbQBVd){s*88(;pA#lZgubo(x!U>tqwAk}S@iJTH?uUp$YOI+rEXBlaBJ zBRW+Js4YRY7R!)BEd`=juqH?mUdZIGWx(VDV+(Hy;Zlwd%5uVnK?6;hd1za$Lj|M6 zqK7x(g>gYQ*jDUEiebfJT60-8JPe3AlbA7xB^xt*2L`cc>)06atqk-{4Fu>AtxNP} zMnu5^@?cr$@=T2g_=OXb*fDqxy2O@Ez-a8b3T~Q?u28_ zqjGSW3{D)Ikxm32Jf8gojx}epm0*&sKFgH_F{bwwyB|SfFFgA)b0T3~#|C?Fe#(*sfX zMkAIzi)Ae!HY|!afuo28nkEibNGhdanPa>Bz~j&?s|jH*0&~iC_n( zKr>TkGjp5Z;J~bG<$=<|yiAoaI>y(*J$=5yE&0ZW6-iY!g8{6!NmuI>^#G~!bJX}6nj<5{^BaXzV?WB zO6~5&t~{sMd%Y&~&1&HbC6d0xuyQM>a6p-PJ58S6x_yJQlck@(v#&qyD<)BdzS}+l zkR<=HNjseDIt~>XD(fC^11)7+7?=$u=u?V)Z4|4Ylaj+}i zIQPaPbWobuzu0K_*=har4Q@R}{NawFh1+OEFW{tt?of)4G9QaXb`<|8F`*wn_ z?FFAY@V;;r{NQBxk&VIY!Rua)v@3V8vRk`uqotF5f=rSo$(4wTL@@=@=(6nOdR4+f zMRH|fcJt}BzR?SJE*u|eJ*0A(#^j|2r;EdKvXd%`#T1vx zh%L!Ys?3Zl75XTGtYQKzqA(~M>xj(=sI>xQTZ~L1Yr@y>J|Mgki*C#OVJw$6u3r@i22@p4}=)qN@J z*1cV z4oB?+6jnHLk<#Ho2tF6E725VP*7>4kF0}atsO99j%css?!B)#{vPj_(G!@n#f=m)CLFOuwz|Uj-I_tqnXx|!xZW0M8@y{5Dd5s4P~%> zB$T0X%vdO+HOSCJ20Gd`3ZYI)>y-IpDARf3((%rbV;w_OY|7F8=EJ?fF*K2RprdF| z)dzS)>G;JXC;K5f=>|1ZNU=F};qsZ@t6lxq&t1H6egJ-%+r1-q`!3zPc=-irEbP!) zV`!(0);>dfXJ{YI#hZ7af$O)S!E2fpPS-SO=JG!?gSAiwTxMkCj#gt!pD_8zN+|kM zelPlBw9XxRjLAzQFN|J#@$%?PSFgN6>&oSqAxz?>;h}qj19t{4-o|!l@Gf?H`)-dX zFq*N(82}on`@&17PTy`jGE`fCzO14nub^3#Q7w^`SJbwA|HLWtJtHGu}FA7fK6dXur%@v^ZrMP9%oGaB#FGV5R)&;hiitwblu1amkO}zWr)$52Gynkq^hrcPR3tQ% zNln*V27?SLeKeIvB!e=xP*4U1N)Mbe4`w!JE<$r9s_itO3=A(BI1hs&5&tHqjBY%K zq&`bjlk}7u4DzOsY+Y8yQ!^FwP4lK%s`luMW=)oGNysERcI?T5aWN1 z&K(n@tEpY0#6>DCD9=)Az(=VOYL3uRXbF!jW0MtJs)PzQrPK*5*mH0;gy}BUG%5lN zT1=Rl(jKb7XXzNxlW1;*V-`@6x72tAVb90O*i2n6ALUDM6~R%mfk7RE?nMwzOP`q* z#`Kx#NxC}{W*`i3k(gh@Vc>6KHK+%Z18WZ;2*P*p5`<5rPm2LPqdh-8Nxw>e5H22D z+&liKs|gHJGT6Hb^{0p<=RG(W@x9bx*o81ppM)OZ{J4=tggKv07Bi_aj-h&maX6lY zDPq8X>QV*PRNv+rwDBj{L z-0YpQ&083eSyS8Dms4655*q2~>gVMb84!}->mTRg5#r|`oGgsb$yMg%NYaGSks*G8 z?ry?}n0!fkW}-YdB|R@OGcPf{RFqwtQP7l~Uzd^5n5Akf$UcytU6GYpBv%!P)AL2y z#c73QlJW}a!Sb}ig2b#6QEo%_!DE%pC+dzim(=8@s*=Mbkv@_@M};uFIXU96y_qsD zye>y|!rwc|-y_1;$;;QuA;#7}&Lk$yBwPm8T4H}?&-~Jcd~C)3z-rRFrnBGLGw-jfXZ>Za{@v+} zoAbD@tTK3Kz0vz?_1;*`f9-7c{lN-#hV4f-`XAZqeCMF^xi$MsEApj{-iH>te+%36 zcCu%ytF6b%l^ZM^9V9t9vGI!N2zjulFwiME!d)8eBaaWs5DN>7)2l0T8uI0p2!Bz; z=ZGSdaLR~6uPci6^bi`A&MBE)M($-gdk~JRHisGD=s+M-8snI#M8#g-Pa>N#J1gg<6CPd z+?~gG@hS51RPw?s{yQ_6@6Ok|>Ad$|fAQZh=crXneoWE%K9%#fLiZD?&gW9yACsp1 z5?wE&&%-AE*&l(eVeimy;uO zaxmIyHys&nJUrCUHi#|8bc1c$w*sdOUBN^P<71~TLBFqHI(F_d)X{aBim=g?FVRp2 z4Tc`66DLQ(WsqeHE~D`oUBoBCAcGI31*Z%|Lz#w-{< z{}vBi4>~iJ%V@u{u|-VyavzSH`LE0}|1PHtRmv3E$_XuEr^@esegFQ?Uq=fA`GHRx zBLHEG|qkXbeq38Gx7vP-YS}P9PRy!viXAri!FxvJ=utpqzss zn0N&DgE zj})CL1EKd2*b0O(pp4-H4mw`*7wM73EV7)*(r2UXG!e0MQemY*#x0Yz1l&Q>v}h^A zXoVq;AuA9r!~UnRi^*rvR*Az{#$zqwQ^%w4HBx4nR2DHSNmBy08z6%LkinX(X(J8( zLem^AjsYt{{tI?#_CZ4#dKbt8Z&@q=<)Jc(QIZBj3bJ@t@W#BIL6&OLXXtm09n*kD z1ASOHEqZm&(Hx1$BK*|>*hz@MlEc}}ppL=EX|9b4;xi`fhPj$a>p>b0aMcn9Sbe=$?{oVi2h-6gBVO?9+&1wGAm0Z`7qj)DT*2kt4}tzx7W0lsS087i1U^E+ewrB zYDJ-KZsw}gsJe>Wv(nfsNsKto+dt6KQt0X{af;1!&hE>;{(Qr)XJqfl%ulD=b(e+= zFb zf7gDCy{72Cll>*5|}>)?+bRDPk+q0x~}Hbt9e-dn=?`%1l+ zo}2K_w%ISPpZv}$ogcP6^@Gaq*Asc))`WiTKl^ig{!dNM3t6H+Xx!(Wl!df3su47aIj1tYg2?m98EsQ|CE+=QQbSJKg(^dfzz; zezxbT?F_!OnfPhk&L6}+7aUB3XV2KMd8bWGa;ATPFeETF!cP?IhdxTGq+nG{kTfzx z>hByL%IZAX0aaRVVqAKl zpV-qQD!?l>)V9-W!<(B7|MDz(b0PD+rFtK)obdfz@{f6}TlSmo_2s`knxj@OR|}2Q zNjjgV8GN0p|Gh|09XC-O^|ac1`hAm$AFUR=wV40*V*bYq`CqKl|7HdG!FcjV8ICWG z=Ktedh+6vePZE8#Tu+@b;WHF2$pl{}aK8_q^jXBls%VEmZ}$Xek5p6JL?_1tRZ4bs zQJGY!aES=p;_SZ3$-%_W^_R~-BQL)8{`vlE2$${Zy#ierxN*As65Rs`xwA;0rL8WV zXD(}WMO%xcb;{8G7i~rija`0kff>tU@T%5I^ANk~>b^#6ES;el4UK8WT4{i05E2X= zGnUBE&9lK@XfC4_b~U1cUFZrXu$ZyZG8)u0(Ts-DZ%_tYrsK@$afHrjVr9_y`O!K# zN^u#D+E0SuTpF8PgO8x|jN#>>>^#R&OV!r~&k^Ey5VfOe%T4#>J_YyCqeMrvKTA^OOI;^yK&b zaan=?Jy7QN@iFw%{_ly57Ru11U~I9{*c=%k2CxQN<3S1|Ve>d@G!i~S<3W%~qC@{t z{aGk8-hGX?4%&r!2+jOHXolu8+7{zu>zKxVUt@!2XedMLziFBIcR?9WTr-JiVTI>0 zQ^YTR`|A%seHAElF-&`ksx!)-K!mf=+8Km`L)Z+i08jH&04`h`RJ{u2l;OZBgHk3T znUc;_$|$FdB%7|nRFia5bg7HU;c-%R_^F&l8HOOn&_ORDAOPGp76CnmmJ`D;fo?j5oT#i~n0;^yNRz?6P~kOL5-yX;=HdND zn$A#}gyqK|`v~jVM~iOWOx7}}E#2Z8y`0yxbOBTFx!?=PxZS~=ymErhHXbSC@e?#o znbm|bpGg4`jTgpnu|8SCB1_qfWgO;mE`$MgsmW&vdkvqnRKQ!POYxLdM6gtsg}k7N zT)sqyjc;TxVXWjama+5~>#!H;f~P?A8L-8ey^_yaC15S%GnQ~6=29Mexd6hLEMoEI z5%vN-E>D+h!)N8Oxb95B7G1q%dU%P_Vm5h}LkR=T40ok2XN3;ljuXB|R%#dxZIGcYHe=m4s|aH;les{^TqZyW zF@=rv;g!)v19e_HTQ``iyPZ$gF$9ZQe|i3iQ|58`5r1-@^a}j&!;d|~*A%7Aexl;w z^m^O)LhIN(>$n25=$sAiiR&Fgx7zt^w{&py_Ki(SMWs(L z!NGBlh2=JHA3Lcuv7z=rL(Rd$?A(K;<<-SCh3N%F>A6)!#pO9!(!_}5Fkf+OU~F7i zLVQ$;FdM$y?3b(JN8-%u;w)?99S#KA zr~A35THE+-FtOfj>9A(M?K)#eTmQ&7xk{X+NL3_9#6<-~gn0P**t@zqxVd=;1V_Xs z#0y2?F$umwVW3g5NomNPNf62-W7C4elYD~W;*(`bsUjbz>OBkISg-q!b-I7uWca}v z-McF|Z?9thvSXrJ;i*2A`%7cwFaEQ>F(+zkqP8Mx3v9V+`-y7X8EW(C_cu)bV2#21 zYxp0oIss*>_C4hs|k$^^Sd#{>wILdAae zAy9gJc6M^UG$KnCn~w^nB5}1OJU7l;nh{rixa?eEVu>OoJ;*XF&?+o7NG=SJCitc0 zrj)`L6CWr+7wx1lg}-a8i&apdXM!j`CrehTk`+qDCDBp&K3?$wUczwuBR(5n-Jg2k7M<}jMM)<(LfzLMIAju z?K?wlF$q}ey_MXzm$2SmOx|6?eSIZ)&wBcsrG78otNF4&K`ov0W3rK2GU+G9Qy-`% zeJe5iIKkkn=$W6y?W;=m3l0rV@Cz0@dI-IJW3nV^2MSaPDe)%mzB`=#_jvm`Mg*w8 z{(`*l+PiqX*JiR_7`%S^!U(+!G;`|w2wF9t=%UJzXpBPFBGG=Cv6;S@p$nHD^1^_> zXiJmmF->8{D_=Ty;W{lXouLQXN!mw4qZvRMcw1^RepZD-fO zsqSHXQ}_n8-WhG(5M40@B11zNXz<#YdZN+0G?4*_xj1}_77b+{S-vzD$BZ@6j90#- ztyj`g8+zv2wR_jEKTiweD_8DZzI=Oh^p5ESJ$PqjvC605JV6{N694HO|nM8SU4qg);w5F7xk#GR)XR2>NA5 z<}j1QfB9Pd%l#jG6C5Ter!qkta&;NfdBlK%Fq9R7&qJ&V4{0fglX(DT*jzvv#LS4u zq;y7#l*oldF4hz=3Hf|EiB>RZC?m-*0F+@U2w&3+2~dX0?)@i}VX_o#h$&~y&zOyl z*MKre?d6Cx5C^a${oe;=;+RCv)sya7oUvlQY%NDRg(xQ)D(1obBFLCRRMUBRvltRX zDochu&4OP>m+&SDkPl#6%v$ z6pgOAx{G*>1%!b(n?=N637_!{Va}lh!wW=@F^TvX{$d_?HkUtxN2TE`B6`mNt_jFw zo~~RU%ZvIT>VuXL_96y+CEPhI&NEE*Yz8fiF~gh77R=@Gp5bt3v-xwl7}LA#nM~@O zGY~Gs=eg>!^B4>lw8UnT*@QkuXC7a7z5v32p26Gc^KfRdXkiRdF*h>^nW;f7Y?l5a z0XIhg$Yr=optn(gSD7;j-pF}|t^2HiF`uw!ayhebUwqy(0tf>LGk`Um*@QEL%X~&t zu7zu3!{?;OiPHF+JT6#o+gC2Be|^%i;BomKe{!E#f$zTi;dob{yrd~uR^g9+ z*eT_v;h7fExn|LMn>|yWa|&N&=DK|Qeltf`&-PSM;C8YGo?vHa-}dOE!@+` z+RkCWUx2e*ky=+@RaaM6SXf+F+f-6`01d5`5=BWteo=0EN@7@iq_;#Ek}Qr-l?vq< z(!%1rs+#Kh`o`Lt#;OCgGLbwcJT^EWJTfdcDN!sIr^m*MTwMGtEPeg_Bz`_wv5^g_ ziN{O3%T5VwigBy*G0yU{%<{KaxjH1c zctzQI1?+Zm-eTpjdXM#HGdK6pBw21@US(lcsZyj6#iz!{B*zFPsmkp1?85w_iZb+N z5-XMAv9V#%afzv7)Hg-MCc-NO1%#za6uDBBEYPET|H9j=d3TmD&#YwkFC@+L$+;EG zSNF|$CnxyBo`dfmOM5SD$*U&hZA(dl^F+1Wi?HO$IdkNovQCES2TgkX^EAv-iI%f&6!$0Iz#sm_1#; z){xsv$-QS;cUBADSW5o3MlkHZZvco zW_|57<1^C$dnp}$n<<>BqJX1DED+km~E0XD(D z6qI@KukW0{25$hOV9I8OAPJG6T&3(16QmGCk^)4i6o z9hbBrzBGKH<72c$hUPLj8|tLAqED`cG7q7dvAbhUG&J&fz&plp85+v`9?d*xfuyNm z8moU&n18Kf(q_uQDFZ%&mfh>-xO#XTr+e{leTmSgZ}F;K!ev`goduYIDGZRp(`&ygO~0O zjNG|6e7k?>R^Q-FY$5E97xYW_V4@po(`FgkFEgG~hE9;7%`#&*}@J*RJ2W ze&gq3jFl#|Jk75@u7@1m*k=N7}|?5wx_ig$~@F!iLSoU#-q@b z0k{Dg&pGnAL7DN^fnFtg#m45#{Jy4%#$hy+d5Fu57c>Jj^FIY;7%|Nxypa=?%Ziu$ z?K8Fddv##6(?r=sgKTu6*4I@n)ff$!6qMni8#a)PAzCsKj;4Nz$)TYP3*E2f6H79= z(oB+)!%590G3mPe43eG7&XkcH84FNm4f-p|i2(hH0A(mN!=P%H;4w)<`O-h3%*>3L zL=5UdK^bl;;m{d0FwXp&GGzdISSme!@-tIIC(n+btRrFL0`%oPwA|*Xo+7FR0{K%M zZv(<%@Q4xejZt}|v%`S0y?{gM61J(nPU1vnI$w~^5y+Vw_*UpPNg;$0O$bDISSvoN zn5Kh0Q9-{94+dv1o4x+gBHP)F9UO>kW05Tkg5sL3Ozax&qO)$@8t`<<~E!zp&KeOTf*v=+6$xbd~7Z1XK+QsB9!ZzkIwy`;z`G7lkFK-8r zs>aeG%v26bPB?q1VkpiQrv6qPvV}*s;R2|0J`l#3+0I~~H8nlCmBHN3f~fIEqO+O9 zSiquuMChG_Z_0%*jRojYO9IB$=r1$8edFq{Ps*1bk00?TcS)}RpiJ|zQ?ZH?pOiw6)H14kDJ;_>GS4_7 zd!u{u7WcRfwmvI&o0__~d;0skc>35nx!KsexO;eoh6g1khoz*2#>54B`8xRrc_t>u zW##2&v$k9vc z5hV92I4N(zsN4;QP_vI?`nWh5$@JX4u076pWb1Vx0! zCMSnP#<=_Vd-?^zI};c#5{l&s!eCFQMEgzWt(ILhTUKYiqIt{HiY?PBjOX^*ukMir z9&XL6Y!bC4Y(3^Ov%_nCm-pfeF7waYKGR_{x7BJvy~VtPyBC)4UQoSnZo|H34()lW zao>~%`*}wL)|{(}>FCTlQ{dMbu=2FS%y!!uhwW!{nHhCCEb0&1{G!O|tswhSTT?H4 zn{b)3qPpR9Ma8Mqr2M2vnM#HFvewo;Y56 z0$c`A=5YDRi|tqXk6mpnIIfB|?v0#_R@2X9d$o>KTWhmTTxHF6t?Jgl$AIk+$<%{H&v0CBo{}=`$dKBi3r$XZD;=MM(ef4-s>!!Hd&df zKl_-x^!mHq16P1!fMzi08@T}@gE3|_Xl9g>rnu=`-}UqTH^5L3Ktl^-nxsHuq0HFv zLsd)k!4Q20q}ZJAzXf6NVCFZc%y@K0>zbhtpyPOv%S%%aZ8xRX_EG2|E(5;|-2zG5 zgGtL}9@!5Yr=`0uAy9^fGQcqiLWWMBx%^1MDMLwPmO*E6x_pUlxlKEI=+v7Bfy5^U zVUy898Lb@#gR!m|3I=J6Gbhhq1A;kue(1!xLEso{X{QXTnNZ3EE(5=ewlNcpLi(;f zPeYlZ8!ruCe~E@NgO{JDp$tuAdeQNE@FtCB#%qav;lgN7&t<5$_X>Jr_xE4Bc=0+k zUQ2AcqDtFzN!u}MX!y#=rE8;?ZvePx(G2L!h4AdD3QfBI>&L?4PvVls? zfjfrk0PR2$zo4{~OkJdl8wZfV|0j7ojV3-MS94YAh{$08NZ~pKG9FK%!;m2IR#WH1 z;&WmBp!#`hIK@sDSw|iz_Bz5@Pl<)76qsUG60~r}By}(fmsYYlU?r=mHst*2Oul#m zJB)!880I=Ia}}4$(*=n@axKsXjt8T8PO}SPfL+Zb1Fx=l&>sr$f`v~3QbVSUh>JyL zz$pWt4*kZpI5RS6C{dGZr~zhJIF;7OgR6qs1cIpt$;7w-y z;8h$+7i7`GE-nM-)D~)K55U=Q0c!{s1AMd&(ODv(I&cBo;qrE~sEb*xNz7SF7|(GY zERM!xM4ym4Cw*0$33nr5tzlB1xQXhA#hOW3y*LskI&BdToS#kB2n5RwZd||o#Pa*t z{ER=jQECOy61(y6iGaj($0(IeRM!3wm2FJEO>EKr(9E?i@f+M?HaYsQH?_0(3r-ZJ z#3UtAhLNcF=$N?pr06tBj4~rWHUVZCS2qu5p8)^J*o5GS7#EK~G?|WwPH=MbbaZuz zj1G%U2=(!E@bR^dOYn}B#w99~#XFz|H2tn=Sl&e9~;}1B@*#*KJ?BVb6wr zwzj*iyiDz*_L@X(+Yz*PZye~O^`X~W z;$Lb_e!V8{rQ*=5`N93UL1(f9I~1Y4>ES~K(Kjn%Unz@xr6l-XMd+Qn=oi~FYDXH| zIx~)!1rC-4UayI|TOajSk@xFa{x4Q0d{QI*I3Y04&B;C}D5~_}!9(rGJKC?SWCs%? z#IgigT69WkRBE2Gtful>EEw41|K>tZ3aooPp-q%>vl;EEz3C~3BQe(lOO%(N$kD~q!`(T-zcAHhG|8+dX5Y2YJ-58J4f*Z5<-hH2;LcOo z;m1xWj}8^RoMZ8Za`!t*xXf*NZp3o3ZkRq=hd>F25FT6B`w_ zEj)5xSb|4bQb=&PO_1N3h`>#*Zgv}Xd#&E*wPdH|;%yt%pMOF*Wi+OkVGx-MgIA%` z7lts_nq}a^pd)6wdar@YXz2;H|^-$Fk?W4h@_5dx8p$B6Dnz?BUf+I!b_KsJEPIa=sjro(p_48 z7q9mZ+<-2EB>^e{5A|PzP`h;g0_BuJ`BG2+U0fl3@%Y4_o_Kzr{KP*tEAW3B%4i?L zHI^CLK!G&Y-v`RjwhL`F(^$U@Tr+~idPpa!0n$xwg!F_>(C=sTQ<|ai95LGYiK#8n zBvC6gIjwD4%ArTSkdm@7`7hf^0e@T{kh{!}$li&2Ghzt%M7s^DHlK2B8LdJ@d{{>LyzB(~5ggiwi z;87c8E>xfl0%j+2m|=LZH3XV*pD{mtHLMnB%7lOwj*!E3Vj9T=^Q9zFMhfIaCD)a! zm^m^%0~txnAo5IRo|uT_WD`PIs9Gd0Tgll61`;zk=>*V$3V%^B`FjN{zAh@T(BGO%Md6^L1{RSWgomej z+$80tU{VZ5K&8pxpFAVjKfo?fh%^N+BO+!Fi|sm{ig7{8%tAc&6CGbPhoa~VJB8=~ zAz_Tq)n^edo5j%6pUPn>CsBzr=wQ8@u-7wbah_vwH?VmdIkXsC`K;|a>>aw;Qbv`{ zTx>C^vx39k!PeWrr8&3o`JoC+uW z?VQx)8V*^@CF^)(J^z6)#>{FRltjTz^^Ea!$_C{|*t>M}SLv|Uu^{+^IL~po8@Lb# z)Z}w)_6E*F!X$^{N*v}Y1Qk7j ztaS`}RWYDv@a<6cqP0A-N#oX8Lk#8#sK3>4&0m5a<*8xpW^-4uE?*mZ@-H%v&CmFg z8`VIW?|;CPX-f71Gv9cVfYhxX@q6Hui7B#c#i3!5wz%YORFn@PnZ)a~`&wwzGfM_@0Sg+tDCyy{I2Oo1gH(OVC zdk<$DH)}gjOV+o3u{`HMZlpNIEh^9{Jisj`(jzI}Ta@M{ zmIY@O8i&Q~bqF_hkGBk!T1IA=MPxd~7CMLLnYyId1c}|_WS+@F^C0hC9*%Yq;a*8H z`><3SZ<(!+)YdP}BT5k_%a6&-kIKl1%uohPlI(&a7p!%fyUcsPZFE#>Qej>8fkPFr z?f8cKc!zpPvt`BACCYphLM033X#ufe-VuSmk)hF|Z`TttBvY` zYW3;DpO30OZkN4vLjFc)=0~0BUtBCvUpuHCDOO)9R1fC=bV~eg?}6Tdx~`*{oyXH( z7&>r&wEq4`&9CS3)jgH!R=N6Qp*lx+D!|)6IXNXgqpGm*NKR&zNSG~5P$opB1$##% zh9~98atf9CqPX;M@AzD4X=hUx3@-)JvW(=sguv7whp2d8QC4DcW#4Aahm>1%oVr%6e5hhit4rFH4_=ZYs ztv%gsL&F2oo!p~LtsLTg3fd(fl?J}i6!~LYq`KPcqej0U8Uxk&Zm$)G^|VP(wo6}V ziBcblRX2ov)g1eEUCgKD0Y9po-<8?CDKh=5Xz%OdU9V^Cd%w!*$K%23V`1ui%b!%% zFIL1JI+oX76Zx`y?}wF+YP{6y_f56auX)xVrEGsMY~2e%CJ~_?i+tRkbNAZe8)E9~ zwaw3NRZ4($Vnn2+UC^F=5gYb8ZrZ#3m!CgGrp((QGN-x+wPqQN;grGT*zzS!?a~#k zP39pYLubU$)k$M13=IotJp^U6^Z(5OZOqYnbF?`%S}217QgUf7a|BJhe`~As5S^h( z4c&T4OJuY*ma$NV<}&T)uRzDoU7@%PyehvrW&SLbq0tPTDFd@i+bK$|r-6iU8I-hW z1~`V+SSX_nm!WaY?-P8+E+f5Av=Qm_#p_)|w|YnKQ9^6&;k*4K_Xb8^7`gn?r7JIM z1wccinZAL$y%#Ao1MC9+^2l%>%+qKF`U9Y*HA8_D0npG~rf+BzTxQ_XRhrAt!dMGp zXcqHN{YGJiM()rW9KH>Kzi7FP7RvPWUG3?60p&|Hk?9+tZU^^*t9=4xp8UK&Rx9v- zx_pU#4j)5g{us)P7xb%>Sg#8l18M*qlia8;Y@+r1NrRMT=#L@ASR(WP29%-i==XZa zGNX-{p;w7sLwZT+mDDcm*hwt@Bg>cYWsS}K9h>$0Xefg}gK@abzYEF;5G@>E$BfR_ zPs@M#WA)EpexDc~%GjbmX`_INCs?4EJw}L0HRO1*xcWwV)5$6wJr^W@p!c&b_0TI` zz?MxW5{|h-r&!6UrLukn$#Rk?WrL>#-&VqFW zwO%O#%Io1n*e06X7HBzPz%8LC1qM+EN8G*ve>KG*kX)h=ozZh&}Pb|LYYKh zR6&jp5|*Vz-=A={5Z+?K1!MuQSxA_R2_Mayma;g@*xcnD-U=>+0fZUKRI-+d&|e_J%gT5=+%wZ-RKNO zi|*u28IEuxAX;lstHmJRl;?#z|H0j{fs=j{ZkD=bkd#O1w`?5-<#xfnP9r=Sd`1lP zW#_D8>fjy$!q7E*9fP-qrMHYh#{(laSSva|7&pRwj<8n}ybD)?!Gu`?U9>3=X0kKb zROc+*CQ6@{k&)59Cr+8i>Zkn4&B7^j^wb4OL9Iu8`hGv*ZoibBAqw-De7nTb{egeldg@lAf#KZ=K2KomF!9wEU8ypap6c!`% z3r%zNPBgdiH?i_Ev2wGpceQbKu}2n-pR;F(o2wh@lUza~gA&scq}h_p(#(|1RJSls zx7c7|VP^S>Bh}~6RG#Z9?K)rCI}}x3<08)Y%d1LgIU_rJDXZ^x`K4FO247OOU-B)i zOFMS5d~~4f^7*{pB$Gu(V}sQP?YN$1gs46$Qq z%#w}n3s(hh+~aTTWFM9iq$pB~v&BJiL7|D^sAj5et;?${PRo=d12`Zi!qL~$+TGbL zC;%YF!N|)%_k~4Bt{ez859k@#M%_+F#*#j4cTo5i2hMtxot@>WOs z;Dy@8!-Y*{34K+OFVrUdwJzoFl}T^pN8ZZ~8Z8VSs0bS@kGNMF{8Dw~`;F0GR)>6C z8~ScjPwXk@qUV6C!sv1tR}ZJEkKeHl~tNnQ79^t#$?Llb8;kQP;96yI#?n~ z$_wyLv@-Vz4opoG7fWSjF~WQgw-8VJ@DN{xyKk($lXsL`eu>|`@_@H$gT6Zyc)!N| z<3oP;oBhzDa%Z!?;rA1XYKi3X7*A=Y+HNY>4RZ^5pMl3$MnYr4|SFEmqnI8t4uyf z*!+IT+E;_j;v;=m2L??Ga(^;iy)BM((`) z79wMho$5t74C-PKB7>w76va@YQhtXK^b2W$%R><`+TKapjF^Xto5q7O4>6kma#u@s zexGQgt&pO@seQB&y=7CuT5x=J{qjm{GpbVWU1JMA8iXzrDVA7T^(aFRQ5hCqXX)gm;f-x1K z^IM~<-?zJ>W0>jN*M=^i?7Mnq;70fG?H;&GF5SC$>3P~IL*tms*IuPHdi51x8lahr zL(lgQ-lJItm@5Ot#7pV6lEI&`6 z%#&aC$7==tPY3<}Mr3H4jP_Z5yg-@pf_`aa@DP*%R-oB|7SqtI;g6w=mR!&{hSvY> zPMPtb3_VYynSU|M{I*bIxeS)^k)#I8{-?^9@a3}N8=yy+Wgg-(|8A!YKctRCH}PT% zjU*+n{6qcI_ur)?hx08b*|_MeQV;_<;agI1Dtf4sK}`>3B{3j+M&J&xmgsJ$N?>5C zAr54rf<&d0bQMu4bkftAxiY9iub3TGEyd-GE7)k0D~liy%piaaJ{hEEQ%m#pot-w&S9Aw2qO4gv}B57 z@k8`Us3D2ulOV%c8K#E8n~~(gB>Izy4waz8LSc~sd72n3MC6HPDXcgooJ~y0)RlT< z8IP>s@K-;DHvoA6`e-_ZQ{_wSa30T&i9Xg3WQ8{pVy%&lCL|cU7+{w^1_K1Cn6a^{ zOe;Ryic2iGM2`zlq;UWd;zY<^P11_yElg{|L(H%lA?BL1X+H>K2xq3wrWs>v2k!|% z5D-%F zQV`ybx8Q6zKgKvGK1D0~BX9r)h?v>Kq6Ryd%%z6--Z>6LPoYNz03n6PjOgqXy!6@~ z^^=YTkJpd+<9@ful*ucrg;ORrtI8%qVHK6WCq!uynS}}_v(OCNNToxRc#ntgUJnl! z-!T8+xcFE}N~|Q@Kgz?&$ImwyDY&t5Ng<(8&Tjq|R_=C=AzuC|{~vpQ0UgJct?$F9 znZ#yhW@gKhZ80-5Gh>sQ#LNt~z+%Z_%a$1uhcn?!CY;!gLuM!GZ&x3uqA_G{=FZ%2 z{r>jMyK0>}U405#vwHgRyWj2Nk!)lZtgGj8@UWYKv74c(qnWj%gPWU&pO<%#w}+>T zr?*=`s9$74L}FTkFiRLEjI{B!bx#hh7;1m*=2vgrx_SQkwTW-8ow@N-(Zq$YrcUAT z>56y%-f{ERz+L6IQaN->+4#}5#F0~F@4Y+p;Jb0um z-3@wOcAfCv-{iTc)@4tH|AAwkn>ze=94(D*9I7oVOH=q5ORU%AIczR--q~Qcv(9E~ zh27>t&z;4=x}~A|P5yft19!FuZ0+$}*XFmmIbvT+oPKk6_FzvzZ<<%R+xBX^wXK$` z>ulC{+N?Qiu%gCz0lFY0VkY zxkahvwV6jN6b{4L~?&VVRD{*@+MsIpOYVB(gD=s8$crSj#KcY5Y$ZE48hZVm&$^CJw04bl_Mhq=I1L~M29t5j zqm14mT)Fe|WZTPQos}kYna8X&Pda7rd!JMtGl_dsD3&<9n$645SXGXCh_q-uI~tY-oX_ag`I z4BR#DR^HZq3PirtbK+9p$t!~sFAtx2W%SIe;FJL_15Oz*#eg-2^vhr(qcY394VpOn z7KvtX9n+II1~z^X?AMMe^t*q@3XG+&!Nm?Tn3)rQ!tI{*^&yd;nSe!@ zL|-AI5B55M4C=&>Zyx-Y4LzB_USf(^x$}_^(iUVY6noJ=| zO{e4tkWhpU;9?>X3!n_NVS1KR<_{TwE;oEjX$CUAzBDU%VP@ilzJdFR zByxzg963|%r>T2rPxsK#ana(2u|S+qCM*Ji0iL1zGZ_IaW+0mt#KD3wh~cI&#cdi< zA2b!QQz&Y&Y~;q`Ix`ubY?e2d?ZX4XnC8yJVt8{wbT1AmJfm*S*0i6cZ8}rSY&v49 z+)8m2BvwN*b!rTg?L$@fVevvVSdm)nFg3LhE;WWui)GN`n51AACQ%HR5k8&jGn*N- z0ENz>1}tRTu0_k|Kn5@`m8TV>so|)j?K^9Z&7Ai>eEmhx@ALFc{^DMhw{PE(<(5W? z^P@AWJW>km;{ z$1@~3IW0CO#osr=*2e3gzMY<)vyDxJy+gc#L6GhNPgAoH8@o^-H4ZNR{vlBiNfVV2 zmz0zcmkioq!ZP)3lM8YK+3^|SF5M;^U6^mpZ*50nos|MbI!AAh=X@3-og-i&VT zla8Nj`s5!&cW$3l{(4%eJbvpz<@=wdOq?(K`2B&0-;F764BY*4@YeO_&%RWgz8ckj zs`%p6Fo$L0gR=APbhij>T%5>Y{h zPi&~QkDE(Kpl4*5Lx8_yV1RFIOmK3twYRsSqobvVx2;d0Q(#z7qA*dB3;DVMiJ}-$ zQbuQT4i*}>Y%Cn_u@J*YF?rH8|}3^VCJT0=W@`_>^J2t^!5kW;P-rM*Gc$24+ESI16#5Owkp?_ zz%l*9uYgF5LJ|;sZVS(xYzK zDlCE>D-gR2>gqWUBB{sYQ7PobmB;{DAnS23P5775Do^4VATpr8njQ0BB{H!1v!Kkgt`mpjJWEgd zWu8^mL>g*v01f%rc?nHV`Yxh1x+VfD?yzT+gvSJw8JrFHIWuP15JkymAytJGS_kL)qhJaap|57J*HDN9AWU~PaYu;7MhR^A zjA&py!JUkNTR~#(MmpL6k-Bhg6hbiAKqDrJNL|Qnf%Fz4ECvK)kgA~)(VYuzr4zx% z(a;^7O52O5YiNx1Ox8v=a|4UEmX20YD66S3Nn6LDuBB7f(9miqs-nUGc43lO2eM$` zED)>%mj_QXiGk9%$cX_Bq^PS^6|thuk3w|}&kXLx{DM5tGkzjL6Aji;xZe|T72a6q)L zXSkj z{A%p}4=0uPdvE<*_VK471A{qlzutZ4n-PFA_rD(a>AU(5{*gL(&a0|dI{sS6KW>g) z|7qg-wX3(kJNNa6jpvSs<)m4K$IjjCICYup_QPRLq0x!i5@BI}kRZt}*w5VC(9<~ z_Dy}QPj$KP9ajIzfO~I0dSIjZYpJL5RE4rM_J-}c50;^etEjK7Wxl(b`QAFldpkHE z8cqGoasIcCQ}0`=-!q{Td~n9qP0Tk|GtRG5 zdu5B}m+Q1oZqj+(-{@wbV~@LCWO8(-EU6_k<#?v7T9{nGPt1#rko$Tj#YbnA6dbFq z?5`;w1~t{5tS%YMlpM*EwNw@Km*;esWp}|AR3LB8lOCxl>^o91Ql8Tp?=4G9A-)n%r$i$&U~2IZF}c2eVk_%#Te~QblXE;cWdeMY{2dbA%;Q|0LK7p> z@T0B}$9g-!4V(Eup-*h!lU+k5;1hcA!r!wSNd%_-o>#Uy^73n5^|xs`_Wa+;@D~U-378do1OHiJF^vz7G%Z zK3#|2+KS%VM1ii`A8et&zM1jC9<7h8cIWtd+WCe@ItRvBxrKOn2J!;~_@1tQmUckY z?EOLkDekv1{zdr!z4Y2=N7_z6&#Ky{!KT)+RzL=AC)&DB1AXZ1Bm5@a$Dvy1B|^uq zf=Gr!vKSmai!B?I<9@Me0PA)PWLl)+pEpbW`n z0L@@PgBcAT-~(DZ$3e{%@5z<>rv z&%b~&FTUEJt0(Y(3}wjH$k-r*1wYrHRi;G#$j2cjBnZ%qYtV{s1ZgKUfpij&U_CiG zCFv;WSTVR6>)^tJJvtY-68@~M2^`CW}WF6LH1M+?+a~U8nkDik18RAEZpCtKU zCr`q|2PlI@`em?X=2-#27|J}xW#DfBrwjd|-y>%JQ&5H#T92ZSFk|x7`T4J3Q{KOK zhcAqt>bhu&1=8jd=tRwm#bWZb3B$}3#GJ-K^O#77i`ZQ7kL(BTKm)4?!wuOhm?;V* zN<--ax>Sl1C2Xn~6^WQh8I)`xk_wTb6mg*qwvhclg)$H*gP{x`Q3RB~T)re>`~hVk zFBXzbpobKdsR6c;L`^!dp;QJ@=>t9&4wPgqLNn&m)@UJTEw*^RdK^bRm5M}cPU1|u zbR`PY(G1i=iRx^@G!#NX?o^_tCYiIeVCMGh>DrQ+D0MO0N`nUJEl|;;DqmtDF43xr zuSOJM`KZcmme8Im#!@Qo~uU zMer$gHdR1yHwF>(t0Fj%Vgu1FsyD(?u;Ao1(HsP#%th3Bh&G?tf?$`3+F7jX=5&Bd z+$@-VjA;ZCf{x&D*di)rAqBxtIq3zO>+9pY~m!i}h|Z3$w{2A>my z;f8NZtMJ;F<{t5Jtzy5|ib^G=MVM+4*^eg~bJh#l;mRCDq0Gm3f(E z@E&752c^{J!EJo<8QBY-2Q6l*XslKz8(DehsF=S6bxJrspwZ6f2r%eZ%=;t-RZBt zg4Hg5^IpT5?wH~Xr$qh=UH^q!Lbn-39dz`t4Dhn{4>;gpx82NSx22V-m$#LF&|w#M zeMdJFProfj=6d#SAwqdtX`O$v#Ka@m%q!F;AlfD}@t~_efE!nrI)i05_i>dbQYx9EJkS?l^{jcfaLzO$Nl$798B z?o*Za8cK6IAsdd;oTW5Z`^|NZvQ_k8tVGFo_;#<(JDYj`*rfg5rfKhQo$=i&&5LU^ z|K_T9&CR0O&dd*rl5+URN@XVsGmh{R3R2_qQxl6q10|tBa$#zfOxjdkd8(!9QeD-A zgx?e&S(+s|mMia!3oZoW;0@(J2Ij%8UIH7(IH*c9G7j9Y>#lpi!`(L-I$Fu&E93ohd|V=90wDWm ztjOTU5RL1;l%K*G50W*05l>Nu)0956uQRrMbE)9=V4Bi=?yc3#n`^XxSf=sC8l8VE zXMMX7-Q0n`H)7xR)KW(3D3jD5rg86Os67x&`yo>8fpFvPqcNY3m*36xQ|jy7+C=$w z6aDLrj1SjSzgy4vWCQcsZk?Of2kL?YL*f#%BH|1E!n2|yq}hq$oS5i@prDZ8X#b=* z>o9*k2lHDG?x52b-Y>7|%`IxlFKH{S>aK1WfZf`rq2~5eEgcgO!g8$pe0%pLm9Bs= zi^0|yvJ(&vI++Y*$YP>rL78WjFLjMxda61{E9O*vY z)HMO+OGn$!f|@(dVYPGud?7@RTe~jcT{!H>G4Rx!INCl&3U)D5OceVl0F@pB?YIkAM+xdsYlCdnri5=)3wD?iwiS6XQ4pk=AOxjbz=I?Us5#IS*qGvub|?PUHWG5v(SjcfI%!* zp&XcpEsXK*DhgW8K+9E25uL5o2#CT&a2Iqb;=r}RF#tpsAfPah-UUm+!Q`5-4y^gR z+XW0SAaK5b&~hHU5qvFE4iE+?q8iIs1Fd2b$FD`yja148BE6W{g)PzW8>~0r!BO2W zVd{ZPqQE4BfHf5Qd?H|&MxkmhU@&AfB81474Ne(odPSdu7>k(*2ozi`ECtME38E}T zRERoWMhpn71C#JT)^oW_)H%yp_+DU4)Stzwa-%&EWGchWG8QmDc;}tx>Wl2f&Axa7 z0A*f&S}7>Vs8~_YZ+o{;CD#R&CVtSn)Re4r$d!f zTzq1DVjN$Tl%H3elbfGcRG43upHrThStg4~3$ye#c2DrG=xuoI`X}$*{^9EN@6LUB z^Xyl*N=9E!ZRpQCKHmNMYiGWE|Kj(bT)cB_@a8vF@4cHeGFI~DYkl8+KK9d>CvJXy z`n#Wc-@jfk_`0m_Oj+M+qkp@8^_yF-T>tLf+uyx>?Smudx}!_8?Gpsc5BSg99J*?6 zz>0lF8x0NudD&uaw&w7mwFZXUt*p0M*sMNiv{KJtlZoZx?YcWm?ZVTt6jjYW@zOmO zZd(lOHyyHFYv#OM-+Zr)rL|3w!HS!^*-Cx2J0?2cTTNG*s4MrO`_|gO7I-O-7vIYW z`@nG3rDeRctF&KUGwsc_I`6L2_}dQccZ}!!-ErAhu2UY^@g5kWyCyWHorcnkt2AQY zvYYXsRdQ>nL>XoA-Wt}#a^@>5HP0^A99^h(VTsn*QjN>D``@)T%08rT=Cq*hk+q zNY}vkut|`aWyHSy?z{K695nWX{!`IjG9Q~{TNBS9=O~5aaK7%HXq|7uS>MO8?xd*S z5^F1C>B>;nmxa5&yj1x0pj2r*|JriywIx%&o~8EQk}2=Zp?$c4^7U5ASBDrkTzPlG z)$S*;?uu!*GZ=T}GnFwMW%9DyRepc(&Au&jRqoUHWj(sHk#%0DE(YebXRo3`voi#$Kc=LWUMTiY%=*b`Ja?8 z{Z%M4nbb_CGnmMb!bGO0_betde-34y1!5-8L(ngoDTB+G{yiuIl~B0*60}|dE`x)9 z8@ne+9P`-VF<1k;O>L(eTPHA%IdW_i1Ow79gAFp6$V}Feo)Zn7BMt3CO`RjHJ>wmH z5JLkMPp8^C#(>L!Uj{%7_+>ya0PoDP&Xb_Fj`7y^6D`Nan%hQ?wvHTW8HO$F!aR8Z z?7}3OWi#2NgC{YzBNKmc$_!a+24n~07_!+m-ksdqiNGsk7qK8R1`8K1J*y=)jwmL) zHjm1nUV;1?2(ozrWnO%>KUYuS|2XKE4ELQ(WS#|O0Kxn@lzEcBJQd1JO@0I*p7hI* z;l7iJ%yS53;1NA(mcdZwsayu2%u~6{vjTws1j_tVvdr&AO#dmT42ms7N!2J^gu+u^ z{`^07hA%lQ23L!F=AWgx)hB7>n4mFhxB}j0)fUJKdKi zK^bZi(eQ``g-1*tI+G4R`x6nZfJRripyEA9s*TcTQ}UP4)8_D^ zR&OqhhD>4}AMMKEsplZ=Bt*|d%d<2zp)n9(8Zh!;Y?P)Bs}U`+vsK|TRKPM^wP|#k zbSf1Jj@%IIFk&wMCoz^GEb1~Ah_aN47J=`BLTE7^X6Vy+2wqyqCUD6HMB{2vrZ7-C zV(^&^E5w8*O+Ya~ixCCT0~`YulKFJX0tR&<6AQ+~?mR?a$YRdnvga@euL`uUUOt5e z=m;8sConm3n)YE9VRTVzyQw>?XPFs3^>ALlme{r)=zI5)T zH%`3#LC?kaWDP^9)%`K0ZEk`BlVG7~Kx%}%R9e*#o+k2)3r&;D1cFpyQj#<|NgNlK z8XcJ?OwP|wKU!T^Sx_40AAWF;(V=~oPPW0W_L0`6f%dkcK3?%jiRlVOfk-Tihzf^J z*pV^8a#@y8BuxXlKiD6=BzJC4Z@804TL$Xi>oI=Vj;@(&{8Z@k+i3Oe?AX5>_osNU$@GHa{F@X&U9`B=GW(8rnzgI^?xwuk)7O zjz;F8&TgqDrXdFp`R>tkG(PBVwcqd1W*6Pc)G?eX%a5m0Hv5bRbppQvd)394=x2i3Nnss}*R4NL*Z!iDz!OIXMHF2ZhG-&qi0 zCxJlR0SJ7#2yLW6eZv=iZ>N2EU<_(o;Fmd(X#y2A(9{Wb2Twq?3j~o|hDn$i8omk| z9C{gqT_=R`1WJMWzy)&|CWl8}85w;QwlIcy{6?^TbRCD9oilh@I4KP93|43VX)L%} zxaN-Imr3DU!1qPIO5R%6z^k3dUuo}q`B?8uq+l1o3gDG?$l`@QO;DgT{1R4g{~1u< z@w5E{=Z+7a9{}Vrd=WGR-~+5E5Q203Y){|muAWn!-6uP`#*egL1T`JI0BUSI4{B&V z2dX`Ky1wNsOdjpH1cGDWC75Y!83R~$^w>%8F=4?N^hbNC&eN@(r^#2bF$Zd+y4-N5x-*7jP3R5O{MyKz}d{!gWkI;0Ek1xP%Jkv26zg;nN_)IC$+Bd!FHVioh^+-_#?^te;_E@$2@Rxl z5~1#y5D@DsyNZ}RiRPZ&S#M^7Gq3cu(6!lyI&^TMAX{xtC?OIl_g8^E6g{@cKR zC*+^azw`MZgd4DqFgJWd`dtSQ56+iM-Q(>p;aib1SRG%5{oz~IqzKmMR{M@ zR9=cU)3i5g&>?38oCs5a#LPv|QJD$(wU7@>K^kfZtTWJ|*+zXzgf`d~Se~4ST#6)} zl`ci;F-TU-OqS1LDNrgjV@jaqCZO~bWSk92F$m=$He~mvYS8(JAz~r{7YUd&IpRo> z8XryLYwlC5RfoXcWESGHIASgX*b2NW6B24*KqVSr3lUv_7^xHnpUvc}(IgZGl%+_a z)P+tJu~=zb4xd4fCrl-5NbnUf;DR5*5j&BAJeQ;v?RnPSc<+Vbc^$U;%VTq-BCQ8)>SR(iGli1_%bQ3zN{bnrvbX zZLLAD%iYK!EHe-m1C|ijLbwc*0Wm&Q@b5?|gi{9cUm%YLtSAuK3x1Q0Y}!ghUj?v+ z3Sz9Lz!+vg2)bggrVw>Wa2Sy(!-KeDCJ?nb(0Yjml!x%4Ky&LIEI2P($D(codkY~N zw8x$#2AElX7jqL0#M(>;(f6?d&2Z>wrsYh+-{g`|krtWq?43R{;!TZGgWA?|8KS%bKn z5O)>y>LvgaY?*6mAaa-J&%GAW7E_6PSKTsq5%Fisk*X2yCws(!hq(svmT+Fa@bYu> zCHCS*UpxWg3EaE?uzTRt%O769^wEzwEhm#pyL@B~j)?_&?lHQ~0j@Dg$=TU{@sa*< z;aNG^!eoIwMO-G&E|oy-3_nYhnk`9gEGwwY&y5d_wKs9GxA5|EBJyRtA$`UzQJP#> zl3iDnQ{Db4dqT^$d5)y>5!px-jv|uNHQ%^-;-azfu8=t;^ z``#;`|M1EuKfm|&FUxx&aQUqt|MvCmzx{Ci?c4vD`1*Y9trFjfv*h4r)qMbl--qbkbCo zx+_mrD@*yGnr=C{O#AfenHM+AePzS!S2j<7W#`n_4QGB}JO49}nM!NU&rTW-T{M;U zYWGceKj`zW*(|!>n*aS^gEGYV!*z4d&r`p!Wa_2m(=Ke9_x8rQFYjCNW}w}tJ`PO> z_aC-2+3IX%YN_k2x8BS`*Td2%_@G|E-u;0G^r8>$kK4aJ^3eW}1G@m=Kp(#Y_HOsH zFo<`y76-WHB}X>K1XYCxW($*Q1c{ZAAsJC&^0;V4NMMSabC@us+S^iOsUKx+6mMmc zU}_R)Z6|Q^PB*qs-DeoOai`ms9WF*jA#P5|?hc9eW}*6eUgrB5MUH|iR3lpOBlgC zN@h`o=Hfyms62u#jNt&xYl!F;cvZFFlTZeC@&@4u6_U}AEC~j{k^sascbz@jc?NW( z<8)Iya0f!L3-j4IG2H z42Wbd7|lEeWndR3NpM5#ww}OH2I|Xji5Un6&w?@-sX(+a2xAnCX7Cm>n#q_3@8Xw8 zn)ByS1`rIen1;^r`i>KI?PFMtT_-`9(Ezn+=|77Z4K9x&lYq#CW*Fc+AX1MCsRkhj z=ZvZ~`&l3|$44(%R{H3=hWqaQZeuopKQZmF5@~B%>>9(M~ zh!>=ef~m+EAunk01IaIR6a;;Upa&B$6bjLH8cKvz`4}q%$>5CbD>5_%%!GJMN%EjK|S`7~ZS4=Jd~l19Yn5^=n$LL|sE z0l@%vVG`%(P45kf>0F%90eXcJQjF{(6|~>Y*#a21p>+d zxPfTiKT>{GFajoV^zV8)k=F~sw=fBuVjYdOT8)UknXgVy&xL9bm?i3`W5Cun8s{Yms5Cy7};PPM*cneNJhQ;9#?V^ClT{xJw z3wnhyiDOhZLim6f2%0nzImC{LyOqeD;jQGJnK=F8|HeEgU*a!r6F&ifGL5Z0{b%3k zzw|*$@iB;%F%MUm1c`Us2ko?UcMOe5$;k;9q(qC8%gT!ibF)gaGAlDPt1>bwv*h`5 zK0h`jU6`07NfXBLApqFVHOkX5%+)Ty%Q-kDT$q!VUzlEyB~#>P$fV-L06#}_i~V*U zL5_Z5K2gzuNimUW@u`LUsPu3Pe`C84TTzL0@WR=ND{uA=U+F%6WoYCLnXD!}OqeFf zX{b0d+v&`quUod3IS-)8Of`6BkYnj-4DDywp^8CM~%wA-FDE(%05> zeqiv*(CITHmruaIt!Fh!ypjWK!h;s;nrm+~Uu76<P|sQd&=ckl~^1t$2`;^5Ma4r{+u@Uo`vdvISR`&AYr}*5wT| zU)G)Xw&~)(yUh5-oc+C%#(noGzd7pMH`DlDm;0&N+?&nWH+rj;0ru~&n{#22)~idW zzA}$@Za(LwCF(D2nDK_I!KXg9{Z@v4KF%&7?h&5miN4OMLH;stKe?r2s-ab)m9xy% zGvD2_$kst>ZY4NyFv`d@$=WW>!#gi5vc}CbC)B?*I#*{Vf?iOyek%7^P6Sd+Y9L5E~0+1ihX_0`Yd0+;MAxpfv_efsVF=+ zPZVA+jjQ(wjy>RRyuf(N9Mdf;47UD!>n1vR<k_EB^WxDCFw2~4Y&+Y~dInV2JOQe2ISn%~4?5C*o>1F3DGX)67ef*m7{KmirwmwH zNReCy+g?Zu3??;LK(lNCsMWgBBbiSP6)%h$y^W9y(eKG#&g{xX8^$fhyfe}0zlJu z;ylcpICtUU3n=sAOa8fe0{=ZIgNY2b$>5IHf8vzEMCLJ@3^vF-X_Fy30jXRYPugU# z%i}Sd%)jB3d6LLH%d3Lt|Eo3`Sp3h=j{P$KWS052pv+@tnaO^c$z~biv8$RfJqBg) zCxtCDlg%>lvHl5^!G9Pel)-+P{}hx_4{t{iW%RH@6vTh`$KRB{{i;Y$q#1LGB$Ny$ zQgDzplq^9_4*bA{L>3N@0<}yG2>NAcARXr!n*M5BJH+u;XT|a6#HwoviM$wYIATUk zr=-jRx63Laii$@ua!oBEM1(NZfS5pH3;aSBA)1Vd(xxHt6pCCOLV2N*NL|jICS}tg zOeBN&K~9w*8qom?Q533l7%>9(1dMU3Yy#G#AX*w7oHF2-0ZKwFl8vZPLj=d9BbJEH zlCxkPH3^rymq$eKLg0%j;zl!Rz+%D>iXbkAF5{{5r_+;`Fojc@LM@JXE>}KNHyHPBvI(z=B<{ z8i$w0WQ23kK7uK5mT3?@m7wbotgwYmz!%U424y1?3&wz8=o{5&8#%1CG|df6qUX_i zHgA>{N}A-%u#ir!pLS9%y7|4CIZuq3Nvw* zL52>E;zMCcImk{0s-To?CGFDH^S{3M*QMv?d;Gb1&yu= znI-{zyGWUdU#y;^540#s%E}5!P6$qlEiTC^DM&BM5M}XW3&jbIrI{54(&SiwVPdo_ zl`l<}2xDc*;qp+=L?4H+0GEi2BuSApD@!O&ONh%5B`L%)!G6|ehFfgi16+e50u!NK zPij(LnxtA0krizcXl&>p{ni^}% zs&e>g;TEyp2BE$S4K1ecwO(f8x79gJ&o^wJr`H~bz*aq>V(u~%x&L668) zhwPUfu-#$&6o2=Kdh@zSmOzlPKjqy1HJi^NNe~68TxlogMi;ep$Yu`Hub>w%!>o0R?`c<$=MK0YR1i z!Icg!nU)SRYbTj!P;p3Xjh(x~(nM@{Fu~qhYHyRacUQn+{ct~@ENJg-V3f2^H&Wjq z-pMV~H>AYbC)?6VWacEa@sc|QWV!@rIr+<-eADc`_*O3Q#CqhCh)$i+V<-y$*n%2Qg7DJ^LY<+G``hV z|7Movx3f6kte{=rLc4CMem6wtwyh4F;RD4;ZH!B zrARr4^YvWLCri|B&S!o$pYic>-WNMIiai57`NZb83)fQB9dIeE=U-Gcwhi11LtA4 z2hw3xyQE+S^dydXtbG!6P{L>iLm5~K)(4R%f(40n0LKhp!e_z9zyTnl(n=-lkpU>v z&~_4V3^^p-EGO&d)%!6eHd@+-4GQenn$aM5yom>ipi3|o(z*#^~a+$|EcH@*> z5Eza?;5-7h1&|9+7XYt@wu$;yfJB5~3^OGEIs%Xdn21U+Ztk3bX4^!5Fz^(WT7a+s zLjhBaO4uVa*(rk&3_0_t3h8$)Gnv9XMr7bElc5YoJWXBa8avN6beyR>Hi0YMpz5vi z=ooB4xbO|;q4o_90O5;l1BXt}S-5NvPVm8v!$G)N6&4YY+&=+Lqq>KPe%`$!7hnrx zNGt}ClYOHX;U)ZP*YKI{k+Xd#F7%IsYvy9_*m>CP96CLE=G+UX%!@Dh=jRFhm&%tW z6B!c9K(W%Zew>py1{W?piDRHr1`q&lbWK8;$%RWKj(Lp8OiMWmdX{tKS>28>;2;Z^ zNG9?u__9FM`d`(v&P!g{WG+M0F{QRVRnK}3_$fVE#5B2-X)>4j}-a-n~a}KiMz=2R71JmfBCJJD&Ly)$w z%H7~ZL77aH13ZOA_*~L>C=F~TL?SP=SVA#i1K}Y7SWc!R#WW=0LA?@9#brQjF$1^^ zw!;v|g9Amup+cQesy5 z5fciaC;}QijROW8npBMe4j23B;FqC9P}tG)xJippEEUDi(a8wVk=SWvE+(R9z@ie5 zG{rM@B=dQ2CE(&oLbHY3X%clRl*WkIV7lQXtE+8V0Ch%eBC-Wh0#)S5jE3}RP*sF0 zjM(ewAY5Jqlhox@`bs*8wt_}kMghT?wT4AJSR%QW4t;_cE1`e24voszNn)#qPNVIl z^A@Qw=5iqjhKkw8RyJc5jlL3=qQZc+h5>>BZ3P9bgm%<4IG6f5I+4q}o~yQ62cQfc zG3cI%6|Jg-g0di}R03MD0WsE7LCg&_Qml=15Yz{OXse*RHU$I&5K%O=5<+blOrSjQ zcA#t_s_xnwpd&SdwT{l+$Wq_JRol#gG0eai7N@VH0B@qMc_gCRh`={0cMrI7*1)wv zqbUTY8!Df{v*2j$(csPJX)o5|t>Xe`p>5$%*Qm2rbLcCW%vEgOdUX&CU>7EV%kVaE zc+0rF)oeQS!`?uhwtNZ;Vv-LaT0EU*j~Ea$yb)@k7-wD{f2f3iV0!VN7f;}Mc>(}s zk|kNCN4nciT#3)AvIebQNr+8X?%P_ zkbi))ZDeqKbVOoGvQUwgnOmMGFO~$Q_!+w&vU4#L$ppu`dONzt>Y*!6MOR5#hqrH% z^+6jy8;{Jm-s*~>)}!qWb=h)xXlQ(TMsD-bV{I)RO;xQ8C7n6^hF~X&?ZKEp z7r88@rX;_mrmFQwYg=VQg;0^~m>6Oc6TaQvWrL;LcKg6>Ha=UdT~`~LZ?W*+YUu;~ zWt)}nL62zAW^=Elx;BgUT5qxN1wIv)UgMQiu*WuZ#Xft`;=``<_uB2U^VBoV*uC;(@w0K zesb@^mrPf`<+kLZ5%+6D<~3vbbyLo_#+v^)Jmnq7HD9!5{|HdV+w9#HI+qryy}NeC zXRCDnzJBVrOEs=+oORXB=#voV33qF$w_Sw0MWlm%tll<> zu)2hxYDr9Qp7^9RsXsofF)XMmIk815>kSDj-Mq}RygY0m~*eO@UR_wfWIqUwAOsO~L z+AQWxb=H^K+#3sZZZ6iizK(r;C+mit*4^-F%4GHXa_+qx?ww59%?zDil6lJ1#rJB1 z{yx!oT@m!lM(*tuw1BF}Xk_FXk(Xl0=n4 zX;-SOCzN02l`M9a#Do=!g=LC+$~)-9mCqF=-I9X#oT`EJ(w^Mv!MvIw*k)Dq!%Tkd zFsY)3v680o%7!t3GMLK%l&L*>3VS*xgA9NjU_yDMp3|+pXK>ccWI^c6fR>)q&D|46yH5RaVcp>IAqtm(ynrdD zuH^&>&E z792o^@{o`S*H6J^V8NBZF2EzWS`|ei$Osn3A{c>@Ru|IM@}w6A7bRhlz=br(;C22b zlzHsz4ejT!>W`fT)wP`g)wZ6-f_gVlb@QpJqbH&K4OHGV1gbnbQq??K(|V$|ZM^Q- z$@=zFOLJ-?ddMP(deu6tj%3ir2%2rP0h&M&5M4Z<&R@)s z&LkWqfK-6F$fi={GiYg3kVpdw)u}=?nh>g-m>OaYrkI5!KwBta;h|>m7&1+!SeqwW z%@!@Aq)tc4Y6!Apq*G|}Sv1KUSRZm{I0`lp93G#|-9_fcQBDJQWqeN6e{wkAa6GEXP{6DB*<{Z+c}~&D1nB85eiy7MX+UI-kfxB-_b;hG(6je$v3u@WJ$ zB4N)6jETq?)fOgIsWC(}FAZ@4JcUxBLI+wD5v`GcVn7uS9KT1!yl_brF5AJU!@DXM z2?d{vFr?6kj|MTQL3Aegm5eE94+Gpck6wkt$Qq@|l}fNUS!snY9-k3Xc-L`=^`LSq zg~|l~5wvrHE5`@m+ACNSzn5GY-!B$EqpBx2WhSRnO%9r5U7OHwn z!6Ntp;vz3{7e7zDi&qBBq$+NLF%5!{0UGKdP6CGtP8n5;E6!%-oA1B;tMb?9{`>94 z19*;}z}@@zL*rBP>za=YPDCjR&HSP){iFPoWxnwuu*pOSB!!KQvZ5k+VPQ>0ZfSm6 zfjl;Y?As-Ba*0~ZFz-#FX<%Bh0xrsTZBvi6RFi4H@-gaDkPmcp#hprjWZy2+$8ESoEG~+GTjh{3r zzUwVj23UT)YU;}i*l(}Y{&=tNExKp*CWr3$bdaOfPY5c&Ew3DrAgExsH!BBX4d{`(iou+EVq0OVsbI)>JNKDVNY5 ztYSUfxwgQ=J0w+@FG$OR{$5f1tOWVdI7NG?s3Js=os^NDU6@-|mZ$vnM>KTtAL4>` zL2he$d7q@HGZSnw)q@}y7aY8o#E_|kN$=EwxZ(AG7df!tXT3_wu$1MU)B z2ZS*PcA#KzK>A7^t8yY^Wyu_qj$Yszgn+-00vyxc1F+-K{A6(R*n(s{%H&iO9IEm= z$N<*~RO0**B7?6JE*_u^cE{jw8GH-a6NEX`WE2I?Ae?tgI)fgCvvi+5)_oRVEk;O~ zEAHFb<1={yO7G2kRpPtAxSiOl2_n8&J<$oLq1os;X8 zCMU~GE>inu#=^jEM~hhM_~7&PF^MQ4WN(X*$!;3?gsF zg^dCz8hVIftwnXxW|%Q&T4|&0Gt?5d%n9EBhoJ4$g=y1QXY!UOvzT%^6KpbZ+9*~H z0)2s=&}Hh3^w~(Uh@QHD9yN!Pyh1~^T}PoiJ^iq@M1QJqtF~mTM#d)1g00#GJ2Vwr zx$)~5K`S)*Yk1-n&@2fFwUJ1NDV)tsTELE62<1y$ks42~L4?J|GSF&>QK8czpV$kr zQYg$cfIA$5q(B7|ICPSV0d9kXuRZ& z?D*xHLguXW>6$qjoKz}QV9~{Nf+$H@6mZH2p=N0YqOmjpQE(6i%rzN^<3&|>L<|QO z)s{}PW3Ze!AQ-?dOtM`m95*W0od#Q$3j)DF&6B}#)?s_8sXJ>jZ5a$>1dsxj$*^X?E69)ui zh8+V=LA9H%wr2*ku`YE``cOY6wL!k(5Umlpy*?A5jleDFA4oGrKdJVWR;9g4fs}h9eb3 z?!tg>!=xKC85RuU8cYyvAC>TU?Sg7Dx~8| zedNv}(Ha$+s6j zx;AwAqtfQ_@PZaa$EmhgK0fjJcW1AEfBuK>2R{9%gsY2JW!+T&8Ef^nlso{U!_d8m&5Py-eR~y_w@Kd+)uDK0C}^wwu@= za`3SajCS`;ws8!1bN8`1EHGO5y5$U|ndT2Byq|2;f3f0zWx;&gM*VVw|Lu!q%0l0- z&F8L$&L>$v0FHBOn$eaU0>yGFBq+{^yPkaq|AE}3imY^3$6{?u0; z*1l6KxY1Lh46*%ep zK*~TjzpqPryiM9u99Jv!$?)+OJJ^ICI^eo#tL=`1w%(rc3fJN6J>NuYeip-qSed)A zlxxwHPyEp`SMQy_FvE)duyyuVj3)h<0}&?e;2`av37D zo}t{ky3EfjG9$fIB9_O*MEOO=ddA6}Vlo}WMBWjJVo`ckW?_9+rt+t6A3+&@PK&&> z2k4BVtQT-hMnyje&`e(42tXOU1t?Q;^i)OtiOL4>$bdUW#bS<3z;1cnSY_i#^^vjK zW~c)qDsFHAPF)L_AjTn51Y$=Ze5ASeEEWzTfrJrq2F5s=1XtgHCfB(@smoC)jQYJ) z2baA(s@CZ{*P;@+6dvFN6TB=0nt)(&BHZM67YqOwpfET@rm}Ge2BZMcU`7M51``?Z z2UXOMVqvck31!IgpGO^ze!qBJo&$wB&v5nwrwf9CAre^CA)9EDJqgNyqX(OM zK$ykAfSklmAN<@V3uf@+#Uk$-&p(#$OGd^#%PBJ%>tO8i7=@V(Xb32C>>{YK{SpWU zb*<-XTh3JaWuB|=^5^+x|9ep8u^gE{`B@Gx{Yj%G{DU9+GBA;W&el(Dv_u+YpbTd+k@>fw z%;dZnT%GhRIP(85C^Px0CUcp856V2oWypw`CtETR9|5Lglc3C#DKq59`sbhiWU~xL zGyf?lLkq7*amCEoA{3GK(a%cd{olmN(bWB1rsGt09E%gIrFD>p*x*3e4}FCRLj+|0 z(h!S5uo)_p1VQIxHC2QP@R{U!8etlQg9A!$_8{s3m2F`kgtkm$#cB~yW-4MusUmp8 z5d#W>VC<;+Y3<8E5WgZoG>Cvn)Igp@@(XM!$(nSbHdm}eOI1f3C znoA`08iIQT=IJPfcso%N6+uTX48oZr0)q@N8Z9DyHiQl>oS94=22~xUOy{MlGg26= zyqPFn6AUsa5b;E_Dbiht&w~mVX2@cS&pZ?gEuz$z;w?ntFT@55r*fq0X>nVT_cUlQ z#7IQy8EOD!PzDR7(I^r~CT25Y5G@%xJOMtTases;zyhFC+NB;s6o|sr1E8P^35LfA5yf0pq%l};Y+xP&ZW*u$6W$9s zxOyyr4umHKydjVgvzJ2IuX-Z{>+XZYD3l$DgAdq6VQ%9Pea+$X0#}OyQS9jGkQ&ls zGq*E&y4u8Qq`;y=3Say_DzP$Pj=dD(j5`s-SW9i&6!^n{oM5V$!Hr|`%+$CBI#gXc z97#LCU>)Kx^jY|g%!6#IK7*o12cZKr5DZ|3c96;3i_~^cSJT%aS{V&#SA8 z6bPLIgM6Z5<0Nv|fDk9&KuJ;}KRQ&J5RfkpEtEwUXA28+bD+PqAeA2<1useDF$HOX zIdcD;{NSR3!2CSlyiAWwk%LfRpCWKdNp?t(c#0|$N>1lAjb>E0iE^8y*)0V{MY6Oo ze|I|@gFr!4^LYQeKYaJW-G^`A{^j!bcP{>PyXp1UrJcQ5{r$afzy9)#&o5p7__cf2 zF5SLX|JEgWf7j7hub%tv#>+q4xqR*CE8pH3edmkvfwRf2LxmGp`~Gq5?2q>^-u>mu z!(WEK{ifojEAsk=AR&LJ(cw+|cI`TRc+&yHZAOkeEqvFTS{wO?8u$k9uyX-zG`C%T z(0GlJ#o~h|%MKYYIbg7O&w(`u4G%fGdPK#93B`f&LYKfO&k#R*i!`H^ZyC*08fe`& zpQ1F@P?~FBH`RE@Lgz|#;N6p@$_$_Hj2C>kl5%yu+S{9T{DvR?g0Q`)WGVr7u!ClCp|RQ-*WILlDyEa+UQe_p=TO=Pxr>W zH7fj|EBR_o%y?dCM{Zn4p|~q0w8Y#Y@SvIdAv4c|rXIWW?DS1MLt@hN$~xkFx}#lN z{EUiXZ7S>IPV@-QcE*nmrB0mTpFEK|(x24dp3>bc?5gIs$is>wodu2#@n$AIdw1Eb z-ej>!&&u61F5P3S;J|kg>enI|cjFn#1lpY>)^}l)_ruj*t~l`7OF8#XH%_*=4ewB2p%xYope ztD%LNwOwMIs6MOsNM_b=x4uDRFMS~^=@#W51E)+{VFzq6k%2*0)c}}fa%+b{z-0;> zPZS?HSy(YxQaw^$2b|($1^mpe9V@CF$}c-!RMl5nI{;_~Kn#un#)6zz;4(Ppbuu_0 z!(T~81Bb!EI4T7TKn!Lvp!$~4#W-Jz_Jb-K27%EKT&4v)LEsDmf6yb>3=BXx>=q*r(uo6; z_-gS*l3WJR%w#Boi405<)aLkE5LuXmYjZ$Qv(wUZ3g+>vFaw1=M>!WUW0^8!zVGCl!f8QI6~-|nkpT)**)#zN2DTu;F__4ZPzD#rL1kQa z<#8yH%Y?tTvRpHh8z&`L$oDOuEe0x*@y*Z z8G_F2K$_v|Ku@TiOj?*GqktAJQP)VPBMA*cSQ!4Q{>>sZKM(OTpjJp51=4i@D}Vtf z13}_1BbJ8T35LRnRD&PPGyxL{IojD)+`x^1ZxgW6z+8 z7HOtVLs4*H8j#LQi$dyAG`%A}W+h3Bh!u#mrdBkSte0 zA4HAQnVO-_5Yt)E`zeD#lw66aD4j`*B;EzM1D=u^7>b~kcp4jJ(2+e49u##39ZjQB zrqdX+Ss)m|E-|Tth-jXv6k-egl|WM|#H&#MH51Y1&5(DKk_NKg8P+eKvzRmqndPBW7kZ(M&2#GH0qnf#z~}v!?*w(S#zj zFvLw&u`?)!nol&=qRl|?E)Z=NofNDF!q-WiMx{-s!S>O);BR0a!QjA##0Gem<2p zpo|Ev8D0Wu6K^3722`bqC~%u_4e(@O1`Eb8Go3=bWjb6fg1$H3zfdOy=UR;3ef`xJIls^IH~VvV@An@*%q^>s78j@H=0~K-vuYdjYHHH*^8@1I zJi@}kS|ZNQ_Y8>uC{vo1mo4UJrbgrngNx*G)kT@51tlU;c4TCTSm+R)?JtyjCP=*!N}|(yBxT35s_I2qxe5Hz%*>+vjEJ}( zYiB5&3TW=@di(RQ{`Tz;SHJ$@%xB-8`}RijE3XuFj+Xa~o_zi7zkT!7YhQfw?hiL! z|NdIrOIP><9hI-YG#7r@v=3>*d0byMyIQX}~R$HP@Fg-(IQt!P=Q0Eua3zVy%m-rk&Sa`i9Nc zPt6x959&OyoTjwYRvNPJ?qhzuPxFf1y0^Qsl>H@2Uz3kkYoA}Hd3EEQ*VoUuw0YJm z%V)G~THNSrc|1P2FE+5!&mr0Nu!pOeXN<2n&^g81UJ&J3oDtbqop8QB`sMoID_x22 z4oN@hOna*)<$PvzS9)@1N$#**+7^*i>=T+{?UHEW7-#3sck@?7C0At?4}|!22e>sm z807kz6%|DfwF=L+CXDn6CPq?5M}(ut#UowP!DdB&h2&UTY+1OU)W$l>@UZ)~ZI+AH z8m-uEWbYUzc08W7`|AjRDHJ7w=9&XmSv03f1D&26{FczCrD*g zj^$R5A0g+`XjSvvqb*`cFY&~Se zPCB3l%7vg%s9~%UJSp{~Fov1BqoJJ-^Av90^^G3ZVW9g8|I!WMRq^jv7_K2I(M ztHGLhSyHe*J~b4`)OVi))peb%={Q~8K2h0rvZ57y8RJEbLr+)3$s&~|-)w&E7#KQ0 z;P@zSffY`Hr=z<4ObxW7YCjEX?l{xhb*`=Ze0%T3j=oD+Fa{m#xd4KfupYxP0AjF! z&R`+~;VGEQzzobE>A6IzsrzDM*M<6yb9L=-%jch}$AW&ziX^DLdQxEjfqMbLO+6;k z;et&r@G5q)fHmf+BB2b%F{O1UKqa+fd9~v?)ni$eBN^pGAQ-?dIhk28oLx1VTXO#?w<;z=m;)YePj&Uk8Sd(|>3fe&PgvUV7O6~ot zj+n)g_P?aRy8g4S6W_&?dhEvWGl7Tmtn#I2rT+L|0HE%C!Q@rvy~Ndr@p1J-il$R&l~wQ3U*nrt?xoumAM$ zN9C{Kp`HL`2)~DlEvWKGrmzr~s8xc1U-&NvIzEHjLKE5TK(cMDH16hn6egWjm`;%k zkT3;RN$4r*(~D_|+|RFx1n3Mfoiunag%17{pdl&5A|RLn;RT7~;Ux(} zRaiv47kXo}A(BO7s@g0z+BXX+oKU6-_+?NE4P`?IsKeB>)ltwawNYY3b3~MVh%t{rpU+?{U_uum5OpCFL|MR~&ZW@iQ9%Tc0EZC(j(JqpA|`tV zqEAPxg*3n=6o3feKiY>lv2=AY4{SuxhX~#XK!k|eT}ovwQ)kX)Fy_!f%=t{#A~t(5 zhd9f82AW4Nd+?yJuFf+q-YGoBBQh~glA9#Y_6Uyj36J#)kKrpa6nTXn z0YRRD!I|RJTv=+aA|YEAQ;?ZlmaE8<$%V10_DII?Wh5xN6U$F!x7Wqy$$S&C;?mOjvdEAKV`F1mZ@==E zV^=@^;`J}Czx?@kZ(P53=I=L-oPM3(*qYJW*?;l1*Z%SKtDk>$`NlURH$N?T`+P)a zYr(5m`o6z0^wUrMH*OBx{HgK1Pm+5^!yCJEF1&i|oA0`A{?PH=jpIN6)b-6*g_ke* zm*iOUPQ%*gJ_gt5lBORcf*cBlP)Jnx$`gxtCpHCSfjUE-@w`_ zF4cJ~&+yBbX-Z#oF90b4&4kf@^Pzp|uk%j6{;hLa$^og;V9`Hjqc6ZFGmD~JKv6D2 zcUGdGw@~gFLTm78zlLbvPoUqGqX)$lWh7DtBW3D}yDiaoFCSIrg(){{e6bkaSWdsU ziu?Im&bKSj%{A!$M#lU5mdN}agR&E1Gn2%AZlSumhFkV+TfKelnytI^3|s_ZaSa8< zHMv>Jdp|x7WyJZt0AhgAU?>BC20#o5xC|a(C<9dDcNRks8Q6t9VBj*?-7p!-)U*K* zd8FE7XGmd!fPn%`!ZFpY6Cj8|st0EZ*iwE+GZl3sAmB2Mt!Iux&ThvA05nZ)fIo=w z(O%#(mw-*+)j)VXP&B(rU|U###0~?(BMKF zOen}&8(6lf?G)(9u?gTZEuCjEn!ywX#vqsk!K+x1mI7*QKLN=pb*&?{EyFdLj2ubuADH1U;ulNce)O6BgVoeo8Pd zY8-(&qk{S&ET~R;svZ?9sX$C|&1g~eNMY452q+BDmdSz{5KtIkF&NMkHcWu>>rTRM zPGu(ua7;mi3lholOY@V{|L(L$XJZT5ChC+ z3z>8X;*~*HX($3xbw~b7P)5pxAK}D%(-2(<*Z`7o)M#+=P|}h{qf2%zl<%68!=ZzP zCty0VnNN5q5;Rfv9J*vWBS{O1v{0HBN>-;qo2Nt?^576bzXENP&0$LCup%{p&M-2j z(!|Ta-9um?h~R}@OF&_$ROoBO27EOSQ6SHls1G6nO&(c7poR+zd@HcU-Vl}Bg?Oqk z37U&&3#r5|yb9D~G35C$>82dyOHoVbaZ))%(H3}H@Y^8)7v2ki23#lLB>|~=WD$Y` zuq_2x2Al;@h{{~UoJs>{i{|Fp9C*%vmJUISXd2P!366n-@#VqFSTM$`P4>3HJS+w0 z0(7?w@iY;0DdL3iphFfIs*sTiApxcVvyV1-RcHhgfg@GB#NQ7%Xkd&FP`PO+u+&_l z;}QdIp9!7Isq{l^;)9bQCKRKA^=2xf!5QJzN2gXfj9@9);tM8siNm0!w(49k2~kII z3h*xhxl3chr_9(wMe}ITPwb6XFaN59e_(p?pBGQyd3gdq-M*DuSs9R$>J^&|P{t=J z)h#gG!r9ZwH`qHQGEN{#5=(u9!os5C(laFKnZh(_yg(eONKY=v&&tWl74fBJw(iD8 z4)#Vak&cm4AA#6CHN`PL*&(jbUr`pGTNs|1>JlI85*6td73L9{$+iI7F!J;_^9|l>>$}~;YLB_&A;T=) z4d=E^`)rHar#rOY+rW8qkLEvia^5hUHzD|P{U%@!pP$P8sypq?rj&Cn8JFv_&&iV7p_R4X0Z)BBFMU1l{rkPl%_C*9 zw#u4`uz;2juX-=5{3yqY8ve<_oL2|aFOO$lok%}Ft~foMajGx##IcOQDp6Z{ba}FW zhJ#)3ft~K_S6Q#zVz|}V%*iu3&1yN@{(&3goZrmRJmU{8 z6y5ET{ie70)HF0Pll}1k7eVO0OxEWM+5cF=dT%59y`Ads8&Ch#W!9HLQ@%;y-pFL% zuhIZ0^K%&O=hW5THimvaUU4tO|K~00Z!be1%|}<4Fix!IURuj|eFOc2&76~ZD7)zJLloS3l`=wV3q+QQ(ij^1F*~huffy?4uAn*8jNFLDH7{oxI>;4 z(-{meK)_-i!!Z~`OlA<1$7M&)fJ%>?22G|jnBd?56l|8k&XI(-Apv{= zFAN9}3^`8{nd&1$ApCqLKO&4{K=72{mI1`%)eeAiYmS3(Y0{IzzL>{|OhM%z)|i6& zQ-ECn#9-G9uox_uFK#*mDr!6pV+>rt8dH9B7z6{X>b4VA;Ol7~fiW-|fHgpEvMW0B z%X$fwcNbK26;^f@*L0QCc9zz6G#%@?b?=uKnKIAI*Z6aPpa092*w`cUgiWUQSx%YB z{s`=wz`xbWmOYP!`%dn@G`Rs2+4maf$V~Rg{0WqK(icNIM<&~3z+mz$$I4%=QCcGH z_)Ge$>p$x{pXHRnxA`QOc~hT)8$R+E8qX_!tTp zUKUcQi>P2QAv`8aXlOCmL#SXyp)I3>6$M*VV9Q*|;;eyo*KC5e0FeP)vV(?vrx1%P zpeMHmGDo!aG{Rl7NL7rp9MM;Bs0%2>Ddr1k^(3GN-%DL$F#VV!5%1pqx2~HJ?s6hE!tAWfP|cMl)OWVByMt-vwt7 zbpef_OBixZK}2B}03i4rB^-$3VQ#0w!{JP2zWMUS-+p@mWuE&l_~+>X+_`tJsjDla zszz2?!_O)Xj1?WSa5T1cvvu=z^$QIMj}42Ck4{LDXXT|e6bdS{qH2PRnTwzX9aY~ppA~4zAEzH)@Hzr9o zmN|01?0i{Nd7MKMKSU-?$&HN`SzEiihbFX*T=?>?^2-Ox_kL8q{e$w+Wvcv2t|l!r@&@dv-5t(_3|1Z%M1!riw(rmR#{jn0L?qE!8u$#0%zR zuG?6-aa-k*6&XvGNH?#`-m|H2@5&>3D|!wsI(cyRY5mzJ4lU_5*wA=*duc|(=Q?#u&d+Kga09yAJDb+v{#&D+o=E@sNf( z6vnwX%0fGfV~1*E&NoKBULW&XTk1QV!gm_uE|f)$)`%vG#luNqb%zi6tzBcPyWeBq zUXSI=3^%T~jSMd;DH;v-J>utDnayCDPoILf-|kGeRprOU$??^-8Q40rj~XtQBl^lNxKKVXB~0ZZVs9;5ISurXj+%= z%*vqU1-UkzrFo zFNt`sXK~+8RDUZ@=Uvg}t7U#CIx?>-4%-L2i$v zXh2-huP7UVZD!>OY4IS;z*bf=BrhEX!Aqd@^3m*y5fDZ*STH7Lss?kbhk(lzHJku0 zQ+nhSpczob(NmSsv#AxB2#^tAF#u4&#&Qm3KvgZLL2v*Fjs%s1FQ$H!>~los?1KFP z=5Zfx+z|-|L@RF9BE%byoGb;O&hLUOkwrVQ&mtk2+FS<0OeI22j!OcgEGqpvML6%D~EEbhG7fijI!hDrTrin zz^gC`ZY(S~rm*%nsHkoL1cUtQzTC>5oQm$^`oWThA!y_T?VMl$yLhIka0KdGno$%YRXpbQpimLcnyCZib=%Ftr!NhtF_;xf;GGR&Y#6j@3Q$>qjo zy#6(GUs8&_qp3g^h~C#M!es#71OPB|(X7bj6!~WD5G}6#JfuaVLm%t|NJGrh%23x% z)%1?lN>8UqWhh02N>WjBA{)wll0^(r8UbY_GGr;EvZ44${4b!)p}c8C8|ie!Br2O! z0W@OBcKPd228yA?bPAkNhS(Aw3kr64+U#j`peO63Q>VvkqcjTQYeIrAlCpKg3urMs zmROT6;}Lo)5>X{QB!=7*H6&Px z6kJNSHZyxK5qb;-IEczx$^c@8q*P=@q3^>5L=@_BDs2Ugwu(+!MMo=XXayB;33Vlf zwu%Z{;3go(8ajJDi?xso&zuS*1zJJxprD}XNX&t!!GK^L@V2Z}k%+~J0xpuZh_Q}K zTLv{ph&an~Dt$GBv4%;UVmYiyWvpicyP>Wl7H2MFXe?C+=LpAeDm?=z5)lCdW)|KO z9-th;ce9#GXcYxcK?nw`sgyOeM;E-37|_-*LB#bhL(Gkc3gl=%BsZ%OouQzC)P6d1 zHIuTQMgXHV2nLVFYbmsi4Awe2b1jXr1}>5Uf&uKpB)D}b09N2;;qQ%(rn@X4Fq{~1 zJ-I~6?{bF53N8z-WF2CyWAavMVvGe_09YV$m$e3v78~#uYdMR#gvDIQQd>&&!lI|M z=u!=2jVRj@V>O#QgK_oTxbj6y?C1R3{W-gRXo=m@-3vj#iHh8yc;O)nmwg77j$XlD z!7*Nekv_rEVbO^ac}_`rjkvugsi`ESSniuC3@^y!*HordR)=Tjx<>FF{o=iSllZZD z#nOgKS#u%3HZ!3tE2bzjt~eJMjj)WLlJD*lf7sg7BP@9^>+JcOH|hkPlHkH3>Cw8< z-mHvTZ@>7!kU=$W~z{eZxGwZD^ce}Y71_uGSu}@5Z zEkK#&=4P|@?VGxN$3k7bJ}q>T?VGd_a1Ivwl07EV(I#|xqG*l8EhPN z-uq_I;cKA>e-1f#BgpXY9)~Yj>-LBv-pJ>Fo#^+0o$hIiU1uE*y=t^`V(ZdlCcDZ* z+&VH+`?AG#v4OExhYU>j?e(;_N(xMj@s`JUmZt`^X2dNBhOcyTv{2XbFTj;;N zZ{y`XYtQXoeR}W0V~3abI&MB4zUNK;?hi6HepI^l)5dk*6t4Rwd;QI9y}uW@ovKfH zDJS3`-rK(L*?h-q=exeTmxAW0!Wsr91|B0zzi0Q(@F*< zr9<#4D6?!Ni$F7DSTKeeVp8=>8-7URxEa6}xZVe&77Rx)Kq2|dBMNimBmk7MrtwFr z9R@CgI~+~!d<11FFh99LHIW{oS{W9^M5d%+3=5B83-j$BDTGH~!;UH@6vxj@|UR879?$$puc zg4U;UnP-(X{n4BJpSv%S{g|+2hWuE02~GbKE;AX*0GD|Rnt4{Z%(Kdug3D1v2@1&O zMrHo(h7#&I5MS17qX*JhptlYr%fK)8{T#x(F^`RCYA{bXp;FSgMEe(wP0$mg`4Y@N=GzaBvr>T$u63#%P`AEE+XyhcHjl^q- z2p$!bVJxOGz|{g5ZwBQ{1biX13Q<-Qi7+6{ED*4g4HW7|Ds0hu1fp%CF}E_+=Ce7A z(3JHw_9~d9(k(S8AvA^r(V{6tpC-UJ0A-*`Xe03!>INoZguz-3{Dq1@usFPT6@|Wm z4&a6;0$PI@E9h#=c|yKOn87Z?B>9eCq5m>n1-fNOAr%creRIEhPAK`lXyEU3rK4X4Me;IyDL=e364?0 zDat|wt{Lu99#k{2(%4+74$&lgE26HYbLKGKyn5k9INo#o#r{0r`klM?>RMXGd4)mo z0vor0bzAiI8(0TLr6vf{A?7zcIwe(@F3-r9Dsm+`x#EoMWPu_+Q7RD?i z+41h8c*j(+qo~w7|5$iKe@sh%bZc*9b9Y2TTS#?VRBdxYLtRp>&{O1b*f-KOu{Z0| z`6C~-W}hk+bhOo+9_V?cqN*<_Jk2{!lAK?g*F0F*IZ@bkHoxbhmJVMqwmxZTRyGB7xhFA7Q(xktyCxcVM24b(Rl85k8= znAf_w9t-e39^i4@)3({$t}?>EDmuJAD5%9Zu+P)4#ohm?SLiWo@0!heDNEJ|Y}gvM zUpL9Ys5R8-jM)DJdEn>LfRBX!FNe8zyV;hB#5Dy)K9%KL~WWsK2ez z#WYV6-%(dQSe9KG9T;GuyX(M~b>{o`cw4*q*~W&sVx-L|eX)7#-37m`zw(HRs_;p0(g zXCm~qmKP^UKDAF;VC-+Z*f?o5sAxhl`mLXTq&u>(2LM`dAcalY;G!4q-e zuLOEs0tI-T53wKcHtX;>*yMkpK1R1rysxH6uc6VPrRZ>T*1-;;QAvzdurMH265J4N zHIis|Rp2@%^lBG)bjI4Yxb7^mTrco5_Y_CCNaJlpF+Pc*;c=l6QDMG;o;IFVraqRo zUbgPucCKD_cFOy=(cq=)skwck!a;sse_HV{jHRWcg8bvcf&o(Ss<>zfUX_%LWRwnr zFq(lajMGbo6vcxXrGuGeLtvSCthfn&U6(@7?50x{M%z*b=zFSi%X_hM%6dp;mv-lr zAI~c7OE2n{<#$N)+F`3G?8+$a0l|E3#Q@M5*kTc+rUnc$gIF*I!4t@<>IVUw0>OYp zRPb0zYerQX0WJfy>vt$K2$?buU;KZW=kW{uIlbrqW%<&iWM9G{12_ijSx|;d_Ql04 z~pbQr2m%)~qXJyLJV;eA(!CVH1{t}j%zX)Y$5mhL*0{LgFMPKK(gD>=fESnu+F&y@5gi;eU;%+B8Dfig5a~ey`;0l*VWuJYts6U&o5@U) zA%z0T56rtKu`Rr+O z;4ErH*f5`qz*~_!hZ;d)yUav>t5Do#qWd+}E9ERk0xpzdv4p$TOlNY`qpy$kpKO;C6vsI2Q&VPzkjXQGqVO9l$GXzCR43~N_}8W9^jrNoz3rcW{yDd#TwYKTl_GU?58ijc z(!$OsE=7@+UK|l4NJxSd*m995GbkvA?;I|6kC(cnD4fMbJ~@qHW%WS?#jcVpy`((d zq^bkLUXz@QPW6BD>G~kBAM{>u_iH}Q7rYzCJgfRV%8HCq6E^#1nj{`Ced}WTmq&BY zyV#aR}aE>$}O` zcb8|#fuN|}{-GOOywEtR-(nNE%_($; zYw!WD@PqClyR1C)Y}_1uBLkyTvrB60+j|ui6@h6&i||0h0Ph_R)(1RY92275QWIc% z(8qn*A>Bp$_pUNHw8_+Di;?lB!v@<7jrFbVOkLcKY@N-W+$>!@%p8gFVJin?I~N;w zU!RaL|KJcWFAq;o+rVHupAcIoe_MwDS4V#b&nT}5d2E z^0op+dXR_x;hh_ItzM?LX_JkCiHn(UfTJYFr#LO5x-ju*WkPpV~lnPp|^xoxY#uIH(0q^mEzt2d*gBcttzqNzesnUS2sk4}pXO|f+I-@5(qszuv3ZQQ^2u!)JK zy_2Df%Qgr5jXQ(&%!D?+sV44xb9b?$d!mD-$k#sD-Q3Ph*Ur+|$ICk`GA=M8DI`V^ z5XBGijrDNwcQSMGGP94cvP!l%EHT-YZoFCHvO{RE8)diF*%}1|Fq0GX;zGQVLSs_G z-BY5>QzC6+0!+R_D>(4);(8Gga>)ck%d7{dWDFD?NDLnxyZa10?B zD~gBYMT6-j10d`M}Wd$qXafYJXIu)DXAOAIHsWLI0yzX11tuF zUjkkO159)9nxxMHPK2EofM&4s0-qWLsW%{~u_9I6IQ}PkGUE49+bI>4A-N3pl7K3Y zj*zN2GE9o3Fc{g?w4T6fY&+l3dal0ZZ0*t0HAg0@8c$X>j90*=Ru8Ml0$4xBNWt!8 zLIE%Ws04UtvdX$)jCl<{fHcwML(`(tw(R1T%)+A?1xG+I$SP{iDQN}4OL=9-;FyAn z4k-2kr4_VdiSt`XiSn9-xkm*#M^dvIlQZg*((4ixwICP>(i@(tRC(Q#N|Dv3$m&7K z(z?X7ngnq*DVP+bH;FQjf?&W`G~!)BW+Rp`t4Wl7M4WRpEw@>c*8;b!C~AiRNM3j> zy|@FmFwV^H$tvv5DelQDB}_&*S*Eb61Im}~J^bxOrp$Btt^WMo_Wv^I7x!8s3zsmF zVMf>gIh2`9WbkkGr#fQbmp@q!gMaN~766)@BQv>D>Cd6elL&^)Ucnw2(p~bbY?r_4 zd|4{%{7d?)>p$x{pXHRnxA~-BW|pw+Nhm|se@)H+#%PB8ASTx_5nZv8k3L!11Rt(i z;*lqz4E!1V36vqZ46b8(lrQrap$rNtMlt17{~XQ8jQ77+-u(4JP`sn22^Z~Fg}*`@ zAu5-Lm~_NoQ>H*(t2W}X8CpPU=#cem0Ct#}?40?W#Obrrm@zU`orE$Z%#w7vh|giC zBSjJcWh7Dp%9sKi0nQ?3(Ek+5*hp8ZrEpLhgCZhYYZFigY&8U+`HMlnPlYnTnOx9J zfwh`!Hp+kwN)YI~lnND6xjbsx>~%RS50zUIPOtz3lI5_w;@X=^U^fV<~QJf}-23tRf0c^1q1$_i0InSH7g;T7N$Czry07R-`Ba4zt?;EWr5 zFR+D~4M=0T77dEspo&U3gBd-A3Jbyoz+nJuAa@4d0`G+_Trivn#-!lwAeD*c(J9~} z7pTCW4r0aA5#Tusl~ZOJQJF=Y5hEvTw}D;Q;)hA@0(*idfUgkFz7VmOv4~6=S2R6k z2GfB;^m5up;jQMq_2C;YEWgj+_xW>u$G30a$<8m%uc(#fmW4#|on1q`0^$<*S@O)% zs2Gt%R#0Ex5g#uyH+S?tl!9983t^Fuh?j$%p{}*QuA8yBm%Vk6TS$bLG|De4H7qwLuB0@su{^S)AhN9_`dD>BdwFbQ zRzyioa%rZxG&MOrE{^Z#7v^a1WozyXy^11z;zUu>v?!^IN2-%^ys3eot$|OXmmo7F zGs|CA9F|=bQ&JUQR+U^n;uTbhoqIyKTe%UE7Qg>zi4aA2@8Z&%k{90pkNZ z&G&6JHri_y;NY7c7F`h?Rvutq?0P6Y@PI7HMi62g;5REeVQF@bpF$uM$4gTpyi#Lq z`7w?$p%%8L+l}?shlXsGD-K1)8hH7bIJr1Gx_CM|+1Og?SsCoMIj}d_Jvhue*vH9P zdG8KDnH$Nu{enUOF~l|@t4CNgoS5C4nm+(a$vX~$0lWnBqT&%iFeH~DiHxjpKv8_0 zV~i;$z_db|-zqC;1402Jutip_IHQ^`D^C&^CkPAU z1qHAL#qslDn<6O{rB}&v>Veb%paD7qMwq7x;$y%jg9T%7&^&qqHT{K8Q(k4yQPnu;glzA$b0VwlSF7xM5<}ohwZ#ZR8NC`@=@3WKo2(ftaZAk#;Jgiq|sI)-C5RTb;nwN+2qybmUYuz6Ofm zsM+bD)!Jwyo$1P6pUyJMT0S3~GTEx&Sn*VK*-C2sOk_D55@ewpw0byHA8`6>6~2*$i(IBXM@bdC7=?pX$uvOSKH6yfa^pT z-pHZvW7GDssC$^O1;H+BACIwzL)*oo?h|5JnyoG$&z(hBFgFm(eadZ@u~(AHDJ5MW)R2^i}@iUVr`N*NWPPlIq6nqMFE9 zk%w1gP-seAq9Q%3GASj!xU{LK=R|mT;+|cH4qG@{I|e$tB)B=G_&BD8x=BM_gnri1 z9{a<+_k_jjC6v3Ao)ez@d)YgGFMIE;>{s5*yYhb38}Br{J(@jM5!VpyD0Da+9OjW$ zmw9%u>HUg~VM$73L+x1K&`Z!Q#62X|Dy4{#3n^=~PnP>+ z6o;4ACN#E6dwSFRdIhb`@wGMHImICbm1#$M@;k@VYx{+HZGw!WLfO$+aYMAYmS5DK zab!f%I3TO;N-H{=lwJj9oQODCKu}_0vRtId@s5nzV`DaZ=f>IF)`JdvIj5B7<+L_P z>&iV-V%Hn%uitmT+S4bRFHRK869m#EfiyNj5E2q26$#V$Qhri;SV*Fsy`zbRxdnJ< ztUS$3U5yS~?bx(!&5}hMRxVz*Zpres^OtR0xOMv$GaHK}sUWAaC_E+B(A;?U?wxyf zY&WtvWMq8E+RVz^$vxQ1J0!?0Cc#~h?w2fc3y!sN@G#i6bAy$YOG-jvOlYaW{^*_S zjf1_SWvSxW5MK{#BYOi~cN4Q<2RBc9Q(q@9FNbJXt0+(F&~S&S1Ses#ts>q&Jimv9GnpD8tmzx>fse{Vd`ah z&^gFHG~O{X-X=uo6e)B}5WA+x{Y0|RG*P%9F*GqEFf!0D)YQe>!phCtH83o;#( zxoPL3HCwl?F<8G$f9E<=SJMD#prAA|rP$Xu+s;zpWh3?v5rzc?2kwtgGS17*kS5o} z2bIYZ#j+H54hg9-!S?2+hxh9F`Ix4rxOw@y*g5!E+eF*gCpb6;yE(eL+uFGpTl+ft zdfK_!o0|Rl^G|5};%lOuQb|EAKetv~)RvgrEQDXYMO`VS$CHct67#wfvpbWrJ0T1> zEx#WeF=++E(xOp$$%%}zlY~mf6-8s|1*7u96S9IaMLwa7{1e&v<2eNl9TCWCo?N1vMNvK)}AS7IA7R!A;11yR@JHW@)H>qtme#zKTRL7+bFQ@Zd_l#@f{O97y0c~Vr}HaDMLC_)f?hyEAW42tT3)xT zun+JMWZXb@tfHhRqpUBlW(Xo<9`#779jmMzE3Y0Ys~Rq?9D*&3VJ5e*JHNQMu(ZFZ z>^N-mih8p1J2P^Q6_vJR=hbIq*T6Qnpb@rskda#~mS-pOC2`3j_+LVrA}1@qG{2-O zGq)fkCqGS|kt`5{U;w)?nNv`ll~;&g1!dTB!kYU*mMYip`%sw+Y5$67l( zj`ehR_V@J+4)hNX4S+_52ggQX+uz^U+0%XOcz@UE$noK!zP{d$w$`Sh!QK;NgD?rZ z<0ppBo*6$qF*bgx_vA$1#F^t~&JCVDKXmTGFe%uD$CK=@S<9>X!`FOFQeG)fA; zijRlYPMz+5q?038U%m+EJ%8@hrHg0aj4xd|KXAPJ%;^&_eoPamM#qK*L8F5Mustz6 zbaHfL;>6gQljFn3`v-b^`noznFc|FX1;LX@PRw8%OXSxbSun9wR( zNcrUKn8|^@&n#bxu42SggP5^3AXZ#07CW|&QP0{C9%?X6W$8^G6*V zQ5J{UAN;YANz&vD{>!9IpSc#l8d0d4h2eb5)sPMK?RFf zX3p2m(`F{vk=vX!nV?;AE457|9|ZL1(+OlzV?k*dryzY zNdg3iga9GLb==*(M|-5F-QCCCT{6kU-Ias@2^!pCaTb?lapr$lSC})KkbTa1&N=UU z{a-TY-r8SPSC{;{_v%xh+~504gIEC!P7sS5%w`8NvFZ`R!5CYx9s58SK*Tx^`pQ}C zjdQ)%`}3AgC+7Nsq|lAii6(+5CT%<1bu9LJ8hr!7-pJyu@uF{FQep*iIKdteGk{H7 z&+u5u^WNaaUdQAGaJcK4yp!xvnJ(&SqR-lJRs5gWGRQ`V3s2fnR_9rMRgy9IGPW9y zoNamfnf}))Zw7==R#&p+|O_pf|2 z@$%Obmp=XB<*$D`@bv5E`hh};B|5z%GL0Xfl^>Oyu|7O<<;K9?dwR9>2&o0b?EzHZ5~)r%imzij3D)vFQ{pD_vT9fKpbLHyf=$LgGY3VAtDL+RP6`C0u7?hqA zlbsPB7xiFl*y5s$FqMF>Dk+hdii9Pl`Cu&RNvVkmxe1w~lu~_`T$3u6CX|*$6bA)C5;?kt-oT$w7h?2Y%WqFB7BsL2rrZS1nP_5TjX_a=Z$bj%*U7_4q zAU7Avss*w}k+xZBYSLI53^toeSDIH49U2}U6DpQf)YQ404vSW)P>Q9MMS{H43`M3u zl95!I5g^G9R^+5f({oE=lCpz?BUT2+ZwN~W2`SA>&rFTF`|kO7-7_C{naJ3LB}-N< zzGrpNs>G6XS!I^IAcil?E>q;nMY&~yg1izz9to04%!16Of`l$%vBRut(Ti-7JZWKK zacX!$R)Qig-NxrTQgQ~@g$=I@bQR?(4f66zVJW`P37HkCIfA(O#NU4ZkvMhn6?@Z= zvvsq%X^Xvmx2|cYt>>7b?SLNnGO*9UEK|SV*s#yic)-zo*wuOzh8h@WOwEXxIp%0X z^X%h})?@aTqqe3KlpIYbtC~*Lw4AALJKNBH&Rl=kRCfq6*6ladA22uUw>BLF-*I&u zruuDTiQe1x)&o=@?zZl8?LCil^q%kPf2?QlLf`Nc{Uc8fj6T)T`*8Q*xt^g%x(3d4 z_Mh$=IMva2qNN-8BQV7ruJ1Zj+i}3vvd7W13vxE^wl$!bg)~`E6)vXQVU43#Ztif^ zjnp=6u4~@ntQ|Jmx;4f&y`|Ia=(RZes8yA|MQv!sMysnI`xwlP8hx$SP-k_tRoC^_ z)c4gj4m7onG_-ctG`2fyn<3zsmd^gpzLD;MO+%ZuKz&1_9X62%nQzstA_{6c(SU-L01ccX4o;Y^m_|fCXjzH(mo}qO1;nNSFIfWhYDz<~RfPjF- z0L=hp0EGa)VB@3b&rq-iFJU{_4R!+=IeL8Ou@k$FpWJ=o)E)=}tU?rF0a(G7Bgb|e zITH@fO-`hu}ZO<9s9=j9o&I= z-Meqc{sX&@9X*J7IEh2=+X*Q1+pj-g|Dn4+1Am1X_-{g)KP_J(pQznW*VlqFcpwLn zAv-Sp0cEJi_^Wj_k)b>?*Mc&W?BEJ0L(zw8L7AyUW)jL=O=Ku0@~8S=B{Dep|234k z7MGa{WiTy&3T3WEWUzf|zRXlE^Y5VyxC|Bj3n&9!3(An+oIisyQ)%FpP^Mzr6e!a= z31#S#9fXXGq~Vo0zj*hjAAgu=>8>Vw9@z*s(sl_Cv@L>hflbUN`(V$+3i3IaWO9l( zgBR>SUF7Ql%wc6QtZaseOlILK2@f3;`W#S^><_e5jD6ND<56@=IQg!f%cvesq}fubQEnW}@>UV`CAc;CYHy490; z1DiFQ!(QyenoZh6xLyQjCYL?S%NI7HnVy(3?9L;mA%=%(V$pEr$T2|y4yX{$1i`g| zX~gM3MzD${gpJq%!hqUB?LU`Jwsyve{AlDxgb<@$ceuOW2itKFyo5TbStu;SCqj@* zKlec(*jKXTAv#1L;brF0#O``1@{;}#-aa|TTX1<;;!>#_#1-P0xNJ}ud_ver ze#cnET{Mn?gKrTn+5NeYdy@7Ua(^F!?m;7W##FP&F}X@Qx!gy

PloF$k+j_rY86 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

_2-ZCWdm$<2-3UJ> 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 z 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�ngKR5( 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�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

s!n)Pe?#=- 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