vecadd bug fixing + ebreak for termination
This commit is contained in:
@@ -203,7 +203,7 @@ void Warp::step() {
|
|||||||
D(3, "Register state:");
|
D(3, "Register state:");
|
||||||
for (unsigned i = 0; i < reg[0].size(); ++i) {
|
for (unsigned i = 0; i < reg[0].size(); ++i) {
|
||||||
D_RAW(" %r" << setfill(' ') << setw(2) << dec << 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(' ' << setfill('0') << setw(8) << hex << reg[j][i] << setfill(' ') << ' ');
|
||||||
D_RAW('(' << shadowReg[i] << ')' << endl);
|
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
|
// Outputs
|
||||||
VX_frE_to_bckE_req_inter VX_frE_to_bckE_req,
|
VX_frE_to_bckE_req_inter VX_frE_to_bckE_req,
|
||||||
VX_wstall_inter VX_wstall,
|
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));
|
wire ebreak = (curr_opcode == `SYS_INST) && (jal_sys_jal && (|in_valid));
|
||||||
assign VX_frE_to_bckE_req.ebreak = ebreak;
|
assign VX_frE_to_bckE_req.ebreak = ebreak;
|
||||||
wire out_ebreak = ebreak;
|
wire out_ebreak = ebreak;
|
||||||
|
assign terminate_sim = is_e_inst;
|
||||||
|
|
||||||
|
|
||||||
// CSR
|
// CSR
|
||||||
|
|||||||
@@ -31,6 +31,11 @@ wire total_freeze = schedule_delay;
|
|||||||
// wire real_fetch_ebreak;
|
// wire real_fetch_ebreak;
|
||||||
/* verilator lint_on UNUSED */
|
/* verilator lint_on UNUSED */
|
||||||
|
|
||||||
|
wire vortex_ebreak;
|
||||||
|
wire terminate_sim;
|
||||||
|
|
||||||
|
assign fetch_ebreak = vortex_ebreak || terminate_sim;
|
||||||
|
|
||||||
|
|
||||||
VX_wstall_inter VX_wstall();
|
VX_wstall_inter VX_wstall();
|
||||||
VX_join_inter VX_join();
|
VX_join_inter VX_join();
|
||||||
@@ -47,7 +52,7 @@ VX_fetch vx_fetch(
|
|||||||
|
|
||||||
.icache_request (icache_request_fe),
|
.icache_request (icache_request_fe),
|
||||||
.VX_branch_rsp (VX_branch_rsp),
|
.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)
|
.fe_inst_meta_fd (fe_inst_meta_fd)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -64,7 +69,8 @@ VX_decode vx_decode(
|
|||||||
.fd_inst_meta_de (fd_inst_meta_de),
|
.fd_inst_meta_de (fd_inst_meta_de),
|
||||||
.VX_frE_to_bckE_req(VX_frE_to_bckE_req),
|
.VX_frE_to_bckE_req(VX_frE_to_bckE_req),
|
||||||
.VX_wstall (VX_wstall),
|
.VX_wstall (VX_wstall),
|
||||||
.VX_join (VX_join)
|
.VX_join (VX_join),
|
||||||
|
.terminate_sim (terminate_sim)
|
||||||
);
|
);
|
||||||
|
|
||||||
wire no_br_stall = 0;
|
wire no_br_stall = 0;
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ reg out_ebreak;
|
|||||||
initial begin
|
initial begin
|
||||||
// $fdumpfile("vortex1.vcd");
|
// $fdumpfile("vortex1.vcd");
|
||||||
load_file("../../runtime/mains/simple/vx_simple_main.hex");
|
load_file("../../runtime/mains/simple/vx_simple_main.hex");
|
||||||
|
// load_file("../../emulator/riscv_tests/rv32ui-p-add.hex");
|
||||||
//load_file("../../kernel/vortex_test.hex");
|
//load_file("../../kernel/vortex_test.hex");
|
||||||
$dumpvars(0, vortex_tb);
|
$dumpvars(0, vortex_tb);
|
||||||
reset = 1;
|
reset = 1;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ VX_IO = ../../io/vx_io.s ../../io/vx_io.c
|
|||||||
VX_API = ../../vx_api/vx_api.c
|
VX_API = ../../vx_api/vx_api.c
|
||||||
VX_TEST = ../../tests/tests.c
|
VX_TEST = ../../tests/tests.c
|
||||||
VX_FIO = ../../fileio/fileio.s
|
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
|
VX_MAIN = vx_pocl_main
|
||||||
|
|
||||||
|
|||||||
@@ -55,8 +55,17 @@ static int g_num_kernels = 0;
|
|||||||
static kernel_info_t g_kernels [MAX_KERNELS];
|
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) {
|
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)
|
if (g_num_kernels == MAX_KERNELS)
|
||||||
|
{
|
||||||
|
printf("ERROR: REACHED MAX KERNELS\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Going to register at index: %d\n", g_num_kernels);
|
||||||
|
|
||||||
kernel_info_t* kernel = g_kernels + g_num_kernels++;
|
kernel_info_t* kernel = g_kernels + g_num_kernels++;
|
||||||
kernel->name = name;
|
kernel->name = name;
|
||||||
kernel->pfn = pfn;
|
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->num_locals = num_locals;
|
||||||
kernel->arg_types = arg_types;
|
kernel->arg_types = arg_types;
|
||||||
kernel->local_sizes = local_sizes;
|
kernel->local_sizes = local_sizes;
|
||||||
|
printf("New kernel name: %s\n", kernel->name);
|
||||||
return 0;
|
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) {
|
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) {
|
for (int i = 0; i < g_num_kernels; ++i) {
|
||||||
|
printf("Currently quering index %d\n", i);
|
||||||
kernel_info_t* kernel = g_kernels + i;
|
kernel_info_t* kernel = g_kernels + i;
|
||||||
if (strcmp(kernel->name, name) != 0)
|
if (strcmp(kernel->name, name) != 0)
|
||||||
|
{
|
||||||
|
printf("STR CMP failed! kernel->name = %s \t name: %s\n", kernel->name, name);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
printf("!!!!!!!!!STR CMP PASSED\n");
|
||||||
if (p_pfn) *p_pfn = kernel->pfn;
|
if (p_pfn) *p_pfn = kernel->pfn;
|
||||||
if (p_num_args) *p_num_args = kernel->num_args;
|
if (p_num_args) *p_num_args = kernel->num_args;
|
||||||
if (p_num_locals) *p_num_locals = kernel->num_locals;
|
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