vecadd bug fixing + ebreak for termination
This commit is contained in:
@@ -203,7 +203,7 @@ void Warp::step() {
|
||||
D(3, "Register state:");
|
||||
for (unsigned i = 0; i < reg[0].size(); ++i) {
|
||||
D_RAW(" %r" << setfill(' ') << setw(2) << dec << i << ':');
|
||||
for (unsigned j = 0; j < reg.size(); ++j)
|
||||
for (unsigned j = 0; j < (this->activeThreads); ++j)
|
||||
D_RAW(' ' << setfill('0') << setw(8) << hex << reg[j][i] << setfill(' ') << ' ');
|
||||
D_RAW('(' << shadowReg[i] << ')' << endl);
|
||||
}
|
||||
|
||||
BIN
emulator/core.o
BIN
emulator/core.o
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -8,7 +8,9 @@ module VX_decode(
|
||||
// Outputs
|
||||
VX_frE_to_bckE_req_inter VX_frE_to_bckE_req,
|
||||
VX_wstall_inter VX_wstall,
|
||||
VX_join_inter VX_join
|
||||
VX_join_inter VX_join,
|
||||
|
||||
output wire terminate_sim
|
||||
|
||||
);
|
||||
|
||||
@@ -224,7 +226,7 @@ module VX_decode(
|
||||
wire ebreak = (curr_opcode == `SYS_INST) && (jal_sys_jal && (|in_valid));
|
||||
assign VX_frE_to_bckE_req.ebreak = ebreak;
|
||||
wire out_ebreak = ebreak;
|
||||
|
||||
assign terminate_sim = is_e_inst;
|
||||
|
||||
|
||||
// CSR
|
||||
|
||||
@@ -31,6 +31,11 @@ wire total_freeze = schedule_delay;
|
||||
// wire real_fetch_ebreak;
|
||||
/* verilator lint_on UNUSED */
|
||||
|
||||
wire vortex_ebreak;
|
||||
wire terminate_sim;
|
||||
|
||||
assign fetch_ebreak = vortex_ebreak || terminate_sim;
|
||||
|
||||
|
||||
VX_wstall_inter VX_wstall();
|
||||
VX_join_inter VX_join();
|
||||
@@ -47,7 +52,7 @@ VX_fetch vx_fetch(
|
||||
|
||||
.icache_request (icache_request_fe),
|
||||
.VX_branch_rsp (VX_branch_rsp),
|
||||
.out_ebreak (fetch_ebreak), // fetch_ebreak
|
||||
.out_ebreak (vortex_ebreak), // fetch_ebreak
|
||||
.fe_inst_meta_fd (fe_inst_meta_fd)
|
||||
);
|
||||
|
||||
@@ -64,7 +69,8 @@ VX_decode vx_decode(
|
||||
.fd_inst_meta_de (fd_inst_meta_de),
|
||||
.VX_frE_to_bckE_req(VX_frE_to_bckE_req),
|
||||
.VX_wstall (VX_wstall),
|
||||
.VX_join (VX_join)
|
||||
.VX_join (VX_join),
|
||||
.terminate_sim (terminate_sim)
|
||||
);
|
||||
|
||||
wire no_br_stall = 0;
|
||||
|
||||
@@ -88,6 +88,7 @@ reg out_ebreak;
|
||||
initial begin
|
||||
// $fdumpfile("vortex1.vcd");
|
||||
load_file("../../runtime/mains/simple/vx_simple_main.hex");
|
||||
// load_file("../../emulator/riscv_tests/rv32ui-p-add.hex");
|
||||
//load_file("../../kernel/vortex_test.hex");
|
||||
$dumpvars(0, vortex_tb);
|
||||
reset = 1;
|
||||
|
||||
@@ -14,7 +14,7 @@ VX_IO = ../../io/vx_io.s ../../io/vx_io.c
|
||||
VX_API = ../../vx_api/vx_api.c
|
||||
VX_TEST = ../../tests/tests.c
|
||||
VX_FIO = ../../fileio/fileio.s
|
||||
LIBS = ./libs/libvecadd.a ./libs/libOpenCL.a ~/dev/riscv-gnu-toolchain/drops/riscv32-unknown-elf/lib/libc.a ~/dev/riscv-gnu-toolchain/drops/riscv32-unknown-elf/lib/libstdc++.a -static-libgcc -lgcc
|
||||
LIBS = ./libs/libvecadd.a /home/fares/dev/pocl/drops_riscv_rt/lib/static/libOpenCL.a ~/dev/riscv-gnu-toolchain/drops/riscv32-unknown-elf/lib/libc.a ~/dev/riscv-gnu-toolchain/drops/riscv32-unknown-elf/lib/libstdc++.a -static-libgcc -lgcc
|
||||
|
||||
VX_MAIN = vx_pocl_main
|
||||
|
||||
|
||||
@@ -55,8 +55,17 @@ static int g_num_kernels = 0;
|
||||
static kernel_info_t g_kernels [MAX_KERNELS];
|
||||
|
||||
int _pocl_register_kernel(const char* name, const void* pfn, uint32_t num_args, uint32_t num_locals, const uint8_t* arg_types, const uint32_t* local_sizes) {
|
||||
printf("******** _pocl_register_kernel\n");
|
||||
printf("Name to register: %s\n", name);
|
||||
printf("PTR of name: %x\n", name);
|
||||
if (g_num_kernels == MAX_KERNELS)
|
||||
return -1;
|
||||
{
|
||||
printf("ERROR: REACHED MAX KERNELS\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("Going to register at index: %d\n", g_num_kernels);
|
||||
|
||||
kernel_info_t* kernel = g_kernels + g_num_kernels++;
|
||||
kernel->name = name;
|
||||
kernel->pfn = pfn;
|
||||
@@ -64,14 +73,23 @@ int _pocl_register_kernel(const char* name, const void* pfn, uint32_t num_args,
|
||||
kernel->num_locals = num_locals;
|
||||
kernel->arg_types = arg_types;
|
||||
kernel->local_sizes = local_sizes;
|
||||
printf("New kernel name: %s\n", kernel->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _pocl_query_kernel(const char* name, const void** p_pfn, uint32_t* p_num_args, uint32_t* p_num_locals, const uint8_t** p_arg_types, const uint32_t** p_local_sizes) {
|
||||
printf("********* Inside _pocl_query_kernel\n");
|
||||
printf("name: %s\n", name);
|
||||
printf("g_num_kernels: %d\n", g_num_kernels);
|
||||
for (int i = 0; i < g_num_kernels; ++i) {
|
||||
printf("Currently quering index %d\n", i);
|
||||
kernel_info_t* kernel = g_kernels + i;
|
||||
if (strcmp(kernel->name, name) != 0)
|
||||
{
|
||||
printf("STR CMP failed! kernel->name = %s \t name: %s\n", kernel->name, name);
|
||||
continue;
|
||||
}
|
||||
printf("!!!!!!!!!STR CMP PASSED\n");
|
||||
if (p_pfn) *p_pfn = kernel->pfn;
|
||||
if (p_num_args) *p_num_args = kernel->num_args;
|
||||
if (p_num_locals) *p_num_locals = kernel->num_locals;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user