Completed support for WSPAWN, CLONE, and JALRS
This commit is contained in:
@@ -265,7 +265,7 @@ int emu_main(int argc, char **argv) {
|
|||||||
for (Addr i = 0; i < 16; i++)
|
for (Addr i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
Addr new_addr = base_addr + (i *4);
|
Addr new_addr = base_addr + (i *4);
|
||||||
std::cout << std::hex << new_addr << " = " << std::dec << old_ram.read(new_addr) << "\n";
|
std::cout << std::hex << new_addr << " = " << std::hex << old_ram.read(new_addr) << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "\n";
|
std::cout << "\n";
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#ifndef __DEBUG_H
|
#ifndef __DEBUG_H
|
||||||
#define __DEBUG_H
|
#define __DEBUG_H
|
||||||
|
|
||||||
#define USE_DEBUG 9
|
// #define USE_DEBUG 9
|
||||||
|
|
||||||
#ifdef USE_DEBUG
|
#ifdef USE_DEBUG
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|||||||
@@ -431,7 +431,6 @@ void Instruction::executeOn(Warp &c) {
|
|||||||
break;
|
break;
|
||||||
case SYS_INST:
|
case SYS_INST:
|
||||||
temp = reg[rsrc[0]];
|
temp = reg[rsrc[0]];
|
||||||
std::cout << "STORING IN CSR: " << std::hex << reg[rsrc[0]] << " csr#: " << (immsrc & 0x00000FFF) << "\n";
|
|
||||||
switch (func3)
|
switch (func3)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
@@ -440,7 +439,6 @@ void Instruction::executeOn(Warp &c) {
|
|||||||
reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "FOR SURE WRITING TO CSR#: " << (immsrc & 0x00000FFF) << " value: " << temp << "\n";
|
|
||||||
c.csr[immsrc & 0x00000FFF] = temp;
|
c.csr[immsrc & 0x00000FFF] = temp;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -495,7 +493,6 @@ void Instruction::executeOn(Warp &c) {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
std::cout << "READING FROM CSR: " << reg[rdest] << " csr#: " << (immsrc & 0x00000FFF) << "\n";
|
|
||||||
break;
|
break;
|
||||||
case TRAP:
|
case TRAP:
|
||||||
std::cout << "INTERRUPT TRAP\n";
|
std::cout << "INTERRUPT TRAP\n";
|
||||||
@@ -510,16 +507,16 @@ void Instruction::executeOn(Warp &c) {
|
|||||||
case 0:
|
case 0:
|
||||||
// WSPAWN
|
// WSPAWN
|
||||||
D(0, "Spawning a new warp.");
|
D(0, "Spawning a new warp.");
|
||||||
std::cout << "SIZE: " << c.core->w.size() << "\n";
|
// std::cout << "SIZE: " << c.core->w.size() << "\n";
|
||||||
for (unsigned i = 0; i < c.core->w.size(); ++i)
|
for (unsigned i = 0; i < c.core->w.size(); ++i)
|
||||||
{
|
{
|
||||||
std::cout << "WHATTT\n";
|
// std::cout << "WHATTT\n";
|
||||||
Warp &newWarp(c.core->w[i]);
|
Warp &newWarp(c.core->w[i]);
|
||||||
std::cout << "STARTING\n";
|
// std::cout << "STARTING\n";
|
||||||
if (newWarp.spawned == false) {
|
if (newWarp.spawned == false) {
|
||||||
std::cout << "ABOUT TO START\n";
|
// std::cout << "ABOUT TO START\n";
|
||||||
newWarp.pc = reg[rsrc[0]];
|
newWarp.pc = reg[rsrc[0]];
|
||||||
newWarp.reg[0][rdest] = reg[rsrc[1]];
|
newWarp.reg[0] = reg;
|
||||||
newWarp.csr = c.csr;
|
newWarp.csr = c.csr;
|
||||||
newWarp.activeThreads = 1;
|
newWarp.activeThreads = 1;
|
||||||
newWarp.supervisorMode = false;
|
newWarp.supervisorMode = false;
|
||||||
@@ -530,8 +527,8 @@ void Instruction::executeOn(Warp &c) {
|
|||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
// CLONE
|
// CLONE
|
||||||
std::cout << "CLONE\n";
|
// std::cout << "CLONE\n";
|
||||||
std::cout << "CLONING THREAD: " << reg[rsrc[0]] << "\n";
|
// std::cout << "CLONING THREAD: " << reg[rsrc[0]] << "\n";
|
||||||
c.reg[reg[rsrc[0]]] = reg;
|
c.reg[reg[rsrc[0]]] = reg;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
@@ -540,8 +537,8 @@ void Instruction::executeOn(Warp &c) {
|
|||||||
reg[rdest] = c.pc;
|
reg[rdest] = c.pc;
|
||||||
if (!pcSet) nextPc = reg[rsrc[0]];
|
if (!pcSet) nextPc = reg[rsrc[0]];
|
||||||
pcSet = true;
|
pcSet = true;
|
||||||
std::cout << "ACTIVE_THREDS: " << rsrc[1] << " val: " << reg[rsrc[1]] << "\n";
|
// std::cout << "ACTIVE_THREDS: " << rsrc[1] << " val: " << reg[rsrc[1]] << "\n";
|
||||||
std::cout << "nextPC: " << rsrc[0] << " val: " << reg[rsrc[0]] << "\n";
|
// std::cout << "nextPC: " << rsrc[0] << " val: " << reg[rsrc[0]] << "\n";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cout << "ERROR: UNSUPPORTED GPGPU INSTRUCTION " << *this << "\n";
|
cout << "ERROR: UNSUPPORTED GPGPU INSTRUCTION " << *this << "\n";
|
||||||
|
|||||||
9148
src/results.txt
9148
src/results.txt
File diff suppressed because it is too large
Load Diff
@@ -1,212 +0,0 @@
|
|||||||
/*
|
|
||||||
* PicoSoC - A simple example SoC using PicoRV32
|
|
||||||
*
|
|
||||||
* Copyright (C) 2017 Clifford Wolf <clifford@clifford.at>
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
|
||||||
* copyright notice and this permission notice appear in all copies.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
// #if !defined(ICEBREAKER) && !defined(HX8KDEMO)
|
|
||||||
// # error "Set -DICEBREAKER or -DHX8KDEMO when compiling firmware.c"
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// a pointer to this is a null pointer, but the compiler does not
|
|
||||||
// know that because "sram" is a linker symbol from sections.lds.
|
|
||||||
|
|
||||||
|
|
||||||
#define reg_uart_data (*(volatile uint32_t*)0xFF000000)
|
|
||||||
// --------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------------
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
// FUNC DEFINITIONS
|
|
||||||
void putchar(char);
|
|
||||||
void print(const char *);
|
|
||||||
char getchar_prompt(char *);
|
|
||||||
void getsent_prompt(char *, char *);
|
|
||||||
|
|
||||||
char arr[2];
|
|
||||||
arr[1] = 0;
|
|
||||||
char c;
|
|
||||||
|
|
||||||
print("$ Booting..\n");
|
|
||||||
|
|
||||||
|
|
||||||
while ((c = getchar_prompt("$ Press ENTER to continue.. ")) != '\n')
|
|
||||||
{
|
|
||||||
// arr[0] = c;
|
|
||||||
// print("char printed[ ");
|
|
||||||
// print(arr);
|
|
||||||
// print(" ]\n");
|
|
||||||
}
|
|
||||||
// getchar_prompt("Press ENTER to continue..\n");
|
|
||||||
|
|
||||||
|
|
||||||
print("$ \n");
|
|
||||||
print(" ______ __ __ _______ ______ ______ ______ __ __ \n");
|
|
||||||
print(" / \\ | \\ | \\ | \\| \\/ \\ / \\ | \\ | \\\n");
|
|
||||||
print("| $$$$$$\\ ______ | $$____ \\$$_______ __ __ | $$$$$$$\\\\$$$$$| $$$$$$| $$$$$$\\ | $$ | $$\n");
|
|
||||||
print("| $$___\\$$/ \\| $$ \\| | \\| \\ / \\ | $$__| $$ | $$ | $$___\\$| $$ \\$_____| $$ | $$\n");
|
|
||||||
print(" \\$$ \\| $$$$$$| $$$$$$$| $| $$$$$$$\\\\$$\\/ $$ | $$ $$ | $$ \\$$ \\| $$ | \\$$\\ / $$\n");
|
|
||||||
print(" _\\$$$$$$| $$ | $| $$ | $| $| $$ | $$ >$$ $$ | $$$$$$$\\ | $$ _\\$$$$$$| $$ __\\$$$$$$\\$$\\ $$ \n");
|
|
||||||
print("| \\__| $| $$__/ $| $$ | $| $| $$ | $$/ $$$$\\ | $$ | $$_| $$_| \\__| $| $$__/ \\ \\$$ $$ \n");
|
|
||||||
print(" \\$$ $| $$ $| $$ | $| $| $$ | $| $$ \\$$\\ | $$ | $| $$ \\\\$$ $$\\$$ $$ \\$$$ \n");
|
|
||||||
print(" \\$$$$$$| $$$$$$$ \\$$ \\$$\\$$\\$$ \\$$\\$$ \\$$ \\$$ \\$$\\$$$$$$ \\$$$$$$ \\$$$$$$ \\$ \n");
|
|
||||||
print(" | $$ \n");
|
|
||||||
print(" | $$ \n");
|
|
||||||
print(" \\$$ \n");
|
|
||||||
|
|
||||||
print("\n");
|
|
||||||
|
|
||||||
|
|
||||||
char buf[50];
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
getsent_prompt("$ Do you want to play a guessing game? [y/n] ", buf);
|
|
||||||
c = buf[0];
|
|
||||||
if (c == 'y')
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
} else if (c == 'n')
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
print("\n$ Wrong input, please try again\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char n = '5';
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
getsent_prompt("> Guess a number between 0 and 9: ", buf);
|
|
||||||
c = buf[0];
|
|
||||||
if (c < n)
|
|
||||||
{
|
|
||||||
print("> The number is larger\n");
|
|
||||||
} else if (c > n)
|
|
||||||
{
|
|
||||||
print("> The number is smaller\n");
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print(" _ _ _ _ _ _ \n");
|
|
||||||
print(" | | | | | | (_) | | |\n");
|
|
||||||
print(" ___ ___ _ __ __ _ _ __ __ _| |_ _ _| | __ _| |_ _ ___ _ __ ___| | |\n");
|
|
||||||
print(" / __/ _ \\| '_ \\ / _` | '__/ _` | __| | | | |/ _` | __| |/ _ \\| '_ \\/ __| | |\n");
|
|
||||||
print(" | (_| (_) | | | | (_| | | | (_| | |_| |_| | | (_| | |_| | (_) | | | \\__ \\_|_|\n");
|
|
||||||
print(" \\___\\___/|_| |_|\\__, |_| \\__,_|\\__|\\__,_|_|\\__,_|\\__|_|\\___/|_| |_|___(_|_)\n");
|
|
||||||
print(" __/ | \n");
|
|
||||||
print(" |___/ \n");
|
|
||||||
|
|
||||||
|
|
||||||
print("\n");
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print("$ Press CNTR-C to exit ");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void putchar(char c)
|
|
||||||
{
|
|
||||||
if (c == '\n')
|
|
||||||
putchar('\r');
|
|
||||||
reg_uart_data = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void print(const char *p)
|
|
||||||
{
|
|
||||||
while (*p)
|
|
||||||
putchar(*(p++));
|
|
||||||
}
|
|
||||||
|
|
||||||
char getchar_prompt(char *prompt)
|
|
||||||
{
|
|
||||||
int32_t c = -1;
|
|
||||||
|
|
||||||
uint32_t cycles_begin, cycles_now, cycles;
|
|
||||||
__asm__ volatile ("rdcycle %0" : "=r"(cycles_begin));
|
|
||||||
|
|
||||||
|
|
||||||
cycles = 0;
|
|
||||||
|
|
||||||
if (prompt)
|
|
||||||
print(prompt);
|
|
||||||
|
|
||||||
while (c == -1) {
|
|
||||||
__asm__ volatile ("rdcycle %0" : "=r"(cycles_now));
|
|
||||||
cycles = cycles_now - cycles_begin;
|
|
||||||
// if (cycles > 1200000) {
|
|
||||||
// if (prompt)
|
|
||||||
// print(prompt);
|
|
||||||
// cycles_begin = cycles_now;
|
|
||||||
// }
|
|
||||||
c = reg_uart_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
print("\n");
|
|
||||||
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void getsent_prompt(char *prompt, char * buf)
|
|
||||||
{
|
|
||||||
int32_t c = -1;
|
|
||||||
|
|
||||||
uint32_t cycles_begin, cycles_now, cycles;
|
|
||||||
__asm__ volatile ("rdcycle %0" : "=r"(cycles_begin));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cycles = 0;
|
|
||||||
|
|
||||||
if (prompt)
|
|
||||||
print(prompt);
|
|
||||||
|
|
||||||
int inx = 0;
|
|
||||||
while (c != (int) '\n') {
|
|
||||||
__asm__ volatile ("rdcycle %0" : "=r"(cycles_now));
|
|
||||||
cycles = cycles_now - cycles_begin;
|
|
||||||
// if (cycles > 1200000) {
|
|
||||||
// if (prompt)
|
|
||||||
// print(prompt);
|
|
||||||
// cycles_begin = cycles_now;
|
|
||||||
// }
|
|
||||||
c = reg_uart_data;
|
|
||||||
if (c != -1)
|
|
||||||
{
|
|
||||||
buf[inx] = c;
|
|
||||||
inx++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// print("\n");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
@@ -4,37 +4,37 @@
|
|||||||
|
|
||||||
|
|
||||||
int main(void);
|
int main(void);
|
||||||
|
void matAddition ();
|
||||||
|
|
||||||
#include "./lib/lib.h"
|
#include "./lib/lib.h"
|
||||||
|
|
||||||
|
|
||||||
unsigned x[] = {1, 5, 10, 0, 3, 1, 1, 2, 8, 7, 8, 7, 5, 7, 7, 9};
|
unsigned x[] = {1, 1, 6, 0, 3, 1, 1, 2, 0, 3, 6, 7, 5, 7, 7, 9};
|
||||||
unsigned y[] = {0, 2, 2, 0, 5, 0, 1, 1, 4, 2, 2, 0, 3, 2, 3, 2};
|
unsigned y[] = {0, 2, 2, 0, 5, 0, 1, 1, 4, 2, 0, 0, 3, 2, 3, 2};
|
||||||
unsigned z[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
unsigned z[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
unsigned N = 16;
|
|
||||||
|
#define NUM_WARPS 2
|
||||||
|
#define NUM_THREADS 8
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
|
||||||
initiate_stack();
|
initiate_stack();
|
||||||
|
|
||||||
void mat ();
|
createWarps(NUM_WARPS, NUM_THREADS, matAddition, x, y, z);
|
||||||
|
|
||||||
createWarps(2, 8, mat);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void mat(unsigned warp_id)
|
void matAddition(unsigned tid)
|
||||||
{
|
{
|
||||||
|
unsigned wid = get_wid();
|
||||||
|
unsigned * x_ptr = get_1st_arg();
|
||||||
|
unsigned * y_ptr = get_2nd_arg();
|
||||||
|
unsigned * z_ptr = get_3rd_arg();
|
||||||
|
|
||||||
unsigned tid = get_tid();
|
unsigned i = (wid * 8) + tid;
|
||||||
unsigned index = (warp_id * 8) + tid;
|
|
||||||
asm __volatile("nop");
|
z_ptr[i] = x_ptr[i] + y_ptr[i];
|
||||||
asm __volatile("nop");
|
|
||||||
asm __volatile("nop");
|
|
||||||
asm __volatile("nop");
|
|
||||||
z[index] = x[index] + y[index];
|
|
||||||
}
|
}
|
||||||
@@ -9,204 +9,245 @@ Disassembly of section .text:
|
|||||||
80000004: 00112623 sw ra,12(sp)
|
80000004: 00112623 sw ra,12(sp)
|
||||||
80000008: 00812423 sw s0,8(sp)
|
80000008: 00812423 sw s0,8(sp)
|
||||||
8000000c: 01010413 addi s0,sp,16
|
8000000c: 01010413 addi s0,sp,16
|
||||||
80000010: 2a8000ef jal ra,800002b8 <initiate_stack>
|
80000010: 354000ef jal ra,80000364 <initiate_stack>
|
||||||
80000014: 800007b7 lui a5,0x80000
|
80000014: 810007b7 lui a5,0x81000
|
||||||
80000018: 04078613 addi a2,a5,64 # 80000040 <N+0xfeffff80>
|
80000018: 00078793 mv a5,a5
|
||||||
8000001c: 00800593 li a1,8
|
8000001c: 81000737 lui a4,0x81000
|
||||||
80000020: 00200513 li a0,2
|
80000020: 08070713 addi a4,a4,128 # 81000080 <y+0x0>
|
||||||
80000024: 22c000ef jal ra,80000250 <createWarps>
|
80000024: 810006b7 lui a3,0x81000
|
||||||
80000028: 00000793 li a5,0
|
80000028: 04068693 addi a3,a3,64 # 81000040 <y+0xffffffc0>
|
||||||
8000002c: 00078513 mv a0,a5
|
8000002c: 80000637 lui a2,0x80000
|
||||||
80000030: 00c12083 lw ra,12(sp)
|
80000030: 05860613 addi a2,a2,88 # 80000058 <y+0xfeffffd8>
|
||||||
80000034: 00812403 lw s0,8(sp)
|
80000034: 00800593 li a1,8
|
||||||
80000038: 01010113 addi sp,sp,16
|
80000038: 00200513 li a0,2
|
||||||
8000003c: 00008067 ret
|
8000003c: 1e0000ef jal ra,8000021c <createWarps>
|
||||||
|
80000040: 00000793 li a5,0
|
||||||
|
80000044: 00078513 mv a0,a5
|
||||||
|
80000048: 00c12083 lw ra,12(sp)
|
||||||
|
8000004c: 00812403 lw s0,8(sp)
|
||||||
|
80000050: 01010113 addi sp,sp,16
|
||||||
|
80000054: 00008067 ret
|
||||||
|
|
||||||
80000040 <mat>:
|
80000058 <matAddition>:
|
||||||
80000040: fd010113 addi sp,sp,-48
|
80000058: fc010113 addi sp,sp,-64
|
||||||
80000044: 02112623 sw ra,44(sp)
|
8000005c: 02112e23 sw ra,60(sp)
|
||||||
80000048: 02812423 sw s0,40(sp)
|
80000060: 02812c23 sw s0,56(sp)
|
||||||
8000004c: 03010413 addi s0,sp,48
|
80000064: 04010413 addi s0,sp,64
|
||||||
80000050: fca42e23 sw a0,-36(s0)
|
80000068: fca42623 sw a0,-52(s0)
|
||||||
80000054: 244000ef jal ra,80000298 <get_tid>
|
8000006c: 258000ef jal ra,800002c4 <get_wid>
|
||||||
80000058: fea42623 sw a0,-20(s0)
|
80000070: fea42623 sw a0,-20(s0)
|
||||||
8000005c: fdc42783 lw a5,-36(s0)
|
80000074: 278000ef jal ra,800002ec <get_1st_arg>
|
||||||
80000060: 00379793 slli a5,a5,0x3
|
80000078: fea42423 sw a0,-24(s0)
|
||||||
80000064: fec42703 lw a4,-20(s0)
|
8000007c: 298000ef jal ra,80000314 <get_2nd_arg>
|
||||||
80000068: 00f707b3 add a5,a4,a5
|
80000080: fea42223 sw a0,-28(s0)
|
||||||
8000006c: fef42423 sw a5,-24(s0)
|
80000084: 2b8000ef jal ra,8000033c <get_3rd_arg>
|
||||||
80000070: 00000013 nop
|
80000088: fea42023 sw a0,-32(s0)
|
||||||
80000074: 00000013 nop
|
8000008c: fec42783 lw a5,-20(s0)
|
||||||
80000078: 00000013 nop
|
80000090: 00379793 slli a5,a5,0x3
|
||||||
8000007c: 00000013 nop
|
80000094: fcc42703 lw a4,-52(s0)
|
||||||
80000080: 810007b7 lui a5,0x81000
|
80000098: 00f707b3 add a5,a4,a5
|
||||||
80000084: fe842703 lw a4,-24(s0)
|
8000009c: fcf42e23 sw a5,-36(s0)
|
||||||
80000088: 00271713 slli a4,a4,0x2
|
800000a0: fdc42783 lw a5,-36(s0)
|
||||||
8000008c: 04078793 addi a5,a5,64 # 81000040 <N+0xffffff80>
|
800000a4: 00279793 slli a5,a5,0x2
|
||||||
80000090: 00f707b3 add a5,a4,a5
|
800000a8: fe842703 lw a4,-24(s0)
|
||||||
80000094: 0007a703 lw a4,0(a5)
|
800000ac: 00f707b3 add a5,a4,a5
|
||||||
80000098: 810007b7 lui a5,0x81000
|
800000b0: 0007a683 lw a3,0(a5) # 81000000 <y+0xffffff80>
|
||||||
8000009c: fe842683 lw a3,-24(s0)
|
800000b4: fdc42783 lw a5,-36(s0)
|
||||||
800000a0: 00269693 slli a3,a3,0x2
|
800000b8: 00279793 slli a5,a5,0x2
|
||||||
800000a4: 08078793 addi a5,a5,128 # 81000080 <N+0xffffffc0>
|
800000bc: fe442703 lw a4,-28(s0)
|
||||||
800000a8: 00f687b3 add a5,a3,a5
|
800000c0: 00f707b3 add a5,a4,a5
|
||||||
800000ac: 0007a783 lw a5,0(a5)
|
800000c4: 0007a703 lw a4,0(a5)
|
||||||
800000b0: 00f70733 add a4,a4,a5
|
800000c8: fdc42783 lw a5,-36(s0)
|
||||||
800000b4: 810007b7 lui a5,0x81000
|
800000cc: 00279793 slli a5,a5,0x2
|
||||||
800000b8: fe842683 lw a3,-24(s0)
|
800000d0: fe042603 lw a2,-32(s0)
|
||||||
800000bc: 00269693 slli a3,a3,0x2
|
800000d4: 00f607b3 add a5,a2,a5
|
||||||
800000c0: 00078793 mv a5,a5
|
800000d8: 00e68733 add a4,a3,a4
|
||||||
800000c4: 00f687b3 add a5,a3,a5
|
800000dc: 00e7a023 sw a4,0(a5)
|
||||||
800000c8: 00e7a023 sw a4,0(a5) # 81000000 <N+0xffffff40>
|
800000e0: 00000013 nop
|
||||||
800000cc: 00000013 nop
|
800000e4: 03c12083 lw ra,60(sp)
|
||||||
800000d0: 02c12083 lw ra,44(sp)
|
800000e8: 03812403 lw s0,56(sp)
|
||||||
800000d4: 02812403 lw s0,40(sp)
|
800000ec: 04010113 addi sp,sp,64
|
||||||
800000d8: 03010113 addi sp,sp,48
|
800000f0: 00008067 ret
|
||||||
800000dc: 00008067 ret
|
|
||||||
|
|
||||||
800000e0 <set_wid>:
|
800000f4 <createThreads>:
|
||||||
800000e0: fe010113 addi sp,sp,-32
|
800000f4: fb010113 addi sp,sp,-80
|
||||||
800000e4: 00812e23 sw s0,28(sp)
|
800000f8: 04812623 sw s0,76(sp)
|
||||||
800000e8: 02010413 addi s0,sp,32
|
800000fc: 04912423 sw s1,72(sp)
|
||||||
800000ec: fea42623 sw a0,-20(s0)
|
80000100: 05212223 sw s2,68(sp)
|
||||||
800000f0: fec42783 lw a5,-20(s0)
|
80000104: 05312023 sw s3,64(sp)
|
||||||
800000f4: 00e79073 csrw 0xe,a5
|
80000108: 03412e23 sw s4,60(sp)
|
||||||
800000f8: 00000013 nop
|
8000010c: 03a12c23 sw s10,56(sp)
|
||||||
800000fc: 01c12403 lw s0,28(sp)
|
80000110: 03b12a23 sw s11,52(sp)
|
||||||
80000100: 02010113 addi sp,sp,32
|
80000114: 05010413 addi s0,sp,80
|
||||||
80000104: 00008067 ret
|
80000118: fca42623 sw a0,-52(s0)
|
||||||
|
8000011c: fcb42423 sw a1,-56(s0)
|
||||||
|
80000120: fcc42223 sw a2,-60(s0)
|
||||||
|
80000124: fcd42023 sw a3,-64(s0)
|
||||||
|
80000128: fae42e23 sw a4,-68(s0)
|
||||||
|
8000012c: faf42c23 sw a5,-72(s0)
|
||||||
|
80000130: fc042903 lw s2,-64(s0)
|
||||||
|
80000134: fbc42983 lw s3,-68(s0)
|
||||||
|
80000138: fb842a03 lw s4,-72(s0)
|
||||||
|
8000013c: fc842483 lw s1,-56(s0)
|
||||||
|
80000140: 00010f13 mv t5,sp
|
||||||
|
80000144: 00100793 li a5,1
|
||||||
|
80000148: fcf42e23 sw a5,-36(s0)
|
||||||
|
8000014c: 0200006f j 8000016c <createThreads+0x78>
|
||||||
|
80000150: fdc42503 lw a0,-36(s0)
|
||||||
|
80000154: fdc42303 lw t1,-36(s0)
|
||||||
|
80000158: f0010113 addi sp,sp,-256
|
||||||
|
8000015c: 0003506b 0x3506b
|
||||||
|
80000160: fdc42783 lw a5,-36(s0)
|
||||||
|
80000164: 00178793 addi a5,a5,1
|
||||||
|
80000168: fcf42e23 sw a5,-36(s0)
|
||||||
|
8000016c: fdc42703 lw a4,-36(s0)
|
||||||
|
80000170: fcc42783 lw a5,-52(s0)
|
||||||
|
80000174: fcf76ee3 bltu a4,a5,80000150 <createThreads+0x5c>
|
||||||
|
80000178: 000f0113 mv sp,t5
|
||||||
|
8000017c: 00000513 li a0,0
|
||||||
|
80000180: fc442f83 lw t6,-60(s0)
|
||||||
|
80000184: fcc42d83 lw s11,-52(s0)
|
||||||
|
80000188: 01bfe0eb 0x1bfe0eb
|
||||||
|
8000018c: 00000073 ecall
|
||||||
|
80000190: 00000013 nop
|
||||||
|
80000194: 04c12403 lw s0,76(sp)
|
||||||
|
80000198: 04812483 lw s1,72(sp)
|
||||||
|
8000019c: 04412903 lw s2,68(sp)
|
||||||
|
800001a0: 04012983 lw s3,64(sp)
|
||||||
|
800001a4: 03c12a03 lw s4,60(sp)
|
||||||
|
800001a8: 03812d03 lw s10,56(sp)
|
||||||
|
800001ac: 03412d83 lw s11,52(sp)
|
||||||
|
800001b0: 05010113 addi sp,sp,80
|
||||||
|
800001b4: 00008067 ret
|
||||||
|
|
||||||
80000108 <set_func>:
|
800001b8 <wspawn>:
|
||||||
80000108: fe010113 addi sp,sp,-32
|
800001b8: fd010113 addi sp,sp,-48
|
||||||
8000010c: 00812e23 sw s0,28(sp)
|
800001bc: 02812623 sw s0,44(sp)
|
||||||
80000110: 02010413 addi s0,sp,32
|
800001c0: 03010413 addi s0,sp,48
|
||||||
80000114: fea42623 sw a0,-20(s0)
|
800001c4: fea42623 sw a0,-20(s0)
|
||||||
80000118: fec42783 lw a5,-20(s0)
|
800001c8: feb42423 sw a1,-24(s0)
|
||||||
8000011c: 00f79073 csrw 0xf,a5
|
800001cc: fec42223 sw a2,-28(s0)
|
||||||
80000120: 00000013 nop
|
800001d0: fed42023 sw a3,-32(s0)
|
||||||
80000124: 01c12403 lw s0,28(sp)
|
800001d4: fce42e23 sw a4,-36(s0)
|
||||||
80000128: 02010113 addi sp,sp,32
|
800001d8: fcf42c23 sw a5,-40(s0)
|
||||||
8000012c: 00008067 ret
|
800001dc: fd842383 lw t2,-40(s0)
|
||||||
|
800001e0: 800007b7 lui a5,0x80000
|
||||||
|
800001e4: 0f478793 addi a5,a5,244 # 800000f4 <y+0xff000074>
|
||||||
|
800001e8: 00078313 mv t1,a5
|
||||||
|
800001ec: fec42503 lw a0,-20(s0)
|
||||||
|
800001f0: fe842583 lw a1,-24(s0)
|
||||||
|
800001f4: fe442783 lw a5,-28(s0)
|
||||||
|
800001f8: 00078613 mv a2,a5
|
||||||
|
800001fc: fe042683 lw a3,-32(s0)
|
||||||
|
80000200: fdc42703 lw a4,-36(s0)
|
||||||
|
80000204: 00038793 mv a5,t2
|
||||||
|
80000208: 0003006b 0x3006b
|
||||||
|
8000020c: 00000013 nop
|
||||||
|
80000210: 02c12403 lw s0,44(sp)
|
||||||
|
80000214: 03010113 addi sp,sp,48
|
||||||
|
80000218: 00008067 ret
|
||||||
|
|
||||||
80000130 <get_func>:
|
8000021c <createWarps>:
|
||||||
80000130: fe010113 addi sp,sp,-32
|
8000021c: fc010113 addi sp,sp,-64
|
||||||
80000134: 00812e23 sw s0,28(sp)
|
80000220: 02112e23 sw ra,60(sp)
|
||||||
80000138: 02010413 addi s0,sp,32
|
80000224: 02812c23 sw s0,56(sp)
|
||||||
8000013c: 00f027f3 csrr a5,0xf
|
80000228: 04010413 addi s0,sp,64
|
||||||
80000140: fef42623 sw a5,-20(s0)
|
8000022c: fca42e23 sw a0,-36(s0)
|
||||||
80000144: fec42783 lw a5,-20(s0)
|
80000230: fcb42c23 sw a1,-40(s0)
|
||||||
80000148: 00078513 mv a0,a5
|
80000234: fcc42a23 sw a2,-44(s0)
|
||||||
8000014c: 01c12403 lw s0,28(sp)
|
80000238: fcd42823 sw a3,-48(s0)
|
||||||
80000150: 02010113 addi sp,sp,32
|
8000023c: fce42623 sw a4,-52(s0)
|
||||||
80000154: 00008067 ret
|
80000240: fcf42423 sw a5,-56(s0)
|
||||||
|
80000244: 00010f13 mv t5,sp
|
||||||
|
80000248: 00100793 li a5,1
|
||||||
|
8000024c: fef42623 sw a5,-20(s0)
|
||||||
|
80000250: 0300006f j 80000280 <createWarps+0x64>
|
||||||
|
80000254: 80010113 addi sp,sp,-2048
|
||||||
|
80000258: fc842783 lw a5,-56(s0)
|
||||||
|
8000025c: fcc42703 lw a4,-52(s0)
|
||||||
|
80000260: fd042683 lw a3,-48(s0)
|
||||||
|
80000264: fd442603 lw a2,-44(s0)
|
||||||
|
80000268: fec42583 lw a1,-20(s0)
|
||||||
|
8000026c: fd842503 lw a0,-40(s0)
|
||||||
|
80000270: f49ff0ef jal ra,800001b8 <wspawn>
|
||||||
|
80000274: fec42783 lw a5,-20(s0)
|
||||||
|
80000278: 00178793 addi a5,a5,1
|
||||||
|
8000027c: fef42623 sw a5,-20(s0)
|
||||||
|
80000280: fec42703 lw a4,-20(s0)
|
||||||
|
80000284: fdc42783 lw a5,-36(s0)
|
||||||
|
80000288: fcf766e3 bltu a4,a5,80000254 <createWarps+0x38>
|
||||||
|
8000028c: 000f0113 mv sp,t5
|
||||||
|
80000290: fd442603 lw a2,-44(s0)
|
||||||
|
80000294: fc842783 lw a5,-56(s0)
|
||||||
|
80000298: fcc42703 lw a4,-52(s0)
|
||||||
|
8000029c: fd042683 lw a3,-48(s0)
|
||||||
|
800002a0: 00000593 li a1,0
|
||||||
|
800002a4: fd842503 lw a0,-40(s0)
|
||||||
|
800002a8: e4dff0ef jal ra,800000f4 <createThreads>
|
||||||
|
800002ac: 00000073 ecall
|
||||||
|
800002b0: 00000013 nop
|
||||||
|
800002b4: 03c12083 lw ra,60(sp)
|
||||||
|
800002b8: 03812403 lw s0,56(sp)
|
||||||
|
800002bc: 04010113 addi sp,sp,64
|
||||||
|
800002c0: 00008067 ret
|
||||||
|
|
||||||
80000158 <get_wid>:
|
800002c4 <get_wid>:
|
||||||
80000158: fe010113 addi sp,sp,-32
|
800002c4: ff010113 addi sp,sp,-16
|
||||||
8000015c: 00812e23 sw s0,28(sp)
|
800002c8: 00812623 sw s0,12(sp)
|
||||||
80000160: 02010413 addi s0,sp,32
|
800002cc: 00912423 sw s1,8(sp)
|
||||||
80000164: 00e027f3 csrr a5,0xe
|
800002d0: 01010413 addi s0,sp,16
|
||||||
80000168: fef42623 sw a5,-20(s0)
|
800002d4: 00048793 mv a5,s1
|
||||||
8000016c: fec42783 lw a5,-20(s0)
|
800002d8: 00078513 mv a0,a5
|
||||||
80000170: 00078513 mv a0,a5
|
800002dc: 00c12403 lw s0,12(sp)
|
||||||
80000174: 01c12403 lw s0,28(sp)
|
800002e0: 00812483 lw s1,8(sp)
|
||||||
80000178: 02010113 addi sp,sp,32
|
800002e4: 01010113 addi sp,sp,16
|
||||||
8000017c: 00008067 ret
|
800002e8: 00008067 ret
|
||||||
|
|
||||||
80000180 <createThreads>:
|
800002ec <get_1st_arg>:
|
||||||
80000180: fd010113 addi sp,sp,-48
|
800002ec: ff010113 addi sp,sp,-16
|
||||||
80000184: 02812623 sw s0,44(sp)
|
800002f0: 00812623 sw s0,12(sp)
|
||||||
80000188: 03a12423 sw s10,40(sp)
|
800002f4: 01212423 sw s2,8(sp)
|
||||||
8000018c: 03b12223 sw s11,36(sp)
|
800002f8: 01010413 addi s0,sp,16
|
||||||
80000190: 03010413 addi s0,sp,48
|
800002fc: 00090793 mv a5,s2
|
||||||
80000194: fca42e23 sw a0,-36(s0)
|
80000300: 00078513 mv a0,a5
|
||||||
80000198: fcb42c23 sw a1,-40(s0)
|
80000304: 00c12403 lw s0,12(sp)
|
||||||
8000019c: fcc42a23 sw a2,-44(s0)
|
80000308: 00812903 lw s2,8(sp)
|
||||||
800001a0: 00010f13 mv t5,sp
|
8000030c: 01010113 addi sp,sp,16
|
||||||
800001a4: 00100793 li a5,1
|
80000310: 00008067 ret
|
||||||
800001a8: fef42623 sw a5,-20(s0)
|
|
||||||
800001ac: 01c0006f j 800001c8 <createThreads+0x48>
|
|
||||||
800001b0: fec42303 lw t1,-20(s0)
|
|
||||||
800001b4: f0010113 addi sp,sp,-256
|
|
||||||
800001b8: 0003506b 0x3506b
|
|
||||||
800001bc: fec42783 lw a5,-20(s0)
|
|
||||||
800001c0: 00178793 addi a5,a5,1
|
|
||||||
800001c4: fef42623 sw a5,-20(s0)
|
|
||||||
800001c8: fec42703 lw a4,-20(s0)
|
|
||||||
800001cc: fdc42783 lw a5,-36(s0)
|
|
||||||
800001d0: fef760e3 bltu a4,a5,800001b0 <createThreads+0x30>
|
|
||||||
800001d4: 000f0113 mv sp,t5
|
|
||||||
800001d8: 00000313 li t1,0
|
|
||||||
800001dc: fd442f83 lw t6,-44(s0)
|
|
||||||
800001e0: fdc42d83 lw s11,-36(s0)
|
|
||||||
800001e4: fd842503 lw a0,-40(s0)
|
|
||||||
800001e8: 01bfe0eb 0x1bfe0eb
|
|
||||||
800001ec: 00000073 ecall
|
|
||||||
800001f0: 00000013 nop
|
|
||||||
800001f4: 02c12403 lw s0,44(sp)
|
|
||||||
800001f8: 02812d03 lw s10,40(sp)
|
|
||||||
800001fc: 02412d83 lw s11,36(sp)
|
|
||||||
80000200: 03010113 addi sp,sp,48
|
|
||||||
80000204: 00008067 ret
|
|
||||||
|
|
||||||
80000208 <wspawn>:
|
80000314 <get_2nd_arg>:
|
||||||
80000208: fe010113 addi sp,sp,-32
|
80000314: ff010113 addi sp,sp,-16
|
||||||
8000020c: 00812e23 sw s0,28(sp)
|
80000318: 00812623 sw s0,12(sp)
|
||||||
80000210: 02010413 addi s0,sp,32
|
8000031c: 01312423 sw s3,8(sp)
|
||||||
80000214: fea42623 sw a0,-20(s0)
|
80000320: 01010413 addi s0,sp,16
|
||||||
80000218: feb42423 sw a1,-24(s0)
|
80000324: 00098793 mv a5,s3
|
||||||
8000021c: fec42223 sw a2,-28(s0)
|
80000328: 00078513 mv a0,a5
|
||||||
80000220: fec42503 lw a0,-20(s0)
|
8000032c: 00c12403 lw s0,12(sp)
|
||||||
80000224: fe842583 lw a1,-24(s0)
|
80000330: 00812983 lw s3,8(sp)
|
||||||
80000228: fe442783 lw a5,-28(s0)
|
80000334: 01010113 addi sp,sp,16
|
||||||
8000022c: 00078613 mv a2,a5
|
80000338: 00008067 ret
|
||||||
80000230: 800007b7 lui a5,0x80000
|
|
||||||
80000234: 18078793 addi a5,a5,384 # 80000180 <N+0xff0000c0>
|
|
||||||
80000238: 00078313 mv t1,a5
|
|
||||||
8000023c: 0003006b 0x3006b
|
|
||||||
80000240: 00000013 nop
|
|
||||||
80000244: 01c12403 lw s0,28(sp)
|
|
||||||
80000248: 02010113 addi sp,sp,32
|
|
||||||
8000024c: 00008067 ret
|
|
||||||
|
|
||||||
80000250 <createWarps>:
|
8000033c <get_3rd_arg>:
|
||||||
80000250: fe010113 addi sp,sp,-32
|
8000033c: ff010113 addi sp,sp,-16
|
||||||
80000254: 00112e23 sw ra,28(sp)
|
80000340: 00812623 sw s0,12(sp)
|
||||||
80000258: 00812c23 sw s0,24(sp)
|
80000344: 01412423 sw s4,8(sp)
|
||||||
8000025c: 02010413 addi s0,sp,32
|
80000348: 01010413 addi s0,sp,16
|
||||||
80000260: fea42623 sw a0,-20(s0)
|
8000034c: 000a0793 mv a5,s4
|
||||||
80000264: feb42423 sw a1,-24(s0)
|
80000350: 00078513 mv a0,a5
|
||||||
80000268: fec42223 sw a2,-28(s0)
|
80000354: 00c12403 lw s0,12(sp)
|
||||||
8000026c: fe442783 lw a5,-28(s0)
|
80000358: 00812a03 lw s4,8(sp)
|
||||||
80000270: 00078613 mv a2,a5
|
8000035c: 01010113 addi sp,sp,16
|
||||||
80000274: 00000593 li a1,0
|
80000360: 00008067 ret
|
||||||
80000278: fe842503 lw a0,-24(s0)
|
|
||||||
8000027c: f05ff0ef jal ra,80000180 <createThreads>
|
|
||||||
80000280: 00000073 ecall
|
|
||||||
80000284: 00000013 nop
|
|
||||||
80000288: 01c12083 lw ra,28(sp)
|
|
||||||
8000028c: 01812403 lw s0,24(sp)
|
|
||||||
80000290: 02010113 addi sp,sp,32
|
|
||||||
80000294: 00008067 ret
|
|
||||||
|
|
||||||
80000298 <get_tid>:
|
80000364 <initiate_stack>:
|
||||||
80000298: ff010113 addi sp,sp,-16
|
80000364: ff010113 addi sp,sp,-16
|
||||||
8000029c: 00812623 sw s0,12(sp)
|
80000368: 00812623 sw s0,12(sp)
|
||||||
800002a0: 01010413 addi s0,sp,16
|
8000036c: 01010413 addi s0,sp,16
|
||||||
800002a4: 00000013 nop
|
80000370: 7ffff137 lui sp,0x7ffff
|
||||||
800002a8: 00078513 mv a0,a5
|
80000374: 00000013 nop
|
||||||
800002ac: 00c12403 lw s0,12(sp)
|
80000378: 00c12403 lw s0,12(sp) # 7ffff00c <main-0xff4>
|
||||||
800002b0: 01010113 addi sp,sp,16
|
8000037c: 01010113 addi sp,sp,16
|
||||||
800002b4: 00008067 ret
|
80000380: 00008067 ret
|
||||||
|
|
||||||
800002b8 <initiate_stack>:
|
|
||||||
800002b8: ff010113 addi sp,sp,-16
|
|
||||||
800002bc: 00812623 sw s0,12(sp)
|
|
||||||
800002c0: 01010413 addi s0,sp,16
|
|
||||||
800002c4: 7ffff137 lui sp,0x7ffff
|
|
||||||
800002c8: 00000013 nop
|
|
||||||
800002cc: 00c12403 lw s0,12(sp) # 7ffff00c <main-0xff4>
|
|
||||||
800002d0: 01010113 addi sp,sp,16
|
|
||||||
800002d4: 00008067 ret
|
|
||||||
|
|
||||||
Disassembly of section .bss:
|
Disassembly of section .bss:
|
||||||
|
|
||||||
@@ -218,9 +259,9 @@ Disassembly of section .data:
|
|||||||
81000040 <x>:
|
81000040 <x>:
|
||||||
81000040: 0001 nop
|
81000040: 0001 nop
|
||||||
81000042: 0000 unimp
|
81000042: 0000 unimp
|
||||||
81000044: 0005 c.nop 1
|
81000044: 0001 nop
|
||||||
81000046: 0000 unimp
|
81000046: 0000 unimp
|
||||||
81000048: 000a c.slli zero,0x2
|
81000048: 0006 c.slli zero,0x1
|
||||||
8100004a: 0000 unimp
|
8100004a: 0000 unimp
|
||||||
8100004c: 0000 unimp
|
8100004c: 0000 unimp
|
||||||
8100004e: 0000 unimp
|
8100004e: 0000 unimp
|
||||||
@@ -231,10 +272,10 @@ Disassembly of section .data:
|
|||||||
8100005a: 0000 unimp
|
8100005a: 0000 unimp
|
||||||
8100005c: 0002 c.slli64 zero
|
8100005c: 0002 c.slli64 zero
|
||||||
8100005e: 0000 unimp
|
8100005e: 0000 unimp
|
||||||
81000060: 0008 0x8
|
81000060: 0000 unimp
|
||||||
81000062: 0000 unimp
|
81000062: 0000 unimp
|
||||||
81000064: 00000007 0x7
|
81000064: 00000003 lb zero,0(zero) # 0 <main-0x80000000>
|
||||||
81000068: 0008 0x8
|
81000068: 0006 c.slli zero,0x1
|
||||||
8100006a: 0000 unimp
|
8100006a: 0000 unimp
|
||||||
8100006c: 00000007 0x7
|
8100006c: 00000007 0x7
|
||||||
81000070: 0005 c.nop 1
|
81000070: 0005 c.nop 1
|
||||||
@@ -264,10 +305,7 @@ Disassembly of section .data:
|
|||||||
810000a0: 0004 0x4
|
810000a0: 0004 0x4
|
||||||
810000a2: 0000 unimp
|
810000a2: 0000 unimp
|
||||||
810000a4: 0002 c.slli64 zero
|
810000a4: 0002 c.slli64 zero
|
||||||
810000a6: 0000 unimp
|
...
|
||||||
810000a8: 0002 c.slli64 zero
|
|
||||||
810000aa: 0000 unimp
|
|
||||||
810000ac: 0000 unimp
|
|
||||||
810000ae: 0000 unimp
|
810000ae: 0000 unimp
|
||||||
810000b0: 00000003 lb zero,0(zero) # 0 <main-0x80000000>
|
810000b0: 00000003 lb zero,0(zero) # 0 <main-0x80000000>
|
||||||
810000b4: 0002 c.slli64 zero
|
810000b4: 0002 c.slli64 zero
|
||||||
@@ -276,12 +314,6 @@ Disassembly of section .data:
|
|||||||
810000bc: 0002 c.slli64 zero
|
810000bc: 0002 c.slli64 zero
|
||||||
...
|
...
|
||||||
|
|
||||||
Disassembly of section .sdata:
|
|
||||||
|
|
||||||
810000c0 <N>:
|
|
||||||
810000c0: 0010 0x10
|
|
||||||
...
|
|
||||||
|
|
||||||
Disassembly of section .comment:
|
Disassembly of section .comment:
|
||||||
|
|
||||||
82000000 <.comment>:
|
82000000 <.comment>:
|
||||||
|
|||||||
Binary file not shown.
@@ -1,59 +1,69 @@
|
|||||||
:0200000480007A
|
:0200000480007A
|
||||||
:10000000130101FF232611002324810013040101A1
|
:10000000130101FF232611002324810013040101A1
|
||||||
:10001000EF00802AB707008013860704930580004D
|
:10001000EF004035B707008193870700370700815D
|
||||||
:1000200013052000EF00C02293070000138507008E
|
:1000200013070708B7060081938606043706008089
|
||||||
:100030008320C100032481001301010167800000B7
|
:10003000130686059305800013052000EF00001EBF
|
||||||
:10004000130101FD2326110223248102130401035D
|
:1000400093070000138507008320C100032481006B
|
||||||
:10005000232EA4FCEF0040242326A4FE8327C4FD06
|
:100050001301010167800000130101FC232E11022E
|
||||||
:10006000939737000327C4FEB307F7002324F4FE59
|
:10006000232C8102130401042326A4FCEF00802525
|
||||||
:100070001300000013000000130000001300000034
|
:100070002326A4FEEF0080272324A4FEEF0080297E
|
||||||
:10008000B7070081032784FE13172700938707040F
|
:100080002322A4FEEF00802B2320A4FE8327C4FE9E
|
||||||
:10009000B307F70003A70700B7070081832684FE94
|
:10009000939737000327C4FCB307F700232EF4FC23
|
||||||
:1000A0009396260093870708B387F60083A7070077
|
:1000A0008327C4FD93972700032784FEB307F70037
|
||||||
:1000B0003307F700B7070081832684FE9396260056
|
:1000B00083A607008327C4FD93972700032744FEE8
|
||||||
:1000C00093870700B387F60023A0E7001300000022
|
:1000C000B307F70003A707008327C4FD9397270012
|
||||||
:1000D0008320C10203248102130101036780000011
|
:1000D000032604FEB307F6003387E60023A0E700FB
|
||||||
:1000E000130101FE232E8100130401022326A4FE26
|
:1000E000130000008320C1030324810313010104D2
|
||||||
:1000F0008327C4FE7390E700130000000324C101AE
|
:1000F00067800000130101FB23268104232491045F
|
||||||
:100100001301010267800000130101FE232E81000C
|
:100100002322210523203105232E4103232CA10383
|
||||||
:10011000130401022326A4FE8327C4FE7390F70074
|
:10011000232AB103130401052326A4FC2324B4FCE1
|
||||||
:10012000130000000324C1011301010267800000D5
|
:100120002322C4FC2320D4FC232EE4FA232CF4FA4B
|
||||||
:10013000130101FE232E810013040102F327F000B6
|
:10013000032904FC8329C4FB032A84FB832484FC55
|
||||||
:100140002326F4FE8327C4FE138507000324C10180
|
:10014000130F010093071000232EF4FC6F00000230
|
||||||
:100150001301010267800000130101FE232E8100BC
|
:100150000325C4FD0323C4FD130101F06B5003000C
|
||||||
:1001600013040102F327E0002326F4FE8327C4FED4
|
:100160008327C4FD93871700232EF4FC0327C4FDC7
|
||||||
:10017000138507000324C1011301010267800000F9
|
:100170008327C4FCE36EF7FC13010F001305000096
|
||||||
:10018000130101FD232681022324A1032322B103AD
|
:10018000832F44FC832DC4FCEBE0BF01730000000F
|
||||||
:1001900013040103232EA4FC232CB4FC232AC4FC47
|
:10019000130000000324C1048324810403294104C3
|
||||||
:1001A000130F0100930710002326F4FE6F00C00117
|
:1001A00083290104032AC103032D8103832D410305
|
||||||
:1001B0000323C4FE130101F06B5003008327C4FE28
|
:1001B0001301010567800000130101FD2326810260
|
||||||
:1001C000938717002326F4FE0327C4FE8327C4FD6C
|
:1001C000130401032326A4FE2324B4FE2322C4FE29
|
||||||
:1001D000E360F7FE13010F0013030000832F44FDBB
|
:1001D0002320D4FE232EE4FC232CF4FC832384FD73
|
||||||
:1001E000832DC4FD032584FDEBE0BF0173000000F7
|
:1001E000B70700809387470F138307000325C4FEDA
|
||||||
:1001F000130000000324C102032D8102832D41025C
|
:1001F000832584FE832744FE13860700832604FE9E
|
||||||
:100200001301010367800000130101FE232E81000A
|
:100200000327C4FD938703006B0003001300000065
|
||||||
:10021000130401022326A4FE2324B4FE2322C4FED9
|
:100210000324C1021301010367800000130101FCE4
|
||||||
:100220000325C4FE832584FE832744FE138607002E
|
:10022000232E1102232C810213040104232EA4FC8B
|
||||||
:10023000B707008093870718138307006B0003003C
|
:10023000232CB4FC232AC4FC2328D4FC2326E4FC6E
|
||||||
:10024000130000000324C1011301010267800000B4
|
:100240002324F4FC130F0100930710002326F4FE6F
|
||||||
:10025000130101FE232E1100232C8100130401023F
|
:100250006F00000313010180832784FC0327C4FC83
|
||||||
:100260002326A4FE2324B4FE2322C4FE832744FEB7
|
:10026000832604FD032644FD8325C4FE032584FD67
|
||||||
:100270001386070093050000032584FEEFF05FF06E
|
:10027000EFF09FF48327C4FE938717002326F4FE34
|
||||||
:1002800073000000130000008320C10103248101DA
|
:100280000327C4FE8327C4FDE366F7FC13010F00B8
|
||||||
:100290001301010267800000130101FF2326810082
|
:10029000032644FD832784FC0327C4FC832604FD36
|
||||||
:1002A0001304010113000000138507000324C1009B
|
:1002A00093050000032584FDEFF0DFE473000000F8
|
||||||
:1002B0001301010167800000130101FF2326810063
|
:1002B000130000008320C103032481031301010400
|
||||||
:1002C0001304010137F1FF7F130000000324C10074
|
:1002C00067800000130101FF232681002324910091
|
||||||
:0802D000130101016780000029
|
:1002D0001304010193870400138507000324C10060
|
||||||
|
:1002E000832481001301010167800000130101FFD5
|
||||||
|
:1002F000232681002324210113040101930709000F
|
||||||
|
:10030000138507000324C1000329810013010101A3
|
||||||
|
:1003100067800000130101FF23268100232431019F
|
||||||
|
:100320001304010193870900138507000324C1000A
|
||||||
|
:10033000832981001301010167800000130101FF7F
|
||||||
|
:1003400023268100232441011304010193070A009D
|
||||||
|
:10035000138507000324C100032A81001301010152
|
||||||
|
:1003600067800000130101FF2326810013040101AF
|
||||||
|
:1003700037F1FF7F130000000324C10013010101C6
|
||||||
|
:040380006780000092
|
||||||
:02000004810079
|
:02000004810079
|
||||||
:1000400001000000050000000A00000000000000A0
|
:1000400001000000010000000600000000000000A8
|
||||||
:100050000300000001000000010000000200000099
|
:100050000300000001000000010000000200000099
|
||||||
:100060000800000007000000080000000700000072
|
:100060000000000003000000060000000700000080
|
||||||
:100070000500000007000000070000000900000064
|
:100070000500000007000000070000000900000064
|
||||||
:10008000000000000200000002000000000000006C
|
:10008000000000000200000002000000000000006C
|
||||||
:100090000500000000000000010000000100000059
|
:100090000500000000000000010000000100000059
|
||||||
:1000A0000400000002000000020000000000000048
|
:1000A000040000000200000000000000000000004A
|
||||||
:1000B0000300000002000000030000000200000036
|
:1000B0000300000002000000030000000200000036
|
||||||
:0400C000100000002C
|
|
||||||
:040000058000000077
|
:040000058000000077
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
@@ -3,93 +3,75 @@
|
|||||||
// namespace Sphinx
|
// namespace Sphinx
|
||||||
// {
|
// {
|
||||||
|
|
||||||
#define FUNC void (func)(unsigned)
|
|
||||||
|
|
||||||
|
|
||||||
|
void createThreads(unsigned num_threads, unsigned wid, unsigned func_addr, unsigned * x_ptr, unsigned * y_ptr, unsigned * z_ptr)
|
||||||
void set_wid(unsigned i)
|
|
||||||
{
|
|
||||||
SET_WID(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_func(FUNC)
|
|
||||||
{
|
|
||||||
SET_FUNC(func);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned get_func()
|
|
||||||
{
|
|
||||||
unsigned ret;
|
|
||||||
GET_FUNC(ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned get_wid()
|
|
||||||
{
|
|
||||||
unsigned ret;
|
|
||||||
GET_WID(ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void createThreads(unsigned num_threads, unsigned wid, unsigned func_addr)
|
|
||||||
{
|
{
|
||||||
|
register unsigned *xx asm("s2") = x_ptr;
|
||||||
|
register unsigned *yy asm("s3") = y_ptr;
|
||||||
|
register unsigned *zz asm("s4") = z_ptr;
|
||||||
|
register unsigned wid_ asm("s1") = wid;
|
||||||
|
|
||||||
asm __volatile__("addi t5, sp, 0");
|
asm __volatile__("addi t5, sp, 0");
|
||||||
for (unsigned i = 1; i < num_threads; i++)
|
for (unsigned i = 1; i < num_threads; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
register unsigned cur_tid asm("t1") = i;
|
register unsigned cur_tid asm("a0") = i;
|
||||||
|
register unsigned not_sure asm("t1") = i;
|
||||||
asm __volatile__("addi sp, sp, -256");
|
asm __volatile__("addi sp, sp, -256");
|
||||||
CLONE;
|
CLONE;
|
||||||
}
|
}
|
||||||
asm __volatile__("addi sp, t5, 0");
|
asm __volatile__("addi sp, t5, 0");
|
||||||
|
|
||||||
|
|
||||||
register unsigned cur_tid asm("t1") = 0;
|
register unsigned cur_tid asm("a0") = 0;
|
||||||
|
|
||||||
|
|
||||||
// jalis TO FUNC
|
// jalis TO FUNC
|
||||||
register unsigned num_lanes asm("t6") = func_addr;
|
register unsigned num_lanes asm("t6") = func_addr;
|
||||||
register unsigned link asm("s11") = num_threads;
|
register unsigned link asm("s11") = num_threads;
|
||||||
|
|
||||||
register unsigned n_threads asm("a0") = wid;
|
|
||||||
JALRS;
|
JALRS;
|
||||||
ECALL;
|
ECALL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wspawn(unsigned num_threads, unsigned wid, FUNC)
|
void wspawn(unsigned num_threads, unsigned wid, FUNC, unsigned * x_ptr, unsigned * y_ptr, unsigned * z_ptr)
|
||||||
{
|
{
|
||||||
|
|
||||||
// set_wid(wid);
|
|
||||||
// set_func(func);
|
|
||||||
|
|
||||||
|
register unsigned *tzz asm("t2") = z_ptr;
|
||||||
|
|
||||||
|
register unsigned func_add asm("t1") = (unsigned) &createThreads;
|
||||||
|
|
||||||
register unsigned n_threads asm("a0") = num_threads;
|
register unsigned n_threads asm("a0") = num_threads;
|
||||||
register unsigned wwid asm("a1") = wid;
|
register unsigned wwid asm("a1") = wid;
|
||||||
register unsigned ffunc asm("a2") = (unsigned) func;
|
register unsigned ffunc asm("a2") = (unsigned) func;
|
||||||
|
|
||||||
register unsigned func_add asm("t1") = (unsigned) &createThreads;
|
register unsigned *xx asm("a3") = x_ptr;
|
||||||
|
register unsigned *yy asm("a4") = y_ptr;
|
||||||
|
register unsigned *zz asm("a5") = tzz;
|
||||||
|
|
||||||
WSPAWN; // THIS SHOULD COPY THE CSR REGISTERS TO THE NEW WARP
|
WSPAWN; // THIS SHOULD COPY THE CSR REGISTERS TO THE NEW WARP
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void createWarps(unsigned num_Warps, unsigned num_threads, FUNC)
|
void createWarps(unsigned num_Warps, unsigned num_threads, FUNC, unsigned * x_ptr, unsigned * y_ptr, unsigned * z_ptr)
|
||||||
{
|
{
|
||||||
// asm __volatile__("addi t5, sp, 0");
|
asm __volatile__("addi t5, sp, 0");
|
||||||
|
|
||||||
// for (unsigned i = 1; i < num_Warps; i++)
|
for (unsigned i = 1; i < num_Warps; i++)
|
||||||
// {
|
{
|
||||||
// asm __volatile__("addi sp, sp, -2048");
|
asm __volatile__("addi sp, sp, -2048");
|
||||||
// wspawn(num_threads, i, func);
|
wspawn(num_threads, i, func, x_ptr, y_ptr, z_ptr);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// asm __volatile__("addi sp, t5, 0");
|
asm __volatile__("addi sp, t5, 0");
|
||||||
|
|
||||||
createThreads(num_threads, 0, (unsigned) func);
|
createThreads(num_threads, 0, (unsigned) func, x_ptr, y_ptr, z_ptr);
|
||||||
|
|
||||||
|
|
||||||
ECALL;
|
ECALL;
|
||||||
@@ -97,9 +79,34 @@ void createWarps(unsigned num_Warps, unsigned num_threads, FUNC)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned get_tid()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
unsigned get_wid()
|
||||||
{
|
{
|
||||||
register unsigned tid asm("t1");
|
register unsigned ret asm("s1");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned * get_1st_arg(void)
|
||||||
|
{
|
||||||
|
register unsigned *ret asm("s2");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
unsigned * get_2nd_arg(void)
|
||||||
|
{
|
||||||
|
register unsigned *ret asm("s3");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
unsigned * get_3rd_arg(void)
|
||||||
|
{
|
||||||
|
register unsigned *ret asm("s4");
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initiate_stack()
|
void initiate_stack()
|
||||||
|
|||||||
@@ -3,15 +3,6 @@
|
|||||||
#define __RISCV_GP_
|
#define __RISCV_GP_
|
||||||
|
|
||||||
|
|
||||||
#define WID_CSR 0x00E
|
|
||||||
#define FUNC_CSR 0x00F
|
|
||||||
|
|
||||||
#define SET_WID(val) asm __volatile__("csrw 0x00e,%0"::"r"(val));
|
|
||||||
#define GET_WID(ret) asm __volatile__("csrr %0,0x00e":"=r"(ret));
|
|
||||||
|
|
||||||
#define SET_FUNC(val) asm __volatile__("csrw 0x00f,%0"::"r"(val));
|
|
||||||
#define GET_FUNC(ret) asm __volatile__("csrr %0,0x00f":"=r"(ret));
|
|
||||||
|
|
||||||
|
|
||||||
#define WSPAWN asm __volatile__(".word 0x3006b"::);
|
#define WSPAWN asm __volatile__(".word 0x3006b"::);
|
||||||
#define CLONE asm __volatile__(".word 0x3506b":::"t1");
|
#define CLONE asm __volatile__(".word 0x3506b":::"t1");
|
||||||
@@ -20,9 +11,13 @@
|
|||||||
|
|
||||||
|
|
||||||
#define FUNC void (func)(unsigned)
|
#define FUNC void (func)(unsigned)
|
||||||
void createWarps(unsigned num_Warps, unsigned num_threads, FUNC);
|
void createWarps(unsigned num_Warps, unsigned num_threads, FUNC, unsigned *, unsigned *, unsigned *);
|
||||||
unsigned get_tid(void);
|
|
||||||
void initiate_stack(void);
|
unsigned get_wid();
|
||||||
|
unsigned * get_1st_arg(void);
|
||||||
|
unsigned * get_2nd_arg(void);
|
||||||
|
unsigned * get_3rd_arg(void);
|
||||||
|
void initiate_stack();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user