diff --git a/TODO b/TODO index baa0c954..0a445ac9 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,7 @@ -* Support for compressed * Implement Matrix Multiplication * 1 warp independance * automatic warp detection * finish python compiler -* print buffers \ No newline at end of file +* print buffers +* Support for compressed \ No newline at end of file diff --git a/src/core.cpp b/src/core.cpp index fcc7f782..a5a7d4a1 100644 --- a/src/core.cpp +++ b/src/core.cpp @@ -86,7 +86,6 @@ void Core::printStats() const { cout << "Total steps: " << steps << endl; cout << "Total insts: " << insts << endl; - for (unsigned i = 0; i < w.size(); ++i) { cout << "=== Warp " << i << " ===" << endl; w[i].printStats(); diff --git a/src/include/debug.h b/src/include/debug.h index 3de108bd..32208896 100644 --- a/src/include/debug.h +++ b/src/include/debug.h @@ -4,7 +4,7 @@ #ifndef __DEBUG_H #define __DEBUG_H -//#define USE_DEBUG 9 +// #define USE_DEBUG 9 #ifdef USE_DEBUG #include @@ -12,13 +12,13 @@ #define D(lvl, x) do { \ using namespace std; \ if ((lvl) <= USE_DEBUG) { \ - cerr << "DEBUG " << __FILE__ << ':' << dec << __LINE__ << ": " \ + cout << "DEBUG " << __FILE__ << ':' << dec << __LINE__ << ": " \ << x << endl; \ } \ } while(0) #define D_RAW(x) do { \ - std::cerr << x; \ + std::cout << x; \ } while (0) #else diff --git a/src/instruction.cpp b/src/instruction.cpp index 65d86ac6..ca135ea9 100644 --- a/src/instruction.cpp +++ b/src/instruction.cpp @@ -84,7 +84,7 @@ void Instruction::executeOn(Warp &c) { /* If I try to execute a privileged instruction in user mode, throw an exception 3. */ if (instTable[op].privileged && !c.supervisorMode) { - //std::cout << "INTERRUPT SUPERVISOR\n"; + std::cout << "INTERRUPT SUPERVISOR\n"; c.interrupt(3); return; } @@ -127,18 +127,30 @@ void Instruction::executeOn(Warp &c) { stack &domStack(c.domStack); //std::cout << std::hex << "opcode: " << op << " func3: " << func3 << "\n"; - if (op == GPGPU) //std::cout << "OPCODE MATCHED GPGPU\n"; + //if (op == GPGPU) //std::cout << "OPCODE MATCHED GPGPU\n"; // If this thread is masked out, don't execute the instruction, unless it's // a split or join. // if (((predicated && !pReg[pred]) || !c.tmask[t]) && // op != SPLIT && op != JOIN) continue; - predicated = (op == GPGPU) && ((func3 == 7) || (func3 == 2)); bool split = (op == GPGPU) && (func3 == 2); bool join = (op == GPGPU) && (func3 == 3); - if (((predicated && !reg[pred]) || !c.tmask[t]) && !split && !join) continue; + + predicated = (op == GPGPU) && ((func3 == 7) || (func3 == 2)); + + + // printf("Predicated: %d, split: %d, join: %d\n",predicated, split, join ); + // printf("%d && ((%d) || (%d))\n",(op == GPGPU), (func3 == 7), (func3 == 2) ); + + // cout << "before " << op << " = " << GPGPU << "\n"; + if (((predicated && !reg[pred]) || !c.tmask[t]) && !split && !join) + { + // cout << "about to continue\n"; + continue; + } + // cout << "after\n"; ++c.insts; @@ -148,78 +160,180 @@ void Instruction::executeOn(Warp &c) { Word temp; Word data_read; int op1, op2; + bool m_exten; + // std::cout << "op = " << op << "\n"; + // std::cout << "R_INST: " << R_INST << "\n"; switch (op) { case NOP: //std::cout << "NOP_INST\n"; break; case R_INST: - //std::cout << "R_INST\n"; - switch (func3) + // std::cout << "R_INST\n"; + m_exten = func7 & 0x1; + + if (m_exten) { - case 0: - if (func7) - { - reg[rdest] = reg[rsrc[0]] - reg[rsrc[1]]; - reg[rdest].trunc(wordSz); - } - else - { - reg[rdest] = reg[rsrc[0]] + reg[rsrc[1]]; - reg[rdest].trunc(wordSz); - } - break; - case 1: - reg[rdest] = reg[rsrc[0]] << reg[rsrc[1]]; - reg[rdest].trunc(wordSz); - break; - case 2: - if ( int(reg[rsrc[0]]) < int(reg[rsrc[1]])) - { - reg[rdest] = 1; - } - else - { - reg[rdest] = 0; - } - break; - case 3: - if ( Word_u(reg[rsrc[0]]) < Word_u(reg[rsrc[1]])) - { - reg[rdest] = 1; - } - else - { - reg[rdest] = 0; - } - break; - case 4: - reg[rdest] = reg[rsrc[0]] ^ reg[rsrc[1]]; - break; - case 5: - if (func7) - { - reg[rdest] = int(reg[rsrc[0]]) >> int(reg[rsrc[1]]); - reg[rdest].trunc(wordSz); - } - else - { - reg[rdest] = Word_u(reg[rsrc[0]]) >> Word_u(reg[rsrc[1]]); - reg[rdest].trunc(wordSz); - } - break; - case 6: - reg[rdest] = reg[rsrc[0]] | reg[rsrc[1]]; - break; - case 7: - reg[rdest] = reg[rsrc[0]] & reg[rsrc[1]]; - break; - default: - cout << "ERROR: UNSUPPORTED R INST\n"; - exit(1); + // std::cout << "FOUND A MUL/DIV\n"; + + switch (func3) + { + case 0: + // MUL + // cout << "MUL\n"; + reg[rdest] = ((int) reg[rsrc[0]]) * ((int) reg[rsrc[1]]); + break; + case 1: + // MULH + { + int64_t first = (int64_t) reg[rsrc[0]]; + if (reg[rsrc[0]] & 0x80000000) + { + first = first | 0xFFFFFFFF00000000; + } + int64_t second = (int64_t) reg[rsrc[1]]; + if (reg[rsrc[1]] & 0x80000000) + { + second = second | 0xFFFFFFFF00000000; + } + // cout << "mulh: " << std::dec << first << " * " << second; + uint64_t result = first * second; + reg[rdest] = ( result >> 32) & 0xFFFFFFFF; + // cout << " = " << result << " or " << reg[rdest] << "\n"; + } + break; + case 2: + // MULHSU + { + int64_t first = (int64_t) reg[rsrc[0]]; + if (reg[rsrc[0]] & 0x80000000) + { + first = first | 0xFFFFFFFF00000000; + } + int64_t second = (int64_t) reg[rsrc[1]]; + reg[rdest] = (( first * second ) >> 32) & 0xFFFFFFFF; + } + break; + case 3: + // MULHU + { + uint64_t first = (uint64_t) reg[rsrc[0]]; + uint64_t second = (uint64_t) reg[rsrc[1]]; + // cout << "MULHU\n"; + reg[rdest] = (( first * second) >> 32) & 0xFFFFFFFF; + } + break; + case 4: + // DIV + if (reg[rsrc[1]] == 0) + { + reg[rdest] = -1; + break; + } + // cout << "dividing: " << dec << ((int) reg[rsrc[0]]) << " / " << ((int) reg[rsrc[1]]); + reg[rdest] = ( (int) reg[rsrc[0]]) / ( (int) reg[rsrc[1]]); + // cout << " = " << ((int) reg[rdest]) << "\n"; + break; + case 5: + // DIVU + if (reg[rsrc[1]] == 0) + { + reg[rdest] = -1; + break; + } + reg[rdest] = ((uint32_t) reg[rsrc[0]]) / ((uint32_t) reg[rsrc[1]]); + break; + case 6: + // REM + if (reg[rsrc[1]] == 0) + { + reg[rdest] = reg[rsrc[0]]; + break; + } + reg[rdest] = ((int) reg[rsrc[0]]) % ((int) reg[rsrc[1]]); + break; + case 7: + // REMU + if (reg[rsrc[1]] == 0) + { + reg[rdest] = reg[rsrc[0]]; + break; + } + reg[rdest] = ((uint32_t) reg[rsrc[0]]) % ((uint32_t) reg[rsrc[1]]); + break; + default: + cout << "unsupported MUL/DIV instr\n"; + exit(1); + } + } + else + { + // std::cout << "NORMAL R-TYPE\n"; + switch (func3) + { + case 0: + if (func7) + { + reg[rdest] = reg[rsrc[0]] - reg[rsrc[1]]; + reg[rdest].trunc(wordSz); + } + else + { + reg[rdest] = reg[rsrc[0]] + reg[rsrc[1]]; + reg[rdest].trunc(wordSz); + } + break; + case 1: + reg[rdest] = reg[rsrc[0]] << reg[rsrc[1]]; + reg[rdest].trunc(wordSz); + break; + case 2: + if ( int(reg[rsrc[0]]) < int(reg[rsrc[1]])) + { + reg[rdest] = 1; + } + else + { + reg[rdest] = 0; + } + break; + case 3: + if ( Word_u(reg[rsrc[0]]) < Word_u(reg[rsrc[1]])) + { + reg[rdest] = 1; + } + else + { + reg[rdest] = 0; + } + break; + case 4: + reg[rdest] = reg[rsrc[0]] ^ reg[rsrc[1]]; + break; + case 5: + if (func7) + { + reg[rdest] = int(reg[rsrc[0]]) >> int(reg[rsrc[1]]); + reg[rdest].trunc(wordSz); + } + else + { + reg[rdest] = Word_u(reg[rsrc[0]]) >> Word_u(reg[rsrc[1]]); + reg[rdest].trunc(wordSz); + } + break; + case 6: + reg[rdest] = reg[rsrc[0]] | reg[rsrc[1]]; + break; + case 7: + reg[rdest] = reg[rsrc[0]] & reg[rsrc[1]]; + break; + default: + cout << "ERROR: UNSUPPORTED R INST\n"; + exit(1); + } } break; - case L_INST: //std::cout << "L_INST\n"; memAddr = ((reg[rsrc[0]] + immsrc) & 0xFFFFFFFC); diff --git a/src/riscv_gpgpu/Makefile b/src/riscv_gpgpu/Makefile index 9af1542d..b82d8f7e 100644 --- a/src/riscv_gpgpu/Makefile +++ b/src/riscv_gpgpu/Makefile @@ -1,6 +1,6 @@ COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc -CC_FLAGS = -march=rv32i -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib +CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy diff --git a/src/riscv_gpgpu/gpgpu_test.c b/src/riscv_gpgpu/gpgpu_test.c index abae2f19..c363aa3c 100644 --- a/src/riscv_gpgpu/gpgpu_test.c +++ b/src/riscv_gpgpu/gpgpu_test.c @@ -10,20 +10,31 @@ void matAddition (unsigned, unsigned); #include "./lib/lib.h" -// unsigned x[] = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}; -// unsigned y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; -// unsigned z[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +// unsigned x[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 }; +// unsigned y[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; +// unsigned z[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -unsigned x[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 }; -unsigned y[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; -unsigned z[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -// unsigned x[] = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}; -// unsigned y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; -// unsigned z[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -#define NUM_WARPS 2 -#define NUM_THREADS 8 +unsigned x[] = {1,0,0,0, + 0,2,0,0, + 0,0,3,0, + 0,0,0,4}; + +unsigned y[] = {10,0,0,0, + 0,10,0,0, + 0,0,10,0, + 0,0,0,10}; + +unsigned z[] = {0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0}; + +#define MAT_DIM 4 + +#define NUM_WARPS MAT_DIM +#define NUM_THREADS MAT_DIM int main() { @@ -33,20 +44,21 @@ int main() queue_initialize(q + i); } - createWarps(NUM_WARPS, NUM_THREADS, matAddition, x, y, z); + createWarps(NUM_WARPS, NUM_THREADS, matAddition, (void *) x, (void *) y, (void *) z); wait_for_done(NUM_WARPS); print_consol("-------------------------\n"); print_consol("FINAL Z\n"); - for (int i = 0; i < 16; i++) + + for (int j = 0; j < (MAT_DIM * MAT_DIM); j++) { - int_print(i); - print_consol(": "); - int_print(z[i]); - print_consol("\n"); + if ((j % MAT_DIM) == 0) print_consol("\n"); + int_print(z[j]); + print_consol(" "); } - print_consol("-------------------------------\n"); + + print_consol("\n-------------------------------\n"); return 0; } @@ -54,16 +66,22 @@ int main() void matAddition(unsigned tid, unsigned wid) { - unsigned * x_ptr = get_1st_arg(); - unsigned * y_ptr = get_2nd_arg(); - unsigned * z_ptr = get_3rd_arg(); + unsigned * x_ptr = (unsigned *) get_1st_arg(); + unsigned * y_ptr = (unsigned *) get_2nd_arg(); + unsigned * z_ptr = (unsigned *) get_3rd_arg(); - unsigned i = (wid * NUM_THREADS) + tid; - __if((i < 11)) - z_ptr[i] = x_ptr[i] + y_ptr[i]; - __else - __end_if + unsigned total = 0; + for (unsigned place = 0; place < MAT_DIM; place++) + { + unsigned x_i = (wid * MAT_DIM) + place; + unsigned y_i = (MAT_DIM * place) + tid; + + total += (x_ptr[x_i] * y_ptr[y_i]); + } + + int final_i = (wid * MAT_DIM) + tid; + z_ptr[final_i] = total; return; diff --git a/src/riscv_gpgpu/gpgpu_test.dump b/src/riscv_gpgpu/gpgpu_test.dump index 7a62e860..78c3e1be 100644 --- a/src/riscv_gpgpu/gpgpu_test.dump +++ b/src/riscv_gpgpu/gpgpu_test.dump @@ -39,7 +39,7 @@ Disassembly of section .text: 8000004c: 00038d93 mv s11,t2 80000050: 01bfe0eb 0x1bfe0eb 80000054: 00000517 auipc a0,0x0 -80000058: 4b850513 addi a0,a0,1208 # 8000050c +80000058: 4bc50513 addi a0,a0,1212 # 80000510 8000005c: 0005406b 0x5406b 80000060 : @@ -88,600 +88,552 @@ Disassembly of section .text: 800000d8: 00812c23 sw s0,24(sp) 800000dc: 02010413 addi s0,sp,32 800000e0: fe042623 sw zero,-20(s0) -800000e4: 04c0006f j 80000130 +800000e4: 0300006f j 80000114 800000e8: fec42703 lw a4,-20(s0) -800000ec: 00070793 mv a5,a4 -800000f0: 00379793 slli a5,a5,0x3 -800000f4: 40e787b3 sub a5,a5,a4 -800000f8: 00279793 slli a5,a5,0x2 -800000fc: 40e787b3 sub a5,a5,a4 -80000100: 00479713 slli a4,a5,0x4 -80000104: 40f70733 sub a4,a4,a5 -80000108: 00271793 slli a5,a4,0x2 -8000010c: 00078713 mv a4,a5 -80000110: 810007b7 lui a5,0x81000 -80000114: 24478793 addi a5,a5,580 # 81000244 -80000118: 00f707b3 add a5,a4,a5 -8000011c: 00078513 mv a0,a5 -80000120: 1c4000ef jal ra,800002e4 -80000124: fec42783 lw a5,-20(s0) -80000128: 00178793 addi a5,a5,1 -8000012c: fef42623 sw a5,-20(s0) -80000130: fec42703 lw a4,-20(s0) -80000134: 00700793 li a5,7 -80000138: fae7d8e3 bge a5,a4,800000e8 -8000013c: 810007b7 lui a5,0x81000 -80000140: 1f878793 addi a5,a5,504 # 810001f8 -80000144: 81000737 lui a4,0x81000 -80000148: 17870713 addi a4,a4,376 # 81000178 -8000014c: 810006b7 lui a3,0x81000 -80000150: 13868693 addi a3,a3,312 # 81000138 -80000154: 80000637 lui a2,0x80000 -80000158: 21060613 addi a2,a2,528 # 80000210 -8000015c: 00800593 li a1,8 -80000160: 00200513 li a0,2 -80000164: 604000ef jal ra,80000768 -80000168: 00200513 li a0,2 -8000016c: 710000ef jal ra,8000087c -80000170: 810007b7 lui a5,0x81000 -80000174: 04078513 addi a0,a5,64 # 81000040 -80000178: f05ff0ef jal ra,8000007c -8000017c: 810007b7 lui a5,0x81000 -80000180: 05c78513 addi a0,a5,92 # 8100005c -80000184: ef9ff0ef jal ra,8000007c -80000188: fe042423 sw zero,-24(s0) -8000018c: 0540006f j 800001e0 -80000190: fe842783 lw a5,-24(s0) -80000194: 00078513 mv a0,a5 -80000198: 2b0000ef jal ra,80000448 -8000019c: 810007b7 lui a5,0x81000 -800001a0: 06878513 addi a0,a5,104 # 81000068 -800001a4: ed9ff0ef jal ra,8000007c -800001a8: 810007b7 lui a5,0x81000 -800001ac: fe842703 lw a4,-24(s0) -800001b0: 00271713 slli a4,a4,0x2 -800001b4: 1f878793 addi a5,a5,504 # 810001f8 -800001b8: 00f707b3 add a5,a4,a5 -800001bc: 0007a783 lw a5,0(a5) -800001c0: 00078513 mv a0,a5 -800001c4: 284000ef jal ra,80000448 -800001c8: 810007b7 lui a5,0x81000 -800001cc: 06c78513 addi a0,a5,108 # 8100006c -800001d0: eadff0ef jal ra,8000007c -800001d4: fe842783 lw a5,-24(s0) -800001d8: 00178793 addi a5,a5,1 -800001dc: fef42423 sw a5,-24(s0) -800001e0: fe842703 lw a4,-24(s0) -800001e4: 00f00793 li a5,15 -800001e8: fae7d4e3 bge a5,a4,80000190 -800001ec: 810007b7 lui a5,0x81000 -800001f0: 07078513 addi a0,a5,112 # 81000070 -800001f4: e89ff0ef jal ra,8000007c -800001f8: 00000793 li a5,0 -800001fc: 00078513 mv a0,a5 -80000200: 01c12083 lw ra,28(sp) -80000204: 01812403 lw s0,24(sp) -80000208: 02010113 addi sp,sp,32 -8000020c: 00008067 ret +800000ec: 65400793 li a5,1620 +800000f0: 02f70733 mul a4,a4,a5 +800000f4: 810007b7 lui a5,0x81000 +800000f8: 22078793 addi a5,a5,544 # 81000220 +800000fc: 00f707b3 add a5,a4,a5 +80000100: 00078513 mv a0,a5 +80000104: 1e4000ef jal ra,800002e8 +80000108: fec42783 lw a5,-20(s0) +8000010c: 00178793 addi a5,a5,1 +80000110: fef42623 sw a5,-20(s0) +80000114: fec42703 lw a4,-20(s0) +80000118: 00700793 li a5,7 +8000011c: fce7d6e3 bge a5,a4,800000e8 +80000120: 810007b7 lui a5,0x81000 +80000124: 1d478793 addi a5,a5,468 # 810001d4 +80000128: 81000737 lui a4,0x81000 +8000012c: 15470713 addi a4,a4,340 # 81000154 +80000130: 810006b7 lui a3,0x81000 +80000134: 11468693 addi a3,a3,276 # 81000114 +80000138: 80000637 lui a2,0x80000 +8000013c: 1f460613 addi a2,a2,500 # 800001f4 +80000140: 00400593 li a1,4 +80000144: 00400513 li a0,4 +80000148: 590000ef jal ra,800006d8 +8000014c: 00400513 li a0,4 +80000150: 680000ef jal ra,800007d0 +80000154: 810007b7 lui a5,0x81000 +80000158: 04078513 addi a0,a5,64 # 81000040 +8000015c: f21ff0ef jal ra,8000007c +80000160: 810007b7 lui a5,0x81000 +80000164: 05c78513 addi a0,a5,92 # 8100005c +80000168: f15ff0ef jal ra,8000007c +8000016c: fe042423 sw zero,-24(s0) +80000170: 0540006f j 800001c4 +80000174: fe842783 lw a5,-24(s0) +80000178: 0037f793 andi a5,a5,3 +8000017c: 00079863 bnez a5,8000018c +80000180: 810007b7 lui a5,0x81000 +80000184: 06878513 addi a0,a5,104 # 81000068 +80000188: ef5ff0ef jal ra,8000007c +8000018c: 810007b7 lui a5,0x81000 +80000190: fe842703 lw a4,-24(s0) +80000194: 00271713 slli a4,a4,0x2 +80000198: 1d478793 addi a5,a5,468 # 810001d4 +8000019c: 00f707b3 add a5,a4,a5 +800001a0: 0007a783 lw a5,0(a5) +800001a4: 00078513 mv a0,a5 +800001a8: 2a4000ef jal ra,8000044c +800001ac: 810007b7 lui a5,0x81000 +800001b0: 06c78513 addi a0,a5,108 # 8100006c +800001b4: ec9ff0ef jal ra,8000007c +800001b8: fe842783 lw a5,-24(s0) +800001bc: 00178793 addi a5,a5,1 +800001c0: fef42423 sw a5,-24(s0) +800001c4: fe842703 lw a4,-24(s0) +800001c8: 00f00793 li a5,15 +800001cc: fae7d4e3 bge a5,a4,80000174 +800001d0: 810007b7 lui a5,0x81000 +800001d4: 07078513 addi a0,a5,112 # 81000070 +800001d8: ea5ff0ef jal ra,8000007c +800001dc: 00000793 li a5,0 +800001e0: 00078513 mv a0,a5 +800001e4: 01c12083 lw ra,28(sp) +800001e8: 01812403 lw s0,24(sp) +800001ec: 02010113 addi sp,sp,32 +800001f0: 00008067 ret -80000210 : -80000210: fc010113 addi sp,sp,-64 -80000214: 02112e23 sw ra,60(sp) -80000218: 02812c23 sw s0,56(sp) -8000021c: 04010413 addi s0,sp,64 -80000220: fca42623 sw a0,-52(s0) -80000224: fcb42423 sw a1,-56(s0) -80000228: 6ec000ef jal ra,80000914 -8000022c: fea42623 sw a0,-20(s0) -80000230: 70c000ef jal ra,8000093c -80000234: fea42423 sw a0,-24(s0) -80000238: 72c000ef jal ra,80000964 -8000023c: fea42223 sw a0,-28(s0) -80000240: fc842783 lw a5,-56(s0) -80000244: 00379793 slli a5,a5,0x3 -80000248: fcc42703 lw a4,-52(s0) -8000024c: 00f707b3 add a5,a4,a5 -80000250: fef42023 sw a5,-32(s0) -80000254: fe042783 lw a5,-32(s0) -80000258: 00b7b793 sltiu a5,a5,11 -8000025c: 0017c793 xori a5,a5,1 -80000260: fcf40fa3 sb a5,-33(s0) -80000264: fdf44783 lbu a5,-33(s0) -80000268: 00078f13 mv t5,a5 -8000026c: 800007b7 lui a5,0x80000 -80000270: 2c878f93 addi t6,a5,712 # 800002c8 -80000274: 000f206b 0xf206b -80000278: 01ff707b 0x1ff707b -8000027c: fe042783 lw a5,-32(s0) -80000280: 00279793 slli a5,a5,0x2 +800001f4 : +800001f4: fc010113 addi sp,sp,-64 +800001f8: 02112e23 sw ra,60(sp) +800001fc: 02812c23 sw s0,56(sp) +80000200: 04010413 addi s0,sp,64 +80000204: fca42623 sw a0,-52(s0) +80000208: fcb42423 sw a1,-56(s0) +8000020c: 648000ef jal ra,80000854 +80000210: fea42223 sw a0,-28(s0) +80000214: 668000ef jal ra,8000087c +80000218: fea42023 sw a0,-32(s0) +8000021c: 688000ef jal ra,800008a4 +80000220: fca42e23 sw a0,-36(s0) +80000224: fe042623 sw zero,-20(s0) +80000228: fe042423 sw zero,-24(s0) +8000022c: 0700006f j 8000029c +80000230: fc842783 lw a5,-56(s0) +80000234: 00279793 slli a5,a5,0x2 +80000238: fe842703 lw a4,-24(s0) +8000023c: 00f707b3 add a5,a4,a5 +80000240: fcf42c23 sw a5,-40(s0) +80000244: fe842783 lw a5,-24(s0) +80000248: 00279793 slli a5,a5,0x2 +8000024c: fcc42703 lw a4,-52(s0) +80000250: 00f707b3 add a5,a4,a5 +80000254: fcf42a23 sw a5,-44(s0) +80000258: fd842783 lw a5,-40(s0) +8000025c: 00279793 slli a5,a5,0x2 +80000260: fe442703 lw a4,-28(s0) +80000264: 00f707b3 add a5,a4,a5 +80000268: 0007a703 lw a4,0(a5) +8000026c: fd442783 lw a5,-44(s0) +80000270: 00279793 slli a5,a5,0x2 +80000274: fe042683 lw a3,-32(s0) +80000278: 00f687b3 add a5,a3,a5 +8000027c: 0007a783 lw a5,0(a5) +80000280: 02f707b3 mul a5,a4,a5 80000284: fec42703 lw a4,-20(s0) 80000288: 00f707b3 add a5,a4,a5 -8000028c: 0007a683 lw a3,0(a5) -80000290: fe042783 lw a5,-32(s0) -80000294: 00279793 slli a5,a5,0x2 -80000298: fe842703 lw a4,-24(s0) -8000029c: 00f707b3 add a5,a4,a5 -800002a0: 0007a703 lw a4,0(a5) -800002a4: fe042783 lw a5,-32(s0) -800002a8: 00279793 slli a5,a5,0x2 -800002ac: fe442603 lw a2,-28(s0) -800002b0: 00f607b3 add a5,a2,a5 -800002b4: 00e68733 add a4,a3,a4 -800002b8: 00e7a023 sw a4,0(a5) -800002bc: 800007b7 lui a5,0x80000 -800002c0: 2cc78e13 addi t3,a5,716 # 800002cc -800002c4: 000e0067 jr t3 -800002c8: 00000013 nop -800002cc: 0000306b 0x306b -800002d0: 00000013 nop -800002d4: 03c12083 lw ra,60(sp) -800002d8: 03812403 lw s0,56(sp) -800002dc: 04010113 addi sp,sp,64 -800002e0: 00008067 ret +8000028c: fef42623 sw a5,-20(s0) +80000290: fe842783 lw a5,-24(s0) +80000294: 00178793 addi a5,a5,1 +80000298: fef42423 sw a5,-24(s0) +8000029c: fe842703 lw a4,-24(s0) +800002a0: 00300793 li a5,3 +800002a4: f8e7f6e3 bgeu a5,a4,80000230 +800002a8: fc842783 lw a5,-56(s0) +800002ac: 00279713 slli a4,a5,0x2 +800002b0: fcc42783 lw a5,-52(s0) +800002b4: 00f707b3 add a5,a4,a5 +800002b8: fcf42823 sw a5,-48(s0) +800002bc: fd042783 lw a5,-48(s0) +800002c0: 00279793 slli a5,a5,0x2 +800002c4: fdc42703 lw a4,-36(s0) +800002c8: 00f707b3 add a5,a4,a5 +800002cc: fec42703 lw a4,-20(s0) +800002d0: 00e7a023 sw a4,0(a5) +800002d4: 00000013 nop +800002d8: 03c12083 lw ra,60(sp) +800002dc: 03812403 lw s0,56(sp) +800002e0: 04010113 addi sp,sp,64 +800002e4: 00008067 ret -800002e4 : -800002e4: 00050293 mv t0,a0 -800002e8: 00000313 li t1,0 -800002ec: 00700393 li t2,7 -800002f0: 0062a023 sw t1,0(t0) -800002f4: 0062a223 sw t1,4(t0) -800002f8: 0062a423 sw t1,8(t0) -800002fc: 0072a623 sw t2,12(t0) -80000300: 0062a823 sw t1,16(t0) -80000304: 00008067 ret +800002e8 : +800002e8: 00050293 mv t0,a0 +800002ec: 00000313 li t1,0 +800002f0: 00700393 li t2,7 +800002f4: 0062a023 sw t1,0(t0) +800002f8: 0062a223 sw t1,4(t0) +800002fc: 0062a423 sw t1,8(t0) +80000300: 0072a623 sw t2,12(t0) +80000304: 0062a823 sw t1,16(t0) +80000308: 00008067 ret -80000308 : -80000308: 00050293 mv t0,a0 -8000030c: 0082a303 lw t1,8(t0) -80000310: 00130313 addi t1,t1,1 -80000314: 0062a423 sw t1,8(t0) -80000318: 01428313 addi t1,t0,20 -8000031c: 0042ae83 lw t4,4(t0) -80000320: 005e9393 slli t2,t4,0x5 -80000324: 00730333 add t1,t1,t2 -80000328: 0005ae03 lw t3,0(a1) -8000032c: 01c32023 sw t3,0(t1) -80000330: 0045ae03 lw t3,4(a1) -80000334: 01c32223 sw t3,4(t1) -80000338: 0085ae03 lw t3,8(a1) -8000033c: 01c32423 sw t3,8(t1) -80000340: 00c5ae03 lw t3,12(a1) -80000344: 01c32623 sw t3,12(t1) -80000348: 0105ae03 lw t3,16(a1) -8000034c: 01c32823 sw t3,16(t1) -80000350: 0145ae03 lw t3,20(a1) -80000354: 01c32a23 sw t3,20(t1) -80000358: 0185ae03 lw t3,24(a1) -8000035c: 01c32c23 sw t3,24(t1) -80000360: 01c5ae03 lw t3,28(a1) -80000364: 01c32e23 sw t3,28(t1) -80000368: 001e8e93 addi t4,t4,1 -8000036c: 03200f13 li t5,50 -80000370: 01ee9463 bne t4,t5,80000378 -80000374: 00000e93 li t4,0 +8000030c : +8000030c: 00050293 mv t0,a0 +80000310: 0082a303 lw t1,8(t0) +80000314: 00130313 addi t1,t1,1 +80000318: 0062a423 sw t1,8(t0) +8000031c: 01428313 addi t1,t0,20 +80000320: 0042ae83 lw t4,4(t0) +80000324: 005e9393 slli t2,t4,0x5 +80000328: 00730333 add t1,t1,t2 +8000032c: 0005ae03 lw t3,0(a1) +80000330: 01c32023 sw t3,0(t1) +80000334: 0045ae03 lw t3,4(a1) +80000338: 01c32223 sw t3,4(t1) +8000033c: 0085ae03 lw t3,8(a1) +80000340: 01c32423 sw t3,8(t1) +80000344: 00c5ae03 lw t3,12(a1) +80000348: 01c32623 sw t3,12(t1) +8000034c: 0105ae03 lw t3,16(a1) +80000350: 01c32823 sw t3,16(t1) +80000354: 0145ae03 lw t3,20(a1) +80000358: 01c32a23 sw t3,20(t1) +8000035c: 0185ae03 lw t3,24(a1) +80000360: 01c32c23 sw t3,24(t1) +80000364: 01c5ae03 lw t3,28(a1) +80000368: 01c32e23 sw t3,28(t1) +8000036c: 001e8e93 addi t4,t4,1 +80000370: 03200f13 li t5,50 +80000374: 01ee9463 bne t4,t5,8000037c +80000378: 00000e93 li t4,0 -80000378 : -80000378: 01d2a223 sw t4,4(t0) -8000037c: 00008067 ret +8000037c : +8000037c: 01d2a223 sw t4,4(t0) +80000380: 00008067 ret -80000380 : -80000380: 00050293 mv t0,a0 -80000384: 0082a303 lw t1,8(t0) -80000388: fff30313 addi t1,t1,-1 -8000038c: 0062a423 sw t1,8(t0) -80000390: 01428313 addi t1,t0,20 -80000394: 0002ae83 lw t4,0(t0) -80000398: 03200f93 li t6,50 -8000039c: 000e8f13 mv t5,t4 -800003a0: 001f0f13 addi t5,t5,1 -800003a4: 01ff1463 bne t5,t6,800003ac -800003a8: 00000f13 li t5,0 +80000384 : +80000384: 00050293 mv t0,a0 +80000388: 0082a303 lw t1,8(t0) +8000038c: fff30313 addi t1,t1,-1 +80000390: 0062a423 sw t1,8(t0) +80000394: 01428313 addi t1,t0,20 +80000398: 0002ae83 lw t4,0(t0) +8000039c: 03200f93 li t6,50 +800003a0: 000e8f13 mv t5,t4 +800003a4: 001f0f13 addi t5,t5,1 +800003a8: 01ff1463 bne t5,t6,800003b0 +800003ac: 00000f13 li t5,0 -800003ac : -800003ac: 01e2a023 sw t5,0(t0) -800003b0: 005e9393 slli t2,t4,0x5 -800003b4: 00730333 add t1,t1,t2 -800003b8: 00032e03 lw t3,0(t1) -800003bc: 01c5a023 sw t3,0(a1) -800003c0: 00432e03 lw t3,4(t1) -800003c4: 01c5a223 sw t3,4(a1) -800003c8: 00832e03 lw t3,8(t1) -800003cc: 01c5a423 sw t3,8(a1) -800003d0: 00c32e03 lw t3,12(t1) -800003d4: 01c5a623 sw t3,12(a1) -800003d8: 01032e03 lw t3,16(t1) -800003dc: 01c5a823 sw t3,16(a1) -800003e0: 01432e03 lw t3,20(t1) -800003e4: 01c5aa23 sw t3,20(a1) -800003e8: 01832e03 lw t3,24(t1) -800003ec: 01c5ac23 sw t3,24(a1) -800003f0: 01c32e03 lw t3,28(t1) -800003f4: 01c5ae23 sw t3,28(a1) -800003f8: 00008067 ret +800003b0 : +800003b0: 01e2a023 sw t5,0(t0) +800003b4: 005e9393 slli t2,t4,0x5 +800003b8: 00730333 add t1,t1,t2 +800003bc: 00032e03 lw t3,0(t1) +800003c0: 01c5a023 sw t3,0(a1) +800003c4: 00432e03 lw t3,4(t1) +800003c8: 01c5a223 sw t3,4(a1) +800003cc: 00832e03 lw t3,8(t1) +800003d0: 01c5a423 sw t3,8(a1) +800003d4: 00c32e03 lw t3,12(t1) +800003d8: 01c5a623 sw t3,12(a1) +800003dc: 01032e03 lw t3,16(t1) +800003e0: 01c5a823 sw t3,16(a1) +800003e4: 01432e03 lw t3,20(t1) +800003e8: 01c5aa23 sw t3,20(a1) +800003ec: 01832e03 lw t3,24(t1) +800003f0: 01c5ac23 sw t3,24(a1) +800003f4: 01c32e03 lw t3,28(t1) +800003f8: 01c5ae23 sw t3,28(a1) +800003fc: 00008067 ret -800003fc : -800003fc: 00050293 mv t0,a0 -80000400: 0082a303 lw t1,8(t0) -80000404: 00000513 li a0,0 -80000408: 03200e13 li t3,50 -8000040c: 006e1463 bne t3,t1,80000414 -80000410: 00150513 addi a0,a0,1 +80000400 : +80000400: 00050293 mv t0,a0 +80000404: 0082a303 lw t1,8(t0) +80000408: 00000513 li a0,0 +8000040c: 03200e13 li t3,50 +80000410: 006e1463 bne t3,t1,80000418 +80000414: 00150513 addi a0,a0,1 -80000414 : -80000414: 00008067 ret +80000418 : +80000418: 00008067 ret -80000418 : -80000418: 00050293 mv t0,a0 -8000041c: 0082a303 lw t1,8(t0) -80000420: 00000513 li a0,0 -80000424: 00000e13 li t3,0 -80000428: 006e1463 bne t3,t1,80000430 -8000042c: 00150513 addi a0,a0,1 +8000041c : +8000041c: 00050293 mv t0,a0 +80000420: 0082a303 lw t1,8(t0) +80000424: 00000513 li a0,0 +80000428: 00000e13 li t3,0 +8000042c: 006e1463 bne t3,t1,80000434 +80000430: 00150513 addi a0,a0,1 -80000430 : -80000430: 00008067 ret +80000434 : +80000434: 00008067 ret -80000434 : -80000434: 00050293 mv t0,a0 -80000438: 00c2a303 lw t1,12(t0) -8000043c: 0102a383 lw t2,16(t0) -80000440: 0063b533 sltu a0,t2,t1 -80000444: 00008067 ret +80000438 : +80000438: 00050293 mv t0,a0 +8000043c: 00c2a303 lw t1,12(t0) +80000440: 0102a383 lw t2,16(t0) +80000444: 0063b533 sltu a0,t2,t1 +80000448: 00008067 ret -80000448 : -80000448: fd010113 addi sp,sp,-48 -8000044c: 02112623 sw ra,44(sp) -80000450: 02812423 sw s0,40(sp) -80000454: 03010413 addi s0,sp,48 -80000458: fca42e23 sw a0,-36(s0) -8000045c: fdc42703 lw a4,-36(s0) -80000460: 00f00793 li a5,15 -80000464: 02e7e463 bltu a5,a4,8000048c -80000468: 810007b7 lui a5,0x81000 -8000046c: fdc42703 lw a4,-36(s0) -80000470: 00271713 slli a4,a4,0x2 -80000474: 1b878793 addi a5,a5,440 # 810001b8 -80000478: 00f707b3 add a5,a4,a5 -8000047c: 0007a783 lw a5,0(a5) -80000480: 00078513 mv a0,a5 -80000484: bf9ff0ef jal ra,8000007c -80000488: 0740006f j 800004fc -8000048c: 02000793 li a5,32 -80000490: fef42623 sw a5,-20(s0) -80000494: fe0405a3 sb zero,-21(s0) -80000498: fec42783 lw a5,-20(s0) -8000049c: ffc78793 addi a5,a5,-4 -800004a0: fdc42703 lw a4,-36(s0) -800004a4: 00f757b3 srl a5,a4,a5 -800004a8: 00f7f793 andi a5,a5,15 -800004ac: fef42223 sw a5,-28(s0) -800004b0: fe442783 lw a5,-28(s0) -800004b4: 00078663 beqz a5,800004c0 -800004b8: 00100793 li a5,1 -800004bc: fef405a3 sb a5,-21(s0) -800004c0: feb44783 lbu a5,-21(s0) -800004c4: 02078263 beqz a5,800004e8 -800004c8: 810007b7 lui a5,0x81000 -800004cc: fe442703 lw a4,-28(s0) -800004d0: 00271713 slli a4,a4,0x2 -800004d4: 1b878793 addi a5,a5,440 # 810001b8 -800004d8: 00f707b3 add a5,a4,a5 -800004dc: 0007a783 lw a5,0(a5) -800004e0: 00078513 mv a0,a5 -800004e4: b99ff0ef jal ra,8000007c -800004e8: fec42783 lw a5,-20(s0) -800004ec: ffc78793 addi a5,a5,-4 -800004f0: fef42623 sw a5,-20(s0) -800004f4: fec42783 lw a5,-20(s0) -800004f8: faf040e3 bgtz a5,80000498 -800004fc: 02c12083 lw ra,44(sp) -80000500: 02812403 lw s0,40(sp) -80000504: 03010113 addi sp,sp,48 -80000508: 00008067 ret +8000044c : +8000044c: fd010113 addi sp,sp,-48 +80000450: 02112623 sw ra,44(sp) +80000454: 02812423 sw s0,40(sp) +80000458: 03010413 addi s0,sp,48 +8000045c: fca42e23 sw a0,-36(s0) +80000460: fdc42703 lw a4,-36(s0) +80000464: 00f00793 li a5,15 +80000468: 02e7e463 bltu a5,a4,80000490 +8000046c: 810007b7 lui a5,0x81000 +80000470: fdc42703 lw a4,-36(s0) +80000474: 00271713 slli a4,a4,0x2 +80000478: 19478793 addi a5,a5,404 # 81000194 +8000047c: 00f707b3 add a5,a4,a5 +80000480: 0007a783 lw a5,0(a5) +80000484: 00078513 mv a0,a5 +80000488: bf5ff0ef jal ra,8000007c +8000048c: 0740006f j 80000500 +80000490: 02000793 li a5,32 +80000494: fef42623 sw a5,-20(s0) +80000498: fe0405a3 sb zero,-21(s0) +8000049c: fec42783 lw a5,-20(s0) +800004a0: ffc78793 addi a5,a5,-4 +800004a4: fdc42703 lw a4,-36(s0) +800004a8: 00f757b3 srl a5,a4,a5 +800004ac: 00f7f793 andi a5,a5,15 +800004b0: fef42223 sw a5,-28(s0) +800004b4: fe442783 lw a5,-28(s0) +800004b8: 00078663 beqz a5,800004c4 +800004bc: 00100793 li a5,1 +800004c0: fef405a3 sb a5,-21(s0) +800004c4: feb44783 lbu a5,-21(s0) +800004c8: 02078263 beqz a5,800004ec +800004cc: 810007b7 lui a5,0x81000 +800004d0: fe442703 lw a4,-28(s0) +800004d4: 00271713 slli a4,a4,0x2 +800004d8: 19478793 addi a5,a5,404 # 81000194 +800004dc: 00f707b3 add a5,a4,a5 +800004e0: 0007a783 lw a5,0(a5) +800004e4: 00078513 mv a0,a5 +800004e8: b95ff0ef jal ra,8000007c +800004ec: fec42783 lw a5,-20(s0) +800004f0: ffc78793 addi a5,a5,-4 +800004f4: fef42623 sw a5,-20(s0) +800004f8: fec42783 lw a5,-20(s0) +800004fc: faf040e3 bgtz a5,8000049c +80000500: 02c12083 lw ra,44(sp) +80000504: 02812403 lw s0,40(sp) +80000508: 03010113 addi sp,sp,48 +8000050c: 00008067 ret -8000050c : -8000050c: fd010113 addi sp,sp,-48 -80000510: 02112623 sw ra,44(sp) -80000514: 02812423 sw s0,40(sp) -80000518: 03a12223 sw s10,36(sp) -8000051c: 03010413 addi s0,sp,48 -80000520: 000d0713 mv a4,s10 -80000524: 00070793 mv a5,a4 -80000528: 00379793 slli a5,a5,0x3 -8000052c: 40e787b3 sub a5,a5,a4 -80000530: 00279793 slli a5,a5,0x2 -80000534: 40e787b3 sub a5,a5,a4 -80000538: 00479713 slli a4,a5,0x4 -8000053c: 40f70733 sub a4,a4,a5 -80000540: 00271793 slli a5,a4,0x2 -80000544: 00078713 mv a4,a5 -80000548: 810007b7 lui a5,0x81000 -8000054c: 24478793 addi a5,a5,580 # 81000244 -80000550: 00f707b3 add a5,a4,a5 -80000554: 00078513 mv a0,a5 -80000558: ec1ff0ef jal ra,80000418 -8000055c: 00050793 mv a5,a0 -80000560: 04078263 beqz a5,800005a4 -80000564: 810007b7 lui a5,0x81000 -80000568: 0d478513 addi a0,a5,212 # 810000d4 -8000056c: b11ff0ef jal ra,8000007c -80000570: 000d0793 mv a5,s10 -80000574: 00078513 mv a0,a5 -80000578: ed1ff0ef jal ra,80000448 -8000057c: 810007b7 lui a5,0x81000 -80000580: 0dc78513 addi a0,a5,220 # 810000dc -80000584: af9ff0ef jal ra,8000007c -80000588: 000d0713 mv a4,s10 -8000058c: 810037b7 lui a5,0x81003 -80000590: 4e478793 addi a5,a5,1252 # 810034e4 -80000594: 00f707b3 add a5,a4,a5 -80000598: 00100713 li a4,1 -8000059c: 00e78023 sb a4,0(a5) -800005a0: 00000073 ecall -800005a4: 000d0713 mv a4,s10 -800005a8: 00070793 mv a5,a4 -800005ac: 00379793 slli a5,a5,0x3 -800005b0: 40e787b3 sub a5,a5,a4 -800005b4: 00279793 slli a5,a5,0x2 -800005b8: 40e787b3 sub a5,a5,a4 -800005bc: 00479713 slli a4,a5,0x4 -800005c0: 40f70733 sub a4,a4,a5 -800005c4: 00271793 slli a5,a4,0x2 -800005c8: 00078713 mv a4,a5 -800005cc: 810007b7 lui a5,0x81000 -800005d0: 24478793 addi a5,a5,580 # 81000244 -800005d4: 00f707b3 add a5,a4,a5 -800005d8: fd040713 addi a4,s0,-48 -800005dc: 00070593 mv a1,a4 -800005e0: 00078513 mv a0,a5 -800005e4: d9dff0ef jal ra,80000380 -800005e8: fd842783 lw a5,-40(s0) -800005ec: 00078113 mv sp,a5 -800005f0: fd442503 lw a0,-44(s0) -800005f4: fd042583 lw a1,-48(s0) -800005f8: fdc42603 lw a2,-36(s0) -800005fc: fe042683 lw a3,-32(s0) -80000600: fe442703 lw a4,-28(s0) -80000604: fe842783 lw a5,-24(s0) -80000608: fec42803 lw a6,-20(s0) -8000060c: a01ff0ef jal ra,8000000c -80000610: 00000073 ecall -80000614: 00000013 nop -80000618: 02c12083 lw ra,44(sp) -8000061c: 02812403 lw s0,40(sp) -80000620: 02412d03 lw s10,36(sp) -80000624: 03010113 addi sp,sp,48 -80000628: 00008067 ret +80000510 : +80000510: fd010113 addi sp,sp,-48 +80000514: 02112623 sw ra,44(sp) +80000518: 02812423 sw s0,40(sp) +8000051c: 03a12223 sw s10,36(sp) +80000520: 03010413 addi s0,sp,48 +80000524: 000d0713 mv a4,s10 +80000528: 65400793 li a5,1620 +8000052c: 02f70733 mul a4,a4,a5 +80000530: 810007b7 lui a5,0x81000 +80000534: 22078793 addi a5,a5,544 # 81000220 +80000538: 00f707b3 add a5,a4,a5 +8000053c: 00078513 mv a0,a5 +80000540: eddff0ef jal ra,8000041c +80000544: 00050793 mv a5,a0 +80000548: 02078063 beqz a5,80000568 +8000054c: 000d0713 mv a4,s10 +80000550: 810037b7 lui a5,0x81003 +80000554: 4c078793 addi a5,a5,1216 # 810034c0 +80000558: 00f707b3 add a5,a4,a5 +8000055c: 00100713 li a4,1 +80000560: 00e78023 sb a4,0(a5) +80000564: 00000073 ecall +80000568: 000d0713 mv a4,s10 +8000056c: 65400793 li a5,1620 +80000570: 02f70733 mul a4,a4,a5 +80000574: 810007b7 lui a5,0x81000 +80000578: 22078793 addi a5,a5,544 # 81000220 +8000057c: 00f707b3 add a5,a4,a5 +80000580: fd040713 addi a4,s0,-48 +80000584: 00070593 mv a1,a4 +80000588: 00078513 mv a0,a5 +8000058c: df9ff0ef jal ra,80000384 +80000590: fd842783 lw a5,-40(s0) +80000594: 00078113 mv sp,a5 +80000598: fd442503 lw a0,-44(s0) +8000059c: fd042583 lw a1,-48(s0) +800005a0: fdc42603 lw a2,-36(s0) +800005a4: fe042683 lw a3,-32(s0) +800005a8: fe442703 lw a4,-28(s0) +800005ac: fe842783 lw a5,-24(s0) +800005b0: fec42803 lw a6,-20(s0) +800005b4: a59ff0ef jal ra,8000000c +800005b8: 00000073 ecall +800005bc: 00000013 nop +800005c0: 02c12083 lw ra,44(sp) +800005c4: 02812403 lw s0,40(sp) +800005c8: 02412d03 lw s10,36(sp) +800005cc: 03010113 addi sp,sp,48 +800005d0: 00008067 ret -8000062c : -8000062c: fc010113 addi sp,sp,-64 -80000630: 02112e23 sw ra,60(sp) -80000634: 02812c23 sw s0,56(sp) -80000638: 04010413 addi s0,sp,64 -8000063c: 00010993 mv s3,sp -80000640: fe042623 sw zero,-20(s0) -80000644: 0c00006f j 80000704 -80000648: fec42703 lw a4,-20(s0) -8000064c: 00070793 mv a5,a4 -80000650: 00379793 slli a5,a5,0x3 -80000654: 40e787b3 sub a5,a5,a4 -80000658: 00279793 slli a5,a5,0x2 -8000065c: 40e787b3 sub a5,a5,a4 -80000660: 00479713 slli a4,a5,0x4 -80000664: 40f70733 sub a4,a4,a5 -80000668: 00271793 slli a5,a4,0x2 -8000066c: 00078713 mv a4,a5 -80000670: 810007b7 lui a5,0x81000 -80000674: 24478793 addi a5,a5,580 # 81000244 -80000678: 00f707b3 add a5,a4,a5 -8000067c: 00078513 mv a0,a5 -80000680: d99ff0ef jal ra,80000418 -80000684: 00050793 mv a5,a0 -80000688: 06079863 bnez a5,800006f8 -8000068c: fec42703 lw a4,-20(s0) -80000690: 00070793 mv a5,a4 -80000694: 00379793 slli a5,a5,0x3 -80000698: 40e787b3 sub a5,a5,a4 -8000069c: 00279793 slli a5,a5,0x2 -800006a0: 40e787b3 sub a5,a5,a4 -800006a4: 00479713 slli a4,a5,0x4 -800006a8: 40f70733 sub a4,a4,a5 -800006ac: 00271793 slli a5,a4,0x2 -800006b0: 00078713 mv a4,a5 -800006b4: 810007b7 lui a5,0x81000 -800006b8: 24478793 addi a5,a5,580 # 81000244 -800006bc: 00f707b3 add a5,a4,a5 -800006c0: fcc40713 addi a4,s0,-52 -800006c4: 00070593 mv a1,a4 -800006c8: 00078513 mv a0,a5 -800006cc: cb5ff0ef jal ra,80000380 -800006d0: fd442783 lw a5,-44(s0) -800006d4: 00078113 mv sp,a5 -800006d8: fd042503 lw a0,-48(s0) -800006dc: fcc42583 lw a1,-52(s0) -800006e0: fd842603 lw a2,-40(s0) -800006e4: fdc42683 lw a3,-36(s0) -800006e8: fe042703 lw a4,-32(s0) -800006ec: fe442783 lw a5,-28(s0) -800006f0: fe842803 lw a6,-24(s0) -800006f4: 979ff0ef jal ra,8000006c -800006f8: fec42783 lw a5,-20(s0) -800006fc: 00178793 addi a5,a5,1 -80000700: fef42623 sw a5,-20(s0) -80000704: fec42703 lw a4,-20(s0) -80000708: 00600793 li a5,6 -8000070c: f2e7dee3 bge a5,a4,80000648 -80000710: 00098113 mv sp,s3 -80000714: 00000013 nop -80000718: 03c12083 lw ra,60(sp) -8000071c: 03812403 lw s0,56(sp) -80000720: 04010113 addi sp,sp,64 -80000724: 00008067 ret +800005d4 : +800005d4: fc010113 addi sp,sp,-64 +800005d8: 02112e23 sw ra,60(sp) +800005dc: 02812c23 sw s0,56(sp) +800005e0: 04010413 addi s0,sp,64 +800005e4: 00010993 mv s3,sp +800005e8: fe042623 sw zero,-20(s0) +800005ec: 0880006f j 80000674 +800005f0: fec42703 lw a4,-20(s0) +800005f4: 65400793 li a5,1620 +800005f8: 02f70733 mul a4,a4,a5 +800005fc: 810007b7 lui a5,0x81000 +80000600: 22078793 addi a5,a5,544 # 81000220 +80000604: 00f707b3 add a5,a4,a5 +80000608: 00078513 mv a0,a5 +8000060c: e11ff0ef jal ra,8000041c +80000610: 00050793 mv a5,a0 +80000614: 04079a63 bnez a5,80000668 +80000618: fec42703 lw a4,-20(s0) +8000061c: 65400793 li a5,1620 +80000620: 02f70733 mul a4,a4,a5 +80000624: 810007b7 lui a5,0x81000 +80000628: 22078793 addi a5,a5,544 # 81000220 +8000062c: 00f707b3 add a5,a4,a5 +80000630: fcc40713 addi a4,s0,-52 +80000634: 00070593 mv a1,a4 +80000638: 00078513 mv a0,a5 +8000063c: d49ff0ef jal ra,80000384 +80000640: fd442783 lw a5,-44(s0) +80000644: 00078113 mv sp,a5 +80000648: fd042503 lw a0,-48(s0) +8000064c: fcc42583 lw a1,-52(s0) +80000650: fd842603 lw a2,-40(s0) +80000654: fdc42683 lw a3,-36(s0) +80000658: fe042703 lw a4,-32(s0) +8000065c: fe442783 lw a5,-28(s0) +80000660: fe842803 lw a6,-24(s0) +80000664: a09ff0ef jal ra,8000006c +80000668: fec42783 lw a5,-20(s0) +8000066c: 00178793 addi a5,a5,1 +80000670: fef42623 sw a5,-20(s0) +80000674: fec42703 lw a4,-20(s0) +80000678: 00600793 li a5,6 +8000067c: f6e7dae3 bge a5,a4,800005f0 +80000680: 00098113 mv sp,s3 +80000684: 00000013 nop +80000688: 03c12083 lw ra,60(sp) +8000068c: 03812403 lw s0,56(sp) +80000690: 04010113 addi sp,sp,64 +80000694: 00008067 ret -80000728 : -80000728: fd010113 addi sp,sp,-48 -8000072c: 02812623 sw s0,44(sp) -80000730: 03010413 addi s0,sp,48 -80000734: fca42e23 sw a0,-36(s0) -80000738: fe042623 sw zero,-20(s0) -8000073c: 0100006f j 8000074c -80000740: fec42783 lw a5,-20(s0) -80000744: 00178793 addi a5,a5,1 -80000748: fef42623 sw a5,-20(s0) -8000074c: fec42703 lw a4,-20(s0) -80000750: fdc42783 lw a5,-36(s0) -80000754: fef746e3 blt a4,a5,80000740 -80000758: 00000013 nop -8000075c: 02c12403 lw s0,44(sp) -80000760: 03010113 addi sp,sp,48 -80000764: 00008067 ret +80000698 : +80000698: fd010113 addi sp,sp,-48 +8000069c: 02812623 sw s0,44(sp) +800006a0: 03010413 addi s0,sp,48 +800006a4: fca42e23 sw a0,-36(s0) +800006a8: fe042623 sw zero,-20(s0) +800006ac: 0100006f j 800006bc +800006b0: fec42783 lw a5,-20(s0) +800006b4: 00178793 addi a5,a5,1 +800006b8: fef42623 sw a5,-20(s0) +800006bc: fec42703 lw a4,-20(s0) +800006c0: fdc42783 lw a5,-36(s0) +800006c4: fef746e3 blt a4,a5,800006b0 +800006c8: 00000013 nop +800006cc: 02c12403 lw s0,44(sp) +800006d0: 03010113 addi sp,sp,48 +800006d4: 00008067 ret -80000768 : -80000768: fa010113 addi sp,sp,-96 -8000076c: 04112e23 sw ra,92(sp) -80000770: 04812c23 sw s0,88(sp) -80000774: 06010413 addi s0,sp,96 -80000778: faa42e23 sw a0,-68(s0) -8000077c: fab42c23 sw a1,-72(s0) -80000780: fac42a23 sw a2,-76(s0) -80000784: fad42823 sw a3,-80(s0) -80000788: fae42623 sw a4,-84(s0) -8000078c: faf42423 sw a5,-88(s0) -80000790: 00010913 mv s2,sp -80000794: fe042623 sw zero,-20(s0) -80000798: fe042423 sw zero,-24(s0) -8000079c: 0b80006f j 80000854 -800007a0: ffff09b7 lui s3,0xffff0 -800007a4: 01310133 add sp,sp,s3 -800007a8: fe842783 lw a5,-24(s0) -800007ac: fcf42423 sw a5,-56(s0) -800007b0: fb842783 lw a5,-72(s0) -800007b4: fcf42623 sw a5,-52(s0) -800007b8: 00010793 mv a5,sp -800007bc: fcf42823 sw a5,-48(s0) -800007c0: fb442783 lw a5,-76(s0) -800007c4: fcf42a23 sw a5,-44(s0) -800007c8: fb042783 lw a5,-80(s0) -800007cc: fcf42c23 sw a5,-40(s0) -800007d0: fac42783 lw a5,-84(s0) -800007d4: fcf42e23 sw a5,-36(s0) -800007d8: fa842783 lw a5,-88(s0) -800007dc: fef42023 sw a5,-32(s0) -800007e0: fec42783 lw a5,-20(s0) -800007e4: fef42223 sw a5,-28(s0) -800007e8: fec42703 lw a4,-20(s0) -800007ec: 00070793 mv a5,a4 -800007f0: 00379793 slli a5,a5,0x3 -800007f4: 40e787b3 sub a5,a5,a4 -800007f8: 00279793 slli a5,a5,0x2 -800007fc: 40e787b3 sub a5,a5,a4 -80000800: 00479713 slli a4,a5,0x4 -80000804: 40f70733 sub a4,a4,a5 -80000808: 00271793 slli a5,a4,0x2 -8000080c: 00078713 mv a4,a5 -80000810: 810007b7 lui a5,0x81000 -80000814: 24478793 addi a5,a5,580 # 81000244 -80000818: 00f707b3 add a5,a4,a5 -8000081c: fc840713 addi a4,s0,-56 -80000820: 00070593 mv a1,a4 -80000824: 00078513 mv a0,a5 -80000828: ae1ff0ef jal ra,80000308 -8000082c: fec42783 lw a5,-20(s0) -80000830: 00178793 addi a5,a5,1 -80000834: fef42623 sw a5,-20(s0) -80000838: fec42703 lw a4,-20(s0) -8000083c: 00600793 li a5,6 -80000840: 00e7d463 bge a5,a4,80000848 -80000844: fe042623 sw zero,-20(s0) -80000848: fe842783 lw a5,-24(s0) -8000084c: 00178793 addi a5,a5,1 -80000850: fef42423 sw a5,-24(s0) -80000854: fe842703 lw a4,-24(s0) -80000858: fbc42783 lw a5,-68(s0) -8000085c: f4f762e3 bltu a4,a5,800007a0 -80000860: 00090113 mv sp,s2 -80000864: dc9ff0ef jal ra,8000062c -80000868: 00000013 nop -8000086c: 05c12083 lw ra,92(sp) -80000870: 05812403 lw s0,88(sp) -80000874: 06010113 addi sp,sp,96 +800006d8 : +800006d8: fa010113 addi sp,sp,-96 +800006dc: 04112e23 sw ra,92(sp) +800006e0: 04812c23 sw s0,88(sp) +800006e4: 06010413 addi s0,sp,96 +800006e8: faa42e23 sw a0,-68(s0) +800006ec: fab42c23 sw a1,-72(s0) +800006f0: fac42a23 sw a2,-76(s0) +800006f4: fad42823 sw a3,-80(s0) +800006f8: fae42623 sw a4,-84(s0) +800006fc: faf42423 sw a5,-88(s0) +80000700: 00010913 mv s2,sp +80000704: fe042623 sw zero,-20(s0) +80000708: fe042423 sw zero,-24(s0) +8000070c: 09c0006f j 800007a8 +80000710: ffff09b7 lui s3,0xffff0 +80000714: 01310133 add sp,sp,s3 +80000718: fe842783 lw a5,-24(s0) +8000071c: fcf42423 sw a5,-56(s0) +80000720: fb842783 lw a5,-72(s0) +80000724: fcf42623 sw a5,-52(s0) +80000728: 00010793 mv a5,sp +8000072c: fcf42823 sw a5,-48(s0) +80000730: fb442783 lw a5,-76(s0) +80000734: fcf42a23 sw a5,-44(s0) +80000738: fb042783 lw a5,-80(s0) +8000073c: fcf42c23 sw a5,-40(s0) +80000740: fac42783 lw a5,-84(s0) +80000744: fcf42e23 sw a5,-36(s0) +80000748: fa842783 lw a5,-88(s0) +8000074c: fef42023 sw a5,-32(s0) +80000750: fec42783 lw a5,-20(s0) +80000754: fef42223 sw a5,-28(s0) +80000758: fec42703 lw a4,-20(s0) +8000075c: 65400793 li a5,1620 +80000760: 02f70733 mul a4,a4,a5 +80000764: 810007b7 lui a5,0x81000 +80000768: 22078793 addi a5,a5,544 # 81000220 +8000076c: 00f707b3 add a5,a4,a5 +80000770: fc840713 addi a4,s0,-56 +80000774: 00070593 mv a1,a4 +80000778: 00078513 mv a0,a5 +8000077c: b91ff0ef jal ra,8000030c +80000780: fec42783 lw a5,-20(s0) +80000784: 00178793 addi a5,a5,1 +80000788: fef42623 sw a5,-20(s0) +8000078c: fec42703 lw a4,-20(s0) +80000790: 00600793 li a5,6 +80000794: 00e7d463 bge a5,a4,8000079c +80000798: fe042623 sw zero,-20(s0) +8000079c: fe842783 lw a5,-24(s0) +800007a0: 00178793 addi a5,a5,1 +800007a4: fef42423 sw a5,-24(s0) +800007a8: fe842703 lw a4,-24(s0) +800007ac: fbc42783 lw a5,-68(s0) +800007b0: f6f760e3 bltu a4,a5,80000710 +800007b4: 00090113 mv sp,s2 +800007b8: e1dff0ef jal ra,800005d4 +800007bc: 00000013 nop +800007c0: 05c12083 lw ra,92(sp) +800007c4: 05812403 lw s0,88(sp) +800007c8: 06010113 addi sp,sp,96 +800007cc: 00008067 ret + +800007d0 : +800007d0: fd010113 addi sp,sp,-48 +800007d4: 02812623 sw s0,44(sp) +800007d8: 03010413 addi s0,sp,48 +800007dc: fca42e23 sw a0,-36(s0) +800007e0: fe0407a3 sb zero,-17(s0) +800007e4: 0500006f j 80000834 +800007e8: 00100793 li a5,1 +800007ec: fef407a3 sb a5,-17(s0) +800007f0: fe042423 sw zero,-24(s0) +800007f4: 0340006f j 80000828 +800007f8: fef44783 lbu a5,-17(s0) +800007fc: 81003737 lui a4,0x81003 +80000800: 4c070693 addi a3,a4,1216 # 810034c0 +80000804: fe842703 lw a4,-24(s0) +80000808: 00e68733 add a4,a3,a4 +8000080c: 00074703 lbu a4,0(a4) +80000810: 00e7f7b3 and a5,a5,a4 +80000814: 00f037b3 snez a5,a5 +80000818: fef407a3 sb a5,-17(s0) +8000081c: fe842783 lw a5,-24(s0) +80000820: 00178793 addi a5,a5,1 +80000824: fef42423 sw a5,-24(s0) +80000828: fe842783 lw a5,-24(s0) +8000082c: fdc42703 lw a4,-36(s0) +80000830: fce7e4e3 bltu a5,a4,800007f8 +80000834: fef44783 lbu a5,-17(s0) +80000838: 0017c793 xori a5,a5,1 +8000083c: 0ff7f793 andi a5,a5,255 +80000840: fa0794e3 bnez a5,800007e8 +80000844: 00000013 nop +80000848: 02c12403 lw s0,44(sp) +8000084c: 03010113 addi sp,sp,48 +80000850: 00008067 ret + +80000854 : +80000854: ff010113 addi sp,sp,-16 +80000858: 00812623 sw s0,12(sp) +8000085c: 01712423 sw s7,8(sp) +80000860: 01010413 addi s0,sp,16 +80000864: 000b8793 mv a5,s7 +80000868: 00078513 mv a0,a5 +8000086c: 00c12403 lw s0,12(sp) +80000870: 00812b83 lw s7,8(sp) +80000874: 01010113 addi sp,sp,16 80000878: 00008067 ret -8000087c : -8000087c: fd010113 addi sp,sp,-48 -80000880: 02112623 sw ra,44(sp) -80000884: 02812423 sw s0,40(sp) -80000888: 03010413 addi s0,sp,48 -8000088c: fca42e23 sw a0,-36(s0) -80000890: 810007b7 lui a5,0x81000 -80000894: 0e078513 addi a0,a5,224 # 810000e0 -80000898: fe4ff0ef jal ra,8000007c -8000089c: fe0407a3 sb zero,-17(s0) -800008a0: 0500006f j 800008f0 -800008a4: 00100793 li a5,1 -800008a8: fef407a3 sb a5,-17(s0) -800008ac: fe042423 sw zero,-24(s0) -800008b0: 0340006f j 800008e4 -800008b4: fef44783 lbu a5,-17(s0) -800008b8: 81003737 lui a4,0x81003 -800008bc: 4e470693 addi a3,a4,1252 # 810034e4 -800008c0: fe842703 lw a4,-24(s0) -800008c4: 00e68733 add a4,a3,a4 -800008c8: 00074703 lbu a4,0(a4) -800008cc: 00e7f7b3 and a5,a5,a4 -800008d0: 00f037b3 snez a5,a5 -800008d4: fef407a3 sb a5,-17(s0) -800008d8: fe842783 lw a5,-24(s0) -800008dc: 00178793 addi a5,a5,1 -800008e0: fef42423 sw a5,-24(s0) -800008e4: fe842783 lw a5,-24(s0) -800008e8: fdc42703 lw a4,-36(s0) -800008ec: fce7e4e3 bltu a5,a4,800008b4 -800008f0: fef44783 lbu a5,-17(s0) -800008f4: 0017c793 xori a5,a5,1 -800008f8: 0ff7f793 andi a5,a5,255 -800008fc: fa0794e3 bnez a5,800008a4 -80000900: 00000013 nop -80000904: 02c12083 lw ra,44(sp) -80000908: 02812403 lw s0,40(sp) -8000090c: 03010113 addi sp,sp,48 -80000910: 00008067 ret +8000087c : +8000087c: ff010113 addi sp,sp,-16 +80000880: 00812623 sw s0,12(sp) +80000884: 01812423 sw s8,8(sp) +80000888: 01010413 addi s0,sp,16 +8000088c: 000c0793 mv a5,s8 +80000890: 00078513 mv a0,a5 +80000894: 00c12403 lw s0,12(sp) +80000898: 00812c03 lw s8,8(sp) +8000089c: 01010113 addi sp,sp,16 +800008a0: 00008067 ret -80000914 : -80000914: ff010113 addi sp,sp,-16 -80000918: 00812623 sw s0,12(sp) -8000091c: 01712423 sw s7,8(sp) -80000920: 01010413 addi s0,sp,16 -80000924: 000b8793 mv a5,s7 -80000928: 00078513 mv a0,a5 -8000092c: 00c12403 lw s0,12(sp) -80000930: 00812b83 lw s7,8(sp) -80000934: 01010113 addi sp,sp,16 -80000938: 00008067 ret - -8000093c : -8000093c: ff010113 addi sp,sp,-16 -80000940: 00812623 sw s0,12(sp) -80000944: 01812423 sw s8,8(sp) -80000948: 01010413 addi s0,sp,16 -8000094c: 000c0793 mv a5,s8 -80000950: 00078513 mv a0,a5 -80000954: 00c12403 lw s0,12(sp) -80000958: 00812c03 lw s8,8(sp) -8000095c: 01010113 addi sp,sp,16 -80000960: 00008067 ret - -80000964 : -80000964: ff010113 addi sp,sp,-16 -80000968: 00812623 sw s0,12(sp) -8000096c: 01912423 sw s9,8(sp) -80000970: 01010413 addi s0,sp,16 -80000974: 000c8793 mv a5,s9 -80000978: 00078513 mv a0,a5 -8000097c: 00c12403 lw s0,12(sp) -80000980: 00812c83 lw s9,8(sp) -80000984: 01010113 addi sp,sp,16 -80000988: 00008067 ret +800008a4 : +800008a4: ff010113 addi sp,sp,-16 +800008a8: 00812623 sw s0,12(sp) +800008ac: 01912423 sw s9,8(sp) +800008b0: 01010413 addi s0,sp,16 +800008b4: 000c8793 mv a5,s9 +800008b8: 00078513 mv a0,a5 +800008bc: 00c12403 lw s0,12(sp) +800008c0: 00812c83 lw s9,8(sp) +800008c4: 01010113 addi sp,sp,16 +800008c8: 00008067 ret Disassembly of section .rodata: @@ -708,25 +660,25 @@ Disassembly of section .rodata: 8100002a: 0000 unimp 8100002c: 0062 c.slli zero,0x18 8100002e: 0000 unimp -81000030: 00000063 beqz zero,81000030 +81000030: 00000063 beqz zero,81000030 81000034: 0064 addi s1,sp,12 81000036: 0000 unimp 81000038: 0065 c.nop 25 8100003a: 0000 unimp 8100003c: 0066 c.slli zero,0x19 8100003e: 0000 unimp -81000040: 2d2d jal 8100067a -81000042: 2d2d jal 8100067c -81000044: 2d2d jal 8100067e -81000046: 2d2d jal 81000680 -81000048: 2d2d jal 81000682 -8100004a: 2d2d jal 81000684 -8100004c: 2d2d jal 81000686 -8100004e: 2d2d jal 81000688 -81000050: 2d2d jal 8100068a -81000052: 2d2d jal 8100068c -81000054: 2d2d jal 8100068e -81000056: 2d2d jal 81000690 +81000040: 2d2d jal 8100067a +81000042: 2d2d jal 8100067c +81000044: 2d2d jal 8100067e +81000046: 2d2d jal 81000680 +81000048: 2d2d jal 81000682 +8100004a: 2d2d jal 81000684 +8100004c: 2d2d jal 81000686 +8100004e: 2d2d jal 81000688 +81000050: 2d2d jal 8100068a +81000052: 2d2d jal 8100068c +81000054: 2d2d jal 8100068e +81000056: 2d2d jal 81000690 81000058: 0a2d addi s4,s4,11 8100005a: 0000 unimp 8100005c: 4946 lw s2,80(sp) @@ -735,27 +687,27 @@ Disassembly of section .rodata: 81000062: 0a5a slli s4,s4,0x16 81000064: 0000 unimp 81000066: 0000 unimp -81000068: 203a fld ft0,392(sp) +81000068: 000a c.slli zero,0x2 8100006a: 0000 unimp -8100006c: 000a c.slli zero,0x2 +8100006c: 0020 addi s0,sp,8 8100006e: 0000 unimp -81000070: 2d2d jal 810006aa -81000072: 2d2d jal 810006ac -81000074: 2d2d jal 810006ae -81000076: 2d2d jal 810006b0 -81000078: 2d2d jal 810006b2 -8100007a: 2d2d jal 810006b4 -8100007c: 2d2d jal 810006b6 -8100007e: 2d2d jal 810006b8 -81000080: 2d2d jal 810006ba -81000082: 2d2d jal 810006bc -81000084: 2d2d jal 810006be -81000086: 2d2d jal 810006c0 -81000088: 2d2d jal 810006c2 -8100008a: 2d2d jal 810006c4 -8100008c: 2d2d jal 810006c6 -8100008e: 0a2d addi s4,s4,11 -81000090: 0000 unimp +81000070: 2d0a fld fs10,128(sp) +81000072: 2d2d jal 810006ac +81000074: 2d2d jal 810006ae +81000076: 2d2d jal 810006b0 +81000078: 2d2d jal 810006b2 +8100007a: 2d2d jal 810006b4 +8100007c: 2d2d jal 810006b6 +8100007e: 2d2d jal 810006b8 +81000080: 2d2d jal 810006ba +81000082: 2d2d jal 810006bc +81000084: 2d2d jal 810006be +81000086: 2d2d jal 810006c0 +81000088: 2d2d jal 810006c2 +8100008a: 2d2d jal 810006c4 +8100008c: 2d2d jal 810006c6 +8100008e: 2d2d jal 810006c8 +81000090: 000a c.slli zero,0x2 81000092: 0000 unimp 81000094: 0030 addi a2,sp,8 81000096: 0000 unimp @@ -779,185 +731,128 @@ Disassembly of section .rodata: 810000be: 0000 unimp 810000c0: 0062 c.slli zero,0x18 810000c2: 0000 unimp -810000c4: 00000063 beqz zero,810000c4 +810000c4: 00000063 beqz zero,810000c4 810000c8: 0064 addi s1,sp,12 810000ca: 0000 unimp 810000cc: 0065 c.nop 25 810000ce: 0000 unimp 810000d0: 0066 c.slli zero,0x19 -810000d2: 0000 unimp -810000d4: 6f64 flw fs1,92(a4) -810000d6: 656e flw fa0,216(sp) -810000d8: 203a fld ft0,392(sp) -810000da: 0000 unimp -810000dc: 000a c.slli zero,0x2 -810000de: 0000 unimp -810000e0: 6261 lui tp,0x18 -810000e2: 2074756f jal a0,81047ae8 -810000e6: 6f74 flw fa3,92(a4) -810000e8: 7720 flw fs0,104(a4) -810000ea: 6961 lui s2,0x18 -810000ec: 2074 fld fa3,192(s0) -810000ee: 6f66 flw ft10,88(sp) -810000f0: 2072 fld ft0,280(sp) -810000f2: 6f64 flw fs1,92(a4) -810000f4: 656e flw fa0,216(sp) -810000f6: 000a c.slli zero,0x2 Disassembly of section .data: -810000f8 : -810000f8: 0000 unimp +810000d4 : +810000d4: 0000 unimp +810000d6: 8100 0x8100 +810000d8: 0004 0x4 +810000da: 8100 0x8100 +810000dc: 0008 0x8 +810000de: 8100 0x8100 +810000e0: 000c 0xc +810000e2: 8100 0x8100 +810000e4: 0010 0x10 +810000e6: 8100 0x8100 +810000e8: 0014 0x14 +810000ea: 8100 0x8100 +810000ec: 0018 0x18 +810000ee: 8100 0x8100 +810000f0: 001c 0x1c +810000f2: 8100 0x8100 +810000f4: 0020 addi s0,sp,8 +810000f6: 8100 0x8100 +810000f8: 0024 addi s1,sp,8 810000fa: 8100 0x8100 -810000fc: 0004 0x4 +810000fc: 0028 addi a0,sp,8 810000fe: 8100 0x8100 -81000100: 0008 0x8 +81000100: 002c addi a1,sp,8 81000102: 8100 0x8100 -81000104: 000c 0xc +81000104: 0030 addi a2,sp,8 81000106: 8100 0x8100 -81000108: 0010 0x10 +81000108: 0034 addi a3,sp,8 8100010a: 8100 0x8100 -8100010c: 0014 0x14 +8100010c: 0038 addi a4,sp,8 8100010e: 8100 0x8100 -81000110: 0018 0x18 +81000110: 003c addi a5,sp,8 81000112: 8100 0x8100 -81000114: 001c 0x1c -81000116: 8100 0x8100 -81000118: 0020 addi s0,sp,8 -8100011a: 8100 0x8100 -8100011c: 0024 addi s1,sp,8 -8100011e: 8100 0x8100 -81000120: 0028 addi a0,sp,8 -81000122: 8100 0x8100 -81000124: 002c addi a1,sp,8 -81000126: 8100 0x8100 -81000128: 0030 addi a2,sp,8 -8100012a: 8100 0x8100 -8100012c: 0034 addi a3,sp,8 -8100012e: 8100 0x8100 -81000130: 0038 addi a4,sp,8 -81000132: 8100 0x8100 -81000134: 003c addi a5,sp,8 -81000136: 8100 0x8100 -81000138 : -81000138: 0001 nop +81000114 : +81000114: 0001 nop + ... +81000126: 0000 unimp +81000128: 0002 c.slli64 zero + ... 8100013a: 0000 unimp -8100013c: 0001 nop -8100013e: 0000 unimp -81000140: 0001 nop -81000142: 0000 unimp -81000144: 0001 nop -81000146: 0000 unimp -81000148: 0001 nop -8100014a: 0000 unimp -8100014c: 0001 nop -8100014e: 0000 unimp -81000150: 0001 nop -81000152: 0000 unimp -81000154: 0001 nop -81000156: 0000 unimp -81000158: 0001 nop -8100015a: 0000 unimp -8100015c: 0001 nop -8100015e: 0000 unimp -81000160: 0001 nop -81000162: 0000 unimp -81000164: 0001 nop -81000166: 0000 unimp -81000168: 0001 nop -8100016a: 0000 unimp -8100016c: 0001 nop -8100016e: 0000 unimp -81000170: 0001 nop -81000172: 0000 unimp -81000174: 0001 nop +8100013c: 00000003 lb zero,0(zero) # 0 + ... +81000150: 0004 0x4 ... -81000178 : -81000178: 0000 unimp +81000154 : +81000154: 000a c.slli zero,0x2 + ... +81000166: 0000 unimp +81000168: 000a c.slli zero,0x2 + ... 8100017a: 0000 unimp -8100017c: 0001 nop -8100017e: 0000 unimp -81000180: 0002 c.slli64 zero -81000182: 0000 unimp -81000184: 00000003 lb zero,0(zero) # 0 -81000188: 0004 0x4 -8100018a: 0000 unimp -8100018c: 0005 c.nop 1 +8100017c: 000a c.slli zero,0x2 + ... 8100018e: 0000 unimp -81000190: 0006 c.slli zero,0x1 -81000192: 0000 unimp -81000194: 00000007 0x7 -81000198: 0008 0x8 -8100019a: 0000 unimp -8100019c: 0009 c.nop 2 -8100019e: 0000 unimp -810001a0: 000a c.slli zero,0x2 -810001a2: 0000 unimp -810001a4: 0000000b 0xb -810001a8: 000c 0xc -810001aa: 0000 unimp -810001ac: 000d c.nop 3 -810001ae: 0000 unimp -810001b0: 000e c.slli zero,0x3 -810001b2: 0000 unimp -810001b4: 0000000f fence unknown,unknown +81000190: 000a c.slli zero,0x2 + ... -810001b8 : -810001b8: 0094 addi a3,sp,64 +81000194 : +81000194: 0094 addi a3,sp,64 +81000196: 8100 0x8100 +81000198: 0098 addi a4,sp,64 +8100019a: 8100 0x8100 +8100019c: 009c addi a5,sp,64 +8100019e: 8100 0x8100 +810001a0: 00a0 addi s0,sp,72 +810001a2: 8100 0x8100 +810001a4: 00a4 addi s1,sp,72 +810001a6: 8100 0x8100 +810001a8: 00a8 addi a0,sp,72 +810001aa: 8100 0x8100 +810001ac: 00ac addi a1,sp,72 +810001ae: 8100 0x8100 +810001b0: 00b0 addi a2,sp,72 +810001b2: 8100 0x8100 +810001b4: 00b4 addi a3,sp,72 +810001b6: 8100 0x8100 +810001b8: 00b8 addi a4,sp,72 810001ba: 8100 0x8100 -810001bc: 0098 addi a4,sp,64 +810001bc: 00bc addi a5,sp,72 810001be: 8100 0x8100 -810001c0: 009c addi a5,sp,64 +810001c0: 00c0 addi s0,sp,68 810001c2: 8100 0x8100 -810001c4: 00a0 addi s0,sp,72 +810001c4: 00c4 addi s1,sp,68 810001c6: 8100 0x8100 -810001c8: 00a4 addi s1,sp,72 +810001c8: 00c8 addi a0,sp,68 810001ca: 8100 0x8100 -810001cc: 00a8 addi a0,sp,72 +810001cc: 00cc addi a1,sp,68 810001ce: 8100 0x8100 -810001d0: 00ac addi a1,sp,72 +810001d0: 00d0 addi a2,sp,68 810001d2: 8100 0x8100 -810001d4: 00b0 addi a2,sp,72 -810001d6: 8100 0x8100 -810001d8: 00b4 addi a3,sp,72 -810001da: 8100 0x8100 -810001dc: 00b8 addi a4,sp,72 -810001de: 8100 0x8100 -810001e0: 00bc addi a5,sp,72 -810001e2: 8100 0x8100 -810001e4: 00c0 addi s0,sp,68 -810001e6: 8100 0x8100 -810001e8: 00c4 addi s1,sp,68 -810001ea: 8100 0x8100 -810001ec: 00c8 addi a0,sp,68 -810001ee: 8100 0x8100 -810001f0: 00cc addi a1,sp,68 -810001f2: 8100 0x8100 -810001f4: 00d0 addi a2,sp,68 -810001f6: 8100 0x8100 Disassembly of section .bss: -810001f8 : +810001d4 : ... -81000238 : +81000214 : ... -81000240 : -81000240: 0000 unimp +8100021c : +8100021c: 0000 unimp ... -81000244 : +81000220 : ... -810034e4 : +810034c0 : ... -810034ec : -810034ec: 0000 unimp +810034c8 : +810034c8: 0000 unimp ... Disassembly of section .comment: diff --git a/src/riscv_gpgpu/gpgpu_test.elf b/src/riscv_gpgpu/gpgpu_test.elf index b1f80c8c..67840c32 100755 Binary files a/src/riscv_gpgpu/gpgpu_test.elf and b/src/riscv_gpgpu/gpgpu_test.elf differ diff --git a/src/riscv_gpgpu/gpgpu_test.hex b/src/riscv_gpgpu/gpgpu_test.hex index abfda838..8a0fa894 100644 --- a/src/riscv_gpgpu/gpgpu_test.hex +++ b/src/riscv_gpgpu/gpgpu_test.hex @@ -4,7 +4,7 @@ :100020009303050013051000635C75001301018044 :10003000130305006B500300130515006FF0DFFE7E :1000400013010F0013050000930F0600938D0300AA -:10005000EBE0BF01170500001305854B6B40050061 +:10005000EBE0BF01170500001305C54B6B40050021 :10006000B708010023A0B800678000001703000054 :10007000130303FA6B00030067800000130141FFC4 :10008000232011002322B100834505006388050069 @@ -13,145 +13,133 @@ :1000B000232011002322B10093050503EFF05FFA1E :1000C00083200100832541001301C10067800000E7 :1000D000130101FE232E1100232C810013040102C1 -:1000E000232604FE6F00C0040327C4FE9307070005 -:1000F00093973700B387E74093972700B387E7408C -:10010000139747003307F74093172700138707001B -:10011000B707008193874724B307F70013850700CB -:10012000EF00401C8327C4FE938717002326F4FEAC -:100130000327C4FE93077000E3D8E7FAB7070081EE -:100140009387871F3707008113078717B70600813A -:1001500093868613370600801306062193058000D8 -:1001600013052000EF00406013052000EF00007130 -:10017000B707008113850704EFF05FF0B707008130 -:100180001385C705EFF09FEF232404FE6F004005A1 -:10019000832784FE13850700EF00002BB70700813B -:1001A00013858706EFF09FEDB7070081032784FED4 -:1001B000131727009387871FB307F70083A707004C -:1001C00013850700EF004028B70700811385C70695 -:1001D000EFF0DFEA832784FE938717002324F4FEE1 -:1001E000032784FE9307F000E3D4E7FAB707008102 -:1001F00013850707EFF09FE89307000013850700BA -:100200008320C101032481011301010267800000E2 -:10021000130101FC232E1102232C8102130401047B -:100220002326A4FC2324B4FCEF00C06E2326A4FEE6 -:10023000EF00C0702324A4FEEF00C0722322A4FEAE -:10024000832784FC939737000327C4FCB307F70088 -:100250002320F4FE832704FE93B7B70093C717004B -:10026000A30FF4FC8347F4FD138F0700B70700804A -:10027000938F872C6B200F007B70FF01832704FE78 -:10028000939727000327C4FEB307F70083A6070050 -:10029000832704FE93972700032784FEB307F70004 -:1002A00003A70700832704FE93972700032644FE35 -:1002B000B307F6003387E60023A0E700B707008006 -:1002C000138EC72C67000E00130000006B30000077 -:1002D000130000008320C1030324810313010104E0 -:1002E0006780000093020500130300009303700071 -:1002F00023A0620023A2620023A4620023A672004E -:1003000023A86200678000009302050003A3820017 -:100310001303130023A462001383420183AE42003F -:1003200093935E003303730003AE05002320C301E3 -:1003300003AE45002322C30103AE85002324C3017D -:1003400003AEC5002326C30103AE05012328C30164 -:1003500003AE4501232AC30103AE8501232CC3014B -:1003600003AEC501232EC301938E1E00130F20037D -:100370006394EE01930E000023A2D2016780000077 -:100380009302050003A382001303F3FF23A462007A -:100390001383420183AE0200930F2003138F0E00DC -:1003A000130F1F006314FF01130F000023A0E201CD -:1003B00093935E0033037300032E030023A0C50153 -:1003C000032E430023A2C501032E830023A4C501ED -:1003D000032EC30023A6C501032E030123A8C501D4 -:1003E000032E430123AAC501032E830123ACC501BB -:1003F000032EC30123AEC5016780000093020500F0 -:1004000003A3820013050000130E200363146E0083 -:1004100013051500678000009302050003A3820006 -:1004200013050000130E000063146E001305150081 -:10043000678000009302050003A3C20083A30201AA -:1004400033B5630067800000130101FD232611020C -:100450002324810213040103232EA4FC0327C4FDDB -:100460009307F00063E4E702B70700810327C4FDA8 -:10047000131727009387871BB307F70083A707008D -:1004800013850700EFF09FBF6F004007930700023E -:100490002326F4FEA30504FE8327C4FE9387C7FF2B -:1004A0000327C4FDB357F70093F7F7002322F4FEA8 -:1004B000832744FE6386070093071000A305F4FE1C -:1004C0008347B4FE63820702B7070081032744FE17 -:1004D000131727009387871BB307F70083A707002D -:1004E00013850700EFF09FB98327C4FE9387C7FFEA -:1004F0002326F4FE8327C4FEE340F0FA8320C102E2 -:10050000032481021301010367800000130101FD30 -:1005100023261102232481022322A10313040103B1 -:1005200013070D009307070093973700B387E74041 -:1005300093972700B387E740139747003307F740A7 -:100540009317270013870700B70700819387472475 -:10055000B307F70013850700EFF01FEC93070500C2 -:1005600063820704B70700811385470DEFF01FB1C1 -:1005700093070D0013850700EFF01FEDB70700810B -:100580001385C70DEFF09FAF13070D00B73700813C -:100590009387474EB307F700130710002380E70047 -:1005A0007300000013070D009307070093973700AF -:1005B000B387E74093972700B387E7401397470037 -:1005C0003307F7409317270013870700B707008109 -:1005D00093874724B307F700130704FD930507002B -:1005E00013850700EFF0DFD9832784FD138107000F -:1005F000032544FD832504FD0326C4FD832604FE54 -:10060000032744FE832784FE0328C4FEEFF01FA0C7 -:1006100073000000130000008320C1020324810244 -:10062000032D41021301010367800000130101FC47 -:10063000232E1102232C81021304010493090100CB -:10064000232604FE6F00000C0327C4FE9307070057 -:1006500093973700B387E74093972700B387E74026 -:10066000139747003307F7409317270013870700B6 -:10067000B707008193874724B307F7001385070066 -:10068000EFF09FD993070500639807060327C4FE80 -:100690009307070093973700B387E74093972700A6 -:1006A000B387E740139747003307F74093172700B6 -:1006B00013870700B707008193874724B307F70024 -:1006C0001307C4FC9305070013850700EFF05FCB09 -:1006D000832744FD13810700032504FD8325C4FC03 -:1006E000032684FD8326C4FD032704FE832744FEDE -:1006F000032884FEEFF09F978327C4FE938717009B -:100700002326F4FE0327C4FE93076000E3DEE7F22E -:1007100013810900130000008320C1030324810317 -:100720001301010467800000130101FD23268102EB -:1007300013040103232EA4FC232604FE6F000001F2 -:100740008327C4FE938717002326F4FE0327C4FEE5 -:100750008327C4FDE346F7FE130000000324C10213 -:100760001301010367800000130101FA232E110415 -:10077000232C810413040106232EA4FA232CB4FA9B -:10078000232AC4FA2328D4FA2326E4FA2324F4FAE9 -:1007900013090100232604FE232404FE6F00800BAE -:1007A000B709FFFF33013101832784FE2324F4FCC2 -:1007B000832784FB2326F4FC930701002328F4FC01 -:1007C000832744FB232AF4FC832704FB232CF4FC1B -:1007D0008327C4FA232EF4FC832784FA2320F4FE13 -:1007E0008327C4FE2322F4FE0327C4FE93070700D9 -:1007F00093973700B387E74093972700B387E74085 -:10080000139747003307F740931727001387070014 -:10081000B707008193874724B307F700130784FCC9 -:100820009305070013850700EFF01FAE8327C4FE72 -:10083000938717002326F4FE0327C4FE9307600066 -:1008400063D4E700232604FE832784FE93871700E2 -:100850002324F4FE032784FE8327C4FBE362F7F41A -:1008600013010900EFF09FDC130000008320C10595 -:10087000032481051301010667800000130101FDB7 -:10088000232611022324810213040103232EA4FC36 -:10089000B70700811385070EEFF04FFEA30704FE94 -:1008A0006F00000593071000A307F4FE232404FE45 -:1008B0006F0040038347F4FE373700819306474EAD -:1008C000032784FE3387E60003470700B3F7E700FA -:1008D000B337F000A307F4FE832784FE9387170045 -:1008E0002324F4FE832784FE0327C4FDE3E4E7FC0E -:1008F0008347F4FE93C7170093F7F70FE39407FAC3 -:10090000130000008320C1020324810213010103AC -:1009100067800000130101FF232681002324710159 -:100920001304010193870B00138507000324C10002 -:10093000832B81001301010167800000130101FF77 -:1009400023268100232481011304010193070C0055 -:10095000138507000324C100032C8100130101014A -:1009600067800000130101FF2326810023249101E9 -:100970001304010193870C00138507000324C100B1 -:0C098000832C810013010101678000003E +:1000E000232604FE6F0000030327C4FE9307406528 +:1000F0003307F702B707008193870722B307F7009A +:1001000013850700EF00401E8327C4FE9387170066 +:100110002326F4FE0327C4FE93077000E3D6E7FC12 +:10012000B70700819387471D3707008113074715DD +:10013000B706008193864611370600801306461FD6 +:100140009305400013054000EF00005913054000DF +:10015000EF000068B707008113850704EFF01FF276 +:10016000B70700811385C705EFF05FF1232404FE74 +:100170006F004005832784FE93F7370063980700DC +:10018000B707008113858706EFF05FEFB70700819F +:10019000032784FE131727009387471DB307F70033 +:1001A00083A7070013850700EF00402AB7070081E7 +:1001B0001385C706EFF09FEC832784FE9387170013 +:1001C0002324F4FE032784FE9307F000E3D4E7FA28 +:1001D000B707008113850707EFF05FEA9307000078 +:1001E000138507008320C10103248101130101024B +:1001F00067800000130101FC232E1102232C8102D1 +:10020000130401042326A4FC2324B4FCEF0080641F +:100210002322A4FEEF0080662320A4FEEF00806866 +:10022000232EA4FC232604FE232404FE6F000007D3 +:10023000832784FC93972700032784FEB307F700E6 +:10024000232CF4FC832784FE939727000327C4FC08 +:10025000B307F700232AF4FC832784FD9397270034 +:10026000032744FEB307F70003A70700832744FDD5 +:1002700093972700832604FEB387F60083A7070021 +:10028000B307F7020327C4FEB307F7002326F4FEE3 +:10029000832784FE938717002324F4FE032784FE1C +:1002A00093073000E3F6E7F8832784FC13972700D1 +:1002B0008327C4FCB307F7002328F4FC832704FD3D +:1002C000939727000327C4FDB307F7000327C4FE55 +:1002D00023A0E700130000008320C103032481034F +:1002E000130101046780000093020500130300005E +:1002F0009303700023A0620023A2620023A4620083 +:1003000023A6720023A86200678000009302050004 +:1003100003A382001303130023A46200138342018A +:1003200083AE420093935E003303730003AE050077 +:100330002320C30103AE45002322C30103AE850081 +:100340002324C30103AEC5002326C30103AE050168 +:100350002328C30103AE4501232AC30103AE85014F +:10036000232CC30103AEC501232EC301938E1E00AF +:10037000130F20036394EE01930E000023A2D20119 +:10038000678000009302050003A382001303F3FFBC +:1003900023A462001383420183AE0200930F200363 +:1003A000138F0E00130F1F006314FF01130F0000C3 +:1003B00023A0E20193935E0033037300032E030036 +:1003C00023A0C501032E430023A2C501032E8300F1 +:1003D00023A4C501032EC30023A6C501032E0301D8 +:1003E00023A8C501032E430123AAC501032E8301BF +:1003F00023ACC501032EC30123AEC50167800000F5 +:100400009302050003A3820013050000130E2003CE +:1004100063146E0013051500678000009302050049 +:1004200003A3820013050000130E000063146E0086 +:1004300013051500678000009302050003A3C200A6 +:1004400083A3020133B5630067800000130101FD3F +:10045000232611022324810213040103232EA4FC6A +:100460000327C4FD9307F00063E4E702B7070081A8 +:100470000327C4FD1317270093874719B307F70015 +:1004800083A7070013850700EFF05FBF6F004007E9 +:10049000930700022326F4FEA30504FE8327C4FE6F +:1004A0009387C7FF0327C4FDB357F70093F7F700FF +:1004B0002322F4FE832744FE63860700930710007F +:1004C000A305F4FE8347B4FE63820702B7070081E9 +:1004D000032744FE1317270093874719B307F70034 +:1004E00083A7070013850700EFF05FB98327C4FED9 +:1004F0009387C7FF2326F4FE8327C4FEE340F0FA68 +:100500008320C102032481021301010367800000DC +:10051000130101FD23261102232481022322A103BA +:100520001304010313070D00930740653307F70217 +:10053000B707008193870722B307F70013850700E9 +:10054000EFF0DFED930705006380070213070D004E +:10055000B73700819387074CB307F70013071000E4 +:100560002380E7007300000013070D009307406528 +:100570003307F702B707008193870722B307F70015 +:10058000130704FD9305070013850700EFF09FDFB5 +:10059000832784FD13810700032544FD832504FD83 +:1005A0000326C4FD832604FE032744FE832784FE1E +:1005B0000328C4FEEFF09FA57300000013000000A5 +:1005C0008320C10203248102032D41021301010390 +:1005D00067800000130101FC232E1102232C8102ED +:1005E0001304010493090100232604FE6F00800810 +:1005F0000327C4FE930740653307F702B70700815E +:1006000093870722B307F70013850700EFF01FE178 +:1006100093070500639A07040327C4FE9307406508 +:100620003307F702B707008193870722B307F70064 +:100630001307C4FC9305070013850700EFF09FD450 +:10064000832744FD13810700032504FD8325C4FC93 +:10065000032684FD8326C4FD032704FE832744FE6E +:10066000032884FEEFF09FA08327C4FE9387170022 +:100670002326F4FE0327C4FE93076000E3DAE7F6BF +:1006800013810900130000008320C10303248103A8 +:100690001301010467800000130101FD232681027C +:1006A00013040103232EA4FC232604FE6F00000183 +:1006B0008327C4FE938717002326F4FE0327C4FE76 +:1006C0008327C4FDE346F7FE130000000324C102A4 +:1006D0001301010367800000130101FA232E1104A6 +:1006E000232C810413040106232EA4FA232CB4FA2C +:1006F000232AC4FA2328D4FA2326E4FA2324F4FA7A +:1007000013090100232604FE232404FE6F00C00900 +:10071000B709FFFF33013101832784FE2324F4FC52 +:10072000832784FB2326F4FC930701002328F4FC91 +:10073000832744FB232AF4FC832704FB232CF4FCAB +:100740008327C4FA232EF4FC832784FA2320F4FEA3 +:100750008327C4FE2322F4FE0327C4FE93074065CB +:100760003307F702B707008193870722B307F70023 +:10077000130784FC9305070013850700EFF01FB9EA +:100780008327C4FE938717002326F4FE0327C4FEA5 +:100790009307600063D4E700232604FE832784FECA +:1007A000938717002324F4FE032784FE8327C4FBCA +:1007B000E360F7F613010900EFF0DFE1130000003A +:1007C0008320C10503248105130101066780000011 +:1007D000130101FD2326810213040103232EA4FC2F +:1007E000A30704FE6F00000593071000A307F4FEA3 +:1007F000232404FE6F0040038347F4FE3737008153 +:100800009306074C032784FE3387E600034707005F +:10081000B3F7E700B337F000A307F4FE832784FEA5 +:10082000938717002324F4FE832784FE0327C4FD47 +:10083000E3E4E7FC8347F4FE93C7170093F7F70F51 +:10084000E39407FA130000000324C102130101031B +:1008500067800000130101FF23268100232471011A +:100860001304010193870B00138507000324C100C3 +:10087000832B81001301010167800000130101FF38 +:1008800023268100232481011304010193070C0016 +:10089000138507000324C100032C8100130101010B +:1008A00067800000130101FF2326810023249101AA +:1008B0001304010193870C00138507000324C10072 +:0C08C000832C81001301010167800000FF :02000004810079 :10000000300000003100000032000000330000002A :10001000340000003500000036000000370000000A @@ -159,31 +147,29 @@ :10003000630000006400000065000000660000002E :100040002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DE0 :100050002D2D2D2D2D2D2D2D2D0A000046494E41E3 -:100060004C205A0A000000003A2000000A0000005C -:100070002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DB0 -:100080002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0AC3 -:1000900000000000300000003100000032000000CD +:100060004C205A0A000000000A0000002000000096 +:100070000A2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DD3 +:100080002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DA0 +:100090000A000000300000003100000032000000C3 :1000A000330000003400000035000000360000007E :1000B0003700000038000000390000006100000037 :1000C00062000000630000006400000065000000A2 -:1000D00066000000646F6E653A2000000A000000B0 -:1000E00061626F757420746F207761697420666F28 -:0800F0007220646F6E650A00C6 -:1000F8000000008104000081080000810C000081DC -:100108001000008114000081180000811C0000818B -:100118002000008124000081280000812C0000813B -:100128003000008134000081380000813C000081EB -:1001380001000000010000000100000001000000B3 -:1001480001000000010000000100000001000000A3 -:100158000100000001000000010000000100000093 -:100168000100000001000000010000000100000083 -:100178000000000001000000020000000300000071 -:100188000400000005000000060000000700000051 -:1001980008000000090000000A0000000B00000031 -:1001A8000C0000000D0000000E0000000F00000011 -:1001B80094000081980000819C000081A0000081CB -:1001C800A4000081A8000081AC000081B00000817B -:1001D800B4000081B8000081BC000081C00000812B -:1001E800C4000081C8000081CC000081D0000081DB +:0200D0006600C8 +:1000D4000000008104000081080000810C00008100 +:1000E4001000008114000081180000811C000081B0 +:1000F4002000008124000081280000812C00008160 +:100104003000008134000081380000813C0000810F +:1001140001000000000000000000000000000000DA +:1001240000000000020000000000000000000000C9 +:1001340000000000000000000300000000000000B8 +:1001440000000000000000000000000004000000A7 +:100154000A00000000000000000000000000000091 +:10016400000000000A000000000000000000000081 +:1001740000000000000000000A0000000000000071 +:100184000000000000000000000000000A00000061 +:1001940094000081980000819C000081A0000081EF +:1001A400A4000081A8000081AC000081B00000819F +:1001B400B4000081B8000081BC000081C00000814F +:1001C400C4000081C8000081CC000081D0000081FF :040000058000000077 :00000001FF diff --git a/src/riscv_gpgpu/lib/hi.sh b/src/riscv_gpgpu/lib/hi.sh deleted file mode 100755 index dbc82e19..00000000 --- a/src/riscv_gpgpu/lib/hi.sh +++ /dev/null @@ -1,3 +0,0 @@ -/opt/riscv/bin/riscv32-unknown-elf-gcc -march=rv32i -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib queue.c -o queue.elf -/opt/riscv/bin/riscv32-unknown-elf-objdump -D queue.elf > queue.dump -/opt/riscv/bin/riscv32-unknown-elf-objcopy -O ihex queue.elf queue.hex \ No newline at end of file diff --git a/src/riscv_gpgpu/lib/lib.c b/src/riscv_gpgpu/lib/lib.c index 71db8ec9..9476dde7 100644 --- a/src/riscv_gpgpu/lib/lib.c +++ b/src/riscv_gpgpu/lib/lib.c @@ -1,8 +1,8 @@ #include "lib.h" -extern void createThreads(unsigned, unsigned, unsigned, unsigned *, unsigned *, unsigned *, unsigned); -extern void wspawn(unsigned, unsigned, unsigned, unsigned *, unsigned *, unsigned *, unsigned); +extern void createThreads(unsigned, unsigned, unsigned, void *, void *, void *, unsigned); +extern void wspawn(unsigned, unsigned, unsigned, void *, void *, void *, unsigned); extern void print_consol(char *); extern void printc(char); @@ -33,9 +33,9 @@ void reschedule_warps() if (queue_isEmpty(q+curr_warp)) { - print_consol("done: "); - int_print(curr_warp); - print_consol("\n"); + // print_consol("done: "); + // int_print(curr_warp); + // print_consol("\n"); done[curr_warp] = true; ECALL; } @@ -75,7 +75,7 @@ void sleep(int t) -void createWarps(unsigned num_Warps, unsigned num_threads, FUNC, unsigned * x_ptr, unsigned * y_ptr, unsigned * z_ptr) +void createWarps(unsigned num_Warps, unsigned num_threads, FUNC, void * x_ptr, void * y_ptr, void * z_ptr) { asm __volatile__("addi s2, sp, 0"); int warp = 0; @@ -108,7 +108,6 @@ void createWarps(unsigned num_Warps, unsigned num_threads, FUNC, unsigned * x_pt void wait_for_done(unsigned num_wait) { - print_consol("about to wait for done\n"); bool temp = false; while (!temp) { @@ -121,19 +120,19 @@ void wait_for_done(unsigned num_wait) } -unsigned * get_1st_arg(void) +void * get_1st_arg(void) { - register unsigned *ret asm("s7"); + register void *ret asm("s7"); return ret; } -unsigned * get_2nd_arg(void) +void * get_2nd_arg(void) { - register unsigned *ret asm("s8"); + register void *ret asm("s8"); return ret; } -unsigned * get_3rd_arg(void) +void * get_3rd_arg(void) { - register unsigned *ret asm("s9"); + register void *ret asm("s9"); return ret; } diff --git a/src/riscv_gpgpu/lib/lib.h b/src/riscv_gpgpu/lib/lib.h index 710d3c97..afaff312 100644 --- a/src/riscv_gpgpu/lib/lib.h +++ b/src/riscv_gpgpu/lib/lib.h @@ -35,14 +35,14 @@ static bool done[] = {false, false, false, false, false, false, false}; static int main_sp[1]; #define FUNC void (func)(unsigned, unsigned) -void createWarps(unsigned num_Warps, unsigned num_threads, FUNC, unsigned *, unsigned *, unsigned *); +void createWarps(unsigned num_Warps, unsigned num_threads, FUNC, void *, void *, void *); void reschedule_warps(void); void int_print(unsigned); void wait_for_done(unsigned); -unsigned * get_1st_arg(void); -unsigned * get_2nd_arg(void); -unsigned * get_3rd_arg(void); +void * get_1st_arg(void); +void * get_2nd_arg(void); +void * get_3rd_arg(void); void sleep(int); diff --git a/src/riscv_gpgpu/lib/queue.h b/src/riscv_gpgpu/lib/queue.h index fc02e15a..7b586956 100644 --- a/src/riscv_gpgpu/lib/queue.h +++ b/src/riscv_gpgpu/lib/queue.h @@ -15,9 +15,9 @@ typedef struct Job_t unsigned n_threads; unsigned base_sp; unsigned func_ptr; - unsigned * x; - unsigned * y; - unsigned * z; + void * x; + void * y; + void * z; unsigned assigned_warp; } Job; diff --git a/src/test.sh b/src/test.sh index 7938b5db..066bc487 100755 --- a/src/test.sh +++ b/src/test.sh @@ -113,3 +113,31 @@ echo ./riscv_tests/rv32ui-p-xor.hex >> results.txt echo ./riscv_tests/rv32ui-p-xori.hex >> results.txt ./harptool -E -a rv32i --core ./riscv_tests/rv32ui-p-xori.hex -s -b >> results.txt + + + + +echo ./riscv_tests/rv32um-p-div.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-div.hex -s -b >> results.txt + +echo ./riscv_tests/rv32um-p-divu.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-divu.hex -s -b >> results.txt + +echo ./riscv_tests/rv32um-p-mul.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-mul.hex -s -b >> results.txt + +echo ./riscv_tests/rv32um-p-mulh.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-mulh.hex -s -b >> results.txt + +echo ./riscv_tests/rv32um-p-mulhsu.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-mulhsu.hex -s -b >> results.txt + +echo ./riscv_tests/rv32um-p-mulhu.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-mulhu.hex -s -b >> results.txt + +echo ./riscv_tests/rv32um-p-rem.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-rem.hex -s -b >> results.txt + +echo ./riscv_tests/rv32um-p-remu.hex >> results.txt +./harptool -E -a rv32i --core ./riscv_tests/rv32um-p-remu.hex -s -b >> results.txt +